[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4564637B-36D5-408D-B0CA-816D9F3466E4@live.com>
Date: Sun, 9 Feb 2025 16:13:37 +0000
From: Aditya Garg <gargaditya08@...e.com>
To: Lleyton Gray <lleyton@...alabs.com>
CC: Jonathan Corbet <corbet@....net>, Ard Biesheuvel <ardb@...nel.org>, "Paul
E. McKenney" <paulmck@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>,
Thomas Huth <thuth@...hat.com>, Steven Rostedt <rostedt@...dmis.org>,
Xiongwei Song <xiongwei.song@...driver.com>, Jeremy Linton
<jeremy.linton@....com>, Ilias Apalodimas <ilias.apalodimas@...aro.org>,
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@...ux.intel.com>,
Jonathan Marek <jonathan@...ek.ca>, "Kirill A. Shutemov"
<kirill.shutemov@...ux.intel.com>, Kees Cook <kees@...nel.org>, "Borislav
Petkov (AMD)" <bp@...en8.de>, "linux-doc@...r.kernel.org"
<linux-doc@...r.kernel.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>, "linux-efi@...r.kernel.org"
<linux-efi@...r.kernel.org>, Lukas Wunner <lukas@...ner.de>
Subject: Re: [PATCH] x86/efistub: Add options for forcing Apple set_os
protocol
Hi all
I managed to get feedbacks regarding eGPUs on older non T2 MacBooks, and can confirm that apple-set-os is needed there as well.
I was wondering if we can reach a conclusion for this case here.
> On 29 Dec 2024, at 1:51 AM, Lleyton Gray <lleyton@...alabs.com> wrote:
>
> commit 71e49eccdca6 ("x86/efistub: Call Apple set_os protocol on dual GPU
> Intel Macs") calls the Apple set_os protocol, but only on T2 Macbook Pro
> models. This causes issues on other T2 models when an egpu is used.
> Add two options which allow force enabling or disabling usage of the
> protocol to fix.
>
> Signed-off-by: Lleyton Gray <lleyton@...alabs.com>
> ---
> Documentation/admin-guide/kernel-parameters.txt | 7 ++++++-
> drivers/firmware/efi/libstub/efi-stub-helper.c | 6 ++++++
> drivers/firmware/efi/libstub/efistub.h | 2 ++
> drivers/firmware/efi/libstub/x86-stub.c | 3 ++-
> 4 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index 1518343bbe22..1d1b88c57c44 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -1447,7 +1447,8 @@
> efi= [EFI,EARLY]
> Format: { "debug", "disable_early_pci_dma",
> "nochunk", "noruntime", "nosoftreserve",
> - "novamap", "no_disable_early_pci_dma" }
> + "novamap", "no_disable_early_pci_dma",
> + "enable_apple_set_os", "disable_apple_set_os" }
> debug: enable misc debug output.
> disable_early_pci_dma: disable the busmaster bit on all
> PCI bridges while in the EFI boot stub.
> @@ -1464,6 +1465,10 @@
> novamap: do not call SetVirtualAddressMap().
> no_disable_early_pci_dma: Leave the busmaster bit set
> on all PCI bridges while in the EFI boot stub
> + enable_apple_set_os: Report that macOS is being booted
> + to the firmware, even if the device is not a dual GPU Mac.
> + disable_apple_set_os: Disable reporting that macOS is being booted
> + to the firmware, even if the device is a dual GPU Mac.
>
> efi_no_storage_paranoia [EFI,X86,EARLY]
> Using this parameter you can use more than 50% of
> diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c
> index de659f6a815f..c33bb98bf79d 100644
> --- a/drivers/firmware/efi/libstub/efi-stub-helper.c
> +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
> @@ -20,6 +20,8 @@
> bool efi_nochunk;
> bool efi_nokaslr = !IS_ENABLED(CONFIG_RANDOMIZE_BASE);
> bool efi_novamap;
> +bool efi_enable_apple_set_os;
> +bool efi_disable_apple_set_os;
>
> static bool efi_noinitrd;
> static bool efi_nosoftreserve;
> @@ -95,6 +97,10 @@ efi_status_t efi_parse_options(char const *cmdline)
> efi_disable_pci_dma = true;
> if (parse_option_str(val, "no_disable_early_pci_dma"))
> efi_disable_pci_dma = false;
> + if (parse_option_str(val, "enable_apple_set_os"))
> + efi_enable_apple_set_os = true;
> + if (parse_option_str(val, "disable_apple_set_os"))
> + efi_disable_apple_set_os = true;
> if (parse_option_str(val, "debug"))
> efi_loglevel = CONSOLE_LOGLEVEL_DEBUG;
> } else if (!strcmp(param, "video") &&
> diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h
> index 685098f9626f..3be4b5393812 100644
> --- a/drivers/firmware/efi/libstub/efistub.h
> +++ b/drivers/firmware/efi/libstub/efistub.h
> @@ -39,6 +39,8 @@ extern bool efi_nokaslr;
> extern int efi_loglevel;
> extern int efi_mem_encrypt;
> extern bool efi_novamap;
> +extern bool efi_enable_apple_set_os;
> +extern bool efi_disable_apple_set_os;
> extern const efi_system_table_t *efi_system_table;
>
> typedef union efi_dxe_services_table efi_dxe_services_table_t;
> diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
> index f8e465da344d..566118195f92 100644
> --- a/drivers/firmware/efi/libstub/x86-stub.c
> +++ b/drivers/firmware/efi/libstub/x86-stub.c
> @@ -265,7 +265,8 @@ static void apple_set_os(void)
> } *set_os;
> efi_status_t status;
>
> - if (!efi_is_64bit() || !apple_match_product_name())
> + if (efi_disable_apple_set_os || !efi_is_64bit() ||
> + !efi_enable_apple_set_os && !apple_match_product_name())
> return;
>
> status = efi_bs_call(locate_protocol, &APPLE_SET_OS_PROTOCOL_GUID, NULL,
> --
> 2.47.0
>
Powered by blists - more mailing lists