Hi Linus,
A single fix for HyperV -- we never NEED the legacy PIC on HyperV, and
in kexec/kdump scenarios we don't always know that we originally
booted EFI. The right answer is probably to augment the legacy PIC
initialization code to detect a not-present PIC, but that is way too
high risk for right now.
The following changes since commit ca3ba2a2f4a49a308e7d78c784d51b2332064f15:
x86, hyperv: Bypass the timer_irq_works() check (2014-03-27 11:02:45 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-hyperv-for-linus
for you to fetch changes up to 8df28b82ff0649dd293f0469b97792cfb9ed10ab:
x86, hyperv: When on Hyper-v use NULL legacy PIC (2014-04-03 22:00:13 -0700)
----------------------------------------------------------------
K. Y. Srinivasan (1):
x86, hyperv: When on Hyper-v use NULL legacy PIC
arch/x86/kernel/cpu/mshyperv.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index 832d05a914ba..b7d82c7e1257 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -93,14 +93,8 @@ static void __init ms_hyperv_init_platform(void)
printk(KERN_INFO "HyperV: LAPIC Timer Frequency: %#x\n",
lapic_timer_frequency);
- /*
- * On Hyper-V, when we are booting off an EFI firmware stack,
- * we do not have many legacy devices including PIC, PIT etc.
- */
- if (efi_enabled(EFI_BOOT)) {
- printk(KERN_INFO "HyperV: Using null_legacy_pic\n");
- legacy_pic = &null_legacy_pic;
- }
+ printk(KERN_INFO "HyperV: Using null_legacy_pic\n");
+ legacy_pic = &null_legacy_pic;
}
#endif
> -----Original Message-----
> From: H. Peter Anvin [mailto:[email protected]]
> Sent: Friday, April 11, 2014 10:39 AM
> To: Linus Torvalds
> Cc: [email protected]; H. Peter Anvin; H. Peter Anvin; Ingo Molnar; KY
> Srinivasan; Linux Kernel Mailing List; Thomas Gleixner
> Subject: [GIT PULL] x86/hyperv fix for v3.15-rc1
>
> Hi Linus,
>
> A single fix for HyperV -- we never NEED the legacy PIC on HyperV, and in
> kexec/kdump scenarios we don't always know that we originally booted EFI.
> The right answer is probably to augment the legacy PIC initialization code to
> detect a not-present PIC, but that is way too high risk for right now.
>
> The following changes since commit
> ca3ba2a2f4a49a308e7d78c784d51b2332064f15:
>
> x86, hyperv: Bypass the timer_irq_works() check (2014-03-27 11:02:45 -
> 0700)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-hyperv-for-
> linus
>
> for you to fetch changes up to 8df28b82ff0649dd293f0469b97792cfb9ed10ab:
>
> x86, hyperv: When on Hyper-v use NULL legacy PIC (2014-04-03 22:00:13 -
> 0700)
Peter,
It may be better not to include the patch titled:
x86, hyperv: When on Hyper-v use NULL legacy PIC (2014-04-03 22:00:13 -
0700)
Without this patch, kexec will not work on Hyper-V efi firmware and that is the way it has been.
While I tested this patch on both legacy and EFI firmware on Hyper-V, Olaf is reporting that on the
configurations he is building, this patch causes problems on Hyper-V legacy firmware.
I am currently working on the idea you have had - using NULL legacy PIC only when
PIC is not there.
Regards,
K. Y
>
> ----------------------------------------------------------------
> K. Y. Srinivasan (1):
> x86, hyperv: When on Hyper-v use NULL legacy PIC
>
> arch/x86/kernel/cpu/mshyperv.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/mshyperv.c
> b/arch/x86/kernel/cpu/mshyperv.c index 832d05a914ba..b7d82c7e1257
> 100644
> --- a/arch/x86/kernel/cpu/mshyperv.c
> +++ b/arch/x86/kernel/cpu/mshyperv.c
> @@ -93,14 +93,8 @@ static void __init ms_hyperv_init_platform(void)
> printk(KERN_INFO "HyperV: LAPIC Timer Frequency: %#x\n",
> lapic_timer_frequency);
>
> - /*
> - * On Hyper-V, when we are booting off an EFI firmware
> stack,
> - * we do not have many legacy devices including PIC, PIT etc.
> - */
> - if (efi_enabled(EFI_BOOT)) {
> - printk(KERN_INFO "HyperV: Using
> null_legacy_pic\n");
> - legacy_pic = &null_legacy_pic;
> - }
> + printk(KERN_INFO "HyperV: Using null_legacy_pic\n");
> + legacy_pic = &null_legacy_pic;
> }
> #endif
>
On 04/11/2014 11:39 AM, KY Srinivasan wrote:
>
> Peter,
>
> It may be better not to include the patch titled:
>
> x86, hyperv: When on Hyper-v use NULL legacy PIC (2014-04-03 22:00:13 -
> 0700)
>
> Without this patch, kexec will not work on Hyper-V efi firmware and that is the way it has been.
> While I tested this patch on both legacy and EFI firmware on Hyper-V, Olaf is reporting that on the
> configurations he is building, this patch causes problems on Hyper-V legacy firmware.
>
> I am currently working on the idea you have had - using NULL legacy PIC only when
> PIC is not there.
>
OK, Linus, please drop this pull request (the above patch is the only
patch in the pull anyway.)
-hpa