Commit 2afc8160 authored by Tigran Aivazian's avatar Tigran Aivazian Committed by Linus Torvalds

[PATCH] update to microcode update driver

This contains the following changes:

a) changes from Intel to support the new microcode data format
   (backward compatible of course)

b) changes from me to remove the no longer needed features of the driver,
   namely we don't need to keep a copy of applied microcode in kernel
   memory.

   This feature was hardly useful in the days of regular devfs
   /dev/cpu/microcode file and now it is completely useless so I removed
   it (after taking into account all the feedback on linux-kernel I
   received since the announcement of the intention to do this)

These are rather critical because otherwise we can't really say Linux
fully supports the very latest Intel cpus (which require microcode in
the new format).
parent c31bc22f
This diff is collapsed.
...@@ -498,7 +498,7 @@ unsigned long get_wchan(struct task_struct *p); ...@@ -498,7 +498,7 @@ unsigned long get_wchan(struct task_struct *p);
#define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)->thread_info))[1019]) #define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)->thread_info))[1019])
#define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)->thread_info))[1022]) #define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)->thread_info))[1022])
struct microcode { struct microcode_header {
unsigned int hdrver; unsigned int hdrver;
unsigned int rev; unsigned int rev;
unsigned int date; unsigned int date;
...@@ -506,10 +506,32 @@ struct microcode { ...@@ -506,10 +506,32 @@ struct microcode {
unsigned int cksum; unsigned int cksum;
unsigned int ldrver; unsigned int ldrver;
unsigned int pf; unsigned int pf;
unsigned int reserved[5]; unsigned int datasize;
unsigned int bits[500]; unsigned int totalsize;
unsigned int reserved[3];
};
struct microcode {
struct microcode_header hdr;
unsigned int bits[0];
};
typedef struct microcode microcode_t;
typedef struct microcode_header microcode_header_t;
/* microcode format is extended from prescott processors */
struct extended_signature {
unsigned int sig;
unsigned int pf;
unsigned int cksum;
}; };
struct extended_sigtable {
unsigned int count;
unsigned int cksum;
unsigned int reserved[3];
struct extended_signature sigs[0];
};
/* '6' because it used to be for P6 only (but now covers Pentium 4 as well) */ /* '6' because it used to be for P6 only (but now covers Pentium 4 as well) */
#define MICROCODE_IOCFREE _IO('6',0) #define MICROCODE_IOCFREE _IO('6',0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment