|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] [PATCH 7 of 7] KEXEC: correctly revert x2apic state when
>>> On 15.06.11 at 11:40, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
> On 15/06/11 10:26, Jan Beulich wrote:
>>>>> On 13.06.11 at 19:02, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote:
>>> @@ -345,6 +346,33 @@ void disable_local_APIC(void)
>>> wrmsrl(MSR_IA32_APICBASE, msr_content &
>>> ~(MSR_IA32_APICBASE_ENABLE|MSR_IA32_APICBASE_EXTD));
>>> }
>>> +
>>> + if ( kexecing )
>>> + {
>>> + uint64_t msr_content;
>>> + rdmsrl(MSR_IA32_APICBASE, msr_content);
>>> + msr_content &= ~(MSR_IA32_APICBASE_ENABLE|MSR_IA32_APICBASE_EXTD);
>>> + wrmsrl(MSR_IA32_APICBASE, msr_content);
>>> +
>>> + switch ( apic_boot_mode )
>> Did you verify this gets executed only for the single remaining CPU?
>
> It most definitely runs on all CPUs. Because of the difference between
> x2apic and xapic interrupts, it is stark-raving mad to try and run a
> system with different lapics in different modes as the default operating
> state.
But you're not returning each CPU to its boot state - you're instead
forcing them all into the state the boot CPU was in (and hence
possibly out of sync with other firmware provided information).
>>> + if ( current_local_apic_mode() == APIC_MODE_X2APIC )
>>> + x2apic_enabled = 1;
>>> + else
>>> + x2apic_enabled = 0;
>> Do you really need to force x2apic_enabled *both* ways to avoid
>> described protection fault? And really I still don't follow why the
>> variable at the end of the life of the system all of the sudden needs
>> tweaking, when the system lived happily with its "normal" value.
>
> You do need to force it both ways. disable_IO_APIC() which is the
> following call runs the risk of causing a protection fault, when setting
> virtual wire mode back up. However, in the alternate case where the
> local APIC is in x2apic mode, and x2apic_enabled is false, all the APIC
> code will attempt to use MMIO and get confused when twiddling it does
> nothing. (This is one of the problems the linux kdump kernel had until
> very recently)
How would the APIC end up in x2apic mode when x2apic_enabled
is not set (or vice versa)?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|