diff mbox series

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

Message ID 20230116204649.616532-1-trini@konsulko.com
State Accepted
Commit 448e2b6327d0498d58506d6f4e4b2a325ab7cca0
Delegated to: Tom Rini
Headers show
Series None | expand

Commit Message

Tom Rini Jan. 16, 2023, 8:46 p.m. UTC
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 and EVENT_DYNAMIC. Only EVENT_DEBUG and CMD_EVENT should be
visible to the user to select, when EVENT is selected.

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. Also ensure the current users of event_register and also select
EVENT_DYNAMIC.

Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reported-by: Oliver Graute <Oliver.Graute@kococonnector.com>
Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
Signed-off-by: Tom Rini <trini@konsulko.com>
Tested-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Fabio Estevam <festevam@denx.de>
---
Changes in v3:
- Drop guards around when EFI_LOADER selects DM_EVENT / EVENT_DYNAMIC,
  keep comment.

Changes in v2:
- Collect tags
- Reword the commit message a little, reword and comment on the
  EFI_LOADER case.
- Add the rest of the VBE cases I had forgotten.
---
 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                     |  3 +++
 cmd/Kconfig                      |  1 +
 common/Kconfig                   | 17 ++++++++---------
 drivers/core/Kconfig             |  9 +++++----
 drivers/cpu/Kconfig              |  1 -
 lib/efi_loader/Kconfig           |  2 +-
 18 files changed, 37 insertions(+), 24 deletions(-)

Comments

Heinrich Schuchardt Jan. 16, 2023, 9:01 p.m. UTC | #1
On 1/16/23 21:46, 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 and EVENT_DYNAMIC. Only EVENT_DEBUG and CMD_EVENT should be
> visible to the user to select, when EVENT is selected.
>
> 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. Also ensure the current users of event_register and also select
> EVENT_DYNAMIC.
>
> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Reported-by: Oliver Graute <Oliver.Graute@kococonnector.com>
> Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
> Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
> Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
> Signed-off-by: Tom Rini <trini@konsulko.com>
> Tested-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Fabio Estevam <festevam@denx.de>
> ---
> Changes in v3:
> - Drop guards around when EFI_LOADER selects DM_EVENT / EVENT_DYNAMIC,
>    keep comment.
>
> Changes in v2:
> - Collect tags
> - Reword the commit message a little, reword and comment on the
>    EFI_LOADER case.
> - Add the rest of the VBE cases I had forgotten.
> ---
>   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                     |  3 +++
>   cmd/Kconfig                      |  1 +
>   common/Kconfig                   | 17 ++++++++---------
>   drivers/core/Kconfig             |  9 +++++----
>   drivers/cpu/Kconfig              |  1 -
>   lib/efi_loader/Kconfig           |  2 +-
>   18 files changed, 37 insertions(+), 24 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..daa01a10ebdc 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
> @@ -482,6 +483,7 @@ config BOOTMETH_VBE
>   config SPL_BOOTMETH_VBE
>   	bool "Bootdev support for Verified Boot for Embedded (SPL)"
>   	depends on SPL && FIT
> +	select EVENT
>   	default y if VPL
>   	help
>   	  Enables support for VBE boot. This is a standard boot method which
> @@ -491,6 +493,7 @@ config SPL_BOOTMETH_VBE
>   config VPL_BOOTMETH_VBE
>   	bool "Bootdev support for Verified Boot for Embedded (VPL)"
>   	depends on VPL && FIT
> +	select EVENT
>   	default y
>   	help
>   	  Enables support for VBE boot. This is a standard boot method which
> 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 439b2198f605..1c9f4774ba7a 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.

The long text does not cover register_event() which is also a reason to
select this setting.

Best regards

Heinrich

>
>   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..b630d88ef9e2 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -14,8 +14,8 @@ config EFI_LOADER
>   	depends on !EFI_APP
>   	default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
>   	select CHARSET
> +	# We need to send DM events, dynamically, in the EFI block driver
>   	select DM_EVENT
> -	select EVENT
>   	select EVENT_DYNAMIC
>   	select LIB_UUID
>   	imply PARTITION_UUIDS
Tom Rini Jan. 16, 2023, 9:04 p.m. UTC | #2
On Mon, Jan 16, 2023 at 10:01:47PM +0100, Heinrich Schuchardt wrote:
> On 1/16/23 21:46, 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 and EVENT_DYNAMIC. Only EVENT_DEBUG and CMD_EVENT should be
> > visible to the user to select, when EVENT is selected.
> > 
> > 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. Also ensure the current users of event_register and also select
> > EVENT_DYNAMIC.
> > 
> > Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
> > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > Reported-by: Oliver Graute <Oliver.Graute@kococonnector.com>
> > Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
> > Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
> > Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
> > Signed-off-by: Tom Rini <trini@konsulko.com>
> > Tested-by: Simon Glass <sjg@chromium.org>
> > Reviewed-by: Simon Glass <sjg@chromium.org>
> > Reviewed-by: Fabio Estevam <festevam@denx.de>
> > ---
> > Changes in v3:
> > - Drop guards around when EFI_LOADER selects DM_EVENT / EVENT_DYNAMIC,
> >    keep comment.
> > 
> > Changes in v2:
> > - Collect tags
> > - Reword the commit message a little, reword and comment on the
> >    EFI_LOADER case.
> > - Add the rest of the VBE cases I had forgotten.
> > ---
> >   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                     |  3 +++
> >   cmd/Kconfig                      |  1 +
> >   common/Kconfig                   | 17 ++++++++---------
> >   drivers/core/Kconfig             |  9 +++++----
> >   drivers/cpu/Kconfig              |  1 -
> >   lib/efi_loader/Kconfig           |  2 +-
> >   18 files changed, 37 insertions(+), 24 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..daa01a10ebdc 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
> > @@ -482,6 +483,7 @@ config BOOTMETH_VBE
> >   config SPL_BOOTMETH_VBE
> >   	bool "Bootdev support for Verified Boot for Embedded (SPL)"
> >   	depends on SPL && FIT
> > +	select EVENT
> >   	default y if VPL
> >   	help
> >   	  Enables support for VBE boot. This is a standard boot method which
> > @@ -491,6 +493,7 @@ config SPL_BOOTMETH_VBE
> >   config VPL_BOOTMETH_VBE
> >   	bool "Bootdev support for Verified Boot for Embedded (VPL)"
> >   	depends on VPL && FIT
> > +	select EVENT
> >   	default y
> >   	help
> >   	  Enables support for VBE boot. This is a standard boot method which
> > 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 439b2198f605..1c9f4774ba7a 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.
> 
> The long text does not cover register_event() which is also a reason to
> select this setting.

event_register also isn't in doc/develop/event.rst so a follow-up to
expand on this would be good, yes, as the help text should generally
point towards the rST docs, especially for non-user options.
Tom Rini Jan. 19, 2023, 2:46 p.m. UTC | #3
On Mon, Jan 16, 2023 at 03:46:49PM -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 and EVENT_DYNAMIC. Only EVENT_DEBUG and CMD_EVENT should be
> visible to the user to select, when EVENT is selected.
> 
> 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. Also ensure the current users of event_register and also select
> EVENT_DYNAMIC.
> 
> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> Reported-by: Oliver Graute <Oliver.Graute@kococonnector.com>
> Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
> Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
> Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
> Signed-off-by: Tom Rini <trini@konsulko.com>
> Tested-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Fabio Estevam <festevam@denx.de>

Applied to u-boot/master, thanks!
Simon Glass Jan. 20, 2023, 10:11 p.m. UTC | #4
Hi Tom,

On Mon, 16 Jan 2023 at 14:04, Tom Rini <trini@konsulko.com> wrote:
>
> On Mon, Jan 16, 2023 at 10:01:47PM +0100, Heinrich Schuchardt wrote:
> > On 1/16/23 21:46, 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 and EVENT_DYNAMIC. Only EVENT_DEBUG and CMD_EVENT should be
> > > visible to the user to select, when EVENT is selected.
> > >
> > > 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. Also ensure the current users of event_register and also select
> > > EVENT_DYNAMIC.
> > >
> > > Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
> > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > > Reported-by: Oliver Graute <Oliver.Graute@kococonnector.com>
> > > Reported-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> > > Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events")
> > > Fixes: 42fdcebf859f ("event: Convert misc_init_f() to use events")
> > > Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
> > > Signed-off-by: Tom Rini <trini@konsulko.com>
> > > Tested-by: Simon Glass <sjg@chromium.org>
> > > Reviewed-by: Simon Glass <sjg@chromium.org>
> > > Reviewed-by: Fabio Estevam <festevam@denx.de>
> > > ---
> > > Changes in v3:
> > > - Drop guards around when EFI_LOADER selects DM_EVENT / EVENT_DYNAMIC,
> > >    keep comment.
> > >
> > > Changes in v2:
> > > - Collect tags
> > > - Reword the commit message a little, reword and comment on the
> > >    EFI_LOADER case.
> > > - Add the rest of the VBE cases I had forgotten.
> > > ---
> > >   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                     |  3 +++
> > >   cmd/Kconfig                      |  1 +
> > >   common/Kconfig                   | 17 ++++++++---------
> > >   drivers/core/Kconfig             |  9 +++++----
> > >   drivers/cpu/Kconfig              |  1 -
> > >   lib/efi_loader/Kconfig           |  2 +-
> > >   18 files changed, 37 insertions(+), 24 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..daa01a10ebdc 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
> > > @@ -482,6 +483,7 @@ config BOOTMETH_VBE
> > >   config SPL_BOOTMETH_VBE
> > >     bool "Bootdev support for Verified Boot for Embedded (SPL)"
> > >     depends on SPL && FIT
> > > +   select EVENT
> > >     default y if VPL
> > >     help
> > >       Enables support for VBE boot. This is a standard boot method which
> > > @@ -491,6 +493,7 @@ config SPL_BOOTMETH_VBE
> > >   config VPL_BOOTMETH_VBE
> > >     bool "Bootdev support for Verified Boot for Embedded (VPL)"
> > >     depends on VPL && FIT
> > > +   select EVENT
> > >     default y
> > >     help
> > >       Enables support for VBE boot. This is a standard boot method which
> > > 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 439b2198f605..1c9f4774ba7a 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.
> >
> > The long text does not cover register_event() which is also a reason to
> > select this setting.
>
> event_register also isn't in doc/develop/event.rst so a follow-up to
> expand on this would be good, yes, as the help text should generally
> point towards the rST docs, especially for non-user options.

https://patchwork.ozlabs.org/project/uboot/patch/20230120214605.2725139-1-sjg@chromium.org/

Regards,
Simon
diff mbox series

Patch

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..daa01a10ebdc 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
@@ -482,6 +483,7 @@  config BOOTMETH_VBE
 config SPL_BOOTMETH_VBE
 	bool "Bootdev support for Verified Boot for Embedded (SPL)"
 	depends on SPL && FIT
+	select EVENT
 	default y if VPL
 	help
 	  Enables support for VBE boot. This is a standard boot method which
@@ -491,6 +493,7 @@  config SPL_BOOTMETH_VBE
 config VPL_BOOTMETH_VBE
 	bool "Bootdev support for Verified Boot for Embedded (VPL)"
 	depends on VPL && FIT
+	select EVENT
 	default y
 	help
 	  Enables support for VBE boot. This is a standard boot method which
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 439b2198f605..1c9f4774ba7a 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..b630d88ef9e2 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -14,8 +14,8 @@  config EFI_LOADER
 	depends on !EFI_APP
 	default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
 	select CHARSET
+	# We need to send DM events, dynamically, in the EFI block driver
 	select DM_EVENT
-	select EVENT
 	select EVENT_DYNAMIC
 	select LIB_UUID
 	imply PARTITION_UUIDS