summaryrefslogtreecommitdiffstats
path: root/openpower/patches/vesnin-patches/hostboot-p8/hostboot-0003-Add-present-bits-info-based-on-pos.patch
blob: 02f6c2913555278e6140571a2f863dce834e6262 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
From 4310ba2a3b6e6439b0938e10435e435cef1d5738 Mon Sep 17 00:00:00 2001
From: Artem Senichev <a.senichev@yadro.com>
Date: Thu, 29 Mar 2018 11:19:14 +0300
Subject: [PATCH] Add present bits info based on pos

Originally created by MSI (S188)

Signed-off-by: Artem Senichev <a.senichev@yadro.com>
---
 src/usr/hwas/hostbootIstep.C | 50 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/src/usr/hwas/hostbootIstep.C b/src/usr/hwas/hostbootIstep.C
index af3770295..1330a7e65 100644
--- a/src/usr/hwas/hostbootIstep.C
+++ b/src/usr/hwas/hostbootIstep.C
@@ -188,6 +188,11 @@ void* host_discover_targets( void *io_pArgs )
 
     // Put out some helpful messages that show which targets we actually found
     std::map<TARGETING::TYPE,uint64_t> l_presData;
+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P0; //for dimms on CPU P0
+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P1; //for dimms on CPU P1
+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P2; //for dimms on CPU P2
+    std::map<TARGETING::TYPE,uint64_t> Present_Dimm_P3; //for dimms on CPU P3
+
     for (TargetIterator target = targetService().begin();
          target != targetService().end();
          ++target)
@@ -198,11 +203,49 @@ void* host_discover_targets( void *io_pArgs )
         }
         TARGETING::TYPE l_type = target->getAttr<TARGETING::ATTR_TYPE>();
         TARGETING::ATTR_POSITION_type l_pos = 0;
+        TARGETING::ATTR_HUID_type l_huid = target->getAttr<TARGETING::ATTR_HUID>(); //for showing HUID
+
         if( target->tryGetAttr<TARGETING::ATTR_POSITION>(l_pos) )
         {
             l_presData[l_type] |= (0x8000000000000000 >> l_pos);
+
+            if (l_type == TARGETING::TYPE_DIMM)
+            {
+                if (l_pos < 64)
+                {
+                    //for dimms on CPU P0
+                    Present_Dimm_P0[l_type] |= (0x8000000000000000 >> l_pos);
+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P0[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P0[l_type] >> 32, Present_Dimm_P0[l_type] & 0xFFFFFFFF);
+                }
+                else if ((l_pos >= 64) && (l_pos < 128))
+                {
+                    //for dimms on CPU P1
+                    Present_Dimm_P1[l_type] |= (0x8000000000000000 >> (l_pos - 64));
+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P1[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P1[l_type] >> 32, Present_Dimm_P1[l_type] & 0xFFFFFFFF);
+                }
+                else if ((l_pos >= 128) && (l_pos < 192))
+                {
+                    //for dimms on CPU P2
+                    Present_Dimm_P2[l_type] |= (0x8000000000000000 >> (l_pos - 128));
+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P2[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P2[l_type] >> 32, Present_Dimm_P2[l_type] & 0xFFFFFFFF);
+                }
+                else if (l_pos >= 192)
+                {
+                    //for dimms on CPU P3
+                    Present_Dimm_P3[l_type] |= (0x8000000000000000 >> (l_pos - 192));
+                    CONSOLE::displayf(NULL, "MEMORY-INFO| l_pos=0x%X, l_type=0x%0X, l_huid=0x%X, Present_Dimm_P3[l_type]=%.8X%.8X", l_pos, l_type, l_huid, Present_Dimm_P3[l_type] >> 32, Present_Dimm_P3[l_type] & 0xFFFFFFFF);
+                }
+            }
         }
     }
+
+    CONSOLE::displayf("HWAS", "=========================================");
+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P0=%.8X%.8X", Present_Dimm_P0[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P0[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P1=%.8X%.8X", Present_Dimm_P1[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P1[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P2=%.8X%.8X", Present_Dimm_P2[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P2[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
+    CONSOLE::displayf("HWAS", "PRESENT> DIMM_P3=%.8X%.8X", Present_Dimm_P3[TARGETING::TYPE_DIMM] >> 32, Present_Dimm_P3[TARGETING::TYPE_DIMM] & 0xFFFFFFFF);
+    CONSOLE::displayf("HWAS", "=========================================");
+
     TARGETING::EntityPath l_epath; //use EntityPath's translation functions
     for( std::map<TARGETING::TYPE,uint64_t>::iterator itr = l_presData.begin();
          itr != l_presData.end();
@@ -210,6 +253,13 @@ void* host_discover_targets( void *io_pArgs )
     {
         uint8_t l_type = itr->first;
         uint64_t l_val = itr->second;
+
+        if (l_type == TARGETING::TYPE_DIMM)
+        {
+            //to skip DIMM type
+            continue;
+        }
+
         TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"PRESENT> %s[%.2X]=%.8X%.8X",
                 l_epath.pathElementTypeAsString(itr->first), l_type, l_val>>32, l_val&0xFFFFFFFF);
 #if (!defined(CONFIG_CONSOLE_OUTPUT_TRACE) && defined(CONFIG_CONSOLE))
-- 
2.14.1

OpenPOWER on IntegriCloud