From 05d9d981df9c96c967882699574ff2cc4ae13f8b Mon Sep 17 00:00:00 2001 From: Pridhiviraj Paidipeddi Date: Fri, 11 May 2018 01:56:10 +0530 Subject: p9dsu: detect variant in init only if probe fails to found. Currently the slot table init happens twice in both probe and init functions due to the variant detection logic called with in-correct condition check. Fixes: d32ddea9 ("p9dsu: detect p9dsu variant even when hostboot doesn't tell us") Signed-off-by: Pridhiviraj Paidipeddi [stewart: renanem variant-detected to p9dsu-riser-detected] Signed-off-by: Stewart Smith --- platforms/astbmc/p9dsu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/platforms/astbmc/p9dsu.c b/platforms/astbmc/p9dsu.c index e4fef5e..e14b071 100644 --- a/platforms/astbmc/p9dsu.c +++ b/platforms/astbmc/p9dsu.c @@ -28,6 +28,8 @@ #include "astbmc.h" +static bool p9dsu_riser_found = false; + static const struct slot_table_entry p9dsu1u_phb0_0_slot[] = { { .etype = st_pluggable_slot, @@ -590,6 +592,8 @@ static bool p9dsu_probe(void) dt_node_is_compatible(dt_root, "supermicro,p9dsu2uess"))) return false; + p9dsu_riser_found = true; + /* Lot of common early inits here */ astbmc_early_init(); @@ -607,7 +611,7 @@ static bool p9dsu_probe(void) } else if (dt_node_is_compatible(dt_root, "supermicro,p9dsu2uess")) { prlog(PR_INFO, "Detected p9dsu2uess variant\n"); slot_table_init(p9dsu2uess_phb_table); - } + } else { /* * else we need to ask the BMC what subtype we are, but we need IPMI * which we don't get until astbmc_init(), so we delay setting up the @@ -616,6 +620,8 @@ static bool p9dsu_probe(void) * This only applies if you're using a Hostboot that doesn't do this * for us. */ + p9dsu_riser_found = false; + } return true; } @@ -642,7 +648,7 @@ static void p9dsu_init(void) * variant we are if Hostboot isn't the patched one that does this * for us. */ - if (dt_node_is_compatible(dt_root, "supermicro,p9dsu")) { + if (!p9dsu_riser_found) { ipmi_msg = ipmi_mkmsg(IPMI_DEFAULT_INTERFACE, IPMI_CODE(IPMI_NETFN_APP, 0x52), p9dsu_riser_query_complete, -- cgit v1.1