From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Avnish Chouhan Date: Thu, 23 Mar 2023 08:33:12 -0400 Subject: [PATCH] ieee1275 : extended support in options vector5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- 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 2516e02091cb..1fae84440403 100644 --- a/grub-core/kern/ieee1275/init.c +++ b/grub-core/kern/ieee1275/init.c @@ -56,11 +56,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 (int rc __attribute__((unused))) @@ -323,6 +353,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; } __attribute__((packed)); struct pvr_entry { @@ -378,7 +413,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 } };