Merge branch 'driver-core-next' into Linux 3.2
This resolves the conflict in the arch/arm/mach-s3c64xx/s3c6400.c file, and it fixes the build error in the arch/x86/kernel/microcode_core.c file, that the merge did not catch. The microcode_core.c patch was provided by Stephen Rothwell <sfr@canb.auug.org.au> who was invaluable in the merge issues involved with the large sysdev removal process in the driver-core tree. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Copyright (C) 2007 David S. Miller <davem@davemloft.net>
|
||||
*/
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/percpu.h>
|
||||
@@ -16,13 +16,13 @@
|
||||
static DEFINE_PER_CPU(struct hv_mmu_statistics, mmu_stats) __attribute__((aligned(64)));
|
||||
|
||||
#define SHOW_MMUSTAT_ULONG(NAME) \
|
||||
static ssize_t show_##NAME(struct sys_device *dev, \
|
||||
struct sysdev_attribute *attr, char *buf) \
|
||||
static ssize_t show_##NAME(struct device *dev, \
|
||||
struct device_attribute *attr, char *buf) \
|
||||
{ \
|
||||
struct hv_mmu_statistics *p = &per_cpu(mmu_stats, dev->id); \
|
||||
return sprintf(buf, "%lu\n", p->NAME); \
|
||||
} \
|
||||
static SYSDEV_ATTR(NAME, 0444, show_##NAME, NULL)
|
||||
static DEVICE_ATTR(NAME, 0444, show_##NAME, NULL)
|
||||
|
||||
SHOW_MMUSTAT_ULONG(immu_tsb_hits_ctx0_8k_tte);
|
||||
SHOW_MMUSTAT_ULONG(immu_tsb_ticks_ctx0_8k_tte);
|
||||
@@ -58,38 +58,38 @@ SHOW_MMUSTAT_ULONG(dmmu_tsb_hits_ctxnon0_256mb_tte);
|
||||
SHOW_MMUSTAT_ULONG(dmmu_tsb_ticks_ctxnon0_256mb_tte);
|
||||
|
||||
static struct attribute *mmu_stat_attrs[] = {
|
||||
&attr_immu_tsb_hits_ctx0_8k_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctx0_8k_tte.attr,
|
||||
&attr_immu_tsb_hits_ctx0_64k_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctx0_64k_tte.attr,
|
||||
&attr_immu_tsb_hits_ctx0_4mb_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctx0_4mb_tte.attr,
|
||||
&attr_immu_tsb_hits_ctx0_256mb_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctx0_256mb_tte.attr,
|
||||
&attr_immu_tsb_hits_ctxnon0_8k_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctxnon0_8k_tte.attr,
|
||||
&attr_immu_tsb_hits_ctxnon0_64k_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctxnon0_64k_tte.attr,
|
||||
&attr_immu_tsb_hits_ctxnon0_4mb_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctxnon0_4mb_tte.attr,
|
||||
&attr_immu_tsb_hits_ctxnon0_256mb_tte.attr,
|
||||
&attr_immu_tsb_ticks_ctxnon0_256mb_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctx0_8k_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctx0_8k_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctx0_64k_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctx0_64k_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctx0_4mb_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctx0_4mb_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctx0_256mb_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctx0_256mb_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctxnon0_8k_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctxnon0_8k_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctxnon0_64k_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctxnon0_64k_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctxnon0_4mb_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctxnon0_4mb_tte.attr,
|
||||
&attr_dmmu_tsb_hits_ctxnon0_256mb_tte.attr,
|
||||
&attr_dmmu_tsb_ticks_ctxnon0_256mb_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctx0_8k_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctx0_8k_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctx0_64k_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctx0_64k_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctx0_4mb_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctx0_4mb_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctx0_256mb_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctx0_256mb_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctxnon0_8k_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctxnon0_8k_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctxnon0_64k_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctxnon0_64k_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctxnon0_4mb_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctxnon0_4mb_tte.attr,
|
||||
&dev_attr_immu_tsb_hits_ctxnon0_256mb_tte.attr,
|
||||
&dev_attr_immu_tsb_ticks_ctxnon0_256mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctx0_8k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctx0_8k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctx0_64k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctx0_64k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctx0_4mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctx0_4mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctx0_256mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctx0_256mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctxnon0_8k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctxnon0_8k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctxnon0_64k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctxnon0_64k_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctxnon0_4mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctxnon0_4mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_hits_ctxnon0_256mb_tte.attr,
|
||||
&dev_attr_dmmu_tsb_ticks_ctxnon0_256mb_tte.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
@@ -139,15 +139,15 @@ static unsigned long write_mmustat_enable(unsigned long val)
|
||||
return sun4v_mmustat_conf(ra, &orig_ra);
|
||||
}
|
||||
|
||||
static ssize_t show_mmustat_enable(struct sys_device *s,
|
||||
struct sysdev_attribute *attr, char *buf)
|
||||
static ssize_t show_mmustat_enable(struct device *s,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
unsigned long val = run_on_cpu(s->id, read_mmustat_enable, 0);
|
||||
return sprintf(buf, "%lx\n", val);
|
||||
}
|
||||
|
||||
static ssize_t store_mmustat_enable(struct sys_device *s,
|
||||
struct sysdev_attribute *attr, const char *buf,
|
||||
static ssize_t store_mmustat_enable(struct device *s,
|
||||
struct device_attribute *attr, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
unsigned long val, err;
|
||||
@@ -163,39 +163,39 @@ static ssize_t store_mmustat_enable(struct sys_device *s,
|
||||
return count;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(mmustat_enable, 0644, show_mmustat_enable, store_mmustat_enable);
|
||||
static DEVICE_ATTR(mmustat_enable, 0644, show_mmustat_enable, store_mmustat_enable);
|
||||
|
||||
static int mmu_stats_supported;
|
||||
|
||||
static int register_mmu_stats(struct sys_device *s)
|
||||
static int register_mmu_stats(struct device *s)
|
||||
{
|
||||
if (!mmu_stats_supported)
|
||||
return 0;
|
||||
sysdev_create_file(s, &attr_mmustat_enable);
|
||||
device_create_file(s, &dev_attr_mmustat_enable);
|
||||
return sysfs_create_group(&s->kobj, &mmu_stat_group);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
static void unregister_mmu_stats(struct sys_device *s)
|
||||
static void unregister_mmu_stats(struct device *s)
|
||||
{
|
||||
if (!mmu_stats_supported)
|
||||
return;
|
||||
sysfs_remove_group(&s->kobj, &mmu_stat_group);
|
||||
sysdev_remove_file(s, &attr_mmustat_enable);
|
||||
device_remove_file(s, &dev_attr_mmustat_enable);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define SHOW_CPUDATA_ULONG_NAME(NAME, MEMBER) \
|
||||
static ssize_t show_##NAME(struct sys_device *dev, \
|
||||
struct sysdev_attribute *attr, char *buf) \
|
||||
static ssize_t show_##NAME(struct device *dev, \
|
||||
struct device_attribute *attr, char *buf) \
|
||||
{ \
|
||||
cpuinfo_sparc *c = &cpu_data(dev->id); \
|
||||
return sprintf(buf, "%lu\n", c->MEMBER); \
|
||||
}
|
||||
|
||||
#define SHOW_CPUDATA_UINT_NAME(NAME, MEMBER) \
|
||||
static ssize_t show_##NAME(struct sys_device *dev, \
|
||||
struct sysdev_attribute *attr, char *buf) \
|
||||
static ssize_t show_##NAME(struct device *dev, \
|
||||
struct device_attribute *attr, char *buf) \
|
||||
{ \
|
||||
cpuinfo_sparc *c = &cpu_data(dev->id); \
|
||||
return sprintf(buf, "%u\n", c->MEMBER); \
|
||||
@@ -209,14 +209,14 @@ SHOW_CPUDATA_UINT_NAME(l1_icache_line_size, icache_line_size);
|
||||
SHOW_CPUDATA_UINT_NAME(l2_cache_size, ecache_size);
|
||||
SHOW_CPUDATA_UINT_NAME(l2_cache_line_size, ecache_line_size);
|
||||
|
||||
static struct sysdev_attribute cpu_core_attrs[] = {
|
||||
_SYSDEV_ATTR(clock_tick, 0444, show_clock_tick, NULL),
|
||||
_SYSDEV_ATTR(l1_dcache_size, 0444, show_l1_dcache_size, NULL),
|
||||
_SYSDEV_ATTR(l1_dcache_line_size, 0444, show_l1_dcache_line_size, NULL),
|
||||
_SYSDEV_ATTR(l1_icache_size, 0444, show_l1_icache_size, NULL),
|
||||
_SYSDEV_ATTR(l1_icache_line_size, 0444, show_l1_icache_line_size, NULL),
|
||||
_SYSDEV_ATTR(l2_cache_size, 0444, show_l2_cache_size, NULL),
|
||||
_SYSDEV_ATTR(l2_cache_line_size, 0444, show_l2_cache_line_size, NULL),
|
||||
static struct device_attribute cpu_core_attrs[] = {
|
||||
__ATTR(clock_tick, 0444, show_clock_tick, NULL),
|
||||
__ATTR(l1_dcache_size, 0444, show_l1_dcache_size, NULL),
|
||||
__ATTR(l1_dcache_line_size, 0444, show_l1_dcache_line_size, NULL),
|
||||
__ATTR(l1_icache_size, 0444, show_l1_icache_size, NULL),
|
||||
__ATTR(l1_icache_line_size, 0444, show_l1_icache_line_size, NULL),
|
||||
__ATTR(l2_cache_size, 0444, show_l2_cache_size, NULL),
|
||||
__ATTR(l2_cache_line_size, 0444, show_l2_cache_line_size, NULL),
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct cpu, cpu_devices);
|
||||
@@ -224,11 +224,11 @@ static DEFINE_PER_CPU(struct cpu, cpu_devices);
|
||||
static void register_cpu_online(unsigned int cpu)
|
||||
{
|
||||
struct cpu *c = &per_cpu(cpu_devices, cpu);
|
||||
struct sys_device *s = &c->sysdev;
|
||||
struct device *s = &c->dev;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(cpu_core_attrs); i++)
|
||||
sysdev_create_file(s, &cpu_core_attrs[i]);
|
||||
device_create_file(s, &cpu_core_attrs[i]);
|
||||
|
||||
register_mmu_stats(s);
|
||||
}
|
||||
@@ -237,12 +237,12 @@ static void register_cpu_online(unsigned int cpu)
|
||||
static void unregister_cpu_online(unsigned int cpu)
|
||||
{
|
||||
struct cpu *c = &per_cpu(cpu_devices, cpu);
|
||||
struct sys_device *s = &c->sysdev;
|
||||
struct device *s = &c->dev;
|
||||
int i;
|
||||
|
||||
unregister_mmu_stats(s);
|
||||
for (i = 0; i < ARRAY_SIZE(cpu_core_attrs); i++)
|
||||
sysdev_remove_file(s, &cpu_core_attrs[i]);
|
||||
device_remove_file(s, &cpu_core_attrs[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user