You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.5 KiB
127 lines
4.5 KiB
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
|
From: Avnish Chouhan <avnish@linux.vnet.ibm.com> |
|
Date: Mon, 27 Mar 2023 12:25:40 +0530 |
|
Subject: [PATCH] kern/ieee1275/init: Extended support in Vec5 |
|
MIME-Version: 1.0 |
|
Content-Type: text/plain; charset=UTF-8 |
|
Content-Transfer-Encoding: 8bit |
|
|
|
This patch enables multiple options in Vec5 which are required and |
|
solves the boot issues 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> |
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> |
|
(cherry picked from commit 98d0df0351fbff7a4acc64c7594d538889a43e2d) |
|
--- |
|
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 5d79580341..3d4ad9d1f1 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 (int rc __attribute__((unused))) |
|
@@ -519,6 +549,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 |
|
@@ -581,7 +616,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 |
|
} |
|
}; |
|
|
|
|