|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 1/5] xen/arm: Add support for GIC v3
On Tue, 2014-07-22 at 17:00 +0530, Vijay Kilari wrote:
> On Tue, Jul 22, 2014 at 4:43 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> >
> >
> > On 22/07/14 11:43, Ian Campbell wrote:
> >>
> >> On Tue, 2014-07-22 at 11:01 +0100, Julien Grall wrote:
> >>>
> >>>
> >>> On 22/07/14 10:48, Vijay Kilari wrote:
> >>>>>>
> >>>>>> +/*
> >>>>>> + * Additional registers defined in GIC v3.
> >>>>>> + * Common GICD registers are defined in gic.h
> >>>>>> + */
> >>>>>> +
> >>>>>> +#define GICD_STATUSR (0x010)
> >>>>>> [...][
> >>>>>> +#define GICV3_GICD_PIDR0 (0x92)
> >>>>>
> >>>>>
> >>>>> What is the distinction between variables with GIC[DR]_ prefixes and
> >>>>> those with GICV3_GIC[DR]_ ones?
> >>>>
> >>>>
> >>>> GICV3 is prefixed for indicating that there are values not the
> >>>> addresses.
> >>>> In anycase I will remove GICV3 prefixes and postfix _VAL
> >>>
> >>>
> >>> Those value are GICV3 specific. If you drop the prefix we won't know
> >>> what are their purpose...
> >>
> >>
> >> I'm not so sure that's the case. We will know it is the value to use for
> >> GICD_PIDR0 for any GIC which includes that register, which is at least
> >> v3 and v4 right now. Calling it V3 is equally misleading as leaving it
> >> out.
> >> Given that we've decided to share the #defines across versions I think
> >> we should leave the prefix off. The alternative is to make sure
> >> everything is prefixed and to duplicate the definitions for each
> >> version, which is an approach we previously moved away from I think, I
> >> don't see a strong reason to go back on that decision now.
> >
> >
> >
> > On GICv2, this field is called ICPIDR0 (same register offset) and is equal
> > to 0x90.
> >
> > If those values are only used for the vgic v3 driver, then they should live
> > in the c files and not in the common header.
>
> These PIDR values(not all) are used by both vgic-v3 and gicv3 driver. So those
> are kept in common header file.
I think all that should be in the header file are the usual masks and
offsets used to decode the register and specific names defines to match
against. e.g. for PIDR2:
#define GICD_PIDR2_ARCH_REV_OFFSET (4)
#define GICD_PIDR2_ARCH_REV_MASK (0xf << GICD_PIDR2_ARCH_REV_OFFSET)
#define GICD_PIDR2_USES_JEP_MASK 0x08
#define GICD_PIDR2_JEP_ID_MASK 0x07
...
The gic code should use these to extract things it needs.
It would normally be OK to also define:
#define GICD_PIDR2_ARCH_GICV1 1
#define GICD_PIDR2_ARCH_GICV2 2
#define GICD_PIDR2_ARCH_GICV3 3
to compare against, but in this case since there is a 1:1 correspondence
there doesn't seem to be much point.
The vgic code might use these to construct a value, or might have a
local define or constant with a suitable comment.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |