On Tue, 28 Sep 2021, Rahul Singh wrote: > Based Linux commit 41e5c0f81d3e676d671d96a0a1fafb27abfbd9d7 > > Import the Linux helper of_get_pci_domain_nr. This function will try to > obtain the host bridge domain number by finding a property called > "linux,pci-domain" of the given device node. > > Signed-off-by: Rahul Singh <rahul.si...@arm.com>
Reviewed-by: Stefano Stabellini <sstabell...@kernel.org> > --- > Change in v3: > - Modify commit message to include upstream Linux commit-id not stable > Linux commit-id > - Remove return value as those are not valid for XEN > Change in v2: Patch introduced in v2 > --- > xen/common/device_tree.c | 12 ++++++++++++ > xen/include/xen/device_tree.h | 17 +++++++++++++++++ > 2 files changed, 29 insertions(+) > > diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c > index 53160d61f8..ea93da1725 100644 > --- a/xen/common/device_tree.c > +++ b/xen/common/device_tree.c > @@ -2183,6 +2183,18 @@ void __init dt_unflatten_host_device_tree(void) > dt_alias_scan(); > } > > +int dt_get_pci_domain_nr(struct dt_device_node *node) > +{ > + u32 domain; > + int error; > + > + error = dt_property_read_u32(node, "linux,pci-domain", &domain); > + if ( !error ) > + return -EINVAL; > + > + return (u16)domain; > +} > + > /* > * Local variables: > * mode: C > diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h > index 3ffe3eb3d2..2297c59ce6 100644 > --- a/xen/include/xen/device_tree.h > +++ b/xen/include/xen/device_tree.h > @@ -832,6 +832,23 @@ int dt_count_phandle_with_args(const struct > dt_device_node *np, > const char *list_name, > const char *cells_name); > > +/** > + * dt_get_pci_domain_nr - Find the host bridge domain number > + * of the given device node. > + * @node: Device tree node with the domain information. > + * > + * This function will try to obtain the host bridge domain number by finding > + * a property called "linux,pci-domain" of the given device node. > + * > + * Return: > + * * > 0 - On success, an associated domain number. > + * * -EINVAL - The property "linux,pci-domain" does not exist. > + * > + * Returns the associated domain number from DT in the range [0-0xffff], or > + * a negative value if the required property is not found. > + */ > +int dt_get_pci_domain_nr(struct dt_device_node *node); > + > #ifdef CONFIG_DEVICE_TREE_DEBUG > #define dt_dprintk(fmt, args...) \ > printk(XENLOG_DEBUG fmt, ## args) > -- > 2.17.1 >