Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp4148554pxm; Tue, 1 Mar 2022 12:18:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJxmkWjVTjsuL23gq/YncSlVfuYSDaD167VEBU6LberfXlWMLbQqbevYNBN/S5Oie6BUc4Q4 X-Received: by 2002:a17:906:3152:b0:6cf:d100:a8b2 with SMTP id e18-20020a170906315200b006cfd100a8b2mr20200141eje.529.1646165932347; Tue, 01 Mar 2022 12:18:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646165932; cv=none; d=google.com; s=arc-20160816; b=zoMcHLhaDqIcNQCYkz/1HGBw+SjGickxMReHoh2JYLChLWDPxmlfu+JCI9yBaAxFy/ v9f2rK8PJ8fP1xQxTggFGfhwgEXS6s8x36uaftAT5TUpxbwiIAx2JmEcw4zMtbQUfqzz sXBW2Fpo47oXILLp1f+Plm0yh47a9/7ltGs8mCep4bQoyJ5GKNPbG5Y5YCDK4lLRVgJ3 v8YCvhH/Hred0PapstiLl2OlhAMVfEGLof5kCPUWM2WwV81INbuJSETkjd0Hk0F4z/JB NsEsXBPy//xynfcScNtl8O9fjyFLF9pUpfeNohdI1jttDDJAOlnq1zKOquhofPnFuCO6 /PTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=9Gi6BPv2lfA3If64RHRrn/WsayfV3w5+Z+cj0AFF9TI=; b=we8ZMRBrBhh2J0UInZ0DMmbkbqLn4DGuer41NI7UO4bL6nLOrGvCTau4h5GneiFzwl Bch269RqloyCz7EG+sHTCWlZBbh9ROsD8W/EPElEzizy5AePc48Jj9PvtSb/Ov6pYofZ JWn4oHAmrkL/m0nEJJspAAcCi6TpmrQYeEEGntaCNioUacKZAgDtOr/RGMThcq3QllCq ZAeZORSSah96jc98GorSMmiJT+pxM0c79LnpbbTT/DDdmm4LvwVptaQ9hIYpUka3NwcA H57ZCvCDHaVboiKC+pH/A4+kjIk3YLgwf/HgaS5cv1OnlzcufDgbT3JR5FJ/oOUrDBVw 6g3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="TBV6yS/E"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jg25-20020a170907971900b006d09e954d79si10130421ejc.378.2022.03.01.12.18.29; Tue, 01 Mar 2022 12:18:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="TBV6yS/E"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234625AbiCASTh (ORCPT + 99 others); Tue, 1 Mar 2022 13:19:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231707AbiCASTf (ORCPT ); Tue, 1 Mar 2022 13:19:35 -0500 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E45BF1DA54 for ; Tue, 1 Mar 2022 10:18:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1646158733; x=1677694733; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=y7MLcmxs/qTtOX5+jon70+tyOS1su2n+mJJ5b6Y+P0M=; b=TBV6yS/E8rPXejOd0/MGR5zjDyDUrpV9BU1j9R2pl4VmPxpqFtV50FnR Dt2ZuVPxPLfZSfzcxYdhoJnU4coKSj+nQ1J+aHBwwaR/WunmJ34EvmVm0 01fepCGUlN2BHc+QqaCz1zRDWMz159Et9WSwe/+1/2lGJUKUUrJGAbx3d Kj2vwOYnRnCgkpRCu4c6VMbovrcCSs/XIpPlOmLyfgeht5Lsq/Qm4+eFZ tp9jRPp95bgbvT2AgbygXtn8Bxuu0cKkU4lZPsgU3frMvQq5++7VVfp6D lAbqX1RH0UuPcgDbtqTxscsyFMaESkfPNVkLfYNgZI/dUCboTXpBMEcHm g==; X-IronPort-AV: E=McAfee;i="6200,9189,10273"; a="253131715" X-IronPort-AV: E=Sophos;i="5.90,146,1643702400"; d="scan'208";a="253131715" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2022 10:18:53 -0800 X-IronPort-AV: E=Sophos;i="5.90,146,1643702400"; d="scan'208";a="575799440" Received: from bklinvil-mobl.amr.corp.intel.com (HELO localhost) ([10.212.48.220]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2022 10:18:53 -0800 Date: Tue, 1 Mar 2022 10:18:52 -0800 From: Ira Weiny To: Dan Williams Cc: Dave Hansen , "H. Peter Anvin" , Fenghua Yu , Rick Edgecombe , Linux Kernel Mailing List Subject: Re: [PATCH V8 43/44] nvdimm/pmem: Enable stray access protection Message-ID: References: <20220127175505.851391-1-ira.weiny@intel.com> <20220127175505.851391-44-ira.weiny@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 04, 2022 at 01:10:53PM -0800, Dan Williams wrote: > On Thu, Jan 27, 2022 at 9:55 AM wrote: > > > > From: Ira Weiny > > > > Now that all valid kernel access' to PMEM have been annotated with > > {__}pgmap_mk_{readwrite,noaccess}() PGMAP_PROTECTION is safe to enable > > in the pmem layer. > > > > Implement the pmem_map_protected() and pmem_mk_{readwrite,noaccess}() to > > communicate this memory has extra protection to the upper layers if > > PGMAP_PROTECTION is specified. > > > > Internally, the pmem driver uses a cached virtual address, > > pmem->virt_addr (pmem_addr). Use __pgmap_mk_{readwrite,noaccess}() > > directly when PGMAP_PROTECTION is active on the device. > > > > Signed-off-by: Ira Weiny > > > > --- > > Changes for V8 > > Rebase to 5.17-rc1 > > Remove global param > > Add internal structure which uses the pmem device and pgmap > > device directly in the *_mk_*() calls. > > Add pmem dax ops callbacks > > Use pgmap_protection_available() > > s/PGMAP_PKEY_PROTECT/PGMAP_PROTECTION > > --- > > drivers/nvdimm/pmem.c | 52 ++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 51 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c > > index 58d95242a836..2afff8157233 100644 > > --- a/drivers/nvdimm/pmem.c > > +++ b/drivers/nvdimm/pmem.c > > @@ -138,6 +138,18 @@ static blk_status_t read_pmem(struct page *page, unsigned int off, > > return BLK_STS_OK; > > } > > > > +static void __pmem_mk_readwrite(struct pmem_device *pmem) > > +{ > > + if (pmem->pgmap.flags & PGMAP_PROTECTION) > > + __pgmap_mk_readwrite(&pmem->pgmap); > > +} > > + > > +static void __pmem_mk_noaccess(struct pmem_device *pmem) > > +{ > > + if (pmem->pgmap.flags & PGMAP_PROTECTION) > > + __pgmap_mk_noaccess(&pmem->pgmap); > > +} > > + > > Per previous feedback let's find a way for the pmem driver to stay out > of the loop, and just let these toggles by pgmap generic operations. I want to clarify. Yes the pmem driver is now out of the dax driver loop. However, these calls must remain because the pmem driver caches pmem->virt_addr and uses that address to access the maps directly. Therefore these specific calls need to remain for the pmem drivers internal use. In addition to the commit message I've added comments to the call sites to clarify this fact. Ira