[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN][PATCH v11 15/20] arm/asm/setup.h: Update struct map_range_data to add rangeset.
On Mon, 4 Sep 2023, Michal Orzel wrote: > On 01/09/2023 06:59, Vikram Garhwal wrote: > > Add rangesets for IRQs and IOMEMs. This was done to accommodate dynamic > > overlay > > node addition/removal operations. With overlay operations, new IRQs and > > IOMEMs > > are added in dt_host and routed. While removing overlay nodes, nodes are > > removed > > from dt_host and their IRQs and IOMEMs routing is also removed. Storing > > IRQs and > > IOMEMs in the rangeset will avoid re-parsing the device tree nodes to get > > the > > IOMEM and IRQ ranges for overlay remove ops. > > > > Dynamic overlay node add/remove will be introduced in follow-up patches. > > > > Signed-off-by: Vikram Garhwal <vikram.garhwal@xxxxxxx> > > > > --- > > Changes from v10: > > Replace paddr_to_pfn(PAGE_ALIGN()) with paddr_to_pfn_aligned(). > > Change data type of irq. > > fix function change for handle_device(). > > Remove unnecessary change .d = d in mr_data. > > --- > > --- > > xen/arch/arm/device.c | 43 +++++++++++++++++++++++++------- > > xen/arch/arm/domain_build.c | 4 +-- > > xen/arch/arm/include/asm/setup.h | 9 ++++--- > > 3 files changed, 42 insertions(+), 14 deletions(-) > > > > diff --git a/xen/arch/arm/device.c b/xen/arch/arm/device.c > > index 327e4d24fb..1f631d3274 100644 > > --- a/xen/arch/arm/device.c > > +++ b/xen/arch/arm/device.c > > @@ -165,6 +165,15 @@ int map_range_to_domain(const struct dt_device_node > > *dev, > > dt_dprintk(" - MMIO: %010"PRIx64" - %010"PRIx64" P2MType=%x\n", > > addr, addr + len, mr_data->p2mt); > > > > + if ( mr_data->iomem_ranges ) > > + { > > + res = rangeset_add_range(mr_data->iomem_ranges, > > + paddr_to_pfn(addr), > > + paddr_to_pfn_aligned(addr + len - 1)); > > + if ( res ) > > + return res; > > + } > > + > > return 0; > > } > > > > @@ -178,10 +187,11 @@ int map_range_to_domain(const struct dt_device_node > > *dev, > > */ > > int map_device_irqs_to_domain(struct domain *d, > > struct dt_device_node *dev, > > - bool need_mapping) > > + bool need_mapping, > > + struct rangeset *irq_ranges) > > { > > unsigned int i, nirq; > > - int res; > > + int res, irq; > You could make use of res to store irq just as it was done before without > introducing new local var. > Anyway, if you think it improves readability: > Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx> Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |