Borislav Petkov 804cac
From: Yazen Ghannam <yazen.ghannam@amd.com>
Borislav Petkov 804cac
Date: Wed, 8 Dec 2021 17:43:54 +0000
Borislav Petkov 804cac
Subject: EDAC/amd64: Add support for AMD Family 19h Models 10h-1Fh and A0h-AFh
Borislav Petkov 804cac
Git-commit: e2be5955a88664421b25e463c28a910b8dbd534c
Borislav Petkov 804cac
Patch-mainline: v5.17-rc1
Borislav Petkov 804cac
References: jsc#SLE-19026
Borislav Petkov 804cac
Borislav Petkov 804cac
Add a new family type for AMD Family 19h Models 10h to 1Fh. Use this new
Borislav Petkov 804cac
family type for Models A0h to AFh also.
Borislav Petkov 804cac
Borislav Petkov 804cac
Increase the maximum number of controllers from 8 to 12.
Borislav Petkov 804cac
Borislav Petkov 804cac
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Borislav Petkov 804cac
Signed-off-by: Borislav Petkov <bp@suse.de>
Borislav Petkov 804cac
Link: https://lore.kernel.org/r/20211208174356.1997855-3-yazen.ghannam@amd.com
Borislav Petkov 804cac
---
Borislav Petkov 804cac
 drivers/edac/amd64_edac.c | 21 ++++++++++++++++++++-
Borislav Petkov 804cac
 drivers/edac/amd64_edac.h |  5 ++++-
Borislav Petkov 804cac
 2 files changed, 24 insertions(+), 2 deletions(-)
Borislav Petkov 804cac
Borislav Petkov 804cac
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
Borislav Petkov 804cac
index 4fce75013674..c6c58f01067f 100644
Borislav Petkov 804cac
--- a/drivers/edac/amd64_edac.c
Borislav Petkov 804cac
+++ b/drivers/edac/amd64_edac.c
Borislav Petkov 804cac
@@ -2650,6 +2650,16 @@ static struct amd64_family_type family_types[] = {
Borislav Petkov 804cac
 			.dbam_to_cs		= f17_addr_mask_to_cs_size,
Borislav Petkov 804cac
 		}
Borislav Petkov 804cac
 	},
Borislav Petkov 804cac
+	[F19_M10H_CPUS] = {
Borislav Petkov 804cac
+		.ctl_name = "F19h_M10h",
Borislav Petkov 804cac
+		.f0_id = PCI_DEVICE_ID_AMD_19H_M10H_DF_F0,
Borislav Petkov 804cac
+		.f6_id = PCI_DEVICE_ID_AMD_19H_M10H_DF_F6,
Borislav Petkov 804cac
+		.max_mcs = 12,
Borislav Petkov 804cac
+		.ops = {
Borislav Petkov 804cac
+			.early_channel_count	= f17_early_channel_count,
Borislav Petkov 804cac
+			.dbam_to_cs		= f17_addr_mask_to_cs_size,
Borislav Petkov 804cac
+		}
Borislav Petkov 804cac
+	},
Borislav Petkov 804cac
 };
Borislav Petkov 804cac
 
Borislav Petkov 804cac
 /*
Borislav Petkov 804cac
@@ -3687,11 +3697,20 @@ static struct amd64_family_type *per_family_init(struct amd64_pvt *pvt)
Borislav Petkov 804cac
 		break;
Borislav Petkov 804cac
 
Borislav Petkov 804cac
 	case 0x19:
Borislav Petkov 804cac
-		if (pvt->model >= 0x20 && pvt->model <= 0x2f) {
Borislav Petkov 804cac
+		if (pvt->model >= 0x10 && pvt->model <= 0x1f) {
Borislav Petkov 804cac
+			fam_type = &family_types[F19_M10H_CPUS];
Borislav Petkov 804cac
+			pvt->ops = &family_types[F19_M10H_CPUS].ops;
Borislav Petkov 804cac
+			break;
Borislav Petkov 804cac
+		} else if (pvt->model >= 0x20 && pvt->model <= 0x2f) {
Borislav Petkov 804cac
 			fam_type = &family_types[F17_M70H_CPUS];
Borislav Petkov 804cac
 			pvt->ops = &family_types[F17_M70H_CPUS].ops;
Borislav Petkov 804cac
 			fam_type->ctl_name = "F19h_M20h";
Borislav Petkov 804cac
 			break;
Borislav Petkov 804cac
+		} else if (pvt->model >= 0xa0 && pvt->model <= 0xaf) {
Borislav Petkov 804cac
+			fam_type = &family_types[F19_M10H_CPUS];
Borislav Petkov 804cac
+			pvt->ops = &family_types[F19_M10H_CPUS].ops;
Borislav Petkov 804cac
+			fam_type->ctl_name = "F19h_MA0h";
Borislav Petkov 804cac
+			break;
Borislav Petkov 804cac
 		}
Borislav Petkov 804cac
 		fam_type	= &family_types[F19_CPUS];
Borislav Petkov 804cac
 		pvt->ops	= &family_types[F19_CPUS].ops;
Borislav Petkov 804cac
diff --git a/drivers/edac/amd64_edac.h b/drivers/edac/amd64_edac.h
Borislav Petkov 804cac
index 85aa820bc165..650cab401e21 100644
Borislav Petkov 804cac
--- a/drivers/edac/amd64_edac.h
Borislav Petkov 804cac
+++ b/drivers/edac/amd64_edac.h
Borislav Petkov 804cac
@@ -96,7 +96,7 @@
Borislav Petkov 804cac
 /* Hardware limit on ChipSelect rows per MC and processors per system */
Borislav Petkov 804cac
 #define NUM_CHIPSELECTS			8
Borislav Petkov 804cac
 #define DRAM_RANGES			8
Borislav Petkov 804cac
-#define NUM_CONTROLLERS			8
Borislav Petkov 804cac
+#define NUM_CONTROLLERS			12
Borislav Petkov 804cac
 
Borislav Petkov 804cac
 #define ON true
Borislav Petkov 804cac
 #define OFF false
Borislav Petkov 804cac
@@ -126,6 +126,8 @@
Borislav Petkov 804cac
 #define PCI_DEVICE_ID_AMD_17H_M70H_DF_F6 0x1446
Borislav Petkov 804cac
 #define PCI_DEVICE_ID_AMD_19H_DF_F0	0x1650
Borislav Petkov 804cac
 #define PCI_DEVICE_ID_AMD_19H_DF_F6	0x1656
Borislav Petkov 804cac
+#define PCI_DEVICE_ID_AMD_19H_M10H_DF_F0 0x14ad
Borislav Petkov 804cac
+#define PCI_DEVICE_ID_AMD_19H_M10H_DF_F6 0x14b3
Borislav Petkov 804cac
 
Borislav Petkov 804cac
 /*
Borislav Petkov 804cac
  * Function 1 - Address Map
Borislav Petkov 804cac
@@ -298,6 +300,7 @@ enum amd_families {
Borislav Petkov 804cac
 	F17_M60H_CPUS,
Borislav Petkov 804cac
 	F17_M70H_CPUS,
Borislav Petkov 804cac
 	F19_CPUS,
Borislav Petkov 804cac
+	F19_M10H_CPUS,
Borislav Petkov 804cac
 	NUM_FAMILIES,
Borislav Petkov 804cac
 };
Borislav Petkov 804cac
 
Borislav Petkov 804cac