lkml.org 
[lkml]   [2004]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2.6.6-rc3] Lindent on arch/i386/kernel/msr.c

    Per Greg's request this is a patch of having run Lindent on msr.c.
    The tabs were not the right number of spaces before. I also added a semicolon
    after the module_exit statement to make Lindent do the right thing wrt the
    spacing of the MODULE_AUTHOR. I have compiled and booted to verify this
    change does not break anything.

    [root@w-hlinder2 0]# pwd
    /dev/cpu/0
    [root@w-hlinder2 0]# ls -al
    total 8
    drwxr-xr-x 2 root root 4096 Oct 21 2002 .
    drwxr-xr-x 18 root root 4096 Oct 21 2002 ..
    crw------- 1 root root 203, 0 Apr 11 2002 cpuid
    crw------- 1 root root 10, 184 Apr 11 2002 microcode
    crw------- 1 root root 202, 0 Apr 11 2002 msr


    Please consider for inclusion.

    Thanks.

    Hanna Linder
    IBM Linux Technology Center
    ----------
    diff -Nrup -Xdontdiff linux-2.6.6-rc3/arch/i386/kernel/msr.c linux-2.6.6-rc3p/arch/i386/kernel/msr.c
    --- linux-2.6.6-rc3/arch/i386/kernel/msr.c 2004-04-27 18:35:44.000000000 -0700
    +++ linux-2.6.6-rc3p/arch/i386/kernel/msr.c 2004-05-06 14:27:41.000000000 -0700
    @@ -46,238 +46,232 @@

    static inline int wrmsr_eio(u32 reg, u32 eax, u32 edx)
    {
    - int err;
    + int err;

    - asm volatile(
    - "1: wrmsr\n"
    - "2:\n"
    - ".section .fixup,\"ax\"\n"
    - "3: movl %4,%0\n"
    - " jmp 2b\n"
    - ".previous\n"
    - ".section __ex_table,\"a\"\n"
    - " .align 4\n"
    - " .long 1b,3b\n"
    - ".previous"
    - : "=&bDS" (err)
    - : "a" (eax), "d" (edx), "c" (reg), "i" (-EIO), "0" (0));
    -
    - return err;
    -}
    -
    -static inline int rdmsr_eio(u32 reg, u32 *eax, u32 *edx)
    -{
    - int err;
    -
    - asm volatile(
    - "1: rdmsr\n"
    - "2:\n"
    - ".section .fixup,\"ax\"\n"
    - "3: movl %4,%0\n"
    - " jmp 2b\n"
    - ".previous\n"
    - ".section __ex_table,\"a\"\n"
    - " .align 4\n"
    - " .long 1b,3b\n"
    - ".previous"
    - : "=&bDS" (err), "=a" (*eax), "=d" (*edx)
    - : "c" (reg), "i" (-EIO), "0" (0));
    + asm volatile ("1: wrmsr\n"
    + "2:\n"
    + ".section .fixup,\"ax\"\n"
    + "3: movl %4,%0\n"
    + " jmp 2b\n"
    + ".previous\n"
    + ".section __ex_table,\"a\"\n"
    + " .align 4\n" " .long 1b,3b\n" ".previous":"=&bDS" (err)
    + :"a"(eax), "d"(edx), "c"(reg), "i"(-EIO), "0"(0));
    +
    + return err;
    +}
    +
    +static inline int rdmsr_eio(u32 reg, u32 * eax, u32 * edx)
    +{
    + int err;
    +
    + asm volatile ("1: rdmsr\n"
    + "2:\n"
    + ".section .fixup,\"ax\"\n"
    + "3: movl %4,%0\n"
    + " jmp 2b\n"
    + ".previous\n"
    + ".section __ex_table,\"a\"\n"
    + " .align 4\n"
    + " .long 1b,3b\n"
    + ".previous":"=&bDS" (err), "=a"(*eax), "=d"(*edx)
    + :"c"(reg), "i"(-EIO), "0"(0));

    - return err;
    + return err;
    }

    #ifdef CONFIG_SMP

    struct msr_command {
    - int cpu;
    - int err;
    - u32 reg;
    - u32 data[2];
    + int cpu;
    + int err;
    + u32 reg;
    + u32 data[2];
    };

    static void msr_smp_wrmsr(void *cmd_block)
    {
    - struct msr_command *cmd = (struct msr_command *) cmd_block;
    -
    - if ( cmd->cpu == smp_processor_id() )
    - cmd->err = wrmsr_eio(cmd->reg, cmd->data[0], cmd->data[1]);
    + struct msr_command *cmd = (struct msr_command *)cmd_block;
    +
    + if (cmd->cpu == smp_processor_id())
    + cmd->err = wrmsr_eio(cmd->reg, cmd->data[0], cmd->data[1]);
    }

    static void msr_smp_rdmsr(void *cmd_block)
    {
    - struct msr_command *cmd = (struct msr_command *) cmd_block;
    -
    - if ( cmd->cpu == smp_processor_id() )
    - cmd->err = rdmsr_eio(cmd->reg, &cmd->data[0], &cmd->data[1]);
    + struct msr_command *cmd = (struct msr_command *)cmd_block;
    +
    + if (cmd->cpu == smp_processor_id())
    + cmd->err = rdmsr_eio(cmd->reg, &cmd->data[0], &cmd->data[1]);
    }

    static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
    {
    - struct msr_command cmd;
    - int ret;
    + struct msr_command cmd;
    + int ret;

    - preempt_disable();
    - if ( cpu == smp_processor_id() ) {
    - ret = wrmsr_eio(reg, eax, edx);
    - } else {
    - cmd.cpu = cpu;
    - cmd.reg = reg;
    - cmd.data[0] = eax;
    - cmd.data[1] = edx;
    -
    - smp_call_function(msr_smp_wrmsr, &cmd, 1, 1);
    - ret = cmd.err;
    - }
    - preempt_enable();
    - return ret;
    -}
    -
    -static inline int do_rdmsr(int cpu, u32 reg, u32 *eax, u32 *edx)
    -{
    - struct msr_command cmd;
    - int ret;
    -
    - preempt_disable();
    - if ( cpu == smp_processor_id() ) {
    - ret = rdmsr_eio(reg, eax, edx);
    - } else {
    - cmd.cpu = cpu;
    - cmd.reg = reg;
    -
    - smp_call_function(msr_smp_rdmsr, &cmd, 1, 1);
    -
    - *eax = cmd.data[0];
    - *edx = cmd.data[1];
    -
    - ret = cmd.err;
    - }
    - preempt_enable();
    - return ret;
    + preempt_disable();
    + if (cpu == smp_processor_id()) {
    + ret = wrmsr_eio(reg, eax, edx);
    + } else {
    + cmd.cpu = cpu;
    + cmd.reg = reg;
    + cmd.data[0] = eax;
    + cmd.data[1] = edx;
    +
    + smp_call_function(msr_smp_wrmsr, &cmd, 1, 1);
    + ret = cmd.err;
    + }
    + preempt_enable();
    + return ret;
    }

    -#else /* ! CONFIG_SMP */
    +static inline int do_rdmsr(int cpu, u32 reg, u32 * eax, u32 * edx)
    +{
    + struct msr_command cmd;
    + int ret;
    +
    + preempt_disable();
    + if (cpu == smp_processor_id()) {
    + ret = rdmsr_eio(reg, eax, edx);
    + } else {
    + cmd.cpu = cpu;
    + cmd.reg = reg;
    +
    + smp_call_function(msr_smp_rdmsr, &cmd, 1, 1);
    +
    + *eax = cmd.data[0];
    + *edx = cmd.data[1];
    +
    + ret = cmd.err;
    + }
    + preempt_enable();
    + return ret;
    +}
    +
    +#else /* ! CONFIG_SMP */

    static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
    {
    - return wrmsr_eio(reg, eax, edx);
    + return wrmsr_eio(reg, eax, edx);
    }

    -static inline int do_rdmsr(int cpu, u32 reg, u32 *eax, u32 *edx)
    +static inline int do_rdmsr(int cpu, u32 reg, u32 * eax, u32 * edx)
    {
    - return rdmsr_eio(reg, eax, edx);
    + return rdmsr_eio(reg, eax, edx);
    }

    -#endif /* ! CONFIG_SMP */
    +#endif /* ! CONFIG_SMP */

    static loff_t msr_seek(struct file *file, loff_t offset, int orig)
    {
    - loff_t ret = -EINVAL;
    - lock_kernel();
    - switch (orig) {
    - case 0:
    - file->f_pos = offset;
    - ret = file->f_pos;
    - break;
    - case 1:
    - file->f_pos += offset;
    - ret = file->f_pos;
    - }
    - unlock_kernel();
    - return ret;
    -}
    -
    -static ssize_t msr_read(struct file * file, char __user * buf,
    - size_t count, loff_t *ppos)
    -{
    - u32 *tmp = (u32 *)buf;
    - u32 data[2];
    - size_t rv;
    - u32 reg = *ppos;
    - int cpu = iminor(file->f_dentry->d_inode);
    - int err;
    -
    - if ( count % 8 )
    - return -EINVAL; /* Invalid chunk size */
    -
    - for ( rv = 0 ; count ; count -= 8 ) {
    - err = do_rdmsr(cpu, reg, &data[0], &data[1]);
    - if ( err )
    - return err;
    - if ( copy_to_user(tmp,&data,8) )
    - return -EFAULT;
    - tmp += 2;
    - }
    -
    - return ((char *)tmp) - buf;
    -}
    -
    -static ssize_t msr_write(struct file * file, const char __user * buf,
    - size_t count, loff_t *ppos)
    -{
    - const u32 *tmp = (const u32 *)buf;
    - u32 data[2];
    - size_t rv;
    - u32 reg = *ppos;
    - int cpu = iminor(file->f_dentry->d_inode);
    - int err;
    -
    - if ( count % 8 )
    - return -EINVAL; /* Invalid chunk size */
    -
    - for ( rv = 0 ; count ; count -= 8 ) {
    - if ( copy_from_user(&data,tmp,8) )
    - return -EFAULT;
    - err = do_wrmsr(cpu, reg, data[0], data[1]);
    - if ( err )
    - return err;
    - tmp += 2;
    - }
    + loff_t ret = -EINVAL;
    + lock_kernel();
    + switch (orig) {
    + case 0:
    + file->f_pos = offset;
    + ret = file->f_pos;
    + break;
    + case 1:
    + file->f_pos += offset;
    + ret = file->f_pos;
    + }
    + unlock_kernel();
    + return ret;
    +}
    +
    +static ssize_t msr_read(struct file *file, char __user * buf,
    + size_t count, loff_t * ppos)
    +{
    + u32 *tmp = (u32 *) buf;
    + u32 data[2];
    + size_t rv;
    + u32 reg = *ppos;
    + int cpu = iminor(file->f_dentry->d_inode);
    + int err;
    +
    + if (count % 8)
    + return -EINVAL; /* Invalid chunk size */
    +
    + for (rv = 0; count; count -= 8) {
    + err = do_rdmsr(cpu, reg, &data[0], &data[1]);
    + if (err)
    + return err;
    + if (copy_to_user(tmp, &data, 8))
    + return -EFAULT;
    + tmp += 2;
    + }
    +
    + return ((char *)tmp) - buf;
    +}
    +
    +static ssize_t msr_write(struct file *file, const char __user * buf,
    + size_t count, loff_t * ppos)
    +{
    + const u32 *tmp = (const u32 *)buf;
    + u32 data[2];
    + size_t rv;
    + u32 reg = *ppos;
    + int cpu = iminor(file->f_dentry->d_inode);
    + int err;
    +
    + if (count % 8)
    + return -EINVAL; /* Invalid chunk size */
    +
    + for (rv = 0; count; count -= 8) {
    + if (copy_from_user(&data, tmp, 8))
    + return -EFAULT;
    + err = do_wrmsr(cpu, reg, data[0], data[1]);
    + if (err)
    + return err;
    + tmp += 2;
    + }

    - return ((char *)tmp) - buf;
    + return ((char *)tmp) - buf;
    }

    static int msr_open(struct inode *inode, struct file *file)
    {
    - int cpu = iminor(file->f_dentry->d_inode);
    - struct cpuinfo_x86 *c = &(cpu_data)[cpu];
    -
    - if (!cpu_online(cpu))
    - return -ENXIO; /* No such CPU */
    - if ( !cpu_has(c, X86_FEATURE_MSR) )
    - return -EIO; /* MSR not supported */
    -
    - return 0;
    + int cpu = iminor(file->f_dentry->d_inode);
    + struct cpuinfo_x86 *c = &(cpu_data)[cpu];
    +
    + if (!cpu_online(cpu))
    + return -ENXIO; /* No such CPU */
    + if (!cpu_has(c, X86_FEATURE_MSR))
    + return -EIO; /* MSR not supported */
    +
    + return 0;
    }

    /*
    * File operations we support
    */
    static struct file_operations msr_fops = {
    - .owner = THIS_MODULE,
    - .llseek = msr_seek,
    - .read = msr_read,
    - .write = msr_write,
    - .open = msr_open,
    + .owner = THIS_MODULE,
    + .llseek = msr_seek,
    + .read = msr_read,
    + .write = msr_write,
    + .open = msr_open,
    };

    int __init msr_init(void)
    {
    - if (register_chrdev(MSR_MAJOR, "cpu/msr", &msr_fops)) {
    - printk(KERN_ERR "msr: unable to get major %d for msr\n",
    - MSR_MAJOR);
    - return -EBUSY;
    - }
    -
    - return 0;
    + if (register_chrdev(MSR_MAJOR, "cpu/msr", &msr_fops)) {
    + printk(KERN_ERR "msr: unable to get major %d for msr\n",
    + MSR_MAJOR);
    + return -EBUSY;
    + }
    +
    + return 0;
    }

    void __exit msr_exit(void)
    {
    - unregister_chrdev(MSR_MAJOR, "cpu/msr");
    + unregister_chrdev(MSR_MAJOR, "cpu/msr");
    }

    module_init(msr_init);
    -module_exit(msr_exit)
    +module_exit(msr_exit);

    MODULE_AUTHOR("H. Peter Anvin <hpa@zytor.com>");
    MODULE_DESCRIPTION("x86 generic MSR driver");
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:02    [W:0.041 / U:58.872 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site