From patchwork Wed Oct 23 17:21:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847662 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2047.outbound.protection.outlook.com [40.107.92.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC8BD1CB312; Wed, 23 Oct 2024 17:22:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.92.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704130; cv=fail; b=hDqg2Bvt7UrXaRekHyb/zxyRL58MP8Ovvb1snwEZkA0fRH1NRYMJ+eAAtZoT0odB1NIGGKNR4R8Y21snDkIYwqR6VYzrgvNFFBYkv+bEjx20kWMI4DY43rboWpCZXUiPRH6oP7geiqXHAribBHqd8DBIwHUKWrdopnqzLPPTgus= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704130; c=relaxed/simple; bh=XkXJOr0gAcpQ0dkHLzCxgTlRvEvjnXtpKq2aw8oHBqI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=hcX/XhjzhTxWH79DDfb+cgGiCiEiJM2f+fYPFnQ2LFx0WIdT91ErGsQDvLbTEi4YHze0KsLe98VWbfFS+xS3KCGa1/Y6Fo5lVowcBQdCNlrh4wA1FHJoHO2u7T+LCti40cdYMbCCUiEK95j7s7kzosgH1mnb2IlZRnfGjPN36bA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=u1jLQfrF; arc=fail smtp.client-ip=40.107.92.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="u1jLQfrF" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=IvqPNQn/eRtSQ+sBfZ2KDJ6Bn8Zl4WzTiwgcvk7LeQe4S5S9UC0uoOQXwo66Y6dNv1rrnLgd4mqTymVXnsi2BfT5RhdOQeS6gYJvja3pxHqZWUow92BB5yM+6FcqbceuUzH5OmAd5x9lIwwP/yjgzg+zyGn+N70s7BqcfMF7uW9fEYr+Vh773dwRDyZ/wGT+Af4o5q63wNAmzQu6uyD15cWDWWj1ryTjkfNHItKzCHgFjoZUh6+JVvyANfTajUzecssfvQ7/adAq9C6pNbGjkXlNGRmF8KYoE5kRSmvCRUdJNBwv/YgLoU2mWre4sWyoCdOgSyKqaIRn2QQXqh3mOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WAvBY+GzHfnlwh8MIGcdAH3G/HBdvL0/ocAn8GcTT/A=; b=pM8w8/C6TDeutJ0UOahHK70DAcpnPyP74mWedo8klgMAKjaVOfHwWPSpOO/4AmnTvnamXQDNFuimM6TN2Y3/mOn3pyuuTojeofs5rK4mUaQg+ceuZbRiJWU6Uev/EZreA0rvF7sbp42EmFIJBZSAAkf8vnJMf5UNNHyREQ8IIinUmZn8qtM7FpgIZAHaBEdG8Cvq69+Sbuh48MeqIP7XIbxev4swjdT1YdFXBOV3mhuXTe7RxNwCHhRhMULa0aaXDJ7iBZ3V+ODrPjo1lxocSEhb2TNe+qM8pW3MtFUkHYOQTlz/TmLLN2bjcvrB6EPPFEz3KceaPewn4UESO1P3Pw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WAvBY+GzHfnlwh8MIGcdAH3G/HBdvL0/ocAn8GcTT/A=; b=u1jLQfrFJTwsbdfdWD05xbtjVWAK4R7i0w8xJpMPQhwITwJKZY08F2XP1doeHT5Gr38WvL5OT0wO2ohMMxiTDDRFq2kzaNh7FjanVPTNlK195gYZN9OdvTbxXkj3tfIvY4OlI/Zdizvp5b94H6sa/FkMaiUoptS3D4s2+qAiR7c= Received: from BN0PR08CA0022.namprd08.prod.outlook.com (2603:10b6:408:142::7) by DS7PR12MB8201.namprd12.prod.outlook.com (2603:10b6:8:ef::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Wed, 23 Oct 2024 17:22:05 +0000 Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::c9) by BN0PR08CA0022.outlook.office365.com (2603:10b6:408:142::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:04 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:03 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam , Borislav Petkov Subject: [PATCH 01/16] x86/mce/amd: Remove shared threshold bank plumbing Date: Wed, 23 Oct 2024 17:21:35 +0000 Message-ID: <20241023172150.659002-2-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|DS7PR12MB8201:EE_ X-MS-Office365-Filtering-Correlation-Id: 07a7bb42-d64e-4e45-5d61-08dcf38736fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: dZyZ7kYPjPbjiTwqwHj4JKune+rTMZkMFUKicGGbEWZBtT0BWbt7Oo07QycezRonoEEt1Qt2PrU/mAjLWgHPUMRBCzh8Qhfsa4a79AQmFQADWthVmA+Ql76hh8X0yfPfKzjXXKkVsiF+kx3cI00EK252bAF8HkoFKp1PWrLfr44K9I31vfF6txzrfD4HltTvx2kk8b3+C2zCyf5c3311f34k6+OXNQhGZzgLXnXnUKO2ZYIGbXsIQfQClnuS/l4Vkywwjomc1pzk4PPCgkWob2gEuQUJcnaHhCykE7Sfaj4YlwnACXP7dAwpGZ5YHfViw4Z5YndmtZB8bpQjMe4LEYRKpYP/aQxlCIvLsWbX40DemOMEfL8xg2tApDxQKE/XdoYhu+QUxYb9ETZVr10ebYxdkqhDLhUWgRmLzUNbGhLfkdOW0hIzAWel0fAwbL+d7NnZZiUMyx+nUCkqbte1QHjNdIyYeaqAfcsozzviWmuA7H/X7zKRMdI5+gkevBnR8p+ybm3AwIMry5jTAMI/TLG1jO0hKs3ajoNPW3LeNQ57QxL0LbW1qtmgyWQU8o+Xnje0qdoGP3Buw0hzRDbguf4KJgkKHWgkeunX4c0nz3sv5B08PQEkswegzxFYHIbwCCKL3ud2Ml8viKbiKuoqmFEKLuOJTJIitu5pYm4l/fh6ArxZ4m3ioTBD/NS17cBApzEWm54V3rPyxEbrZ8i+rCh1lNGk58pskIKL0NQ+yqOr1KyI0/0P7csd5BC1s/+zFDdB+VY/jFP/YifXWz5MfRPXzZsprDESkyE+1XnX/TUWkaes1l6cYYoq119FLdCs3R2hnNbeZrqaXNWrY+ni02vhD6XqIfdaSOGEvzu4Z8YwVhLb8GVUrO6lObqVbQ7RhMxPLZRL/NYZADMq4g09D+NZR/MzldvW0x3Ya6HrnjchaIfo15hsp1z5XYiWpAnES4+OlhwkryAdjuqmKzntGiUCBzxUpJUqYreev5gF5eZqMZuGDBB39tAUvMoWXxUZQZ2AcIJOh+HGrlpImb1PnbdYQ4m18R2wqizhJBXBr9i5q0F7tIsy6LkG6K4gagrAqbiK/TCLr8Ped1/eQgNbVJyuhfnEFGaa7cDTlnGBpASAOFuDPyXpd+D4w+vUrGAl5lUF7QNH+ylrS9UnwVQZFoTqq17paz+RNcmIVDxfkq+jgs4u4yvSH6fXSyr9/FrPeVMGvF6yB92Xv64p49613wThQzDqezlLCDFS6VZB/keOX8SER8pc1HonP/EFX2jJRAsjj/J1U1q2JO8LOQama0hP3vPAlIM2xBK8Y74Uv3aRtR7Ve7efe+mWfyjDjgoBg8dtkDjDn4GTtKewgyONJknMvkaIlFXcQTMQufOJJF/IU6z7RWbD300RLbYsA+hrD/G2+RLtySSYC3NEYoJSTA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:04.7629 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 07a7bb42-d64e-4e45-5d61-08dcf38736fc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8201 Legacy AMD systems include an integrated Northbridge that is represented by MCA bank 4. This is the only non-core MCA bank in legacy systems. The Northbridge is physically shared by all the CPUs within an AMD "Node". However, in practice the "shared" MCA bank can only by managed by a single CPU within that AMD Node. This is known as the "Node Base Core" (NBC). For example, only the NBC will be able to read the MCA bank 4 registers; they will be Read-as-Zero for other CPUs. Also, the MCA Thresholding interrupt will only signal the NBC; the other CPUs will not receive it. This is enforced by hardware, and it should not be managed by software. The current AMD Thresholding code attempts to deal with the "shared" MCA bank by micromanaging the bank's sysfs kobjects. However, this does not follow the intended kobject use cases. It is also fragile, and it has caused bugs in the past. Modern AMD systems do not need this shared MCA bank support, and it should not be needed on legacy systems either. Remove the shared threshold bank code. Also, move the threshold struct definitions to mce/amd.c, since they are no longer needed in amd_nb.c. Signed-off-by: Yazen Ghannam Reviewed-by: Borislav Petkov (AMD) --- arch/x86/Kconfig | 2 +- arch/x86/include/asm/amd_nb.h | 31 --------- arch/x86/kernel/cpu/mce/amd.c | 127 +++++++--------------------------- 3 files changed, 27 insertions(+), 133 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0bdb7a394f59..c6f917b762c0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -1186,7 +1186,7 @@ config X86_MCE_INTEL config X86_MCE_AMD def_bool y prompt "AMD MCE features" - depends on X86_MCE && X86_LOCAL_APIC && AMD_NB + depends on X86_MCE && X86_LOCAL_APIC help Additional support for AMD specific MCE features such as the DRAM Error Threshold. diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index 6f3b6aef47ba..b09c26a551eb 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -4,7 +4,6 @@ #include #include -#include struct amd_nb_bus_dev_range { u8 bus; @@ -29,41 +28,11 @@ struct amd_l3_cache { u8 subcaches[4]; }; -struct threshold_block { - unsigned int block; /* Number within bank */ - unsigned int bank; /* MCA bank the block belongs to */ - unsigned int cpu; /* CPU which controls MCA bank */ - u32 address; /* MSR address for the block */ - u16 interrupt_enable; /* Enable/Disable APIC interrupt */ - bool interrupt_capable; /* Bank can generate an interrupt. */ - - u16 threshold_limit; /* - * Value upon which threshold - * interrupt is generated. - */ - - struct kobject kobj; /* sysfs object */ - struct list_head miscj; /* - * List of threshold blocks - * within a bank. - */ -}; - -struct threshold_bank { - struct kobject *kobj; - struct threshold_block *blocks; - - /* initialized to the number of CPUs on the node sharing this bank */ - refcount_t cpus; - unsigned int shared; -}; - struct amd_northbridge { struct pci_dev *root; struct pci_dev *misc; struct pci_dev *link; struct amd_l3_cache l3_cache; - struct threshold_bank *bank4; }; struct amd_northbridge_info { diff --git a/arch/x86/kernel/cpu/mce/amd.c b/arch/x86/kernel/cpu/mce/amd.c index 14bf8c232e45..0c80dad50664 100644 --- a/arch/x86/kernel/cpu/mce/amd.c +++ b/arch/x86/kernel/cpu/mce/amd.c @@ -4,8 +4,6 @@ * * Written by Jacob Shin - AMD, Inc. * Maintained by: Borislav Petkov - * - * All MC4_MISCi registers are shared between cores on a node. */ #include #include @@ -20,7 +18,6 @@ #include #include -#include #include #include #include @@ -221,6 +218,32 @@ static const struct smca_hwid smca_hwid_mcatypes[] = { #define MAX_MCATYPE_NAME_LEN 30 static char buf_mcatype[MAX_MCATYPE_NAME_LEN]; +struct threshold_block { + /* This block's number within its bank. */ + unsigned int block; + /* MCA bank number that contains this block. */ + unsigned int bank; + /* CPU which controls this block's MCA bank. */ + unsigned int cpu; + /* MCA_MISC MSR address for this block. */ + u32 address; + /* Enable/Disable APIC interrupt. */ + bool interrupt_enable; + /* Bank can generate an interrupt. */ + bool interrupt_capable; + /* Value upon which threshold interrupt is generated. */ + u16 threshold_limit; + /* sysfs object */ + struct kobject kobj; + /* List of threshold blocks within this block's MCA bank. */ + struct list_head miscj; +}; + +struct threshold_bank { + struct kobject *kobj; + struct threshold_block *blocks; +}; + static DEFINE_PER_CPU(struct threshold_bank **, threshold_banks); /* @@ -333,19 +356,6 @@ struct thresh_restart { u16 old_limit; }; -static inline bool is_shared_bank(int bank) -{ - /* - * Scalable MCA provides for only one core to have access to the MSRs of - * a shared bank. - */ - if (mce_flags.smca) - return false; - - /* Bank 4 is for northbridge reporting and is thus shared */ - return (bank == 4); -} - static const char *bank4_names(const struct threshold_block *b) { switch (b->address) { @@ -1194,35 +1204,10 @@ static int allocate_threshold_blocks(unsigned int cpu, struct threshold_bank *tb return err; } -static int __threshold_add_blocks(struct threshold_bank *b) -{ - struct list_head *head = &b->blocks->miscj; - struct threshold_block *pos = NULL; - struct threshold_block *tmp = NULL; - int err = 0; - - err = kobject_add(&b->blocks->kobj, b->kobj, b->blocks->kobj.name); - if (err) - return err; - - list_for_each_entry_safe(pos, tmp, head, miscj) { - - err = kobject_add(&pos->kobj, b->kobj, pos->kobj.name); - if (err) { - list_for_each_entry_safe_reverse(pos, tmp, head, miscj) - kobject_del(&pos->kobj); - - return err; - } - } - return err; -} - static int threshold_create_bank(struct threshold_bank **bp, unsigned int cpu, unsigned int bank) { struct device *dev = this_cpu_read(mce_device); - struct amd_northbridge *nb = NULL; struct threshold_bank *b = NULL; const char *name = get_name(cpu, bank, NULL); int err = 0; @@ -1230,26 +1215,6 @@ static int threshold_create_bank(struct threshold_bank **bp, unsigned int cpu, if (!dev) return -ENODEV; - if (is_shared_bank(bank)) { - nb = node_to_amd_nb(topology_amd_node_id(cpu)); - - /* threshold descriptor already initialized on this node? */ - if (nb && nb->bank4) { - /* yes, use it */ - b = nb->bank4; - err = kobject_add(b->kobj, &dev->kobj, name); - if (err) - goto out; - - bp[bank] = b; - refcount_inc(&b->cpus); - - err = __threshold_add_blocks(b); - - goto out; - } - } - b = kzalloc(sizeof(struct threshold_bank), GFP_KERNEL); if (!b) { err = -ENOMEM; @@ -1263,17 +1228,6 @@ static int threshold_create_bank(struct threshold_bank **bp, unsigned int cpu, goto out_free; } - if (is_shared_bank(bank)) { - b->shared = 1; - refcount_set(&b->cpus, 1); - - /* nb is already initialized, see above */ - if (nb) { - WARN_ON(nb->bank4); - nb->bank4 = b; - } - } - err = allocate_threshold_blocks(cpu, b, bank, 0, mca_msr_reg(bank, MCA_MISC)); if (err) goto out_kobj; @@ -1306,40 +1260,11 @@ static void deallocate_threshold_blocks(struct threshold_bank *bank) kobject_put(&bank->blocks->kobj); } -static void __threshold_remove_blocks(struct threshold_bank *b) -{ - struct threshold_block *pos = NULL; - struct threshold_block *tmp = NULL; - - kobject_put(b->kobj); - - list_for_each_entry_safe(pos, tmp, &b->blocks->miscj, miscj) - kobject_put(b->kobj); -} - static void threshold_remove_bank(struct threshold_bank *bank) { - struct amd_northbridge *nb; - if (!bank->blocks) goto out_free; - if (!bank->shared) - goto out_dealloc; - - if (!refcount_dec_and_test(&bank->cpus)) { - __threshold_remove_blocks(bank); - return; - } else { - /* - * The last CPU on this node using the shared bank is going - * away, remove that bank now. - */ - nb = node_to_amd_nb(topology_amd_node_id(smp_processor_id())); - nb->bank4 = NULL; - } - -out_dealloc: deallocate_threshold_blocks(bank); out_free: From patchwork Wed Oct 23 17:21:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847661 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2060.outbound.protection.outlook.com [40.107.223.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82D9875809; Wed, 23 Oct 2024 17:22:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704130; cv=fail; b=J/ANrAF5tp3uZDfKSJeoRp7m7bfFQDElAwxbA/q6emUsO+/5iFpxHvdz9IRBAsEoYlS1tYSQ23Gy8WLTDMOypFd0K0qp4ID40DulbOdj+1mjMYk0/E4bJpzpKJLJGtwTg73sIOgMQ/nt4QXq7lMpJJaRHKN1toaZ0TITBwi3Pw0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704130; c=relaxed/simple; bh=/uV2y9qYhLf9P9mABYvlYIAtQ6LQiCFoqUU1/0/I8Kg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tbm/UzhCfQhp6HBfHVvp1SzG/aRbaJN6bEsspzbdiw+pCH03S+wYoshbmdssq+9XE6NJ1lBYcvRQBOV1GiQuelTehcO0vR2XRIvqciA31As24BjJFQJ/E/0QtbDTOFqGZ7TkM80+Gv2vz5AVUpLSDMmgTe8j19fv3BACxYoLgms= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=CMlxkEZk; arc=fail smtp.client-ip=40.107.223.60 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="CMlxkEZk" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QfIgjWS+PYjLyg8ah+gWPlVzKamZd6F/1L0BNAnCDWIaDyv+5klDk3n+CQwtnOs8WsPFur2hvahLGQffoN6RaNZ8TFFCacFE1YQDp7DdhA5F6GIPSvqZZoAtJRErO/CC4LKBkaC88TpF6jO+vjRsOyf7dHMaOUblmWCt5hJ+ie8HMRM3EY3zn6QzCb+vsKZkE0QJRJbZ9Vk8CYLgy8q0oieWmN5XVesrHtTHi6uLribRwaoUb/ofQWvo1iOUabJywOsR3VPR7tzw5ujd2xzJHcKGZhkrcFYhBLA8E7qBni3kClmCauSlvdBG1Pafd5aFJhuY3j19MzW/+E9HUMdLwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WYTLkH/mZD7UGt5ZYPEGA+hEksxYN49GsZlC9wOy8jA=; b=P/SAQxzbZuMeNb/c/plZdlBuHtBBlOSb2Gvd6k4zi2X9vbbaMoVfNT03e1OkEz9WJ9slMgieMYr3f96W8ENJCOhiUMz81VYyx1DvgFDbKdjPSsw/iLfmE2IkKuVgm7nhTw56EqRLNmeioli+zvCJZmS5lupOkkrk/qQwD/O0qAV48WWcfssUvK/C/3QHw91qiJHJ3qZ+M+K4RbfSOdVN7htlK/3mam3R2VhIvFwudSDuVQhaU052lTWJaEyIT89vkPe79+exthr224nJKQSIKELt8BsKVDgaVpPdejzYy0DncmWTEEz7btzp5zz8gbZfJ20g0jJ5pcCwnGkkwZB0mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WYTLkH/mZD7UGt5ZYPEGA+hEksxYN49GsZlC9wOy8jA=; b=CMlxkEZkZdy2DrrL1kVe7AwIWBJlruFTZ6ZhQ89kdhxQrk1f8PghFdg4q4AS5bLkFA26+t8pi8gc5r8hQkMqOTSVJnpod3hKKvn5RKvHqLMEKecRwgPdDpiDMb7DBpCg2mb6wkFf+XeH4bgKIZQ9qOXzfZHWzg2yFenTcCDkyU0= Received: from BN0PR08CA0009.namprd08.prod.outlook.com (2603:10b6:408:142::13) by MN0PR12MB5979.namprd12.prod.outlook.com (2603:10b6:208:37e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:05 +0000 Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::c8) by BN0PR08CA0009.outlook.office365.com (2603:10b6:408:142::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend Transport; Wed, 23 Oct 2024 17:22:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:05 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:04 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 02/16] x86/amd_nb: Restrict init function to AMD-based systems Date: Wed, 23 Oct 2024 17:21:36 +0000 Message-ID: <20241023172150.659002-3-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|MN0PR12MB5979:EE_ X-MS-Office365-Filtering-Correlation-Id: 02210d45-db06-440b-3062-08dcf3873771 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: wKja+YVymazqWY0OC9EqY2kfRXUxVulHmRHXEAG1TyDG+IeEOhgXaSp+ZZUjWFF62jRqi3ww3il1O3yj5NAHV28P6wddjMi6v7bdEcpFtaUnHJ+V5iM8zNJHIlXqsAlallW4rD6LMykjNbD7I+2sfQOZ5YrT0ORSafdJR9eU/6f7Cw2Bj3RtgI6Abj3EbB6D+AEji2b7Xjmlsq6BIh3vguMM2Jrg37TO5hF0zvW0vFalypo0QvWpfWDjAW9JhVDeet7Xb7MzlpyotXERnb6d0yUJzmALVjIa5GIxaWTKYzFl85Ax7ws/uJx7fowfueJNxMorqe3blljayuBMEOGGIZXAv8sy7CC7O//AXxRLtgi+aDsXLzWwK4Gq3oPyp8XgeTirdfVB9oc3F1k6gTdfF2zBWe+aadZp/NTWFSFka9MZUUfffxWYJPYnZEz84mZOEfMCWjb++RadvRxPH86FTTl3IoNsEa948c3DNkan7w3DxMdoTI/J7VF9FVOrWo4dH/RPJg0V4oWpSPx8Gol3TL+20DEp8g/Vcom5fthir2rtbSKzmI+LPY9IhUAkBHW2WT3IVk6tcBh6jM7FGLiiJER6inu7U8uKCf6WiaBI2qFk9Au6vG6YkWb3Hy4M4rZY9o10Lus1yuKqZbYs/TfB9/P+CRUFbi9iIDLorEz3Ec5q9UVWaKEAYs4uxUGaPlhtnZcTSYDYb/VhxppBUDQs4pWzIuHqgz1BJQj50Mt1HOuT5Bbm7K1f9V1ZyO+SBOMH4Np+XqbUBrI9sNvMOckRj+Nu0LeouGkXYkluTQW2nLdsUUL2oy5vOYAQq39ZSEHwduMK6BXYHRzxdVE7IfSSgpYyI7vPJNvUDdV7V9GnOgsCIVpn9/xbaDqB9REz8WaQnH7ULfKPNEPfiCFa49y0HfCCuNn7L//pS+6xWrC6+edbAr0VJnw7FKylvzxVlDvH/xUuHm2vU47YU0tORnkgmCjz463OzfkcCuXJI6FBNwwQZ9oYRisEE9UUJrAiFO11FlCsmmEghog8svhl8pVIOBqpv9JwjiWBfrC104eL6y3ABngIUBeH7LuRDnzd/76kB98t0t3IV+j+5w3hMk8+7UXDkZuA6kMFcM2hJJpTj2JW7GbxGFwufzQ29kw81exVjH+6VkEr+rJVeRwTT/6Yai1q/SQUJtegcZS9Dfh9FzKFxCHFOUoe1k/YxnTjV1rc18iEGrE992gFm1NZFf1pgs3F3jCpRr6eOBqWJQBDTgx6aD5rGiyrxeLAdo0njpnLUCtZVaKTXdZmfj4OMiQcZFVrDTMUJ6OhmK1eN0SILL4WmMV59CmZHWPOcsNAL1D3IMNDz44lgIxVNbzRNRVotZrLvCEM7969f0JtJ5gZip7i2DGvrHr+pArrDPJcINPspXKTH7JRP0BNjRnTQb9c7g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:05.5442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 02210d45-db06-440b-3062-08dcf3873771 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5979 The code implicitly operates on AMD-based systems by matching on PCI IDs. However, the use of these IDs is going away. Add an explicit CPU vendor check instead of relying on PCI IDs. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_nb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 9fe9972d2071..37b8244899d8 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -582,6 +582,10 @@ static __init void fix_erratum_688(void) static __init int init_amd_nbs(void) { + if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD && + boot_cpu_data.x86_vendor != X86_VENDOR_HYGON) + return 0; + amd_cache_northbridges(); amd_cache_gart(); From patchwork Wed Oct 23 17:21:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847663 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2067.outbound.protection.outlook.com [40.107.243.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1EF7E1CF5E6; Wed, 23 Oct 2024 17:22:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704131; cv=fail; b=XxtPwv1s5kxc/4/gEFAqHHtO7kqG5dbxIuLpTf03BXWWZNQMxGpngDQjwMQLqeulXEYztHJ/3G/Bglq3nK594kZmAhr9TyEX7a53rN1UOrzkcgoCGyRTW38nbDe1bTFPCs+qKExxlH1Ffl0fpl3Sm3839co8hV+XvqLWyG1uSkg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704131; c=relaxed/simple; bh=OQxfHvFjuuNlVIxAhZTsaJrJUHybixhHLmQg3InXlSQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Tsf3vDDlXWowDxAkGm+P/rkExOM0UDl6uLkMt4SUzrsUAKEQH1S8SjVzPKUDtQ6i9j4TG1g4zaSdDFnv/kuVQlyBZd4vVrRj7pJCny3sblxaVEU3KmgX0c9FtQmL6Dtjgq1qhiVL/nk8I9lOA2a4pHMQ9DLQkPgMe+p1kNsppXY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=vkyuGYsU; arc=fail smtp.client-ip=40.107.243.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="vkyuGYsU" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bbeui+/xRXpb2vgCUiG+EiK0W8a24+TFhlxugY0NumQpO/FDs88rxZW+NEQqg1DHuQiwfVFdIj7fqMfkl8vFwsLs6XxKDvlzmiZIwsp8Z/Eir+ghejMnU6CgHSkvb6B6QGRAlk/XB2JR+yNsZBSPDqGp8epc5BSTub2+WvcgcV6MC4sy3ZvTZ706srKSoPv2FArF8ZTk34SzXflXaxyqSCnfmyarUbXREc8lnaf0C5CV7aug3W5tzaumqnCaTc46SlGmGyDNOCKovhhBKg+VynOiTINeG4lewXZylmdvDMD4CIaTWYTpv1qoWgeVJkZjQyTBDK/VN4oxfZFD9iQGAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=E18zgn1p3i/bkUeVRfSrWl7ziS2hVjpIPX/yFhMFfXE=; b=Pee7o1PDjm7OmauGx0+XvtCmswtnSHfckX/5oJ2j0FGdCnc5hmIbXUSKUIvydA7qzJMi6ggu+luH2e7JvKBXQmemMiKKenleV39aP3zaDHuNS9gTrstF1u8/4YeMwAE/0TsVa5+H+oUNBaggj3SVO2hjm7uNcggpLOTMhL6HSxQX8JsoqbjGaEkB46CgNZcxBJs/50Dnw5k1wKi2Krj657NYxiChPAz8J0CfN/gpmr/cpUBxzpmUaG0SmmfafKmglkrheHMHAlCerSj13cKcP2hYILMJlc1TfTPSDrJ/cJaqV531JolHoQXsK5ZBXvO/vXo8a4BpS68Ener/07VVjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E18zgn1p3i/bkUeVRfSrWl7ziS2hVjpIPX/yFhMFfXE=; b=vkyuGYsUxxZSJoD2PG/KQXH/1HsRm5GJYhTmpxLXf20pg/su+vKPKv5IJoyvUjBkD7koWNY5S7KwIbjGA/sUg5ajhABtuVvL7YLdaHbbecG5ou6HyLUa6p/WmZzRokFNE+vKTxHg0GEWdeHdopw8hG8gzjAC6fH6V0fucUvY6cY= Received: from BL1PR13CA0104.namprd13.prod.outlook.com (2603:10b6:208:2b9::19) by IA0PR12MB8863.namprd12.prod.outlook.com (2603:10b6:208:488::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Wed, 23 Oct 2024 17:22:06 +0000 Received: from BL6PEPF0001AB4D.namprd04.prod.outlook.com (2603:10b6:208:2b9:cafe::7) by BL1PR13CA0104.outlook.office365.com (2603:10b6:208:2b9::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend Transport; Wed, 23 Oct 2024 17:22:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4D.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:06 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:05 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 03/16] x86/amd_nb: Clean up early_is_amd_nb() Date: Wed, 23 Oct 2024 17:21:37 +0000 Message-ID: <20241023172150.659002-4-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4D:EE_|IA0PR12MB8863:EE_ X-MS-Office365-Filtering-Correlation-Id: 06215daf-5333-43a6-f8a0-08dcf3873809 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|7416014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: yE7fDts+m4hehzna89ilUkeE9O9tdVC41tf6Ncr7P0Mq1BmlSesixMPUe0vfDCRhL8/yNJy1FHcFM2sb69tkCh3+GzSMQTpN12mfaO1yhFWhU2BaUUn3wjo61FEWmGBYQg+A7rQnrTTGiTl1o6p9mrz53gRga9MNqLoDMiRi94Kt8A/sHaUOAJuHP37xr/6vmr0yh7ztCQmsikRW3ed0oIdZ1Ffc1QJQVAphFjm8UMvmLXEE7NdVw7zzTWEq+jY+/iUZzlChBx182cg1TvUjsOEh4Bpw4MxFu6NHOZxd9nFApLcNmtGB2uMnpQlcQndS+cAddaJRXr0H0BiALKQ8OqjuPs1/05sd5ASj5QzmELP8G7eD9z19d/GZczkq2JmUq5kv5cUbd+qd/UnCope8tzbc82WwgT2hnPiE1c+jj+1p2O3iZ1D0CAvnqWIQBFVofkjksf0a3LVfxhzJeZfFd0gQNK32PpkjeQ0uhqlAJdhVjLkuLj/X+hcb3oX24nSpXVCqxfwDlmEacC4CUTEW2BJWxdvDFs5Ed+8sylYht18rSqVQ4fYITa8b319Vbhl86KgayX4pJBw1j7FFKz7RklGS9iNgbBpIEf020T4B4MM3aq4VnCgsvmfxwiMR8pJ1Zyl8/oVKTPrg037knBDGTjTEWqG7yrxMfz7TigIEKc0m1HAvEi+LDb6d68BVNT9IqK7U/Wv0z6TpMqnhcGvYUF3FUfyYUdDhx9pvt+l9ae29toLFyuRXTlzCVzdOTTUUmAni3RjYrxHExYttmyZpJgAzrr2+TF1wCDoNbLM3dQiyS4q3l4uEIJz3Ze8VKzEahAhXaaIkHLnMhClEGHUhrc8HIhxwdEX/7s6rquWwv6/tXUTdEj3+PUp/agaHEPfKSkPwJLDO//zcoaOdwAS6F1P+h7mL62PzUgtBlC9beXONYlYQxyNJerwp7vktx6r8v3l51Y5ByYKa/TdjmnUFvsGMhSqC3up7YPDtO6RynusAHgCUUcBPBcxgr/oW719VNzfMczuSQjlE4jQV4FOG1qRrs+D/cb9IMSe1udQEf6+8CSl3ZvM/cSZA3tjEf0ENdu+rAsg9s3XAWzkPocnp+K/VOqRRfNKb+77j6fteSu+/NClJOidIufXpJcEB6PEGupev0T5bFa4TkrdU/WWQWGMZV76xSTTtuhzx5i4ywQxTR0GwXZBhKOO08g2tQqlskjOVzqspJaHRHOFFS3dBGSYqc/mcsgp/weMTzj7Giu9RJTnXRjOtizi5M6P6ILLdstyMZ4Irxf1xXHhVRAzxUXgAUBUnnjD9fhfdnJclJNbQDJFZo1P+Ml2pKvySHZnqKMEZOsAZvocuED7LLij3VZCsWnlxSBOvldHq71OVcofezK3T314Hz+0zu0yRJuV9c5Bt5wMbneIcFiKUrX/QCQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(7416014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:06.5298 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06215daf-5333-43a6-f8a0-08dcf3873809 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4D.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8863 The check for early_is_amd_nb() is only useful for systems with GART or the NB_CFG register. Zen-based systems (both AMD and Hygon) have neither, so return early for them. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_nb.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 37b8244899d8..65884d0613f8 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -385,7 +385,6 @@ static int amd_cache_northbridges(void) */ bool __init early_is_amd_nb(u32 device) { - const struct pci_device_id *misc_ids = amd_nb_misc_ids; const struct pci_device_id *id; u32 vendor = device & 0xffff; @@ -393,11 +392,11 @@ bool __init early_is_amd_nb(u32 device) boot_cpu_data.x86_vendor != X86_VENDOR_HYGON) return false; - if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) - misc_ids = hygon_nb_misc_ids; + if (boot_cpu_has(X86_FEATURE_ZEN)) + return false; device >>= 16; - for (id = misc_ids; id->vendor; id++) + for (id = amd_nb_misc_ids; id->vendor; id++) if (vendor == id->vendor && device == id->device) return true; return false; From patchwork Wed Oct 23 17:21:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847664 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2042.outbound.protection.outlook.com [40.107.236.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D35301D0947; Wed, 23 Oct 2024 17:22:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.42 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704134; cv=fail; b=iNjHeGMqjJYBn6zYF+Cn80OVauowTluwf3ZXNpECHt4rXE38B6UByXYD/LrtSfzsCKfmQmBRxudPVHzibxA1rdAMAzDfuVvniUUO0S7p2eXjZ7iUC7TU9mf4DEnW//VXw7A/Raik5r110rXjWjOUXt1j2XF6FsIF3AUorLLQs0E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704134; c=relaxed/simple; bh=hpDPDgu9b7KzW3ad4OxPhxZpVar8N6JLSmrG3B1VCdE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=C2rGljVnDvMatsa5aiZTt4CTYxfZepnGVymi0zsmyh3hdx/Kkun638k1lbuyY2DJXZS4uZiqTLOOZYjnfk6pSGLPPRMBS0iWxU9NgQaGAMmf3Kqpexdpx9tIFxp9VKzShzVcCXAlhXsi4HgB3rsyoufrog8X3LUbAM/YIaIzcrA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=cRzf9rZv; arc=fail smtp.client-ip=40.107.236.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="cRzf9rZv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I7/XEoYo5XI480+LG4pDSH06rDL0GRu4/P0XqorMzTkFr3hDt2+Dq4C6vapPaoo8F80v85hm7Ad1coqT8SO+/jteh+e79J4p4q3gpIYYXAbnnhXAnNZYIMt5rmbg/JFmszRIH85bphM/On42CfrDoGRl9UqbYk7YOKj2A4fQinG2Z5R/xpZf7btq6cLBXrJ0wC5weGf/nUVCHlLdMDzd1qPJYENpfDfch4+txPnLf2uJwW5N/7V90VkjFMLctgkK7IK3BVd1OE36VN+DQxhcbqFiJzf59gITETJFc6/xObfIZRcpnRsbvEGkqU+au9qGk50mNY1T+BHicftLnL0uLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OmTOxNtRMJDkbDg7YUqqtG5FptOyVaMKfbRTiBA/tyw=; b=lRvNQg3nY+CNVdCbHzr4XhhpseaKArUtow/V0ZNMNRiEvgjDxIFjMWHJQh59p0ITgUkMVW70yrXsQffroPWqx8dQGVZVM2uKsxvyqW101/MxVOaz5+JTrfS480MzzQQHqaXMz9M+7EtmhopNwlnTqptq5+HLdBo6b1Tke6jjWDJzIEVgq2M1EXCO6J1anVjn5KoePwZNopFuiflcDWKENBHKVGlgT8KGrgSznFwLchGs7c4lpYE9cL7SeHFs8SqYRgivaZvFrtxLpEGGIU1amG2zU+1nJEkRg80IsBgTr20l4nrNQakjkeoYNCPnp3PViMaJSzSLH8pNibt/8CwbnQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OmTOxNtRMJDkbDg7YUqqtG5FptOyVaMKfbRTiBA/tyw=; b=cRzf9rZvofcyVYcY2ULyz3OJg8EEiQ26HLypXDZ8fN1aYedilAGEW1GMPnRTz7NvRCvBE52uINgGzqbobuIcDdw49evT38DInhby/xePQ5cChgac1FuNd5ZTE1Dhgw0rv1X7anQIMp0bZd6W4t7JLokQxSs0H2Y3HYpP1MpEHYk= Received: from BN0PR08CA0008.namprd08.prod.outlook.com (2603:10b6:408:142::30) by CYYPR12MB8704.namprd12.prod.outlook.com (2603:10b6:930:c2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Wed, 23 Oct 2024 17:22:08 +0000 Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::f2) by BN0PR08CA0008.outlook.office365.com (2603:10b6:408:142::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:07 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:07 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:06 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 04/16] x86: Start moving AMD Node functionality out of AMD_NB Date: Wed, 23 Oct 2024 17:21:38 +0000 Message-ID: <20241023172150.659002-5-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|CYYPR12MB8704:EE_ X-MS-Office365-Filtering-Correlation-Id: c915e917-95d5-44fe-bf77-08dcf38738a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|36860700013|7416014|1800799024; X-Microsoft-Antispam-Message-Info: XaUyYgEpz9ZHWpHq3qCwkLk8QkrcSl1PaYCtpVX/8MVpaEA/lnmyGMtvhC5XFIb4KUljBwrr1yBI3l7okvNMcj2qc4XnAt8emDOlU/ldvlAWvdbidjq+Ljbt0AQDekEpU2UH8oy27muUSibmYwt0FkQALrEQWlmat3WWmGCzLxQL8KpNLXI52U0Sq0uop7akrZ19vsiKjCXeJh03SacaOZbVyF7IWXJ+VeQpVfmh2WmiIPBXFeVbr+zqwTmTGADIZnBl4rQ1DPzBW62uU8YdHu+lu4ISo1/2wr0YWwzBw3anQ5F8wbtgkbkp1wOJNeFj63tSszvErjMa2I39MtT5jO87Y0m/lPVPnp/DJdtl8XYOe75Q19QikE032GSoLyYzkf2BheFgRGiQwTM6m00R8p6gWNlfYPQIz/72h7piKN+U14FA0hGzjZcMZ7jEAnzfiPb2lzuC2KRVDA7Bvjtvc2127pPooleFmBKXzDFwB8aq/TahY18y845wHJRrnYDBM/sGSpIkVGLUCNFJ6ueGbrOO6Lt3NSwC1IjFd4UdwGEOtAYcUrMSUTAk9w9i1MvJiQKmuLdylkWQBIEwagh87fAsqgxQQW35O9rDszWj7YqNpwE0e/8z+VZl9k+Q1vuNV4pAgchOArY/K5o6Xhy3B4E+L9fSWdnj7eJB0of8Gabm1Wx8MzmyBkF+CUCfb8icpinAQUaq66b6Z4sYSbDjaDY9zMMTxofqADTmKTn3kBuyUnPBc6AMgcnSuKzwQdOSvzUtqd9qLwYOZYyX2HAsGdrwt+NQMBDGIpwjr2F2hLvg10ymdyY9Xpo2HCZQNPQwkhuVIBEYvi2BHsadeJeNhO9TcmXkWXSOL1crzjZGQAbnLotxX05voPUwlkYfNKIy9/sV7Th7JHUOrRvv2B6eSuvOxitpoGZLEDzmrXaerYfaVPIB7lBaLfmO3z1BAKpc0Jzcwv90k/lnaxK+KWQNot7mWVRy/zsFY2k6jKrwNrIlx1cG2jMQMUA42l+WDwsC4mnHbN5CftYoTMorBwamTmlgBRSHr1Mh8pfthH0VJrD4bdKz+O0UjIDEKaQ/p5l+L2w7oIcKjaE/mhNahRKrUHytbiMTRRx7NYmnG2pE48UZxF4KWua7u83G5NK7bQJE01SFnpHz4OPp/5DKbL0V8Hm7787JceLABaKqzMx2UVfRlCaEDpY3Qxe3zH4s6B901Rfe9GtTF3oKjwGsqvULdVBeXWSOYrW602Sboa/qYHHsxTcdTUPBaAlrOdDeWubXDpSQMaaGxEZ8w5aYJEzFU69N1Ab4o7eZMJSJTcRwcfYuRs8idk0iwiDQ+y0AAukwnJxf4KnR/YtNKAX6rrYDF9PIGG6Ilux3J/wx63IWLP6xi/u+Sbo2cFV7xx5CwXSqazXfqvWzxy8kWds2VtvB8g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(36860700013)(7416014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:07.5285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c915e917-95d5-44fe-bf77-08dcf38738a4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8704 The "AMD Node" concept spans many families of systems and applies to a number of subsystems and drivers. Currently, the AMD Northbridge code is overloaded with AMD node functionality. However, the node concept is broader than just northbridges. Start files to host common AMD node functions and definitions. Include a helper to find an AMD node device function based on the convention described in AMD documentation. Anything that needs node functionality should include this rather than amd_nb.h. The AMD_NB code will be reduced to only northbridge-specific code needed for legacy systems. Signed-off-by: Yazen Ghannam --- MAINTAINERS | 7 +++++++ arch/x86/Kconfig | 4 ++++ arch/x86/include/asm/amd_node.h | 27 ++++++++++++++++++++++++++ arch/x86/kernel/Makefile | 1 + arch/x86/kernel/amd_node.c | 34 +++++++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 arch/x86/include/asm/amd_node.h create mode 100644 arch/x86/kernel/amd_node.c diff --git a/MAINTAINERS b/MAINTAINERS index cf02cbf4bef1..9ca246aef7ab 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1106,6 +1106,13 @@ L: linux-i2c@vger.kernel.org S: Maintained F: drivers/i2c/busses/i2c-amd-mp2* +AMD NODE DRIVER +M: Yazen Ghannam +L: linux-kernel@vger.kernel.org +S: Supported +F: arch/x86/include/asm/amd_node.h +F: arch/x86/kernel/amd_node.c + AMD PDS CORE DRIVER M: Shannon Nelson M: Brett Creeley diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c6f917b762c0..ba5252d8e21c 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -3121,6 +3121,10 @@ config TS5500 endif # X86_32 config AMD_NB + def_bool y + depends on AMD_NODE + +config AMD_NODE def_bool y depends on CPU_SUP_AMD && PCI diff --git a/arch/x86/include/asm/amd_node.h b/arch/x86/include/asm/amd_node.h new file mode 100644 index 000000000000..622bd3038eeb --- /dev/null +++ b/arch/x86/include/asm/amd_node.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * AMD Node helper functions and common defines + * + * Copyright (c) 2024, Advanced Micro Devices, Inc. + * All Rights Reserved. + * + * Author: Yazen Ghannam + * + * Note: + * Items in this file may only be used in a single place. + * However, it's prudent to keep all AMD Node functionality + * in a unified place rather than spreading throughout the + * kernel. + */ + +#ifndef _ASM_X86_AMD_NODE_H_ +#define _ASM_X86_AMD_NODE_H_ + +#include + +#define MAX_AMD_NUM_NODES 8 +#define AMD_NODE0_PCI_SLOT 0x18 + +struct pci_dev *amd_node_get_func(u16 node, u8 func); + +#endif /*_ASM_X86_AMD_NODE_H_*/ diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index f7918980667a..b43eb7e384eb 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -119,6 +119,7 @@ obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_AMD_NB) += amd_nb.o +obj-$(CONFIG_AMD_NODE) += amd_node.o obj-$(CONFIG_DEBUG_NMI_SELFTEST) += nmi_selftest.o obj-$(CONFIG_KVM_GUEST) += kvm.o kvmclock.o diff --git a/arch/x86/kernel/amd_node.c b/arch/x86/kernel/amd_node.c new file mode 100644 index 000000000000..e825cd4426b9 --- /dev/null +++ b/arch/x86/kernel/amd_node.c @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * AMD Node helper functions and common defines + * + * Copyright (c) 2024, Advanced Micro Devices, Inc. + * All Rights Reserved. + * + * Author: Yazen Ghannam + */ + +#include + +/* + * AMD Nodes are a physical collection of I/O devices within an SoC. There can be one + * or more nodes per package. + * + * The nodes are software-visible through PCI config space. All nodes are enumerated + * on segment 0 bus 0. The device (slot) numbers range from 0x18 to 0x1F (maximum 8 + * nodes) with 0x18 corresponding to node 0, 0x19 to node 1, etc. Each node can be a + * multi-function device. + * + * On legacy systems, these node devices represent integrated Northbridge functionality. + * On Zen-based systems, these node devices represent Data Fabric functionality. + * + * See "Configuration Space Accesses" section in BKDGs or + * "Processor x86 Core" -> "Configuration Space" section in PPRs. + */ +struct pci_dev *amd_node_get_func(u16 node, u8 func) +{ + if (node >= MAX_AMD_NUM_NODES) + return NULL; + + return pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(AMD_NODE0_PCI_SLOT + node, func)); +} From patchwork Wed Oct 23 17:21:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847665 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2060.outbound.protection.outlook.com [40.107.243.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77D4E1D0E05; Wed, 23 Oct 2024 17:22:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704135; cv=fail; b=Nsk75nXTETg4z9ZFkDf0k8p3Ua4JN3T1gjSOqAF3210KI7Wkvd3nsYfir9K3s2MZ8f5w+xARHjBDy4hgTJr1R4WWsDL0A0hSayEs8DoS6pD/9ltWtQZJF17eSjFYn0G7QaDLK0Hacq0XI0yXlY/sZkCsbJPe92c4Q/bJX/H2xUs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704135; c=relaxed/simple; bh=6QTTtZIOCJ8NQv9QmRENZ06EsAD2DOL669+fp4rUoSg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=K9S9qFYW2HYKZUM5y5gQyqRZGVpwwCBxdQj9yFtm6YGc6o/x3uGDgXzwUJJiaVDkMnEJDSKtdc7ebAc1c5k7KZOi61ClcLUIPW5n0KN/+53VnMjKPt4W29dVN/rI38upr9rb/VOEJRDQgoEIcjwY9lTbBFPe9cx2cOO6Hw3CglU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=W9D2GKil; arc=fail smtp.client-ip=40.107.243.60 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="W9D2GKil" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=alq5jOJIKvwzk1JiQR2nuB9zmV68cSrkaF7f1eCpRDRHftpbf9V/n9R8WCFGdM95+bE2kYQZ3uOf9oUyFqOEL/SceHIMgPTMgC1xAntXcWsNvN7p5IC7l7KMARufJBDNboNlwY3PPufm/SWM4QR6vmWIzolRwDURw9W0ZChBnZStJJVwQvRxeUGyU4G3tYIbvlit30j5uGtszVrioa1QNgDobH2OaYsdzptVHY9R9Ip+8ysFyAW/GBCto78FGny38wETCfu/U20Qh4DRWpWfTZNubEYmgz7Y5bu9ZEfsAB0Ow6pZx5jAidOY34N5ZkIepmAuuGpDbUl9wTEFEN2g1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mSXYlVIZ8N4FqmQHo+wqrNlTeh6OkDvG9eFryXZkW+U=; b=e9uaUYnJRM1WFsuRHBPWOteuScSK9EO7Da78M7830f4QGSST1M2FB4ciJnJli7BOgN0H9NzmP1u3mOW2KdWe3DcSWHhKn4oTKTfoh8w4ji0DnqNAF/P075iqB7hJ7nz6iCIqLe1OtE/I02T5CDml4Y0zx5iBBexhoI1rgZpokv/N0keNyhBu8B4Pv0ATJP6iDqtzy4BzAAX01yfyQOZzoqxjEDhsZ6ufOEoIGFBXlcIPenr6KpOIEuhYBb28qNbBP8BTimi+3EWN238387fVKgygfgt5lXEMmp7xsmBF4lHyPRime/THLvVhOZkVS6g4Av3tLi00uajxRazPFpkg6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mSXYlVIZ8N4FqmQHo+wqrNlTeh6OkDvG9eFryXZkW+U=; b=W9D2GKiltHUnlOcE4Pkitr4as/S9seoaUsijz7+oHzbllH2393jeu6z2NsD5hud9i3cLBbxjbBvj0PQWiXqKRMNCFlDnEd3UUvqOyuRsKmz+D1BmjfueVZoBe9XZVP1EHsxmrNwjja7XLaqpG3dWIye1BzkRbWRwdIKHR5+HYGo= Received: from BN0PR08CA0012.namprd08.prod.outlook.com (2603:10b6:408:142::34) by DM4PR12MB6231.namprd12.prod.outlook.com (2603:10b6:8:a6::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:08 +0000 Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com (2603:10b6:408:142:cafe::c6) by BN0PR08CA0012.outlook.office365.com (2603:10b6:408:142::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:08 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:07 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 05/16] x86/amd_nb: Simplify function 4 search Date: Wed, 23 Oct 2024 17:21:39 +0000 Message-ID: <20241023172150.659002-6-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|DM4PR12MB6231:EE_ X-MS-Office365-Filtering-Correlation-Id: 17fb5096-f0f6-4faa-062e-08dcf387394e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013|7416014; X-Microsoft-Antispam-Message-Info: rl8w/eQAC0op/gJb8H5jZPfoVbeN56k752V96pcK3X6S6qfZRX7/tDXB02ABlqh0qMiV0FGH2J/l+7AVWbyEX8o1l7obp0zJuWmPu7OgFNqrcQGD+huM/LpBx531nkkPAfjja6KYm9qQEk2G/KPQVewmkw83fgVdC7GO6diqtpn3pUovoqMFN5hym4sAYe6akESp8Y+p+j9Ho6lkMx9iUHQo8NQBUCsv79OGcP5Njz3f4vfU8peiZspclzen/CwD7mTxDD7iBgGL1UE8KjOS/eRKp0frt83SSk23etLAtlLzSk+R21C7fFkPpkJk4lHOMsXcVRAX2ERLgR9Li4N0do/zvpTfeiHh0eojgUCFli4ii2d96kgYsNodXVaUN8C0+2llF9oD0R0acKsrBePYpldHiav8zH5FmXbkEmupDKfIm4roS3YlKwYzis9CdehxC+mjzWl8wPLgAEFGQd9DIn13gmtEqhqJTFImKY5NY1yZpJpYroRevS40S1WE241eLxe5qu12v8c2O0rPLlBGBRkh+a/DacOGiHlgjz7vjfdJ4V/rXnyTClHGzmcmEClRTE2wBGvcKlXkyVOPQS8qXc7L1wsNtTfXP+a2javA6UKVlTE3rVu/191akNP0P/w63jo6+qleYVJDufC2qCnqZrVu5RaQdrTzRAVTaClejHwa2D+TvAPTdiwTq6Zboz0D6kqDGKgnI2OuxTXPds21ju54Vx41ctVVP3398zcnkig7Zm3oRiOHJZA5ZD3nt6b1z9ybwB5jYixogLkU+kCi/zwiO20UhnpdHNId2Ld1KFvY49dzmTxFVZz9izFSw5+1nKV/1AtzOtFLYu3CsDKeb4fUWB9KDQ/DRyzUimxE+JlWNHyNyyvSYvwCyNSYPWnA4DzNMODIGecNbLSNEotvolYAwurMHDN1puqcYQs9Ky7mVFfqO14V1rsEELZN+aaIkJLHHBuNFyu5puY7cLbrtjlJf3PUaJl5kxsUVK+vJEp0r1EjBAdOGAE5f1l1j1MPPEnWxFgcIjF1nyb+HTgj/WR30+1GENptHlYBxtJ9rTsPzTwWFSwGFEX8WShGtMnOnILL5Fqo09HDt6Y5bQR22x5n0RaKVs7Y+sOKu5OaTvgrj7eTVVagqNPsQl33al+VHpzQxRUuglQ9LwssqFqzAPOfO0s3VQb+1AakemA8SO+lg4PsMDY+bUYBBQdHE+sVnAl/uhI0jlX/nRT0wHWmwmkEuGfcZGyptAeh3G3MMEOOpxaCN62VSjmHz4xm9t83MzQeCpLrH6zHO3gmlCG+B1CUMigEctzGi/y6m9YlEXWTzL7qDZ3aDR2Lu4GDDct9ZdlVG+rCC/CvF+7a1HOAIo+GyemrdwRXcbAi33UjE2SeQc4D0HRQxlsoOU/wwhgsnzhwAfWiXwGfiKO0sTjoxQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:08.6692 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 17fb5096-f0f6-4faa-062e-08dcf387394e X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6231 Use the newly added helper function to look up a CPU/Node function to find "function 4" devices. This avoids the need to regularly add new PCI IDs for basic discovery. The unique PCI IDs are still useful in case of quirks or functional changes. And they should be used only in such a manner. Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_nb.h | 1 + arch/x86/kernel/amd_nb.c | 66 ++--------------------------------- 2 files changed, 4 insertions(+), 63 deletions(-) diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index b09c26a551eb..a0f2182107b0 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -4,6 +4,7 @@ #include #include +#include struct amd_nb_bus_dev_range { u8 bus; diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 65884d0613f8..34c06b25782d 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -30,26 +30,6 @@ #define PCI_DEVICE_ID_AMD_MI200_ROOT 0x14bb #define PCI_DEVICE_ID_AMD_MI300_ROOT 0x14f8 -#define PCI_DEVICE_ID_AMD_17H_DF_F4 0x1464 -#define PCI_DEVICE_ID_AMD_17H_M10H_DF_F4 0x15ec -#define PCI_DEVICE_ID_AMD_17H_M30H_DF_F4 0x1494 -#define PCI_DEVICE_ID_AMD_17H_M60H_DF_F4 0x144c -#define PCI_DEVICE_ID_AMD_17H_M70H_DF_F4 0x1444 -#define PCI_DEVICE_ID_AMD_17H_MA0H_DF_F4 0x1728 -#define PCI_DEVICE_ID_AMD_19H_DF_F4 0x1654 -#define PCI_DEVICE_ID_AMD_19H_M10H_DF_F4 0x14b1 -#define PCI_DEVICE_ID_AMD_19H_M40H_DF_F4 0x167d -#define PCI_DEVICE_ID_AMD_19H_M50H_DF_F4 0x166e -#define PCI_DEVICE_ID_AMD_19H_M60H_DF_F4 0x14e4 -#define PCI_DEVICE_ID_AMD_19H_M70H_DF_F4 0x14f4 -#define PCI_DEVICE_ID_AMD_19H_M78H_DF_F4 0x12fc -#define PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4 0x12c4 -#define PCI_DEVICE_ID_AMD_1AH_M20H_DF_F4 0x16fc -#define PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4 0x124c -#define PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4 0x12bc -#define PCI_DEVICE_ID_AMD_MI200_DF_F4 0x14d4 -#define PCI_DEVICE_ID_AMD_MI300_DF_F4 0x152c - /* Protect the PCI config register pairs used for SMN. */ static DEFINE_MUTEX(smn_mutex); @@ -73,8 +53,6 @@ static const struct pci_device_id amd_root_ids[] = { {} }; -#define PCI_DEVICE_ID_AMD_CNB17H_F4 0x1704 - static const struct pci_device_id amd_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) }, @@ -107,35 +85,6 @@ static const struct pci_device_id amd_nb_misc_ids[] = { {} }; -static const struct pci_device_id amd_nb_link_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M30H_NB_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M60H_NB_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M10H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M30H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M60H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M70H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_MA0H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M10H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M40H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M50H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M60H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F4) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_DF_F4) }, - {} -}; - static const struct pci_device_id hygon_root_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_ROOT) }, {} @@ -146,11 +95,6 @@ static const struct pci_device_id hygon_nb_misc_ids[] = { {} }; -static const struct pci_device_id hygon_nb_link_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_DF_F4) }, - {} -}; - const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[] __initconst = { { 0x00, 0x18, 0x20 }, { 0xff, 0x00, 0x20 }, @@ -275,13 +219,11 @@ int __must_check amd_smn_write(u16 node, u32 address, u32 value) } EXPORT_SYMBOL_GPL(amd_smn_write); - static int amd_cache_northbridges(void) { const struct pci_device_id *misc_ids = amd_nb_misc_ids; - const struct pci_device_id *link_ids = amd_nb_link_ids; const struct pci_device_id *root_ids = amd_root_ids; - struct pci_dev *root, *misc, *link; + struct pci_dev *root, *misc; struct amd_northbridge *nb; u16 roots_per_misc = 0; u16 misc_count = 0; @@ -294,7 +236,6 @@ static int amd_cache_northbridges(void) if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) { root_ids = hygon_root_ids; misc_ids = hygon_nb_misc_ids; - link_ids = hygon_nb_link_ids; } misc = NULL; @@ -328,14 +269,13 @@ static int amd_cache_northbridges(void) amd_northbridges.nb = nb; amd_northbridges.num = misc_count; - link = misc = root = NULL; + misc = root = NULL; for (i = 0; i < amd_northbridges.num; i++) { node_to_amd_nb(i)->root = root = next_northbridge(root, root_ids); node_to_amd_nb(i)->misc = misc = next_northbridge(misc, misc_ids); - node_to_amd_nb(i)->link = link = - next_northbridge(link, link_ids); + node_to_amd_nb(i)->link = amd_node_get_func(i, 4); /* * If there are more PCI root devices than data fabric/ From patchwork Wed Oct 23 17:21:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847667 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2070.outbound.protection.outlook.com [40.107.243.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D3121D14E1; Wed, 23 Oct 2024 17:22:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704136; cv=fail; b=nvHMWgt7nHQf/xBhQEYcH4Im7mflcO7xXe8kZMFPqBHkK882y+1Er9ql1dELeFku4qyF14Q561Axdv7Nc8aWxhb0xRG7IocgO5XdQd54MyCzKcpKQ0IUKQ7sKTZQjN2mP7Z+NVVfY437y5kvcnSFu6h82K6Mv1RuH6ANlZDOQJU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704136; c=relaxed/simple; bh=iY7cHi+gUHGRkHOVpA+0Nq/nE/11FeDTjEj5ElJTPyc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GxR8NS/ML9tQDSK6v+jeREw2LyRBVFaMAQfsoaVEJ0zdOg3jMGYgV1exJUagIGgUqTKG3fb5lM2TnzQFSEYTc7Z6nbQGIiYALDDhrOHywnb9m3GGZSRuJRt+LenkEt52bjc/HchnYgBpRIs16oCyhyNgLvy7ZNIfSKSU65WQ8w4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=MK8c6euo; arc=fail smtp.client-ip=40.107.243.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="MK8c6euo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AIon7eqVxxnV7MJ0Qx03m07CEteBCwd7owKACtl32htFsTUuZLn1rfnHAHtF0xkgFZjl8prGr+zoYve86aRsUHZKwZdRwwthfSvd3Fo2mbuOGnwUWDvfcuaimRBdlErxDc91m5GwqcnGjiqSUZ4Uu9GHrgMpcb88K/vviuOREKyFumKbsYbSv0SKNGM0xza6BwRQfus/HHTBeOcG37qc0U9ua9Zq2JbK2EakyWbMvYq9Dz63bMVMg4m8Je8ALV+3gic39U6gM3cpZRdLoBLwVmTU1fkB4u1ZZfmJ+NhAIqGe9S7An7apBQ2d7+6BUXVgMYbZH0AbwWsPc9eysXxyKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wpH3h8B4N35Ofklb0En1/r50952+zGplhK0cPH1ojKs=; b=fOB2u1PWjS+NF1QBXh1swbf/8zmLpQ9tV/ARr08wv5a8StEU/etVcikHnNt5U223VySQ0o6nFnJNRWjwg2qbfYpeJ9sY7lG+ZMgvCvl2biWxrPcXqFLo9T150QqGq4qgLOvnyonfVLBrSA9phYfvPiDGPwZai6K1MsvSwj/Bc+v21oN+Cr6bfL/aWo3vLf5iekFsVk5dp2Nnq9nyg8WltzQMlvZ/ASf9hDHRgGFH+nU679DodAfjl2JphP/Pjt3WJ84dZqGIV0sWyno9s9y45mMKx0rnMm18jxG16aQOSP7/TMjqN9WKEg39MU1FIZGzOA3tF/1fV5XVihnYfGzqPg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wpH3h8B4N35Ofklb0En1/r50952+zGplhK0cPH1ojKs=; b=MK8c6euoXhXkH6WRZnUMlVwu4lz+gE6tBs+txgYvDK9Ibal9V8yLdA1254g8D5oiCIzPqCV4x+0xtt0HJ4p6RG/jyUPNN5qSoCE98IAAJjV+HCKs4rCL8H7k0cIRklGoeelHQOU2wk918lAinEoYYxDwKltESc9GDX84AAIMWdM= Received: from BN9P222CA0009.NAMP222.PROD.OUTLOOK.COM (2603:10b6:408:10c::14) by PH8PR12MB7026.namprd12.prod.outlook.com (2603:10b6:510:1bd::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Wed, 23 Oct 2024 17:22:10 +0000 Received: from BL6PEPF0001AB4E.namprd04.prod.outlook.com (2603:10b6:408:10c:cafe::51) by BN9P222CA0009.outlook.office365.com (2603:10b6:408:10c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28 via Frontend Transport; Wed, 23 Oct 2024 17:22:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4E.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:09 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:08 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 06/16] x86/amd_nb: Simplify root device search Date: Wed, 23 Oct 2024 17:21:40 +0000 Message-ID: <20241023172150.659002-7-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4E:EE_|PH8PR12MB7026:EE_ X-MS-Office365-Filtering-Correlation-Id: 347fa5e8-fd30-4ec5-ca6e-08dcf38739d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|376014|7416014|82310400026; X-Microsoft-Antispam-Message-Info: /YOsmoURdp2yxgsz3YrQMDVyUfIgWq2xZ91glMqyPAtalS5+CPcp7OJ2v4xttvaN76MZgrS9BA5nJA2HQIe2+bzqY8ApAKZfplrKrKLDacR5DOtrn6uvXLS4bRf7638RR8+XwanvFosTgIuT1UrDVf16GEx4U6kNP5eUM0mYAenP1++bM1a6LcmacvkZt52vsUoOjJnayLJ6ojk4T1jOMaMAU5yrfI3na/Qf3rjVGFrRCwodmoItopj8Rr/1/I6jCPztRYQPHXpXYvkY/Sb6kro9J09v/qUhcsYBZzMOdjIdYw3/3jS2pNvig+o+6zlqWSgBKXpKQERCOgk2QsGDPsQ5wakJTRDARFjNo5MsTfrkD6UbDnj2OTyuNi6wML97gVPLsvKsjmFSv1Idpzm4iRfqnjbS2AvYAldDlBzwfGQQ/UrFI1/CvXi9dlcyitCIpU6AfaF36A4DIOAqyRVt/Z2pY3y3uaE/yAJsIt6WvPN5xCs5QpNpnFuQHdBECYApNG+/YTBqFH8mAbjUMyldogh2qLcBZpi4ECfJfpmmhkWS002P2AogrLx1lUAcbM1eQmJcsD4KTQx4Wha2PmQIV8BDtUUXzopxvgOYFBIYlxZyz5jWncHQN9gSakC+M+OXQrvaif2XeEbEIkPzkmlFCb0c2r9N9S7kdHvwD35om0CXUM4k9KtIDecGb8k0d3lLwJeBsk6h/72ent3coLud32knPJpA6xd5VDJW2MtYmQQj7DtLaZuX/RfvQDya9O0yv8Qk0iBQXrWMIJFXlXSvPTvZZBwxludYu3AEAwknG0YSs/CFa34Dez75HtnvvXcnRFa1W9t0ehJjxhTAuJYor4cxoPC+4v7oWl0rxDybq5DjTnAFuiYozGjnLo9TUr6Tp21gUECVxJiMHcLPiugVPyPR9t47920fvrWMyXxBjrtHjLyWKL49P4pW5wBFz1uliVXhq5wwPgVnvFeMZ4T1a25RAztJrYiVb058CZ+Up03906kAeq1I8tO95IQLjeX89lMQREfV5FX2litx4gZVpM87+Y+/gxQCJbh6p3xiQBGcDoaYn8cYF4vTjipzKCBT1ewTnpJPaZ0pyGNYU8DFsL+aQpP8p6vxuvqrNHEk2mj2pqH4tN4JAti93Fa+7tOI7PvY4BRmsr6uVcObyI2vsypzCC+pOPYpcWyo0bvHCxnmgyVmsIswyqfjEjSC+PS6S0I2m/Pl0zQv94gwj53Ade6rgWBA78e/IS+8yEjI71n2ReMEqHYB8S5HufqNj0IEzl0aaMdM7gazahbsrK7Dy25xfudTUQXW9MJ/DmLZo0iTp+DoL5TCn2a4cBRzKIV0sqhMtBnPbPb3gpAP9NJoWg2OLgtVak3iuSDeCgRAZCPhZnz7glUdOWme7aDWXMJ1sm6If4oyimzPdJvCCFoYAQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(376014)(7416014)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:09.5564 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 347fa5e8-fd30-4ec5-ca6e-08dcf38739d7 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4E.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7026 The "root" device search was introduced to support SMN access for Zen systems. This device represents a PCIe root complex. It is not the same as the "CPU/node" devices found at slots 0x18-0x1F. There may be multiple PCIe root complexes within an AMD node. Such is the case with server or HEDT systems, etc. Therefore it is not enough to assume "root <-> AMD node" is a 1-to-1 association. Currently, this is handled by skipping "extra" root complexes during the search. However, the hardware provides the PCI bus number of an AMD node's root device. Use the hardware info to get the root device's bus and drop the extra search code and PCI IDs. Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_node.h | 1 + arch/x86/kernel/amd_nb.c | 80 ++------------------------------- arch/x86/kernel/amd_node.c | 57 +++++++++++++++++++++++ 3 files changed, 62 insertions(+), 76 deletions(-) diff --git a/arch/x86/include/asm/amd_node.h b/arch/x86/include/asm/amd_node.h index 622bd3038eeb..3f097dd479f8 100644 --- a/arch/x86/include/asm/amd_node.h +++ b/arch/x86/include/asm/amd_node.h @@ -23,5 +23,6 @@ #define AMD_NODE0_PCI_SLOT 0x18 struct pci_dev *amd_node_get_func(u16 node, u8 func); +struct pci_dev *amd_node_get_root(u16 node); #endif /*_ASM_X86_AMD_NODE_H_*/ diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 34c06b25782d..135ecc0a0166 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -15,44 +15,11 @@ #include #include -#define PCI_DEVICE_ID_AMD_17H_ROOT 0x1450 -#define PCI_DEVICE_ID_AMD_17H_M10H_ROOT 0x15d0 -#define PCI_DEVICE_ID_AMD_17H_M30H_ROOT 0x1480 -#define PCI_DEVICE_ID_AMD_17H_M60H_ROOT 0x1630 -#define PCI_DEVICE_ID_AMD_17H_MA0H_ROOT 0x14b5 -#define PCI_DEVICE_ID_AMD_19H_M10H_ROOT 0x14a4 -#define PCI_DEVICE_ID_AMD_19H_M40H_ROOT 0x14b5 -#define PCI_DEVICE_ID_AMD_19H_M60H_ROOT 0x14d8 -#define PCI_DEVICE_ID_AMD_19H_M70H_ROOT 0x14e8 -#define PCI_DEVICE_ID_AMD_1AH_M00H_ROOT 0x153a -#define PCI_DEVICE_ID_AMD_1AH_M20H_ROOT 0x1507 -#define PCI_DEVICE_ID_AMD_1AH_M60H_ROOT 0x1122 -#define PCI_DEVICE_ID_AMD_MI200_ROOT 0x14bb -#define PCI_DEVICE_ID_AMD_MI300_ROOT 0x14f8 - /* Protect the PCI config register pairs used for SMN. */ static DEFINE_MUTEX(smn_mutex); static u32 *flush_words; -static const struct pci_device_id amd_root_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M10H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M30H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M60H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_MA0H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M10H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M40H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M60H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_ROOT) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_ROOT) }, - {} -}; - static const struct pci_device_id amd_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB_MISC) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_10H_NB_MISC) }, @@ -85,11 +52,6 @@ static const struct pci_device_id amd_nb_misc_ids[] = { {} }; -static const struct pci_device_id hygon_root_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_ROOT) }, - {} -}; - static const struct pci_device_id hygon_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_DF_F3) }, {} @@ -222,19 +184,15 @@ EXPORT_SYMBOL_GPL(amd_smn_write); static int amd_cache_northbridges(void) { const struct pci_device_id *misc_ids = amd_nb_misc_ids; - const struct pci_device_id *root_ids = amd_root_ids; - struct pci_dev *root, *misc; + struct pci_dev *misc; struct amd_northbridge *nb; - u16 roots_per_misc = 0; u16 misc_count = 0; - u16 root_count = 0; - u16 i, j; + u16 i; if (amd_northbridges.num) return 0; if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) { - root_ids = hygon_root_ids; misc_ids = hygon_nb_misc_ids; } @@ -245,23 +203,6 @@ static int amd_cache_northbridges(void) if (!misc_count) return -ENODEV; - root = NULL; - while ((root = next_northbridge(root, root_ids))) - root_count++; - - if (root_count) { - roots_per_misc = root_count / misc_count; - - /* - * There should be _exactly_ N roots for each DF/SMN - * interface. - */ - if (!roots_per_misc || (root_count % roots_per_misc)) { - pr_info("Unsupported AMD DF/PCI configuration found\n"); - return -ENODEV; - } - } - nb = kcalloc(misc_count, sizeof(struct amd_northbridge), GFP_KERNEL); if (!nb) return -ENOMEM; @@ -269,25 +210,12 @@ static int amd_cache_northbridges(void) amd_northbridges.nb = nb; amd_northbridges.num = misc_count; - misc = root = NULL; + misc = NULL; for (i = 0; i < amd_northbridges.num; i++) { - node_to_amd_nb(i)->root = root = - next_northbridge(root, root_ids); + node_to_amd_nb(i)->root = amd_node_get_root(i); node_to_amd_nb(i)->misc = misc = next_northbridge(misc, misc_ids); node_to_amd_nb(i)->link = amd_node_get_func(i, 4); - - /* - * If there are more PCI root devices than data fabric/ - * system management network interfaces, then the (N) - * PCI roots per DF/SMN interface are functionally the - * same (for DF/SMN access) and N-1 are redundant. N-1 - * PCI roots should be skipped per DF/SMN interface so - * the following DF/SMN interfaces get mapped to - * correct PCI roots. - */ - for (j = 1; j < roots_per_misc; j++) - root = next_northbridge(root, root_ids); } if (amd_gart_present()) diff --git a/arch/x86/kernel/amd_node.c b/arch/x86/kernel/amd_node.c index e825cd4426b9..3aaf7c81f0fa 100644 --- a/arch/x86/kernel/amd_node.c +++ b/arch/x86/kernel/amd_node.c @@ -32,3 +32,60 @@ struct pci_dev *amd_node_get_func(u16 node, u8 func) return pci_get_domain_bus_and_slot(0, 0, PCI_DEVFN(AMD_NODE0_PCI_SLOT + node, func)); } + +#define DF_BLK_INST_CNT 0x040 +#define DF_CFG_ADDR_CNTL_LEGACY 0x084 +#define DF_CFG_ADDR_CNTL_DF4 0xC04 + +#define DF_MAJOR_REVISION GENMASK(27, 24) + +static u16 get_cfg_addr_cntl_offset(struct pci_dev *df_f0) +{ + u32 reg; + + /* + * Revision fields added for DF4 and later. + * + * Major revision of '0' is found pre-DF4. Field is Read-as-Zero. + */ + if (pci_read_config_dword(df_f0, DF_BLK_INST_CNT, ®)) + return 0; + + if (reg & DF_MAJOR_REVISION) + return DF_CFG_ADDR_CNTL_DF4; + + return DF_CFG_ADDR_CNTL_LEGACY; +} + +struct pci_dev *amd_node_get_root(u16 node) +{ + struct pci_dev *df_f0 __free(pci_dev_put) = NULL; + struct pci_dev *root; + u16 cntl_off; + u8 bus; + + if (!boot_cpu_has(X86_FEATURE_ZEN)) + return NULL; + + /* + * D18F0xXXX [Config Address Control] (DF::CfgAddressCntl) + * Bits [7:0] (SecBusNum) holds the bus number of the root device for + * this Data Fabric instance. The segment, device, and function will be 0. + */ + df_f0 = amd_node_get_func(node, 0); + if (!df_f0) + return NULL; + + cntl_off = get_cfg_addr_cntl_offset(df_f0); + if (!cntl_off) + return NULL; + + if (pci_read_config_byte(df_f0, cntl_off, &bus)) + return NULL; + + /* Grab the pointer for the actual root device instance. */ + root = pci_get_domain_bus_and_slot(0, bus, 0); + + pci_dbg(root, "is root for AMD node %u\n", node); + return root; +} From patchwork Wed Oct 23 17:21:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847666 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2050.outbound.protection.outlook.com [40.107.95.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D98A1D14E9; Wed, 23 Oct 2024 17:22:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704136; cv=fail; b=hBRI8CdGOGwIkNl2b7O3NZxac+tDMMp7ItOly8D4nLjlRJ8vxDu9KBgCXapmniK6jo6zQA/EuQl7MQ3OFwqg7xBSGQsulftijf9WNrM2zJATVWz6AsdXnkIa/ocV9eZ/KMh47sr4G451JhKlBvELI5iVfbhr8kPv2InZygxVrjk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704136; c=relaxed/simple; bh=oOvDgsnPSp9BHfYzWnE8Z7yqQoRpaEJHAO1S5ZxnppQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uiJwxIUrRqzWDgJ89Uecoy3MiKG7okTctddDwEKYjAH1lChzTV+pWb2UkeSFrW+M/vy9p+7KGJxkBOb/Q4fP3jAc9ZRP3iYjw4L4jHoEmCTdFl6+1t5PxjM/JYR/E5BGe9LWTwcjnlAFShDdloEDbFAcojs2xnFviUc/LWQKjG4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=IgQPnZFh; arc=fail smtp.client-ip=40.107.95.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="IgQPnZFh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZFwI5qv2+lztKFtZBgQMAHDMRasCaKoi607/+/zbI/yjPRljdgW1X+PMGkWS/jHvMLo45qHGoCavOd4DDnK1+MGSdWgc2h4e6TExlzS7XHiTayA90g8lZC1pgVW27ybsCdd9d2F/HNK8548GAzZ2bQK2+wlWvLUxPtbSXCRhi0jbLilc/CRCM87CSGaNNpXeUxjQLLxNj/qY+yVbPU89vTzbCWhiTGkPKcwdZ0fXThl3NIvkERClSIf8FDaFo8kcJkRdfPXC4bE3ds69ChYpJ2SJkrlfqCIYajcmMsYn+ddtPDT0r9QYhZonYKHmyOAZB2cQdjf1PHLfBPLwIf3pEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LPKe+fsjIdF+7L4mh8jZgDY7am1DoKYhNkgOoOAIE38=; b=EdG6x9KcOWvzp0+vPxsO3yP2JGzCRMJ3/kXhD+poMVT1oQrU2kUAvU4kSHb0xYkjaybHn61kNI9Moa/i5gla+0gk3AshAXR2jdzkHW8SveH3uKznEqFmky6q//UaLcl95kowvkjg8e5ZAOHLhh95dGivyNhJfAdQLIX7SXgD0UpC0w0bIB+SJfrccB8b4uYOVEovhMjVAvsCzlUSsCgmvPOHnhbOVhioC+2ALpO0ufWMiwEeYa2mTFfmcxEr11grIcf7hBDSTQtEHoeqI2bQ+fL1hc6WTvHtz15lO9FoOPJFOAUuguBXpSb1+AyH9zRJ6sLb5BLXpKJ/ya5psrXFCw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LPKe+fsjIdF+7L4mh8jZgDY7am1DoKYhNkgOoOAIE38=; b=IgQPnZFhs3gLH9NC7Jq9LtWJlrj251QSZjuRlc35hm2MRoJq0iOOgD0hgU7cqNEDBo6yctr76ULbRDIqYfdgxMTICtVZ8LeKu6jxv43iMhXUd6r1VPHnqqNJ7QET2sugqAAsT7U9sk6ZxGN3kWgDsQtA8Ke31yVbk69VTGL3saw= Received: from BN9P222CA0014.NAMP222.PROD.OUTLOOK.COM (2603:10b6:408:10c::19) by PH0PR12MB8031.namprd12.prod.outlook.com (2603:10b6:510:28e::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:10 +0000 Received: from BL6PEPF0001AB4E.namprd04.prod.outlook.com (2603:10b6:408:10c:cafe::fc) by BN9P222CA0014.outlook.office365.com (2603:10b6:408:10c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4E.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:10 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:09 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 07/16] x86/amd_nb: Use topology info to get AMD node count Date: Wed, 23 Oct 2024 17:21:41 +0000 Message-ID: <20241023172150.659002-8-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4E:EE_|PH0PR12MB8031:EE_ X-MS-Office365-Filtering-Correlation-Id: af659f68-5af2-499a-d76b-08dcf3873a66 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013|7416014; X-Microsoft-Antispam-Message-Info: QtImICO3DlDXlxWk2vFIc3CQa3DJs9Y6SwdSslJnIqqVQDqdOJ2evmIQNjhlNybIeesPb7/hqD3J9Jm8gzedSz97LWlpCbxUc3o7nxT4IMLZeGGSBFwiWcKwLSGrAgKyU0Lt7sHSnRu3x/8Me+Gp0qDvD+OaBoKa3BwYKKfEa3t03AJtgctrUWFKeK/lztY6qM5hm01sqc7TTc+CM+5mJ2eYtXCE15M408fUv+HAyCT4ap62HZrxgNCJ6FlXUx4EElhSJuxqoI3xzqd65QyDAfQ8f//3rQ1te233H6AsCu3M3ocJKyr/ulFo52uL++yS7+dH0ntykbkgEBfLH+nuRWWXRKRvTuFGBmunJ68KzACjFhi9f6Zf8kkSc7XzI4hxQywzXixpyhYsVy3qL1sQcen/O+PMptyUIwg5gzzS1D21f5FDB9ftB6gJq0J4gfxTMLzHiErOEVx682kVnv9GmsbRypzU897M5+qNJNw3ij3cTAla49JlTx0vS1xsAulWzuyktvOql9+yXzftoDAZmpoqp6IQI7ObhMHqZBONVvURAmtG0HQ9jiOgM7ticWb7CYg3HdebMzj49r6OFqCyKducjnkz0oNnU79fWXsgjOBKGRRXY1wGAJZbjIZ5UdMnJfjP99y5xpY5Cx4DJs12+Th1ReGuNVGffOiwvwcWq8cl2mU3XtMqlULcbx6CygXeHnzXD4Fi8VNhs7KlivWf/5uS+VIVHc/wvVLo5KgGNJX7J13Pmjv3EOkOHQ55ZIvqYGb9H4o0v3vc8T1GwKRfVTlJHE0kks9b7+UlRKUBjRXAEpx1je7Xz55IGCP+H+yb31D3Mol0v8ubuVX5AleCaCoiygT1TKDgWFDCVIbx/R3qrFWoopQS62VPmghuu9cnv6S+T/ts7RB1EtXwBWiiBUwg6Tb25ZEDL094i5EXweWo5S1oSNT4PiZb7EU9/c6Sef4bcOEvhUOmlqLqVVJtv5vqLEManhTEDgiFVF+gv8gV56QONl548/wvAlcN/WLwsXQ//7ujHyzh0imGqTxFTi+H5F4mkLJ8SZH2IkXJgOsWCTL5I8GxpCwdv1ZrBIdbKnJOseapaxI+FLfbIxN0yQaXt/99y3eb7FSQGpQDn64Dt5e5bbmZclakVsMZU38F7XnuKBfv4bQtE556pmHGSqo4D5TOsoTqsiv8mUDrd4WVWNUcCMzeONRyzZfKttOGeaBdumbUIEzJaCoLKkSDmJPTdgHIOQx8y76bOB7x8Ur75utgF7l5P4AXDqaEZP4G4uikkvWbCc9dqc0uMkDBoQnlg72he5IFV7oRFGN2+qBfRPUceDAetIRMy1bGFeMOL1sPzUpwqUY5iPR0sI3YyXnCbHMvUJkngAPkbJOfaORBr96g2GORQwzbKvreioAO00jfCpdqx4g0qL8vEcwBfA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:10.4783 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: af659f68-5af2-499a-d76b-08dcf3873a66 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4E.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8031 Currently, the total AMD node count is determined by searching and counting CPU/node devices using PCI IDs. However, AMD node information is already available through topology CPUID/MSRs. The recent topology rework has made this info easier to access. Replace the node counting code with a simple product of topology info. Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_node.h | 5 +++++ arch/x86/kernel/amd_nb.c | 11 ++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/amd_node.h b/arch/x86/include/asm/amd_node.h index 3f097dd479f8..419a0ad13ef2 100644 --- a/arch/x86/include/asm/amd_node.h +++ b/arch/x86/include/asm/amd_node.h @@ -25,4 +25,9 @@ struct pci_dev *amd_node_get_func(u16 node, u8 func); struct pci_dev *amd_node_get_root(u16 node); +static inline u16 amd_num_nodes(void) +{ + return topology_amd_nodes_per_pkg() * topology_max_packages(); +} + #endif /*_ASM_X86_AMD_NODE_H_*/ diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 135ecc0a0166..7ccd769f9c5e 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -186,7 +186,6 @@ static int amd_cache_northbridges(void) const struct pci_device_id *misc_ids = amd_nb_misc_ids; struct pci_dev *misc; struct amd_northbridge *nb; - u16 misc_count = 0; u16 i; if (amd_northbridges.num) @@ -196,19 +195,13 @@ static int amd_cache_northbridges(void) misc_ids = hygon_nb_misc_ids; } - misc = NULL; - while ((misc = next_northbridge(misc, misc_ids))) - misc_count++; - - if (!misc_count) - return -ENODEV; + amd_northbridges.num = amd_num_nodes(); - nb = kcalloc(misc_count, sizeof(struct amd_northbridge), GFP_KERNEL); + nb = kcalloc(amd_northbridges.num, sizeof(struct amd_northbridge), GFP_KERNEL); if (!nb) return -ENOMEM; amd_northbridges.nb = nb; - amd_northbridges.num = misc_count; misc = NULL; for (i = 0; i < amd_northbridges.num; i++) { From patchwork Wed Oct 23 17:21:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847668 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2084.outbound.protection.outlook.com [40.107.93.84]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A6AC1D9A62; Wed, 23 Oct 2024 17:22:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.84 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704139; cv=fail; b=ny+e2PZljYERXUXQK4nvRk4eRn9kAT8TJnlEahi3CQrqVHGYVarb1ammn+QQMbCx3Jr+/kQhbHXCcDl1iHgS2xDBqzUG0oYCLMWPS8UNCablB+UIHKNa3FwHEyLC/Dd0Vhn+gNcWF28exgzhKYzQTVqZxP8owfTs9pyDDf/lhwg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704139; c=relaxed/simple; bh=9jYQ3+paKfNFcYwOiD7jslDldtQphgVdqBxOj7HxMpk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=EoGVO0L3eixgtCzdW0jpGwGzcsgxqgTLXIfKaIwnJvob45x/lVLRb3mvBdR9IruHe4BNeqTQrExeUKU4IRNx5boG8hUc1O6z0q+xqZIfLgJ1sx2L3jpTL2w70bBC1vJlU5MyPSE+3VJwfVl5FOojbMArXAh4bxg9UZP/mu3QM48= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=nDs8IxF4; arc=fail smtp.client-ip=40.107.93.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="nDs8IxF4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ARsSGys/mhSs0CJcvNQBUG5Z2k0WFoDJpArk0BD3q3vwT2uFx275b8mjCnaZA26F5S2oQw+yYO6hawFdyqkSgbCcpcqzfz08S0r3NMkIW0QSlI8De2TwBzsXZiZJV59UVpetQy444vhEpaGi7uaciXwsoBP6HOuqwoIWc3krqF70vrTJxxdGABwaBMdHDusp7qp5KESkoyy0wW9GAuY/4dpA6iOfiJ6zyvCiGLuWszsNOEZpaZ4ieYdV9BPOqEG+8o6Gli80uh96ogNqauJj6ILbd+8OQq9yPsVSFF5AI11gHFmOkBk0ewFTt/ZKmT0SMNdu6PsQwzSWdIe/FEiftw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WMqgRIYFrt3pq3n3UVV0NA0edvPQ0s0H/wUFqGpLU4Y=; b=ArUx6UBPUaQvcSzbWnATkA9T4gFKNWu0zg2BSVOBmfLdMNRnf6Vmedo4gpJo1p3Db/+dRP6X+bDQ7S0fpLZZ7mus4RFZ91GwUwYl3/IEy50+ToniYFySWkAeieSfdLpnQQWa1FehpgDEdH2qq2HQMcmST46Zf7O1k7psSUGQbmGJEopd+OMKcsJawWBn2lNt2g773xUqw7DqYeapE3uWxwafN9evOZ3gbehJ4MfjBkbT0z6CdK2D+ubIk41siqGItjvuCHs3d5KhzpEAU2BBnrj3SaCQkQJJFGhxdH8CtP9csP8P/ke5fYqw7qkZyfBlOgnPISPP8csWl372ZGKQ9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WMqgRIYFrt3pq3n3UVV0NA0edvPQ0s0H/wUFqGpLU4Y=; b=nDs8IxF4kooaoPFqlKfO67JmRv3n9XgUI0KlFS9d5W5BWcaPyoIz1Unbif3o2kzPCaW8PUkkC2cCxHq3JyVSYT2cP6KJoSNsJiq8qXO4agKkOECNUH3H19x27FeRYP0on5kJjsTKTIvv5I13lXW0iv2ZkgSy5MFVLYMgO0hASHE= Received: from MN2PR01CA0040.prod.exchangelabs.com (2603:10b6:208:23f::9) by DS0PR12MB8218.namprd12.prod.outlook.com (2603:10b6:8:f2::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Wed, 23 Oct 2024 17:22:12 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::f7) by MN2PR01CA0040.outlook.office365.com (2603:10b6:208:23f::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend Transport; Wed, 23 Oct 2024 17:22:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:12 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:10 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 08/16] x86/amd_nb: Simplify function 3 search Date: Wed, 23 Oct 2024 17:21:42 +0000 Message-ID: <20241023172150.659002-9-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|DS0PR12MB8218:EE_ X-MS-Office365-Filtering-Correlation-Id: 62e098eb-a350-4931-5bad-08dcf3873b56 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013; X-Microsoft-Antispam-Message-Info: qsYDOtUxjloBvOjgkwAHaetOfdMI6fCXuh7rDEn2AEPsA24kIvFFomB7tNIbdO5ftFRmDDZJMPtehkPaanesQ7Xq+e8gx9mCKitXCaJXeHQDEEXGKvxqEooGKUg4IACyHATfaMc6T/P/GnfgrRgBghQhBM8H/nhw/luHfuhpuNKx3y6K+RSXi46Y36PA+KyKiyzeiEpnfK1J31/av0OtobYX0cFxbxoWvNwqWuLQvrILqRv/+mUoiv6rTRhBwoaDljpuepqloQCBrYQ5k5P1oNttY+IYMv37GP1G2ZcgvBC7Rlv9NVEfMsFGuat28PLtcvm31DbTcfdzhaMNWuVdUCDkoyPqlv+JJmC4FLV6sg5qzGwoDoZgj42v19R1I84NedSWxh9cEiGR1gnCVhKzK+ixsssbSlbRvSeuBg3PekiNB+cmx3Fc6Q8z1MhxzzB6sb5ZE/UDFKRorBLS59VYkUxXL8JGcpR7BWEHHlnjQkCLPR9wW9cAFnNqIjXVGpwgIaP2ebk4YxPD6zL2mxYcwSNWdiHDWwS8ZGryVWI3M5S2ADDSsGjYBHeZl58Jj/7suzSfBohbS31OSl7Hm5pTVc8t8rT815akesJr/igC7CMBugaDEOTSsDnn1rsXCfYJtaeD3pREZKMzaDZqJZhbg/4d0o4sc6qA1fpT/x7fCUi9crt31hpsVog0qqICMWxuwN8AL323WF9Lr7QV0qaMUU0oTlnzdVj9EcsQVHF+nu4M4GdMAcQU0SOuLDrGPrjbkegfvzUUbCwZwP1EOFO0aB66I2QpkQOdPQCeq9qA46reQ2JEdJ5UXMgchrINceHNwdZBkU71jIvNI8Vssxx5BisE13BDOn3YmgNbbnRPNhRC8qWMZh2v6JqBOyrjmWqlZJPzyWIQM6Fvx3OTtMOTBf3IZn7g4GmU/pQxSLXrXPGwOI/VrxoDa4xYZ0aPlWlBTEgNrnuGdbj2ixJ4zb92OupD431pqKCZLYQOIICJeQj96p+ttYM0koK++b5tGRcW6eCXTiTan2QgXcgIHyJ2UFQZVNWftTLXeVwlf0/M6wd8XmNzqDK8i/DlALsj0NuR6gshLEkS/sNUxsnxa2SEizaoTyv2klYyx9RGMZhRlaeDjcDsMz+MTvuGB2JkV8hr2XIGGSWC5zBxhhpXNuBeXSd3unhYPNPY78zvfRKhNZ/CkdmHh+fSODlY0BNnYNTx2e+WaMGpJjbzENk0/nyiWHdydr8b7gTXJFHcIV87TlgqszQK6oYwwrZgUCfIpT86XIRNFMc+O1BmyBKUhYB3CNtrI2+34NudiPLW7PtkN3Mhc0HPUlAclU0aFsc6nlIrD1WTYge6fgBwA8RZ+vJELe6u5hkFiRazHyYn0CSgH+/ZA0zw/kaa0PXcd9ry3YAXCMHfk7kGRYhj4/hq2kFNQA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:12.0792 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 62e098eb-a350-4931-5bad-08dcf3873b56 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8218 Use the newly introduced helper function to look up "function 3". Drop unused PCI IDs and code. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_nb.c | 46 +--------------------------------------- 1 file changed, 1 insertion(+), 45 deletions(-) diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 7ccd769f9c5e..9b159f9b4a11 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -29,31 +29,6 @@ static const struct pci_device_id amd_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M60H_NB_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_NB_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_16H_M30H_NB_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M10H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M30H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M60H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_MA0H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CNB17H_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_17H_M70H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M10H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M40H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M50H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M60H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F3) }, - { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_DF_F3) }, - {} -}; - -static const struct pci_device_id hygon_nb_misc_ids[] = { - { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_DF_F3) }, {} }; @@ -84,17 +59,6 @@ struct amd_northbridge *node_to_amd_nb(int node) } EXPORT_SYMBOL_GPL(node_to_amd_nb); -static struct pci_dev *next_northbridge(struct pci_dev *dev, - const struct pci_device_id *ids) -{ - do { - dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev); - if (!dev) - break; - } while (!pci_match_id(ids, dev)); - return dev; -} - /* * SMN accesses may fail in ways that are difficult to detect here in the called * functions amd_smn_read() and amd_smn_write(). Therefore, callers must do @@ -183,18 +147,12 @@ EXPORT_SYMBOL_GPL(amd_smn_write); static int amd_cache_northbridges(void) { - const struct pci_device_id *misc_ids = amd_nb_misc_ids; - struct pci_dev *misc; struct amd_northbridge *nb; u16 i; if (amd_northbridges.num) return 0; - if (boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) { - misc_ids = hygon_nb_misc_ids; - } - amd_northbridges.num = amd_num_nodes(); nb = kcalloc(amd_northbridges.num, sizeof(struct amd_northbridge), GFP_KERNEL); @@ -203,11 +161,9 @@ static int amd_cache_northbridges(void) amd_northbridges.nb = nb; - misc = NULL; for (i = 0; i < amd_northbridges.num; i++) { node_to_amd_nb(i)->root = amd_node_get_root(i); - node_to_amd_nb(i)->misc = misc = - next_northbridge(misc, misc_ids); + node_to_amd_nb(i)->misc = amd_node_get_func(i, 3); node_to_amd_nb(i)->link = amd_node_get_func(i, 4); } From patchwork Wed Oct 23 17:21:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847723 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2041.outbound.protection.outlook.com [40.107.243.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04B0D1D90CC; Wed, 23 Oct 2024 17:22:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704140; cv=fail; b=fqEcjPZNwNaiAxJAppvpExwmgkhdamzKqjuevk0PXimy5yukydMLeeRJz+xsj3F+R+2OmxZRvD29aUd/Ajx2ILSVeZBVychJMGMcp5WtWyTryUBdvjI9SWORCC4bw3cy+LSBb+D8DjwZ0TS02rlz3/6iWKzkNrbrNUWrGAkbHCA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704140; c=relaxed/simple; bh=vxnUz39tXhaSF/+EKlfjD3GLnCvo3efmW5433yX4jjc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=olbMEOtNqpFXJekWxrkFxZ2DkIw2FdTo9YvY+TC2ipa3smI6SzEsI8Yyeh6ox3PxG0MqGcp7R9cMMeyI2VDDi4fIAvpX1dGaXEqYGl0lYgNcUw7Q0vWrp7KiqKz23XXw4+kCVZ0AW5gT+hsrmHFd+ihzuFIFFCrzG8ByNRKdvkI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=V/oErfdo; arc=fail smtp.client-ip=40.107.243.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="V/oErfdo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SwEgzUTVNtLVUZ4/vPmAXbBdp0PGyGGpWH0phAXHiSiR3Ax+OxQrCYa1i/WhpyKUS/MseSVc5NMB2mUEFxIVCqx76lB0mayXKx4U+Uy0lLeBp27+B8TwWUqahOdXigkvpjPwYcQQbrYqErwsA3cDqvZuZC53LUYQW2CtRuQATycj5PLF30/HaxxKlypvZV9WFWlP1p5sO7FfjOnXyV1yLkPooSDEf4EBEcJEvvK9fgB1UwjnRcqdwpBZLiTN/VV/yvTmgelxZEv+cu997CYN4KBVUzQxFJ8CRcvPu8gBJlvfNV9GvllIFQ56SswFTQs0WICOldQoT41td+wFdpyekg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=B2qEhf+sZ74FtAnmvgJtWbCI+nEt79U6lU9mDvTbpkM=; b=ibMmTc+Ix7XPPDzOeOLpEVuagbCZd9eDOjmQHjsDe3ihxedyfmMKjYIxNNhEbfPZa3inDxPsU6ylcqp71BTXeyxn60liBfBaUlMoZbCeCtanvf2irJvPiTCSc4SXLuKearRpdxtq5pU9w4AfuUyWGhKafJkug6Al1Jyc4Tv73T0gjPKMW+qTspjNSQYOTNx92o8mDeak1D01PYvisc/x+s8m5V1ntujmHpvFgSbiUHXme4rEgwMYZSayew55+Ge8cbvTUK251dolQsYRTZFuU/sPaJapikxbqcSDfnr4mQRaH15d8oh46AAI50YZf8XtUHh3b6Y/c/Oh3qk1o9iBJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B2qEhf+sZ74FtAnmvgJtWbCI+nEt79U6lU9mDvTbpkM=; b=V/oErfdo5vshbdH9hZJaQmu2s/QTxMvKrKUyDhrlwmI+zYvtCaNhmszEL+o8GKSDE6vZvS9oHn+MHJl599mxMwoUJvV/+TaHwrdQiNgGIkARDbkTmkmmLVQWaU8XTisu6TOxDb3qVswP5jmRLZxlaEsUToJg8RDigAB8Z/rDis8= Received: from MN2PR01CA0059.prod.exchangelabs.com (2603:10b6:208:23f::28) by PH7PR12MB5997.namprd12.prod.outlook.com (2603:10b6:510:1d9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:13 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::a9) by MN2PR01CA0059.outlook.office365.com (2603:10b6:208:23f::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20 via Frontend Transport; Wed, 23 Oct 2024 17:22:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:12 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:11 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 09/16] x86/amd_nb, x86/amd_node: Simplify amd_pci_dev_to_node_id() Date: Wed, 23 Oct 2024 17:21:43 +0000 Message-ID: <20241023172150.659002-10-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|PH7PR12MB5997:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e6bd5cc-3abb-4839-b88d-08dcf3873bd4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013|7416014; X-Microsoft-Antispam-Message-Info: d54rLhiJG3GNDVzTDr2vGFWUw0JZYysE9c4Iw980GCpGCllqC2NdgQll27CtrLSNWl+/lx8WTDElcnfp5VR5Q135/x6hYhHYAHRDWCn9hz3/E6KsD4R6WBKouZRa0p/pAon4kPt56U/XaWQzYWkvEyW0iLqkXiq04scfaK6wNVbyUpZpmO8PnIA2OOTq3KtRZaRE+66lIPZ4hk6oyAhBhyvNeW5tdfkjIMTmWMx51U64Abds3TlbkSj6wHYfjbnR0CXdxpW9Nj3piWXzRolIwJIVdu6wTyOnWumIPQpdHZ4WZuRkpTR8lDB62u/WC7gg4W8A/pjFQEIN0tLymGK/ww6fopP+pLo6nKL+EPhRI8HJ4AfbVhyOY7W6IYPsNx9otsetVi1vjhpbgcxnIeFFUFnfzu6ujxLDb2Y5Y//tMkxN7BNmB8Dolt1pxXXT22ca+ZJwBYDUY+ys8GVY94lXjiKXQv2EEPCgRxBii3uFfZ/HzXzu/rkJm5xLFdA68R/n1S089jjECfVAdIhCDHxt0hIa/ZYkNReLx3Tqj/rNMDr3C4UyN5MHViG3W2RwHEwqb1JcYIOVwKwRumtsLAL6ddViQac7Dp5v8EWLkoU1I0DiraUB+P25ckS9so2m3Sc/9dVmtD75zsiCC6ZuGPx4erZWdoK8yHBApw1yGaFVuDcQ3FFFB0Cgihtr87B3mT6QiubboeoOJGx3kNUS4todF7yF5ZSLU5sEMBhrXktHKFp9wTD45JyqYSEcfnMwhrlSu1DPotCrnPJfjLn15YLJ2jAZXt3EtTV22DR2L4N8ti+PKBkurmwPyC37iU37WSU1pp7RFA7Rhc91+0b82egTf6BBlp/1POqGrazurugNdRAAwLsn+G5+t9Oj/yqjZR/d4pGSlkQYxLRsA+OfEGGVTz7X250b8fTCRbboKLQ07CB1hU7hc0Ejz4odeqkPaRydHtZCxWwr6XvzPxb9Rh2QDMhT73qkzzKu7INO5QcdYcBou+vFh787EjO4e1TMYcZrlEF3zGgqfsj9DZp1uZa9T1s5DhroKVszLrsor1vTlj3LsVNE2URvrh6nHT/zcmXD8PudD6oGf6HPehVgFNxVmFzOon+3lnlzxlpUQ4ltrd+0rxm8c2+8wEBVTk3qIzb5RDtfdaCI7tGBdhGF8k+6rpDQhmiTW8hoGs/mALPphbVABaWwqgg7t8zIW4i3prNUNZnqhJxXOWvp9v0q+V0zlwQerg0pn0b4Ooh6XcpGlh/psJOCCYrgWZn7OAiiWWFpDSVmnOCUVdaD6JB4uPIgbDVLyxoYmkbc9qtB4w/sYwe1hyEzZqDNoIEl1A1qiLb8A0IzKhpgiVfT/Js5Z28kvQziXc6S9/5Rlc6gzXwolgE+otkEeOlJf468rKWpxk1yNy8VJEn7/dKYwfMjjUwSPQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:12.7667 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4e6bd5cc-3abb-4839-b88d-08dcf3873bd4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5997 From: Mario Limonciello amd_pci_dev_to_node_id() tries to find the AMD node ID of a device by searching and counting devices. The AMD node ID of an AMD node device is simply its slot number minus the AMD node 0 slot number. Simplify this function and move it to amd_node.h. [Yazen: Update commit message and simplify function] Signed-off-by: Mario Limonciello Co-developed-by: Yazen Ghannam Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_nb.h | 17 ----------------- arch/x86/include/asm/amd_node.h | 6 ++++++ 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index a0f2182107b0..b3b42e585655 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -52,23 +52,6 @@ u16 amd_nb_num(void); bool amd_nb_has_feature(unsigned int feature); struct amd_northbridge *node_to_amd_nb(int node); -static inline u16 amd_pci_dev_to_node_id(struct pci_dev *pdev) -{ - struct pci_dev *misc; - int i; - - for (i = 0; i != amd_nb_num(); i++) { - misc = node_to_amd_nb(i)->misc; - - if (pci_domain_nr(misc->bus) == pci_domain_nr(pdev->bus) && - PCI_SLOT(misc->devfn) == PCI_SLOT(pdev->devfn)) - return i; - } - - WARN(1, "Unable to find AMD Northbridge id for %s\n", pci_name(pdev)); - return 0; -} - static inline bool amd_gart_present(void) { if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD) diff --git a/arch/x86/include/asm/amd_node.h b/arch/x86/include/asm/amd_node.h index 419a0ad13ef2..8e473a293706 100644 --- a/arch/x86/include/asm/amd_node.h +++ b/arch/x86/include/asm/amd_node.h @@ -30,4 +30,10 @@ static inline u16 amd_num_nodes(void) return topology_amd_nodes_per_pkg() * topology_max_packages(); } +/* Caller must ensure the input is an AMD node device. */ +static inline u16 amd_pci_dev_to_node_id(struct pci_dev *pdev) +{ + return PCI_SLOT(pdev->devfn) - AMD_NODE0_PCI_SLOT; +} + #endif /*_ASM_X86_AMD_NODE_H_*/ From patchwork Wed Oct 23 17:21:44 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847725 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2078.outbound.protection.outlook.com [40.107.94.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EB071CF7BE; Wed, 23 Oct 2024 17:22:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704143; cv=fail; b=JrnhsUiCOTK2yLGVZfgnXso3Wr9O/aDgL8NVzWA32Weaj0ralZXtG9Mqt3L/NJ78OPGL2EBq5/g7gIf2kH/BIJ7Ps+h2L9pVp4RYFOiaHw2U7E/nyFTkY+OKbHykhWCLD3wAgPux2ixRAM4lYws/a6PB70tQdHGDK2Q/q3Jd2ts= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704143; c=relaxed/simple; bh=ejqGFVWCdR5vFAogkde7qqRYPcVQXsKuH14d63l3sGQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MXKMveE91BQIo00TAxrHsIXpkvLwkuRTXaWP/yZM+w0cP5BQU0zssHnwnfvx1INBO8pSiijGCQTfVMTOgziMKWQElM1gwE/OVz9BX0/gYCoWLT7lt9JqIAXu6ownPLoHbl1ekiCJEijNdw9ZckIsvOou5DrSlJZUbAbS3OLfAos= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=DlpsPd5z; arc=fail smtp.client-ip=40.107.94.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="DlpsPd5z" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Bit7OCp9LCi9q2N9xK+ZVOB3sy0Q5/pIwAMjyPqt0jmdnJytaKkjgSARtVnmzQ+RXyQL0UUzGNiiiaSb9a/sEtwFOe5qFtj0xYn9WFAnZPhwPYgFbk0BRmgTNjx6AUlfQIhgO1rDCIsgTENaxpBixgwyEUT0GfwCSjGM+kmiwJbtGxePlnuqQbMHnNrDN4qC3FrDA7JIMnnPe8lEQGdC5Kr1pFsmf+OpTfjhcK9JpNiGOiHWbW1J3Oh7BTHSctmRrNunccnTOkpiXS8ChMn+SkZSYcLDVRl5ZMjro6rEtmbFLrbhowYp3ZFqUe4DVgoneJUIXTMtXFDyWjWf1iapwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G1srBZhc+V+/h0D+FUFgjTXtsErvhUvkVjamX3rCZ9s=; b=AUGrIyitk1/M/Tgg8FycjdURp+fW6S2VPTPQL76OFyK0BAitw7wZR9Rmx7sxdMMhPlsHufA1FNEr09Ps4xXcVnAVjY51RNiHQvnN5sr05tYSzB276D0ZSQRBZ0N6yUDjzR9NeWZZluLNOUdcJwZPtelTc/Cjgmv7BvMXD4S7yYeIl4j7JUgqdvJMWk85i5P7tjZ/1ydY/PY/g9Icg5t7JkCSdFc9cuu9KS9uJbhKVlzalmJXMK/Bj1k6Cvr2B7X/evWNnoQYh9cilBHyCwSnCilrqBZesj7MiksXwe9y4GkpqkE9jr+T63d+awrDS7HCRmhjHTB8Q++a5+t7KQ4zRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=G1srBZhc+V+/h0D+FUFgjTXtsErvhUvkVjamX3rCZ9s=; b=DlpsPd5zFgHkgq66OQhjbMOVSliQmP6IQtldoQyJ1pI55DfVLi8FezD+MraoaWPdHDido5LkSuWXTAdcVFKO5gcw3WANprbv1p3CvfJoiJr8RZE2vmpkuaCYK+d7zFX198T411nBHhrEa7f9eOTlAVQOMxfZW66XEvEzSKN3LDE= Received: from MN2PR01CA0062.prod.exchangelabs.com (2603:10b6:208:23f::31) by BY5PR12MB4274.namprd12.prod.outlook.com (2603:10b6:a03:206::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.19; Wed, 23 Oct 2024 17:22:17 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::28) by MN2PR01CA0062.outlook.office365.com (2603:10b6:208:23f::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend Transport; Wed, 23 Oct 2024 17:22:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:13 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:11 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 10/16] x86/amd_nb: Move SMN access code to a new amd_smn driver Date: Wed, 23 Oct 2024 17:21:44 +0000 Message-ID: <20241023172150.659002-11-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|BY5PR12MB4274:EE_ X-MS-Office365-Filtering-Correlation-Id: fcaaa0b0-667c-4993-edb5-08dcf3873c4b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|7416014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: Mu5Fp8SmEprVdX3VJ71bz4HRBYwoiEL54nDwH2rOlhjNk3rGv0k3GUoxHXtebFGsCEsFf3fwa2gJIl8Rxsfa5UrdgZjr3Q3Y/TV4ZAvZjG0PcRboo4qXQFTaoRk2C8hL7+hg4Fb0DSOjnLCzQREuwgE4BWH51+eGMHvYAjhp1qZjaiPyP3KK4WnNViwXTaVrs9hEPc8Xne5k3D/wyHAgaD+ORRI1HPudKyxrGYCK/s+AXOaq81wq3E1thnkKGd/akHmpAYHWP4f9scdmhwqrWgYCDELAduDmCDX6kz4btCvW3T0DfxxengDsGaC2yZZ7hb2EKN82wFriNYCstdHmkJmZzLYZ102+xHBoouTEJtblDB32Fy4ZyCfIyKVH6LJjAIMv5k6VzFKxXmcqJypLjeT0/Yw0jstHWk2gt8Zl4ojusaNXINocIZ5p1F9D+4fMxebLOUr6vjNYPRcODikH1hmEdu3UOJeJXNrPmUwvC6FNirSlSqWJtjF8RnMzj0D5rNEIX4XzQMtzEEeqNfEeJwt5s68v4Did9hNXXBP8j1/FpqlziSsGxqHv38ahgifB55XK8OMOEVTRVaolchfD9H3TDQdTMlbcC5V6WKPkLgt4RKqXnmrRZN6vZDyEdGQGEGJeoqReVmFkMDTXikHbXiNodFXdhCnKwg7FMwijyNg4qPRhPDez1L1jJitaGBpVC36VOICq8Jq25E1Bpv8lAh0BoG9dLz4K3qImjht0IvtaHqPkHHdwe9DXGS4seNV762nbGGpWjYzn6z6vz81cMJr3DcLmLrvUg9avuZxNeWku3t+F3GsG+MTxf1E0JWZAMU/AXfg8Pwm5R9Z6ARhAGUcoklIh/UKw7tTIrFEsSmI6SfPaCRWweDrNAssj/wH6aPdF8zVYVsKIqTtFBUf5h5sL+PHSZkIjxBvOzQDnw+Gc/+kVE26ypIOGeXgNYrOJfSwyBThYs1HACEb+Pq34uREQRw9Bit3In2CeLjZkz0kmQh5w2NegVxUh4RjbGDJ9uAWqu1Z9RLzLAXu5U/UBniZUrZwoosoC/JqYVL/LVCgh/I/qEaUBTmSuU+wxDoNmgyhBAcZGP/GWQvhPq/yf4WyL29KrMgjZyHd4umVQ5ivIYilCtRlnVZmxCCYQHoIBUV71fe/4Y5nZshQ/N+TK/5A7cP8/zxmpyln7wdf6nHMp8SJUkw6sSuk0+HYBCZgAoWHcRhMclS40Vxkkz59djQxxJ07cHkLO2mqEN+z0k0BwlscdecLLri8VReM8Wj3zFJox2xo96sg93Vl9e265DVA76LZPRPsHMOOPHuBzNNa1Dt59+7v37HNdiu3w281Wqr2pq0vwO3HfFJvmERfX9AgQ2yz0yEUS+L1Po7JAPhIeOoTo/FSL666lpFkJha0cBfFmSP+g7WNrQMI6svBc3g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(7416014)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:13.5948 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fcaaa0b0-667c-4993-edb5-08dcf3873c4b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4274 From: Mario Limonciello SMN access was bolted into amd_nb mostly as convenience. This has limitations though that require incurring tech debt to keep it working. Move SMN access to its own driver. [Yazen: Adjust commit message and add MAINTAINERS entry] Signed-off-by: Mario Limonciello Signed-off-by: Yazen Ghannam --- MAINTAINERS | 8 +++ arch/x86/Kconfig | 3 + arch/x86/include/asm/amd_nb.h | 3 - arch/x86/include/asm/amd_smn.h | 11 +++ arch/x86/kernel/Makefile | 1 + arch/x86/kernel/amd_nb.c | 89 ----------------------- arch/x86/kernel/amd_smn.c | 101 +++++++++++++++++++++++++++ arch/x86/pci/fixup.c | 4 +- drivers/edac/Kconfig | 1 + drivers/edac/amd64_edac.c | 1 + drivers/hwmon/Kconfig | 2 +- drivers/hwmon/k10temp.c | 2 +- drivers/platform/x86/amd/pmc/Kconfig | 2 +- drivers/platform/x86/amd/pmc/pmc.c | 2 +- drivers/platform/x86/amd/pmf/Kconfig | 2 +- drivers/platform/x86/amd/pmf/core.c | 2 +- drivers/ras/amd/atl/Kconfig | 1 + drivers/ras/amd/atl/internal.h | 1 + 18 files changed, 136 insertions(+), 100 deletions(-) create mode 100644 arch/x86/include/asm/amd_smn.h create mode 100644 arch/x86/kernel/amd_smn.c diff --git a/MAINTAINERS b/MAINTAINERS index 9ca246aef7ab..cb9af4353b31 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1180,6 +1180,14 @@ S: Maintained F: Documentation/hid/amd-sfh* F: drivers/hid/amd-sfh-hid/ +AMD SMN DRIVER +M: Mario Limonciello +M: Yazen Ghannam +L: linux-kernel@vger.kernel.org +S: Supported +F: arch/x86/include/asm/amd_smn.h +F: arch/x86/kernel/amd_smn.c + AMD SPI DRIVER M: Sanjay R Mehta S: Maintained diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index ba5252d8e21c..a03ffa5b6bb1 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -3128,6 +3128,9 @@ config AMD_NODE def_bool y depends on CPU_SUP_AMD && PCI +config AMD_SMN + def_bool y + depends on AMD_NODE endmenu menu "Binary Emulations" diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index b3b42e585655..55c03d3495bc 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -21,9 +21,6 @@ extern int amd_numa_init(void); extern int amd_get_subcaches(int); extern int amd_set_subcaches(int, unsigned long); -int __must_check amd_smn_read(u16 node, u32 address, u32 *value); -int __must_check amd_smn_write(u16 node, u32 address, u32 value); - struct amd_l3_cache { unsigned indices; u8 subcaches[4]; diff --git a/arch/x86/include/asm/amd_smn.h b/arch/x86/include/asm/amd_smn.h new file mode 100644 index 000000000000..6850de69f863 --- /dev/null +++ b/arch/x86/include/asm/amd_smn.h @@ -0,0 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_AMD_SMN_H +#define _ASM_X86_AMD_SMN_H + +#include +#include + +int __must_check amd_smn_read(u16 node, u32 address, u32 *value); +int __must_check amd_smn_write(u16 node, u32 address, u32 value); + +#endif /* _ASM_X86_AMD_SMN_H */ diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile index b43eb7e384eb..1df22821f72d 100644 --- a/arch/x86/kernel/Makefile +++ b/arch/x86/kernel/Makefile @@ -120,6 +120,7 @@ obj-$(CONFIG_HPET_TIMER) += hpet.o obj-$(CONFIG_AMD_NB) += amd_nb.o obj-$(CONFIG_AMD_NODE) += amd_node.o +obj-$(CONFIG_AMD_SMN) += amd_smn.o obj-$(CONFIG_DEBUG_NMI_SELFTEST) += nmi_selftest.o obj-$(CONFIG_KVM_GUEST) += kvm.o kvmclock.o diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 9b159f9b4a11..10cdeddeda02 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -15,9 +15,6 @@ #include #include -/* Protect the PCI config register pairs used for SMN. */ -static DEFINE_MUTEX(smn_mutex); - static u32 *flush_words; static const struct pci_device_id amd_nb_misc_ids[] = { @@ -59,92 +56,6 @@ struct amd_northbridge *node_to_amd_nb(int node) } EXPORT_SYMBOL_GPL(node_to_amd_nb); -/* - * SMN accesses may fail in ways that are difficult to detect here in the called - * functions amd_smn_read() and amd_smn_write(). Therefore, callers must do - * their own checking based on what behavior they expect. - * - * For SMN reads, the returned value may be zero if the register is Read-as-Zero. - * Or it may be a "PCI Error Response", e.g. all 0xFFs. The "PCI Error Response" - * can be checked here, and a proper error code can be returned. - * - * But the Read-as-Zero response cannot be verified here. A value of 0 may be - * correct in some cases, so callers must check that this correct is for the - * register/fields they need. - * - * For SMN writes, success can be determined through a "write and read back" - * However, this is not robust when done here. - * - * Possible issues: - * - * 1) Bits that are "Write-1-to-Clear". In this case, the read value should - * *not* match the write value. - * - * 2) Bits that are "Read-as-Zero"/"Writes-Ignored". This information cannot be - * known here. - * - * 3) Bits that are "Reserved / Set to 1". Ditto above. - * - * Callers of amd_smn_write() should do the "write and read back" check - * themselves, if needed. - * - * For #1, they can see if their target bits got cleared. - * - * For #2 and #3, they can check if their target bits got set as intended. - * - * This matches what is done for RDMSR/WRMSR. As long as there's no #GP, then - * the operation is considered a success, and the caller does their own - * checking. - */ -static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) -{ - struct pci_dev *root; - int err = -ENODEV; - - if (node >= amd_northbridges.num) - goto out; - - root = node_to_amd_nb(node)->root; - if (!root) - goto out; - - mutex_lock(&smn_mutex); - - err = pci_write_config_dword(root, 0x60, address); - if (err) { - pr_warn("Error programming SMN address 0x%x.\n", address); - goto out_unlock; - } - - err = (write ? pci_write_config_dword(root, 0x64, *value) - : pci_read_config_dword(root, 0x64, value)); - -out_unlock: - mutex_unlock(&smn_mutex); - -out: - return err; -} - -int __must_check amd_smn_read(u16 node, u32 address, u32 *value) -{ - int err = __amd_smn_rw(node, address, value, false); - - if (PCI_POSSIBLE_ERROR(*value)) { - err = -ENODEV; - *value = 0; - } - - return err; -} -EXPORT_SYMBOL_GPL(amd_smn_read); - -int __must_check amd_smn_write(u16 node, u32 address, u32 value) -{ - return __amd_smn_rw(node, address, &value, true); -} -EXPORT_SYMBOL_GPL(amd_smn_write); - static int amd_cache_northbridges(void) { struct amd_northbridge *nb; diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c new file mode 100644 index 000000000000..06160a9e2444 --- /dev/null +++ b/arch/x86/kernel/amd_smn.c @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * AMD SMN driver, used for register access + * Copyright 2024 Advanced Micro Devices, Inc. + */ + +#define pr_fmt(fmt) "amd_smn: " fmt + +#include + +#include +#include + +/* Protect the PCI config register pairs used for SMN. */ +static DEFINE_MUTEX(smn_mutex); + +/* + * SMN accesses may fail in ways that are difficult to detect here in the called + * functions amd_smn_read() and amd_smn_write(). Therefore, callers must do + * their own checking based on what behavior they expect. + * + * For SMN reads, the returned value may be zero if the register is Read-as-Zero. + * Or it may be a "PCI Error Response", e.g. all 0xFFs. The "PCI Error Response" + * can be checked here, and a proper error code can be returned. + * + * But the Read-as-Zero response cannot be verified here. A value of 0 may be + * correct in some cases, so callers must check that this correct is for the + * register/fields they need. + * + * For SMN writes, success can be determined through a "write and read back" + * However, this is not robust when done here. + * + * Possible issues: + * + * 1) Bits that are "Write-1-to-Clear". In this case, the read value should + * *not* match the write value. + * + * 2) Bits that are "Read-as-Zero"/"Writes-Ignored". This information cannot be + * known here. + * + * 3) Bits that are "Reserved / Set to 1". Ditto above. + * + * Callers of amd_smn_write() should do the "write and read back" check + * themselves, if needed. + * + * For #1, they can see if their target bits got cleared. + * + * For #2 and #3, they can check if their target bits got set as intended. + * + * This matches what is done for RDMSR/WRMSR. As long as there's no #GP, then + * the operation is considered a success, and the caller does their own + * checking. + */ +static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) +{ + struct pci_dev *root; + int err = -ENODEV; + + if (node >= amd_nb_num()) + goto out; + + root = node_to_amd_nb(node)->root; + if (!root) + goto out; + + mutex_lock(&smn_mutex); + + err = pci_write_config_dword(root, 0x60, address); + if (err) { + pr_warn("Error programming SMN address 0x%x.\n", address); + goto out_unlock; + } + + err = (write ? pci_write_config_dword(root, 0x64, *value) + : pci_read_config_dword(root, 0x64, value)); + +out_unlock: + mutex_unlock(&smn_mutex); + +out: + return err; +} + +int __must_check amd_smn_read(u16 node, u32 address, u32 *value) +{ + int err = __amd_smn_rw(node, address, value, false); + + if (PCI_POSSIBLE_ERROR(*value)) { + err = -ENODEV; + *value = 0; + } + + return err; +} +EXPORT_SYMBOL_GPL(amd_smn_read); + +int __must_check amd_smn_write(u16 node, u32 address, u32 value) +{ + return __amd_smn_rw(node, address, &value, true); +} +EXPORT_SYMBOL_GPL(amd_smn_write); diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c index 98a9bb92d75c..e8ea627c22b4 100644 --- a/arch/x86/pci/fixup.c +++ b/arch/x86/pci/fixup.c @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include @@ -828,7 +828,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x7910, rs690_fix_64bit_dma); #endif -#ifdef CONFIG_AMD_NB +#ifdef CONFIG_AMD_SMN #define AMD_15B8_RCC_DEV2_EPF0_STRAP2 0x10136008 #define AMD_15B8_RCC_DEV2_EPF0_STRAP2_NO_SOFT_RESET_DEV2_F0_MASK 0x00000080L diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig index 81af6c344d6b..acdd920b8769 100644 --- a/drivers/edac/Kconfig +++ b/drivers/edac/Kconfig @@ -78,6 +78,7 @@ config EDAC_GHES config EDAC_AMD64 tristate "AMD64 (Opteron, Athlon64)" depends on AMD_NB && EDAC_DECODE_MCE + depends on AMD_SMN imply AMD_ATL help Support for error detection and correction of DRAM ECC errors on diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index ddfbdb66b794..b0ee0593137b 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -2,6 +2,7 @@ #include #include "amd64_edac.h" #include +#include static struct edac_pci_ctl_info *pci_ctl; diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 08a3c863f80a..bf2bd7098f2c 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig @@ -324,7 +324,7 @@ config SENSORS_K8TEMP config SENSORS_K10TEMP tristate "AMD Family 10h+ temperature sensor" - depends on X86 && PCI && AMD_NB + depends on X86 && PCI && AMD_SMN help If you say yes here you get support for the temperature sensor(s) inside your CPU. Supported are later revisions of diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c index 7dc19c5d62ac..1a16640d2fa1 100644 --- a/drivers/hwmon/k10temp.c +++ b/drivers/hwmon/k10temp.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include MODULE_DESCRIPTION("AMD Family 10h+ CPU core temperature monitor"); diff --git a/drivers/platform/x86/amd/pmc/Kconfig b/drivers/platform/x86/amd/pmc/Kconfig index 94f9563d8be7..d9cae227aff9 100644 --- a/drivers/platform/x86/amd/pmc/Kconfig +++ b/drivers/platform/x86/amd/pmc/Kconfig @@ -5,7 +5,7 @@ config AMD_PMC tristate "AMD SoC PMC driver" - depends on ACPI && PCI && RTC_CLASS && AMD_NB + depends on ACPI && PCI && RTC_CLASS && AMD_SMN depends on SUSPEND select SERIO help diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c index bbb8edb62e00..663cf8d671c7 100644 --- a/drivers/platform/x86/amd/pmc/pmc.c +++ b/drivers/platform/x86/amd/pmc/pmc.c @@ -10,7 +10,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt -#include +#include #include #include #include diff --git a/drivers/platform/x86/amd/pmf/Kconfig b/drivers/platform/x86/amd/pmf/Kconfig index f4fa8bd8bda8..67913f64faf3 100644 --- a/drivers/platform/x86/amd/pmf/Kconfig +++ b/drivers/platform/x86/amd/pmf/Kconfig @@ -7,7 +7,7 @@ config AMD_PMF tristate "AMD Platform Management Framework" depends on ACPI && PCI depends on POWER_SUPPLY - depends on AMD_NB + depends on AMD_SMN select ACPI_PLATFORM_PROFILE depends on TEE && AMDTEE depends on AMD_SFH_HID diff --git a/drivers/platform/x86/amd/pmf/core.c b/drivers/platform/x86/amd/pmf/core.c index d6af0ca036f1..21f9ec19941b 100644 --- a/drivers/platform/x86/amd/pmf/core.c +++ b/drivers/platform/x86/amd/pmf/core.c @@ -8,7 +8,7 @@ * Author: Shyam Sundar S K */ -#include +#include #include #include #include diff --git a/drivers/ras/amd/atl/Kconfig b/drivers/ras/amd/atl/Kconfig index 551680073e43..819ac593e743 100644 --- a/drivers/ras/amd/atl/Kconfig +++ b/drivers/ras/amd/atl/Kconfig @@ -10,6 +10,7 @@ config AMD_ATL tristate "AMD Address Translation Library" depends on AMD_NB && X86_64 && RAS + depends on AMD_SMN depends on MEMORY_FAILURE default N help diff --git a/drivers/ras/amd/atl/internal.h b/drivers/ras/amd/atl/internal.h index 143d04c779a8..49cd3e95e0c6 100644 --- a/drivers/ras/amd/atl/internal.h +++ b/drivers/ras/amd/atl/internal.h @@ -18,6 +18,7 @@ #include #include +#include #include "reg_fields.h" From patchwork Wed Oct 23 17:21:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847724 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2053.outbound.protection.outlook.com [40.107.220.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20E191E7C2C; Wed, 23 Oct 2024 17:22:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704142; cv=fail; b=rmUO49oYHT0QqkhORsGOsP+goRyx/YHfqnj8BwWqfy0eoPwij28Wsh7TLlWqiXpvSp+Ur8hSHcOy6VBasWanTZAoEDd3SXCIppRBXJ2Vctkh/1s0VeJQFs2rDFkn8UY0/Pu89vVCAcY6bCg+TLGepkMoRoARSKIEDKDrFczw/l0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704142; c=relaxed/simple; bh=gtlFZIqULmZBMN5jWLQXJT6lBpkx1Crim7NCPuKwsUE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DL7dN2pVvnAO3iK0fTmR41jtLTtYONavpdSTWjPOD88SnnnGNmjhPnL5YIjnXqMsQHkxsPKUj5jDf71Lsmn8nms+QolT/lGmw4Gtpiay0+LPcjys8HRPo/sByXHuFfO2AYSHwKJfxdzW2MpWw+UALpp1iJV1Tw6W12bNlhvxKwA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=2th9DCxs; arc=fail smtp.client-ip=40.107.220.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="2th9DCxs" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qgVdKG6DJ7FkrWppBnqqk6DEGyml7domcuUeG6mblo14/LE73PYi2uGROfcWaz4eJm8j/23va+5cOG5lCBTUf56bY7qvEB2/m7LbJIFAWelNvK3paB5WhRYtK4rvcxZkXZk9xotzAheDauh3ko6+Db9WcSDzZxg+9l5Uthu+MWw+ZRrsIcAeYNtPC4oEq9FxDNjHdGuieWuAihh/oTuj7PZvG0EUKmJ+BZWLnn09HOKX7sBo4HfuuuFbG46XHIoOsRqiJa178Mrqcl4T04A2aDFBTwatMzwuZkynS2c/Xk6V6WYtF8Gr/hoWv0LWcS5ddsEl0lRfMmE6vjRIFzld7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uhyFuMik5UlE/DE0GG/U8a4SuTAQcB3Um8aJqXkkyGw=; b=E3/4tADTbvk0jGGVhNpuE4rGRFPb82GlyjmFiYgnHweQzHGhKn5HzGGrQwhbZ1TuaN1q/Pd8BBuanZMsQmLIIkFXMsjl0aYzgaWcFZUzZqs2TMMhp+06XXY6Uz0MyqlWs5/ArYzQcHRUxnWbJwwPckW1+C9nOklDrrz9hx5msYj88Ivs8gYZBnVDckw4EgAxAWXE4fjJ/AN2h8v1kLnkP501hQkp18H2JihmECEDZ6rsXaH1EVeFTPD4FX80if0i0KSutH5ZxWuceoHIwxDhv9sHeotwhKxOTHee5WYQ+XfPn7ndtAyiZTiN/uB2vRfHhfvL50fdYQcqjGqccwPueQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uhyFuMik5UlE/DE0GG/U8a4SuTAQcB3Um8aJqXkkyGw=; b=2th9DCxsxNgqtmkGIsyicI5eTyV5ofvNcPSn5c4mekPS7PAfKDCwolshe/IvU8s77oh+xwFLZt/NGIiANEGc2E/UQV91bHOQtNa2NDXuquiaEz5nLNf3NfOvBVKH3A8XqA5NVyO8KxFLuI7Pp8qqzrV3WNcmaNiN9uOhg9pQYsc= Received: from MN2PR01CA0047.prod.exchangelabs.com (2603:10b6:208:23f::16) by LV2PR12MB5944.namprd12.prod.outlook.com (2603:10b6:408:14f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:18 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::51) by MN2PR01CA0047.outlook.office365.com (2603:10b6:208:23f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:18 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:12 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam , "Tom Lendacky" Subject: [PATCH 11/16] x86/amd_smn: Fixup __amd_smn_rw() Date: Wed, 23 Oct 2024 17:21:45 +0000 Message-ID: <20241023172150.659002-12-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|LV2PR12MB5944:EE_ X-MS-Office365-Filtering-Correlation-Id: 56b4747a-72b5-48c3-5919-08dcf3873ee0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013|7416014; X-Microsoft-Antispam-Message-Info: TNQ1Qza6meVHzs5tr3k/6x+Xy/3a+3CKhjAgpz+BdP9+bTnRcBSqSfU5v7W9iWw8SA0TMnvW5mnFTXiUUvTD/8fysfeDeiuwbYd3Sq5xbnlaoe0BihwoCYAxiLQxZM9ynIEdiADSujItDFUvkl7PV62bio9AiF+F7jmFk9Aa7x9c5uaww8LsQIbpj3fJlzwgIKE3zB9lIxmGBVWfHUMOu4rNg+FkrXJTX0q870qrXbTWikO8rHN7Hc+fDVmsp3N+KOYvL3kz7EuGVcVBxPAhqKF8ThbKvgmjjp4LihVq5QtiO51j5yEZsLf3KbTzzX9BxXz1mzMwsd/W6C1i5rw8oV3u+u++9aTVVPx1Q4VSagGOOC6hp3QyIfdG6rLk5iBvpPZE6I4NnVstzwjRC3rYa0DOSGyJuteXoXbFPjXXHSpHgzTJg+sI5sawrQViWDvn0mtCvfaw/lmlQvjjH9oQrtCDGp2aDptWkzahxsVHBMqMsxMIy0mKpkSPCMX0MjbH4taykgPbuj/8b8Xhf6mV8bw4hdDcNsA3oVrWq3CktXb7kr4hdlIqe1UHdVFpjEwK4g9aorDPRrSZF/KZB8mUo/D3RdBTdx4UDLWhaFz+UrQ6ZVHD7y7YKxRMNAFIAXCy7GrVsba+34h/STRMQoilTJ6j8V7THtGjis7U22GFvNGBn2smPkuz6rPWJuK69Pyc4+V5O7TqBGJXET9VgwEb9ttAC3OiENv1LJ90zPJ8pdVtjjolctD66yrJolCZJnN7PGFqn6wsAckpxWoC5rdj+CkmPK20/V4+Eh9L5lgkAuyGti6qCm6uWIbp7fsoee9c962FEA5UYHr3HO77PXllYLmkL8mfWsVAsPnmJH2QnAB0wk+c9nm2lFPG6O94M+SSgzER7jQzsFjS4Brc1qHcTw+auH1i6EiEdsAjyFO0RQz7Sitf1ordHMwyzUZ1pbo1nsKDZhLyB4Z8gqJq/jHp1bDr+58mjdNnybVnIQ58M/+wIdRVZ64T5C38P1u3g5qbonOKvg3uY9tCcjGdD2jvqr/PgDmlCYl26EK74oSttf/8+mVbIHjZbSDfxLVzJleEXdK1d5Ia3721T0+116tmct/1chLU82WXWz/2ZhnR5eGoVpZFpaVtgTwRHEJZT9QrFJ6tVnz7PlIQn/n+2uwaf12p05c12R8cO56fbiNJ+3j7703+lI2jIQKBlKB2GJpbtQ/8aq8aMDe+KRMP0+2DpcIMwJbA3gntJd8PkXiMxDJBYJ49b2/89BN8TYC9kVWpFI0K5yB+eoS57l0pCY5gX1Rw2Gk6uoXEogi5X0etczPV68qXtVY/ljLX48B4dD4afiotS2Z6sa0hJ0VS6uEKDdyKiDz+TgpIDx/hS9iT9PAfbiH4a5XUz4hfJm8gWRgH7OBTxkw7KXB6+Z8BqCZuOg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(376014)(36860700013)(7416014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:18.0011 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 56b4747a-72b5-48c3-5919-08dcf3873ee0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5944 Use guard(mutex) and convert PCI error codes to common ones. Suggested-by: Tom Lendacky Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_smn.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index 06160a9e2444..e53db07d1a77 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -57,28 +57,24 @@ static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) int err = -ENODEV; if (node >= amd_nb_num()) - goto out; + return err; root = node_to_amd_nb(node)->root; if (!root) - goto out; + return err; - mutex_lock(&smn_mutex); + guard(mutex)(&smn_mutex); err = pci_write_config_dword(root, 0x60, address); if (err) { pr_warn("Error programming SMN address 0x%x.\n", address); - goto out_unlock; + return pcibios_err_to_errno(err); } err = (write ? pci_write_config_dword(root, 0x64, *value) : pci_read_config_dword(root, 0x64, value)); -out_unlock: - mutex_unlock(&smn_mutex); - -out: - return err; + return pcibios_err_to_errno(err); } int __must_check amd_smn_read(u16 node, u32 address, u32 *value) From patchwork Wed Oct 23 17:21:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847726 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2058.outbound.protection.outlook.com [40.107.212.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 20DA81EF08A; Wed, 23 Oct 2024 17:22:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.212.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704143; cv=fail; b=DhSMhWtF52natHkVrBlXk9/MopIyW56q5HfBZ6XsG3ESBcaUZdXJcHNFS7/Qz20OKwL5/0l3NaP8eWKdHo6BRL6jxznq1F43ZprNM3I6cAz5R7+pgdQrtRuKNAwcxnbop5Toq+bItzrDsualbIB1sBTn6qr2We1e9AT63rUWmhE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704143; c=relaxed/simple; bh=oNlYWQY7SIdywJGDeVYPBLsBue9CDJoG20OFzIlM5Eg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nst0tMM7WlWpMtOO09ta4V2qYYyPz788A0aqhaBepHAsRcaXbHXqL91n8GoCcNBZ9WiISD6/ZIUQwD+/QSFIEa4URPOhXOn/m2ON/2q+QXxxWyiFR8PzENeILYnQU30Kg3325XZhjBRp7Ng+tzbbX1QgP4+lnnsAACfUWX/HSpY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=N40Xe0mh; arc=fail smtp.client-ip=40.107.212.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="N40Xe0mh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p5CkwayWZDJqp84AisDYDuxKNrkBq539CqkTMLJXRVQasgZ2kBdRiHFTfu9n6KWGZ4Fp+OUzxYJIBFRfT8KbT9bgoJ0DbTRAbIWW0qyuJVSKq+gGIwGzIQ1WJhJWbqLqf2R+CbsvCJIQCK8dr3pEx734xUfgvjpZxAE9g99LvF9KRsLwJ8uMhpt0F926Ot/S6E+YWkZN4+0gYKr4nghmWiomyNcyLtlhznvsF3QHr3l49L60M6Ruagrn0VATXkFKr+gMJ3bLQzeAMUUZAPJdqofc3egJAdm1HVu5AJVnotJys3GOyv8W/cbQ/Ja6nYap8W458QcYKmcRSFgxfG14Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UomJ7+o9AXJze22cP4TCbcsv+P4M8b5d1LZmzGuS2Kw=; b=F4fkiaulNGjlCN1zt0pHHSVwUfmE1NGei1IPqodP2fcUEm+7HS8flTJKNfcMQs/LRGJelqs1VhD/fHvOudDSWrQzEPAIUbfeXEIVF+Nh2oMHmlat+Hs2C5rlPhaysylTUFg1maa6+1R0MhVcJxEClomWZagakuhs6lzS+Sn4ARGUn5iIhEBKM5z3aJjXueZzFGU3HXGnmNH1NmhgcaPGrLyeULJRrm9SoG55jA/sMQWXRW6Lj1pANQzq+jQsxZXoUiVT9jWIBwwfT3f9exSexEn1OyABv/wtmMJ2GpU6mtONstcRvOgi65nNAt+1iWXaBrGrWJgHCTZnQyxe1HGsCg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UomJ7+o9AXJze22cP4TCbcsv+P4M8b5d1LZmzGuS2Kw=; b=N40Xe0mhjAAK/lsKQYlgZedfm1j3xYWe+yRfhdIoYLW+2ZFnXw4xfHEU+2F/sY5VRV8gGB1Ny7G6t8XUNsFIRSeN3li+guliOn34x8qV2m5fsoUa9prvefAwVbOM+q7dXj3FXSxsE0DiTY17TaPSwHfGrociIFxiNpA5pvsnRNY= Received: from MN2PR01CA0062.prod.exchangelabs.com (2603:10b6:208:23f::31) by CY8PR12MB7659.namprd12.prod.outlook.com (2603:10b6:930:9f::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:18 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::dd) by MN2PR01CA0062.outlook.office365.com (2603:10b6:208:23f::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend Transport; Wed, 23 Oct 2024 17:22:18 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:18 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:13 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 12/16] x86/amd_smn: Remove dependency on AMD_NB Date: Wed, 23 Oct 2024 17:21:46 +0000 Message-ID: <20241023172150.659002-13-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|CY8PR12MB7659:EE_ X-MS-Office365-Filtering-Correlation-Id: 5603867b-a407-4376-b84d-08dcf3873f20 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: MKm+Cu6Be5m+Su91Uf/8vi3G4aAe/sJrX3XS8KHq1iqb6N2ERGNJ82GSpFTtablo0hiqNZNwBom28+NXOgVDxZXZQuxoR0cH42HBIrVqtxKQKfzUhfoHPz0IGgaZYQ6aMSYlHCbEPo5FB4GK4eYwmA3lOchftLDJK4qkK/A7mdqUAGTNo9Cdga26pueQYE8CEDXEIFfpjVz6yUh1CIZG0yUS34IZWwUf68L/GgXRf63PXfsfb0JGXDj/2M9eZeZr56iWbadx6UtmZ2bsQ49opV20RaZaTwlWUuG4UuLJIVD5+qnTM17HyD/0LgHxL0c6NOTr1fph8gG+n5au24f+InDQLM/1Qhm32AVmp8en8GJv+dCCPb7qfZcC2kiUChe0Mwc+Ya9imKPmft1V7CQu7kLk6Q/xG1bBFu+sasuZcWbHA6J25BdvS1ju9kuckGCOz/Ak6zbTgglb4PjvUX+JEHuTj2vog2KPALLHyyKpRiSzQeMcbfpGK4HGbKNq9QDTNdykK8t3K3Ax7/nXPBcOhw2PpuqK9QJdCq1FD6e1Lzo//nOUVN/RkgPQw/BwKb9b3RIu4/GVuf6Eu5nlXjPrZ7WWhgO1hfAX70Wqu0XtHLp0Vmx3JU1Co/1W4rEA6S8eUhjhnbLhfZRJwPqnuwCQvJzWK09xwnUTrndTCrI8nt78fjINJz1OhVysY5IPQGElG9VbKN6Eefr5wGN3WMvgmt7oA43Y/uKntOzrnp6U+Y6ruwLbTLeQIa37zfRYsnjwxG31T7vvcIo3KKLn75JAnhMVt3YhkAcYh5NOQ8n/euu4YvocyVFuuPsnop33xNwzBZyzVwKuFQ/9kSSu4JvRAV81KKDj76LgvwIf8w5jynlv41EHS0yeeK9+6GjEbPQzx9cpWAHkkCTHE6AtVZm7ZzdevlHUJy5KVbdeBc8dVhe2Bfo7LwkNh4LNO67bHXNluMUX0w0ocwfYC/H4ZzG8NuOW/XpZ/38fIC/vlHb19v4bo64NKELWFHJ1w9oYD1/5nQmGrYA3Vb227O40r7eyA+KBKNjXE2G0FOCLSrsrsoaM1UdnsLQtA7txT8zQWkmOEzUrROaXj85MO2QT6KnJPumvNETfIVFcEPv58rX0XqMu2WSOWVNITUUTDkZo1KOBAbBxk41D4kv2250XqytmBgdHocmwriqsmd6Crt4evDGrw06OJkjQ7qeECCvCNTgF0p/YlVWugvCjpl1fcmuH+HZSS+3Su9qTNdGtQTDujZ+HQXOg/S3y+3+IZt/jQRELDsnVwEXqSkZF3PMEzgg+YjAmZMutL0qUkeFC/DN506ZKXADVjEWN6fitbRnaTg4hMR5F8Eukg4Zncmd7mZaqbqtJDi9mS//fkTR4TZw+4VDqvRaYm7qi411Ta2Wk1U0xvFIECtmyT3fegKculfjgQA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:18.4386 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5603867b-a407-4376-b84d-08dcf3873f20 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7659 Cache the root devices locally so that there are no more dependencies on AMD_NB. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_smn.c | 42 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index e53db07d1a77..45cf86cd9014 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -8,9 +8,10 @@ #include -#include #include +static struct pci_dev **amd_roots; + /* Protect the PCI config register pairs used for SMN. */ static DEFINE_MUTEX(smn_mutex); @@ -56,10 +57,10 @@ static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) struct pci_dev *root; int err = -ENODEV; - if (node >= amd_nb_num()) + if (node >= amd_num_nodes()) return err; - root = node_to_amd_nb(node)->root; + root = amd_roots[node]; if (!root) return err; @@ -95,3 +96,38 @@ int __must_check amd_smn_write(u16 node, u32 address, u32 value) return __amd_smn_rw(node, address, &value, true); } EXPORT_SYMBOL_GPL(amd_smn_write); + +static int amd_cache_roots(void) +{ + u16 node, num_nodes = amd_num_nodes(); + + amd_roots = kcalloc(num_nodes, sizeof(struct pci_dev *), GFP_KERNEL); + if (!amd_roots) + return -ENOMEM; + + for (node = 0; node < num_nodes; node++) + amd_roots[node] = amd_node_get_root(node); + + return 0; +} + +static int __init amd_smn_init(void) +{ + int err; + + if (!cpu_feature_enabled(X86_FEATURE_ZEN)) + return 0; + + guard(mutex)(&smn_mutex); + + if (amd_roots) + return 0; + + err = amd_cache_roots(); + if (err) + return err; + + return 0; +} + +fs_initcall(amd_smn_init); From patchwork Wed Oct 23 17:21:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847727 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2056.outbound.protection.outlook.com [40.107.93.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1266B1EC01E; Wed, 23 Oct 2024 17:22:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.56 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704145; cv=fail; b=YFI3cMoYJYHNu9TBdswZW7+LjgrG12Y5pS7pHUaJAQBLs0hkFg8ZjzkMXx40sNwjVTMBuj4q1IzOZORTaNCpp5NLSO/rLaX062A3YgauSz0ADfpY2xTfjgEB8d0D90xkkLPeyojL/3D3BP1RHJDcFx8NXwwyJSIsDefUs/4kH5c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704145; c=relaxed/simple; bh=Yj/pIVeDo3FsU9e/Yp/VpsmiBmMiEocYYARIncMNvTc=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pKpYi4iZWzlzkfWefRgFqGwIchNXRYkxwGRPVsL5MicfRcPRivk1GXFwP/pv0pG5ZhslCC53CDH6wRD81eCW6V09Uh8/W3nHUoqyFaUt4GKT8N3zs1ZSCaAad+XYyWbIMjdLzkjB4E7PanYR6APhMJ9vU2zaBTUXiIZ1MWfXxrA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=KAoY2xih; arc=fail smtp.client-ip=40.107.93.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="KAoY2xih" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=es6zwu1B99RQUFVaLNx/tf+D2+iI6qVQht2CifVUprcw/o2yFC7sxjaSNlMyqZisNt1m2/1d/9Tsh2mVm/nEF4bmFXOiDL1ubgPQ8RQn3MbeU7L+Fri3J074GHXXXAKe3X+T9Asgiyt92D7v31aqcxtbWvABSZiJspqCMCDY34swfRamc7N+8/+gjTkly4qdsjhe6AD8HDiDE43b4NIF5uggqTdKLMfo0Vj5kZbtbYcho1mVYn0LDyogWxXxG2l/djD5bv/qWrT6BEAR0V/CuSxh45qVnI5ATH7dZCTIw0BykauQRbm85uXErZLXUINd7d9E8LaaUC/xuHcuIh2V+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H5oJCTls20r7WkZcdgysfoYtNuwVRHW0WYr6jSyftkE=; b=rskLaIzti7CT4uOR8OYU57eGRjFQ6TTw4Ri9LvmYw3r+iWQAmh8GVi82Bck8uDToXGw7M7ynnkJxroGyOB1b8hTtqvcxgtcIwRgI9rey6Wpmf9NYHyH9H2RkpC7Bb/kquQJZ3Vvsu7aNI+tGik9R5EyMx3lcPaOyI6K/ZduFRKxnzGBrWZCbbTrT/QprQ7iPRwmseq230HZAdfOAVUwTCz9XWHom5SK3V9tWk/+z0xsbU4o36dBLqTul26FpUruVPTZdHwx0c9YcF2nT4+157vMYv0+M06PCRInpvHR+XA9C5Ad2QVebPUK76pOAkPk+Trg6hpTEXdl6j5IBMTc/Zg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H5oJCTls20r7WkZcdgysfoYtNuwVRHW0WYr6jSyftkE=; b=KAoY2xihmmIt5yYzZ9JAEAxg/PzNnn319f4TWWKzgSvij6tENyzoRVl/tUieyy/Q6BPxT2H0Yde0/SbQyXUNNeOui7iYhKzAnLEr3nfSIrLtTkutfQrFfIFtXAu0A0jFdopPh1MtdNOSRfubAmJWDdJgknAzZXEz0z4MW8lc5RE= Received: from MN2PR01CA0044.prod.exchangelabs.com (2603:10b6:208:23f::13) by SJ0PR12MB5612.namprd12.prod.outlook.com (2603:10b6:a03:427::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Wed, 23 Oct 2024 17:22:19 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::cb) by MN2PR01CA0044.outlook.office365.com (2603:10b6:208:23f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18 via Frontend Transport; Wed, 23 Oct 2024 17:22:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:18 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:14 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 13/16] x86/amd_smn: Use defines for register offsets Date: Wed, 23 Oct 2024 17:21:47 +0000 Message-ID: <20241023172150.659002-14-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|SJ0PR12MB5612:EE_ X-MS-Office365-Filtering-Correlation-Id: 2cad7825-5240-4cc7-8d1b-08dcf3873f76 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|7416014|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: Iwcc+gJ4C6T6jTF9lEjiTU30+qzbzg6dz5VMRuX07SkM0LFBw5Zllrb6iZd2ElWRJ4Js8nSln0S06vuk8h8I9yDjU6yzrSJh+SZNMFl7d2/KlWczE6xGD5K1d/vaD4cj0MG6XwhWZCasenY7PeJhrTZIOgTgxFroxFURUD6MZq12ZwQrs+PkztBjbBMfTHkVoav6rgR8JoNTBmQ4t4Wj3CzOBBHbKj+CJN56V/4xfNOBKwcL/CC20hygLMZEduGRpJiWNB9c2W80N6BaDOugaCoV8su0h4BjsHEIEklLqw63e8Qb21SMMBJ2IZJ06RCUOyoetOtH1nrY+GNhDtHNlDNnrbT17YqbNIwpMTXTopJyPCDx8apJ79Vm/6C8z8kq/FscTzDN7RHIq27lttM3QMAp1FxgWp0XxOpMPYc4c9gWsXcqLQdOIW2nqkoWhMHjrL9MjNrijmssxwmmRu7B6NWk4dzMLKxJ7C/rPcpnB2KuvM4fck0TeDLS28Hl+IuyLheRpsBRaRzdZgxlA9UipgjHR/LYXyKK7U1+0PHYz2RaCAqX+mB1nHH0/18u9z1pkbOBYyXsoXPt4GcGaowAQW8C+zW0qKQLx+VnK2e1th3MNGE/oFhJVN4ScVcBcWF8BSlUHqRFIeDAUxQRm79o2zoVGvACC+JYFuJxMYx4ZOETfz0LXFtWoapKTUXVPUwPD2TGpvIYNIHhpMlPaILCmhnJ7A09rWvZSwdk4BPj5Mu0JTgnhyjs7DQ9TLlr4fpmo0/L5HG9bMUjqaPmydVVBPn/++drjNWzuGHLEsWc+ki+XBs7s6jkJrn7JvVEVqDy9U6ANtQgIDHAJNRz3ws6ZelqCi7SAAtQa6BYDFpIPJscJOAMIfd6OwQLBN3X25GmpzEh3+07/KEvPz0nSs3xVyh3JWIdZK50UUQ6m7tU9AUf8hSd3iwLkv4PMUC07w8C8V6gxroq60WHCsehMQJnTy6BNpJwt8gqpn3qx+Vg2PGY0ZmcX3uuoh1HZMH3K98OR3qYTtB3DNrY0++nGhvzRA+d3qtdUigR0x9fFKjjLFDO9LoLh2/eIeKSmPXLILGsGxnrvGWEN70sdw09xM887mTFixa92P1Pip5YGB4B5B9j3IE8pd1RSFe9eUI/FZKtqWxT3m+ZOK7KMJHsMiPbOgFjto0M3zNIn/6+RRS4jHvY0qbyYP7R7YMv278gpriMJjcU/Uy5ODqGcQTJ623OkVWZBereGJtDONGNsBeFhWFq6R7TynW92zN1+U9KfDsmK0pTsVyj89IE4j9KW226imBmW0UOR5ixpw1KM6dRsSyfA7CBiRWka3d41XqM5nbMd6NTIjc/Q6yYQBLSZRJlzsXd/6MUkD+Fxubw3CZCoXz9Z/Atlx467UtyGodlJeFynlpXf/uZYvx7DLHJDl342g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(7416014)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:18.9855 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2cad7825-5240-4cc7-8d1b-08dcf3873f76 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5612 There are more than one SMN index/data pair available for software use. The register offsets are different, but the protocol is the same. Use defines for the SMN offset values and allow the index/data offsets to be passed to the read/write helper function. This eases code reuse with other SMN users in the kernel. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_smn.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index 45cf86cd9014..997fd3edd9c0 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -15,6 +15,9 @@ static struct pci_dev **amd_roots; /* Protect the PCI config register pairs used for SMN. */ static DEFINE_MUTEX(smn_mutex); +#define SMN_INDEX_OFFSET 0x60 +#define SMN_DATA_OFFSET 0x64 + /* * SMN accesses may fail in ways that are difficult to detect here in the called * functions amd_smn_read() and amd_smn_write(). Therefore, callers must do @@ -52,7 +55,7 @@ static DEFINE_MUTEX(smn_mutex); * the operation is considered a success, and the caller does their own * checking. */ -static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) +static int __amd_smn_rw(u8 i_off, u8 d_off, u16 node, u32 address, u32 *value, bool write) { struct pci_dev *root; int err = -ENODEV; @@ -66,21 +69,21 @@ static int __amd_smn_rw(u16 node, u32 address, u32 *value, bool write) guard(mutex)(&smn_mutex); - err = pci_write_config_dword(root, 0x60, address); + err = pci_write_config_dword(root, i_off, address); if (err) { pr_warn("Error programming SMN address 0x%x.\n", address); return pcibios_err_to_errno(err); } - err = (write ? pci_write_config_dword(root, 0x64, *value) - : pci_read_config_dword(root, 0x64, value)); + err = (write ? pci_write_config_dword(root, d_off, *value) + : pci_read_config_dword(root, d_off, value)); return pcibios_err_to_errno(err); } int __must_check amd_smn_read(u16 node, u32 address, u32 *value) { - int err = __amd_smn_rw(node, address, value, false); + int err = __amd_smn_rw(SMN_INDEX_OFFSET, SMN_DATA_OFFSET, node, address, value, false); if (PCI_POSSIBLE_ERROR(*value)) { err = -ENODEV; @@ -93,7 +96,7 @@ EXPORT_SYMBOL_GPL(amd_smn_read); int __must_check amd_smn_write(u16 node, u32 address, u32 value) { - return __amd_smn_rw(node, address, &value, true); + return __amd_smn_rw(SMN_INDEX_OFFSET, SMN_DATA_OFFSET, node, address, &value, true); } EXPORT_SYMBOL_GPL(amd_smn_write); From patchwork Wed Oct 23 17:21:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847728 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2041.outbound.protection.outlook.com [40.107.100.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 885221FF030; Wed, 23 Oct 2024 17:22:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704151; cv=fail; b=RkGtwY1Tb6veLzqFnZY0mah1dD8FxX+jimvM/sGbo6JI3yCD8UbsGCjDtASwUFeFbUmRWQfGI7T0Gg6zxGxiVkCJlyy993llhFTCqVTXBYNfkQq+4CewMyPq2jf7/LQ8nCw/0WC80be2PSVkLzfH6nXsnThvORhT/JggQMGLA7k= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704151; c=relaxed/simple; bh=pDbVg7HJqmlgMsp6/CwOo8NNPuaxwI87QX7YKMHrxOU=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bHIfQRl2SyJj4pg71GtT7I95/RPHEyklP2XOoGZg9ZQmue09nRjpYr85kKQ7w5kqWutbeVwy2Sse5pffrOIq47Nsj49jYr8FweURdOOfDFbl4IXHKkcgh9E2IbN40KBHpcrEUDisPGSeU+eF35MdnsXk4SBAyxPHC5v1UXF4Zms= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=enX2rlyK; arc=fail smtp.client-ip=40.107.100.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="enX2rlyK" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p4GIHuLG9nMlJPyxG6tju6NUS39x1K4xWwvyf0OH7yYOHhpFfNtTjJGziecMgZvkY+GZklSrZ8t11AOIjaoEcy3G3QyVGYC6HSYW475XeZT8v2qjCQ/3eq9zS7XlR2LUHUIj9yIim5NjxYtn9k3QjhqDmu4n/PPbFL5iDkz8wOoteaMgHSD0UKmuaP6Sf5U/9a264F6py00TORxA4WsxYwpz5GdVm3M3cpSKtuKxxpvrZEyiGPIMF27P0a2P8qadlcGylDTcKxLdu0sMKvaVZMG/NchozwNh8vDZlWrqU5Vpo3cfqLq+u3PKcZXrQCo2uuxbH0uT+R/MPo9LrKO3iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1ZYriPdP1FtI13+3BGXDssloX6NanJfQwcT4c3Jh6b8=; b=xMJjcE6wv3qZaDMvLAMlPuJqj67Xlo5H9YSCLbJ1b2WqO42ZJU9pduzSfoNOJGa4Kaph3Q/WxXwsBfgcidjGUCP+qMhnS0FiyCtle5B1sLGufJjetwvauilyEmZFTBejZQCGFbHO2XJKUIqL39hkJ7zrYdGNYxwcEEGimHvjTW1BNb3ZRA8iE/ws3DgKHhFPXXXDG7lIfna+mb0HS1UwFyiBkrjc82JK3rdS9jGRHF7bFDDhCRYEIDCSZA83rSp9NnkJ4HpL4v4StksP5wPBX65vPcjpkKX6V8jVEbLSTw4FQSgICoNnpScEawqs7LdgX5EgzRg1mdovh4gSBPf2Ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1ZYriPdP1FtI13+3BGXDssloX6NanJfQwcT4c3Jh6b8=; b=enX2rlyKqu1zNG1QqQuKrMnNrIb6wHe22jWRzth5+FGubHxmHK3lwwfCczNqsCWD4CJ7FbIYMQQMtugVijJ412KLU8V8qN53ON+l+XPekBXfIwL9leBxnRdDV3yhOkEs8poHi8B81Ant1h4vv/S3DUh7YSY7HJ36GC/7UxGVzfA= Received: from MN2PR01CA0049.prod.exchangelabs.com (2603:10b6:208:23f::18) by PH8PR12MB8429.namprd12.prod.outlook.com (2603:10b6:510:258::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Wed, 23 Oct 2024 17:22:23 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::2d) by MN2PR01CA0049.outlook.office365.com (2603:10b6:208:23f::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.19 via Frontend Transport; Wed, 23 Oct 2024 17:22:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:19 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:15 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 14/16] x86/amd_smn, platform/x86/amd/hsmp: Have HSMP use SMN Date: Wed, 23 Oct 2024 17:21:48 +0000 Message-ID: <20241023172150.659002-15-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|PH8PR12MB8429:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d798d64-b4e9-4f99-d6db-08dcf3873fe1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: 2MEK5KgRKuZGxnxpkYZZnZM7vTzT17BsLisQGAECDr612sJuj6EWAr4G80AyfuniEqCXMM3XhGszZLOe1nDu4tANBUjravbqvqhbNd3qAvt2/tH3kHdHUXPsz612khOu9m1J+zSYPObBkMNa6bFglJ63jpSwQ3w9ximgOUrMXmzvVHIAsj1XKMWO/8LVRFMnSg+6UGLyWyMqHBzVjPyo1ZxkGHgZWC2jbkhHm6BO578u1pRvjY6ZfIdkhKh52j79/bi4jtc6H/v0Wv04E/bRjLBb+HQVgYxTwNwWNUk09H9wpRGMfs83AbVdUCkaoay7wcj1qb6TA8URq/R4KbJ5qeY5F8DhFGvLZyvGJybg0KgubBHWbV1xIbLlDPfHNDapdKpeNSbh6f+KgfSESRkJQLFLRHp49nfxh5j5XfxWCLYI4ANOCWtWNFeGweGewZhqRdUyGIFByceJIOcsJ0HPQHOhdy5GfK4uFZDE/XLkvMgoXi6yB8wyCmebUC0eb/A+OymgZNYO7cuO0uawuV5DdA4MrZztJr+/tO3719nKzC2dkJCK3POthRyLPgKZlrOPxGSR1Tm3Z4gsJNpmAUFC3HilE2cQax/IeBBw5CMz9j0Y+tBWHE9xByhKiH4nQ2WkJMe2i7FLEiXR/eoh7//4wfWi4wNSHLInJ3b/at7Q4ZjKWaC4AVpy83dC9YGUlFllOAvcxfmMeQjKm+YxmDpxWj5cbGgpHpdk53s3fmKKEDueytHNFrBpRGbiZh8ZMY5/CquHpr/wejbaGIOI22OA6sdq/WWverjmtAzC7lbu4Hlu0aD9OyLVoyepjL0fPZHoprh+7cRMezF2tbCI/qSn7MqyhjHSgZSpHnf2XMXsvM7V2r15vKr+kUraTgVrG1sBjgVjOJoOJ19DC29nRSonHRquGmpSlaeOVWqIaufl2glv8ZDU55aHlMhEZiv3uIJUpxR0jbyCeLVXltoJSsFp2QZVcM23KdlSp6Com1cFaUYe/5lN16bSQEZBxMXfOaqNgQ/idju0Bg3x15qj6qNdQuTh8pevIE6sNtyDHJiyfMl8bEaXx8niDeSiI0Slw8hP6qtAhBbjgVhZIW+bbAibA9k1QcRV0bGGeSt9a0E0dkgmOAWScPSsWJkI8ZMi/byzNtrefnfNrBk3sFvixb5uCKpF3syYwf94FbHV4GTYwLpLGArGksEY58x4cfQ6LVexpFxw6SglT2psDyYEZep0TkLj6aG3efGCQ7Ylfpz9uee0p0lQ1oVfRDAsL3cSYWbtLXPNyDgwZpab8ygnFZ8wcsvJpNPQKGL1G4ULeVW342hwBUCfJkAg9Y+TZCodXj+ddcftr0JZ+3QqtdLk7UCUV0ZUlpqZLUAbjOjw4pa+9WUbiz0FUUsROjgGLcM4jaJmKqwNZBRrj9ob5LrEiCpqaw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:19.6886 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d798d64-b4e9-4f99-d6db-08dcf3873fe1 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB8429 The HSMP interface is just an SMN interface with different offsets. Define an HSMP wrapper in the SMN code and have the HSMP platform driver use that rather than a local solution. Also, remove the "root" member from AMD_NB, since there are no more users of it. Signed-off-by: Yazen Ghannam --- arch/x86/include/asm/amd_nb.h | 1 - arch/x86/include/asm/amd_smn.h | 3 +++ arch/x86/kernel/amd_nb.c | 1 - arch/x86/kernel/amd_smn.c | 9 +++++++++ drivers/platform/x86/amd/Kconfig | 2 +- drivers/platform/x86/amd/hsmp.c | 32 +++++--------------------------- 6 files changed, 18 insertions(+), 30 deletions(-) diff --git a/arch/x86/include/asm/amd_nb.h b/arch/x86/include/asm/amd_nb.h index 55c03d3495bc..cbe31e316e39 100644 --- a/arch/x86/include/asm/amd_nb.h +++ b/arch/x86/include/asm/amd_nb.h @@ -27,7 +27,6 @@ struct amd_l3_cache { }; struct amd_northbridge { - struct pci_dev *root; struct pci_dev *misc; struct pci_dev *link; struct amd_l3_cache l3_cache; diff --git a/arch/x86/include/asm/amd_smn.h b/arch/x86/include/asm/amd_smn.h index 6850de69f863..f0eb12859c42 100644 --- a/arch/x86/include/asm/amd_smn.h +++ b/arch/x86/include/asm/amd_smn.h @@ -8,4 +8,7 @@ int __must_check amd_smn_read(u16 node, u32 address, u32 *value); int __must_check amd_smn_write(u16 node, u32 address, u32 value); +/* Should only be used by the HSMP driver. */ +int __must_check amd_smn_hsmp_rdwr(u16 node, u32 address, u32 *value, bool write); + #endif /* _ASM_X86_AMD_SMN_H */ diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c index 10cdeddeda02..4c22317a6dfe 100644 --- a/arch/x86/kernel/amd_nb.c +++ b/arch/x86/kernel/amd_nb.c @@ -73,7 +73,6 @@ static int amd_cache_northbridges(void) amd_northbridges.nb = nb; for (i = 0; i < amd_northbridges.num; i++) { - node_to_amd_nb(i)->root = amd_node_get_root(i); node_to_amd_nb(i)->misc = amd_node_get_func(i, 3); node_to_amd_nb(i)->link = amd_node_get_func(i, 4); } diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index 997fd3edd9c0..527dda8e3a2b 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -18,6 +18,9 @@ static DEFINE_MUTEX(smn_mutex); #define SMN_INDEX_OFFSET 0x60 #define SMN_DATA_OFFSET 0x64 +#define HSMP_INDEX_OFFSET 0xc4 +#define HSMP_DATA_OFFSET 0xc8 + /* * SMN accesses may fail in ways that are difficult to detect here in the called * functions amd_smn_read() and amd_smn_write(). Therefore, callers must do @@ -100,6 +103,12 @@ int __must_check amd_smn_write(u16 node, u32 address, u32 value) } EXPORT_SYMBOL_GPL(amd_smn_write); +int __must_check amd_smn_hsmp_rdwr(u16 node, u32 address, u32 *value, bool write) +{ + return __amd_smn_rw(HSMP_INDEX_OFFSET, HSMP_DATA_OFFSET, node, address, value, write); +} +EXPORT_SYMBOL_GPL(amd_smn_hsmp_rdwr); + static int amd_cache_roots(void) { u16 node, num_nodes = amd_num_nodes(); diff --git a/drivers/platform/x86/amd/Kconfig b/drivers/platform/x86/amd/Kconfig index f88682d36447..e100b315c62b 100644 --- a/drivers/platform/x86/amd/Kconfig +++ b/drivers/platform/x86/amd/Kconfig @@ -8,7 +8,7 @@ source "drivers/platform/x86/amd/pmc/Kconfig" config AMD_HSMP tristate "AMD HSMP Driver" - depends on AMD_NB && X86_64 && ACPI + depends on AMD_SMN && X86_64 && ACPI help The driver provides a way for user space tools to monitor and manage system management functionality on EPYC server CPUs from AMD. diff --git a/drivers/platform/x86/amd/hsmp.c b/drivers/platform/x86/amd/hsmp.c index 8fcf38eed7f0..544efb0255c0 100644 --- a/drivers/platform/x86/amd/hsmp.c +++ b/drivers/platform/x86/amd/hsmp.c @@ -10,7 +10,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include -#include +#include #include #include #include @@ -48,9 +48,6 @@ #define SMN_HSMP_MSG_RESP 0x0010980 #define SMN_HSMP_MSG_DATA 0x00109E0 -#define HSMP_INDEX_REG 0xc4 -#define HSMP_DATA_REG 0xc8 - #define HSMP_CDEV_NAME "hsmp_cdev" #define HSMP_DEVNODE_NAME "hsmp" #define HSMP_METRICS_TABLE_NAME "metrics_bin" @@ -62,8 +59,6 @@ #define MSG_ARGOFF_STR "MsgArgOffset" #define MSG_RESPOFF_STR "MsgRspOffset" -#define MAX_AMD_SOCKETS 8 - struct hsmp_mbaddr_info { u32 base_addr; u32 msg_id_off; @@ -79,7 +74,6 @@ struct hsmp_socket { void __iomem *virt_base_addr; struct semaphore hsmp_sem; char name[HSMP_ATTR_GRP_NAME_SIZE]; - struct pci_dev *root; struct device *dev; u16 sock_ind; }; @@ -98,20 +92,7 @@ static struct hsmp_plat_device plat_dev; static int amd_hsmp_pci_rdwr(struct hsmp_socket *sock, u32 offset, u32 *value, bool write) { - int ret; - - if (!sock->root) - return -ENODEV; - - ret = pci_write_config_dword(sock->root, HSMP_INDEX_REG, - sock->mbinfo.base_addr + offset); - if (ret) - return ret; - - ret = (write ? pci_write_config_dword(sock->root, HSMP_DATA_REG, *value) - : pci_read_config_dword(sock->root, HSMP_DATA_REG, value)); - - return ret; + return amd_smn_hsmp_rdwr(sock->sock_ind, sock->mbinfo.base_addr + offset, value, write); } static void amd_hsmp_acpi_rdwr(struct hsmp_socket *sock, u32 offset, @@ -749,10 +730,7 @@ static int init_platform_device(struct device *dev) int ret, i; for (i = 0; i < plat_dev.num_sockets; i++) { - if (!node_to_amd_nb(i)) - return -ENODEV; sock = &plat_dev.sock[i]; - sock->root = node_to_amd_nb(i)->root; sock->sock_ind = i; sock->dev = dev; sock->mbinfo.base_addr = SMN_HSMP_BASE; @@ -946,11 +924,11 @@ static int __init hsmp_plt_init(void) int ret = -ENODEV; /* - * amd_nb_num() returns number of SMN/DF interfaces present in the system + * amd_num_nodes() returns number of SMN/DF interfaces present in the system * if we have N SMN/DF interfaces that ideally means N sockets */ - plat_dev.num_sockets = amd_nb_num(); - if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_SOCKETS) + plat_dev.num_sockets = amd_num_nodes(); + if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_NUM_NODES) return ret; ret = platform_driver_register(&amd_hsmp_driver); From patchwork Wed Oct 23 17:21:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847729 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6F981CF7BE; Wed, 23 Oct 2024 17:22:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704152; cv=fail; b=jwVZR+JrmfJ87gJJCUgpC+5wwEnhjBxMDtqmpqAzhGmtKdfjTMZOx2WcojlQtQyQtJAGO7o9d97MyG9ZDPUC8I68KzUqpFKE+SGO4knSOZfRAlu3Xxmnyf+xazL0BHnXKoCr49wo0jgPmnfXrh8+27UsU5rHruGCkKzLw5nwjao= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704152; c=relaxed/simple; bh=cpaHQNQYKWIBagKXMosbcIT0AOvTwGwycNobHnSYdBQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tHuZAvphoEUrufOMAB3t519/TMIyD+Br47Soemf4Gq1NmfP/+GMVEIzAFx2KG8giYe1b/fMWzpHM6OEfsiy4Zqc9P0J6nusvCg6+cO7kX1ufqNx7EYyZLP0Zf/SECrGH7VqWfvGadZOkYUPVEClVLeSVETc3MrV68ojlYLcZepc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=Wr6xGLLb; arc=fail smtp.client-ip=40.107.236.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="Wr6xGLLb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yo17bFs+KCihdj7WeRHgeTNFyNO6cPnNllWGgNL7Xty+TuuElnAGB04ER0nXo66UrKTHGLmgMEfYhN4A1HLTeL1SqgNPuRYVfdW8kBTGxJIUfsOJuZSR3DvMt78RXtB4NY8uxsMQisouwyFdVOfB3lnDujz5YvOjqA8yeV9bZBOuGtRTysnxV/cKnM1l6+6NOgdPmAzfGWtXUGoMgVR6gRAQ4JMV/HPVbQABJQvylPwgYiTWYh1gpF8NthBpnQMqS5XAr94nHM9gi8dUSX/JKRw61wjrRp3svtp/yS2v8Wuw7dpW97sdGnhwBDZgjzaArnDhXlijCLghTDZjokETzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WLuTE6hriWkKIFDMSY2Dh/W7vTymR8HiXx5zbjYJhIM=; b=WikrF+b3jZw+rA5h3QUyUyyLEkv/mbt7IuwdLlxhh3QKfGa/TG+59SAHk0VhKUohHgX/uytYJBXE2OEldVhFWeKO2CS0ZN117trmA/JHtelFPaypORJuQsWqRJUOcwqTEKbN9gmLG6W29s5ajYgYIFSnO99q2kq8haP6FVhB8nhJB/JztgrD9V2+acz0s6bcUM9SS/0DQKlfw3A9C4v/NxGfsNq+l+ES1IglynJHAs7OWh/Wjn83OJLj3xGKVhgMXvqYK8Vuf2cey3ZPAe+NYQFX4trEHLPon6OtrtFXZTPecj+Poeq8g2ChAKrsq0lTTBc1dBmWXg24QX385P+Plg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WLuTE6hriWkKIFDMSY2Dh/W7vTymR8HiXx5zbjYJhIM=; b=Wr6xGLLbK/9JYKeRhDAIUk6WxQCcWqu15+JeTBphdB9yBWsIiR0AxmMGVobugzPyyYo0CoVE/NtoTUHT+CTwRf8r3hCzGKgQhjAMC2PfRgF1u3ImVi5hsFvKQ9GNlpAh6sOjHYXdhaOeV0MPvVBI9h7L0vHadk+wZUTuveS2HNY= Received: from MN2PR01CA0058.prod.exchangelabs.com (2603:10b6:208:23f::27) by LV3PR12MB9259.namprd12.prod.outlook.com (2603:10b6:408:1b0::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.21; Wed, 23 Oct 2024 17:22:26 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::ec) by MN2PR01CA0058.outlook.office365.com (2603:10b6:208:23f::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:24 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:24 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:16 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 15/16] x86/amd_smn: Add SMN offsets to exclusive region access Date: Wed, 23 Oct 2024 17:21:49 +0000 Message-ID: <20241023172150.659002-16-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|LV3PR12MB9259:EE_ X-MS-Office365-Filtering-Correlation-Id: d2c1b791-fff6-4f27-6908-08dcf387427d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|7416014|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: ZzfoPRc8a4rSSqYFak2+FIrfjpON1jXSxv3QIaQhkWsR8+pPSrJAOxfMHkCYqkrnxQgWWd1aiu3h/J6oeu/uwE8jllDa4BexaimZWKtyxzqAPSPs6PUfVn5Pqt/TwcmG5AGxiMCraqQeWBgDJwJYskSRpw9NQUIk1JsOLpGFCjDo0MT4XbFPJfGKBAbRIOIvZurv1e31SVxNaHgFPMJa4XDnX3dG50tCMLSzdUnlKF4JFfc6bASL7/lmgxGPD9Jzh/X6KLpmEFhD9D9fSTSu4Ie06V/L9SnNJldixNzNoQoOXPKKb6QxxxBr3svJPz5rBmV+65665lSKZKQURAeVL6/tI7AxiK34W5X/SKf/Ax/Ddio9P0CLU8QlQAcwuv7lu2k1zsYIP/VB+a6iEqEpdYxR1twdi8joLOdCSztNX3NarRk07+lbuHM86s/cZL+nGsacKxCNKkh3Nb3aW44ZY7+zXrT/ORd0XaZe9f9z54plTkcAAfWNaqsxmv9Y8DpYPv9mDCod1xZCLgCy0+Slfkry6bHWIPAP6I2gA2n1dUFbZ4ibH6u5VvaE39F30fYnBpPCoP10oBpBt4Sm0mNIBSUHDyHlGrJ+VI3Yb5de5p4QyTxcHh5ECCjMD1D01PUfo6YgP9litL/1Q5hFAotGIIvkQ9ta2zxbdp1ocQLLsAPAa2QXtMidF0GMMdjbFHblx4n6eeaADNeN66tknX2X5h6YllkZVcwgKtnGoLUYbEX2XTAe/RuLm7HY8qniN/9Wt2U89+Ta0xxUnBRtuew8vfDB5EWocPakEAwaORhvJ9MRvA6Bgmb6Yiv0KebXv/IYZ3nHss8vJNwKveRAbtcwxBeykASkexkGJDkFPv+E8HxUkdcgV6UJ7xjZ0fcwor9M9OJJgUOid08mhbDt3mNfaDAdDfb8WmdmD7x2Znx6zUuECP+mqT2sCAE/slgG02yNVGYK0ZERIei0ABOeHjPT7FKp9qAml1BOmdWgwIDDoblqy13dR5VZhh2ybS/0jdjPFfhwag0QRs0NPVQo9bbTQt3WdqM1UFsfUk6reAIE+DwM9U85+uC2so1k1Vy9Lhj63haLn9SPRn3JVRkVhYPRkBC2g8P9uOQOs3h/nw3IVl+qJ3H/nkI9w2nwxz+WH4vG/VKxuabSTVlaOwFEYHQK8pnTlvwUB3ifPKmcefsM6MeldfHfrxeqlXJGIn8oSEwzemva+1T8RrMEftcta+u0f/wCViUEKcqMiCbPVNBp0Abj/1/4M3zI/lMAhAbZTDOyzV3HvuEAFmru502+GGhW2oVIpHUZTYlKPSAZfg82pRt7/xOdpakSvJCzv5R4LDJmSMenW1ReFBPefFkK3w7JAc3Y4xdg3gYGgO2s5C4kvnryb1INbPG4Qt3ojmD+2ZECljVr63LDCV+Yj6hWrpFMWg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(7416014)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:24.0011 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d2c1b791-fff6-4f27-6908-08dcf387427d X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9259 From: Mario Limonciello Offsets 0x60 and 0x64 are used internally by kernel drivers that call the amd_smn_read() and amd_smn_write() functions. If userspace accesses the regions at the same time as the kernel it may cause malfunctions in drivers using the offsets. Add these offsets to the exclusions so that the kernel is tainted if a non locked down userspace tries to access them. Signed-off-by: Mario Limonciello Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_smn.c | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index 527dda8e3a2b..aeebd63234f9 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -14,6 +14,7 @@ static struct pci_dev **amd_roots; /* Protect the PCI config register pairs used for SMN. */ static DEFINE_MUTEX(smn_mutex); +static bool smn_exclusive; #define SMN_INDEX_OFFSET 0x60 #define SMN_DATA_OFFSET 0x64 @@ -72,6 +73,9 @@ static int __amd_smn_rw(u8 i_off, u8 d_off, u16 node, u32 address, u32 *value, b guard(mutex)(&smn_mutex); + if (!smn_exclusive) + return err; + err = pci_write_config_dword(root, i_off, address); if (err) { pr_warn("Error programming SMN address 0x%x.\n", address); @@ -123,6 +127,39 @@ static int amd_cache_roots(void) return 0; } +static int reserve_root_config_spaces(void) +{ + struct pci_dev *root = NULL; + struct pci_bus *bus = NULL; + + while ((bus = pci_find_next_bus(bus))) { + /* Root device is Device 0 Function 0 on each Primary Bus. */ + root = pci_get_slot(bus, 0); + if (!root) + continue; + + if (root->vendor != PCI_VENDOR_ID_AMD && + root->vendor != PCI_VENDOR_ID_HYGON) + continue; + + pci_dbg(root, "Reserving PCI config space\n"); + + /* + * There are a few SMN index/data pairs and other registers + * that shouldn't be accessed by user space. + * So reserve the entire PCI config space for simplicity rather + * than covering specific registers piecemeal. + */ + if (!pci_request_config_region_exclusive(root, 0, PCI_CFG_SPACE_SIZE, NULL)) { + pci_err(root, "Failed to reserve config space\n"); + return -EEXIST; + } + } + + smn_exclusive = true; + return 0; +} + static int __init amd_smn_init(void) { int err; @@ -139,6 +176,10 @@ static int __init amd_smn_init(void) if (err) return err; + err = reserve_root_config_spaces(); + if (err) + return err; + return 0; } From patchwork Wed Oct 23 17:21:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yazen Ghannam X-Patchwork-Id: 13847730 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2081.outbound.protection.outlook.com [40.107.95.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14E561D0144; Wed, 23 Oct 2024 17:22:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.95.81 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704152; cv=fail; b=CVoSb/D3lP7Z0pEIWGB6RIxXOLOWgDHBRdQie7E7ng+z29vaTzSNoJMAkKEXwauMgbo6wpSBfMQ51DY3mp+RW3IPiPArX0IWkoRvoSTqzyXxSyiUFpb/7BGlmuKCBJ6EGwHVbMdsYaERQGIp+q4IwOy8zys5kwRW95iO+hdDHX8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729704152; c=relaxed/simple; bh=woJUv7J2gjhRzxTW9WuXXqCKMVBAsBIvB/5e5OV6ZYk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lov8TTj56FwwouSK+b1KOEO6840K0IJuhqgaT1wanFj4HMG3P+D3tUYZMp98qi4JjUEwb4mr57B4aLDZZs2jxRSwES5jveNAzoFwvI/AFccO4wRsY/rmp+XkSIcrk06dmA265AXcC5KPZ29TZYbwzCJhQelGhHXR3rCInYrPKN4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=iPvIQ3ij; arc=fail smtp.client-ip=40.107.95.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="iPvIQ3ij" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pI3y2fdR8/E4Tp1/ctHUFBB0/NoNOfGvJDEVFw5GgWrkY8o7UKPdvqW6b5E6ijDOo7k3dJoSowDaFGReyxpfUEo306kRSSgWhApVHJj0KyonzIj5ebAo63LCui7TmLUd4nnxZjEGgUXdbOUUVkXpMbCCSjU639SR9F6mrLYHmOra48GOne6IUwRcINKgKSuUUV8+mN1EPnRZu5OzqAkf4HGFeYpE9o60LjBG1gKz7wXXRF+VP5JGzjNOakhV//3v81q2Jjv7UtVIve4G+dcHkyF+hcQjGdLtg3WtMIpkfdnb7075apoPEuH14JBN2xLF5WzLJy9CUiyrIPcJa8DrQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=C6t5SZ8L9ft5wo8owTgcgr9wDdoP3FGUdljNwh4/UNs=; b=QyyuTi2xwGKrVjAWAQndbAI/iuCvFNQjt9d16vATpkpgAf1F9LyfEGXa4iBlTFG2tsgRgUqeM6oRsZLOiy8JQRRltLz/hIMr3XAJ7gfozf46L6u7UEpDLWTHE00MvyJNKGcK3YYhdlFzG9B8riMfV/XfqmDP2obDco+JjDWPrXcBQd2rhKvYzHuMYbB2fz7v6SR2e0p6JUJpyD+R6htiXGSW0U32VF/SXgvzrwvj95Oicu00XmMWcqCZQZ2m8X+V45XoQwi7hk/ZwwiUyXIkZstlkePGopFMA+Adid893fSoOYUgyV0mlvRBNxH9933KyV2u4oF8SQY3d4g5tXC0MA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C6t5SZ8L9ft5wo8owTgcgr9wDdoP3FGUdljNwh4/UNs=; b=iPvIQ3ij9pX/TINYNsR4QPZ21Aj0jYs4koY+8P/iWziaHSZGoFB6Gdt9DoVYv5eoy8z+psvMvQweThAYFg107xJD6lfInObq97oZBj4ebPDzjc6dsIB/s2kRkgtOaEqlfGZ6jkZBc6uRIBdmdRie4asbmm1lkOhm8ohrrPg58Gs= Received: from MN2PR01CA0056.prod.exchangelabs.com (2603:10b6:208:23f::25) by BL1PR12MB5946.namprd12.prod.outlook.com (2603:10b6:208:399::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Wed, 23 Oct 2024 17:22:27 +0000 Received: from BL6PEPF0001AB4C.namprd04.prod.outlook.com (2603:10b6:208:23f:cafe::f9) by MN2PR01CA0056.outlook.office365.com (2603:10b6:208:23f::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend Transport; Wed, 23 Oct 2024 17:22:27 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by BL6PEPF0001AB4C.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 17:22:27 +0000 Received: from purico-9eb2host.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 23 Oct 2024 12:22:17 -0500 From: Yazen Ghannam To: CC: , , , , , , , , , , , , , , , , , , , Yazen Ghannam Subject: [PATCH 16/16] x86/amd_smn: Add support for debugfs access to SMN registers Date: Wed, 23 Oct 2024 17:21:50 +0000 Message-ID: <20241023172150.659002-17-yazen.ghannam@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241023172150.659002-1-yazen.ghannam@amd.com> References: <20241023172150.659002-1-yazen.ghannam@amd.com> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4C:EE_|BL1PR12MB5946:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f102ef4-3a53-480e-3dcd-08dcf3874479 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: Qf5ToSXRWZbo1JJCD5GlkMS7CphGbkYExfxyQLrdynxd0yTAEohpc9zbzQJP+zhVZAOezcuc5/HPe/T/vp1iUzNZm6ybOlPrkaLz1c3aZIlrAdfioBUBNimwEkzT6xndvJldWTEoi1c6erC/ZOj/rCys1i9RPqVHGgEnG+aB8TympJPYdLvlTL0UZhfeK4Cry5fnSR+Vuv9NTJwOgFQ5jLwRIFIhoy9BPc+aA9ApOlGR4qcc7hKtFmnNh6TnyCyEHMe2n4I9d1qMi7I2Up3/1wnkE0CdLOl/N60zcpL5kyX+0b+MenLRKw7kcSGKvT7dWlSq30aya6IN+vrq9YG0mAl/iKTPjKo726Y5LNoyrn6EzAefpd9IdUmiBtrRwLoUxjpv4RnANyqOTMmWHM0ZBpJ6fY1A0q2KnNlc5sswkMe/rTk9Fxq4ISQC69b5OXfbtrmtJNCT5Lq+1p8lgyr1j7UbIdcDuFEzCuNYd6cke93GClobmZBvZmG0Y2LR7cFXxrMEvpsPKAcMKwop6qGRfwVgy8ddmPDBvdJKf44MKNVHCwfYIV6/R5sOrlLm2CW9SH7V6bGW/0z+RgImsfbpTy8w8jUAgtzXVcKZHqW0j98fCyMadI3hJsOGaPr5I9rjFZroTYW/SQAFBGmfCr/M3uk0MkmC2qHka8cNtf9+hypIF9MCK2UFZ7fOhUHuoBxeLdT3rKn0LIh2WMhIZF2MmsOeXkKS+0902FgmC2z6O8YINjvQ9CVDEHzaTNCtmlTQgdcKSKZPGgNb0kDvfmHueB93vsaZH5bTIjnqcSSlIYkPJQ4tOt826NYDc/Iz1MJaL4A39PQUtJtUEb8VWd1EoaBIueZD6wkf7O5kIa2Sk4y+Q2KWFBkkTGuFZpiioldEcsuz4dgxlmSgNsFdwVAK6FUCK4aMcQzWpAmdxTaA7u3E/VDpSvTQNYGqqI1OjibVh/M2ZIn686LJ6LdJFk+awz6HvcwpFODZ+p39ezA+OIPoc+vFglib22w7hjk2H01YlMPwJXi6CJJ6/b1NNyKVbJJXKImdxZNYP4jyC6EKCVKTLw6UdJe7TorIbnUHBKpwKx3+mb5wHMnnkYnwQLaqgxSfk/Sm+BCVeo9ZQ7ke+r6ZRjD8BBj9K5HGkp1/2vJWIgzZBVR4yNwDS5IULVX4BTPa646TbmoqIyarr4+EPuABLxnBb20Y8hKWlPGeiOOmMoLbSkKKG8ziTEmi9uopgNCIcARFOjgSbvWCkHRvJbe6yKt+4m35L/pkjAl5NjEFqw6bigVUK48DNX4CQk79SinRLHjqwEDT9HSseEfX419AWAbusHeAXtyM9MQL55a1LJFDwHLUdqSM/4l6WWXCl1WDpHKy8jDUIaJPA6R52PT+xr6FM2XmbY4fmeO3a4oIfRCY/4QpGhYj9S523lDkmw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 17:22:27.3604 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9f102ef4-3a53-480e-3dcd-08dcf3874479 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB4C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5946 From: Mario Limonciello There are certain registers on AMD Zen systems that can only be accessed through SMN. Introduce a new interface that provides debugfs files for accessing SMN. As this introduces the capability for userspace to manipulate the hardware in unpredictable ways, taint the kernel when writing. Signed-off-by: Mario Limonciello Signed-off-by: Yazen Ghannam --- arch/x86/kernel/amd_smn.c | 83 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/arch/x86/kernel/amd_smn.c b/arch/x86/kernel/amd_smn.c index aeebd63234f9..618d9a05f3d7 100644 --- a/arch/x86/kernel/amd_smn.c +++ b/arch/x86/kernel/amd_smn.c @@ -7,6 +7,7 @@ #define pr_fmt(fmt) "amd_smn: " fmt #include +#include #include @@ -113,6 +114,82 @@ int __must_check amd_smn_hsmp_rdwr(u16 node, u32 address, u32 *value, bool write } EXPORT_SYMBOL_GPL(amd_smn_hsmp_rdwr); +static struct dentry *debugfs_dir; +static u16 debug_node; +static u32 debug_address; + +static ssize_t smn_node_write(struct file *file, const char __user *userbuf, + size_t count, loff_t *ppos) +{ + int ret; + + ret = kstrtou16_from_user(userbuf, count, 0, &debug_node); + if (ret) + return ret; + + return count; +} + +static int smn_node_show(struct seq_file *m, void *v) +{ + seq_printf(m, "0x%08x\n", debug_node); + return 0; +} + +static ssize_t smn_address_write(struct file *file, const char __user *userbuf, + size_t count, loff_t *ppos) +{ + int ret; + + ret = kstrtouint_from_user(userbuf, count, 0, &debug_address); + if (ret) + return ret; + + return count; +} + +static int smn_address_show(struct seq_file *m, void *v) +{ + seq_printf(m, "0x%08x\n", debug_address); + return 0; +} + +static int smn_value_show(struct seq_file *m, void *v) +{ + u32 val; + int ret; + + ret = amd_smn_read(debug_node, debug_address, &val); + if (ret) + return ret; + + seq_printf(m, "0x%08x\n", val); + return 0; +} + +static ssize_t smn_value_write(struct file *file, const char __user *userbuf, + size_t count, loff_t *ppos) +{ + u32 val; + int ret; + + ret = kstrtouint_from_user(userbuf, count, 0, &val); + if (ret) + return ret; + + add_taint(TAINT_USER, LOCKDEP_STILL_OK); + + ret = amd_smn_write(debug_node, debug_address, val); + if (ret) + return ret; + + return count; +} + +DEFINE_SHOW_STORE_ATTRIBUTE(smn_node); +DEFINE_SHOW_STORE_ATTRIBUTE(smn_address); +DEFINE_SHOW_STORE_ATTRIBUTE(smn_value); + static int amd_cache_roots(void) { u16 node, num_nodes = amd_num_nodes(); @@ -180,6 +257,12 @@ static int __init amd_smn_init(void) if (err) return err; + debugfs_dir = debugfs_create_dir("amd_smn", arch_debugfs_dir); + + debugfs_create_file("node", 0600, debugfs_dir, NULL, &smn_node_fops); + debugfs_create_file("address", 0600, debugfs_dir, NULL, &smn_address_fops); + debugfs_create_file("value", 0600, debugfs_dir, NULL, &smn_value_fops); + return 0; }