lkml.org 
[lkml]   [2019]   [Aug]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v3 10/10] EDAC/amd64: Check for memory before fully initializing an instance
    Date
    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
    \
     
     \ /
      Last update: 2019-08-22 02:02    [W:4.473 / U:0.340 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site