62 lines
2.3 KiB
Diff
62 lines
2.3 KiB
Diff
# HG changeset patch
|
|
# User Kurt Garloff <kurt@garloff.de>
|
|
# Node ID b1752c878a7845d812c9b15e721f401d786394b2
|
|
# Parent 469478194aef6e987f9281efbc0756749be6eb80
|
|
Microcode does not need to have the default size of 2000+48 bytes.
|
|
A corresponding patch has gone into Linux 2.6.19; this is the
|
|
port to Xen.
|
|
|
|
Signed-off-by: Kurt Garloff <kurt@garloff.de>
|
|
|
|
Reference: Patch to linux kernel from Sep 27 2006
|
|
> # User Shaohua Li <shaohua.li@intel.com>
|
|
> # Node ID 45898b908138b5d93c2cc7353f061ce54af145dc
|
|
> # Parent f962eab7b82c9bf1a6da69571046e764f5128395
|
|
> [PATCH] x86 microcode: don't check the size
|
|
>
|
|
> IA32 manual says if micorcode update's size is 0, then the size is
|
|
> default size (2048 bytes). But this doesn't suggest all microcode
|
|
> update's size should be above 2048 bytes to me. We actually had a
|
|
> microcode update whose size is 1024 bytes. The patch just removed the
|
|
> check.
|
|
>
|
|
> Signed-off-by: Shaohua Li <shaohua.li@intel.com>
|
|
> Cc: Tigran Aivazian <tigran@veritas.com>
|
|
> Signed-off-by: Andrew Morton <akpm@osdl.org>
|
|
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
|
|
>
|
|
> committer: Linus Torvalds <torvalds@g5.osdl.org> 1159370778 -0700
|
|
|
|
diff -r 469478194aef -r b1752c878a78 xen/arch/x86/microcode.c
|
|
--- a/xen/arch/x86/microcode.c Mon Dec 18 00:14:40 2006 +0000
|
|
+++ b/xen/arch/x86/microcode.c Sun Dec 24 17:06:23 2006 +0100
|
|
@@ -249,14 +249,14 @@ static int find_matching_ucodes (void)
|
|
}
|
|
|
|
total_size = get_totalsize(&mc_header);
|
|
- if ((cursor + total_size > user_buffer_size) || (total_size < DEFAULT_UCODE_TOTALSIZE)) {
|
|
+ if (cursor + total_size > user_buffer_size) {
|
|
printk(KERN_ERR "microcode: error! Bad data in microcode data file\n");
|
|
error = -EINVAL;
|
|
goto out;
|
|
}
|
|
|
|
data_size = get_datasize(&mc_header);
|
|
- if ((data_size + MC_HEADER_SIZE > total_size) || (data_size < DEFAULT_UCODE_DATASIZE)) {
|
|
+ if (data_size + MC_HEADER_SIZE > total_size) {
|
|
printk(KERN_ERR "microcode: error! Bad data in microcode data file\n");
|
|
error = -EINVAL;
|
|
goto out;
|
|
@@ -459,11 +459,6 @@ int microcode_update(XEN_GUEST_HANDLE(vo
|
|
{
|
|
int ret;
|
|
|
|
- if (len < DEFAULT_UCODE_TOTALSIZE) {
|
|
- printk(KERN_ERR "microcode: not enough data\n");
|
|
- return -EINVAL;
|
|
- }
|
|
-
|
|
if (len != (typeof(user_buffer_size))len) {
|
|
printk(KERN_ERR "microcode: too much data\n");
|
|
return -E2BIG;
|