xen/common/device-tree/device-tree.c | 21 +---------------- xen/drivers/passthrough/arm/smmu.c | 18 +++------------ xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 xen/include/xen/resource.h
From: Denis Mukhin <dmukhin@ford.com>
Move resource definitions to a new architecture-agnostic shared header file.
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
Changes in v2:
- Formatting fixes
- Link to v1: https://lore.kernel.org/xen-devel/20250207231814.3863449-1-dmukhin@ford.com/
---
xen/common/device-tree/device-tree.c | 21 +----------------
xen/drivers/passthrough/arm/smmu.c | 18 +++------------
xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 35 deletions(-)
create mode 100644 xen/include/xen/resource.h
diff --git a/xen/common/device-tree/device-tree.c b/xen/common/device-tree/device-tree.c
index d0528c5825..e8f810b2fe 100644
--- a/xen/common/device-tree/device-tree.c
+++ b/xen/common/device-tree/device-tree.c
@@ -24,6 +24,7 @@
#include <xen/ctype.h>
#include <asm/setup.h>
#include <xen/err.h>
+#include <xen/resource.h>
const void *device_tree_flattened;
dt_irq_xlate_func dt_irq_xlate;
@@ -535,26 +536,6 @@ int dt_child_n_size_cells(const struct dt_device_node *parent)
return __dt_n_size_cells(parent, true);
}
-/*
- * These are defined in Linux where much of this code comes from, but
- * are currently unused outside this file in the context of Xen.
- */
-#define IORESOURCE_BITS 0x000000ff /* Bus-specific bits */
-
-#define IORESOURCE_TYPE_BITS 0x00001f00 /* Resource type */
-#define IORESOURCE_IO 0x00000100 /* PCI/ISA I/O ports */
-#define IORESOURCE_MEM 0x00000200
-#define IORESOURCE_REG 0x00000300 /* Register offsets */
-#define IORESOURCE_IRQ 0x00000400
-#define IORESOURCE_DMA 0x00000800
-#define IORESOURCE_BUS 0x00001000
-
-#define IORESOURCE_PREFETCH 0x00002000 /* No side effects */
-#define IORESOURCE_READONLY 0x00004000
-#define IORESOURCE_CACHEABLE 0x00008000
-#define IORESOURCE_RANGELENGTH 0x00010000
-#define IORESOURCE_SHADOWABLE 0x00020000
-
/*
* Default translator (generic bus)
*/
diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c
index 03d22bce1e..0f8d47dc98 100644
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -50,6 +50,7 @@
#include <xen/rbtree.h>
#include <xen/sched.h>
#include <xen/sizes.h>
+#include <xen/resource.h>
#include <asm/atomic.h>
#include <asm/device.h>
#include <asm/io.h>
@@ -64,6 +65,8 @@
/* Alias to Xen device tree helpers */
#define device_node dt_device_node
+#define platform_device dt_device_node
+
#define of_phandle_args dt_phandle_args
#define of_device_id dt_device_match
#define of_match_node dt_match_node
@@ -71,21 +74,6 @@
#define of_property_read_bool dt_property_read_bool
#define of_parse_phandle_with_args dt_parse_phandle_with_args
-/* Xen: Helpers to get device MMIO and IRQs */
-struct resource
-{
- paddr_t addr;
- paddr_t size;
- unsigned int type;
-};
-
-#define resource_size(res) (res)->size;
-
-#define platform_device dt_device_node
-
-#define IORESOURCE_MEM 0
-#define IORESOURCE_IRQ 1
-
static struct resource *platform_get_resource(struct platform_device *pdev,
unsigned int type,
unsigned int num)
diff --git a/xen/include/xen/resource.h b/xen/include/xen/resource.h
new file mode 100644
index 0000000000..5d10363128
--- /dev/null
+++ b/xen/include/xen/resource.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * System resource description.
+ */
+#ifndef XEN__RESOURCE_H
+#define XEN__RESOURCE_H
+
+#define IORESOURCE_BITS 0x000000FFU /* Bus-specific bits */
+
+#define IORESOURCE_TYPE_BITS 0x00001F00U /* Resource type */
+#define IORESOURCE_IO 0x00000100U /* PCI/ISA I/O ports */
+#define IORESOURCE_MEM 0x00000200U
+#define IORESOURCE_REG 0x00000300U /* Register offsets */
+#define IORESOURCE_IRQ 0x00000400U
+#define IORESOURCE_DMA 0x00000800U
+#define IORESOURCE_BUS 0x00001000U
+
+#define IORESOURCE_PREFETCH 0x00002000U /* No side effects */
+#define IORESOURCE_READONLY 0x00004000U
+#define IORESOURCE_CACHEABLE 0x00008000U
+#define IORESOURCE_RANGELENGTH 0x00010000U
+#define IORESOURCE_SHADOWABLE 0x00020000U
+
+#define IORESOURCE_UNKNOWN (~0U)
+
+struct resource {
+ paddr_t addr;
+ paddr_t size;
+ unsigned int type;
+};
+
+#define resource_size(res) ((res)->size)
+
+#endif /* XEN__RESOURCE_H */
--
2.34.1
On Tue, 11 Feb 2025, dmkhn@proton.me wrote: > From: Denis Mukhin <dmukhin@ford.com> > > Move resource definitions to a new architecture-agnostic shared header file. > > Signed-off-by: Denis Mukhin <dmukhin@ford.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Changes in v2: > - Formatting fixes > - Link to v1: https://lore.kernel.org/xen-devel/20250207231814.3863449-1-dmukhin@ford.com/ > --- > xen/common/device-tree/device-tree.c | 21 +---------------- > xen/drivers/passthrough/arm/smmu.c | 18 +++------------ > xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++ > 3 files changed, 38 insertions(+), 35 deletions(-) > create mode 100644 xen/include/xen/resource.h > > diff --git a/xen/common/device-tree/device-tree.c b/xen/common/device-tree/device-tree.c > index d0528c5825..e8f810b2fe 100644 > --- a/xen/common/device-tree/device-tree.c > +++ b/xen/common/device-tree/device-tree.c > @@ -24,6 +24,7 @@ > #include <xen/ctype.h> > #include <asm/setup.h> > #include <xen/err.h> > +#include <xen/resource.h> > > const void *device_tree_flattened; > dt_irq_xlate_func dt_irq_xlate; > @@ -535,26 +536,6 @@ int dt_child_n_size_cells(const struct dt_device_node *parent) > return __dt_n_size_cells(parent, true); > } > > -/* > - * These are defined in Linux where much of this code comes from, but > - * are currently unused outside this file in the context of Xen. > - */ > -#define IORESOURCE_BITS 0x000000ff /* Bus-specific bits */ > - > -#define IORESOURCE_TYPE_BITS 0x00001f00 /* Resource type */ > -#define IORESOURCE_IO 0x00000100 /* PCI/ISA I/O ports */ > -#define IORESOURCE_MEM 0x00000200 > -#define IORESOURCE_REG 0x00000300 /* Register offsets */ > -#define IORESOURCE_IRQ 0x00000400 > -#define IORESOURCE_DMA 0x00000800 > -#define IORESOURCE_BUS 0x00001000 > - > -#define IORESOURCE_PREFETCH 0x00002000 /* No side effects */ > -#define IORESOURCE_READONLY 0x00004000 > -#define IORESOURCE_CACHEABLE 0x00008000 > -#define IORESOURCE_RANGELENGTH 0x00010000 > -#define IORESOURCE_SHADOWABLE 0x00020000 > - > /* > * Default translator (generic bus) > */ > diff --git a/xen/drivers/passthrough/arm/smmu.c b/xen/drivers/passthrough/arm/smmu.c > index 03d22bce1e..0f8d47dc98 100644 > --- a/xen/drivers/passthrough/arm/smmu.c > +++ b/xen/drivers/passthrough/arm/smmu.c > @@ -50,6 +50,7 @@ > #include <xen/rbtree.h> > #include <xen/sched.h> > #include <xen/sizes.h> > +#include <xen/resource.h> > #include <asm/atomic.h> > #include <asm/device.h> > #include <asm/io.h> > @@ -64,6 +65,8 @@ > > /* Alias to Xen device tree helpers */ > #define device_node dt_device_node > +#define platform_device dt_device_node > + > #define of_phandle_args dt_phandle_args > #define of_device_id dt_device_match > #define of_match_node dt_match_node > @@ -71,21 +74,6 @@ > #define of_property_read_bool dt_property_read_bool > #define of_parse_phandle_with_args dt_parse_phandle_with_args > > -/* Xen: Helpers to get device MMIO and IRQs */ > -struct resource > -{ > - paddr_t addr; > - paddr_t size; > - unsigned int type; > -}; > - > -#define resource_size(res) (res)->size; > - > -#define platform_device dt_device_node > - > -#define IORESOURCE_MEM 0 > -#define IORESOURCE_IRQ 1 > - > static struct resource *platform_get_resource(struct platform_device *pdev, > unsigned int type, > unsigned int num) > diff --git a/xen/include/xen/resource.h b/xen/include/xen/resource.h > new file mode 100644 > index 0000000000..5d10363128 > --- /dev/null > +++ b/xen/include/xen/resource.h > @@ -0,0 +1,34 @@ > +/* SPDX-License-Identifier: GPL-2.0-only */ > +/* > + * System resource description. > + */ > +#ifndef XEN__RESOURCE_H > +#define XEN__RESOURCE_H > + > +#define IORESOURCE_BITS 0x000000FFU /* Bus-specific bits */ > + > +#define IORESOURCE_TYPE_BITS 0x00001F00U /* Resource type */ > +#define IORESOURCE_IO 0x00000100U /* PCI/ISA I/O ports */ > +#define IORESOURCE_MEM 0x00000200U > +#define IORESOURCE_REG 0x00000300U /* Register offsets */ > +#define IORESOURCE_IRQ 0x00000400U > +#define IORESOURCE_DMA 0x00000800U > +#define IORESOURCE_BUS 0x00001000U > + > +#define IORESOURCE_PREFETCH 0x00002000U /* No side effects */ > +#define IORESOURCE_READONLY 0x00004000U > +#define IORESOURCE_CACHEABLE 0x00008000U > +#define IORESOURCE_RANGELENGTH 0x00010000U > +#define IORESOURCE_SHADOWABLE 0x00020000U > + > +#define IORESOURCE_UNKNOWN (~0U) > + > +struct resource { > + paddr_t addr; > + paddr_t size; > + unsigned int type; > +}; > + > +#define resource_size(res) ((res)->size) > + > +#endif /* XEN__RESOURCE_H */ > -- > 2.34.1 > >
© 2016 - 2025 Red Hat, Inc.