Re: [PATCH v14 01/18] irqchip/sifive-plic: Convert PLIC driver into a platform driver
From: Anup Patel <hidden>
Date: 2024-06-20 15:08:22
Also in:
linux-devicetree, linux-riscv, lkml
On Thu, Jun 20, 2024 at 6:40 PM Emil Renner Berthing [off-list ref] wrote:
Anup Patel wrote:quoted
On Wed, Jun 19, 2024 at 11:16 PM Emil Renner Berthing [off-list ref] wrote:quoted
Anup Patel wrote:quoted
On Tue, Jun 18, 2024 at 7:00 PM Emil Renner Berthing [off-list ref] wrote:quoted
Anup Patel wrote:quoted
The PLIC driver does not require very early initialization so convert it into a platform driver. After conversion, the PLIC driver is probed after CPUs are brought-up so setup cpuhp state after context handler of all online CPUs are initialized otherwise PLIC driver crashes for platforms with multiple PLIC instances. Signed-off-by: Anup Patel <redacted>Hi Anup, Sorry for the late reply to the mailing list, but ever since 6.9 where this was applied my Allwinner D1 based boards no longer boot. This is the log of my LicheeRV Dock booting plain 6.10-rc4, locking up and then rebooting due to the the watchdog timing out: https://pastebin.com/raw/nsbzgEKW On 6.10-rc4 I can bring the same board to boot by reverting this patch and all patches building on it. Eg.: git revert e306a894bd51 a7fb69ffd7ce abb720579490 \ 956521064780 a15587277a24 6c725f33d67b \ b68d0ff529a9 25d862e183d4 8ec99b033147Does your board boot with only SBI timer driver enabled ?I'm not 100% sure this is what you mean, but with this change I can disable CONFIG_SUN4I_TIMER:diff --git a/arch/riscv/Kconfig.socs b/arch/riscv/Kconfig.socs index f51bb24bc84c..0143545348eb 100644 --- a/arch/riscv/Kconfig.socs +++ b/arch/riscv/Kconfig.socs@@ -39,7 +39,6 @@ config ARCH_SUNXI bool "Allwinner sun20i SoCs" depends on MMU && !XIP_KERNEL select ERRATA_THEAD - select SUN4I_TIMER help This enables support for Allwinner sun20i platform hardware, including boards based on the D1 and D1s SoCs.But unfortunately the board still doesn't boot: https://pastebin.com/raw/AwRxcfeuI think we should enable debug prints in DD core and see which device is not getting probed due to lack of a provider. Just add "#define DEBUG" at the top in drivers/base/core.c and boot again with "loglevel=8" kernel parameter (along with the above change).With the above changes this is what I get: https://pastebin.com/raw/JfRrEahT
You should see prints like below which show producer consumer relation: [ 0.214589] /soc/rtc@101000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.214966] /soc/serial@10000000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.215443] /soc/virtio_mmio@10008000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.216041] /soc/virtio_mmio@10007000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.216482] /soc/virtio_mmio@10006000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.216868] /soc/virtio_mmio@10005000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.217477] /soc/virtio_mmio@10004000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.217949] /soc/virtio_mmio@10003000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.218595] /soc/virtio_mmio@10002000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.219280] /soc/virtio_mmio@10001000 Linked as a fwnode consumer to /soc/plic@c000000 [ 0.219908] /soc/plic@c000000 Linked as a fwnode consumer to /cpus/cpu@0/interrupt-controller [ 0.220800] /soc/plic@c000000 Linked as a fwnode consumer to /cpus/cpu@1/interrupt-controller [ 0.221323] /soc/plic@c000000 Linked as a fwnode consumer to /cpus/cpu@2/interrupt-controller [ 0.221838] /soc/plic@c000000 Linked as a fwnode consumer to /cpus/cpu@3/interrupt-controller [ 0.222347] /soc/clint@2000000 Linked as a fwnode consumer to /cpus/cpu@0/interrupt-controller [ 0.222769] /soc/clint@2000000 Linked as a fwnode consumer to /cpus/cpu@1/interrupt-controller [ 0.223864] /soc/clint@2000000 Linked as a fwnode consumer to /cpus/cpu@2/interrupt-controller [ 0.224370] /soc/clint@2000000 Linked as a fwnode consumer to /cpus/cpu@3/interrupt-controller [ 0.225217] /soc/pci@30000000 Linked as a fwnode consumer to /soc/plic@c000000 To get further prints, I suggest enabling SBI_HVC console and use "console=hvc0" as kernel parameter. Regards, Anup