]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
EDAC/skx_common: Move mc_mapping to be a field inside struct skx_imc
authorQiuxu Zhuo <qiuxu.zhuo@intel.com>
Thu, 31 Jul 2025 14:55:29 +0000 (22:55 +0800)
committerTony Luck <tony.luck@intel.com>
Tue, 19 Aug 2025 23:23:22 +0000 (16:23 -0700)
The mc_mapping and imc fields of struct skx_dev have the same size,
NUM_IMC. Move mc_mapping to be a field inside struct skx_imc to prepare
for making the imc array of memory controller instances a flexible array.

No functional changes intended.

Suggested-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/r/20250731145534.2759334-3-qiuxu.zhuo@intel.com
drivers/edac/skx_common.c
drivers/edac/skx_common.h

index cc7d36cf7f3bc2fec12c815f56aa8201d6abfa73..3f6a074d685c936fdc5c044ba3f00849e97dceac 100644 (file)
@@ -131,7 +131,7 @@ static void skx_init_mc_mapping(struct skx_dev *d)
         * EDAC driver.
         */
        for (int i = 0; i < NUM_IMC; i++)
-               d->mc_mapping[i] = i;
+               d->imc[i].mc_mapping = i;
 }
 
 void skx_set_mc_mapping(struct skx_dev *d, u8 pmc, u8 lmc)
@@ -139,16 +139,16 @@ void skx_set_mc_mapping(struct skx_dev *d, u8 pmc, u8 lmc)
        edac_dbg(0, "Set the mapping of mc phy idx to logical idx: %02d -> %02d\n",
                 pmc, lmc);
 
-       d->mc_mapping[pmc] = lmc;
+       d->imc[pmc].mc_mapping = lmc;
 }
 EXPORT_SYMBOL_GPL(skx_set_mc_mapping);
 
 static u8 skx_get_mc_mapping(struct skx_dev *d, u8 pmc)
 {
        edac_dbg(0, "Get the mapping of mc phy idx to logical idx: %02d -> %02d\n",
-                pmc, d->mc_mapping[pmc]);
+                pmc, d->imc[pmc].mc_mapping);
 
-       return d->mc_mapping[pmc];
+       return d->imc[pmc].mc_mapping;
 }
 
 static bool skx_adxl_decode(struct decoded_addr *res, enum error_source err_src)
index 3f6007a972679b733623d5d4f703bb12c4cc8cbf..95d61d23f89ef41ad0449ff32cfe72d8fde0016f 100644 (file)
@@ -135,16 +135,6 @@ struct skx_dev {
        struct pci_dev *pcu_cr3; /* for HBM memory detection */
        u32 mcroute;
        int num_imc;
-       /*
-        * Some server BIOS may hide certain memory controllers, and the
-        * EDAC driver skips those hidden memory controllers. However, the
-        * ADXL still decodes memory error address using physical memory
-        * controller indices. The mapping table is used to convert the
-        * physical indices (reported by ADXL) to the logical indices
-        * (used the EDAC driver) of present memory controllers during the
-        * error handling process.
-        */
-       u8 mc_mapping[NUM_IMC];
        struct skx_imc {
                struct mem_ctl_info *mci;
                struct pci_dev *mdev; /* for i10nm CPU */
@@ -156,6 +146,16 @@ struct skx_dev {
                u8 mc;  /* system wide mc# */
                u8 lmc; /* socket relative mc# */
                u8 src_id;
+               /*
+                * Some server BIOS may hide certain memory controllers, and the
+                * EDAC driver skips those hidden memory controllers. However, the
+                * ADXL still decodes memory error address using physical memory
+                * controller indices. The mapping table is used to convert the
+                * physical indices (reported by ADXL) to the logical indices
+                * (used the EDAC driver) of present memory controllers during the
+                * error handling process.
+                */
+               u8 mc_mapping;
                struct skx_channel {
                        struct pci_dev  *cdev;
                        struct pci_dev  *edev;