[Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822

David Gibson posted 7 patches 6 years, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170822042416.26758-1-david@gibson.dropbear.id.au
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
hw/i386/pc.c             | 14 ++++++++++++--
hw/mem/nvdimm.c          |  2 +-
hw/mem/pc-dimm.c         | 14 +++++++++++---
hw/ppc/spapr.c           | 42 ++++++++++++++++++++++++++++++------------
hw/ppc/spapr_drc.c       | 30 +++++++++++++++++++++++-------
hw/ppc/spapr_iommu.c     |  2 ++
hw/ppc/spapr_rtc.c       |  2 ++
include/hw/mem/pc-dimm.h |  2 +-
target/ppc/compat.c      |  9 +++++----
target/ppc/kvm.c         | 34 ++++++++++++++++++++++++++++++++++
target/ppc/kvm_ppc.h     |  1 +
target/ppc/machine.c     | 22 ++++++++++++++++++++++
tests/boot-serial-test.c |  6 +++++-
13 files changed, 149 insertions(+), 31 deletions(-)
[Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by David Gibson 6 years, 8 months ago
The following changes since commit 1f296733876434118fd766cfef5eb6f29ecab6a8:

  Update version for v2.10.0-rc3 release (2017-08-15 18:53:31 +0100)

are available in the git repository at:

  git://github.com/dgibson/qemu.git tags/ppc-for-2.10-20170822

for you to fetch changes up to d3234e2851f1630c695c681beac1e87ac0881260:

  hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device (2017-08-22 11:11:30 +1000)

----------------------------------------------------------------
ppc patch queue 2017-08-22

Last minute ppc related fixes for qemu-2.10.  I'm not sure if these
are critical enough to prompt another rc, but I'm submitting them for
consideration.

First, is Cornelia's fix for 480bc11e6 which meant "make check" would
always fail on a ppc host.  Tracking that down delayed submission of
the rest of these patches, sorry.

The rest are all fairly important bugfixes for qemu crashes or guest
behaviour regression on ppc.  Patches 2-4 specifically are fixes for
regressions from qemu-2.9, caused by the compatibility mode and
hotplug handling cleanups for the pseries machine type.

----------------------------------------------------------------
Bharata B Rao (1):
      spapr: Allow configure-connector to be called multiple times

Cornelia Huck (1):
      boot-serial-test: prefer tcg accelerator

Daniel Henrique Barboza (1):
      target/ppc: 'PVR != host PVR' in KVM_SET_SREGS workaround

Greg Kurz (1):
      ppc: fix ppc_set_compat() with KVM PR

Thomas Huth (3):
      hw/ppc/spapr: Fix segfault when instantiating a 'pc-dimm' without 'memdev'
      hw/ppc/spapr_rtc: Mark the RTC device with user_creatable = false
      hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device

 hw/i386/pc.c             | 14 ++++++++++++--
 hw/mem/nvdimm.c          |  2 +-
 hw/mem/pc-dimm.c         | 14 +++++++++++---
 hw/ppc/spapr.c           | 42 ++++++++++++++++++++++++++++++------------
 hw/ppc/spapr_drc.c       | 30 +++++++++++++++++++++++-------
 hw/ppc/spapr_iommu.c     |  2 ++
 hw/ppc/spapr_rtc.c       |  2 ++
 include/hw/mem/pc-dimm.h |  2 +-
 target/ppc/compat.c      |  9 +++++----
 target/ppc/kvm.c         | 34 ++++++++++++++++++++++++++++++++++
 target/ppc/kvm_ppc.h     |  1 +
 target/ppc/machine.c     | 22 ++++++++++++++++++++++
 tests/boot-serial-test.c |  6 +++++-
 13 files changed, 149 insertions(+), 31 deletions(-)

Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Peter Maydell 6 years, 8 months ago
On 22 August 2017 at 05:24, David Gibson <david@gibson.dropbear.id.au> wrote:
> The following changes since commit 1f296733876434118fd766cfef5eb6f29ecab6a8:
>
>   Update version for v2.10.0-rc3 release (2017-08-15 18:53:31 +0100)
>
> are available in the git repository at:
>
>   git://github.com/dgibson/qemu.git tags/ppc-for-2.10-20170822
>
> for you to fetch changes up to d3234e2851f1630c695c681beac1e87ac0881260:
>
>   hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device (2017-08-22 11:11:30 +1000)
>
> ----------------------------------------------------------------
> ppc patch queue 2017-08-22
>
> Last minute ppc related fixes for qemu-2.10.  I'm not sure if these
> are critical enough to prompt another rc, but I'm submitting them for
> consideration.
>
> First, is Cornelia's fix for 480bc11e6 which meant "make check" would
> always fail on a ppc host.  Tracking that down delayed submission of
> the rest of these patches, sorry.
>
> The rest are all fairly important bugfixes for qemu crashes or guest
> behaviour regression on ppc.  Patches 2-4 specifically are fixes for
> regressions from qemu-2.9, caused by the compatibility mode and
> hotplug handling cleanups for the pseries machine type.
>
> ----------------------------------------------------------------

I get a make check failure on ppc64 Linux:

TEST: tests/postcopy-test... (pid=12468)
  /ppc64/postcopy:
Broken pipe
qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
FAIL
GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
(pid=13011)
FAIL: tests/postcopy-test

thanks
-- PMM

Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Laurent Vivier 6 years, 8 months ago
On 22/08/2017 11:34, Peter Maydell wrote:
> On 22 August 2017 at 05:24, David Gibson <david@gibson.dropbear.id.au> wrote:
>> The following changes since commit 1f296733876434118fd766cfef5eb6f29ecab6a8:
>>
>>   Update version for v2.10.0-rc3 release (2017-08-15 18:53:31 +0100)
>>
>> are available in the git repository at:
>>
>>   git://github.com/dgibson/qemu.git tags/ppc-for-2.10-20170822
>>
>> for you to fetch changes up to d3234e2851f1630c695c681beac1e87ac0881260:
>>
>>   hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device (2017-08-22 11:11:30 +1000)
>>
>> ----------------------------------------------------------------
>> ppc patch queue 2017-08-22
>>
>> Last minute ppc related fixes for qemu-2.10.  I'm not sure if these
>> are critical enough to prompt another rc, but I'm submitting them for
>> consideration.
>>
>> First, is Cornelia's fix for 480bc11e6 which meant "make check" would
>> always fail on a ppc host.  Tracking that down delayed submission of
>> the rest of these patches, sorry.
>>
>> The rest are all fairly important bugfixes for qemu crashes or guest
>> behaviour regression on ppc.  Patches 2-4 specifically are fixes for
>> regressions from qemu-2.9, caused by the compatibility mode and
>> hotplug handling cleanups for the pseries machine type.
>>
>> ----------------------------------------------------------------
> 
> I get a make check failure on ppc64 Linux:
> 
> TEST: tests/postcopy-test... (pid=12468)
>   /ppc64/postcopy:
> Broken pipe
> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
> FAIL
> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
> (pid=13011)
> FAIL: tests/postcopy-test

This test should fail with KVM PR, but it is explicitly disabled by:

tests/postcopy-test.c:

386         accel = access("/sys/module/kvm_hv", F_OK) ? "tcg" : "kvm:tcg";

What is your test machine?

[CC' Greg]
Thanks,
Laurent

Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Peter Maydell 6 years, 8 months ago
On 22 August 2017 at 10:43, Laurent Vivier <lvivier@redhat.com> wrote:
> On 22/08/2017 11:34, Peter Maydell wrote:
>> On 22 August 2017 at 05:24, David Gibson <david@gibson.dropbear.id.au> wrote:
>>> The following changes since commit 1f296733876434118fd766cfef5eb6f29ecab6a8:
>>>
>>>   Update version for v2.10.0-rc3 release (2017-08-15 18:53:31 +0100)
>>>
>>> are available in the git repository at:
>>>
>>>   git://github.com/dgibson/qemu.git tags/ppc-for-2.10-20170822
>>>
>>> for you to fetch changes up to d3234e2851f1630c695c681beac1e87ac0881260:
>>>
>>>   hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device (2017-08-22 11:11:30 +1000)
>>>
>>> ----------------------------------------------------------------
>>> ppc patch queue 2017-08-22
>>>
>>> Last minute ppc related fixes for qemu-2.10.  I'm not sure if these
>>> are critical enough to prompt another rc, but I'm submitting them for
>>> consideration.
>>>
>>> First, is Cornelia's fix for 480bc11e6 which meant "make check" would
>>> always fail on a ppc host.  Tracking that down delayed submission of
>>> the rest of these patches, sorry.
>>>
>>> The rest are all fairly important bugfixes for qemu crashes or guest
>>> behaviour regression on ppc.  Patches 2-4 specifically are fixes for
>>> regressions from qemu-2.9, caused by the compatibility mode and
>>> hotplug handling cleanups for the pseries machine type.
>>>
>>> ----------------------------------------------------------------
>>
>> I get a make check failure on ppc64 Linux:
>>
>> TEST: tests/postcopy-test... (pid=12468)
>>   /ppc64/postcopy:
>> Broken pipe
>> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
>> FAIL
>> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
>> (pid=13011)
>> FAIL: tests/postcopy-test
>
> This test should fail with KVM PR, but it is explicitly disabled by:
>
> tests/postcopy-test.c:
>
> 386         accel = access("/sys/module/kvm_hv", F_OK) ? "tcg" : "kvm:tcg";

There is no file of that name on the machine; but we'll be using
TCG anyway because /dev/kvm is not readable by my user.

> What is your test machine?

It's the gcc compile farm ppc64 box (gcc110 if you have compile farm
access):
Linux gcc1-power7.osuosl.org 3.10.0-514.26.2.el7.ppc64 #1 SMP Mon Jul
10 02:26:53 GMT 2017 ppc64 ppc64 ppc64 GNU/Linux

/proc/cpuinfo says

processor       : 0
cpu             : POWER7 (architected), altivec supported
clock           : 3550.000000MHz
revision        : 2.1 (pvr 003f 0201)
[etc]

timebase        : 512000000
platform        : pSeries
model           : IBM,8231-E2B
machine         : CHRP IBM,8231-E2B

git bisect blames "target/ppc: 'PVR != host PVR' in KVM_SET_SREGS workaround"
for the regression.

thanks
-- PMM

Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Laurent Vivier 6 years, 8 months ago
On 22/08/2017 11:53, Peter Maydell wrote:
> On 22 August 2017 at 10:43, Laurent Vivier <lvivier@redhat.com> wrote:
>> On 22/08/2017 11:34, Peter Maydell wrote:
>>> On 22 August 2017 at 05:24, David Gibson <david@gibson.dropbear.id.au> wrote:
>>>> The following changes since commit 1f296733876434118fd766cfef5eb6f29ecab6a8:
>>>>
>>>>   Update version for v2.10.0-rc3 release (2017-08-15 18:53:31 +0100)
>>>>
>>>> are available in the git repository at:
>>>>
>>>>   git://github.com/dgibson/qemu.git tags/ppc-for-2.10-20170822
>>>>
>>>> for you to fetch changes up to d3234e2851f1630c695c681beac1e87ac0881260:
>>>>
>>>>   hw/ppc/spapr_iommu: Fix crash when removing the "spapr-tce-table" device (2017-08-22 11:11:30 +1000)
>>>>
>>>> ----------------------------------------------------------------
>>>> ppc patch queue 2017-08-22
>>>>
>>>> Last minute ppc related fixes for qemu-2.10.  I'm not sure if these
>>>> are critical enough to prompt another rc, but I'm submitting them for
>>>> consideration.
>>>>
>>>> First, is Cornelia's fix for 480bc11e6 which meant "make check" would
>>>> always fail on a ppc host.  Tracking that down delayed submission of
>>>> the rest of these patches, sorry.
>>>>
>>>> The rest are all fairly important bugfixes for qemu crashes or guest
>>>> behaviour regression on ppc.  Patches 2-4 specifically are fixes for
>>>> regressions from qemu-2.9, caused by the compatibility mode and
>>>> hotplug handling cleanups for the pseries machine type.
>>>>
>>>> ----------------------------------------------------------------
>>>
>>> I get a make check failure on ppc64 Linux:
>>>
>>> TEST: tests/postcopy-test... (pid=12468)
>>>   /ppc64/postcopy:
>>> Broken pipe
>>> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
>>> FAIL
>>> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
>>> (pid=13011)
>>> FAIL: tests/postcopy-test

The problem is in:

bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
{
    CPUState *cs = CPU(cpu);

    if (cap_ppc_pvr_compat) {
        return false;
    }

    return !kvmppc_is_pr(cs->kvm_state);
}

It guesses !kvm pr means kvm_hv. That is not true, it can be TCG.

This fixes the problem for me:
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2817,5 +2817,5 @@ bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
         return false;
     }

-    return !kvmppc_is_pr(cs->kvm_state);
+    return kvm_enabled() && !kvmppc_is_pr(cs->kvm_state);
 }

[CC' Daniel]
Thanks,
Laurent




Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Peter Maydell 6 years, 8 months ago
On 22 August 2017 at 11:41, Laurent Vivier <lvivier@redhat.com> wrote:
> On 22/08/2017 11:53, Peter Maydell wrote:
>> On 22 August 2017 at 10:43, Laurent Vivier <lvivier@redhat.com> wrote:
>>> On 22/08/2017 11:34, Peter Maydell wrote:
>>>> I get a make check failure on ppc64 Linux:
>>>>
>>>> TEST: tests/postcopy-test... (pid=12468)
>>>>   /ppc64/postcopy:
>>>> Broken pipe
>>>> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
>>>> FAIL
>>>> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
>>>> (pid=13011)
>>>> FAIL: tests/postcopy-test
>
> The problem is in:
>
> bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
> {
>     CPUState *cs = CPU(cpu);
>
>     if (cap_ppc_pvr_compat) {
>         return false;
>     }
>
>     return !kvmppc_is_pr(cs->kvm_state);
> }
>
> It guesses !kvm pr means kvm_hv. That is not true, it can be TCG.
>
> This fixes the problem for me:
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2817,5 +2817,5 @@ bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
>          return false;
>      }
>
> -    return !kvmppc_is_pr(cs->kvm_state);
> +    return kvm_enabled() && !kvmppc_is_pr(cs->kvm_state);
>  }

Yep, fixes the failure for me too. David, can you respin your
pull request, please?

thanks
-- PMM

Re: [Qemu-devel] [Qemu-ppc] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by Daniel Henrique Barboza 6 years, 8 months ago

On 08/22/2017 07:52 AM, Peter Maydell wrote:
> On 22 August 2017 at 11:41, Laurent Vivier <lvivier@redhat.com> wrote:
>> On 22/08/2017 11:53, Peter Maydell wrote:
>>> On 22 August 2017 at 10:43, Laurent Vivier <lvivier@redhat.com> wrote:
>>>> On 22/08/2017 11:34, Peter Maydell wrote:
>>>>> I get a make check failure on ppc64 Linux:
>>>>>
>>>>> TEST: tests/postcopy-test... (pid=12468)
>>>>>    /ppc64/postcopy:
>>>>> Broken pipe
>>>>> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
>>>>> FAIL
>>>>> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
>>>>> (pid=13011)
>>>>> FAIL: tests/postcopy-test
>> The problem is in:
>>
>> bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
>> {
>>      CPUState *cs = CPU(cpu);
>>
>>      if (cap_ppc_pvr_compat) {
>>          return false;
>>      }
>>
>>      return !kvmppc_is_pr(cs->kvm_state);
>> }
>>
>> It guesses !kvm pr means kvm_hv. That is not true, it can be TCG.
>>
>> This fixes the problem for me:
>> --- a/target/ppc/kvm.c
>> +++ b/target/ppc/kvm.c
>> @@ -2817,5 +2817,5 @@ bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
>>           return false;
>>       }
>>
>> -    return !kvmppc_is_pr(cs->kvm_state);
>> +    return kvm_enabled() && !kvmppc_is_pr(cs->kvm_state);
>>   }

Good catch. I forgot to cover/test TCG scenarios with this patch and 
this bug
flew under the radar completely :(

> Yep, fixes the failure for me too. David, can you respin your
> pull request, please?

I've send a v2 of the patch including Laurent's fix too. Feel free to 
use the v2 or
amend it on top of the existing v1, whatever is easier.


Thanks,

Daniel

>
> thanks
> -- PMM
>


Re: [Qemu-devel] [PULL 0/7] ppc-for-2.10 queue 20170822
Posted by David Gibson 6 years, 8 months ago
On Tue, Aug 22, 2017 at 11:52:00AM +0100, Peter Maydell wrote:
> On 22 August 2017 at 11:41, Laurent Vivier <lvivier@redhat.com> wrote:
> > On 22/08/2017 11:53, Peter Maydell wrote:
> >> On 22 August 2017 at 10:43, Laurent Vivier <lvivier@redhat.com> wrote:
> >>> On 22/08/2017 11:34, Peter Maydell wrote:
> >>>> I get a make check failure on ppc64 Linux:
> >>>>
> >>>> TEST: tests/postcopy-test... (pid=12468)
> >>>>   /ppc64/postcopy:
> >>>> Broken pipe
> >>>> qemu-system-ppc64: RP: Received invalid message 0x0000 length 0x0000
> >>>> FAIL
> >>>> GTester: last random seed: R02Se5468e06f561627824306d95b0566d2b
> >>>> (pid=13011)
> >>>> FAIL: tests/postcopy-test
> >
> > The problem is in:
> >
> > bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
> > {
> >     CPUState *cs = CPU(cpu);
> >
> >     if (cap_ppc_pvr_compat) {
> >         return false;
> >     }
> >
> >     return !kvmppc_is_pr(cs->kvm_state);
> > }
> >
> > It guesses !kvm pr means kvm_hv. That is not true, it can be TCG.
> >
> > This fixes the problem for me:
> > --- a/target/ppc/kvm.c
> > +++ b/target/ppc/kvm.c
> > @@ -2817,5 +2817,5 @@ bool kvmppc_pvr_workaround_required(PowerPCCPU *cpu)
> >          return false;
> >      }
> >
> > -    return !kvmppc_is_pr(cs->kvm_state);
> > +    return kvm_enabled() && !kvmppc_is_pr(cs->kvm_state);
> >  }
> 
> Yep, fixes the failure for me too. David, can you respin your
> pull request, please?

Done.  In the interests of getting it out quickly, I haven't done the
full usual set of tests, though I have done a make check on a ppc host
both with and without KVM available.  A tweaked version of the fix
above is the only change, so I'm hoping the testing round on the
previous pullreq should suffice.

-- 
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