Message ID | 20200401154536.3750-2-clg@kaod.org |
---|---|
State | New |
Headers | show |
Series | ppc/xive: Add support for PQ state bits offload | expand |
On Wed, 1 Apr 2020 17:45:35 +0200 Cédric Le Goater <clg@kaod.org> wrote: > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- > include/hw/ppc/xive.h | 4 ++++ > hw/intc/spapr_xive_kvm.c | 8 ++++---- > hw/intc/xive.c | 6 +++--- > 3 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h > index 59ac075db080..d4e7c1f9217f 100644 > --- a/include/hw/ppc/xive.h > +++ b/include/hw/ppc/xive.h > @@ -255,6 +255,10 @@ static inline hwaddr xive_source_esb_mgmt(XiveSource *xsrc, int srcno) > #define XIVE_ESB_QUEUED (XIVE_ESB_VAL_P | XIVE_ESB_VAL_Q) > #define XIVE_ESB_OFF XIVE_ESB_VAL_Q > > +bool xive_esb_trigger(uint8_t *pq); > +bool xive_esb_eoi(uint8_t *pq); > +uint8_t xive_esb_set(uint8_t *pq, uint8_t value); > + > /* > * "magic" Event State Buffer (ESB) MMIO offsets. > * > diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c > index edb7ee0e74f1..43f4d56b958c 100644 > --- a/hw/intc/spapr_xive_kvm.c > +++ b/hw/intc/spapr_xive_kvm.c > @@ -308,7 +308,7 @@ static uint8_t xive_esb_read(XiveSource *xsrc, int srcno, uint32_t offset) > return xive_esb_rw(xsrc, srcno, offset, 0, 0) & 0x3; > } > > -static void xive_esb_trigger(XiveSource *xsrc, int srcno) > +static void kvmppc_xive_esb_trigger(XiveSource *xsrc, int srcno) And good riddance to the duplicate name, for a better gdb experience. :) Reviewed-by: Greg Kurz <groug@kaod.org> > { > uint64_t *addr = xsrc->esb_mmap + xive_source_esb_page(xsrc, srcno); > > @@ -331,7 +331,7 @@ uint64_t kvmppc_xive_esb_rw(XiveSource *xsrc, int srcno, uint32_t offset, > offset == XIVE_ESB_LOAD_EOI) { > xive_esb_read(xsrc, srcno, XIVE_ESB_SET_PQ_00); > if (xsrc->status[srcno] & XIVE_STATUS_ASSERTED) { > - xive_esb_trigger(xsrc, srcno); > + kvmppc_xive_esb_trigger(xsrc, srcno); > } > return 0; > } else { > @@ -375,7 +375,7 @@ void kvmppc_xive_source_set_irq(void *opaque, int srcno, int val) > } > } > > - xive_esb_trigger(xsrc, srcno); > + kvmppc_xive_esb_trigger(xsrc, srcno); > } > > /* > @@ -544,7 +544,7 @@ static void kvmppc_xive_change_state_handler(void *opaque, int running, > * generate a trigger. > */ > if (pq == XIVE_ESB_RESET && old_pq == XIVE_ESB_QUEUED) { > - xive_esb_trigger(xsrc, i); > + kvmppc_xive_esb_trigger(xsrc, i); > } > } > > diff --git a/hw/intc/xive.c b/hw/intc/xive.c > index b9656cd7556c..56ce3ed93e29 100644 > --- a/hw/intc/xive.c > +++ b/hw/intc/xive.c > @@ -811,7 +811,7 @@ void xive_tctx_destroy(XiveTCTX *tctx) > * XIVE ESB helpers > */ > > -static uint8_t xive_esb_set(uint8_t *pq, uint8_t value) > +uint8_t xive_esb_set(uint8_t *pq, uint8_t value) > { > uint8_t old_pq = *pq & 0x3; > > @@ -821,7 +821,7 @@ static uint8_t xive_esb_set(uint8_t *pq, uint8_t value) > return old_pq; > } > > -static bool xive_esb_trigger(uint8_t *pq) > +bool xive_esb_trigger(uint8_t *pq) > { > uint8_t old_pq = *pq & 0x3; > > @@ -841,7 +841,7 @@ static bool xive_esb_trigger(uint8_t *pq) > } > } > > -static bool xive_esb_eoi(uint8_t *pq) > +bool xive_esb_eoi(uint8_t *pq) > { > uint8_t old_pq = *pq & 0x3; >
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h index 59ac075db080..d4e7c1f9217f 100644 --- a/include/hw/ppc/xive.h +++ b/include/hw/ppc/xive.h @@ -255,6 +255,10 @@ static inline hwaddr xive_source_esb_mgmt(XiveSource *xsrc, int srcno) #define XIVE_ESB_QUEUED (XIVE_ESB_VAL_P | XIVE_ESB_VAL_Q) #define XIVE_ESB_OFF XIVE_ESB_VAL_Q +bool xive_esb_trigger(uint8_t *pq); +bool xive_esb_eoi(uint8_t *pq); +uint8_t xive_esb_set(uint8_t *pq, uint8_t value); + /* * "magic" Event State Buffer (ESB) MMIO offsets. * diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c index edb7ee0e74f1..43f4d56b958c 100644 --- a/hw/intc/spapr_xive_kvm.c +++ b/hw/intc/spapr_xive_kvm.c @@ -308,7 +308,7 @@ static uint8_t xive_esb_read(XiveSource *xsrc, int srcno, uint32_t offset) return xive_esb_rw(xsrc, srcno, offset, 0, 0) & 0x3; } -static void xive_esb_trigger(XiveSource *xsrc, int srcno) +static void kvmppc_xive_esb_trigger(XiveSource *xsrc, int srcno) { uint64_t *addr = xsrc->esb_mmap + xive_source_esb_page(xsrc, srcno); @@ -331,7 +331,7 @@ uint64_t kvmppc_xive_esb_rw(XiveSource *xsrc, int srcno, uint32_t offset, offset == XIVE_ESB_LOAD_EOI) { xive_esb_read(xsrc, srcno, XIVE_ESB_SET_PQ_00); if (xsrc->status[srcno] & XIVE_STATUS_ASSERTED) { - xive_esb_trigger(xsrc, srcno); + kvmppc_xive_esb_trigger(xsrc, srcno); } return 0; } else { @@ -375,7 +375,7 @@ void kvmppc_xive_source_set_irq(void *opaque, int srcno, int val) } } - xive_esb_trigger(xsrc, srcno); + kvmppc_xive_esb_trigger(xsrc, srcno); } /* @@ -544,7 +544,7 @@ static void kvmppc_xive_change_state_handler(void *opaque, int running, * generate a trigger. */ if (pq == XIVE_ESB_RESET && old_pq == XIVE_ESB_QUEUED) { - xive_esb_trigger(xsrc, i); + kvmppc_xive_esb_trigger(xsrc, i); } } diff --git a/hw/intc/xive.c b/hw/intc/xive.c index b9656cd7556c..56ce3ed93e29 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -811,7 +811,7 @@ void xive_tctx_destroy(XiveTCTX *tctx) * XIVE ESB helpers */ -static uint8_t xive_esb_set(uint8_t *pq, uint8_t value) +uint8_t xive_esb_set(uint8_t *pq, uint8_t value) { uint8_t old_pq = *pq & 0x3; @@ -821,7 +821,7 @@ static uint8_t xive_esb_set(uint8_t *pq, uint8_t value) return old_pq; } -static bool xive_esb_trigger(uint8_t *pq) +bool xive_esb_trigger(uint8_t *pq) { uint8_t old_pq = *pq & 0x3; @@ -841,7 +841,7 @@ static bool xive_esb_trigger(uint8_t *pq) } } -static bool xive_esb_eoi(uint8_t *pq) +bool xive_esb_eoi(uint8_t *pq) { uint8_t old_pq = *pq & 0x3;
Signed-off-by: Cédric Le Goater <clg@kaod.org> --- include/hw/ppc/xive.h | 4 ++++ hw/intc/spapr_xive_kvm.c | 8 ++++---- hw/intc/xive.c | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-)