mirror of
https://src.fedoraproject.org/rpms/grub2.git
synced 2024-11-24 06:22:43 +00:00
KVM/PowerVM: Add support for KVM on PowerVM
Resolved: #2294883 Signed-off-by: Nicolas Frayer <nfrayer@redhat.com>
This commit is contained in:
parent
a137559e71
commit
ce0dd8c056
3 changed files with 125 additions and 1 deletions
119
0363-kern-ieee1275-init-Add-IEEE-1275-Radix-support-for-K.patch
Normal file
119
0363-kern-ieee1275-init-Add-IEEE-1275-Radix-support-for-K.patch
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Avnish Chouhan <avnish@linux.ibm.com>
|
||||||
|
Date: Thu, 23 May 2024 18:43:14 +0530
|
||||||
|
Subject: [PATCH] kern/ieee1275/init: Add IEEE 1275 Radix support for KVM on
|
||||||
|
Power
|
||||||
|
|
||||||
|
This patch adds support for Radix, Xive and Radix_gtse in Options
|
||||||
|
vector5 which is required for KVM LPARs. KVM LPARs ONLY support
|
||||||
|
Radix and not the Hash. Not enabling Radix on any PowerVM KVM LPARs
|
||||||
|
will result in boot failure.
|
||||||
|
|
||||||
|
Signed-off-by: Avnish Chouhan <avnish@linux.ibm.com>
|
||||||
|
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
|
||||||
|
---
|
||||||
|
grub-core/kern/ieee1275/init.c | 63 +++++++++++++++++++++++++++++++++++++++++-
|
||||||
|
1 file changed, 62 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/grub-core/kern/ieee1275/init.c b/grub-core/kern/ieee1275/init.c
|
||||||
|
index 8e7f742fad46..4ec6598cfbb8 100644
|
||||||
|
--- a/grub-core/kern/ieee1275/init.c
|
||||||
|
+++ b/grub-core/kern/ieee1275/init.c
|
||||||
|
@@ -110,6 +110,16 @@ grub_addr_t grub_ieee1275_original_stack;
|
||||||
|
#define DRC_INFO 0x40
|
||||||
|
#define BYTE22 (DY_MEM_V2 | DRC_INFO)
|
||||||
|
|
||||||
|
+/* For ibm,arch-vec-5-platform-support. */
|
||||||
|
+#define XIVE_INDEX 0x17
|
||||||
|
+#define MMU_INDEX 0x18
|
||||||
|
+#define RADIX_GTSE_INDEX 0x1a
|
||||||
|
+#define RADIX_ENABLED 0x40
|
||||||
|
+#define XIVE_ENABLED 0x40
|
||||||
|
+#define HASH_ENABLED 0x00
|
||||||
|
+#define MAX_SUPPORTED 0xC0
|
||||||
|
+#define RADIX_GTSE_ENABLED 0x40
|
||||||
|
+
|
||||||
|
void
|
||||||
|
grub_exit (int rc __attribute__((unused)))
|
||||||
|
{
|
||||||
|
@@ -694,6 +704,10 @@ struct option_vector5
|
||||||
|
grub_uint32_t platform_facilities;
|
||||||
|
grub_uint8_t sub_processors;
|
||||||
|
grub_uint8_t byte22;
|
||||||
|
+ grub_uint8_t xive;
|
||||||
|
+ grub_uint8_t mmu;
|
||||||
|
+ grub_uint8_t hpt_ext;
|
||||||
|
+ grub_uint8_t radix_gtse;
|
||||||
|
} GRUB_PACKED;
|
||||||
|
|
||||||
|
struct pvr_entry
|
||||||
|
@@ -732,6 +746,13 @@ grub_ieee1275_ibm_cas (void)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
grub_ieee1275_ihandle_t root;
|
||||||
|
+ grub_uint8_t ibm_arch_platform_support[8];
|
||||||
|
+ grub_ssize_t actual;
|
||||||
|
+ grub_uint8_t xive_support = 0;
|
||||||
|
+ grub_uint8_t mmu_support = 0;
|
||||||
|
+ grub_uint8_t radix_gtse_support = 0;
|
||||||
|
+ int i = 0;
|
||||||
|
+ int prop_len = 8;
|
||||||
|
struct cas_args
|
||||||
|
{
|
||||||
|
struct grub_ieee1275_common_hdr common;
|
||||||
|
@@ -740,6 +761,46 @@ grub_ieee1275_ibm_cas (void)
|
||||||
|
grub_ieee1275_cell_t cas_addr;
|
||||||
|
grub_ieee1275_cell_t result;
|
||||||
|
} args;
|
||||||
|
+
|
||||||
|
+ grub_ieee1275_get_integer_property (grub_ieee1275_chosen,
|
||||||
|
+ "ibm,arch-vec-5-platform-support",
|
||||||
|
+ (grub_uint32_t *) ibm_arch_platform_support,
|
||||||
|
+ sizeof (ibm_arch_platform_support),
|
||||||
|
+ &actual);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < prop_len; i++)
|
||||||
|
+ {
|
||||||
|
+ switch (ibm_arch_platform_support[i])
|
||||||
|
+ {
|
||||||
|
+ case XIVE_INDEX:
|
||||||
|
+ if (ibm_arch_platform_support[i + 1] & MAX_SUPPORTED)
|
||||||
|
+ xive_support = XIVE_ENABLED;
|
||||||
|
+ else
|
||||||
|
+ xive_support = 0;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case MMU_INDEX:
|
||||||
|
+ if (ibm_arch_platform_support[i + 1] & MAX_SUPPORTED)
|
||||||
|
+ mmu_support = RADIX_ENABLED;
|
||||||
|
+ else
|
||||||
|
+ mmu_support = HASH_ENABLED;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case RADIX_GTSE_INDEX:
|
||||||
|
+ if (mmu_support == RADIX_ENABLED)
|
||||||
|
+ radix_gtse_support = ibm_arch_platform_support[i + 1] & RADIX_GTSE_ENABLED;
|
||||||
|
+ else
|
||||||
|
+ radix_gtse_support = 0;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ default:
|
||||||
|
+ /* Ignoring the other indexes of ibm,arch-vec-5-platform-support. */
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ /* Skipping the property value. */
|
||||||
|
+ i++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
struct cas_vector vector =
|
||||||
|
{
|
||||||
|
.pvr_list = { { 0x00000000, 0xffffffff } }, /* any processor */
|
||||||
|
@@ -756,7 +817,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, ASSOCIATIVITY, BIN_OPTS, 0, 0, MAX_CPU, 0, 0, PLATFORM_FACILITIES, SUB_PROCESSORS, BYTE22
|
||||||
|
+ 0, BYTE2, 0, CMO, ASSOCIATIVITY, BIN_OPTS, 0, 0, MAX_CPU, 0, 0, PLATFORM_FACILITIES, SUB_PROCESSORS, BYTE22, xive_support, mmu_support, 0, radix_gtse_support
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
@ -360,3 +360,4 @@ Patch0359: 0359-fs-ntfs-Make-code-more-readable.patch
|
||||||
Patch0360: 0360-fs-xfs-Handle-non-continuous-data-blocks-in-director.patch
|
Patch0360: 0360-fs-xfs-Handle-non-continuous-data-blocks-in-director.patch
|
||||||
Patch0361: 0361-cmd-search-Rework-of-CVE-2023-4001-fix.patch
|
Patch0361: 0361-cmd-search-Rework-of-CVE-2023-4001-fix.patch
|
||||||
Patch0362: 0362-grub-mkconfig.in-turn-off-executable-owner-bit.patch
|
Patch0362: 0362-grub-mkconfig.in-turn-off-executable-owner-bit.patch
|
||||||
|
Patch0363: 0363-kern-ieee1275-init-Add-IEEE-1275-Radix-support-for-K.patch
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
Name: grub2
|
Name: grub2
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 2.06
|
Version: 2.06
|
||||||
Release: 123%{?dist}
|
Release: 124%{?dist}
|
||||||
Summary: Bootloader with support for Linux, Multiboot and more
|
Summary: Bootloader with support for Linux, Multiboot and more
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
URL: http://www.gnu.org/software/grub/
|
URL: http://www.gnu.org/software/grub/
|
||||||
|
@ -555,6 +555,10 @@ mv ${EFI_HOME}/grub.cfg.stb ${EFI_HOME}/grub.cfg
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jul 2 2024 Nicolas Frayer <nfrayer@redhat.com> - 2.06-124
|
||||||
|
- KVM/PowerVM: Add support for KVM on PowerVM
|
||||||
|
- Resolved: #2294883
|
||||||
|
|
||||||
* Tue May 28 2024 Leo Sandoval <lsandova@redhat.com> - 2.06.123
|
* Tue May 28 2024 Leo Sandoval <lsandova@redhat.com> - 2.06.123
|
||||||
- grub-mkconfig.in: turn off executable owner bit
|
- grub-mkconfig.in: turn off executable owner bit
|
||||||
- Resolves: #2281464
|
- Resolves: #2281464
|
||||||
|
|
Loading…
Reference in a new issue