From: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com> Currently Xen maps all IRQs and memory ranges for all devices except those marked for passthrough, e.g. it doesn't pay attention to the "status" property of the node.
According to the device tree specification [1]: - "okay" Indicates the device is operational. - "disabled" Indicates that the device is not presently operational, but it might become operational in the future (for example, something is not plugged in, or switched off). Refer to the device binding for details on what disabled means for a given device. So, "disabled" status is device dependent and mapping should be taken by case-by-case approach with that respect. Although in general Xen should map IRQs and memory ranges as the disabled devices might become operational it makes it impossible for the other devices, which are not operational in any case, to skip the mappings. This patch disables mapping for the devices with status = "disabled". [1] https://github.com/devicetree-org/devicetree-specification/releases/download/v0.3/devicetree-specification-v0.3.pdf Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com> --- New in v6 --- xen/arch/arm/domain_build.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index c7d992456ca7..d3a4c0a173b8 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1837,7 +1837,8 @@ static int __init handle_device(struct domain *d, struct dt_device_node *dev, unsigned int i; int res; u64 addr, size; - bool own_device = !dt_device_for_passthrough(dev); + bool own_device = !dt_device_for_passthrough(dev) && + dt_device_is_available(dev); /* * For PCI passthrough we only need to remap to Dom0 the interrupts * and memory ranges from "reg" property which cover controller's -- 2.25.1