On Mon, Aug 19, 2019 at 4:29 PM Wei Xu <xuw...@hisilicon.com> wrote: > > Invoke acpi_gpiochip_request_interrupts after the acpi data has been > attached to the pl061 acpi node to register interruption. > > Otherwise it will be failed to register interruption for the ACPI case. > Because in the gpiochip_add_data_with_key, acpi_gpiochip_add is invoked > after gpiochip_add_irqchip but at that time the acpi data has not been > attached yet. > > Tested with below steps: > > qemu-system-aarch64 \ > -machine virt,gic-version=3 -cpu cortex-a57 \ > -m 1G,maxmem=4G,slots=4 \ > -kernel Image -initrd rootfs.cpio.gz \ > -net none -nographic \ > -bios QEMU_EFI.fd \ > -append "console=ttyAMA0 acpi=force earlycon=pl011,0x9000000" > > The pl061 interruption is missed and the following output is not in the > /proc/interrupts on the v5.3-rc4 compared with the v5.2.0-rc7. > > 43: 0 ARMH0061:00 3 Edge ACPI:Event
The proper fix is to revert the culprit since we call acpi_gpiochip_request_interrupts() for all controllers. Linus, please re-do the approach with IRQ handling, it seems broadly regress with ACPI enabled platforms. -- With Best Regards, Andy Shevchenko