Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 257254
b: refs/heads/master
c: c7cece8
h: refs/heads/master
v: v3
  • Loading branch information
Hidetoshi Seto authored and Borislav Petkov committed Jun 16, 2011
1 parent c2ef0f3 commit 76cd945
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 36 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 93b62c3cf59d44850cbe9f04d58da08930e3fb0b
refs/heads/master: c7cece89f1b00b56276303942f96ec67cf206e1e
2 changes: 1 addition & 1 deletion trunk/arch/x86/include/asm/mce.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ static inline void enable_p5_mce(void) {}

void mce_setup(struct mce *m);
void mce_log(struct mce *m);
DECLARE_PER_CPU(struct sys_device, mce_dev);
DECLARE_PER_CPU(struct sys_device, mce_sysdev);

/*
* Maximum banks number.
Expand Down
62 changes: 33 additions & 29 deletions trunk/arch/x86/kernel/cpu/mcheck/mce.c
Original file line number Diff line number Diff line change
Expand Up @@ -1697,7 +1697,7 @@ int __init mcheck_init(void)
}

/*
* Sysfs support
* mce_syscore: PM support
*/

/*
Expand All @@ -1717,12 +1717,12 @@ static int mce_disable_error_reporting(void)
return 0;
}

static int mce_suspend(void)
static int mce_syscore_suspend(void)
{
return mce_disable_error_reporting();
}

static void mce_shutdown(void)
static void mce_syscore_shutdown(void)
{
mce_disable_error_reporting();
}
Expand All @@ -1732,18 +1732,22 @@ static void mce_shutdown(void)
* Only one CPU is active at this time, the others get re-added later using
* CPU hotplug:
*/
static void mce_resume(void)
static void mce_syscore_resume(void)
{
__mcheck_cpu_init_generic();
__mcheck_cpu_init_vendor(__this_cpu_ptr(&cpu_info));
}

static struct syscore_ops mce_syscore_ops = {
.suspend = mce_suspend,
.shutdown = mce_shutdown,
.resume = mce_resume,
.suspend = mce_syscore_suspend,
.shutdown = mce_syscore_shutdown,
.resume = mce_syscore_resume,
};

/*
* mce_sysdev: Sysfs support
*/

static void mce_cpu_restart(void *data)
{
del_timer_sync(&__get_cpu_var(mce_timer));
Expand Down Expand Up @@ -1779,11 +1783,11 @@ static void mce_enable_ce(void *all)
__mcheck_cpu_init_timer();
}

static struct sysdev_class mce_sysclass = {
static struct sysdev_class mce_sysdev_class = {
.name = "machinecheck",
};

DEFINE_PER_CPU(struct sys_device, mce_dev);
DEFINE_PER_CPU(struct sys_device, mce_sysdev);

__cpuinitdata
void (*threshold_cpu_callback)(unsigned long action, unsigned int cpu);
Expand Down Expand Up @@ -1912,7 +1916,7 @@ static struct sysdev_ext_attribute attr_cmci_disabled = {
&mce_cmci_disabled
};

static struct sysdev_attribute *mce_attrs[] = {
static struct sysdev_attribute *mce_sysdev_attrs[] = {
&attr_tolerant.attr,
&attr_check_interval.attr,
&attr_trigger,
Expand All @@ -1923,12 +1927,12 @@ static struct sysdev_attribute *mce_attrs[] = {
NULL
};

static cpumask_var_t mce_dev_initialized;
static cpumask_var_t mce_sysdev_initialized;

/* Per cpu sysdev init. All of the cpus still share the same ctrl bank: */
static __cpuinit int mce_create_device(unsigned int cpu)
static __cpuinit int mce_sysdev_create(unsigned int cpu)
{
struct sys_device *sysdev = &per_cpu(mce_dev, cpu);
struct sys_device *sysdev = &per_cpu(mce_sysdev, cpu);
int err;
int i, j;

Expand All @@ -1937,14 +1941,14 @@ static __cpuinit int mce_create_device(unsigned int cpu)

memset(&sysdev->kobj, 0, sizeof(struct kobject));
sysdev->id = cpu;
sysdev->cls = &mce_sysclass;
sysdev->cls = &mce_sysdev_class;

err = sysdev_register(sysdev);
if (err)
return err;

for (i = 0; mce_attrs[i]; i++) {
err = sysdev_create_file(sysdev, mce_attrs[i]);
for (i = 0; mce_sysdev_attrs[i]; i++) {
err = sysdev_create_file(sysdev, mce_sysdev_attrs[i]);
if (err)
goto error;
}
Expand All @@ -1953,37 +1957,37 @@ static __cpuinit int mce_create_device(unsigned int cpu)
if (err)
goto error2;
}
cpumask_set_cpu(cpu, mce_dev_initialized);
cpumask_set_cpu(cpu, mce_sysdev_initialized);

return 0;
error2:
while (--j >= 0)
sysdev_remove_file(sysdev, &mce_banks[j].attr);
error:
while (--i >= 0)
sysdev_remove_file(sysdev, mce_attrs[i]);
sysdev_remove_file(sysdev, mce_sysdev_attrs[i]);

sysdev_unregister(sysdev);

return err;
}

static __cpuinit void mce_remove_device(unsigned int cpu)
static __cpuinit void mce_sysdev_remove(unsigned int cpu)
{
struct sys_device *sysdev = &per_cpu(mce_dev, cpu);
struct sys_device *sysdev = &per_cpu(mce_sysdev, cpu);
int i;

if (!cpumask_test_cpu(cpu, mce_dev_initialized))
if (!cpumask_test_cpu(cpu, mce_sysdev_initialized))
return;

for (i = 0; mce_attrs[i]; i++)
sysdev_remove_file(sysdev, mce_attrs[i]);
for (i = 0; mce_sysdev_attrs[i]; i++)
sysdev_remove_file(sysdev, mce_sysdev_attrs[i]);

for (i = 0; i < banks; i++)
sysdev_remove_file(sysdev, &mce_banks[i].attr);

sysdev_unregister(sysdev);
cpumask_clear_cpu(cpu, mce_dev_initialized);
cpumask_clear_cpu(cpu, mce_sysdev_initialized);
}

/* Make sure there are no machine checks on offlined CPUs. */
Expand Down Expand Up @@ -2033,15 +2037,15 @@ mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
switch (action) {
case CPU_ONLINE:
case CPU_ONLINE_FROZEN:
mce_create_device(cpu);
mce_sysdev_create(cpu);
if (threshold_cpu_callback)
threshold_cpu_callback(action, cpu);
break;
case CPU_DEAD:
case CPU_DEAD_FROZEN:
if (threshold_cpu_callback)
threshold_cpu_callback(action, cpu);
mce_remove_device(cpu);
mce_sysdev_remove(cpu);
break;
case CPU_DOWN_PREPARE:
case CPU_DOWN_PREPARE_FROZEN:
Expand Down Expand Up @@ -2095,16 +2099,16 @@ static __init int mcheck_init_device(void)
if (!mce_available(&boot_cpu_data))
return -EIO;

zalloc_cpumask_var(&mce_dev_initialized, GFP_KERNEL);
zalloc_cpumask_var(&mce_sysdev_initialized, GFP_KERNEL);

mce_init_banks();

err = sysdev_class_register(&mce_sysclass);
err = sysdev_class_register(&mce_sysdev_class);
if (err)
return err;

for_each_online_cpu(i) {
err = mce_create_device(i);
err = mce_sysdev_create(i);
if (err)
return err;
}
Expand Down
10 changes: 5 additions & 5 deletions trunk/arch/x86/kernel/cpu/mcheck/mce_amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
if (!b)
goto out;

err = sysfs_create_link(&per_cpu(mce_dev, cpu).kobj,
err = sysfs_create_link(&per_cpu(mce_sysdev, cpu).kobj,
b->kobj, name);
if (err)
goto out;
Expand All @@ -571,7 +571,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
goto out;
}

b->kobj = kobject_create_and_add(name, &per_cpu(mce_dev, cpu).kobj);
b->kobj = kobject_create_and_add(name, &per_cpu(mce_sysdev, cpu).kobj);
if (!b->kobj)
goto out_free;

Expand All @@ -591,7 +591,7 @@ static __cpuinit int threshold_create_bank(unsigned int cpu, unsigned int bank)
if (i == cpu)
continue;

err = sysfs_create_link(&per_cpu(mce_dev, i).kobj,
err = sysfs_create_link(&per_cpu(mce_sysdev, i).kobj,
b->kobj, name);
if (err)
goto out;
Expand Down Expand Up @@ -669,7 +669,7 @@ static void threshold_remove_bank(unsigned int cpu, int bank)
#ifdef CONFIG_SMP
/* sibling symlink */
if (shared_bank[bank] && b->blocks->cpu != cpu) {
sysfs_remove_link(&per_cpu(mce_dev, cpu).kobj, name);
sysfs_remove_link(&per_cpu(mce_sysdev, cpu).kobj, name);
per_cpu(threshold_banks, cpu)[bank] = NULL;

return;
Expand All @@ -681,7 +681,7 @@ static void threshold_remove_bank(unsigned int cpu, int bank)
if (i == cpu)
continue;

sysfs_remove_link(&per_cpu(mce_dev, i).kobj, name);
sysfs_remove_link(&per_cpu(mce_sysdev, i).kobj, name);
per_cpu(threshold_banks, i)[bank] = NULL;
}

Expand Down

0 comments on commit 76cd945

Please sign in to comment.