Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

microcode.c File Reference

#include <linux/init.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/miscdevice.h>
#include <linux/smp.h>
#include <asm/msr.h>
#include <asm/uaccess.h>
#include <asm/processor.h>

Include dependency graph for microcode.c:

Go to the source code of this file.

Defines

#define MICROCODE_VERSION   "1.08"

Functions

 MODULE_DESCRIPTION ("Intel CPU (IA-32) microcode update driver")
 MODULE_AUTHOR ("Tigran Aivazian <tigran@veritas.com>")
static int microcode_open (struct inode *, struct file *)
static ssize_t microcode_read (struct file *, char *, size_t, loff_t *)
static ssize_t microcode_write (struct file *, const char *, size_t, loff_t *)
static int microcode_ioctl (struct inode *, struct file *, unsigned int, unsigned long)
static int do_microcode_update (void)
static void do_update_one (void *)
int __init microcode_init (void)

Variables

 EXPORT_NO_SYMBOLS
static struct semaphore microcode_sem = MUTEX
static struct microcodemicrocode
static unsigned int microcode_num
static char * mc_applied
static unsigned int mc_fsize
static struct file_operations microcode_fops
static struct miscdevice microcode_dev
update_req update_req [NR_CPUS]


Define Documentation

#define MICROCODE_VERSION   "1.08"
 

Definition at line 54 of file microcode.c.

Referenced by microcode_init().


Function Documentation

static int do_microcode_update void   )  [static]
 

Definition at line 134 of file microcode.c.

References do_update_one(), error, i, m, mc_applied, memcpy, NULL, panic(), smp_call_function, and smp_num_cpus.

Referenced by microcode_write().

Here is the call graph for this function:

static void do_update_one void *   )  [static]
 

Definition at line 155 of file microcode.c.

References __asm__(), c, cpu_data, update_req::err, found, i, KERN_ERR, m, microcode_num, MSR_IA32_PLATFORM_ID, MSR_IA32_UCODE_REV, MSR_IA32_UCODE_WRITE, pf, printk, rdmsr, rev, update_req::slot, smp_processor_id, sum, val, wrmsr, cpuinfo_x86::x86, cpuinfo_x86::x86_capability, X86_FEATURE_30, cpuinfo_x86::x86_mask, cpuinfo_x86::x86_model, cpuinfo_x86::x86_vendor, and X86_VENDOR_INTEL.

Referenced by do_microcode_update().

Here is the call graph for this function:

int __init microcode_init void   ) 
 

Definition at line 92 of file microcode.c.

References EINVAL, KERN_ERR, KERN_INFO, MICROCODE_MINOR, MICROCODE_VERSION, misc_register(), and printk.

Referenced by do_basic_setup().

Here is the call graph for this function:

static int microcode_ioctl struct inode *  ,
struct file ,
unsigned  int,
unsigned  long
[static]
 

Definition at line 300 of file microcode.c.

References bytes, down(), EINVAL, ENODATA, KERN_ERR, KERN_WARNING, kfree(), mc_applied, mc_fsize, memset, MICROCODE_IOCFREE, NULL, printk, smp_num_cpus, and up.

Here is the call graph for this function:

static int microcode_open struct inode *  ,
struct file
[static]
 

Definition at line 120 of file microcode.c.

References CAP_SYS_RAWIO, capable, and EPERM.

static ssize_t microcode_read struct file ,
char *  ,
size_t  ,
loff_t * 
[static]
 

Definition at line 236 of file microcode.c.

References copy_to_user, down(), EFAULT, mc_applied, mc_fsize, out, and up.

Here is the call graph for this function:

static ssize_t microcode_write struct file ,
const char *  ,
size_t  ,
loff_t * 
[static]
 

Definition at line 255 of file microcode.c.

References copy_from_user, do_microcode_update(), down(), EFAULT, EINVAL, EIO, ENOMEM, KERN_ERR, kmalloc(), mc_applied, mc_fsize, memset, microcode_num, printk, ret, smp_num_cpus, up, vfree(), and vmalloc().

Here is the call graph for this function:

MODULE_AUTHOR "Tigran Aivazian <tigran@veritas.com>"   ) 
 

MODULE_DESCRIPTION "Intel CPU (IA-32) microcode update driver  ) 
 


Variable Documentation

EXPORT_NO_SYMBOLS
 

Definition at line 58 of file microcode.c.

char* mc_applied [static]
 

Definition at line 76 of file microcode.c.

Referenced by do_microcode_update(), microcode_ioctl(), microcode_read(), and microcode_write().

unsigned int mc_fsize [static]
 

Definition at line 77 of file microcode.c.

Referenced by microcode_ioctl(), microcode_read(), and microcode_write().

struct microcode* microcode [static]
 

Definition at line 74 of file microcode.c.

struct miscdevice microcode_dev [static]
 

Initial value:

 {
        minor: MICROCODE_MINOR,
        name:   "microcode",
        fops:   &microcode_fops,
}

Definition at line 86 of file microcode.c.

struct file_operations microcode_fops [static]
 

Initial value:

Definition at line 79 of file microcode.c.

unsigned int microcode_num [static]
 

Definition at line 75 of file microcode.c.

Referenced by do_update_one(), and microcode_write().

struct semaphore microcode_sem = MUTEX [static]
 

Definition at line 67 of file microcode.c.

struct update_req update_req[NR_CPUS]