mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
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:
@@ -6,11 +6,11 @@
|
||||
* Copyright (C) 2006, Timesys Corp., Thomas Gleixner <tglx@timesys.com>
|
||||
*
|
||||
*/
|
||||
#include <linux/device.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/freezer.h>
|
||||
|
||||
@@ -27,7 +27,7 @@ struct test_thread_data {
|
||||
int opdata;
|
||||
int mutexes[MAX_RT_TEST_MUTEXES];
|
||||
int event;
|
||||
struct sys_device sysdev;
|
||||
struct device dev;
|
||||
};
|
||||
|
||||
static struct test_thread_data thread_data[MAX_RT_TEST_THREADS];
|
||||
@@ -271,7 +271,7 @@ static int test_func(void *data)
|
||||
*
|
||||
* opcode:data
|
||||
*/
|
||||
static ssize_t sysfs_test_command(struct sys_device *dev, struct sysdev_attribute *attr,
|
||||
static ssize_t sysfs_test_command(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct sched_param schedpar;
|
||||
@@ -279,8 +279,8 @@ static ssize_t sysfs_test_command(struct sys_device *dev, struct sysdev_attribut
|
||||
char cmdbuf[32];
|
||||
int op, dat, tid, ret;
|
||||
|
||||
td = container_of(dev, struct test_thread_data, sysdev);
|
||||
tid = td->sysdev.id;
|
||||
td = container_of(dev, struct test_thread_data, dev);
|
||||
tid = td->dev.id;
|
||||
|
||||
/* strings from sysfs write are not 0 terminated! */
|
||||
if (count >= sizeof(cmdbuf))
|
||||
@@ -334,7 +334,7 @@ static ssize_t sysfs_test_command(struct sys_device *dev, struct sysdev_attribut
|
||||
* @dev: thread to query
|
||||
* @buf: char buffer to be filled with thread status info
|
||||
*/
|
||||
static ssize_t sysfs_test_status(struct sys_device *dev, struct sysdev_attribute *attr,
|
||||
static ssize_t sysfs_test_status(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct test_thread_data *td;
|
||||
@@ -342,8 +342,8 @@ static ssize_t sysfs_test_status(struct sys_device *dev, struct sysdev_attribute
|
||||
char *curr = buf;
|
||||
int i;
|
||||
|
||||
td = container_of(dev, struct test_thread_data, sysdev);
|
||||
tsk = threads[td->sysdev.id];
|
||||
td = container_of(dev, struct test_thread_data, dev);
|
||||
tsk = threads[td->dev.id];
|
||||
|
||||
spin_lock(&rttest_lock);
|
||||
|
||||
@@ -360,28 +360,29 @@ static ssize_t sysfs_test_status(struct sys_device *dev, struct sysdev_attribute
|
||||
spin_unlock(&rttest_lock);
|
||||
|
||||
curr += sprintf(curr, ", T: %p, R: %p\n", tsk,
|
||||
mutexes[td->sysdev.id].owner);
|
||||
mutexes[td->dev.id].owner);
|
||||
|
||||
return curr - buf;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(status, 0600, sysfs_test_status, NULL);
|
||||
static SYSDEV_ATTR(command, 0600, NULL, sysfs_test_command);
|
||||
static DEVICE_ATTR(status, 0600, sysfs_test_status, NULL);
|
||||
static DEVICE_ATTR(command, 0600, NULL, sysfs_test_command);
|
||||
|
||||
static struct sysdev_class rttest_sysclass = {
|
||||
static struct bus_type rttest_subsys = {
|
||||
.name = "rttest",
|
||||
.dev_name = "rttest",
|
||||
};
|
||||
|
||||
static int init_test_thread(int id)
|
||||
{
|
||||
thread_data[id].sysdev.cls = &rttest_sysclass;
|
||||
thread_data[id].sysdev.id = id;
|
||||
thread_data[id].dev.bus = &rttest_subsys;
|
||||
thread_data[id].dev.id = id;
|
||||
|
||||
threads[id] = kthread_run(test_func, &thread_data[id], "rt-test-%d", id);
|
||||
if (IS_ERR(threads[id]))
|
||||
return PTR_ERR(threads[id]);
|
||||
|
||||
return sysdev_register(&thread_data[id].sysdev);
|
||||
return device_register(&thread_data[id].dev);
|
||||
}
|
||||
|
||||
static int init_rttest(void)
|
||||
@@ -393,7 +394,7 @@ static int init_rttest(void)
|
||||
for (i = 0; i < MAX_RT_TEST_MUTEXES; i++)
|
||||
rt_mutex_init(&mutexes[i]);
|
||||
|
||||
ret = sysdev_class_register(&rttest_sysclass);
|
||||
ret = subsys_system_register(&rttest_subsys, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -401,10 +402,10 @@ static int init_rttest(void)
|
||||
ret = init_test_thread(i);
|
||||
if (ret)
|
||||
break;
|
||||
ret = sysdev_create_file(&thread_data[i].sysdev, &attr_status);
|
||||
ret = device_create_file(&thread_data[i].dev, &dev_attr_status);
|
||||
if (ret)
|
||||
break;
|
||||
ret = sysdev_create_file(&thread_data[i].sysdev, &attr_command);
|
||||
ret = device_create_file(&thread_data[i].dev, &dev_attr_command);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -7940,54 +7940,52 @@ static ssize_t sched_power_savings_store(const char *buf, size_t count, int smt)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SCHED_MC
|
||||
static ssize_t sched_mc_power_savings_show(struct sysdev_class *class,
|
||||
struct sysdev_class_attribute *attr,
|
||||
char *page)
|
||||
static ssize_t sched_mc_power_savings_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
return sprintf(page, "%u\n", sched_mc_power_savings);
|
||||
return sprintf(buf, "%u\n", sched_mc_power_savings);
|
||||
}
|
||||
static ssize_t sched_mc_power_savings_store(struct sysdev_class *class,
|
||||
struct sysdev_class_attribute *attr,
|
||||
static ssize_t sched_mc_power_savings_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
return sched_power_savings_store(buf, count, 0);
|
||||
}
|
||||
static SYSDEV_CLASS_ATTR(sched_mc_power_savings, 0644,
|
||||
sched_mc_power_savings_show,
|
||||
sched_mc_power_savings_store);
|
||||
static DEVICE_ATTR(sched_mc_power_savings, 0644,
|
||||
sched_mc_power_savings_show,
|
||||
sched_mc_power_savings_store);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHED_SMT
|
||||
static ssize_t sched_smt_power_savings_show(struct sysdev_class *dev,
|
||||
struct sysdev_class_attribute *attr,
|
||||
char *page)
|
||||
static ssize_t sched_smt_power_savings_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
return sprintf(page, "%u\n", sched_smt_power_savings);
|
||||
return sprintf(buf, "%u\n", sched_smt_power_savings);
|
||||
}
|
||||
static ssize_t sched_smt_power_savings_store(struct sysdev_class *dev,
|
||||
struct sysdev_class_attribute *attr,
|
||||
static ssize_t sched_smt_power_savings_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
return sched_power_savings_store(buf, count, 1);
|
||||
}
|
||||
static SYSDEV_CLASS_ATTR(sched_smt_power_savings, 0644,
|
||||
static DEVICE_ATTR(sched_smt_power_savings, 0644,
|
||||
sched_smt_power_savings_show,
|
||||
sched_smt_power_savings_store);
|
||||
#endif
|
||||
|
||||
int __init sched_create_sysfs_power_savings_entries(struct sysdev_class *cls)
|
||||
int __init sched_create_sysfs_power_savings_entries(struct device *dev)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
#ifdef CONFIG_SCHED_SMT
|
||||
if (smt_capable())
|
||||
err = sysfs_create_file(&cls->kset.kobj,
|
||||
&attr_sched_smt_power_savings.attr);
|
||||
err = device_create_file(dev, &dev_attr_sched_smt_power_savings);
|
||||
#endif
|
||||
#ifdef CONFIG_SCHED_MC
|
||||
if (!err && mc_capable())
|
||||
err = sysfs_create_file(&cls->kset.kobj,
|
||||
&attr_sched_mc_power_savings.attr);
|
||||
err = device_create_file(dev, &dev_attr_sched_mc_power_savings);
|
||||
#endif
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/notifier.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/sysdev.h>
|
||||
|
||||
#include "tick-internal.h"
|
||||
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
* o Allow clocksource drivers to be unregistered
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h> /* for spin_unlock_irq() using preempt_count() m68k */
|
||||
@@ -796,8 +796,8 @@ EXPORT_SYMBOL(clocksource_unregister);
|
||||
* Provides sysfs interface for listing current clocksource.
|
||||
*/
|
||||
static ssize_t
|
||||
sysfs_show_current_clocksources(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr, char *buf)
|
||||
sysfs_show_current_clocksources(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
ssize_t count = 0;
|
||||
|
||||
@@ -818,8 +818,8 @@ sysfs_show_current_clocksources(struct sys_device *dev,
|
||||
* Takes input from sysfs interface for manually overriding the default
|
||||
* clocksource selection.
|
||||
*/
|
||||
static ssize_t sysfs_override_clocksource(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr,
|
||||
static ssize_t sysfs_override_clocksource(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
size_t ret = count;
|
||||
@@ -853,8 +853,8 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev,
|
||||
* Provides sysfs interface for listing registered clocksources
|
||||
*/
|
||||
static ssize_t
|
||||
sysfs_show_available_clocksources(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr,
|
||||
sysfs_show_available_clocksources(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct clocksource *src;
|
||||
@@ -883,35 +883,36 @@ sysfs_show_available_clocksources(struct sys_device *dev,
|
||||
/*
|
||||
* Sysfs setup bits:
|
||||
*/
|
||||
static SYSDEV_ATTR(current_clocksource, 0644, sysfs_show_current_clocksources,
|
||||
static DEVICE_ATTR(current_clocksource, 0644, sysfs_show_current_clocksources,
|
||||
sysfs_override_clocksource);
|
||||
|
||||
static SYSDEV_ATTR(available_clocksource, 0444,
|
||||
static DEVICE_ATTR(available_clocksource, 0444,
|
||||
sysfs_show_available_clocksources, NULL);
|
||||
|
||||
static struct sysdev_class clocksource_sysclass = {
|
||||
static struct bus_type clocksource_subsys = {
|
||||
.name = "clocksource",
|
||||
.dev_name = "clocksource",
|
||||
};
|
||||
|
||||
static struct sys_device device_clocksource = {
|
||||
static struct device device_clocksource = {
|
||||
.id = 0,
|
||||
.cls = &clocksource_sysclass,
|
||||
.bus = &clocksource_subsys,
|
||||
};
|
||||
|
||||
static int __init init_clocksource_sysfs(void)
|
||||
{
|
||||
int error = sysdev_class_register(&clocksource_sysclass);
|
||||
int error = subsys_system_register(&clocksource_subsys, NULL);
|
||||
|
||||
if (!error)
|
||||
error = sysdev_register(&device_clocksource);
|
||||
error = device_register(&device_clocksource);
|
||||
if (!error)
|
||||
error = sysdev_create_file(
|
||||
error = device_create_file(
|
||||
&device_clocksource,
|
||||
&attr_current_clocksource);
|
||||
&dev_attr_current_clocksource);
|
||||
if (!error)
|
||||
error = sysdev_create_file(
|
||||
error = device_create_file(
|
||||
&device_clocksource,
|
||||
&attr_available_clocksource);
|
||||
&dev_attr_available_clocksource);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user