grub-devel
[Top][All Lists]
Advanced

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

[PATCH v2 2/2] ieee1275 : extended support in options vector5


From: Avnish Chouhan
Subject: [PATCH v2 2/2] ieee1275 : extended support in options vector5
Date: Mon, 27 Mar 2023 12:25:40 +0530

This patch enables the multiple options in Options Vector5 which are
required and solves the boot issue seen on some machines which are looking for 
these specific options.

1. LPAR : Client program supports logical partitioning and
   associated hcall()s.
2. SPLPAR : Client program supports the Shared
   Processor LPAR Option.
3. DYN_RCON_MEM : Client program supports the
   “ibm,dynamic-reconfiguration-memory” property and it may be
   presented in the device tree.
4. LARGE_PAGES : Client supports pages larger than 4 KB.
5. DONATE_DCPU_CLS : Client supports donating dedicated processor cycles.
6. PCI_EXP : Client supports PCI Express implementations
   utilizing Message Signaled Interrupts (MSIs).

7. CMOC : Enables the Cooperative Memory Over-commitment Option.
8. EXT_CMO : Enables the Extended Cooperative Memory Over-commit
   Option.

9. ASSOC_REF : Enables “ibm,associativity” and
   “ibm,associativity-reference-points” properties.
10. AFFINITY : Enables Platform Resource Reassignment Notification.
11. NUMA : Supports NUMA Distance Lookup Table Option.

12. HOTPLUG_INTRPT : Supports Hotplug Interrupts.
13. HPT_RESIZE : Enable Hash Page Table Resize Option.

14. MAX_CPU : Defines maximum number of CPUs supported.

15. PFO_HWRNG : Supports Random Number Generator.
16. PFO_HW_COMP : Supports Compression Engine.
17. PFO_ENCRYPT : Supports Encryption Engine.

18. SUB_PROCESSORS : Supports Sub-Processors.

19. DY_MEM_V2 : Client program supports the “ibm,dynamic-memory-v2” property in 
the
    “ibm,dynamic-reconfiguration-memory” node and it may be presented in the 
device tree.
20. DRC_INFO : Client program supports the “ibm,drc-info” property definition 
and it may be
    presented in the device tree.

Signed-off-by: Avnish Chouhan <avnish@linux.vnet.ibm.com>
---
Change log:
V2 
 - Split the patch as suggested by Daniel Kiper.  
---
 grub-core/kern/ieee1275/init.c | 47 
+++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 41 insertions(+), 6 deletions(-)

diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
index 72474a9..e0f33d4 100644
--- a/grub-core/kern/ieee1275/init.c
+++ b/grub-core/kern/ieee1275/init.c
@@ -72,11 +72,41 @@ extern char _end[];
 grub_addr_t grub_ieee1275_original_stack;
 #endif
 
-#define LPAR     0x80
-#define SPLPAR   0x40
-#define BYTE2    (LPAR | SPLPAR)
-#define CMO      0x80
-#define MAX_CPU  256
+/* Options vector5 properties */
+
+#define LPAR                0x80
+#define SPLPAR              0x40
+#define DYN_RCON_MEM        0x20
+#define LARGE_PAGES         0x10
+#define DONATE_DCPU_CLS     0x02
+#define PCI_EXP             0x01
+#define BYTE2               (LPAR | SPLPAR | DYN_RCON_MEM | LARGE_PAGES | 
DONATE_DCPU_CLS | PCI_EXP)
+
+#define CMOC                0x80
+#define EXT_CMO             0x40
+#define CMO                 (CMOC | EXT_CMO)
+
+#define ASSOC_REF           0x80
+#define AFFINITY            0x40
+#define NUMA                0x20
+#define ASSOCIATIVITY       (ASSOC_REF | AFFINITY | NUMA)
+
+#define HOTPLUG_INTRPT      0x04
+#define HPT_RESIZE          0x01
+#define BIN_OPTS            (HOTPLUG_INTRPT | HPT_RESIZE)
+
+#define MAX_CPU             256
+
+#define PFO_HWRNG           0x80000000
+#define PFO_HW_COMP         0x40000000
+#define PFO_ENCRYPT         0x20000000
+#define PLATFORM_FACILITIES (PFO_HWRNG | PFO_HW_COMP | PFO_ENCRYPT)
+
+#define SUB_PROCESSORS      1
+
+#define DY_MEM_V2           0x80
+#define DRC_INFO            0x40
+#define BYTE22              (DY_MEM_V2 | DRC_INFO)
 
 void
 grub_exit (void)
@@ -517,6 +547,11 @@ struct option_vector5
   grub_uint8_t micro_checkpoint;
   grub_uint8_t reserved0;
   grub_uint32_t max_cpus;
+  grub_uint16_t base_PAPR;
+  grub_uint16_t mem_reference;
+  grub_uint32_t platform_facilities;
+  grub_uint8_t sub_processors;
+  grub_uint8_t byte22;
 } GRUB_PACKED;
 
 struct pvr_entry
@@ -579,7 +614,7 @@ grub_ieee1275_ibm_cas (void)
     .vec4 = 0x0001, /* set required minimum capacity % to the lowest value */
     .vec5_size = 1 + sizeof (struct option_vector5) - 2,
     .vec5 = {
-      0, BYTE2, 0, CMO, 0, 0, 0, 0, MAX_CPU
+      0, BYTE2, 0, CMO, ASSOCIATIVITY, BIN_OPTS, 0, 0, MAX_CPU, 0, 0, 
PLATFORM_FACILITIES, SUB_PROCESSORS, BYTE22
     }
   };
 
-- 
2.31.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]