Message ID | 1548084825-8803-22-git-send-email-julien.thierry@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: provide pseudo NMI with GICv3 | expand |
On Mon, 21 Jan 2019 15:33:40 +0000, Julien Thierry <julien.thierry@arm.com> wrote: > > Add accessors to the GIC distributor/redistributors priority registers. > > Signed-off-by: Julien Thierry <julien.thierry@arm.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Jason Cooper <jason@lakedaemon.net> > Cc: Marc Zyngier <marc.zyngier@arm.com> > --- > drivers/irqchip/irq-gic-common.c | 10 ++++++++++ > drivers/irqchip/irq-gic-common.h | 2 ++ > 2 files changed, 12 insertions(+) > > diff --git a/drivers/irqchip/irq-gic-common.c b/drivers/irqchip/irq-gic-common.c > index 3c93c6f..04eadbc 100644 > --- a/drivers/irqchip/irq-gic-common.c > +++ b/drivers/irqchip/irq-gic-common.c > @@ -110,6 +110,16 @@ int gic_configure_irq(unsigned int irq, unsigned int type, > return ret; > } > > +void gic_set_irq_prio(unsigned int irq, void __iomem *base, u8 prio) > +{ > + writeb_relaxed(prio, base + GIC_DIST_PRI + irq); > +} > + > +u8 gic_get_irq_prio(unsigned int irq, void __iomem *base) > +{ > + return readb_relaxed(base + GIC_DIST_PRI + irq); > +} > + Is there a reason why this is in irq-gic-common.c? If we can avoid it, I'd rather this is made private to GICv3, as I do not intend to support this for earlier revisions on the architecture. Thanks, M.
On 28/01/2019 12:04, Marc Zyngier wrote: > On Mon, 21 Jan 2019 15:33:40 +0000, > Julien Thierry <julien.thierry@arm.com> wrote: >> >> Add accessors to the GIC distributor/redistributors priority registers. >> >> Signed-off-by: Julien Thierry <julien.thierry@arm.com> >> Cc: Thomas Gleixner <tglx@linutronix.de> >> Cc: Jason Cooper <jason@lakedaemon.net> >> Cc: Marc Zyngier <marc.zyngier@arm.com> >> --- >> drivers/irqchip/irq-gic-common.c | 10 ++++++++++ >> drivers/irqchip/irq-gic-common.h | 2 ++ >> 2 files changed, 12 insertions(+) >> >> diff --git a/drivers/irqchip/irq-gic-common.c b/drivers/irqchip/irq-gic-common.c >> index 3c93c6f..04eadbc 100644 >> --- a/drivers/irqchip/irq-gic-common.c >> +++ b/drivers/irqchip/irq-gic-common.c >> @@ -110,6 +110,16 @@ int gic_configure_irq(unsigned int irq, unsigned int type, >> return ret; >> } >> >> +void gic_set_irq_prio(unsigned int irq, void __iomem *base, u8 prio) >> +{ >> + writeb_relaxed(prio, base + GIC_DIST_PRI + irq); >> +} >> + >> +u8 gic_get_irq_prio(unsigned int irq, void __iomem *base) >> +{ >> + return readb_relaxed(base + GIC_DIST_PRI + irq); >> +} >> + > > Is there a reason why this is in irq-gic-common.c? If we can avoid it, > I'd rather this is made private to GICv3, as I do not intend to > support this for earlier revisions on the architecture. > The only reason I put it in common is that the same code works both for gicv3 and gic drivers. But if you prefer the gic driver not to see it I'll move it to the gicv3 driver. Thanks,
diff --git a/drivers/irqchip/irq-gic-common.c b/drivers/irqchip/irq-gic-common.c index 3c93c6f..04eadbc 100644 --- a/drivers/irqchip/irq-gic-common.c +++ b/drivers/irqchip/irq-gic-common.c @@ -110,6 +110,16 @@ int gic_configure_irq(unsigned int irq, unsigned int type, return ret; } +void gic_set_irq_prio(unsigned int irq, void __iomem *base, u8 prio) +{ + writeb_relaxed(prio, base + GIC_DIST_PRI + irq); +} + +u8 gic_get_irq_prio(unsigned int irq, void __iomem *base) +{ + return readb_relaxed(base + GIC_DIST_PRI + irq); +} + void gic_dist_config(void __iomem *base, int gic_irqs, void (*sync_access)(void)) { diff --git a/drivers/irqchip/irq-gic-common.h b/drivers/irqchip/irq-gic-common.h index 97e58fb..f1c6f5a 100644 --- a/drivers/irqchip/irq-gic-common.h +++ b/drivers/irqchip/irq-gic-common.h @@ -38,6 +38,8 @@ void gic_enable_quirks(u32 iidr, const struct gic_quirk *quirks, void *data); void gic_enable_of_quirks(const struct device_node *np, const struct gic_quirk *quirks, void *data); +void gic_set_irq_prio(unsigned int irq, void __iomem *base, u8 prio); +u8 gic_get_irq_prio(unsigned int irq, void __iomem *base); void gic_set_kvm_info(const struct gic_kvm_info *info);
Add accessors to the GIC distributor/redistributors priority registers. Signed-off-by: Julien Thierry <julien.thierry@arm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jason Cooper <jason@lakedaemon.net> Cc: Marc Zyngier <marc.zyngier@arm.com> --- drivers/irqchip/irq-gic-common.c | 10 ++++++++++ drivers/irqchip/irq-gic-common.h | 2 ++ 2 files changed, 12 insertions(+)