From: tip-bot for Pu Wen <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: bp@suse.de, hpa@zytor.com, linux-kernel@vger.kernel.org,
tglx@linutronix.de, mingo@kernel.org, puwen@hygon.cn
Subject: [tip:x86/cpu] x86/pci, x86/amd_nb: Add Hygon Dhyana support to PCI and northbridge
Date: Thu, 27 Sep 2018 10:04:59 -0700 [thread overview]
Message-ID: <tip-c6babb5806b77c6ca7078c3487bb0a29704a4e38@git.kernel.org> (raw)
In-Reply-To: <5f8877bd413f2ea0833378dd5454df0720e1c0df.1537885177.git.puwen@hygon.cn>
Commit-ID: c6babb5806b77c6ca7078c3487bb0a29704a4e38
Gitweb: https://git.kernel.org/tip/c6babb5806b77c6ca7078c3487bb0a29704a4e38
Author: Pu Wen <puwen@hygon.cn>
AuthorDate: Tue, 25 Sep 2018 22:46:11 +0800
Committer: Borislav Petkov <bp@suse.de>
CommitDate: Thu, 27 Sep 2018 18:28:58 +0200
x86/pci, x86/amd_nb: Add Hygon Dhyana support to PCI and northbridge
Hygon's PCI vendor ID is 0x1d94, and there are PCI devices
0x1450/0x1463/0x1464 for the host bridge on the Hygon Dhyana platform.
Add Hygon Dhyana support to the PCI and northbridge subsystems by using
the code path of AMD family 17h.
[ bp: Massage commit message, sort local vars into reverse xmas tree
order and move the amd_northbridges.num check up. ]
Signed-off-by: Pu Wen <puwen@hygon.cn>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Bjorn Helgaas <bhelgaas@google.com> # pci_ids.h
Cc: tglx@linutronix.de
Cc: mingo@redhat.com
Cc: hpa@zytor.com
Cc: x86@kernel.org
Cc: thomas.lendacky@amd.com
Cc: helgaas@kernel.org
Cc: linux-pci@vger.kernel.org
Link: https://lkml.kernel.org/r/5f8877bd413f2ea0833378dd5454df0720e1c0df.1537885177.git.puwen@hygon.cn
---
arch/x86/kernel/amd_nb.c | 45 +++++++++++++++++++++++++++++++++++++--------
arch/x86/pci/amd_bus.c | 6 ++++--
include/linux/pci_ids.h | 2 ++
3 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index b51c6b183a35..a6eca647bc76 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -61,6 +61,21 @@ static const struct pci_device_id amd_nb_link_ids[] = {
{}
};
+static const struct pci_device_id hygon_root_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_ROOT) },
+ {}
+};
+
+const struct pci_device_id hygon_nb_misc_ids[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_HYGON, PCI_DEVICE_ID_AMD_17H_DF_F3) },
+ {}
+};
+
+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 },
@@ -194,15 +209,24 @@ EXPORT_SYMBOL_GPL(amd_df_indirect_read);
int amd_cache_northbridges(void)
{
- u16 i = 0;
- struct amd_northbridge *nb;
+ 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 amd_northbridge *nb;
+ u16 i = 0;
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;
+ link_ids = hygon_nb_link_ids;
+ }
+
misc = NULL;
- while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL)
+ while ((misc = next_northbridge(misc, misc_ids)) != NULL)
i++;
if (!i)
@@ -218,11 +242,11 @@ int amd_cache_northbridges(void)
link = misc = root = NULL;
for (i = 0; i != amd_northbridges.num; i++) {
node_to_amd_nb(i)->root = root =
- next_northbridge(root, amd_root_ids);
+ next_northbridge(root, root_ids);
node_to_amd_nb(i)->misc = misc =
- next_northbridge(misc, amd_nb_misc_ids);
+ next_northbridge(misc, misc_ids);
node_to_amd_nb(i)->link = link =
- next_northbridge(link, amd_nb_link_ids);
+ next_northbridge(link, link_ids);
}
if (amd_gart_present())
@@ -261,6 +285,7 @@ EXPORT_SYMBOL_GPL(amd_cache_northbridges);
*/
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;
@@ -268,8 +293,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;
+
device >>= 16;
- for (id = amd_nb_misc_ids; id->vendor; id++)
+ for (id = misc_ids; id->vendor; id++)
if (vendor == id->vendor && device == id->device)
return true;
return false;
@@ -281,7 +309,8 @@ struct resource *amd_get_mmconfig_range(struct resource *res)
u64 base, msr;
unsigned int segn_busn_bits;
- if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
+ if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
+ boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
return NULL;
/* assume all cpus from fam10h have mmconfig */
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c
index 649bdde63e32..bfa50e65ef6c 100644
--- a/arch/x86/pci/amd_bus.c
+++ b/arch/x86/pci/amd_bus.c
@@ -93,7 +93,8 @@ static int __init early_root_info_init(void)
vendor = id & 0xffff;
device = (id>>16) & 0xffff;
- if (vendor != PCI_VENDOR_ID_AMD)
+ if (vendor != PCI_VENDOR_ID_AMD &&
+ vendor != PCI_VENDOR_ID_HYGON)
continue;
if (hb_probes[i].device == device) {
@@ -390,7 +391,8 @@ static int __init pci_io_ecs_init(void)
static int __init amd_postcore_init(void)
{
- if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
+ if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
+ boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
return 0;
early_root_info_init();
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index d157983b84cf..8a0841c73f81 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2561,6 +2561,8 @@
#define PCI_VENDOR_ID_AMAZON 0x1d0f
+#define PCI_VENDOR_ID_HYGON 0x1d94
+
#define PCI_VENDOR_ID_TEKRAM 0x1de1
#define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
next prev parent reply other threads:[~2018-09-27 17:05 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-23 9:30 [PATCH v8 00/16] Add support for Hygon Dhyana Family 18h processor Pu Wen
2018-09-23 9:33 ` [PATCH v8 01/16] x86/cpu: Create Hygon Dhyana architecture support file Pu Wen
2018-09-27 17:00 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:33 ` [PATCH v8 02/16] x86/cpu: Get cache info and setup cache cpumap for Hygon Dhyana Pu Wen
2018-09-27 17:01 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 03/16] x86/cpu/mtrr: Support TOP_MEM2 and get MTRR number Pu Wen
2018-09-27 17:02 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 04/16] x86/smpboot: SMP init no delay and not flush caches before sleep Pu Wen
2018-09-27 17:02 ` [tip:x86/cpu] x86/smpboot: Do not use BSP INIT delay and MWAIT to idle on Dhyana tip-bot for Pu Wen
2018-09-23 9:34 ` [PATCH v8 05/16] perf/x86: Add Hygon Dhyana support to PMU infrastructure Pu Wen
2018-09-27 17:03 ` [tip:x86/cpu] x86/events: " tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 06/16] x86/alternative: Init ideal_nops for Hygon Dhyana Pu Wen
2018-09-27 17:03 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 07/16] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-23 11:10 ` Borislav Petkov
2018-09-23 12:54 ` Pu Wen
2018-09-24 15:24 ` Borislav Petkov
2018-09-25 12:27 ` Pu Wen
2018-09-25 12:30 ` Borislav Petkov
2018-09-25 12:57 ` Pu Wen
2018-09-25 14:45 ` [PATCH 1/2] x86/amd_nb: Add vendor checking for strict function access Pu Wen
2018-09-27 17:04 ` [tip:x86/cpu] x86/amd_nb: Check vendor in AMD-only functions tip-bot for Pu Wen
2018-09-25 14:46 ` [PATCH 2/2] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-27 17:04 ` tip-bot for Pu Wen [this message]
2018-09-23 9:35 ` [PATCH v8 08/16] x86/apic: Add Hygon Dhyana support to APIC Pu Wen
2018-09-27 17:05 ` [tip:x86/cpu] x86/apic: Add Hygon Dhyana support tip-bot for Pu Wen
2018-09-23 9:35 ` [PATCH v8 09/16] x86/bugs: Add mitigation to spectre and no meltdown for Hygon Dhyana Pu Wen
2018-09-27 17:06 ` [tip:x86/cpu] x86/bugs: Add Hygon Dhyana to the respective mitigation machinery tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 10/16] x86/mce: Add Hygon Dhyana support to MCE infrastructure Pu Wen
2018-09-23 9:36 ` [v8,10/16] " Pu Wen
2018-09-27 17:06 ` [tip:x86/cpu] x86/mce: Add Hygon Dhyana support to the MCA infrastructure tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 11/16] x86/kvm: Add Hygon Dhyana support to KVM infrastructure Pu Wen
2018-09-27 17:07 ` [tip:x86/cpu] x86/kvm: Add Hygon Dhyana support to KVM tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 12/16] x86/xen: Add Hygon Dhyana support to Xen Pu Wen
2018-09-27 17:07 ` [tip:x86/cpu] " tip-bot for Pu Wen
2018-09-23 9:36 ` [PATCH v8 12/16] " Pu Wen
2018-09-23 9:37 ` [PATCH v8 13/16] ACPI, x86: Add Hygon Dhyana support Pu Wen
2018-09-27 17:08 ` [tip:x86/cpu] ACPI: " tip-bot for Pu Wen
2018-09-23 9:37 ` [PATCH v8 14/16] cpufreq, x86: " Pu Wen
2018-09-27 17:08 ` [tip:x86/cpu] cpufreq: " tip-bot for Pu Wen
2018-09-23 9:37 ` [PATCH v8 15/16] EDAC, amd64: " Pu Wen
2018-09-23 9:37 ` [v8,15/16] " Pu Wen
2018-09-23 9:38 ` [PATCH v8 16/16] cpupower, x86: " Pu Wen
-- strict thread matches above, loose matches on Subject: below --
2018-09-10 13:15 [PATCH v6 00/16] Add support for Hygon Dhyana Family 18h processor Pu Wen
2018-09-10 13:15 ` [PATCH v6 01/16] x86/cpu: Create Hygon Dhyana architecture support file Pu Wen
2018-09-10 16:38 ` Borislav Petkov
2018-09-11 6:33 ` Pu Wen
2018-09-10 13:15 ` [PATCH v6 02/16] x86/cpu: Get cache info and setup cache cpumap for Hygon Dhyana Pu Wen
2018-09-10 13:16 ` [PATCH v6 03/16] x86/cpu/mtrr: Support TOP_MEM2 and get MTRR number Pu Wen
2018-09-10 18:06 ` Borislav Petkov
2018-09-10 18:06 ` Borislav Petkov
2018-09-11 6:39 ` Pu Wen
2018-09-10 13:16 ` [PATCH v6 04/16] x86/smpboot: SMP init nodelay and not flush caches before sleep Pu Wen
2018-09-10 13:16 ` [PATCH v6 05/16] perf/x86: Add Hygon Dhyana support to PMU infrastructure Pu Wen
2018-09-10 18:17 ` Borislav Petkov
2018-09-11 7:00 ` Pu Wen
2018-09-10 13:16 ` [PATCH v6 06/16] x86/alternative: Init ideal_nops for Hygon Dhyana Pu Wen
2018-09-10 13:17 ` [PATCH v6 07/16] x86/pci: Add Hygon Dhyana support to PCI and north bridge Pu Wen
2018-09-11 10:07 ` Borislav Petkov
2018-09-19 17:20 ` Lendacky, Thomas
2018-09-19 17:20 ` Lendacky, Thomas
2018-09-20 7:25 ` Thomas Gleixner
2018-09-20 8:05 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 08/16] x86/apic: Add Hygon Dhyana support to APIC Pu Wen
2018-09-11 10:14 ` Borislav Petkov
2018-09-11 13:03 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 09/16] x86/bugs: Add mitigation to spectre and no meltdown for Hygon Dhyana Pu Wen
2018-09-11 10:38 ` Borislav Petkov
2018-09-11 13:17 ` Pu Wen
2018-09-10 13:17 ` [PATCH v6 10/16] x86/mce: Add Hygon Dhyana support to MCE infrastructure Pu Wen
2018-09-10 13:17 ` [v6,10/16] " Pu Wen
2018-09-11 10:43 ` [PATCH v6 10/16] " Borislav Petkov
2018-09-11 10:43 ` [v6,10/16] " Borislav Petkov
2018-09-10 13:18 ` [PATCH v6 11/16] x86/kvm: Add Hygon Dhyana support to KVM infrastructure Pu Wen
2018-09-10 13:19 ` [PATCH v6 12/16] x86/xen: Add Hygon Dhyana support to Xen Pu Wen
2018-09-10 13:19 ` Pu Wen
2018-09-10 13:19 ` [PATCH v6 13/16] ACPI, x86: Add Hygon Dhyana support Pu Wen
2018-09-10 13:20 ` [PATCH v6 14/16] cpufreq, " Pu Wen
2018-09-10 13:20 ` [PATCH v6 15/16] EDAC, amd64: " Pu Wen
2018-09-10 13:20 ` [v6,15/16] " Pu Wen
2018-09-11 10:51 ` [PATCH v6 15/16] " Borislav Petkov
2018-09-11 10:51 ` [v6,15/16] " Borislav Petkov
2018-09-10 13:20 ` [PATCH v6 16/16] cpupower, x86: " Pu Wen
2018-10-01 19:38 ` Shuah Khan
2018-10-04 1:21 ` [RESEND PATCH v8 16/16] cpupower: " Pu Wen
2018-10-04 8:03 ` [tip:x86/cpu] tools/cpupower: " tip-bot for Pu Wen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-c6babb5806b77c6ca7078c3487bb0a29704a4e38@git.kernel.org \
--to=tipbot@zytor.com \
--cc=bp@suse.de \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=puwen@hygon.cn \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.