Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1545214pxb; Wed, 2 Feb 2022 07:21:39 -0800 (PST) X-Google-Smtp-Source: ABdhPJytGxelJNWXYbJlpR7wH8Pnexq8nzzSM4u64p+lsP60xIR0SVcXy5wHnsC1K/jSSmgABtef X-Received: by 2002:a17:90a:5890:: with SMTP id j16mr8577022pji.185.1643815299766; Wed, 02 Feb 2022 07:21:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643815299; cv=none; d=google.com; s=arc-20160816; b=vAV9MMtww7RP5/IgT/f1+1eQhJw/adQ4mDbZQ4wu1QDnpTU36eOuT8rAZhZlUUSmuz BoP6mZns9mpzUsfQHsKdm6vKmrPO56VSyWzSINIZFbToB3s2W2oqj4JauxJHLUMq84vS k9RI5Wnh3GHJ6jXgaCI0XwoOo1vjoBxJhItPzChJn2c5tl4M1CqNyob2h1Y8+qqYWcUd Ja5+5Z7Tsr80YLRPjlrnlbpEZrGlTADtYXZIypIHdXB0X9Ie8Z3y+/imi0DLvsZp7FzY U0eZPtxR8112g2VlZKtKUOKO0MLBNKtedp11vaiVI9nKFRxqAC9ZHlzln9vMa2kzXGi2 /ZwA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=UsinKnzyjPcKpQ/x0OZFHPWCbdGwGqCdOJtSg1bCOW0=; b=0mO8KsSYyXE8IH/jzoNPI78709tPFJ3f2ELsYwzJV3B8tqIQWyRfYVZatSx+TP7i1X veKii9+UGd2dSagra808uyO7uXEpNE1D+ulXsj/VPWOxNruzZLeQ+LX2k/BO26+3ShcN hgtnm2qgvTF/Hy8U5XYbnmb7T5cEdFLAYlyTWYL4bZbCr0F6h8nd13MfNkRS4r12r/1Z BPgCeuQIuhTU8pOpHIqf2tPuqXXpO6W90SOsZY/s29pm6Q+QvXWvdH8AaxhykKHunBWO diIifm8jg3as10gagsatr4PFZ+0DOSwpoOEBy0LsRJNns+2wV/wyRZ0sMkyj7y5Si+n2 OAcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=H5SaaaOD; 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 w191si22309428pgd.109.2022.02.02.07.21.26; Wed, 02 Feb 2022 07:21:39 -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=H5SaaaOD; 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 S234982AbiBAHUa (ORCPT + 99 others); Tue, 1 Feb 2022 02:20:30 -0500 Received: from mga02.intel.com ([134.134.136.20]:44741 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234716AbiBAHUB (ORCPT ); Tue, 1 Feb 2022 02:20:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643700001; x=1675236001; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XkBzUE7wRB8BvLDUWN8ktt6Q3qJQD+uH14xC0LXKPlc=; b=H5SaaaODto/EKFEThMGXl8U39sQiyMRRtskSUjtaF3D4p16h3oV0h16c eunejxiThZltjwtj+ovK6KHqV/vf481SCrB3hCvoKLInEyiFwED6cURAe TgEulaYuZZSY8hPwzWxQOxyzgy2DZVQQNhtNYLq66GFHCz351AU8Jms7H 9WBMf/TmUnLfEMS+mlTSRRIB0W5+3XSWMvrrw6X6PMplwfpQFKX5i79qH d7sYqJK+5QfZXj7bR0AmZZ2BlZ9aLpYeVNyKpt/bexjHsCowfxAeAjWDC mvfdjux44cnfMhxBT70EMscxJP1yzBQa3X2yB8Hr6+Vchx+wTiLCQ+c8x Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10244"; a="235028379" X-IronPort-AV: E=Sophos;i="5.88,333,1635231600"; d="scan'208";a="235028379" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2022 23:20:00 -0800 X-IronPort-AV: E=Sophos;i="5.88,333,1635231600"; d="scan'208";a="676000468" Received: from iweiny-desk2.sc.intel.com (HELO localhost) ([10.3.52.147]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2022 23:19:59 -0800 From: ira.weiny@intel.com To: Dan Williams , Jonathan Cameron , Bjorn Helgaas Cc: Alison Schofield , Vishal Verma , Ira Weiny , Ben Widawsky , linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH V6 09/10] cxl/mem: Retry reading CDAT on failure Date: Mon, 31 Jan 2022 23:19:51 -0800 Message-Id: <20220201071952.900068-10-ira.weiny@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220201071952.900068-1-ira.weiny@intel.com> References: <20220201071952.900068-1-ira.weiny@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ira Weiny The CDAT read may fail for a number of reasons but mainly it is possible to get different parts of a valid state. The checksum in the CDAT table protects against this. Now that the checksum is validated issue a retry if the CDAT read fails. For now 2 retries are implemented. Signed-off-by: Ira Weiny --- NOTE: Is 2 enough? Should this just be delayed until the time when the data is actually needed and not there? Changes from V5: New patch -- easy to push off or drop. --- drivers/cxl/core/memdev.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index a01068e98333..11d721c56f08 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -356,7 +356,8 @@ static const struct file_operations cxl_memdev_fops = { .llseek = noop_llseek, }; -static int read_cdat_data(struct cxl_memdev *cxlmd, struct cxl_dev_state *cxlds) +static int __read_cdat_data(struct cxl_memdev *cxlmd, + struct cxl_dev_state *cxlds) { struct device *dev = &cxlmd->dev; size_t cdat_length; @@ -371,6 +372,20 @@ static int read_cdat_data(struct cxl_memdev *cxlmd, struct cxl_dev_state *cxlds) return cxl_mem_cdat_read_table(cxlds, &cxlmd->cdat); } +static int read_cdat_data(struct cxl_memdev *cxlmd, + struct cxl_dev_state *cxlds) +{ + int retries = 2; + int rc; + + while (--retries) { + rc = __read_cdat_data(cxlmd, cxlds); + if (!rc) + break; + } + return rc; +} + struct cxl_memdev *devm_cxl_add_memdev(struct cxl_dev_state *cxlds) { struct cxl_memdev *cxlmd; -- 2.31.1