Messages in this thread Patch in this message | | | From | "Ghannam, Yazen" <> | Subject | [RFC PATCH v3 10/10] EDAC/amd64: Check for memory before fully initializing an instance | Date | Thu, 22 Aug 2019 00:00:03 +0000 |
| |
From: Yazen Ghannam <yazen.ghannam@amd.com>
Return early before checking for ECC if the node does not have any populated memory.
Free any cached hardware data before returning. Also, return 0 in this case since this is not a failure. Other nodes may have memory and the module should attempt to load an instance for them.
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com> --- drivers/edac/amd64_edac.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c index c1cb0234f085..7230ed4ff665 100644 --- a/drivers/edac/amd64_edac.c +++ b/drivers/edac/amd64_edac.c @@ -3505,6 +3505,23 @@ static int init_one_instance(struct amd64_pvt *pvt, return ret; } +static bool instance_has_memory(struct amd64_pvt *pvt) +{ + bool cs_enabled = false; + int num_channels = 2; + int cs = 0, dct = 0; + + if (pvt->umc) + num_channels = num_umcs; + + for (dct = 0; dct < num_channels; dct++) { + for_each_chip_select(cs, dct, pvt) + cs_enabled |= csrow_enabled(cs, dct, pvt); + } + + return cs_enabled; +} + static int probe_one_instance(unsigned int nid) { struct pci_dev *F3 = node_to_amd_nb(nid)->misc; @@ -3535,6 +3552,10 @@ static int probe_one_instance(unsigned int nid) if (ret < 0) goto err_enable; + ret = 0; + if (!instance_has_memory(pvt)) + goto err_enable; + if (!ecc_enabled(pvt)) { ret = 0; -- 2.17.1
| |