diff mbox

[for-1.6] isapc: disable kvmvapic

Message ID 1376344938-21374-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini Aug. 12, 2013, 10:02 p.m. UTC
vapic requires the VAPIC ROM to be mapped into RAM.  This is not
possible without PAM hardware.  This fixes a segmentation fault
running with -M isapc.

Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---

Comments

Paolo Bonzini Aug. 26, 2013, 12:21 p.m. UTC | #1
Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
> possible without PAM hardware.  This fixes a segmentation fault
> running with -M isapc.
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index a19e172..3aa244a 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>      .init = pc_init_isa,
>      .max_cpus = 1,
>      .compat_props = (GlobalProperty[]) {
> +        {
> +            .driver   = "apic-common",
> +            .property = "kvmvapic",
> +            .value    = "off",
> +        },
>          { /* end of list */ }
>      },
>      DEFAULT_MACHINE_OPTIONS,
> 

Ping.

Paolo
Andreas Färber Aug. 26, 2013, 2:34 p.m. UTC | #2
Am 26.08.2013 14:21, schrieb Paolo Bonzini:
> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>> possible without PAM hardware.  This fixes a segmentation fault
>> running with -M isapc.
>>
>> Cc: qemu-stable@nongnu.org
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index a19e172..3aa244a 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>      .init = pc_init_isa,
>>      .max_cpus = 1,
>>      .compat_props = (GlobalProperty[]) {
>> +        {
>> +            .driver   = "apic-common",
>> +            .property = "kvmvapic",
>> +            .value    = "off",
>> +        },
>>          { /* end of list */ }
>>      },
>>      DEFAULT_MACHINE_OPTIONS,
>>
> 
> Ping.

I had double-checked that my pending qom-test covers isapc and succeeds
with and without your patch, so apparently this is visible at runtime only.

Andreas
Paolo Bonzini Aug. 26, 2013, 3:01 p.m. UTC | #3
Il 26/08/2013 16:34, Andreas Färber ha scritto:
> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>>> possible without PAM hardware.  This fixes a segmentation fault
>>> running with -M isapc.
>>>
>>> Cc: qemu-stable@nongnu.org
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>> ---
>>>
>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>> index a19e172..3aa244a 100644
>>> --- a/hw/i386/pc_piix.c
>>> +++ b/hw/i386/pc_piix.c
>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>>      .init = pc_init_isa,
>>>      .max_cpus = 1,
>>>      .compat_props = (GlobalProperty[]) {
>>> +        {
>>> +            .driver   = "apic-common",
>>> +            .property = "kvmvapic",
>>> +            .value    = "off",
>>> +        },
>>>          { /* end of list */ }
>>>      },
>>>      DEFAULT_MACHINE_OPTIONS,
>>>
>>
>> Ping.
> 
> I had double-checked that my pending qom-test covers isapc and succeeds
> with and without your patch, so apparently this is visible at runtime only.

Yes, it only happens after kvmvapic is actually enabled by the option ROM.

Paolo
Andreas Färber Aug. 26, 2013, 3:17 p.m. UTC | #4
Am 26.08.2013 17:01, schrieb Paolo Bonzini:
> Il 26/08/2013 16:34, Andreas Färber ha scritto:
>> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
>>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>>>> possible without PAM hardware.  This fixes a segmentation fault
>>>> running with -M isapc.
>>>>
>>>> Cc: qemu-stable@nongnu.org
>>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>> ---
>>>>
>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>>> index a19e172..3aa244a 100644
>>>> --- a/hw/i386/pc_piix.c
>>>> +++ b/hw/i386/pc_piix.c
>>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>>>      .init = pc_init_isa,
>>>>      .max_cpus = 1,
>>>>      .compat_props = (GlobalProperty[]) {
>>>> +        {
>>>> +            .driver   = "apic-common",
>>>> +            .property = "kvmvapic",
>>>> +            .value    = "off",
>>>> +        },
>>>>          { /* end of list */ }
>>>>      },
>>>>      DEFAULT_MACHINE_OPTIONS,
>>>>
>>>
>>> Ping.
>>
>> I had double-checked that my pending qom-test covers isapc and succeeds
>> with and without your patch, so apparently this is visible at runtime only.
> 
> Yes, it only happens after kvmvapic is actually enabled by the option ROM.

Maybe Michael can pick it up along with the compat refactorings?

Andreas
Michael S. Tsirkin Aug. 26, 2013, 4:17 p.m. UTC | #5
On Mon, Aug 26, 2013 at 05:17:07PM +0200, Andreas Färber wrote:
> Am 26.08.2013 17:01, schrieb Paolo Bonzini:
> > Il 26/08/2013 16:34, Andreas Färber ha scritto:
> >> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
> >>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
> >>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
> >>>> possible without PAM hardware.  This fixes a segmentation fault
> >>>> running with -M isapc.
> >>>>
> >>>> Cc: qemu-stable@nongnu.org
> >>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> >>>> ---
> >>>>
> >>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> >>>> index a19e172..3aa244a 100644
> >>>> --- a/hw/i386/pc_piix.c
> >>>> +++ b/hw/i386/pc_piix.c
> >>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
> >>>>      .init = pc_init_isa,
> >>>>      .max_cpus = 1,
> >>>>      .compat_props = (GlobalProperty[]) {
> >>>> +        {
> >>>> +            .driver   = "apic-common",
> >>>> +            .property = "kvmvapic",
> >>>> +            .value    = "off",
> >>>> +        },
> >>>>          { /* end of list */ }
> >>>>      },
> >>>>      DEFAULT_MACHINE_OPTIONS,
> >>>>
> >>>
> >>> Ping.
> >>
> >> I had double-checked that my pending qom-test covers isapc and succeeds
> >> with and without your patch, so apparently this is visible at runtime only.
> > 
> > Yes, it only happens after kvmvapic is actually enabled by the option ROM.
> 
> Maybe Michael can pick it up along with the compat refactorings?
> 
> Andreas

Sure, I'll put it on my tree but I already prepared a pull request
for today, it will go into the next one.

> -- 
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
Cole Robinson Aug. 31, 2013, 12:14 a.m. UTC | #6
On 08/12/2013 06:02 PM, Paolo Bonzini wrote:
> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
> possible without PAM hardware.  This fixes a segmentation fault
> running with -M isapc.
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index a19e172..3aa244a 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>      .init = pc_init_isa,
>      .max_cpus = 1,
>      .compat_props = (GlobalProperty[]) {
> +        {
> +            .driver   = "apic-common",
> +            .property = "kvmvapic",
> +            .value    = "off",
> +        },
>          { /* end of list */ }
>      },
>      DEFAULT_MACHINE_OPTIONS,
> 

There's a Fedora bug about a related invocation crashing:

./x86_64-softmmu/qemu-system-x86_64 -machine accel=kvm -m 128 -vga std -boot d
-cpu pentium -machine isapc

https://bugzilla.redhat.com/show_bug.cgi?id=986790

So I tried your patch on git master, but it gives:

qemu-system-x86_64: Property '.kvmvapic' not found

Changing the property name to 'vapic' fixes both issues for me.

Thanks,
Cole
Doug Goldstein Sept. 25, 2013, 9:31 p.m. UTC | #7
On Fri, Aug 30, 2013 at 7:14 PM, Cole Robinson <crobinso@redhat.com> wrote:
> On 08/12/2013 06:02 PM, Paolo Bonzini wrote:
>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>> possible without PAM hardware.  This fixes a segmentation fault
>> running with -M isapc.
>>
>> Cc: qemu-stable@nongnu.org
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>
>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>> index a19e172..3aa244a 100644
>> --- a/hw/i386/pc_piix.c
>> +++ b/hw/i386/pc_piix.c
>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>      .init = pc_init_isa,
>>      .max_cpus = 1,
>>      .compat_props = (GlobalProperty[]) {
>> +        {
>> +            .driver   = "apic-common",
>> +            .property = "kvmvapic",
>> +            .value    = "off",
>> +        },
>>          { /* end of list */ }
>>      },
>>      DEFAULT_MACHINE_OPTIONS,
>>
>
> There's a Fedora bug about a related invocation crashing:
>
> ./x86_64-softmmu/qemu-system-x86_64 -machine accel=kvm -m 128 -vga std -boot d
> -cpu pentium -machine isapc
>
> https://bugzilla.redhat.com/show_bug.cgi?id=986790
>
> So I tried your patch on git master, but it gives:
>
> qemu-system-x86_64: Property '.kvmvapic' not found
>
> Changing the property name to 'vapic' fixes both issues for me.
>
> Thanks,
> Cole
>

Ping this patch. I had to make the same change as Cole for Gentoo as well.
Paolo Bonzini Oct. 4, 2013, 4:47 p.m. UTC | #8
Il 26/08/2013 18:17, Michael S. Tsirkin ha scritto:
> On Mon, Aug 26, 2013 at 05:17:07PM +0200, Andreas Färber wrote:
>> Am 26.08.2013 17:01, schrieb Paolo Bonzini:
>>> Il 26/08/2013 16:34, Andreas Färber ha scritto:
>>>> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
>>>>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>>>>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>>>>>> possible without PAM hardware.  This fixes a segmentation fault
>>>>>> running with -M isapc.
>>>>>>
>>>>>> Cc: qemu-stable@nongnu.org
>>>>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>>>> ---
>>>>>>
>>>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>>>>> index a19e172..3aa244a 100644
>>>>>> --- a/hw/i386/pc_piix.c
>>>>>> +++ b/hw/i386/pc_piix.c
>>>>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>>>>>      .init = pc_init_isa,
>>>>>>      .max_cpus = 1,
>>>>>>      .compat_props = (GlobalProperty[]) {
>>>>>> +        {
>>>>>> +            .driver   = "apic-common",
>>>>>> +            .property = "kvmvapic",
>>>>>> +            .value    = "off",
>>>>>> +        },
>>>>>>          { /* end of list */ }
>>>>>>      },
>>>>>>      DEFAULT_MACHINE_OPTIONS,
>>>>>>
>>>>>
>>>>> Ping.
>>>>
>>>> I had double-checked that my pending qom-test covers isapc and succeeds
>>>> with and without your patch, so apparently this is visible at runtime only.
>>>
>>> Yes, it only happens after kvmvapic is actually enabled by the option ROM.
>>
>> Maybe Michael can pick it up along with the compat refactorings?
>>
>> Andreas
> 
> Sure, I'll put it on my tree but I already prepared a pull request
> for today, it will go into the next one.

Michael, can you post this patch together with the ACPI pull request?

Paolo
Andreas Färber Oct. 4, 2013, 4:52 p.m. UTC | #9
Am 04.10.2013 18:47, schrieb Paolo Bonzini:
> Il 26/08/2013 18:17, Michael S. Tsirkin ha scritto:
>> On Mon, Aug 26, 2013 at 05:17:07PM +0200, Andreas Färber wrote:
>>> Am 26.08.2013 17:01, schrieb Paolo Bonzini:
>>>> Il 26/08/2013 16:34, Andreas Färber ha scritto:
>>>>> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
>>>>>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>>>>>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>>>>>>> possible without PAM hardware.  This fixes a segmentation fault
>>>>>>> running with -M isapc.
>>>>>>>
>>>>>>> Cc: qemu-stable@nongnu.org
>>>>>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>>>>> ---
>>>>>>>
>>>>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>>>>>> index a19e172..3aa244a 100644
>>>>>>> --- a/hw/i386/pc_piix.c
>>>>>>> +++ b/hw/i386/pc_piix.c
>>>>>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>>>>>>      .init = pc_init_isa,
>>>>>>>      .max_cpus = 1,
>>>>>>>      .compat_props = (GlobalProperty[]) {
>>>>>>> +        {
>>>>>>> +            .driver   = "apic-common",
>>>>>>> +            .property = "kvmvapic",
>>>>>>> +            .value    = "off",
>>>>>>> +        },
>>>>>>>          { /* end of list */ }
>>>>>>>      },
>>>>>>>      DEFAULT_MACHINE_OPTIONS,
>>>>>>>
>>>>>>
>>>>>> Ping.
>>>>>
>>>>> I had double-checked that my pending qom-test covers isapc and succeeds
>>>>> with and without your patch, so apparently this is visible at runtime only.
>>>>
>>>> Yes, it only happens after kvmvapic is actually enabled by the option ROM.
>>>
>>> Maybe Michael can pick it up along with the compat refactorings?
>>
>> Sure, I'll put it on my tree but I already prepared a pull request
>> for today, it will go into the next one.
> 
> Michael, can you post this patch together with the ACPI pull request?

What about the comment wrt s/kvmvapic/vapic/g? Haven't seen any response
or v2.

Andreas
Paolo Bonzini Oct. 4, 2013, 7:05 p.m. UTC | #10
Il 04/10/2013 18:52, Andreas Färber ha scritto:
> Am 04.10.2013 18:47, schrieb Paolo Bonzini:
>> Il 26/08/2013 18:17, Michael S. Tsirkin ha scritto:
>>> On Mon, Aug 26, 2013 at 05:17:07PM +0200, Andreas Färber wrote:
>>>> Am 26.08.2013 17:01, schrieb Paolo Bonzini:
>>>>> Il 26/08/2013 16:34, Andreas Färber ha scritto:
>>>>>> Am 26.08.2013 14:21, schrieb Paolo Bonzini:
>>>>>>> Il 13/08/2013 00:02, Paolo Bonzini ha scritto:
>>>>>>>> vapic requires the VAPIC ROM to be mapped into RAM.  This is not
>>>>>>>> possible without PAM hardware.  This fixes a segmentation fault
>>>>>>>> running with -M isapc.
>>>>>>>>
>>>>>>>> Cc: qemu-stable@nongnu.org
>>>>>>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>>>>>> ---
>>>>>>>>
>>>>>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
>>>>>>>> index a19e172..3aa244a 100644
>>>>>>>> --- a/hw/i386/pc_piix.c
>>>>>>>> +++ b/hw/i386/pc_piix.c
>>>>>>>> @@ -743,6 +743,11 @@ static QEMUMachine isapc_machine = {
>>>>>>>>      .init = pc_init_isa,
>>>>>>>>      .max_cpus = 1,
>>>>>>>>      .compat_props = (GlobalProperty[]) {
>>>>>>>> +        {
>>>>>>>> +            .driver   = "apic-common",
>>>>>>>> +            .property = "kvmvapic",
>>>>>>>> +            .value    = "off",
>>>>>>>> +        },
>>>>>>>>          { /* end of list */ }
>>>>>>>>      },
>>>>>>>>      DEFAULT_MACHINE_OPTIONS,
>>>>>>>>
>>>>>>>
>>>>>>> Ping.
>>>>>>
>>>>>> I had double-checked that my pending qom-test covers isapc and succeeds
>>>>>> with and without your patch, so apparently this is visible at runtime only.
>>>>>
>>>>> Yes, it only happens after kvmvapic is actually enabled by the option ROM.
>>>>
>>>> Maybe Michael can pick it up along with the compat refactorings?
>>>
>>> Sure, I'll put it on my tree but I already prepared a pull request
>>> for today, it will go into the next one.
>>
>> Michael, can you post this patch together with the ACPI pull request?
> 
> What about the comment wrt s/kvmvapic/vapic/g? Haven't seen any response
> or v2.

It needs a v2 indeed... weird...

Paolo
diff mbox

Patch

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index a19e172..3aa244a 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -743,6 +743,11 @@  static QEMUMachine isapc_machine = {
     .init = pc_init_isa,
     .max_cpus = 1,
     .compat_props = (GlobalProperty[]) {
+        {
+            .driver   = "apic-common",
+            .property = "kvmvapic",
+            .value    = "off",
+        },
         { /* end of list */ }
     },
     DEFAULT_MACHINE_OPTIONS,