[v3 2/2] event: Correct dependencies on the EVENT framework
Tom Rini
trini at konsulko.com
Mon Jan 16 22:04:34 CET 2023
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 at linaro.org>
> > Cc: Heinrich Schuchardt <xypron.glpk at gmx.de>
> > 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")
> > Fixes: c5ef2025579e ("dm: fix DM_EVENT dependencies")
> > Signed-off-by: Tom Rini <trini at konsulko.com>
> > Tested-by: Simon Glass <sjg at chromium.org>
> > Reviewed-by: Simon Glass <sjg at chromium.org>
> > Reviewed-by: Fabio Estevam <festevam at 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230116/3eeeb8df/attachment.sig>
More information about the U-Boot
mailing list