diff --git a/5001-simplify-smbios-api.patch b/5001-simplify-smbios-api.patch deleted file mode 100644 index 890ffb6..0000000 --- a/5001-simplify-smbios-api.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 0dad9ee3c13930fe8122f2efc936fcd1c277a00d Mon Sep 17 00:00:00 2001 -From: Ard Biesheuvel -Date: Mon, 1 Jul 2024 18:29:59 +0200 -Subject: efistub/smbios: Simplify SMBIOS enumeration API - -Update the efi_get_smbios_string() macro to take a pointer to the entire -record struct rather than the header. This removes the need to pass the -type explicitly, as it can be inferred from the typed pointer. Also, -drop 'type' from the prototype of __efi_get_smbios_string(), as it is -never referenced. - -Signed-off-by: Ard Biesheuvel ---- - drivers/firmware/efi/libstub/arm64.c | 3 +-- - drivers/firmware/efi/libstub/efistub.h | 9 ++++----- - drivers/firmware/efi/libstub/smbios.c | 4 ++-- - 3 files changed, 7 insertions(+), 9 deletions(-) - -diff --git a/drivers/firmware/efi/libstub/arm64.c b/drivers/firmware/efi/libstub/arm64.c -index 446e35eaf3d943..e57cd3de0a00f4 100644 ---- a/drivers/firmware/efi/libstub/arm64.c -+++ b/drivers/firmware/efi/libstub/arm64.c -@@ -39,8 +39,7 @@ static bool system_needs_vamap(void) - static char const emag[] = "eMAG"; - - default: -- version = efi_get_smbios_string(&record->header, 4, -- processor_version); -+ version = efi_get_smbios_string(record, processor_version); - if (!version || (strncmp(version, altra, sizeof(altra) - 1) && - strncmp(version, emag, sizeof(emag) - 1))) - break; -diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h -index 27abb4ce029173..d33ccbc4a2c630 100644 ---- a/drivers/firmware/efi/libstub/efistub.h -+++ b/drivers/firmware/efi/libstub/efistub.h -@@ -1204,14 +1204,13 @@ struct efi_smbios_type4_record { - u16 thread_enabled; - }; - --#define efi_get_smbios_string(__record, __type, __name) ({ \ -- int off = offsetof(struct efi_smbios_type ## __type ## _record, \ -- __name); \ -- __efi_get_smbios_string((__record), __type, off); \ -+#define efi_get_smbios_string(__record, __field) ({ \ -+ __typeof__(__record) __rec = __record; \ -+ __efi_get_smbios_string(&__rec->header, &__rec->__field); \ - }) - - const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record, -- u8 type, int offset); -+ const u8 *offset); - - void efi_remap_image(unsigned long image_base, unsigned alloc_size, - unsigned long code_size); -diff --git a/drivers/firmware/efi/libstub/smbios.c b/drivers/firmware/efi/libstub/smbios.c -index c217de2cc8d56d..520c9079717a30 100644 ---- a/drivers/firmware/efi/libstub/smbios.c -+++ b/drivers/firmware/efi/libstub/smbios.c -@@ -38,7 +38,7 @@ const struct efi_smbios_record *efi_get_smbios_record(u8 type) - } - - const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record, -- u8 type, int offset) -+ const u8 *offset) - { - const u8 *strtable; - -@@ -46,7 +46,7 @@ const u8 *__efi_get_smbios_string(const struct efi_smbios_record *record, - return NULL; - - strtable = (u8 *)record + record->length; -- for (int i = 1; i < ((u8 *)record)[offset]; i++) { -+ for (int i = 1; i < *offset; i++) { - int len = strlen(strtable); - - if (!len) --- -cgit 1.2.3-korg - diff --git a/5002-enable-smbios-api-for-x86.patch b/5002-enable-smbios-api-for-x86.patch deleted file mode 100644 index ff34521..0000000 --- a/5002-enable-smbios-api-for-x86.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 84810a21ecab70568586217f185998bcf34b450e Mon Sep 17 00:00:00 2001 -From: Ard Biesheuvel -Date: Mon, 1 Jul 2024 09:35:33 +0200 -Subject: x86/efistub: Enable SMBIOS protocol handling for x86 - -The smbios.c source file is not currently included in the x86 build, and -before we can do so, it needs some tweaks to build correctly in -combination with the EFI mixed mode support. - -Reviewed-by: Lukas Wunner -Signed-off-by: Ard Biesheuvel ---- - drivers/firmware/efi/libstub/Makefile | 2 +- - drivers/firmware/efi/libstub/smbios.c | 39 ++++++++++++++++++++++------------- - include/linux/efi.h | 4 ++-- - 3 files changed, 28 insertions(+), 17 deletions(-) - -diff --git a/drivers/firmware/efi/libstub/Makefile b/drivers/firmware/efi/libstub/Makefile -index 06f0428a723cb8..1f32d6cf98d691 100644 ---- a/drivers/firmware/efi/libstub/Makefile -+++ b/drivers/firmware/efi/libstub/Makefile -@@ -76,7 +76,7 @@ lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o \ - - lib-$(CONFIG_ARM) += arm32-stub.o - lib-$(CONFIG_ARM64) += kaslr.o arm64.o arm64-stub.o smbios.o --lib-$(CONFIG_X86) += x86-stub.o -+lib-$(CONFIG_X86) += x86-stub.o smbios.o - lib-$(CONFIG_X86_64) += x86-5lvl.o - lib-$(CONFIG_RISCV) += kaslr.o riscv.o riscv-stub.o - lib-$(CONFIG_LOONGARCH) += loongarch.o loongarch-stub.o -diff --git a/drivers/firmware/efi/libstub/smbios.c b/drivers/firmware/efi/libstub/smbios.c -index 520c9079717a30..f31410d7e7e180 100644 ---- a/drivers/firmware/efi/libstub/smbios.c -+++ b/drivers/firmware/efi/libstub/smbios.c -@@ -6,20 +6,31 @@ - - #include "efistub.h" - --typedef struct efi_smbios_protocol efi_smbios_protocol_t; -- --struct efi_smbios_protocol { -- efi_status_t (__efiapi *add)(efi_smbios_protocol_t *, efi_handle_t, -- u16 *, struct efi_smbios_record *); -- efi_status_t (__efiapi *update_string)(efi_smbios_protocol_t *, u16 *, -- unsigned long *, u8 *); -- efi_status_t (__efiapi *remove)(efi_smbios_protocol_t *, u16); -- efi_status_t (__efiapi *get_next)(efi_smbios_protocol_t *, u16 *, u8 *, -- struct efi_smbios_record **, -- efi_handle_t *); -- -- u8 major_version; -- u8 minor_version; -+typedef union efi_smbios_protocol efi_smbios_protocol_t; -+ -+union efi_smbios_protocol { -+ struct { -+ efi_status_t (__efiapi *add)(efi_smbios_protocol_t *, efi_handle_t, -+ u16 *, struct efi_smbios_record *); -+ efi_status_t (__efiapi *update_string)(efi_smbios_protocol_t *, u16 *, -+ unsigned long *, u8 *); -+ efi_status_t (__efiapi *remove)(efi_smbios_protocol_t *, u16); -+ efi_status_t (__efiapi *get_next)(efi_smbios_protocol_t *, u16 *, u8 *, -+ struct efi_smbios_record **, -+ efi_handle_t *); -+ -+ u8 major_version; -+ u8 minor_version; -+ }; -+ struct { -+ u32 add; -+ u32 update_string; -+ u32 remove; -+ u32 get_next; -+ -+ u8 major_version; -+ u8 minor_version; -+ } mixed_mode; - }; - - const struct efi_smbios_record *efi_get_smbios_record(u8 type) -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 418e555459da7c..2a539816a4362d 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -74,10 +74,10 @@ typedef void *efi_handle_t; - */ - typedef guid_t efi_guid_t __aligned(__alignof__(u32)); - --#define EFI_GUID(a, b, c, d...) (efi_guid_t){ { \ -+#define EFI_GUID(a, b, c, d...) ((efi_guid_t){ { \ - (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \ - (b) & 0xff, ((b) >> 8) & 0xff, \ -- (c) & 0xff, ((c) >> 8) & 0xff, d } } -+ (c) & 0xff, ((c) >> 8) & 0xff, d } }) - - /* - * Generic EFI table header --- -cgit 1.2.3-korg - diff --git a/5003-enable-apple-os-set.patch b/5003-enable-apple-os-set.patch deleted file mode 100644 index fd25fb0..0000000 --- a/5003-enable-apple-os-set.patch +++ /dev/null @@ -1,134 +0,0 @@ -From d68cc8abc357c05ca1567458965f009add8bab69 Mon Sep 17 00:00:00 2001 -From: Aditya Garg -Date: Sun, 30 Jun 2024 19:24:54 +0000 -Subject: x86/efistub: Call Apple set_os protocol on dual GPU Intel Macs - -0c18184de990 ("platform/x86: apple-gmux: support MMIO gmux on T2 Macs") -brought support for T2 Macs in apple-gmux. But in order to use dual GPU, -the integrated GPU has to be enabled. On such dual GPU EFI Macs, the EFI -stub needs to report that it is booting macOS in order to prevent the -firmware from disabling the iGPU. - -This patch is also applicable for some non T2 Intel Macs. - -Based on this patch for GRUB by Andreas Heider : -https://lists.gnu.org/archive/html/grub-devel/2013-12/msg00442.html - -Credits also goto Kerem Karabay for helping porting -the patch to the Linux kernel. - -Cc: Orlando Chamberlain -Signed-off-by: Aditya Garg -[ardb: limit scope using list of DMI matches provided by Lukas and Orlando] -Reviewed-by: Lukas Wunner -Tested-by: Aditya Garg -Signed-off-by: Ard Biesheuvel ---- - drivers/firmware/efi/libstub/x86-stub.c | 71 +++++++++++++++++++++++++++++++-- - include/linux/efi.h | 1 + - 2 files changed, 69 insertions(+), 3 deletions(-) - -diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c -index 68df27bd71c9b4..51b7185f8707ff 100644 ---- a/drivers/firmware/efi/libstub/x86-stub.c -+++ b/drivers/firmware/efi/libstub/x86-stub.c -@@ -225,6 +225,68 @@ static void retrieve_apple_device_properties(struct boot_params *boot_params) - } - } - -+static bool apple_match_product_name(void) -+{ -+ static const char type1_product_matches[][15] = { -+ "MacBookPro11,3", -+ "MacBookPro11,5", -+ "MacBookPro13,3", -+ "MacBookPro14,3", -+ "MacBookPro15,1", -+ "MacBookPro15,3", -+ "MacBookPro16,1", -+ "MacBookPro16,4", -+ }; -+ const struct efi_smbios_type1_record *record; -+ const u8 *product; -+ -+ record = (struct efi_smbios_type1_record *)efi_get_smbios_record(1); -+ if (!record) -+ return false; -+ -+ product = efi_get_smbios_string(record, product_name); -+ if (!product) -+ return false; -+ -+ for (int i = 0; i < ARRAY_SIZE(type1_product_matches); i++) { -+ if (!strcmp(product, type1_product_matches[i])) -+ return true; -+ } -+ -+ return false; -+} -+ -+static void apple_set_os(void) -+{ -+ struct { -+ unsigned long version; -+ efi_status_t (__efiapi *set_os_version)(const char *); -+ efi_status_t (__efiapi *set_os_vendor)(const char *); -+ } *set_os; -+ efi_status_t status; -+ -+ if (!efi_is_64bit() || !apple_match_product_name()) -+ return; -+ -+ status = efi_bs_call(locate_protocol, &APPLE_SET_OS_PROTOCOL_GUID, NULL, -+ (void **)&set_os); -+ if (status != EFI_SUCCESS) -+ return; -+ -+ if (set_os->version >= 2) { -+ status = set_os->set_os_vendor("Apple Inc."); -+ if (status != EFI_SUCCESS) -+ efi_err("Failed to set OS vendor via apple_set_os\n"); -+ } -+ -+ if (set_os->version > 0) { -+ /* The version being set doesn't seem to matter */ -+ status = set_os->set_os_version("Mac OS X 10.9"); -+ if (status != EFI_SUCCESS) -+ efi_err("Failed to set OS version via apple_set_os\n"); -+ } -+} -+ - efi_status_t efi_adjust_memory_range_protection(unsigned long start, - unsigned long size) - { -@@ -335,9 +397,12 @@ static const efi_char16_t apple[] = L"Apple"; - - static void setup_quirks(struct boot_params *boot_params) - { -- if (IS_ENABLED(CONFIG_APPLE_PROPERTIES) && -- !memcmp(efistub_fw_vendor(), apple, sizeof(apple))) -- retrieve_apple_device_properties(boot_params); -+ if (!memcmp(efistub_fw_vendor(), apple, sizeof(apple))) { -+ if (IS_ENABLED(CONFIG_APPLE_PROPERTIES)) -+ retrieve_apple_device_properties(boot_params); -+ -+ apple_set_os(); -+ } - } - - /* -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 2a539816a4362d..3a6c04a9f9aadc 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -385,6 +385,7 @@ void efi_native_runtime_setup(void); - #define EFI_MEMORY_ATTRIBUTES_TABLE_GUID EFI_GUID(0xdcfa911d, 0x26eb, 0x469f, 0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20) - #define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d) - #define APPLE_PROPERTIES_PROTOCOL_GUID EFI_GUID(0x91bd12fe, 0xf6c3, 0x44fb, 0xa5, 0xb7, 0x51, 0x22, 0xab, 0x30, 0x3a, 0xe0) -+#define APPLE_SET_OS_PROTOCOL_GUID EFI_GUID(0xc5c5da95, 0x7d5c, 0x45e6, 0xb2, 0xf1, 0x3f, 0xd5, 0x2b, 0xb1, 0x00, 0x77) - #define EFI_TCG2_PROTOCOL_GUID EFI_GUID(0x607f766c, 0x7455, 0x42be, 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f) - #define EFI_TCG2_FINAL_EVENTS_TABLE_GUID EFI_GUID(0x1e2ed096, 0x30e2, 0x4254, 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25) - #define EFI_LOAD_FILE_PROTOCOL_GUID EFI_GUID(0x56ec3091, 0x954c, 0x11d2, 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b) --- -cgit 1.2.3-korg -