[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Unable to retrieve IRQ 1 from the device tree on OMAP5432
On Wed, 2013-07-03 at 21:40 +0800, Chen Baozi wrote: > 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>; You don't have enough interrupts here. Compare with the vexpress dts: timer { compatible = "arm,armv7-timer"; interrupts = <1 13 0xf08>, <1 14 0xf08>, <1 11 0xf08>, <1 10 0xf08>; }; These cover the virt and hyperviso timers as well as the secure and non-secure physical timers. Most platforms seem to have the timer node at the top-level rather than duplicated for each cpu node. > 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |