All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] CPUID-less CPU/sync_core fixes and improvements
@ 2016-12-05 21:32 Andy Lutomirski
  2016-12-05 21:32 ` [PATCH v3 1/4] x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit kernels Andy Lutomirski
                   ` (6 more replies)
  0 siblings, 7 replies; 23+ messages in thread
From: Andy Lutomirski @ 2016-12-05 21:32 UTC (permalink / raw)
  To: x86
  Cc: One Thousand Gnomes, Borislav Petkov,
	linux-kernel@vger.kernel.org, Brian Gerst, Matthew Whitehead,
	Henrique de Moraes Holschuh, Peter Zijlstra, xen-devel,
	Juergen Gross, Boris Ostrovsky, Andrew Cooper, Andy Lutomirski

*** PATCHES 1 and 2 MAY BE 4.9 MATERIAL ***

Alan Cox pointed out that the 486 isn't the only supported CPU that
doesn't have CPUID.  Let's clean up the mess and make everything
faster while we're at it.

Patch 1 is intended to be an easy fix: it makes sync_core() work
without CPUID on all 32-bit kernels.  It should be quite safe.  This
will have a negligible performance cost during boot on kernels built
for newer CPUs.  With this in place, patch 2 reverts the buggy 486
check I added.

Patches 3-4 are meant to improve the situation.  Patch 3 cleans up
the Intel microcode loader and the patch 4 (which depends on patch 3
to work correctly) stops using CPUID in sync_core() altogether.

Changes from v2:
 - Switch to IRET-to-self and get rid of all the paravirt code.
 - Further immprove the sync_core() comment.

Changes from v1:
 - Fix Xen
 - Add timing info to the changelog (hint: 2x speedup)
 - Document patch 1 a bit better.

Andy Lutomirski (4):
  x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit
    kernels
  Revert "x86/boot: Fail the boot if !M486 and CPUID is missing"
  x86/microcode/intel: Replace sync_core() with native_cpuid()
  x86/asm: Rewrite sync_core() to use IRET-to-self

 arch/x86/boot/cpu.c                   |  6 ---
 arch/x86/include/asm/processor.h      | 77 +++++++++++++++++++++++++----------
 arch/x86/kernel/cpu/microcode/intel.c | 26 ++++++++++--
 3 files changed, 78 insertions(+), 31 deletions(-)

-- 
2.9.3

^ permalink raw reply	[flat|nested] 23+ messages in thread
* [PATCH v3 0/4] CPUID-less CPU/sync_core fixes and improvements
@ 2016-12-05 21:32 Andy Lutomirski
  0 siblings, 0 replies; 23+ messages in thread
From: Andy Lutomirski @ 2016-12-05 21:32 UTC (permalink / raw)
  To: x86
  Cc: Juergen Gross, One Thousand Gnomes, Andy Lutomirski,
	Peter Zijlstra, Brian Gerst, linux-kernel@vger.kernel.org,
	Matthew Whitehead, Borislav Petkov, Henrique de Moraes Holschuh,
	Andrew Cooper, Boris Ostrovsky, xen-devel

*** PATCHES 1 and 2 MAY BE 4.9 MATERIAL ***

Alan Cox pointed out that the 486 isn't the only supported CPU that
doesn't have CPUID.  Let's clean up the mess and make everything
faster while we're at it.

Patch 1 is intended to be an easy fix: it makes sync_core() work
without CPUID on all 32-bit kernels.  It should be quite safe.  This
will have a negligible performance cost during boot on kernels built
for newer CPUs.  With this in place, patch 2 reverts the buggy 486
check I added.

Patches 3-4 are meant to improve the situation.  Patch 3 cleans up
the Intel microcode loader and the patch 4 (which depends on patch 3
to work correctly) stops using CPUID in sync_core() altogether.

Changes from v2:
 - Switch to IRET-to-self and get rid of all the paravirt code.
 - Further immprove the sync_core() comment.

Changes from v1:
 - Fix Xen
 - Add timing info to the changelog (hint: 2x speedup)
 - Document patch 1 a bit better.

Andy Lutomirski (4):
  x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit
    kernels
  Revert "x86/boot: Fail the boot if !M486 and CPUID is missing"
  x86/microcode/intel: Replace sync_core() with native_cpuid()
  x86/asm: Rewrite sync_core() to use IRET-to-self

 arch/x86/boot/cpu.c                   |  6 ---
 arch/x86/include/asm/processor.h      | 77 +++++++++++++++++++++++++----------
 arch/x86/kernel/cpu/microcode/intel.c | 26 ++++++++++--
 3 files changed, 78 insertions(+), 31 deletions(-)

-- 
2.9.3


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2016-12-06 19:35 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-05 21:32 [PATCH v3 0/4] CPUID-less CPU/sync_core fixes and improvements Andy Lutomirski
2016-12-05 21:32 ` [PATCH v3 1/4] x86/asm/32: Make sync_core() handle missing CPUID on all 32-bit kernels Andy Lutomirski
2016-12-05 21:32 ` Andy Lutomirski
2016-12-05 21:32 ` [PATCH v3 2/4] Revert "x86/boot: Fail the boot if !M486 and CPUID is missing" Andy Lutomirski
2016-12-05 21:32   ` Andy Lutomirski
2016-12-05 21:32 ` [PATCH v3 3/4] x86/microcode/intel: Replace sync_core() with native_cpuid() Andy Lutomirski
2016-12-05 21:32 ` Andy Lutomirski
2016-12-05 21:32 ` [PATCH v3 4/4] x86/asm: Rewrite sync_core() to use IRET-to-self Andy Lutomirski
2016-12-05 21:32 ` Andy Lutomirski
2016-12-06  7:52   ` Borislav Petkov
2016-12-06 17:49     ` Andy Lutomirski
2016-12-06 17:49     ` Andy Lutomirski
2016-12-06  7:52   ` Borislav Petkov
2016-12-06  8:46   ` [Xen-devel] " Jan Beulich
2016-12-06  9:25     ` Peter Zijlstra
2016-12-06  9:25       ` Peter Zijlstra
2016-12-06  9:49       ` Jan Beulich
2016-12-06 17:46         ` Andy Lutomirski
2016-12-06 17:46         ` [Xen-devel] " Andy Lutomirski
2016-12-06 19:32     ` H. Peter Anvin
2016-12-06 19:32       ` H. Peter Anvin
2016-12-06  8:46   ` Jan Beulich
  -- strict thread matches above, loose matches on Subject: below --
2016-12-05 21:32 [PATCH v3 0/4] CPUID-less CPU/sync_core fixes and improvements Andy Lutomirski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.