Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp946625pxb; Wed, 6 Apr 2022 05:03:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJweZfOAne5R3aTFkwrRbaGXUtmisS9WdBVB6JmLzzAL+JAQuLk7g6HJUr0GC7uSLDloH2Yt X-Received: by 2002:a05:6638:22cf:b0:323:cb8f:2762 with SMTP id j15-20020a05663822cf00b00323cb8f2762mr4531641jat.54.1649246622470; Wed, 06 Apr 2022 05:03:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649246622; cv=none; d=google.com; s=arc-20160816; b=1AImYS+Mp0NjQaE6TRlYLcp/z8lQH4cM3SazZhcm+8NthOqO8TGLroDHQNQ3+fExzq 2vbank/czczJ5k0au6qZBGYpd++9uJ9qmQBJvQCYICE7gBbgV4HmXuBorKTh04sZVrxg sVdsUoFFjZORlLILekKADoJVOiGtiaQdOtz+XvKZUf310DSMttH4RUTBbJMJHOfUfZFH 9wd3FBSknT25FQkNczQGBJNFI8i/822Bdj4jmwe1mDd2VHVm/t00oet17p72XHXHRL/m 5AXSRBe5wayx/Y+/pm7ezw2tdYXsi8TtN1OTl38Ys/cEHBjhOdec8oZng69NitTCr3ME xhoQ== 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=RsZTUY8CeHhtq43Rxpd1Es2G8F0qc5j/xrcoN1fDBy0=; b=hG5XdlJ4RGGXbp5y5AsDuDklFvGuyCFq5OwKxBAaTxnbS/VrkZTos5HvWgdgBiUs8m Mw7CiWH6a8R/EIQTu6LGNdBPB9nCBOfioeXkqAxSvQNhDSRIj+fXfqf8QtmCdqOSEiLI iMIzsTRrFXHCM9GzzMx3tfr3R9mgRFYpAbXcoj6+vgMkYZeHybF1xtXFQ6Cf1P7V7yLS L/EvWy4ehK783jThnV3RL+kW+tn62uVHQZ9QDej/XJFv7p3uCZ2ke/giGaxfShgSi+FE QZ78cYAM3zHTRUbeSu1BKM95p1//85LTzrUnQljobkNcQ+ZLkF/OuzfdnZfvWbSUooYe Y4mQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=R3QNB2cv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id t7-20020a056e02160700b002ca4642d141si4518648ilu.147.2022.04.06.05.03.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 05:03:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=R3QNB2cv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3A6E74700BA; Wed, 6 Apr 2022 03:30:42 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1845033AbiDFBxq (ORCPT + 99 others); Tue, 5 Apr 2022 21:53:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348994AbiDEJsw (ORCPT ); Tue, 5 Apr 2022 05:48:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83784BE34; Tue, 5 Apr 2022 02:38:47 -0700 (PDT) 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 1A3F3615E5; Tue, 5 Apr 2022 09:38:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 22029C385A2; Tue, 5 Apr 2022 09:38:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649151526; bh=4GVNTj2YOOxt86du6z4LnhR8s7JceT8i+SaFiQdlXpA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R3QNB2cvd8TPd4MLu1iY2GvbOOv3rsBykY41gKfsRNdJ8s9S2fnqAZaplMrTQNuGR DdMrVRGsQwqUQqKzAnY2HAh+EbEpfUKAJV0gdzayxTkd9Hg20FMIEarhjwUpEfxoQO FEA1aGYZNI1v+38qCDmK/+3hn1xIWwO0BrEgUpao= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jonathan Cameron , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Ben Widawsky , Dan Williams , Sasha Levin Subject: [PATCH 5.15 446/913] cxl/regs: Fix size of CXL Capability Header Register Date: Tue, 5 Apr 2022 09:25:08 +0200 Message-Id: <20220405070353.216070330@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 From: Jonathan Cameron [ Upstream commit 74b0fe80409733055971bbfaf33c80a33fddeeb3 ] In CXL 2.0, 8.2.5.1 CXL Capability Header Register: this register is given as 32 bits. 8.2.3 which covers the CXL 2.0 Component registers, including the CXL Capability Header Register states that access restrictions specified in Section 8.2.2 apply. 8.2.2 includes: * A 32 bit register shall be accessed as a 4 Byte quantity. ... If these rules are not followed, the behavior is undefined. Discovered during review of CXL QEMU emulation. Alex Bennée pointed out there was a comment saying that 4 byte registers must be read with a 4 byte read, but 8 byte reads were being emulated. https://lore.kernel.org/qemu-devel/87bkzyd3c7.fsf@linaro.org/ Fixing that, led to this code failing. Whilst a given hardware implementation 'might' work with an 8 byte read, it should not be relied upon. The QEMU emulation v5 will return 0 and log the wrong access width. The code moved, so one fixes tag for where this will directly apply and also a reference to the earlier introduction of the code for backports. Fixes: 0f06157e0135 ("cxl/core: Move register mapping infrastructure") Fixes: 08422378c4ad ("cxl/pci: Add HDM decoder capabilities") Signed-off-by: Jonathan Cameron Cc: Alex Bennée Reviewed-by: Ben Widawsky Link: https://lore.kernel.org/r/20220201153437.2873-1-Jonathan.Cameron@huawei.com Signed-off-by: Dan Williams Signed-off-by: Sasha Levin --- drivers/cxl/core/regs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/cxl/core/regs.c b/drivers/cxl/core/regs.c index b8aa583a7642..2e7027a3fef3 100644 --- a/drivers/cxl/core/regs.c +++ b/drivers/cxl/core/regs.c @@ -35,7 +35,7 @@ void cxl_probe_component_regs(struct device *dev, void __iomem *base, struct cxl_component_reg_map *map) { int cap, cap_count; - u64 cap_array; + u32 cap_array; *map = (struct cxl_component_reg_map) { 0 }; @@ -45,7 +45,7 @@ void cxl_probe_component_regs(struct device *dev, void __iomem *base, */ base += CXL_CM_OFFSET; - cap_array = readq(base + CXL_CM_CAP_HDR_OFFSET); + cap_array = readl(base + CXL_CM_CAP_HDR_OFFSET); if (FIELD_GET(CXL_CM_CAP_HDR_ID_MASK, cap_array) != CM_CAP_HDR_CAP_ID) { dev_err(dev, -- 2.34.1