xen/common/device-tree/device-tree.c | 21 +---------------- xen/drivers/passthrough/arm/smmu.c | 15 +----------- xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 34 deletions(-) create mode 100644 xen/include/xen/resource.h
Move resource definitions to a new architecture-agnostic shared header file.
Signed-off-by: Denis Mukhin <dmukhin@ford.com>
---
Link to the original patch:
https://lore.kernel.org/xen-devel/20250103-vuart-ns8250-v3-v1-18-c5d36b31d66c@ford.com/
---
---
xen/common/device-tree/device-tree.c | 21 +----------------
xen/drivers/passthrough/arm/smmu.c | 15 +-----------
xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++
3 files changed, 36 insertions(+), 34 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..aa6a968b57 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>
@@ -70,22 +71,8 @@
#define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
#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 Fri, 7 Feb 2025, dmkhn@proton.me wrote:
> 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>
> ---
> Link to the original patch:
> https://lore.kernel.org/xen-devel/20250103-vuart-ns8250-v3-v1-18-c5d36b31d66c@ford.com/
> ---
> ---
> xen/common/device-tree/device-tree.c | 21 +----------------
> xen/drivers/passthrough/arm/smmu.c | 15 +-----------
> xen/include/xen/resource.h | 34 ++++++++++++++++++++++++++++
> 3 files changed, 36 insertions(+), 34 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..aa6a968b57 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>
> @@ -70,22 +71,8 @@
> #define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
> #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 08.02.2025 03:54, Stefano Stabellini wrote:
> On Fri, 7 Feb 2025, dmkhn@proton.me wrote:
>> 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>
Hmm, don't you think ...
>> @@ -70,22 +71,8 @@
>> #define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
>> #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
... one of the blank lines being removed here would better stay?
Jan
On Monday, February 10th, 2025 at 1:27 AM, Jan Beulich <jbeulich@suse.com> wrote:
>
>
> On 08.02.2025 03:54, Stefano Stabellini wrote:
>
> > On Fri, 7 Feb 2025, dmkhn@proton.me wrote:
> >
> > > 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
>
>
> Hmm, don't you think ...
>
> > > @@ -70,22 +71,8 @@
> > > #define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
> > > #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
>
>
> ... one of the blank lines being removed here would better stay?
I think the block of assorted macros (the first macro is not of not of_xxx() type)
does not need an extra newline.
The resulting block of macros looks like the following:
[[
/* Alias to Xen device tree helpers */
#define device_node dt_device_node
#define of_phandle_args dt_phandle_args
#define of_device_id dt_device_match
#define of_match_node dt_match_node
#define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
#define of_property_read_bool dt_property_read_bool
#define of_parse_phandle_with_args dt_parse_phandle_with_args
#define platform_device dt_device_node
]]
>
> Jan
On 11.02.2025 08:43, Denis Mukhin wrote:
>> On 08.02.2025 03:54, Stefano Stabellini wrote:
>>> On Fri, 7 Feb 2025, dmkhn@proton.me wrote:
>>>
>>>> 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
>>
>>
>> Hmm, don't you think ...
>>
>>>> @@ -70,22 +71,8 @@
>>>> #define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
>>>> #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
>>
>>
>> ... one of the blank lines being removed here would better stay?
>
> I think the block of assorted macros (the first macro is not of not of_xxx() type)
> does not need an extra newline.
>
> The resulting block of macros looks like the following:
> [[
>
> /* Alias to Xen device tree helpers */
> #define device_node dt_device_node
> #define of_phandle_args dt_phandle_args
> #define of_device_id dt_device_match
> #define of_match_node dt_match_node
> #define of_property_read_u32(np, pname, out) (!dt_property_read_u32(np, pname, out))
> #define of_property_read_bool dt_property_read_bool
> #define of_parse_phandle_with_args dt_parse_phandle_with_args
> #define platform_device dt_device_node
>
> ]]
And I think the of_* ones would better be separated by blank lines
from the others. Arguably platform_device might then want to move up,
immediately next to device_node.
Jan
© 2016 - 2026 Red Hat, Inc.