Messages in this thread Patch in this message | | | From | Robert Richter <> | Subject | [PATCH v2 22/24] EDAC, ghes: Move struct member smbios_handle to struct ghes_dimm_info | Date | Mon, 24 Jun 2019 15:09:39 +0000 |
| |
This is private to the ghes_edac driver, so better keep that data in the struct ghes_dimm_info.
Signed-off-by: Robert Richter <rrichter@marvell.com> --- drivers/edac/ghes_edac.c | 15 +++++++-------- include/linux/edac.h | 2 -- 2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index fb5a54e27917..714623204232 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c @@ -88,6 +88,7 @@ struct ghes_dimm_info { int module; phys_addr_t start; phys_addr_t end; + u16 smbios_handle; u16 phys_handle; }; @@ -187,6 +188,7 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) struct dimm_info *dimm = &mi->dimm_info; u16 rdr_mask = BIT(7) | BIT(13); + mi->smbios_handle = entry->handle; mi->phys_handle = entry->phys_mem_array_handle; if (entry->size == 0xffff) { @@ -268,8 +270,6 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg) entry->total_width, entry->data_width); } - dimm->smbios_handle = entry->handle; - (*idx)++; } } @@ -308,8 +308,7 @@ static int mem_info_setup(void) for_each_dimm(dimm) { bank = device = NULL; - dmi_memdev_name(dimm->dimm_info.smbios_handle, - &bank, &device); + dmi_memdev_name(dimm->smbios_handle, &bank, &device); if (bank && device) { snprintf(dimm->dimm_info.label, sizeof(dimm->dimm_info.label), @@ -325,7 +324,7 @@ static int mem_info_setup(void) edac_dbg(1, "DIMM%i: Found mem range [%pa-%pa] on node %d, handle: 0x%.4x%s%s\n", dimm->idx, &dimm->start, &dimm->end, dimm->numa_node, - dimm->dimm_info.smbios_handle, + dimm->smbios_handle, *dimm->dimm_info.label ? ", label: " : "", dimm->dimm_info.label); } @@ -384,7 +383,6 @@ static void mem_info_prepare_mci(struct mem_ctl_info *mci) mci_dimm->edac_mode = dmi_dimm->edac_mode; mci_dimm->dtype = dmi_dimm->dtype; mci_dimm->grain = dmi_dimm->grain; - mci_dimm->smbios_handle = dmi_dimm->smbios_handle; if (*dmi_dimm->label) strcpy(mci_dimm->label, dmi_dimm->label); @@ -415,13 +413,14 @@ get_and_prepare_dimm_info(int nid, int card, int module, int handle) * Device Structure that represents the Memory Module) */ for_each_dimm(dimm) { - di = dimm->dimm; - if (di->smbios_handle == handle) + if (dimm->smbios_handle == handle) goto found; } return NULL; found: + di = dimm->dimm; + if (dimm->card < 0 && card >= 0) dimm->card = card; if (dimm->module < 0 && module >= 0) diff --git a/include/linux/edac.h b/include/linux/edac.h index 40e7da735e48..32ad882bea15 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -384,8 +384,6 @@ struct dimm_info { unsigned csrow, cschannel; /* Points to the old API data */ - u16 smbios_handle; /* Handle for SMBIOS type 17 */ - u32 ce_count; u32 ue_count; }; -- 2.20.1
| |