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 <avn...@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 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel