内核调用栈log
[ 0.000000] Call trace:
[ 0.000000] dump_backtrace+0x0/0x174
[ 0.000000] show_stack+0x28/0x3c
[ 0.000000] dump_stack+0xb4/0x110
[ 0.000000] __irq_domain_add+0x84/0x2f4
[ 0.000000] gic_init_bases+0x70/0x240
[ 0.000000] __gic_init_bases+0x1d4/0x200
[ 0.000000] gic_of_init+0x2dc/0x3c8
[ 0.000000] of_irq_init+0x1c8/0x370
[ 0.000000] irqchip_init+0x20/0x44
[ 0.000000] init_IRQ+0x168/0x198
[ 0.000000] start_kernel+0x2f8/0x4b8
[ 0.000000] __irq_domain_add+0x84/0x2f4
[ 0.000000] gicv2m_allocate_domains+0x60/0x100
[ 0.000000] gicv2m_init+0x17c/0x208
[ 0.000000] gic_of_init+0x384/0x3c8
[ 0.000000] of_irq_init+0x1c8/0x370
[ 0.000000] irqchip_init+0x20/0x44
[ 0.000000] init_IRQ+0x168/0x198
[ 0.000000] start_kernel+0x2f8/0x4b8
[ 0.000000] __irq_domain_add+0x84/0x2f4
[ 0.000000] irq_domain_create_hierarchy+0x68/0x90
[ 0.000000] msi_create_irq_domain+0x54/0x160
[ 0.000000] pci_msi_create_irq_domain+0x60/0x164
[ 0.000000] gicv2m_allocate_domains+0x98/0x100
[ 0.000000] gicv2m_init+0x17c/0x208
[ 0.000000] gic_of_init+0x384/0x3c8
[ 0.000000] of_irq_init+0x1c8/0x370
[ 0.000000] irqchip_init+0x20/0x44
[ 0.000000] init_IRQ+0x168/0x198
[ 0.000000] start_kernel+0x2f8/0x4b8
[ 0.000000] __irq_domain_add+0x84/0x2f4
[ 0.000000] irq_domain_create_hierarchy+0x68/0x90
[ 0.000000] msi_create_irq_domain+0x54/0x160
[ 0.000000] platform_msi_create_irq_domain+0x44/0x160
[ 0.000000] gicv2m_allocate_domains+0xb0/0x100
[ 0.000000] gicv2m_init+0x17c/0x208
[ 0.000000] gic_of_init+0x384/0x3c8
[ 0.000000] of_irq_init+0x1c8/0x370
[ 0.000000] irqchip_init+0x20/0x44
[ 0.000000] init_IRQ+0x168/0x198
[ 0.000000] start_kernel+0x2f8/0x4b8
[ 16.236672] __irq_domain_add+0x84/0x2f4
[ 16.240597] irq_domain_add_simple+0x58/0xc8
[ 16.244870] gpiochip_add_data_with_key+0x88c/0xd20
[ 16.249751] devm_gpiochip_add_data+0x5c/0xb0
[ 16.254111] pl061_probe+0x190/0x1f0
[ 16.257688] amba_probe+0xd8/0x18c
[ 16.261093] really_probe+0xec/0x4a0
[ 16.264669] driver_probe_device+0xec/0x134
[ 16.268854] device_driver_attach+0xc0/0xd0
[ 16.273039] __driver_attach+0xb0/0x180
[ 16.276876] bus_for_each_dev+0x84/0xe0
[ 16.280712] driver_attach+0x34/0x40
[ 16.284288] bus_add_driver+0x14c/0x240
[ 16.288125] driver_register+0x7c/0x124
[ 16.291962] amba_driver_register+0x58/0x6c
[ 16.296148] pl061_gpio_init+0x20/0x28
[ 16.299898] do_one_initcall+0x54/0x2d0
[ 16.303736] kernel_init_freeable+0x1b0/0x25c
[ 16.308095] kernel_init+0x1c/0x114
[ 16.311584] ret_from_fork+0x10/0x18
GIC-v中断控制器定义
- 0 - 15: SGI,软件定义的中断
- 16 - 31: PPI,一个cpu核私有的中断,比较timer中断
- 32 - nr_irqs: SPI,所有外设用的中断
Gic设备树定义
arch/arm64/boot/dts/arm/juno-base.dtsi
gic: interrupt-controller@2c010000 {
compatible = "arm,gic-400", "arm,cortex-a15-gic";
reg = <0x0 0x2c010000 0 0x1000>, //GIC DIST
<0x0 0x2c02f000 0 0x2000>, //GIC CPU
<0x0 0x2c04f000 0 0x2000>,