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 B1B27C433F5 for ; Tue, 8 Mar 2022 11:10:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DAF78D0002; Tue, 8 Mar 2022 06:10:50 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 18A7E8D0001; Tue, 8 Mar 2022 06:10:50 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 07A1D8D0002; Tue, 8 Mar 2022 06:10:50 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.27]) by kanga.kvack.org (Postfix) with ESMTP id EDDE98D0001 for ; Tue, 8 Mar 2022 06:10:49 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id A3ACA616EA for ; Tue, 8 Mar 2022 11:10:49 +0000 (UTC) X-FDA: 79220951418.09.246FA84 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf30.hostedemail.com (Postfix) with ESMTP id 3709C80007 for ; Tue, 8 Mar 2022 11:10:49 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5F6A8615F7; Tue, 8 Mar 2022 11:10:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D2075C340EC; Tue, 8 Mar 2022 11:10:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1646737848; bh=Q2s/iQcTH+SXJFwnKcZFVY44y/cmyFC2fSfRw8SBNqU=; h=From:To:Cc:Subject:Date:From; b=rPpc8qQxwmbbms54yob29DznB7ZZaw77JUfFsFNryOCmsbofkY1WhFN2G65dPQxSR GLIVlzxEPZhvMJDd5tPub/BPBm7ZcjyhF/p+PfI8DBM+aPfjlny7OoSrta2Xs049ln TbZ9fewFAtjh3jtGlo5HIpkvi+sHJjS7Ah86vFbZb0DuFq0cE06qMjsItVLHyGaGdv gZ2zt2N1+H+RNwUDA0tAxeN/K++I7XryUtsdW0bEKIkJzjziFwn414fL+/I4sJvuPy AxVgEfJs4V1oiZDOXMpyFuqUKbfLX50MF82A4hQxdc5XFoCuOdGir2aIDA1ba5GXqg vjjB7qOieyRzw== From: Jarkko Sakkinen To: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Cc: Dave Hansen , Nathaniel McCallum , Reinette Chatre , Alexander Viro , linux-sgx@vger.kernel.org, linux-kernel@vger.kernel.org, Andrew Morton , Jarkko Sakkinen Subject: [PATCH RFC v2 0/3] MAP_POPULATE for device memory Date: Tue, 8 Mar 2022 13:10:00 +0200 Message-Id: <20220308111003.257351-1-jarkko@kernel.org> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 3709C80007 X-Rspam-User: Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rPpc8qQx; spf=pass (imf30.hostedemail.com: domain of jarkko@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jarkko@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-Stat-Signature: mkgekkw47ixp87cb819dj6831bmj6qxt X-HE-Tag: 1646737849-233121 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: SGX is weird. SGX memory is managed outside the core mm. It doesn't have a 'struct page' and get_user_pages() doesn't work on it. Its VMAs are marked with VM_IO. So, none of the existing methods for avoiding page faults work on SGX memory. This patch set essentially helps extend existing "normal RAM" kernel ABIs to work for avoiding faults for SGX too. SGX users want to enjoy all of the benefits of a delayed allocation policy (better resource use, overcommit, NUMA affinity) but without the cost of millions of faults. Jarkko Sakkinen (3): mm: Add f_op->populate() for populating memory outside of core mm x86/sgx: Export sgx_encl_page_alloc() x86/sgx: Implement EAUG population with MAP_POPULATE arch/x86/kernel/cpu/sgx/driver.c | 128 +++++++++++++++++++++++++++++++ arch/x86/kernel/cpu/sgx/encl.c | 38 +++++++++ arch/x86/kernel/cpu/sgx/encl.h | 3 + arch/x86/kernel/cpu/sgx/ioctl.c | 38 --------- include/linux/fs.h | 1 + mm/gup.c | 9 ++- 6 files changed, 175 insertions(+), 42 deletions(-) -- 2.35.1