Blame SOURCES/0001-spd-Print-dimm-rank-information.patch

66f3ee
From 881075c79be4706a2b3bcd5a75eb659b0e394fce Mon Sep 17 00:00:00 2001
66f3ee
From: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
66f3ee
Date: Mon, 23 Apr 2018 16:41:40 +0530
66f3ee
Subject: [PATCH] spd: Print dimm rank information
66f3ee
66f3ee
Print DIMM rank information under configuration. Supported for
66f3ee
DDR3 and DDR4.
66f3ee
66f3ee
Sample output:
66f3ee
      *-bank:1
66f3ee
         description: RDIMM DDR4 2666 MHz (0.4ns)
66f3ee
         product: M393A2G40EB2-CTD
66f3ee
	 ......
66f3ee
         configuration: errordetection=ecc rank=1
66f3ee
66f3ee
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
66f3ee
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
66f3ee
---
66f3ee
 src/core/device-tree.cc | 6 ++++++
66f3ee
 1 file changed, 6 insertions(+)
66f3ee
66f3ee
diff --git a/src/core/device-tree.cc b/src/core/device-tree.cc
66f3ee
index 642b3c54ece1..a510e4bea726 100644
66f3ee
--- a/src/core/device-tree.cc
66f3ee
+++ b/src/core/device-tree.cc
66f3ee
@@ -862,6 +862,7 @@ static void add_memory_bank_spd(string path, hwNode & bank)
66f3ee
   close(fd);
66f3ee
 
66f3ee
   if (dimminfo[2] >= 9) {
66f3ee
+    int rank_offset;
66f3ee
     double ns;
66f3ee
     char vendor[5];
66f3ee
     const char *type, *mod_type;
66f3ee
@@ -878,6 +879,7 @@ static void add_memory_bank_spd(string path, hwNode & bank)
66f3ee
       partno_offset = 0x149;
66f3ee
       bus_width_offset = 0x0d;
66f3ee
       serial_offset = 0x145;
66f3ee
+      rank_offset = 0xc;
66f3ee
 
66f3ee
       /*
66f3ee
        * There is no other valid values for the medium- and fine- timebase
66f3ee
@@ -896,6 +898,7 @@ static void add_memory_bank_spd(string path, hwNode & bank)
66f3ee
       partno_offset = 0x80;
66f3ee
       serial_offset = 0x7a;
66f3ee
       bus_width_offset = 0x08;
66f3ee
+      rank_offset = 0x7;
66f3ee
 
66f3ee
       ns = (dimminfo[0xc] / 2) * (dimminfo[0xa] / (float) dimminfo[0xb]);
66f3ee
       snprintf(vendor, sizeof(vendor), "%x%x", dimminfo[0x76], dimminfo[0x75]);
66f3ee
@@ -913,6 +916,9 @@ static void add_memory_bank_spd(string path, hwNode & bank)
66f3ee
         break;
66f3ee
     }
66f3ee
 
66f3ee
+    // Add DIMM rank
66f3ee
+    bank.setConfig("rank", ((dimminfo[rank_offset] >> 3) & 0x7) + 1);
66f3ee
+
66f3ee
     bank.setClock(1000000000 / ns);
66f3ee
     bank.setVendor(jedec_resolve(vendor));
66f3ee
 
66f3ee
-- 
66f3ee
2.17.1
66f3ee