Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3727925pxb; Mon, 24 Jan 2022 16:30:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJz+lc5JuzUCffDvLFSN49vdihB7fL2/Xs5N2yBGSks/v6Svhddh+z2BqF/8beUATmFS/JOK X-Received: by 2002:a17:90b:4a41:: with SMTP id lb1mr758277pjb.151.1643070601469; Mon, 24 Jan 2022 16:30:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643070601; cv=none; d=google.com; s=arc-20160816; b=fIRoV+9w1yMWyVrg/eNtxoi82gPkJRM1JVk0XACGRn54568YaPmLI33sYjOaTLof1Y aztSWlS+d/gUvJwiQY1k4dLLvNOOcT74p/6pYQJ60r/KAaG8OJ+yMHiNDcgTyoq9G2wp FlvUP6wU++69kgtlMJxb+HTCBNTSiEuHuSWXI6QwuKH6RqTUm/C4NZcwKsSKVB93SQol BP0jmaaXCwiXPCxV3FAg8B76sIq5UA8uMizZwmp0gWc4MKrzHk1VqoIQ8sxCTX6YUlQh F42LFTCIV8eKSnxBSos9oHSeH8sPKv9o0/Iq4O93OtvxDSxAkZ8IyNiypMGPhfeZeKyH MLpw== 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=qVy9da6fwdxmUKnpiv6iLSEixvcZNDQKZP1BttUmJTA=; b=gX8gDKaCWFsPAkDBU3Q1cajTupD0f2hBtdHys4i/ArE9AcHr7HiBDZBOHEWNd/1Sqi 6KsYs5qUXCtQ3tWVFRzrb3npVg5wfJ/5IAqa0QH1NYsIrcSts2BZmBeaTOapJnuEwack /+FSGm1YyNrg2IW4WBzPr00RofEQ+41tI4CwF2BZJQA9Pdkej/bfmky+tW4tRVSaSAf1 vjRJ5jUe5+vIEZijxGScBzjEkm57f1tUCcSYSzjaEERkXJs2WYfPnfFlZ6tlnhqXM4RI BTmyzEtPOTzGLjOgiRdYuV8I4G5J4tifa8cZg4OwTjXy/yLAHy7TtY/8h03Cml2ih07h PPhA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Zz1GW8nh; 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 r3si13950677pff.365.2022.01.24.16.29.48; Mon, 24 Jan 2022 16:30:01 -0800 (PST) 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=Zz1GW8nh; 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 S2375345AbiAYATv (ORCPT + 99 others); Mon, 24 Jan 2022 19:19:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2359669AbiAXXej (ORCPT ); Mon, 24 Jan 2022 18:34:39 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8626CC0AD1BF; Mon, 24 Jan 2022 13:36:56 -0800 (PST) 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 ams.source.kernel.org (Postfix) with ESMTPS id 43490B811A9; Mon, 24 Jan 2022 21:36:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4DABDC340E4; Mon, 24 Jan 2022 21:36:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643060214; bh=O/8B47WCHt/7NggE2om+s/HBijeVuMCAcR01gd/vuYs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Zz1GW8nhs4ldg0CWX2QQGh7II+fj27PWeAmeFZ0CUDjfIY8gev/pc9qSSeYL5tCnp G/lof+yK+kk49xf2s+JMSrMxjuN8ImdMwQfdThKgHbJylrViHQm4R46noGIzazffGG Ryo0hFhhbR12K1cm+RCSQ3maqoPTSltvaUf8dWZw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Lorenzo Pieralisi Subject: [PATCH 5.16 0876/1039] PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space Date: Mon, 24 Jan 2022 19:44:25 +0100 Message-Id: <20220124184154.743263590@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184125.121143506@linuxfoundation.org> References: <20220124184125.121143506@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: Pali Rohár commit 7b067ac63a5730d2fae18399fed7e45f23d36912 upstream. Some bits in PCI config space are reserved when device is PCIe. Properly define behavior of PCI registers for PCIe emulated bridge and ensure that it would not be possible change these reserved bits. Link: https://lore.kernel.org/r/20211124155944.1290-3-pali@kernel.org Fixes: 23a5fba4d941 ("PCI: Introduce PCI bridge emulated config space common logic") Signed-off-by: Pali Rohár Signed-off-by: Lorenzo Pieralisi Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/pci/pci-bridge-emul.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) --- a/drivers/pci/pci-bridge-emul.c +++ b/drivers/pci/pci-bridge-emul.c @@ -295,6 +295,27 @@ int pci_bridge_emul_init(struct pci_brid kfree(bridge->pci_regs_behavior); return -ENOMEM; } + /* These bits are applicable only for PCI and reserved on PCIe */ + bridge->pci_regs_behavior[PCI_CACHE_LINE_SIZE / 4].ro &= + ~GENMASK(15, 8); + bridge->pci_regs_behavior[PCI_COMMAND / 4].ro &= + ~((PCI_COMMAND_SPECIAL | PCI_COMMAND_INVALIDATE | + PCI_COMMAND_VGA_PALETTE | PCI_COMMAND_WAIT | + PCI_COMMAND_FAST_BACK) | + (PCI_STATUS_66MHZ | PCI_STATUS_FAST_BACK | + PCI_STATUS_DEVSEL_MASK) << 16); + bridge->pci_regs_behavior[PCI_PRIMARY_BUS / 4].ro &= + ~GENMASK(31, 24); + bridge->pci_regs_behavior[PCI_IO_BASE / 4].ro &= + ~((PCI_STATUS_66MHZ | PCI_STATUS_FAST_BACK | + PCI_STATUS_DEVSEL_MASK) << 16); + bridge->pci_regs_behavior[PCI_INTERRUPT_LINE / 4].rw &= + ~((PCI_BRIDGE_CTL_MASTER_ABORT | + BIT(8) | BIT(9) | BIT(11)) << 16); + bridge->pci_regs_behavior[PCI_INTERRUPT_LINE / 4].ro &= + ~((PCI_BRIDGE_CTL_FAST_BACK) << 16); + bridge->pci_regs_behavior[PCI_INTERRUPT_LINE / 4].w1c &= + ~(BIT(10) << 16); } if (flags & PCI_BRIDGE_EMUL_NO_PREFETCHABLE_BAR) {