[PATCH 0/4] configs: apple: Switch to standard boot + small adjustments

This series contains a few misc config changes for Apple silicon systems: - switch from the deprecated distro boot scripts to standard boot - allows EFI console resizing based on the video console size - enables 16x32 bitmap fonts as Apple devices come with high DPI displays - enables 64-bit LBA addressing for USB storage devices larger than 2TB
Signed-off-by: Janne Grunau j@jannau.net --- Hector Martin (1): apple_m1_defconfig: Turn on CONFIG_SYS_64BIT_LBA
Janne Grunau (3): configs: apple: Use "vidconsole,serial" as stdout/stderr configs: apple: Enable CMD_SELECT_FONT and FONT_16X32 arm: apple: Switch to standard boot
arch/arm/Kconfig | 2 +- configs/apple_m1_defconfig | 3 +++ include/configs/apple.h | 24 ++++-------------------- 3 files changed, 8 insertions(+), 21 deletions(-) --- base-commit: f3c979dd0053c082d2df170446923e7ce5edbc2d change-id: 20240317-apple_config-981fcd9028b9
Best regards,

From: Hector Martin marcan@marcan.st
This makes USB HDDs >2TiB work. The only reason this hasn't bitten us for the internal NVMe yet is the 4K sector size, because the largest SSD Apple sells is 8TB and we can handle up to 16TiB with that sector size. Close call.
Signed-off-by: Hector Martin marcan@marcan.st Signed-off-by: Janne Grunau j@jannau.net --- configs/apple_m1_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/apple_m1_defconfig b/configs/apple_m1_defconfig index e00d72e8be..31d966f0ab 100644 --- a/configs/apple_m1_defconfig +++ b/configs/apple_m1_defconfig @@ -10,6 +10,7 @@ CONFIG_SYS_PBSIZE=276 CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_BOARD_LATE_INIT=y # CONFIG_NET is not set +CONFIG_SYS_64BIT_LBA=y CONFIG_APPLE_SPI_KEYB=y # CONFIG_MMC is not set CONFIG_NVME_APPLE=y

From: Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org Date: Sun, 17 Mar 2024 15:54:47 +0100
From: Hector Martin marcan@marcan.st
This makes USB HDDs >2TiB work. The only reason this hasn't bitten us for the internal NVMe yet is the 4K sector size, because the largest SSD Apple sells is 8TB and we can handle up to 16TiB with that sector size. Close call.
Signed-off-by: Hector Martin marcan@marcan.st Signed-off-by: Janne Grunau j@jannau.net
Reviewed-by: Mark Kettenis kettenis@openbsd.org
configs/apple_m1_defconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/configs/apple_m1_defconfig b/configs/apple_m1_defconfig index e00d72e8be..31d966f0ab 100644 --- a/configs/apple_m1_defconfig +++ b/configs/apple_m1_defconfig @@ -10,6 +10,7 @@ CONFIG_SYS_PBSIZE=276 CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_BOARD_LATE_INIT=y # CONFIG_NET is not set +CONFIG_SYS_64BIT_LBA=y CONFIG_APPLE_SPI_KEYB=y # CONFIG_MMC is not set CONFIG_NVME_APPLE=y
-- 2.44.0

From: Janne Grunau j@jannau.net
The display size querying in efi_console relies on this order. The display should be the primary output device and should be used to display more than 80x25 chars.
Signed-off-by: Janne Grunau j@jannau.net --- include/configs/apple.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/configs/apple.h b/include/configs/apple.h index 0576bc04c9..a70440b3ad 100644 --- a/include/configs/apple.h +++ b/include/configs/apple.h @@ -6,8 +6,8 @@ /* Environment */ #define ENV_DEVICE_SETTINGS \ "stdin=serial,usbkbd,spikbd\0" \ - "stdout=serial,vidconsole\0" \ - "stderr=serial,vidconsole\0" + "stdout=vidconsole,serial\0" \ + "stderr=vidconsole,serial\0"
#if IS_ENABLED(CONFIG_CMD_NVME) #define BOOT_TARGET_NVME(func) func(NVME, nvme, 0)

From: Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org Date: Sun, 17 Mar 2024 15:54:48 +0100
From: Janne Grunau j@jannau.net
The display size querying in efi_console relies on this order. The display should be the primary output device and should be used to display more than 80x25 chars.
Signed-off-by: Janne Grunau j@jannau.net
Reviewed-by: Mark Kettenis kettenis@openbsd.org
include/configs/apple.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/configs/apple.h b/include/configs/apple.h index 0576bc04c9..a70440b3ad 100644 --- a/include/configs/apple.h +++ b/include/configs/apple.h @@ -6,8 +6,8 @@ /* Environment */ #define ENV_DEVICE_SETTINGS \ "stdin=serial,usbkbd,spikbd\0" \
- "stdout=serial,vidconsole\0" \
- "stderr=serial,vidconsole\0"
- "stdout=vidconsole,serial\0" \
- "stderr=vidconsole,serial\0"
#if IS_ENABLED(CONFIG_CMD_NVME) #define BOOT_TARGET_NVME(func) func(NVME, nvme, 0)
-- 2.44.0

From: Janne Grunau j@jannau.net
Apple devices have high DPI displays so the larger fonts are preferable for improved readability. This does not yet change the used font based on the display's pixel density so the standard 8x16 font is still used by default.
Signed-off-by: Janne Grunau j@jannau.net --- configs/apple_m1_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/apple_m1_defconfig b/configs/apple_m1_defconfig index 31d966f0ab..c30aec7c55 100644 --- a/configs/apple_m1_defconfig +++ b/configs/apple_m1_defconfig @@ -9,6 +9,7 @@ CONFIG_SYS_PBSIZE=276 # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_BOARD_LATE_INIT=y +CONFIG_CMD_SELECT_FONT=y # CONFIG_NET is not set CONFIG_SYS_64BIT_LBA=y CONFIG_APPLE_SPI_KEYB=y @@ -19,6 +20,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_PCI=y CONFIG_USB_DWC3=y CONFIG_USB_KEYBOARD=y +CONFIG_VIDEO_FONT_16X32=y CONFIG_SYS_WHITE_ON_BLACK=y CONFIG_NO_FB_CLEAR=y CONFIG_VIDEO_SIMPLE=y

From: Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org Date: Sun, 17 Mar 2024 15:54:49 +0100
From: Janne Grunau j@jannau.net
Apple devices have high DPI displays so the larger fonts are preferable for improved readability. This does not yet change the used font based on the display's pixel density so the standard 8x16 font is still used by default.
Signed-off-by: Janne Grunau j@jannau.net
Reviewed-by: Mark Kettenis kettenis@openbsd.org
configs/apple_m1_defconfig | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/configs/apple_m1_defconfig b/configs/apple_m1_defconfig index 31d966f0ab..c30aec7c55 100644 --- a/configs/apple_m1_defconfig +++ b/configs/apple_m1_defconfig @@ -9,6 +9,7 @@ CONFIG_SYS_PBSIZE=276 # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y CONFIG_BOARD_LATE_INIT=y +CONFIG_CMD_SELECT_FONT=y # CONFIG_NET is not set CONFIG_SYS_64BIT_LBA=y CONFIG_APPLE_SPI_KEYB=y @@ -19,6 +20,7 @@ CONFIG_USB_XHCI_DWC3=y CONFIG_USB_XHCI_PCI=y CONFIG_USB_DWC3=y CONFIG_USB_KEYBOARD=y +CONFIG_VIDEO_FONT_16X32=y CONFIG_SYS_WHITE_ON_BLACK=y CONFIG_NO_FB_CLEAR=y CONFIG_VIDEO_SIMPLE=y
-- 2.44.0

From: Janne Grunau j@jannau.net
Use standard boot instead of the distro boot scripts.
Signed-off-by: Janne Grunau j@jannau.net --- arch/arm/Kconfig | 2 +- include/configs/apple.h | 20 ++------------------ 2 files changed, 3 insertions(+), 19 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 01d6556c42..ad89abde41 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1034,7 +1034,7 @@ config ARCH_APPLE select USB imply CMD_DM imply CMD_GPT - imply DISTRO_DEFAULTS + imply BOOTSTD_DEFAULTS imply OF_HAS_PRIOR_STAGE
config ARCH_OWL diff --git a/include/configs/apple.h b/include/configs/apple.h index a70440b3ad..1e08b11448 100644 --- a/include/configs/apple.h +++ b/include/configs/apple.h @@ -9,26 +9,10 @@ "stdout=vidconsole,serial\0" \ "stderr=vidconsole,serial\0"
-#if IS_ENABLED(CONFIG_CMD_NVME) - #define BOOT_TARGET_NVME(func) func(NVME, nvme, 0) -#else - #define BOOT_TARGET_NVME(func) -#endif - -#if IS_ENABLED(CONFIG_CMD_USB) - #define BOOT_TARGET_USB(func) func(USB, usb, 0) -#else - #define BOOT_TARGET_USB(func) -#endif - -#define BOOT_TARGET_DEVICES(func) \ - BOOT_TARGET_NVME(func) \ - BOOT_TARGET_USB(func) - -#include <config_distro_bootcmd.h> +#define BOOT_TARGETS "nvme usb"
#define CFG_EXTRA_ENV_SETTINGS \ ENV_DEVICE_SETTINGS \ - BOOTENV + "boot_targets=" BOOT_TARGETS "\0"
#endif

From: Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org Date: Sun, 17 Mar 2024 15:54:50 +0100
From: Janne Grunau j@jannau.net
Use standard boot instead of the distro boot scripts.
Signed-off-by: Janne Grunau j@jannau.net
As per a somewhat recent discussion about this for the rockchip SoCs, I think we want BOOTSTD_FULL instead of BOOTSTD_DEFAULT. Even though I think that BOOTSTD_FULL is a bit too chatty at the moment.
That also solves the issue that BOOTSTD_DEFAULTS doesn't run the EFI bootmgr (which does happen with distroboot). Although Heinrich has a diff to fix that.
arch/arm/Kconfig | 2 +- include/configs/apple.h | 20 ++------------------ 2 files changed, 3 insertions(+), 19 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 01d6556c42..ad89abde41 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1034,7 +1034,7 @@ config ARCH_APPLE select USB imply CMD_DM imply CMD_GPT
- imply DISTRO_DEFAULTS
- imply BOOTSTD_DEFAULTS imply OF_HAS_PRIOR_STAGE
config ARCH_OWL diff --git a/include/configs/apple.h b/include/configs/apple.h index a70440b3ad..1e08b11448 100644 --- a/include/configs/apple.h +++ b/include/configs/apple.h @@ -9,26 +9,10 @@ "stdout=vidconsole,serial\0" \ "stderr=vidconsole,serial\0"
-#if IS_ENABLED(CONFIG_CMD_NVME)
- #define BOOT_TARGET_NVME(func) func(NVME, nvme, 0)
-#else
- #define BOOT_TARGET_NVME(func)
-#endif
-#if IS_ENABLED(CONFIG_CMD_USB)
- #define BOOT_TARGET_USB(func) func(USB, usb, 0)
-#else
- #define BOOT_TARGET_USB(func)
-#endif
-#define BOOT_TARGET_DEVICES(func) \
- BOOT_TARGET_NVME(func) \
- BOOT_TARGET_USB(func)
-#include <config_distro_bootcmd.h> +#define BOOT_TARGETS "nvme usb"
#define CFG_EXTRA_ENV_SETTINGS \ ENV_DEVICE_SETTINGS \
- BOOTENV
- "boot_targets=" BOOT_TARGETS "\0"
#endif
-- 2.44.0

On Mon, Apr 15, 2024 at 04:24:51PM +0200, Mark Kettenis wrote:
From: Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org Date: Sun, 17 Mar 2024 15:54:50 +0100
From: Janne Grunau j@jannau.net
Use standard boot instead of the distro boot scripts.
Signed-off-by: Janne Grunau j@jannau.net
As per a somewhat recent discussion about this for the rockchip SoCs, I think we want BOOTSTD_FULL instead of BOOTSTD_DEFAULT. Even though I think that BOOTSTD_FULL is a bit too chatty at the moment.
I noticed and added BOOTSTD_FULL to the defconfig downstream. To solve the chattyness we could override BOOTCMD to "bootflow scan -b" in the defconfig.
That also solves the issue that BOOTSTD_DEFAULTS doesn't run the EFI bootmgr (which does happen with distroboot). Although Heinrich has a diff to fix that.
I've seen but I think for interactive use BOOTSTD_FULL is still the better choice. The full bootstd commands are helpful for booting from a non-default partition.
I'll resend with BOOTSTD_FULL and will think whether to change BOOTCMD in apple_m1_defconfig or in Kconfig. I don't think it makes much sense to list the boot methods by default before boot.
Janne

On Sun, Mar 17, 2024 at 7:54 AM Janne Grunau via B4 Relay devnull+j.jannau.net@kernel.org wrote:
This series contains a few misc config changes for Apple silicon systems:
- switch from the deprecated distro boot scripts to standard boot
- allows EFI console resizing based on the video console size
- enables 16x32 bitmap fonts as Apple devices come with high DPI displays
- enables 64-bit LBA addressing for USB storage devices larger than 2TB
Signed-off-by: Janne Grunau j@jannau.net
Hector Martin (1): apple_m1_defconfig: Turn on CONFIG_SYS_64BIT_LBA
Janne Grunau (3): configs: apple: Use "vidconsole,serial" as stdout/stderr configs: apple: Enable CMD_SELECT_FONT and FONT_16X32 arm: apple: Switch to standard boot
arch/arm/Kconfig | 2 +- configs/apple_m1_defconfig | 3 +++ include/configs/apple.h | 24 ++++-------------------- 3 files changed, 8 insertions(+), 21 deletions(-)
base-commit: f3c979dd0053c082d2df170446923e7ce5edbc2d change-id: 20240317-apple_config-981fcd9028b9
LGTM.
Reviewed-by: Neal Gompa neal@gompa.dev
participants (4)
-
Janne Grunau
-
Janne Grunau via B4 Relay
-
Mark Kettenis
-
Neal Gompa