[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH V2 1/2] cpu: Handle only high order 16 bits of PVR for IBM Power processors



cpu: Handle only high order 16 bits of PVR for IBM Power processors

IBM Power processors encode PVR as CPU family in higher
16 bits and a CPU version in lower 16 bits. Since there is no significant
change in behavior between versions, there is no point to add every single
CPU version in cpu_map.xml

Signed-off-by: Pradipta Kr. Banerjee <bpradip in ibm com>
---
 src/cpu/cpu_map.xml   | 22 ++++++++--------------
 src/cpu/cpu_powerpc.c |  7 ++++++-
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/src/cpu/cpu_map.xml b/src/cpu/cpu_map.xml
index 18c7b0d..f2f13fb 100644
--- a/src/cpu/cpu_map.xml
+++ b/src/cpu/cpu_map.xml
@@ -602,30 +602,24 @@
     <vendor name='IBM'/>
 
     <!-- IBM-based CPU models -->
-    <model name='POWER7'>
+    <model name='power6'>
       <vendor name='IBM'/>
-      <pvr value='0x003f0200'/>
+      <pvr value='0x003e0000'/>
     </model>
 
-    <model name='POWER7_v2.1'>
+    <model name='power7'>
       <vendor name='IBM'/>
-      <pvr value='0x003f0201'/>
+      <pvr value='0x003f0000'/>
     </model>
 
-    <model name='POWER7_v2.3'>
+    <model name='power7+'>
       <vendor name='IBM'/>
-      <pvr value='0x003f0203'/>
+      <pvr value='0x004a0000'/>
     </model>
 
-    <model name='POWER7+_v2.1'>
+    <model name='power8'>
       <vendor name='IBM'/>
-      <pvr value='0x004a0201'/>
+      <pvr value='0x004b0000'/>
     </model>
-
-    <model name='POWER8_v1.0'>
-      <vendor name='IBM'/>
-      <pvr value='0x004b0100'/>
-    </model>
-
   </arch>
 </cpus>
diff --git a/src/cpu/cpu_powerpc.c b/src/cpu/cpu_powerpc.c
index 67cb9ff..e705bcb 100644
--- a/src/cpu/cpu_powerpc.c
+++ b/src/cpu/cpu_powerpc.c
@@ -93,7 +93,12 @@ ppcModelFindPVR(const struct ppc_map *map,
 
     model = map->models;
     while (model != NULL) {
-        if (model->data.pvr == pvr)
+        /*IBM PowerPC processors encode PVR as CPU family in higher 16 bits and
+         *a CPU version in lower 16 bits. Since there is no significant change
+         *in behavior between versions, there is no point to add every single CPU
+         *version in cpu_map.xml
+        */
+        if ((model->data.pvr & 0xFFFF0000) == (pvr & 0xFFFF0000))
             return model;
 
         model = model->next;
-- 
1.9.3


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]