Skip to content
Snippets Groups Projects
  • Bin Meng's avatar
    d7a184d4
    timer: Remove DM_FLAG_PRE_RELOC flag in various drivers · d7a184d4
    Bin Meng authored
    
    When a driver declares DM_FLAG_PRE_RELOC flag, it wishes to be
    bound before relocation. However due to a bug in the DM core,
    the flag only takes effect when devices are statically declared
    via U_BOOT_DEVICE(). This bug has been fixed recently by commit
    "dm: core: Respect drivers with the DM_FLAG_PRE_RELOC flag in
    lists_bind_fdt()", but with the fix, it has a side effect that
    all existing drivers that declared DM_FLAG_PRE_RELOC flag will
    be bound before relocation now. This may expose potential boot
    failure on some boards due to insufficient memory during the
    pre-relocation stage.
    
    To mitigate this potential impact, the following changes are
    implemented:
    
    - Remove DM_FLAG_PRE_RELOC flag in the driver, if the driver
      only supports configuration from device tree (OF_CONTROL)
    - Keep DM_FLAG_PRE_RELOC flag in the driver only if the device
      is statically declared via U_BOOT_DEVICE()
    - Surround DM_FLAG_PRE_RELOC flag with OF_CONTROL check, for
      drivers that support both statically declared devices and
      configuration from device tree
    
    Signed-off-by: default avatarBin Meng <bmeng.cn@gmail.com>
    Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
    d7a184d4
    History
    timer: Remove DM_FLAG_PRE_RELOC flag in various drivers
    Bin Meng authored
    
    When a driver declares DM_FLAG_PRE_RELOC flag, it wishes to be
    bound before relocation. However due to a bug in the DM core,
    the flag only takes effect when devices are statically declared
    via U_BOOT_DEVICE(). This bug has been fixed recently by commit
    "dm: core: Respect drivers with the DM_FLAG_PRE_RELOC flag in
    lists_bind_fdt()", but with the fix, it has a side effect that
    all existing drivers that declared DM_FLAG_PRE_RELOC flag will
    be bound before relocation now. This may expose potential boot
    failure on some boards due to insufficient memory during the
    pre-relocation stage.
    
    To mitigate this potential impact, the following changes are
    implemented:
    
    - Remove DM_FLAG_PRE_RELOC flag in the driver, if the driver
      only supports configuration from device tree (OF_CONTROL)
    - Keep DM_FLAG_PRE_RELOC flag in the driver only if the device
      is statically declared via U_BOOT_DEVICE()
    - Surround DM_FLAG_PRE_RELOC flag with OF_CONTROL check, for
      drivers that support both statically declared devices and
      configuration from device tree
    
    Signed-off-by: default avatarBin Meng <bmeng.cn@gmail.com>
    Reviewed-by: default avatarSimon Glass <sjg@chromium.org>