[RFC PATCH] efi_loader: disable GRUB workaround by default
Matthias Brugger
mbrugger at suse.com
Tue Feb 9 15:42:42 CET 2021
On 09/02/2021 13:22, Heinrich Schuchardt wrote:
> On 09.02.21 12:38, matthias.bgg at kernel.org wrote:
>> From: Matthias Brugger <mbrugger at suse.com>
>>
>> GRUB version 2.04 was published over a year ago. We should expect that
>> distros use this version now. So disable the workaround by default.
>> As we know that i.MX6 CPUs lack proper handling of caches, enable the
>> workaround on these only.
>
> Hello Matthias,
>
> Where did the current setting hurt?
>
I hit this on BananaPi R2 where the time from exiting the boot services until
the kernel gets loaded was three times bigger with the workaround. Similar
numbers, ~40 down to 12 seconds.
> Did you really check all 32bit ARM defconfig?
No I didn't, that's why I send it as RFC. If you think this is a can of worms we
would open, then I just disable the workaround for these two defconfigs.
Regards,
Matthias
> Which other devices have caches that are not controlled by CP15?
> How about all non-i.mx6 devices using CONFIG_SYS_L2_PL310?
>
> Best regards
>
> Heinrich
>
>>
>> Signed-off-by: Matthias Brugger <mbrugger at suse.com>
>>
>> ---
>>
>> configs/imx6dl_icore_nand_defconfig | 1 +
>> configs/imx6dl_mamoj_defconfig | 1 +
>> configs/imx6q_icore_nand_defconfig | 1 +
>> configs/imx6q_logic_defconfig | 1 +
>> configs/imx6qdl_icore_mipi_defconfig | 1 +
>> configs/imx6qdl_icore_mmc_defconfig | 1 +
>> configs/imx6qdl_icore_nand_defconfig | 1 +
>> configs/imx6qdl_icore_rqs_defconfig | 1 +
>> configs/imx6ul_geam_mmc_defconfig | 1 +
>> configs/imx6ul_geam_nand_defconfig | 1 +
>> configs/imx6ul_isiot_emmc_defconfig | 1 +
>> configs/imx6ul_isiot_nand_defconfig | 1 +
>> lib/efi_loader/Kconfig | 2 +-
>> 13 files changed, 13 insertions(+), 1 deletion(-)
>>
>> diff --git a/configs/imx6dl_icore_nand_defconfig b/configs/imx6dl_icore_nand_defconfig
>> index 06005c4288..44fbbe6bd1 100644
>> --- a/configs/imx6dl_icore_nand_defconfig
>> +++ b/configs/imx6dl_icore_nand_defconfig
>> @@ -68,3 +68,4 @@ CONFIG_SPLASH_SCREEN=y
>> CONFIG_SPLASH_SCREEN_ALIGN=y
>> CONFIG_VIDEO_BMP_RLE8=y
>> CONFIG_BMP_16BPP=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6dl_mamoj_defconfig b/configs/imx6dl_mamoj_defconfig
>> index fa2adaf47d..7ebbb5830b 100644
>> --- a/configs/imx6dl_mamoj_defconfig
>> +++ b/configs/imx6dl_mamoj_defconfig
>> @@ -57,3 +57,4 @@ CONFIG_USB_GADGET_MANUFACTURER="FSL"
>> CONFIG_USB_GADGET_VENDOR_NUM=0x0525
>> CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>> CONFIG_CI_UDC=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6q_icore_nand_defconfig b/configs/imx6q_icore_nand_defconfig
>> index f38b06dab9..cef5f3448d 100644
>> --- a/configs/imx6q_icore_nand_defconfig
>> +++ b/configs/imx6q_icore_nand_defconfig
>> @@ -69,3 +69,4 @@ CONFIG_SPLASH_SCREEN=y
>> CONFIG_SPLASH_SCREEN_ALIGN=y
>> CONFIG_VIDEO_BMP_RLE8=y
>> CONFIG_BMP_16BPP=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6q_logic_defconfig b/configs/imx6q_logic_defconfig
>> index 36dc24d080..b5a4d3d24d 100644
>> --- a/configs/imx6q_logic_defconfig
>> +++ b/configs/imx6q_logic_defconfig
>> @@ -103,3 +103,4 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x0525
>> CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
>> CONFIG_CI_UDC=y
>> CONFIG_USB_GADGET_DOWNLOAD=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6qdl_icore_mipi_defconfig b/configs/imx6qdl_icore_mipi_defconfig
>> index f1b5389470..1d9e021844 100644
>> --- a/configs/imx6qdl_icore_mipi_defconfig
>> +++ b/configs/imx6qdl_icore_mipi_defconfig
>> @@ -63,3 +63,4 @@ CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> CONFIG_IMX_THERMAL=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6qdl_icore_mmc_defconfig b/configs/imx6qdl_icore_mmc_defconfig
>> index a32ae6a75d..b46d19ad88 100644
>> --- a/configs/imx6qdl_icore_mmc_defconfig
>> +++ b/configs/imx6qdl_icore_mmc_defconfig
>> @@ -86,3 +86,4 @@ CONFIG_SPLASH_SCREEN_ALIGN=y
>> CONFIG_VIDEO_BMP_RLE8=y
>> CONFIG_BMP_16BPP=y
>> CONFIG_IMX_WATCHDOG=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6qdl_icore_nand_defconfig b/configs/imx6qdl_icore_nand_defconfig
>> index f38b06dab9..cef5f3448d 100644
>> --- a/configs/imx6qdl_icore_nand_defconfig
>> +++ b/configs/imx6qdl_icore_nand_defconfig
>> @@ -69,3 +69,4 @@ CONFIG_SPLASH_SCREEN=y
>> CONFIG_SPLASH_SCREEN_ALIGN=y
>> CONFIG_VIDEO_BMP_RLE8=y
>> CONFIG_BMP_16BPP=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6qdl_icore_rqs_defconfig b/configs/imx6qdl_icore_rqs_defconfig
>> index 34e3250f95..db439255a5 100644
>> --- a/configs/imx6qdl_icore_rqs_defconfig
>> +++ b/configs/imx6qdl_icore_rqs_defconfig
>> @@ -60,3 +60,4 @@ CONFIG_MII=y
>> CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6ul_geam_mmc_defconfig b/configs/imx6ul_geam_mmc_defconfig
>> index 4b47e196f3..ae83d35a53 100644
>> --- a/configs/imx6ul_geam_mmc_defconfig
>> +++ b/configs/imx6ul_geam_mmc_defconfig
>> @@ -55,3 +55,4 @@ CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> CONFIG_IMX_THERMAL=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6ul_geam_nand_defconfig b/configs/imx6ul_geam_nand_defconfig
>> index 9870612edf..8bffdab9c8 100644
>> --- a/configs/imx6ul_geam_nand_defconfig
>> +++ b/configs/imx6ul_geam_nand_defconfig
>> @@ -60,3 +60,4 @@ CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> CONFIG_IMX_THERMAL=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6ul_isiot_emmc_defconfig b/configs/imx6ul_isiot_emmc_defconfig
>> index 2e33db21d8..f8614b23c9 100644
>> --- a/configs/imx6ul_isiot_emmc_defconfig
>> +++ b/configs/imx6ul_isiot_emmc_defconfig
>> @@ -55,3 +55,4 @@ CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> CONFIG_IMX_THERMAL=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/configs/imx6ul_isiot_nand_defconfig b/configs/imx6ul_isiot_nand_defconfig
>> index 9c4f742135..aec4563837 100644
>> --- a/configs/imx6ul_isiot_nand_defconfig
>> +++ b/configs/imx6ul_isiot_nand_defconfig
>> @@ -60,3 +60,4 @@ CONFIG_PINCTRL=y
>> CONFIG_PINCTRL_IMX6=y
>> CONFIG_MXC_UART=y
>> CONFIG_IMX_THERMAL=y
>> +CONFIG_EFI_GRUB_ARM32_WORKAROUND=y
>> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
>> index e729f727df..68ca183c68 100644
>> --- a/lib/efi_loader/Kconfig
>> +++ b/lib/efi_loader/Kconfig
>> @@ -282,7 +282,7 @@ config EFI_HAVE_RUNTIME_RESET
>> config EFI_GRUB_ARM32_WORKAROUND
>> bool "Workaround for GRUB on 32bit ARM"
>> default n if ARCH_QEMU
>> - default y
>> + default n
>> depends on ARM && !ARM64
>> help
>> GRUB prior to version 2.04 requires U-Boot to disable caches. This
>>
>
More information about the U-Boot
mailing list