drivers: pcie: initialize after interrupt controllers
PCIe devices refer to interrupt nodes, but are initialized with the same priority, making the sequence depending on the linking order. Add a new symbol and set it to one unit after intc to ensure that the initialization sequence is stable. Found with: west build -p -b qemu_cortex_a53 \ samples/drivers/virtualization/ivshmem/doorbell \ -DCONFIG_CHECK_INIT_PRIORITIES=y ... ERROR: /soc/pcie@4010000000 PRE_KERNEL_1 40 < /soc/interrupt-controller@8000000/its@8080000 POST_KERNEL 40 Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This commit is contained in:
parent
c2d049f56e
commit
5ea3f9a24e
3 changed files with 8 additions and 2 deletions
|
|
@ -14,6 +14,12 @@ module = PCIE
|
|||
module-str = pcie
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
|
||||
config PCIE_INIT_PRIORITY
|
||||
int "PCIe initialization priority"
|
||||
default 41
|
||||
help
|
||||
PCIe host drivers initialization priority.
|
||||
|
||||
config PCIE_CONTROLLER
|
||||
bool "PCIe Controller management"
|
||||
help
|
||||
|
|
|
|||
|
|
@ -554,4 +554,4 @@ static int pcie_init(void)
|
|||
#define PCIE_SYS_INIT_LEVEL PRE_KERNEL_1
|
||||
#endif
|
||||
|
||||
SYS_INIT(pcie_init, PCIE_SYS_INIT_LEVEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
||||
SYS_INIT(pcie_init, PCIE_SYS_INIT_LEVEL, CONFIG_PCIE_INIT_PRIORITY);
|
||||
|
|
|
|||
|
|
@ -403,7 +403,7 @@ static const struct pcie_ctrl_driver_api pcie_ecam_api = {
|
|||
&pcie_ecam_data##n, \
|
||||
&pcie_ecam_config##n, \
|
||||
PRE_KERNEL_1, \
|
||||
CONFIG_KERNEL_INIT_PRIORITY_DEFAULT, \
|
||||
CONFIG_PCIE_INIT_PRIORITY, \
|
||||
&pcie_ecam_api);
|
||||
|
||||
DT_INST_FOREACH_STATUS_OKAY(PCIE_ECAM_INIT)
|
||||
|
|
|
|||
Loading…
Reference in a new issue