[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Unable to retrieve IRQ 1 from the device tree on OMAP5432



Hi Ian & Julien,

After hacking the ns16550 driver on ARM, I can get the console output now
on OMAP5432 platform. However, when coming to the point of init_xen_time(),
I came across another problem:

(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Timer: Unable to retrieve IRQ 1 from the device tree
(XEN) ****************************************
(XEN)
(XEN) Reboot in five seconds...

And its code path is:

 - start_xen()
  - init_xen_time()
   - dt_device_get_irq()
    - dt_device_get_raw_irq()

where it failed when judging the following condition:

01    /* Check index */
02    if ( (index + 1) * intsize > intlen )
03        goto out;

while "index = TIMER_PHYS_NONSECURE_PPI", "intsize = 3" and "intlen = 3".

If I enable "DEBUG_DT", I can get the following debug info:

(XEN) dt_device_get_raw_irq: dev=/cpus/cpu@0/timer, index=0
(XEN)  intspec=1 intlen=3
(XEN)  intsize=3 intlen=3
(XEN) dt_irq_map_raw: 
par=/ocp/interrupt-controller@48211000,intspec=[0x00000001 
0x0000000e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/ocp/interrupt-controller@48211000, size=3
(XEN)  -> addrsize=1
(XEN)  -> got it !
(XEN) dt_device_get_raw_irq: dev=/cpus/cpu@0/timer, index=1
(XEN)  intspec=1 intlen=3
(XEN)  intsize=3 intlen=3

And the related dts writes:

        cpus {
                cpu@0 {
                        compatible = "arm,cortex-a15";
                        timer {
                                compatible = "arm,armv7-timer";
                                /* 14th PPI IRQ, active low level-sensitive */
                                interrupts = <1 14 0x308>;
                                clock-frequency = <6144000>;
                        };                                                      
                                                    
                };
                cpu@1 {
                        compatible = "arm,cortex-a15";
                        timer {
                                compatible = "arm,armv7-timer";
                                /* 14th PPI IRQ, active low level-sensitive */
                                interrupts = <1 14 0x308>;
                                clock-frequency = <6144000>;
                        };
                };
        };

Just couldn't understand "(index + 1) * intsize > intlen" stands for, and
wondering when it would be always satisifed while "index" is increasing from 0
to 3 and "intlen" is the length of interrupts property which is "3" on
both OMAP5 and EXYNOS5.

Any ideas?

Cheers,

Baozi

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.