From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 080AACCFA10 for ; Thu, 26 Sep 2024 01:47:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9A08A6B00D0; Wed, 25 Sep 2024 21:47:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 950BE6B00D1; Wed, 25 Sep 2024 21:47:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F13B6B00D2; Wed, 25 Sep 2024 21:47:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 5B7306B00D0 for ; Wed, 25 Sep 2024 21:47:55 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 04824A143B for ; Thu, 26 Sep 2024 01:47:54 +0000 (UTC) X-FDA: 82605203310.14.712FA1C Received: from meesny.iki.fi (meesny.iki.fi [195.140.195.201]) by imf17.hostedemail.com (Postfix) with ESMTP id B21E140008 for ; Thu, 26 Sep 2024 01:47:52 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=iki.fi header.s=meesny header.b=iY6sUufE; arc=pass ("iki.fi:s=meesny:i=1"); spf=pass (imf17.hostedemail.com: domain of jarkko.sakkinen@iki.fi designates 195.140.195.201 as permitted sender) smtp.mailfrom=jarkko.sakkinen@iki.fi; dmarc=none ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727315152; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=/P1urPp67QWAQZnwMTAUsRw+JWdAFHEEIrCuWxJs5cs=; b=eYqeGeUXjwmndrxnrcE22Iyb1pAmSkIv3cYOlfFefCyJRw+diqfr1YMdpXfxENoKNNn5P0 HKOdmXUs49TjCE9+mY5zdRxiCdGdP37VYWw/6n9zyHNM37WCCe16g8GI8vJ1aRyZV90ysO GjAu3BGdEnvyugoRgv/s1YfSVJKiiKw= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1727315152; a=rsa-sha256; cv=pass; b=DS4N8PiXuXcPkYJ/53XOXEkAVHIRf8JEoXisB5mISWoOMKxs/tL6vce0mkEAMNjZ52A3wP nYM+5T38mkKspIy2wwRYF6oz8bU8J8cTdKYNMzJXDWGD7g4Po9OuMGT8RePJ87sZDi0N9x aOJLpBEVvaCyQKNRbQeM2ibTAzmmxy4= ARC-Authentication-Results: i=2; imf17.hostedemail.com; dkim=pass header.d=iki.fi header.s=meesny header.b=iY6sUufE; arc=pass ("iki.fi:s=meesny:i=1"); spf=pass (imf17.hostedemail.com: domain of jarkko.sakkinen@iki.fi designates 195.140.195.201 as permitted sender) smtp.mailfrom=jarkko.sakkinen@iki.fi; dmarc=none Received: from localhost (83-245-197-106.elisa-laajakaista.fi [83.245.197.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sakkinen) by meesny.iki.fi (Postfix) with ESMTPSA id 4XDc1K4szyzyVf; Thu, 26 Sep 2024 04:47:49 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1727315270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/P1urPp67QWAQZnwMTAUsRw+JWdAFHEEIrCuWxJs5cs=; b=iY6sUufEUmot/i35OcLwO1Q/NHR1YIauvub9OB9BJLVqYlfsjDcoSyL5YmHGMNUooOs9aP Vng4T7PTCMHJTqBQnMUam05Af55MA2jtxYgdkhnkSBPUzNU6oq4xSZ7OAPVeV+j3NQsrtE IoV3oSaltVeFzXxyxavfx0KOgUDvvg8= ARC-Seal: i=1; s=meesny; d=iki.fi; t=1727315270; a=rsa-sha256; cv=none; b=PBjx0QRejcP5IY7CsSfFFUklG/zwIF80GJsg0iPJyMTq80mwMKueG7fB7lLxQxRK19LXGl 7hrsLdqWtvEgpSJi68A0fdZMMHJz7mrnoTZWMWDNevqDJhBxeL6sR0XicLm4scrvy9Nxqc dqMhxR7Q9VLAXyoeeO/Wmv+FSDngWeY= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=sakkinen smtp.mailfrom=jarkko.sakkinen@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1727315270; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/P1urPp67QWAQZnwMTAUsRw+JWdAFHEEIrCuWxJs5cs=; b=R7b9emW/nJUOoB1HIOdfMQmd1iQtl8kaPn77Wj3DgoXZFXWNr9xPtYF1sHvNJMVcqBA3ay V1Ktg8qDN59rKxEQvp/EITzM19TN7aHGWx2uKQ3PVCidmTB5e5DygCqTs2q4AFC/bDnxtZ ir2rQYqqUVPUpYXOWZ5AmQ5Zo8SNJQY= Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Thu, 26 Sep 2024 04:47:48 +0300 Message-Id: Subject: Re: VMA merging updateds? From: "Jarkko Sakkinen" To: "Huang, Kai" , "Jarkko Sakkinen" , , X-Mailer: aerc 0.18.2 References: <51631b6d-5138-4195-8722-651d9ea79dc1@intel.com> In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: B21E140008 X-Stat-Signature: robt8g3wnrz8j38c9oxbr57t4fs6wd6b X-HE-Tag: 1727315272-811007 X-HE-Meta: U2FsdGVkX18xKrVGDzBTEmfaTVxEC2XRPsgVzIaobF5mftmc4uhYNXdcI3wp8ZPQtpUr9Jsz+4eayDiqX40pmnTPuP4lgwXZHzzahLw7miQaH3ssuBF72t98+3LP1mranotNxB9Oxc2E2FMTGjm7rn06kANjDxhEUpJTZADVqlknMoV3pmnEjmAiO18k5eMADCCkDrriwTw0LCAA2JqFIwdE1XR9qYTTGf34yFo94L9z/iSGGYA0b2xk6u1raw01Qz/4HgTXHoszhPMA93KNaCey0yomxEBTqI/2yD6eWGo4BQn5IJ1niAmYIZaKGB/aDZDZnM7wSaiD7qCbVuN/2wOo3kI316DXnVT/HptcJ/elHdhleTiMvy2vdw2TX2K8nqQeL1Qk2z3WF7S0eW+AveEGiXarfAAmom0fh/LBu8odUExl3EHZZw11897zH0wYlO13vXbtUj805HfnBKzIkok2c8eVMjbwqTwidPNNM8KCXsUE8Fah1QoW/2ocExB+YNvpPJPQYwdtLtnVnH+wveqbiUkCVNG8Suuh/IoKlcpgF9aC/q8nybxYOs60t+2z7Ae82OdDH/lNCuB0q1h/p9bvHxOUfcpilbP8w3m+kWJqE6DiA1VWiFCGCsq+0vSXS6W68E+/PAu7p5HSZVefP4yNogmak1Nu8JVwP7HZbBgbESM+Z1v5Nrj7veIFrC2yeBYZWYeGA3+CfgW+ygWPkuvCFhqZ0A0C7TeM2mo50OKmpojdeMHbiPHuZpsEmqVqHF6Pt1AR6S9PtnJd9vJNLkhparCQQhyidklc7sKRWZomUe/wMj8yzXsuEJfwKwnltqg0evGVkx8bJbdS/3/GOJnxhSai9NcOdTD+WXPkWuoLvIi/BKJ4ZfOdGWhHOTGLenY7cyWXMyOXx7dFJpVSs+HByznm2vPOCm/mksVmivi6hJ1sbCGOFepx6n5K94vjWnTXKGySV8oVjdail4M YmFewO8V oTMu8ErpPSBggxGCZQHuiIRAdrpuk0coN/Gp8Wpa8Zx2PFWVsVOGjfvvpJGcULbFqKnmV+kg/6Tl5YsUWk9GVKjJpUWgCa/Q+ouRSfKE4aQkJc0XbSTC9BlQUD2bR71jEUbKHl9oiIFKtk1EP0pQFq8x573sUbK+UPu0yE63Tid5lN2d2we89q7s2W1WG6gYlvVJK3+1WWXpSY07JmgU7VLDmqS0FVd2w5fmzL5RBpJdimLJ0rW+CDWTlidD6QP1xA5c/80WUkcI821psdfUBedekYI9sPBlLIGrXjAi79Mu0No5JD8Bk6W1uZLrkVZxOO19o8FWj1mJDKflIdCIHe+oXFVwFUnGeapCO X-Bogosity: Ham, tests=bogofilter, spamicity=0.003426, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu Sep 26, 2024 at 3:38 AM EEST, Kai Huang wrote: > > > On 26/09/2024 12:33 pm, Jarkko Sakkinen wrote: > > On Thu Sep 26, 2024 at 3:07 AM EEST, Kai Huang wrote: > >> > >> > >> On 23/09/2024 7:48 pm, Jarkko Sakkinen wrote: > >>> On Sun Sep 22, 2024 at 7:57 PM EEST, Jarkko Sakkinen wrote: > >>>>> On Sun Sep 22, 2024 at 7:27 PM EEST, Jarkko Sakkinen wrote: > >>>>>> Hi > >>>>>> > >>>>>> I started to look into this old issue with mm subsystem and SGX, i= .e. > >>>>>> can we make SGX VMA's to merge together? > >>>>>> > >>>>>> This demonstrates the problem pretty well: > >>>>>> > >>>>>> https://lore.kernel.org/linux-sgx/884c7ea454cf2eb0ba2e95f7c25bd420= 18824f97.camel@kernel.org/ > >>>>>> > >>>>>> It was result of brk() syscall being applied a few times. > >>>> > >>>> Briging some context here. This can be fixed in the run-time by book > >>>> keeping the ranges and doing unmapping/mapping. I guess this goes > >>>> beyond what mm should support? > >>>> > >>>> I thought to plain check this as it has been two years since my last > >>>> query on topic (if we could improve either the driver or mm somehow)= . > >>> > >>> In the past I've substituted kernel's mm merge code with user space > >>> replacement: > >>> > >>> https://github.com/enarx/mmledger/blob/main/src/lib.rs > >>> > >>> It's essentially a reimplementation of al stuff that goes into > >>> mm/mmap.c's vma_merge(). I cannot recall anymore whether merges > >>> which map over existing ranges were working correctly, i.e. was > >>> the issue only concerning adjacent VMA's. > >>> > >>> What I'm looking here is that can we make some cosntraints that > >>> if satisfied by the pfnmap code, it could leverage the code from > >>> vma_merge(). Perhaps by making explicit call to vma_merge()? > >>> I get that implicit use moves too much responsibility to the mm > >>> subsystem. > >>> > >> > >> Hi Jarkko, > >> > >> Just want to understand more on the background: > >> > >> Are you seeing any real problem due to needing a lot of mmap()s to the > >> same enclave, or it is just a problem that doesn't look nice and you > >> want to resolve? > >> > >> I mean, this problem doesn't seem to be SGX-specific but a common one > >> for VMAs with VM_PFNMAP (any bit in VM_SPECIAL), e.g., from random > >> device drivers with mmap() support. We will need a good justification > >> if we want to make any core-mm change, if any, for this. > >=20 > > It requires essentially replicating core mm in user space. > >=20 > > Is there any real problem if we don't do this at all (neither in core mm= =20 > nor in userspace)? 7f8f00000000-7f8f00009000 r--s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f00009000-7f8f00034000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f00034000-7f8f000ff000 r-xs 00000000 00:05 84 /d= ev/sgx_enclave 7f8f000ff000-7f8f00201000 ---p 00000000 00:00 0 7f8f00201000-7f8f003fc000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f003fc000-7f8f003fd000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f003fd000-7f8f00400000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f00400000-7f8f00643000 r--s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f00643000-7f8f0197b000 r-xs 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0197b000-7f8f01bab000 r--s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f01bab000-7f8f01fa7000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f01fa7000-7f8f08000000 ---p 00000000 00:00 0 7f8f08000000-7f8f08001000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08001000-7f8f08003000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08003000-7f8f08006000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08006000-7f8f0800b000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0800b000-7f8f08014000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08014000-7f8f08025000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08025000-7f8f08046000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08046000-7f8f0804a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804a000-7f8f0804b000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804b000-7f8f0804c000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804c000-7f8f0804d000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804d000-7f8f0804e000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804e000-7f8f0804f000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0804f000-7f8f08050000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08050000-7f8f08051000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08051000-7f8f08052000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08052000-7f8f08053000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08053000-7f8f08054000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08054000-7f8f08055000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08055000-7f8f08056000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08056000-7f8f08057000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08057000-7f8f08058000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08058000-7f8f08059000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08059000-7f8f0805a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805a000-7f8f0805b000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805b000-7f8f0805c000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805c000-7f8f0805d000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805d000-7f8f0805e000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805e000-7f8f0805f000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0805f000-7f8f08060000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08060000-7f8f08062000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08062000-7f8f08063000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08063000-7f8f08064000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08064000-7f8f08065000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08065000-7f8f08066000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08066000-7f8f08067000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08067000-7f8f08068000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08068000-7f8f08069000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08069000-7f8f0806a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806a000-7f8f0806b000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806b000-7f8f0806c000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806c000-7f8f0806d000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806d000-7f8f0806e000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806e000-7f8f0806f000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0806f000-7f8f08070000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08070000-7f8f08071000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08071000-7f8f08072000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08072000-7f8f08081000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08081000-7f8f08082000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08082000-7f8f08083000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08083000-7f8f08084000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08084000-7f8f08085000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08085000-7f8f08086000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08086000-7f8f08087000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08087000-7f8f08088000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08088000-7f8f08089000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08089000-7f8f0808a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0808a000-7f8f0808b000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0808b000-7f8f0809a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0809a000-7f8f0809c000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0809c000-7f8f0809d000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0809d000-7f8f0809e000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0809e000-7f8f080a0000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080a0000-7f8f080a3000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080a3000-7f8f080a9000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080a9000-7f8f080b5000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080b5000-7f8f080c0000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080c0000-7f8f080c6000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080c6000-7f8f080d1000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080d1000-7f8f080dd000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080dd000-7f8f080f4000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f080f4000-7f8f08121000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08121000-7f8f0814a000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f0814a000-7f8f08162000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08162000-7f8f08177000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08177000-7f8f081a0000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f081a0000-7f8f081c1000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f081c1000-7f8f081d6000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f081d6000-7f8f081ff000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f081ff000-7f8f08228000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave 7f8f08228000-7f8ffffff000 ---p 00000000 00:00 0 7f8ffffff000-7f9000000000 rw-s 00000000 00:05 84 /d= ev/sgx_enclave BR, Jarkko