[PATCH 2/2] event: Correct dependencies on the EVENT framework

AKASHI Takahiro takahiro.akashi at linaro.org
Mon Jan 16 04:10:50 CET 2023


Hi Tom,

On Sat, Jan 14, 2023 at 03:49:36PM -0500, Tom Rini wrote:
> The event framework is just that, a framework. Enabling it by itself
> does nothing, so we shouldn't ask the user about it. Reword (and correct
> typos) around this the option and help text. This also applies to
> DM_EVENT, so reword as well.
> 
> With this, it's time to address the larger problems. When functionality
> uses events, typically via EVENT_SPY, the appropriate framework then
> must be select'd and NOT imply'd. As the functionality will cease to
> work (and so, platforms will fail to boot) this is non-optional and
> where select is appropriate. Audit the current users of EVENT_SPY to
> have a more fine-grained approach to select'ing the framework where
> used.
> 
> Cc: Simon Glass <sjg at chromium.org>
> Reported-by: Oliver Graute <Oliver.Graute at kococonnector.com>
> Reported-by: Francesco Dolcini <francesco.dolcini at toradex.com>
> Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
> Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
>  arch/Kconfig                     |  6 +++---
>  arch/arm/Kconfig                 |  9 ++++-----
>  arch/arm/mach-omap2/Kconfig      |  3 +++
>  arch/mips/Kconfig                |  2 +-
>  arch/powerpc/cpu/mpc85xx/Kconfig |  1 +
>  arch/x86/Kconfig                 |  1 +
>  arch/x86/cpu/baytrail/Kconfig    |  1 +
>  arch/x86/cpu/broadwell/Kconfig   |  1 +
>  arch/x86/cpu/ivybridge/Kconfig   |  1 +
>  arch/x86/cpu/quark/Kconfig       |  1 +
>  board/google/Kconfig             |  1 +
>  board/keymile/Kconfig            |  1 +
>  boot/Kconfig                     |  1 +
>  cmd/Kconfig                      |  1 +
>  common/Kconfig                   | 17 ++++++++---------
>  drivers/core/Kconfig             |  9 +++++----
>  drivers/cpu/Kconfig              |  1 -
>  lib/efi_loader/Kconfig           |  5 ++---
>  18 files changed, 36 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 8fb87b7d857c..d30676ae817b 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -93,7 +93,7 @@ config NIOS2
>  	bool "Nios II architecture"
>  	select CPU
>  	select DM
> -	imply DM_EVENT
> +	select DM_EVENT
>  	select OF_CONTROL
>  	select SUPPORT_OF_CONTROL
>  	imply CMD_DM
> @@ -111,9 +111,9 @@ config RISCV
>  	select SUPPORT_OF_CONTROL
>  	select OF_CONTROL
>  	select DM
> +	select DM_EVENT
>  	imply SPL_SEPARATE_BSS if SPL
>  	imply DM_SERIAL
> -	imply DM_EVENT
>  	imply DM_MMC
>  	imply DM_SPI
>  	imply DM_SPI_FLASH
> @@ -136,6 +136,7 @@ config SANDBOX
>  	select BZIP2
>  	select CMD_POWEROFF
>  	select DM
> +	select DM_EVENT
>  	select DM_FUZZING_ENGINE
>  	select DM_GPIO
>  	select DM_I2C
> @@ -240,7 +241,6 @@ config X86
>  	imply CMD_SF
>  	imply CMD_SF_TEST
>  	imply CMD_ZBOOT
> -	imply DM_EVENT
>  	imply DM_GPIO
>  	imply DM_KEYBOARD
>  	imply DM_MMC
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index bbf1d5227b3f..c9a44ebc2213 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -778,7 +778,6 @@ config ARCH_OMAP2PLUS
>  	select SUPPORT_SPL
>  	imply TI_SYSC if DM && OF_CONTROL
>  	imply FIT
> -	imply DM_EVENT
>  	imply SPL_SEPARATE_BSS
>  
>  config ARCH_MESON
> @@ -823,11 +822,11 @@ config ARCH_IMX8
>  	select SYS_FSL_SEC_COMPAT_4
>  	select SYS_FSL_SEC_LE
>  	select DM
> +	select DM_EVENT
>  	select GPIO_EXTRA_HEADER
>  	select MACH_IMX
>  	select OF_CONTROL
>  	select ENABLE_ARM_SOC_BOOT0_HOOK
> -	imply DM_EVENT
>  
>  config ARCH_IMX8M
>  	bool "NXP i.MX8M platform"
> @@ -839,14 +838,15 @@ config ARCH_IMX8M
>  	select SYS_FSL_SEC_LE
>  	select SYS_I2C_MXC
>  	select DM
> +	select DM_EVENT if CLK
>  	select SUPPORT_SPL
>  	imply CMD_DM
> -	imply DM_EVENT
>  
>  config ARCH_IMX8ULP
>  	bool "NXP i.MX8ULP platform"
>  	select ARM64
>  	select DM
> +	select DM_EVENT
>  	select MACH_IMX
>  	select OF_CONTROL
>  	select SUPPORT_SPL
> @@ -854,19 +854,18 @@ config ARCH_IMX8ULP
>  	select MISC
>  	select IMX_SENTINEL
>  	imply CMD_DM
> -	imply DM_EVENT
>  
>  config ARCH_IMX9
>  	bool "NXP i.MX9 platform"
>  	select ARM64
>  	select DM
> +	select DM_EVENT
>  	select MACH_IMX
>  	select SUPPORT_SPL
>  	select GPIO_EXTRA_HEADER
>  	select MISC
>  	select IMX_SENTINEL
>  	imply CMD_DM
> -	imply DM_EVENT
>  
>  config ARCH_IMXRT
>  	bool "NXP i.MXRT platform"
> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index 1db71df27212..309b967b0dd5 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -31,6 +31,7 @@ config OMAP34XX
>  
>  config OMAP44XX
>  	bool "OMAP44XX SoC"
> +	select DM_EVENT
>  	select SPL_USE_TINY_PRINTF
>  	select SPL_SYS_NO_VECTOR_TABLE if SPL
>  	imply NAND_OMAP_ELM
> @@ -55,6 +56,7 @@ config OMAP54XX
>  	bool "OMAP54XX SoC"
>  	select ARM_CORTEX_A15_CVE_2017_5715
>  	select ARM_ERRATA_798870
> +	select DM_EVENT
>  	select SYS_THUMB_BUILD
>  	imply NAND_OMAP_ELM
>  	imply NAND_OMAP_GPMC
> @@ -111,6 +113,7 @@ config AM43XX
>  config AM33XX
>  	bool "AM33XX SoC"
>  	select ARM_CORTEX_A8_CVE_2017_5715
> +	select DM_EVENT
>  	select SPECIFY_CONSOLE_INDEX
>  	imply NAND_OMAP_ELM
>  	imply NAND_OMAP_GPMC
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 23142bd2700d..569f5f48bc6c 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -121,6 +121,7 @@ config MACH_PIC32
>  	bool "Support Microchip PIC32"
>  	select HAS_FIXED_TIMER_FREQUENCY
>  	select DM
> +	select DM_EVENT
>  	select OF_CONTROL
>  	imply CMD_DM
>  
> @@ -128,7 +129,6 @@ config TARGET_BOSTON
>  	bool "Support Boston"
>  	select HAS_FIXED_TIMER_FREQUENCY
>  	select DM
> -	imply DM_EVENT
>  	select DM_SERIAL
>  	select MIPS_CM
>  	select SYS_CACHE_SHIFT_6
> diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
> index 1b180481a483..2c54a9e2120f 100644
> --- a/arch/powerpc/cpu/mpc85xx/Kconfig
> +++ b/arch/powerpc/cpu/mpc85xx/Kconfig
> @@ -248,6 +248,7 @@ config TARGET_KMP204X
>  config TARGET_KMCENT2
>  	bool "Support kmcent2"
>  	select VENDOR_KM
> +	select EVENT
>  	select FSL_CORENET
>  	select SYS_DPAA_FMAN
>  	select SYS_DPAA_PME
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 93f1c77be3f3..07be5cd05ec0 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -395,6 +395,7 @@ config FSP_VERSION1
>  
>  config FSP_VERSION2
>  	bool "FSP version 2.x"
> +	select DM_EVENT
>  	help
>  	  This covers versions 2.0 and 2.1. See here for details:
>  	  https://github.com/IntelFsp/fsp/wiki
> diff --git a/arch/x86/cpu/baytrail/Kconfig b/arch/x86/cpu/baytrail/Kconfig
> index d2c3473d6abf..a8efea8a3413 100644
> --- a/arch/x86/cpu/baytrail/Kconfig
> +++ b/arch/x86/cpu/baytrail/Kconfig
> @@ -7,6 +7,7 @@ config INTEL_BAYTRAIL
>  	select HAVE_FSP
>  	select ARCH_MISC_INIT
>  	select CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED
> +	select DM_EVENT
>  	imply HAVE_INTEL_ME
>  	imply ENABLE_MRC_CACHE
>  	imply AHCI_PCI
> diff --git a/arch/x86/cpu/broadwell/Kconfig b/arch/x86/cpu/broadwell/Kconfig
> index 5b015c89d950..39deda364479 100644
> --- a/arch/x86/cpu/broadwell/Kconfig
> +++ b/arch/x86/cpu/broadwell/Kconfig
> @@ -6,6 +6,7 @@
>  config INTEL_BROADWELL
>  	bool
>  	select CACHE_MRC_BIN
> +	select DM_EVENT
>  	select ARCH_EARLY_INIT_R
>  	imply HAVE_INTEL_ME
>  	imply ENABLE_MRC_CACHE
> diff --git a/arch/x86/cpu/ivybridge/Kconfig b/arch/x86/cpu/ivybridge/Kconfig
> index be3ef5e5d8f8..704f145adf88 100644
> --- a/arch/x86/cpu/ivybridge/Kconfig
> +++ b/arch/x86/cpu/ivybridge/Kconfig
> @@ -8,6 +8,7 @@
>  config NORTHBRIDGE_INTEL_IVYBRIDGE
>  	bool
>  	select CACHE_MRC_BIN if HAVE_MRC
> +	select DM_EVENT
>  	imply HAVE_INTEL_ME
>  	imply ENABLE_MRC_CACHE
>  	imply AHCI_PCI
> diff --git a/arch/x86/cpu/quark/Kconfig b/arch/x86/cpu/quark/Kconfig
> index 61bb5792c868..0d4008a31f4c 100644
> --- a/arch/x86/cpu/quark/Kconfig
> +++ b/arch/x86/cpu/quark/Kconfig
> @@ -7,6 +7,7 @@ config INTEL_QUARK
>  	select HAVE_RMU
>  	select ARCH_EARLY_INIT_R
>  	select ARCH_MISC_INIT
> +	select DM_EVENT
>  	imply ENABLE_MRC_CACHE
>  	imply ETH_DESIGNWARE
>  	imply ICH_SPI
> diff --git a/board/google/Kconfig b/board/google/Kconfig
> index 0474b4e69384..a0f1a6097641 100644
> --- a/board/google/Kconfig
> +++ b/board/google/Kconfig
> @@ -18,6 +18,7 @@ choice
>  config TARGET_CHROMEBOOK_CORAL
>  	bool "Chromebook coral"
>  	select BIOSEMU
> +	select EVENT
>  	help
>  	  This is a range of Intel-based laptops released in 2018. They use an
>  	  Intel Apollo Lake SoC. The design supports WiFi, 4GB to 16GB of
> diff --git a/board/keymile/Kconfig b/board/keymile/Kconfig
> index e5d7c80a869d..bf899d005c46 100644
> --- a/board/keymile/Kconfig
> +++ b/board/keymile/Kconfig
> @@ -124,6 +124,7 @@ config SYS_IVM_EEPROM_PAGE_LEN
>  
>  config PG_WCOM_UBOOT_UPDATE_SUPPORTED
>  	bool "Enable U-boot Field Fail-Safe Update Functionality"
> +	select EVENT
>  	default n
>  	help
>  	  Indicates that field fail-safe u-boot update is supported.
> diff --git a/boot/Kconfig b/boot/Kconfig
> index 30bc182fcd5c..725afd36a3b9 100644
> --- a/boot/Kconfig
> +++ b/boot/Kconfig
> @@ -474,6 +474,7 @@ config BOOTMETH_VBE
>  	depends on FIT
>  	default y
>  	select BOOTMETH_GLOBAL
> +	select EVENT
>  	help
>  	  Enables support for VBE boot. This is a standard boot method which
>  	  supports selection of various firmware components, seleciton of an OS to
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index b2aefae9cb70..4fe2c75de256 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -2622,6 +2622,7 @@ config CMD_DIAG
>  
>  config CMD_EVENT
>  	bool "event - Show information about events"
> +	depends on EVENT
>  	default y if EVENT_DEBUG
>  	help
>  	  This enables the 'event' command which provides information about
> diff --git a/common/Kconfig b/common/Kconfig
> index 73e3fe36573d..6f5aa4e53aae 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -604,24 +604,23 @@ config CYCLIC_MAX_CPU_TIME_US
>  endif # CYCLIC
>  
>  config EVENT
> -	bool "General-purpose event-handling mechanism"
> -	default y if SANDBOX
> +	bool
>  	help
> -	  This enables sending and processing of events, to allow interested
> -	  parties to be alerted when something happens. This is an attempt to
> -	  stem the flow of weak functions, hooks, functions in board_f.c
> -	  and board_r.c and the Kconfig options below.
> +	  This adds a framework for general purpose sending and processing of
> +	  events, to allow interested parties to be alerted when something
> +	  happens. This is an attempt to stem the flow of weak functions,
> +	  hooks, functions in board_f.c and board_r.c and the Kconfig options
> +	  below.
>  
>  	  See doc/develop/event.rst for more information.
>  
>  if EVENT
>  
>  config EVENT_DYNAMIC
> -	bool "Support event registration at runtime"
> -	default y if SANDBOX
> +	bool
>  	help
>  	  Enable this to support adding an event spy at runtime, without adding
> -	  it to the EVENT_SPy() linker list. This increases code size slightly
> +	  it to the EVENT_SPY() linker list. This increases code size slightly
>  	  but provides more flexibility for boards and subsystems that need it.
>  
>  config EVENT_DEBUG
> diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig
> index 8fde77c23ee0..6fc8854b574b 100644
> --- a/drivers/core/Kconfig
> +++ b/drivers/core/Kconfig
> @@ -109,13 +109,14 @@ config DM_DEVICE_REMOVE
>  	  causes USB host controllers to not be stopped when booting the OS.
>  
>  config DM_EVENT
> -	bool "Support events with driver model"
> -	depends on DM && EVENT
> -	default y if SANDBOX
> +	bool
> +	depends on DM
> +	select EVENT
>  	help
>  	  This enables support for generating events related to driver model
>  	  operations, such as prbing or removing a device. Subsystems can
> -	  register a 'spy' function that is called when the event occurs.
> +	  register a 'spy' function that is called when the event occurs. Such
> +	  subsystems must select this option.
>  
>  config SPL_DM_DEVICE_REMOVE
>  	bool "Support device removal in SPL"
> diff --git a/drivers/cpu/Kconfig b/drivers/cpu/Kconfig
> index 21874335c873..3bf04105e5e9 100644
> --- a/drivers/cpu/Kconfig
> +++ b/drivers/cpu/Kconfig
> @@ -23,7 +23,6 @@ config CPU_RISCV
>  config CPU_MICROBLAZE
>  	bool "Enable Microblaze CPU driver"
>  	depends on CPU && MICROBLAZE
> -	select EVENT
>  	select DM_EVENT
>  	select XILINX_MICROBLAZE0_PVR
>  	help
> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> index b498c72206fd..d04203cddab4 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -14,9 +14,8 @@ config EFI_LOADER
>  	depends on !EFI_APP
>  	default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
>  	select CHARSET
> -	select DM_EVENT
> -	select EVENT
> -	select EVENT_DYNAMIC
> +	select DM_EVENT if PARTITIONS
> +	select EVENT_DYNAMIC if EVENT

Since UEFI subsystem, in particular efi_disk, uses event_register() or
EVENT_DYNAMIC directly, adding 'if EVENT' looks strange.
Instead, I suggest that 'select EVENT' be added to CONFIG_EVENT_DYNAMIC
and then we can safely
        select EVENT_DYNAMIC if PARTITIONS
here.

-Takahiro Akashi


>  	select LIB_UUID
>  	imply PARTITION_UUIDS
>  	select REGEX
> -- 
> 2.25.1
> 


More information about the U-Boot mailing list