From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
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 "interrupts-extended" property is a special form for use when a node needs
to reference multiple interrupt parents.
But, there are cases when "interrupts-extended" property is used for "outside /soc node"
with a single interrupt parent as an equivalent of pairs ("interrupt-parent" + "interrupts").
----------
Tested on R-Car Gen2 based board using current staging (commit 91f86f8634f99abd8f242943e62452211a09fa0a).
Log (with debug enabled) shows that Xen recognized ARCH timer interrupts represented with "interrupts-extended" property:
timer {
compatible = "arm,armv7-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 4.13-unstable
(XEN) Xen version 4.13-unstable (otyshchenko@) (arm-linux-gnueabi-gcc (Linaro GCC 7.3-2018.05) 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701]) debug=y Tue May 21 17:08:47 E9
(XEN) Latest ChangeSet: Thu Feb 2 11:59:05 2017 +0200 git:85faf88
(XEN) build-id: f0739ad25a57b50d508afd5e22e93af3d052acbf
(XEN) Processor: 413fc0f2: "ARM Limited", variant: 0x3, part 0xc0f, rev 0x2
(XEN) 32-bit Execution:
(XEN) Processor Features: 00001131:00011011
(XEN) Instruction Sets: AArch32 A32 Thumb Thumb-2 ThumbEE Jazelle
(XEN) Extensions: GenericTimer Security
(XEN) Debug Features: 02010555
(XEN) Auxiliary Features: 00000000
(XEN) Memory Model Features: 10201105 40000000 01240000 02102211
(XEN) ISA Features: 02101110 13112111 21232041 11112131 10011142 00000000
(XEN) Using SMC Calling Convention v1.0
(XEN) Using PSCI v1.0
(XEN) SMP: Allowing 8 CPUs
(XEN) dt_device_get_raw_irq: dev=/timer, index=0
(XEN) using 'interrupts-extended' property
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@f1001000,intspec=[0x00000001 0x0000000d...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1001000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=1
(XEN) using 'interrupts-extended' property
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@f1001000,intspec=[0x00000001 0x0000000e...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1001000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=2
(XEN) using 'interrupts-extended' property
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@f1001000,intspec=[0x00000001 0x0000000b...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1001000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) dt_device_get_raw_irq: dev=/timer, index=3
(XEN) using 'interrupts-extended' property
(XEN) intspec=1 intsize=3
(XEN) dt_irq_map_raw: par=/soc/interrupt-controller@f1001000,intspec=[0x00000001 0x0000000a...],ointsize=3
(XEN) dt_irq_map_raw: ipar=/soc/interrupt-controller@f1001000, size=3
(XEN) -> addrsize=0
(XEN) -> got it !
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 10000 KHz
----------
[1] https://elixir.bootlin.com/linux/v5.2-rc1/source/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
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 | 43 ++++++++++++++++++++++++++++++++++++++++---
xen/include/xen/device_tree.h | 19 +++++++++++++++++++
2 files changed, 59 insertions(+), 3 deletions(-)
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel