[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp |
Date: |
Tue, 07 Apr 2015 12:15:20 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
+Eduardo as target-i386 maintainer
Am 02.04.2015 um 14:34 schrieb Paolo Bonzini:
>
>
> On 02/04/2015 01:58, Nadav Amit wrote:
>> Since the BSP bit is writable on real hardware, during reset all the CPUs
>> which
>> were not chosen to be the BSP should have their BSP bit cleared. This fix is
>> required for KVM to work correctly when it changes the BSP bit.
>>
>> An additional fix is required for QEMU tcg to allow software to change the
>> BSP
>> bit.
>>
>> Signed-off-by: Nadav Amit <address@hidden>
>> ---
>> hw/intc/apic_common.c | 8 ++++++--
>> include/hw/i386/apic.h | 2 +-
>> target-i386/cpu.c | 4 +---
>> 3 files changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
>> index 0858b45..042e960 100644
>> --- a/hw/intc/apic_common.c
>> +++ b/hw/intc/apic_common.c
>> @@ -215,14 +215,18 @@ void apic_init_reset(DeviceState *dev)
>> }
>> }
>>
>> -void apic_designate_bsp(DeviceState *dev)
>> +void apic_designate_bsp(DeviceState *dev, bool bsp)
>> {
>> if (dev == NULL) {
>> return;
>> }
>>
>> APICCommonState *s = APIC_COMMON(dev);
>> - s->apicbase |= MSR_IA32_APICBASE_BSP;
>> + if (bsp) {
>> + s->apicbase |= MSR_IA32_APICBASE_BSP;
>> + } else {
>> + s->apicbase &= ~MSR_IA32_APICBASE_BSP;
>> + }
>> }
>>
>> static void apic_reset_common(DeviceState *dev)
>> diff --git a/include/hw/i386/apic.h b/include/hw/i386/apic.h
>> index 1d48e02..51eb6d3 100644
>> --- a/include/hw/i386/apic.h
>> +++ b/include/hw/i386/apic.h
>> @@ -21,7 +21,7 @@ void apic_sipi(DeviceState *s);
>> void apic_handle_tpr_access_report(DeviceState *d, target_ulong ip,
>> TPRAccess access);
>> void apic_poll_irq(DeviceState *d);
>> -void apic_designate_bsp(DeviceState *d);
>> +void apic_designate_bsp(DeviceState *d, bool bsp);
>>
>> /* pc.c */
>> DeviceState *cpu_get_current_apic(void);
>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
>> index b2d1c95..03b33cf 100644
>> --- a/target-i386/cpu.c
>> +++ b/target-i386/cpu.c
>> @@ -2714,9 +2714,7 @@ static void x86_cpu_reset(CPUState *s)
>>
>> #if !defined(CONFIG_USER_ONLY)
>> /* We hard-wire the BSP to the first CPU. */
>> - if (s->cpu_index == 0) {
>> - apic_designate_bsp(cpu->apic_state);
>> - }
>> + apic_designate_bsp(cpu->apic_state, s->cpu_index == 0);
>>
>> s->halted = !cpu_is_bsp(cpu);
>>
>>
>
> Thanks, applied locally.
I don't understand why this is necessary: The cpu_index doesn't change,
therefore the BSP designation won't change either. Is this a hot-unplug
preparation? Or is a KVM-specific call missing here? Either way, the
commit message could use some clarification.
The API change itself looks okay.
Regards,
Andreas
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu,
Graham Norton; HRB 21284 (AG Nürnberg)
- [Qemu-devel] target-i386: clear bsp bit when designating bsp, Nadav Amit, 2015/04/02
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Paolo Bonzini, 2015/04/02
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp,
Andreas Färber <=
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Paolo Bonzini, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Andreas Färber, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Paolo Bonzini, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Andreas Färber, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Andreas Färber, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Igor Mammedov, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Andreas Färber, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Paolo Bonzini, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Andreas Färber, 2015/04/07
- Re: [Qemu-devel] target-i386: clear bsp bit when designating bsp, Paolo Bonzini, 2015/04/07