Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: drivers/acpi: elide a non-zero test on a result that is never 0 pnpacpi: reduce printk severity for "pnpacpi: exceeded the max number of ..." cpuidle: fix 100% C0 statistics regression cpuidle: fix cpuidle time and usage overflow ACPI: fix mis-merge -- invoke acpi_unlazy_tlb() only on C3 entry ACPI: fix a regression of ACPI device driver autoloading ACPI: SBS: remove typo from sbchc.c
This commit is contained in:
Коммит
c94b4321eb
|
@ -260,24 +260,22 @@ static int acpi_fan_add(struct acpi_device *device)
|
|||
result = PTR_ERR(cdev);
|
||||
goto end;
|
||||
}
|
||||
if (cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, cdev->id);
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, cdev->id);
|
||||
|
||||
acpi_driver_data(device) = cdev;
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
acpi_driver_data(device) = cdev;
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = sysfs_create_link(&cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
result = sysfs_create_link(&cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = acpi_fan_add_fs(device);
|
||||
if (result)
|
||||
|
|
|
@ -674,22 +674,20 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device)
|
|||
result = PTR_ERR(pr->cdev);
|
||||
goto end;
|
||||
}
|
||||
if (pr->cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, pr->cdev->id);
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, pr->cdev->id);
|
||||
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&pr->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
result = sysfs_create_link(&pr->cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&pr->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
result = sysfs_create_link(&pr->cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
if (pr->flags.throttling) {
|
||||
printk(KERN_INFO PREFIX "%s [%s] (supports",
|
||||
|
|
|
@ -1487,7 +1487,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
acpi_unlazy_tlb(smp_processor_id());
|
||||
/*
|
||||
* Must be done before busmaster disable as we might need to
|
||||
* access HPET !
|
||||
|
@ -1577,6 +1576,8 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
|
|||
return 0;
|
||||
}
|
||||
|
||||
acpi_unlazy_tlb(smp_processor_id());
|
||||
|
||||
/* Tell the scheduler that we are going deep-idle: */
|
||||
sched_clock_idle_sleep_event();
|
||||
/*
|
||||
|
@ -1692,7 +1693,9 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)
|
|||
switch (cx->type) {
|
||||
case ACPI_STATE_C1:
|
||||
state->flags |= CPUIDLE_FLAG_SHALLOW;
|
||||
state->flags |= CPUIDLE_FLAG_TIME_VALID;
|
||||
if (cx->entry_method == ACPI_CSTATE_FFH)
|
||||
state->flags |= CPUIDLE_FLAG_TIME_VALID;
|
||||
|
||||
state->enter = acpi_idle_enter_c1;
|
||||
dev->safe_state = state;
|
||||
break;
|
||||
|
|
|
@ -130,7 +130,6 @@ static int acpi_smbus_transaction(struct acpi_smb_hc *hc, u8 protocol,
|
|||
goto end;
|
||||
}
|
||||
smb_hc_write(hc, ACPI_SMB_COMMAND, command);
|
||||
smb_hc_write(hc, ACPI_SMB_COMMAND, command);
|
||||
if (!(protocol & 0x01)) {
|
||||
smb_hc_write(hc, ACPI_SMB_BLOCK_COUNT, length);
|
||||
for (i = 0; i < length; ++i)
|
||||
|
|
|
@ -39,20 +39,26 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
|
|||
int size)
|
||||
{
|
||||
int len;
|
||||
int count;
|
||||
|
||||
if (!acpi_dev->flags.hardware_id)
|
||||
if (!acpi_dev->flags.hardware_id && !acpi_dev->flags.compatible_ids)
|
||||
return -ENODEV;
|
||||
|
||||
len = snprintf(modalias, size, "acpi:%s:",
|
||||
acpi_dev->pnp.hardware_id);
|
||||
if (len < 0 || len >= size)
|
||||
return -EINVAL;
|
||||
len = snprintf(modalias, size, "acpi:");
|
||||
size -= len;
|
||||
|
||||
if (acpi_dev->flags.hardware_id) {
|
||||
count = snprintf(&modalias[len], size, "%s:",
|
||||
acpi_dev->pnp.hardware_id);
|
||||
if (count < 0 || count >= size)
|
||||
return -EINVAL;
|
||||
len += count;
|
||||
size -= count;
|
||||
}
|
||||
|
||||
if (acpi_dev->flags.compatible_ids) {
|
||||
struct acpi_compatible_id_list *cid_list;
|
||||
int i;
|
||||
int count;
|
||||
|
||||
cid_list = acpi_dev->pnp.cid_list;
|
||||
for (i = 0; i < cid_list->count; i++) {
|
||||
|
|
|
@ -734,21 +734,19 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
|
|||
if (IS_ERR(device->cdev))
|
||||
return;
|
||||
|
||||
if (device->cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev->dev.bus_id, device->cdev->id);
|
||||
result = sysfs_create_link(&device->dev->dev.kobj,
|
||||
&device->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
printk(KERN_ERR PREFIX "Create sysfs link\n");
|
||||
result = sysfs_create_link(&device->cdev->device.kobj,
|
||||
&device->dev->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
printk(KERN_ERR PREFIX "Create sysfs link\n");
|
||||
}
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev->dev.bus_id, device->cdev->id);
|
||||
result = sysfs_create_link(&device->dev->dev.kobj,
|
||||
&device->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
printk(KERN_ERR PREFIX "Create sysfs link\n");
|
||||
result = sysfs_create_link(&device->cdev->device.kobj,
|
||||
&device->dev->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
printk(KERN_ERR PREFIX "Create sysfs link\n");
|
||||
}
|
||||
if (device->cap._DCS && device->cap._DSS){
|
||||
static int count = 0;
|
||||
|
|
|
@ -67,7 +67,7 @@ static void cpuidle_idle_call(void)
|
|||
/* enter the state and update stats */
|
||||
dev->last_residency = target_state->enter(dev, target_state);
|
||||
dev->last_state = target_state;
|
||||
target_state->time += dev->last_residency;
|
||||
target_state->time += (unsigned long long)dev->last_residency;
|
||||
target_state->usage++;
|
||||
|
||||
/* give the governor an opportunity to reflect on the outcome */
|
||||
|
@ -224,7 +224,7 @@ static void poll_idle_init(struct cpuidle_device *dev)
|
|||
state->exit_latency = 0;
|
||||
state->target_residency = 0;
|
||||
state->power_usage = -1;
|
||||
state->flags = CPUIDLE_FLAG_POLL | CPUIDLE_FLAG_TIME_VALID;
|
||||
state->flags = CPUIDLE_FLAG_POLL;
|
||||
state->enter = poll_idle;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -218,6 +218,12 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \
|
|||
return sprintf(buf, "%u\n", state->_name);\
|
||||
}
|
||||
|
||||
#define define_show_state_ull_function(_name) \
|
||||
static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \
|
||||
{ \
|
||||
return sprintf(buf, "%llu\n", state->_name);\
|
||||
}
|
||||
|
||||
#define define_show_state_str_function(_name) \
|
||||
static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \
|
||||
{ \
|
||||
|
@ -228,8 +234,8 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \
|
|||
|
||||
define_show_state_function(exit_latency)
|
||||
define_show_state_function(power_usage)
|
||||
define_show_state_function(usage)
|
||||
define_show_state_function(time)
|
||||
define_show_state_ull_function(usage)
|
||||
define_show_state_ull_function(time)
|
||||
define_show_state_str_function(name)
|
||||
define_show_state_str_function(desc)
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_resource_table *res,
|
|||
i < PNP_MAX_IRQ)
|
||||
i++;
|
||||
if (i >= PNP_MAX_IRQ && !warned) {
|
||||
printk(KERN_ERR "pnpacpi: exceeded the max number of IRQ "
|
||||
printk(KERN_WARNING "pnpacpi: exceeded the max number of IRQ "
|
||||
"resources: %d \n", PNP_MAX_IRQ);
|
||||
warned = 1;
|
||||
return;
|
||||
|
@ -187,7 +187,7 @@ static void pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res,
|
|||
res->dma_resource[i].start = dma;
|
||||
res->dma_resource[i].end = dma;
|
||||
} else if (!warned) {
|
||||
printk(KERN_ERR "pnpacpi: exceeded the max number of DMA "
|
||||
printk(KERN_WARNING "pnpacpi: exceeded the max number of DMA "
|
||||
"resources: %d \n", PNP_MAX_DMA);
|
||||
warned = 1;
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ static void pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res,
|
|||
res->port_resource[i].start = io;
|
||||
res->port_resource[i].end = io + len - 1;
|
||||
} else if (!warned) {
|
||||
printk(KERN_ERR "pnpacpi: exceeded the max number of IO "
|
||||
printk(KERN_WARNING "pnpacpi: exceeded the max number of IO "
|
||||
"resources: %d \n", PNP_MAX_PORT);
|
||||
warned = 1;
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ static void pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res,
|
|||
res->mem_resource[i].start = mem;
|
||||
res->mem_resource[i].end = mem + len - 1;
|
||||
} else if (!warned) {
|
||||
printk(KERN_ERR "pnpacpi: exceeded the max number of mem "
|
||||
printk(KERN_WARNING "pnpacpi: exceeded the max number of mem "
|
||||
"resources: %d\n", PNP_MAX_MEM);
|
||||
warned = 1;
|
||||
}
|
||||
|
|
|
@ -38,8 +38,8 @@ struct cpuidle_state {
|
|||
unsigned int power_usage; /* in mW */
|
||||
unsigned int target_residency; /* in US */
|
||||
|
||||
unsigned int usage;
|
||||
unsigned int time; /* in US */
|
||||
unsigned long long usage;
|
||||
unsigned long long time; /* in US */
|
||||
|
||||
int (*enter) (struct cpuidle_device *dev,
|
||||
struct cpuidle_state *state);
|
||||
|
|
Загрузка…
Ссылка в новой задаче