Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91407
b: refs/heads/master
c: b844eba
h: refs/heads/master
i:
  91405: 96c2521
  91403: c413a7d
  91399: b4ea087
  91391: 168191d
v: v3
  • Loading branch information
Rafael J. Wysocki authored and Greg Kroah-Hartman committed Apr 20, 2008
1 parent eb739c3 commit 95216b5
Show file tree
Hide file tree
Showing 14 changed files with 23 additions and 147 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: 138fe4e069798d9aa948a5402ff15e58f483ee4e
refs/heads/master: b844eba292b477cda14582bfc6f535deed57a82d
4 changes: 1 addition & 3 deletions trunk/arch/x86/kernel/cpuid.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,10 @@ static int __cpuinit cpuid_class_cpu_callback(struct notifier_block *nfb,
err = cpuid_device_create(cpu);
break;
case CPU_UP_CANCELED:
case CPU_UP_CANCELED_FROZEN:
case CPU_DEAD:
cpuid_device_destroy(cpu);
break;
case CPU_UP_CANCELED_FROZEN:
destroy_suspended_device(cpuid_class, MKDEV(CPUID_MAJOR, cpu));
break;
}
return err ? NOTIFY_BAD : NOTIFY_OK;
}
Expand Down
4 changes: 1 addition & 3 deletions trunk/arch/x86/kernel/msr.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,10 @@ static int __cpuinit msr_class_cpu_callback(struct notifier_block *nfb,
err = msr_device_create(cpu);
break;
case CPU_UP_CANCELED:
case CPU_UP_CANCELED_FROZEN:
case CPU_DEAD:
msr_device_destroy(cpu);
break;
case CPU_UP_CANCELED_FROZEN:
destroy_suspended_device(msr_class, MKDEV(MSR_MAJOR, cpu));
break;
}
return err ? NOTIFY_BAD : NOTIFY_OK;
}
Expand Down
29 changes: 0 additions & 29 deletions trunk/drivers/base/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1163,35 +1163,6 @@ void device_destroy(struct class *class, dev_t devt)
}
EXPORT_SYMBOL_GPL(device_destroy);

#ifdef CONFIG_PM_SLEEP
/**
* destroy_suspended_device - asks the PM core to remove a suspended device
* @class: pointer to the struct class that this device was registered with
* @devt: the dev_t of the device that was previously registered
*
* This call notifies the PM core of the necessity to unregister a suspended
* device created with a call to device_create() (devices cannot be
* unregistered directly while suspended, since the PM core holds their
* semaphores at that time).
*
* It can only be called within the scope of a system sleep transition. In
* practice this means it has to be directly or indirectly invoked either by
* a suspend or resume method, or by the PM core (e.g. via
* disable_nonboot_cpus() or enable_nonboot_cpus()).
*/
void destroy_suspended_device(struct class *class, dev_t devt)
{
struct device *dev;

dev = class_find_device(class, &devt, __match_devt);
if (dev) {
device_pm_schedule_removal(dev);
put_device(dev);
}
}
EXPORT_SYMBOL_GPL(destroy_suspended_device);
#endif /* CONFIG_PM_SLEEP */

/**
* device_rename - renames a device
* @dev: the pointer to the struct device to be renamed
Expand Down
40 changes: 0 additions & 40 deletions trunk/drivers/base/power/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
LIST_HEAD(dpm_active);
static LIST_HEAD(dpm_off);
static LIST_HEAD(dpm_off_irq);
static LIST_HEAD(dpm_destroy);

static DEFINE_MUTEX(dpm_list_mtx);

Expand Down Expand Up @@ -104,24 +103,6 @@ void device_pm_remove(struct device *dev)
mutex_unlock(&dpm_list_mtx);
}

/**
* device_pm_schedule_removal - schedule the removal of a suspended device
* @dev: Device to destroy
*
* Moves the device to the dpm_destroy list for further processing by
* unregister_dropped_devices().
*/
void device_pm_schedule_removal(struct device *dev)
{
pr_debug("PM: Preparing for removal: %s:%s\n",
dev->bus ? dev->bus->name : "No Bus",
kobject_name(&dev->kobj));
mutex_lock(&dpm_list_mtx);
list_move_tail(&dev->power.entry, &dpm_destroy);
mutex_unlock(&dpm_list_mtx);
}
EXPORT_SYMBOL_GPL(device_pm_schedule_removal);

/*------------------------- Resume routines -------------------------*/

/**
Expand Down Expand Up @@ -245,26 +226,6 @@ static void dpm_resume(void)
mutex_unlock(&dpm_list_mtx);
}

/**
* unregister_dropped_devices - Unregister devices scheduled for removal
*
* Unregister all devices on the dpm_destroy list.
*/
static void unregister_dropped_devices(void)
{
mutex_lock(&dpm_list_mtx);
while (!list_empty(&dpm_destroy)) {
struct list_head *entry = dpm_destroy.next;
struct device *dev = to_device(entry);

mutex_unlock(&dpm_list_mtx);
/* This also removes the device from the list */
device_unregister(dev);
mutex_lock(&dpm_list_mtx);
}
mutex_unlock(&dpm_list_mtx);
}

/**
* device_resume - Restore state of each device in system.
*
Expand All @@ -275,7 +236,6 @@ void device_resume(void)
{
might_sleep();
dpm_resume();
unregister_dropped_devices();
}
EXPORT_SYMBOL_GPL(device_resume);

Expand Down
10 changes: 5 additions & 5 deletions trunk/drivers/char/hw_random/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -238,11 +238,11 @@ static DEVICE_ATTR(rng_available, S_IRUGO,
NULL);


static void unregister_miscdev(bool suspended)
static void unregister_miscdev(void)
{
device_remove_file(rng_miscdev.this_device, &dev_attr_rng_available);
device_remove_file(rng_miscdev.this_device, &dev_attr_rng_current);
__misc_deregister(&rng_miscdev, suspended);
misc_deregister(&rng_miscdev);
}

static int register_miscdev(void)
Expand Down Expand Up @@ -317,7 +317,7 @@ int hwrng_register(struct hwrng *rng)
}
EXPORT_SYMBOL_GPL(hwrng_register);

void __hwrng_unregister(struct hwrng *rng, bool suspended)
void hwrng_unregister(struct hwrng *rng)
{
int err;

Expand All @@ -336,11 +336,11 @@ void __hwrng_unregister(struct hwrng *rng, bool suspended)
}
}
if (list_empty(&rng_list))
unregister_miscdev(suspended);
unregister_miscdev();

mutex_unlock(&rng_mutex);
}
EXPORT_SYMBOL_GPL(__hwrng_unregister);
EXPORT_SYMBOL_GPL(hwrng_unregister);


MODULE_DESCRIPTION("H/W Random Number Generator (RNG) driver");
Expand Down
13 changes: 4 additions & 9 deletions trunk/drivers/char/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,17 +232,16 @@ int misc_register(struct miscdevice * misc)
}

/**
* __misc_deregister - unregister a miscellaneous device
* misc_deregister - unregister a miscellaneous device
* @misc: device to unregister
* @suspended: to be set if the function is used during suspend/resume
*
* Unregister a miscellaneous device that was previously
* successfully registered with misc_register(). Success
* is indicated by a zero return, a negative errno code
* indicates an error.
*/

int __misc_deregister(struct miscdevice *misc, bool suspended)
int misc_deregister(struct miscdevice *misc)
{
int i = misc->minor;

Expand All @@ -251,11 +250,7 @@ int __misc_deregister(struct miscdevice *misc, bool suspended)

mutex_lock(&misc_mtx);
list_del(&misc->list);
if (suspended)
destroy_suspended_device(misc_class,
MKDEV(MISC_MAJOR, misc->minor));
else
device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor));
device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor));
if (i < DYNAMIC_MINORS && i>0) {
misc_minors[i>>3] &= ~(1 << (misc->minor & 7));
}
Expand All @@ -264,7 +259,7 @@ int __misc_deregister(struct miscdevice *misc, bool suspended)
}

EXPORT_SYMBOL(misc_register);
EXPORT_SYMBOL(__misc_deregister);
EXPORT_SYMBOL(misc_deregister);

static int __init misc_init(void)
{
Expand Down
11 changes: 3 additions & 8 deletions trunk/drivers/leds/led-class.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,12 +139,10 @@ EXPORT_SYMBOL_GPL(led_classdev_register);
/**
* __led_classdev_unregister - unregisters a object of led_properties class.
* @led_cdev: the led device to unregister
* @suspended: indicates whether system-wide suspend or resume is in progress
*
* Unregisters a previously registered via led_classdev_register object.
*/
void __led_classdev_unregister(struct led_classdev *led_cdev,
bool suspended)
void led_classdev_unregister(struct led_classdev *led_cdev)
{
device_remove_file(led_cdev->dev, &dev_attr_brightness);
#ifdef CONFIG_LEDS_TRIGGERS
Expand All @@ -155,16 +153,13 @@ void __led_classdev_unregister(struct led_classdev *led_cdev,
up_write(&led_cdev->trigger_lock);
#endif

if (suspended)
device_pm_schedule_removal(led_cdev->dev);
else
device_unregister(led_cdev->dev);
device_unregister(led_cdev->dev);

down_write(&leds_list_lock);
list_del(&led_cdev->node);
up_write(&leds_list_lock);
}
EXPORT_SYMBOL_GPL(__led_classdev_unregister);
EXPORT_SYMBOL_GPL(led_classdev_unregister);

static int __init leds_init(void)
{
Expand Down
5 changes: 1 addition & 4 deletions trunk/drivers/net/wireless/b43/leds.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,7 @@ static void b43_unregister_led(struct b43_led *led)
{
if (!led->dev)
return;
if (led->dev->suspend_in_progress)
led_classdev_unregister_suspended(&led->led_dev);
else
led_classdev_unregister(&led->led_dev);
led_classdev_unregister(&led->led_dev);
b43_led_turn_off(led->dev, led->index, led->activelow);
led->dev = NULL;
}
Expand Down
8 changes: 4 additions & 4 deletions trunk/drivers/net/wireless/b43/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2804,10 +2804,10 @@ static int b43_rng_read(struct hwrng *rng, u32 * data)
return (sizeof(u16));
}

static void b43_rng_exit(struct b43_wl *wl, bool suspended)
static void b43_rng_exit(struct b43_wl *wl)
{
if (wl->rng_initialized)
__hwrng_unregister(&wl->rng, suspended);
hwrng_unregister(&wl->rng);
}

static int b43_rng_init(struct b43_wl *wl)
Expand Down Expand Up @@ -3824,7 +3824,7 @@ static void b43_wireless_core_exit(struct b43_wldev *dev)

if (!dev->suspend_in_progress) {
b43_leds_exit(dev);
b43_rng_exit(dev->wl, false);
b43_rng_exit(dev->wl);
}
b43_dma_free(dev);
b43_pio_free(dev);
Expand Down Expand Up @@ -4589,7 +4589,7 @@ static int b43_resume(struct ssb_device *dev)
err = b43_wireless_core_start(wldev);
if (err) {
b43_leds_exit(wldev);
b43_rng_exit(wldev->wl, true);
b43_rng_exit(wldev->wl);
b43_wireless_core_exit(wldev);
b43err(wl, "Resume failed at core start\n");
goto out;
Expand Down
14 changes: 0 additions & 14 deletions trunk/include/linux/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -545,20 +545,6 @@ extern struct device *device_create(struct class *cls, struct device *parent,
dev_t devt, const char *fmt, ...)
__attribute__((format(printf, 4, 5)));
extern void device_destroy(struct class *cls, dev_t devt);
#ifdef CONFIG_PM_SLEEP
extern void destroy_suspended_device(struct class *cls, dev_t devt);
extern void device_pm_schedule_removal(struct device *);
#else /* !CONFIG_PM_SLEEP */
static inline void destroy_suspended_device(struct class *cls, dev_t devt)
{
device_destroy(cls, devt);
}

static inline void device_pm_schedule_removal(struct device *dev)
{
device_unregister(dev);
}
#endif /* !CONFIG_PM_SLEEP */

/*
* Platform "fixup" functions - allow the platform to have their say
Expand Down
10 changes: 1 addition & 9 deletions trunk/include/linux/hw_random.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,7 @@ struct hwrng {
/** Register a new Hardware Random Number Generator driver. */
extern int hwrng_register(struct hwrng *rng);
/** Unregister a Hardware Random Number Generator driver. */
extern void __hwrng_unregister(struct hwrng *rng, bool suspended);
static inline void hwrng_unregister(struct hwrng *rng)
{
__hwrng_unregister(rng, false);
}
static inline void hwrng_unregister_suspended(struct hwrng *rng)
{
__hwrng_unregister(rng, true);
}
extern void hwrng_unregister(struct hwrng *rng);

#endif /* __KERNEL__ */
#endif /* LINUX_HWRANDOM_H_ */
10 changes: 1 addition & 9 deletions trunk/include/linux/leds.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,7 @@ struct led_classdev {

extern int led_classdev_register(struct device *parent,
struct led_classdev *led_cdev);
extern void __led_classdev_unregister(struct led_classdev *led_cdev, bool sus);
static inline void led_classdev_unregister(struct led_classdev *lcd)
{
__led_classdev_unregister(lcd, false);
}
static inline void led_classdev_unregister_suspended(struct led_classdev *lcd)
{
__led_classdev_unregister(lcd, true);
}
extern void led_classdev_unregister(struct led_classdev *lcd);
extern void led_classdev_suspend(struct led_classdev *led_cdev);
extern void led_classdev_resume(struct led_classdev *led_cdev);

Expand Down
10 changes: 1 addition & 9 deletions trunk/include/linux/miscdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,7 @@ struct miscdevice {
};

extern int misc_register(struct miscdevice * misc);
extern int __misc_deregister(struct miscdevice *misc, bool suspended);
static inline int misc_deregister(struct miscdevice *misc)
{
return __misc_deregister(misc, false);
}
static inline int misc_deregister_suspended(struct miscdevice *misc)
{
return __misc_deregister(misc, true);
}
extern int misc_deregister(struct miscdevice *misc);

#define MODULE_ALIAS_MISCDEV(minor) \
MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \
Expand Down

0 comments on commit 95216b5

Please sign in to comment.