diff options
author | Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com> | 2011-06-07 22:00:45 -0400 |
---|---|---|
committer | Borislav Petkov <borislav.petkov@amd.com> | 2011-06-16 06:10:15 -0400 |
commit | 93b62c3cf59d44850cbe9f04d58da08930e3fb0b (patch) | |
tree | 2a850317b2acb73e056ca2f74293aac332cc9212 | |
parent | 559faa6be143b8aa7a07b12f618d29fbc1c8eb0d (diff) |
x86, mce: Use mce_chrdev_ prefix to group functions
There are many functions named mce_* so use a new prefix for the subset
of functions dealing with the character device /dev/mcelog.
This change doesn't impact the mce-inject module because the exported
symbol mce_chrdev_ops already has the prefix, therefore it is left
unchanged.
Before: After:
mce_wait mce_chrdev_wait
mce_state_lock mce_chrdev_state_lock
open_count mce_chrdev_open_count
open_exclu mce_chrdev_open_exclu
mce_open mce_chrdev_open
mce_release mce_chrdev_release
mce_read_mutex mce_chrdev_read_mutex
mce_read mce_chrdev_read
mce_poll mce_chrdev_poll
mce_ioctl mce_chrdev_ioctl
mce_log_device mce_chrdev_device
Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Link: http://lkml.kernel.org/r/4DEED7CD.3040500@jp.fujitsu.com
Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
-rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce.c | 77 |
1 files changed, 41 insertions, 36 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index 54360e82854d..9a735168e40f 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c | |||
@@ -45,12 +45,12 @@ | |||
45 | 45 | ||
46 | #include "mce-internal.h" | 46 | #include "mce-internal.h" |
47 | 47 | ||
48 | static DEFINE_MUTEX(mce_read_mutex); | 48 | static DEFINE_MUTEX(mce_chrdev_read_mutex); |
49 | 49 | ||
50 | #define rcu_dereference_check_mce(p) \ | 50 | #define rcu_dereference_check_mce(p) \ |
51 | rcu_dereference_index_check((p), \ | 51 | rcu_dereference_index_check((p), \ |
52 | rcu_read_lock_sched_held() || \ | 52 | rcu_read_lock_sched_held() || \ |
53 | lockdep_is_held(&mce_read_mutex)) | 53 | lockdep_is_held(&mce_chrdev_read_mutex)) |
54 | 54 | ||
55 | #define CREATE_TRACE_POINTS | 55 | #define CREATE_TRACE_POINTS |
56 | #include <trace/events/mce.h> | 56 | #include <trace/events/mce.h> |
@@ -90,7 +90,8 @@ static unsigned long mce_need_notify; | |||
90 | static char mce_helper[128]; | 90 | static char mce_helper[128]; |
91 | static char *mce_helper_argv[2] = { mce_helper, NULL }; | 91 | static char *mce_helper_argv[2] = { mce_helper, NULL }; |
92 | 92 | ||
93 | static DECLARE_WAIT_QUEUE_HEAD(mce_wait); | 93 | static DECLARE_WAIT_QUEUE_HEAD(mce_chrdev_wait); |
94 | |||
94 | static DEFINE_PER_CPU(struct mce, mces_seen); | 95 | static DEFINE_PER_CPU(struct mce, mces_seen); |
95 | static int cpu_missing; | 96 | static int cpu_missing; |
96 | 97 | ||
@@ -1159,7 +1160,8 @@ int mce_notify_irq(void) | |||
1159 | clear_thread_flag(TIF_MCE_NOTIFY); | 1160 | clear_thread_flag(TIF_MCE_NOTIFY); |
1160 | 1161 | ||
1161 | if (test_and_clear_bit(0, &mce_need_notify)) { | 1162 | if (test_and_clear_bit(0, &mce_need_notify)) { |
1162 | wake_up_interruptible(&mce_wait); | 1163 | /* wake processes polling /dev/mcelog */ |
1164 | wake_up_interruptible(&mce_chrdev_wait); | ||
1163 | 1165 | ||
1164 | /* | 1166 | /* |
1165 | * There is no risk of missing notifications because | 1167 | * There is no risk of missing notifications because |
@@ -1423,40 +1425,41 @@ void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c) | |||
1423 | } | 1425 | } |
1424 | 1426 | ||
1425 | /* | 1427 | /* |
1426 | * Character device to read and clear the MCE log. | 1428 | * mce_chrdev: Character device /dev/mcelog to read and clear the MCE log. |
1427 | */ | 1429 | */ |
1428 | 1430 | ||
1429 | static DEFINE_SPINLOCK(mce_state_lock); | 1431 | static DEFINE_SPINLOCK(mce_chrdev_state_lock); |
1430 | static int open_count; /* #times opened */ | 1432 | static int mce_chrdev_open_count; /* #times opened */ |
1431 | static int open_exclu; /* already open exclusive? */ | 1433 | static int mce_chrdev_open_exclu; /* already open exclusive? */ |
1432 | 1434 | ||
1433 | static int mce_open(struct inode *inode, struct file *file) | 1435 | static int mce_chrdev_open(struct inode *inode, struct file *file) |
1434 | { | 1436 | { |
1435 | spin_lock(&mce_state_lock); | 1437 | spin_lock(&mce_chrdev_state_lock); |
1436 | 1438 | ||
1437 | if (open_exclu || (open_count && (file->f_flags & O_EXCL))) { | 1439 | if (mce_chrdev_open_exclu || |
1438 | spin_unlock(&mce_state_lock); | 1440 | (mce_chrdev_open_count && (file->f_flags & O_EXCL))) { |
1441 | spin_unlock(&mce_chrdev_state_lock); | ||
1439 | 1442 | ||
1440 | return -EBUSY; | 1443 | return -EBUSY; |
1441 | } | 1444 | } |
1442 | 1445 | ||
1443 | if (file->f_flags & O_EXCL) | 1446 | if (file->f_flags & O_EXCL) |
1444 | open_exclu = 1; | 1447 | mce_chrdev_open_exclu = 1; |
1445 | open_count++; | 1448 | mce_chrdev_open_count++; |
1446 | 1449 | ||
1447 | spin_unlock(&mce_state_lock); | 1450 | spin_unlock(&mce_chrdev_state_lock); |
1448 | 1451 | ||
1449 | return nonseekable_open(inode, file); | 1452 | return nonseekable_open(inode, file); |
1450 | } | 1453 | } |
1451 | 1454 | ||
1452 | static int mce_release(struct inode *inode, struct file *file) | 1455 | static int mce_chrdev_release(struct inode *inode, struct file *file) |
1453 | { | 1456 | { |
1454 | spin_lock(&mce_state_lock); | 1457 | spin_lock(&mce_chrdev_state_lock); |
1455 | 1458 | ||
1456 | open_count--; | 1459 | mce_chrdev_open_count--; |
1457 | open_exclu = 0; | 1460 | mce_chrdev_open_exclu = 0; |
1458 | 1461 | ||
1459 | spin_unlock(&mce_state_lock); | 1462 | spin_unlock(&mce_chrdev_state_lock); |
1460 | 1463 | ||
1461 | return 0; | 1464 | return 0; |
1462 | } | 1465 | } |
@@ -1505,8 +1508,8 @@ static int __mce_read_apei(char __user **ubuf, size_t usize) | |||
1505 | return 0; | 1508 | return 0; |
1506 | } | 1509 | } |
1507 | 1510 | ||
1508 | static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | 1511 | static ssize_t mce_chrdev_read(struct file *filp, char __user *ubuf, |
1509 | loff_t *off) | 1512 | size_t usize, loff_t *off) |
1510 | { | 1513 | { |
1511 | char __user *buf = ubuf; | 1514 | char __user *buf = ubuf; |
1512 | unsigned long *cpu_tsc; | 1515 | unsigned long *cpu_tsc; |
@@ -1517,7 +1520,7 @@ static ssize_t mce_read(struct file *filp, char __user *ubuf, size_t usize, | |||
1517 | if (!cpu_tsc) | 1520 | if (!cpu_tsc) |
1518 | return -ENOMEM; | 1521 | return -ENOMEM; |
1519 | 1522 | ||
1520 | mutex_lock(&mce_read_mutex); | 1523 | mutex_lock(&mce_chrdev_read_mutex); |
1521 | 1524 | ||
1522 | if (!mce_apei_read_done) { | 1525 | if (!mce_apei_read_done) { |
1523 | err = __mce_read_apei(&buf, usize); | 1526 | err = __mce_read_apei(&buf, usize); |
@@ -1582,15 +1585,15 @@ timeout: | |||
1582 | err = -EFAULT; | 1585 | err = -EFAULT; |
1583 | 1586 | ||
1584 | out: | 1587 | out: |
1585 | mutex_unlock(&mce_read_mutex); | 1588 | mutex_unlock(&mce_chrdev_read_mutex); |
1586 | kfree(cpu_tsc); | 1589 | kfree(cpu_tsc); |
1587 | 1590 | ||
1588 | return err ? err : buf - ubuf; | 1591 | return err ? err : buf - ubuf; |
1589 | } | 1592 | } |
1590 | 1593 | ||
1591 | static unsigned int mce_poll(struct file *file, poll_table *wait) | 1594 | static unsigned int mce_chrdev_poll(struct file *file, poll_table *wait) |
1592 | { | 1595 | { |
1593 | poll_wait(file, &mce_wait, wait); | 1596 | poll_wait(file, &mce_chrdev_wait, wait); |
1594 | if (rcu_access_index(mcelog.next)) | 1597 | if (rcu_access_index(mcelog.next)) |
1595 | return POLLIN | POLLRDNORM; | 1598 | return POLLIN | POLLRDNORM; |
1596 | if (!mce_apei_read_done && apei_check_mce()) | 1599 | if (!mce_apei_read_done && apei_check_mce()) |
@@ -1598,7 +1601,8 @@ static unsigned int mce_poll(struct file *file, poll_table *wait) | |||
1598 | return 0; | 1601 | return 0; |
1599 | } | 1602 | } |
1600 | 1603 | ||
1601 | static long mce_ioctl(struct file *f, unsigned int cmd, unsigned long arg) | 1604 | static long mce_chrdev_ioctl(struct file *f, unsigned int cmd, |
1605 | unsigned long arg) | ||
1602 | { | 1606 | { |
1603 | int __user *p = (int __user *)arg; | 1607 | int __user *p = (int __user *)arg; |
1604 | 1608 | ||
@@ -1626,16 +1630,16 @@ static long mce_ioctl(struct file *f, unsigned int cmd, unsigned long arg) | |||
1626 | 1630 | ||
1627 | /* Modified in mce-inject.c, so not static or const */ | 1631 | /* Modified in mce-inject.c, so not static or const */ |
1628 | struct file_operations mce_chrdev_ops = { | 1632 | struct file_operations mce_chrdev_ops = { |
1629 | .open = mce_open, | 1633 | .open = mce_chrdev_open, |
1630 | .release = mce_release, | 1634 | .release = mce_chrdev_release, |
1631 | .read = mce_read, | 1635 | .read = mce_chrdev_read, |
1632 | .poll = mce_poll, | 1636 | .poll = mce_chrdev_poll, |
1633 | .unlocked_ioctl = mce_ioctl, | 1637 | .unlocked_ioctl = mce_chrdev_ioctl, |
1634 | .llseek = no_llseek, | 1638 | .llseek = no_llseek, |
1635 | }; | 1639 | }; |
1636 | EXPORT_SYMBOL_GPL(mce_chrdev_ops); | 1640 | EXPORT_SYMBOL_GPL(mce_chrdev_ops); |
1637 | 1641 | ||
1638 | static struct miscdevice mce_log_device = { | 1642 | static struct miscdevice mce_chrdev_device = { |
1639 | MISC_MCELOG_MINOR, | 1643 | MISC_MCELOG_MINOR, |
1640 | "mcelog", | 1644 | "mcelog", |
1641 | &mce_chrdev_ops, | 1645 | &mce_chrdev_ops, |
@@ -2107,11 +2111,12 @@ static __init int mcheck_init_device(void) | |||
2107 | 2111 | ||
2108 | register_syscore_ops(&mce_syscore_ops); | 2112 | register_syscore_ops(&mce_syscore_ops); |
2109 | register_hotcpu_notifier(&mce_cpu_notifier); | 2113 | register_hotcpu_notifier(&mce_cpu_notifier); |
2110 | misc_register(&mce_log_device); | 2114 | |
2115 | /* register character device /dev/mcelog */ | ||
2116 | misc_register(&mce_chrdev_device); | ||
2111 | 2117 | ||
2112 | return err; | 2118 | return err; |
2113 | } | 2119 | } |
2114 | |||
2115 | device_initcall(mcheck_init_device); | 2120 | device_initcall(mcheck_init_device); |
2116 | 2121 | ||
2117 | /* | 2122 | /* |