[PATCH] spapr/xive: remove redundant check in spapr_match_nvt()

Cédric Le Goater posted 1 patch 4 years, 3 months ago
Test asan failed
Test checkpatch failed
Test FreeBSD failed
Test docker-mingw@fedora failed
Test docker-clang@ubuntu failed
Test docker-quick@centos7 failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200106163207.4608-1-clg@kaod.org
Maintainers: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[PATCH] spapr/xive: remove redundant check in spapr_match_nvt()
Posted by Cédric Le Goater 4 years, 3 months ago
spapr_match_nvt() is a XIVE operation and it used by the machine to
look for a matching target when an event notification is being
delivered. An assert checks that spapr_match_nvt() is called only when
the machine has selected the XIVE interrupt mode but it is redundant
with the XIVE_PRESENTER() dynamic cast.

Apply the cast to spapr->active_intc and remove the assert.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/ppc/spapr.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index e62c89b3dd40..5008b7563173 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4198,19 +4198,19 @@ static void spapr_pic_print_info(InterruptStatsProvider *obj,
                    kvm_irqchip_in_kernel() ? "in-kernel" : "emulated");
 }
 
+/*
+ * This is a XIVE only operation
+ */
 static int spapr_match_nvt(XiveFabric *xfb, uint8_t format,
                            uint8_t nvt_blk, uint32_t nvt_idx,
                            bool cam_ignore, uint8_t priority,
                            uint32_t logic_serv, XiveTCTXMatch *match)
 {
     SpaprMachineState *spapr = SPAPR_MACHINE(xfb);
-    XivePresenter *xptr = XIVE_PRESENTER(spapr->xive);
+    XivePresenter *xptr = XIVE_PRESENTER(spapr->active_intc);
     XivePresenterClass *xpc = XIVE_PRESENTER_GET_CLASS(xptr);
     int count;
 
-    /* This is a XIVE only operation */
-    assert(spapr->active_intc == SPAPR_INTC(spapr->xive));
-
     count = xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore,
                            priority, logic_serv, match);
     if (count < 0) {
-- 
2.21.1


Re: [PATCH] spapr/xive: remove redundant check in spapr_match_nvt()
Posted by David Gibson 4 years, 3 months ago
On Mon, Jan 06, 2020 at 05:32:07PM +0100, Cédric Le Goater wrote:
> spapr_match_nvt() is a XIVE operation and it used by the machine to
> look for a matching target when an event notification is being
> delivered. An assert checks that spapr_match_nvt() is called only when
> the machine has selected the XIVE interrupt mode but it is redundant
> with the XIVE_PRESENTER() dynamic cast.
> 
> Apply the cast to spapr->active_intc and remove the assert.
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Applied to ppc-for-5.0.

> ---
>  hw/ppc/spapr.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index e62c89b3dd40..5008b7563173 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -4198,19 +4198,19 @@ static void spapr_pic_print_info(InterruptStatsProvider *obj,
>                     kvm_irqchip_in_kernel() ? "in-kernel" : "emulated");
>  }
>  
> +/*
> + * This is a XIVE only operation
> + */
>  static int spapr_match_nvt(XiveFabric *xfb, uint8_t format,
>                             uint8_t nvt_blk, uint32_t nvt_idx,
>                             bool cam_ignore, uint8_t priority,
>                             uint32_t logic_serv, XiveTCTXMatch *match)
>  {
>      SpaprMachineState *spapr = SPAPR_MACHINE(xfb);
> -    XivePresenter *xptr = XIVE_PRESENTER(spapr->xive);
> +    XivePresenter *xptr = XIVE_PRESENTER(spapr->active_intc);
>      XivePresenterClass *xpc = XIVE_PRESENTER_GET_CLASS(xptr);
>      int count;
>  
> -    /* This is a XIVE only operation */
> -    assert(spapr->active_intc == SPAPR_INTC(spapr->xive));
> -
>      count = xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore,
>                             priority, logic_serv, match);
>      if (count < 0) {

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
Re: [PATCH] spapr/xive: remove redundant check in spapr_match_nvt()
Posted by Greg Kurz 4 years, 3 months ago
On Mon,  6 Jan 2020 17:32:07 +0100
Cédric Le Goater <clg@kaod.org> wrote:

> spapr_match_nvt() is a XIVE operation and it used by the machine to

... and it "is" used by the machine...

> look for a matching target when an event notification is being
> delivered. An assert checks that spapr_match_nvt() is called only when
> the machine has selected the XIVE interrupt mode but it is redundant
> with the XIVE_PRESENTER() dynamic cast.
> 
> Apply the cast to spapr->active_intc and remove the assert.
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---

Reviewed-by: Greg Kurz <groug@kaod.org>

>  hw/ppc/spapr.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index e62c89b3dd40..5008b7563173 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -4198,19 +4198,19 @@ static void spapr_pic_print_info(InterruptStatsProvider *obj,
>                     kvm_irqchip_in_kernel() ? "in-kernel" : "emulated");
>  }
>  
> +/*
> + * This is a XIVE only operation
> + */
>  static int spapr_match_nvt(XiveFabric *xfb, uint8_t format,
>                             uint8_t nvt_blk, uint32_t nvt_idx,
>                             bool cam_ignore, uint8_t priority,
>                             uint32_t logic_serv, XiveTCTXMatch *match)
>  {
>      SpaprMachineState *spapr = SPAPR_MACHINE(xfb);
> -    XivePresenter *xptr = XIVE_PRESENTER(spapr->xive);
> +    XivePresenter *xptr = XIVE_PRESENTER(spapr->active_intc);
>      XivePresenterClass *xpc = XIVE_PRESENTER_GET_CLASS(xptr);
>      int count;
>  
> -    /* This is a XIVE only operation */
> -    assert(spapr->active_intc == SPAPR_INTC(spapr->xive));
> -
>      count = xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore,
>                             priority, logic_serv, match);
>      if (count < 0) {


Re: [PATCH] spapr/xive: remove redundant check in spapr_match_nvt()
Posted by David Gibson 4 years, 3 months ago
On Mon, Jan 06, 2020 at 06:29:31PM +0100, Greg Kurz wrote:
> On Mon,  6 Jan 2020 17:32:07 +0100
> Cédric Le Goater <clg@kaod.org> wrote:
> 
> > spapr_match_nvt() is a XIVE operation and it used by the machine to
> 
> ... and it "is" used by the machine...

Adjusted in my tree.

> 
> > look for a matching target when an event notification is being
> > delivered. An assert checks that spapr_match_nvt() is called only when
> > the machine has selected the XIVE interrupt mode but it is redundant
> > with the XIVE_PRESENTER() dynamic cast.
> > 
> > Apply the cast to spapr->active_intc and remove the assert.
> > 
> > Signed-off-by: Cédric Le Goater <clg@kaod.org>
> > ---
> 
> Reviewed-by: Greg Kurz <groug@kaod.org>
> 
> >  hw/ppc/spapr.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index e62c89b3dd40..5008b7563173 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -4198,19 +4198,19 @@ static void spapr_pic_print_info(InterruptStatsProvider *obj,
> >                     kvm_irqchip_in_kernel() ? "in-kernel" : "emulated");
> >  }
> >  
> > +/*
> > + * This is a XIVE only operation
> > + */
> >  static int spapr_match_nvt(XiveFabric *xfb, uint8_t format,
> >                             uint8_t nvt_blk, uint32_t nvt_idx,
> >                             bool cam_ignore, uint8_t priority,
> >                             uint32_t logic_serv, XiveTCTXMatch *match)
> >  {
> >      SpaprMachineState *spapr = SPAPR_MACHINE(xfb);
> > -    XivePresenter *xptr = XIVE_PRESENTER(spapr->xive);
> > +    XivePresenter *xptr = XIVE_PRESENTER(spapr->active_intc);
> >      XivePresenterClass *xpc = XIVE_PRESENTER_GET_CLASS(xptr);
> >      int count;
> >  
> > -    /* This is a XIVE only operation */
> > -    assert(spapr->active_intc == SPAPR_INTC(spapr->xive));
> > -
> >      count = xpc->match_nvt(xptr, format, nvt_blk, nvt_idx, cam_ignore,
> >                             priority, logic_serv, match);
> >      if (count < 0) {
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson