[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®.