[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHIN
From: |
Greg Kurz |
Subject: |
Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS() |
Date: |
Fri, 24 Aug 2018 17:38:39 +0200 |
On Fri, 24 Aug 2018 17:30:12 +0200
Cédric Le Goater <address@hidden> wrote:
> On 08/24/2018 05:09 PM, Peter Maydell wrote:
> > On 21 August 2018 at 05:33, David Gibson <address@hidden> wrote:
> >> From: Cédric Le Goater <address@hidden>
> >>
> >> It should save us some CPU cycles as these routines perform a lot of
> >> checks.
> >>
> >> Signed-off-by: Cédric Le Goater <address@hidden>
> >> Signed-off-by: David Gibson <address@hidden>
> >> ---
> >> hw/ppc/spapr_pci.c | 11 ++++++-----
> >> 1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > Hi; Coverity points out in CID 1395183 that there's a bug in
> > this part of this patch:
> >
> >> @@ -1558,6 +1559,7 @@ static void spapr_phb_realize(DeviceState *dev,
> >> Error **errp)
> >> sPAPRMachineState *spapr =
> >> (sPAPRMachineState *) object_dynamic_cast(qdev_get_machine(),
> >> TYPE_SPAPR_MACHINE);
> >> + sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(spapr);
> >
> > This has moved the call to SPAPR_MACHINE_GET_CLASS() above
> > the check for "is spapr NULL", which is wrong, because it
> > will unconditionally dereference the pointer you pass to it.
>
I've sent a trivial patch to fix this.
> I see. This is a simple fix but the root reason for this check is
> commit f7d6bfcdc0fe ("spapr_pci: fail gracefully with non-pseries
> machine types").
>
Yeah, we also have one in spapr_cpu_core_realize() for the very
same reason.
> Is there a way to specify which device type can or can not be
> plugged on a machine ?
>
> I suppose we cannot use :
>
> machine_class_allow_dynamic_sysbus_dev()
>
> for cold plugged devices. Or can we ? That would be better.
>
Hmm... not sure this would help. The root problem is that many
places in spapr_pci and spapr_cpu_core assume the machine is
sPAPR.
> Thanks,
>
> C.
- [Qemu-ppc] [PULL 18/26] hw/ppc/ppc405_uc: Convert away from old_mmio, (continued)
- [Qemu-ppc] [PULL 18/26] hw/ppc/ppc405_uc: Convert away from old_mmio, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 22/26] 40p: don't use legacy fw_cfg_init_mem() function, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 16/26] hw/ppc/prep: Remove ifdeffed-out stub of XCSR code, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 26/26] ppc: add DBCR based debugging, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 19/26] spapr: introduce a IRQ controller backend to the machine, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 15/26] spapr: introduce a fixed IRQ number space, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 09/26] target/ppc: Use non-arithmetic conversions for fp load/store, David Gibson, 2018/08/21
- [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), David Gibson, 2018/08/21
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Peter Maydell, 2018/08/24
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Cédric Le Goater, 2018/08/24
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(),
Greg Kurz <=
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Cédric Le Goater, 2018/08/24
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Thomas Huth, 2018/08/27
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Greg Kurz, 2018/08/27
- Re: [Qemu-ppc] [PULL 25/26] spapr_pci: factorize the use of SPAPR_MACHINE_GET_CLASS(), Greg Kurz, 2018/08/27
[Qemu-ppc] [PULL 21/26] qemu-doc: mark ppc/prep machine as deprecated, David Gibson, 2018/08/21
Re: [Qemu-ppc] [PULL 00/26] ppc-for-3.1 queue 20180821, Peter Maydell, 2018/08/21
[Qemu-ppc] [PULL 02/26] pseries: Update SLOF firmware image, David Gibson, 2018/08/21