[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/3] xen: arm: propagate gic's #interrupt-cells property to dom0.
On Mon, 2015-03-16 at 16:01 +0000, Julien Grall wrote: > Hi Ian, > > On 12/03/15 17:17, Ian Campbell wrote: > > This is similar to 816f5bb1f074 "xen: arm: propagate gic's > > should propagate (rather than invent our own value) since this value > > is used to size fields within other properties within the tree. > > I'm not sure why I didn't do this as part of 816f5bb1f074. I think > > probably just because #interrupt-cells must always be 3 for a GIC > > whereas #address-cells can legitimately differ. Regardless, I think we > > might as well do this in common code. > > Hmmm... We are creating some interrupt ourself assuming the number of > interrupt cells is 3. So it makes sense to hard-code (not really invent) > the value. I'll move the addition to common code but leave it as hard coded then. > > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > --- > > xen/arch/arm/domain_build.c | 18 +++++++++++++----- > > xen/arch/arm/gic-hip04.c | 4 ---- > > xen/arch/arm/gic-v2.c | 4 ---- > > xen/arch/arm/gic-v3.c | 4 ---- > > 4 files changed, 13 insertions(+), 17 deletions(-) > > > > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > > index ab4ad65..2a2fc2b 100644 > > --- a/xen/arch/arm/domain_build.c > > +++ b/xen/arch/arm/domain_build.c > > @@ -784,8 +784,8 @@ static int make_gic_node(const struct domain *d, void > > *fdt, > > { > > const struct dt_device_node *gic = dt_interrupt_controller; > > int res = 0; > > - const void *addrcells; > > - u32 addrcells_len; > > + const void *cells; > > + u32 cells_len; > > > > /* > > * Xen currently supports only a single GIC. Discard any secondary > > @@ -815,10 +815,18 @@ static int make_gic_node(const struct domain *d, void > > *fdt, > > return res; > > } > > > > - addrcells = dt_get_property(gic, "#address-cells", &addrcells_len); > > - if ( addrcells ) > > + cells = dt_get_property(gic, "#address-cells", &cells_len); > > + if ( cells ) > > { > > - res = fdt_property(fdt, "#address-cells", addrcells, > > addrcells_len); > > + res = fdt_property(fdt, "#address-cells", cells, cells_len); > > + if ( res ) > > + return res; > > + } > > + > > + cells = dt_get_property(gic, "#interrupt-cells", &cells_len); > > + if ( cells ) > > + { > > + res = fdt_property(fdt, "#interrupt-cells", cells, cells_len); > > The #interrupt-cells as to be present at any time for the GIC. So I > don't think it's worth to check if it presents. Maybe an ASSERT would be > enough? With the change discussed above it becomes moot. > Also, I would check somewhere that the value is effectively 3 otherwise > we are in trouble for the timer/evtchn interrupt creation. Though, it > was there before too. Probably somewhere should but I'm not sure where. > > diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c > > index ab80670..528500a 100644 > > --- a/xen/arch/arm/gic-v3.c > > +++ b/xen/arch/arm/gic-v3.c > > @@ -1102,10 +1102,6 @@ static int gicv3_make_dt_node(const struct domain *d, > > if ( res ) > > return res; > > > > - res = fdt_property_cell(fdt, "#interrupt-cells", 3); > > - if ( res ) > > - return res; > > - > > res = fdt_property(fdt, "interrupt-controller", NULL, 0); > > if ( res ) > > return res; > > > > While you move #interrupt-cells to common code. Could you move > interrupt-controller too? I suppose I may as well. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |