diff options
| author | Linus Torvalds <[email protected]> | 2011-12-04 19:57:09 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2011-12-04 19:57:09 +0000 |
| commit | 8e8da023f5af71662867729db5547dc54786093c (patch) | |
| tree | 0108c8b0bac10268a3156aaf042466b8815d1330 /fs/btrfs/async-thread.c | |
| parent | xen/pm_idle: Make pm_idle be default_idle under Xen. (diff) | |
| download | kernel-8e8da023f5af71662867729db5547dc54786093c.tar.gz kernel-8e8da023f5af71662867729db5547dc54786093c.zip | |
x86: Fix boot failures on older AMD CPU's
People with old AMD chips are getting hung boots, because commit
bcb80e53877c ("x86, microcode, AMD: Add microcode revision to
/proc/cpuinfo") moved the microcode detection too early into
"early_init_amd()".
At that point we are *so* early in the booth that the exception tables
haven't even been set up yet, so the whole
rdmsr_safe(MSR_AMD64_PATCH_LEVEL, &c->microcode, &dummy);
doesn't actually work: if the rdmsr does a GP fault (due to non-existant
MSR register on older CPU's), we can't fix it up yet, and the boot fails.
Fix it by simply moving the code to a slightly later point in the boot
(init_amd() instead of early_init_amd()), since the kernel itself
doesn't even really care about the microcode patchlevel at this point
(or really ever: it's made available to user space in /proc/cpuinfo, and
updated if you do a microcode load).
Reported-tested-and-bisected-by: Larry Finger <[email protected]>
Tested-by: Bob Tracy <[email protected]>
Acked-by: Borislav Petkov <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Srivatsa S. Bhat <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'fs/btrfs/async-thread.c')
0 files changed, 0 insertions, 0 deletions
