|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 0/2] Add ability to handle nodes with interrupts-extended property
From: Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>
Hello, all.
The purpose of this small series is to add minimal required support for Xen to
be able to
handle device-tree nodes with "interrupts-extended" property [1].
The reason:
Xen expects to see "interrupts" property when parsing host device-tree.
But, there are cases when some device nodes contain "interrupts-extended"
property instead.
The good example here is arch timer node for R-Car Gen3/Gen2 family [2], which
is mandatory device
for Xen usage on ARM. And without ability to handle such nodes, Xen fails to
operate:
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Timer: Unable to retrieve IRQ 0 from the device tree
(XEN) ****************************************
----------
Preliminary tested on R-Car Gen3 based board. Log (with debug enabled) shows
that Xen recognized arch timer
interrupts represented with "interrupts-extended" property:
timer {
compatible = "arm,armv8-timer";
interrupts-extended = <&gic GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) |
IRQ_TYPE_LEVEL_LOW)>,
<&gic GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) |
IRQ_TYPE_LEVEL_LOW)>,
<&gic GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) |
IRQ_TYPE_LEVEL_LOW)>,
<&gic GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) |
IRQ_TYPE_LEVEL_LOW)>;
};
...
(XEN) dt_device_get_raw_irq: dev=/timer, index=0
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw:
par=/soc/interrupt-controller@f1010000,intspec=[0x00000001
0x0000000d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1010000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=1
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw:
par=/soc/interrupt-controller@f1010000,intspec=[0x00000001
0x0000000e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1010000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=2
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw:
par=/soc/interrupt-controller@f1010000,intspec=[0x00000001
0x0000000b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1010000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=3
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw:
par=/soc/interrupt-controller@f1010000,intspec=[0x00000001
0x0000000a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1010000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 8333 KHz
...
----------
The first patch had Julien's R-B some time ago, but I dropped it.
[1]
https://elixir.bootlin.com/linux/v5.1-rc7/source/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
[2]
https://elixir.bootlin.com/linux/v5.1-rc7/source/arch/arm64/boot/dts/renesas/r8a7795.dtsi#L3185
https://elixir.bootlin.com/linux/v5.1-rc7/source/arch/arm/boot/dts/r8a7790.dtsi#L1856
Oleksandr Tyshchenko (2):
xen/device-tree: Add dt_count_phandle_with_args helper
xen/device-tree: Add ability to handle nodes with interrupts-extended
prop
xen/common/device_tree.c | 39 ++++++++++++++++++++++++++++++++++++---
xen/include/xen/device_tree.h | 19 +++++++++++++++++++
2 files changed, 55 insertions(+), 3 deletions(-)
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |