Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2547377pxb; Mon, 19 Apr 2021 08:10:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz7cY9RWepaaao+MnjGwh7EmX6ocHYR6pF85pr8LQxVQpLM3+d0eyQ1JLImOmgE4Yu6xliI X-Received: by 2002:aa7:9e9e:0:b029:257:b49:2800 with SMTP id p30-20020aa79e9e0000b02902570b492800mr20704320pfq.10.1618845026534; Mon, 19 Apr 2021 08:10:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618845026; cv=none; d=google.com; s=arc-20160816; b=WkPdOkHDFBjgO2w/KmddtT0pkiTq1j2thq170NwuckB31geeIUBzmCnC61apFU9oHC ZOkRYU67kJqE7NOtGEmlgkCJgNKGTAJih7xjXCIAmznt8d+aAU1QDFFFKjG7XQcIH/BQ wk857wd/TLPWoXy2IvDjWI/32AN0SNd1U/+MSuJbVmMOGKZgkcjn6YrGUiYV8J9F8Ztc /t/d8wA/dmdByF8XymdBb5kivQClLnswqgyJHiVUdV6JLToe6yv9L8ts9G+9y0gG0TAn B33EC/QXLNF+swBn3Axyu6AqStxZIjn2th7nToaYTNc1Ssq9pOc5pVmR4sgAI0XWTGHZ haeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=kBGP/q114xfSkn/SCKtFUh6ElY3XLZWpgV953Y6I/j8=; b=z4VhreAAASUKK/+bLhCyJ72DbvwNAWOiK5V+k63H1whQw+Df6thBpDssVaf2YWIU6o MAy2tolfwPXjegDHaRI67+00QIZCYnWsnMzM9lxpup62N3/wgmc7Jlrj/boMSR+Ea1T/ 2wCkYtHpmq4nAKoNhzd8h6iyeE5Di1kA0exhdVU7CSTV/mM5BC1pca5po+ch4qGLrMvX IzyrS5dlOA2D9baEPAXX5Y4n9eMjh5lVXnTN19h39V9bZ1MI5UCA9SE/7ZIRa9bbBayq EW0bDyxCuCNSvqVJPnVSYuHgWzIVRDAkOdCaYSxo/3n7OkvTSxRmJp8o8sokNd8BdaPM sOqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=beVTpkkL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ot16si1591009pjb.157.2021.04.19.08.10.14; Mon, 19 Apr 2021 08:10:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=beVTpkkL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240190AbhDSNM7 (ORCPT + 99 others); Mon, 19 Apr 2021 09:12:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:47010 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239556AbhDSNLL (ORCPT ); Mon, 19 Apr 2021 09:11:11 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BC5A86128C; Mon, 19 Apr 2021 13:10:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1618837841; bh=w9tavgDsSOx8Fnj8nGLIvTiLvOElq8xFmgiEzNAtNkc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=beVTpkkLnjxPGPtVU0xnxU02D1ID6aJjOmYSIMiOYNOdROAUq0ihU1u0Ogb73Ubmf h0znmmP0E2MSI6+SMQgnOuMqCmvNlhRZHJNeSjlsRENb4UXRjovyS/Y5Pqc+wIf/fg i20TNrrp0bxFwkXZQ1UMJL8a5uQNmn/iiOM1R+d4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Shivaprasad G Bhat , Vaibhav Jain , Dan Williams Subject: [PATCH 5.11 074/122] libnvdimm/region: Fix nvdimm_has_flush() to handle ND_REGION_ASYNC Date: Mon, 19 Apr 2021 15:05:54 +0200 Message-Id: <20210419130532.684688315@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210419130530.166331793@linuxfoundation.org> References: <20210419130530.166331793@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vaibhav Jain commit a2948b17f6b936fc52f86c0f92c46d2f91928b79 upstream. In case a platform doesn't provide explicit flush-hints but provides an explicit flush callback via ND_REGION_ASYNC region flag, then nvdimm_has_flush() still returns '0' indicating that writes do not require flushing. This happens on PPC64 with patch at [1] applied, where 'deep_flush' of a region was denied even though an explicit flush function was provided. Fix this by adding a condition to nvdimm_has_flush() to test for the ND_REGION_ASYNC flag on the region and see if a 'region->flush' callback is assigned. Link: http://lore.kernel.org/r/161703936121.36.7260632399582101498.stgit@e1fbed493c87 [1] Fixes: c5d4355d10d4 ("libnvdimm: nd_region flush callback support") Reported-by: Shivaprasad G Bhat Signed-off-by: Vaibhav Jain Link: https://lore.kernel.org/r/20210402092555.208590-1-vaibhav@linux.ibm.com Signed-off-by: Dan Williams Signed-off-by: Greg Kroah-Hartman --- drivers/nvdimm/region_devs.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) --- a/drivers/nvdimm/region_devs.c +++ b/drivers/nvdimm/region_devs.c @@ -1239,6 +1239,11 @@ int nvdimm_has_flush(struct nd_region *n || !IS_ENABLED(CONFIG_ARCH_HAS_PMEM_API)) return -ENXIO; + /* Test if an explicit flush function is defined */ + if (test_bit(ND_REGION_ASYNC, &nd_region->flags) && nd_region->flush) + return 1; + + /* Test if any flush hints for the region are available */ for (i = 0; i < nd_region->ndr_mappings; i++) { struct nd_mapping *nd_mapping = &nd_region->mapping[i]; struct nvdimm *nvdimm = nd_mapping->nvdimm; @@ -1249,8 +1254,8 @@ int nvdimm_has_flush(struct nd_region *n } /* - * The platform defines dimm devices without hints, assume - * platform persistence mechanism like ADR + * The platform defines dimm devices without hints nor explicit flush, + * assume platform persistence mechanism like ADR */ return 0; }