Merge branch 'linus' into release
Conflicts: arch/x86/kernel/cpu/cpufreq/longhaul.c Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
@@ -191,7 +191,6 @@ static int acpi_ac_add_fs(struct acpi_device *device)
|
||||
acpi_ac_dir);
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
/* 'state' [R] */
|
||||
|
@@ -363,7 +363,7 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_get_table
|
||||
* FUNCTION: acpi_get_table_with_size
|
||||
*
|
||||
* PARAMETERS: Signature - ACPI signature of needed table
|
||||
* Instance - Which instance (for SSDTs)
|
||||
@@ -375,8 +375,9 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id)
|
||||
*
|
||||
******************************************************************************/
|
||||
acpi_status
|
||||
acpi_get_table(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table)
|
||||
acpi_get_table_with_size(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table,
|
||||
acpi_size *tbl_size)
|
||||
{
|
||||
u32 i;
|
||||
u32 j;
|
||||
@@ -405,6 +406,7 @@ acpi_get_table(char *signature,
|
||||
acpi_tb_verify_table(&acpi_gbl_root_table_list.tables[i]);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
*out_table = acpi_gbl_root_table_list.tables[i].pointer;
|
||||
*tbl_size = acpi_gbl_root_table_list.tables[i].length;
|
||||
}
|
||||
|
||||
if (!acpi_gbl_permanent_mmap) {
|
||||
@@ -417,6 +419,15 @@ acpi_get_table(char *signature,
|
||||
return (AE_NOT_FOUND);
|
||||
}
|
||||
|
||||
acpi_status
|
||||
acpi_get_table(char *signature,
|
||||
u32 instance, struct acpi_table_header **out_table)
|
||||
{
|
||||
acpi_size tbl_size;
|
||||
|
||||
return acpi_get_table_with_size(signature,
|
||||
instance, out_table, &tbl_size);
|
||||
}
|
||||
ACPI_EXPORT_SYMBOL(acpi_get_table)
|
||||
|
||||
/*******************************************************************************
|
||||
|
@@ -763,7 +763,6 @@ static int acpi_battery_add_fs(struct acpi_device *device)
|
||||
acpi_battery_dir);
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) {
|
||||
|
@@ -200,12 +200,10 @@ static int acpi_button_add_fs(struct acpi_device *device)
|
||||
|
||||
if (!entry)
|
||||
return -ENODEV;
|
||||
entry->owner = THIS_MODULE;
|
||||
|
||||
acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), entry);
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
|
||||
/* 'info' [R] */
|
||||
entry = proc_create_data(ACPI_BUTTON_FILE_INFO,
|
||||
@@ -522,7 +520,6 @@ static int __init acpi_button_init(void)
|
||||
acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir);
|
||||
if (!acpi_button_dir)
|
||||
return -ENODEV;
|
||||
acpi_button_dir->owner = THIS_MODULE;
|
||||
result = acpi_bus_register_driver(&acpi_button_driver);
|
||||
if (result < 0) {
|
||||
remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir);
|
||||
|
@@ -977,7 +977,7 @@ static int dock_add(acpi_handle handle)
|
||||
sizeof(struct dock_station *));
|
||||
|
||||
/* we want the dock device to send uevents */
|
||||
dock_device->dev.uevent_suppress = 0;
|
||||
dev_set_uevent_suppress(&dock_device->dev, 0);
|
||||
|
||||
if (is_dock(handle))
|
||||
dock_station->flags |= DOCK_IS_DOCK;
|
||||
|
@@ -235,11 +235,7 @@ int acpi_bus_generate_netlink_event(const char *device_class,
|
||||
return result;
|
||||
}
|
||||
|
||||
result =
|
||||
genlmsg_multicast(skb, 0, acpi_event_mcgrp.id, GFP_ATOMIC);
|
||||
if (result)
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Failed to send a Genetlink message!\n"));
|
||||
genlmsg_multicast(skb, 0, acpi_event_mcgrp.id, GFP_ATOMIC);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -197,7 +197,6 @@ static int acpi_fan_add_fs(struct acpi_device *device)
|
||||
acpi_fan_dir);
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
/* 'status' [R/W] */
|
||||
@@ -351,7 +350,6 @@ static int __init acpi_fan_init(void)
|
||||
acpi_fan_dir = proc_mkdir(ACPI_FAN_CLASS, acpi_root_dir);
|
||||
if (!acpi_fan_dir)
|
||||
return -ENODEV;
|
||||
acpi_fan_dir->owner = THIS_MODULE;
|
||||
#endif
|
||||
|
||||
result = acpi_bus_register_driver(&acpi_fan_driver);
|
||||
|
@@ -272,14 +272,21 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_os_map_memory);
|
||||
|
||||
void acpi_os_unmap_memory(void __iomem * virt, acpi_size size)
|
||||
void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
|
||||
{
|
||||
if (acpi_gbl_permanent_mmap) {
|
||||
if (acpi_gbl_permanent_mmap)
|
||||
iounmap(virt);
|
||||
}
|
||||
else
|
||||
__acpi_unmap_table(virt, size);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
|
||||
|
||||
void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
|
||||
{
|
||||
if (!acpi_gbl_permanent_mmap)
|
||||
__acpi_unmap_table(virt, size);
|
||||
}
|
||||
|
||||
#ifdef ACPI_FUTURE_USAGE
|
||||
acpi_status
|
||||
acpi_os_get_physical_address(void *virt, acpi_physical_address * phys)
|
||||
|
@@ -66,11 +66,18 @@ struct acpi_pci_root {
|
||||
struct acpi_device * device;
|
||||
struct acpi_pci_id id;
|
||||
struct pci_bus *bus;
|
||||
|
||||
u32 osc_support_set; /* _OSC state of support bits */
|
||||
u32 osc_control_set; /* _OSC state of control bits */
|
||||
u32 osc_control_qry; /* the latest _OSC query result */
|
||||
|
||||
u32 osc_queried:1; /* has _OSC control been queried? */
|
||||
};
|
||||
|
||||
static LIST_HEAD(acpi_pci_roots);
|
||||
|
||||
static struct acpi_pci_driver *sub_driver;
|
||||
static DEFINE_MUTEX(osc_lock);
|
||||
|
||||
int acpi_pci_register_driver(struct acpi_pci_driver *driver)
|
||||
{
|
||||
@@ -185,6 +192,175 @@ static void acpi_pci_bridge_scan(struct acpi_device *device)
|
||||
}
|
||||
}
|
||||
|
||||
static u8 OSC_UUID[16] = {0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40,
|
||||
0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66};
|
||||
|
||||
static acpi_status acpi_pci_run_osc(acpi_handle handle,
|
||||
const u32 *capbuf, u32 *retval)
|
||||
{
|
||||
acpi_status status;
|
||||
struct acpi_object_list input;
|
||||
union acpi_object in_params[4];
|
||||
struct acpi_buffer output = {ACPI_ALLOCATE_BUFFER, NULL};
|
||||
union acpi_object *out_obj;
|
||||
u32 errors;
|
||||
|
||||
/* Setting up input parameters */
|
||||
input.count = 4;
|
||||
input.pointer = in_params;
|
||||
in_params[0].type = ACPI_TYPE_BUFFER;
|
||||
in_params[0].buffer.length = 16;
|
||||
in_params[0].buffer.pointer = OSC_UUID;
|
||||
in_params[1].type = ACPI_TYPE_INTEGER;
|
||||
in_params[1].integer.value = 1;
|
||||
in_params[2].type = ACPI_TYPE_INTEGER;
|
||||
in_params[2].integer.value = 3;
|
||||
in_params[3].type = ACPI_TYPE_BUFFER;
|
||||
in_params[3].buffer.length = 12;
|
||||
in_params[3].buffer.pointer = (u8 *)capbuf;
|
||||
|
||||
status = acpi_evaluate_object(handle, "_OSC", &input, &output);
|
||||
if (ACPI_FAILURE(status))
|
||||
return status;
|
||||
|
||||
if (!output.length)
|
||||
return AE_NULL_OBJECT;
|
||||
|
||||
out_obj = output.pointer;
|
||||
if (out_obj->type != ACPI_TYPE_BUFFER) {
|
||||
printk(KERN_DEBUG "_OSC evaluation returned wrong type\n");
|
||||
status = AE_TYPE;
|
||||
goto out_kfree;
|
||||
}
|
||||
/* Need to ignore the bit0 in result code */
|
||||
errors = *((u32 *)out_obj->buffer.pointer) & ~(1 << 0);
|
||||
if (errors) {
|
||||
if (errors & OSC_REQUEST_ERROR)
|
||||
printk(KERN_DEBUG "_OSC request failed\n");
|
||||
if (errors & OSC_INVALID_UUID_ERROR)
|
||||
printk(KERN_DEBUG "_OSC invalid UUID\n");
|
||||
if (errors & OSC_INVALID_REVISION_ERROR)
|
||||
printk(KERN_DEBUG "_OSC invalid revision\n");
|
||||
if (errors & OSC_CAPABILITIES_MASK_ERROR) {
|
||||
if (capbuf[OSC_QUERY_TYPE] & OSC_QUERY_ENABLE)
|
||||
goto out_success;
|
||||
printk(KERN_DEBUG
|
||||
"Firmware did not grant requested _OSC control\n");
|
||||
status = AE_SUPPORT;
|
||||
goto out_kfree;
|
||||
}
|
||||
status = AE_ERROR;
|
||||
goto out_kfree;
|
||||
}
|
||||
out_success:
|
||||
*retval = *((u32 *)(out_obj->buffer.pointer + 8));
|
||||
status = AE_OK;
|
||||
|
||||
out_kfree:
|
||||
kfree(output.pointer);
|
||||
return status;
|
||||
}
|
||||
|
||||
static acpi_status acpi_pci_query_osc(struct acpi_pci_root *root, u32 flags)
|
||||
{
|
||||
acpi_status status;
|
||||
u32 support_set, result, capbuf[3];
|
||||
|
||||
/* do _OSC query for all possible controls */
|
||||
support_set = root->osc_support_set | (flags & OSC_SUPPORT_MASKS);
|
||||
capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE;
|
||||
capbuf[OSC_SUPPORT_TYPE] = support_set;
|
||||
capbuf[OSC_CONTROL_TYPE] = OSC_CONTROL_MASKS;
|
||||
|
||||
status = acpi_pci_run_osc(root->device->handle, capbuf, &result);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
root->osc_support_set = support_set;
|
||||
root->osc_control_qry = result;
|
||||
root->osc_queried = 1;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
static acpi_status acpi_pci_osc_support(struct acpi_pci_root *root, u32 flags)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_handle tmp;
|
||||
|
||||
status = acpi_get_handle(root->device->handle, "_OSC", &tmp);
|
||||
if (ACPI_FAILURE(status))
|
||||
return status;
|
||||
mutex_lock(&osc_lock);
|
||||
status = acpi_pci_query_osc(root, flags);
|
||||
mutex_unlock(&osc_lock);
|
||||
return status;
|
||||
}
|
||||
|
||||
static struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle)
|
||||
{
|
||||
struct acpi_pci_root *root;
|
||||
list_for_each_entry(root, &acpi_pci_roots, node) {
|
||||
if (root->device->handle == handle)
|
||||
return root;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_pci_osc_control_set - commit requested control to Firmware
|
||||
* @handle: acpi_handle for the target ACPI object
|
||||
* @flags: driver's requested control bits
|
||||
*
|
||||
* Attempt to take control from Firmware on requested control bits.
|
||||
**/
|
||||
acpi_status acpi_pci_osc_control_set(acpi_handle handle, u32 flags)
|
||||
{
|
||||
acpi_status status;
|
||||
u32 control_req, result, capbuf[3];
|
||||
acpi_handle tmp;
|
||||
struct acpi_pci_root *root;
|
||||
|
||||
status = acpi_get_handle(handle, "_OSC", &tmp);
|
||||
if (ACPI_FAILURE(status))
|
||||
return status;
|
||||
|
||||
control_req = (flags & OSC_CONTROL_MASKS);
|
||||
if (!control_req)
|
||||
return AE_TYPE;
|
||||
|
||||
root = acpi_pci_find_root(handle);
|
||||
if (!root)
|
||||
return AE_NOT_EXIST;
|
||||
|
||||
mutex_lock(&osc_lock);
|
||||
/* No need to evaluate _OSC if the control was already granted. */
|
||||
if ((root->osc_control_set & control_req) == control_req)
|
||||
goto out;
|
||||
|
||||
/* Need to query controls first before requesting them */
|
||||
if (!root->osc_queried) {
|
||||
status = acpi_pci_query_osc(root, root->osc_support_set);
|
||||
if (ACPI_FAILURE(status))
|
||||
goto out;
|
||||
}
|
||||
if ((root->osc_control_qry & control_req) != control_req) {
|
||||
printk(KERN_DEBUG
|
||||
"Firmware did not grant requested _OSC control\n");
|
||||
status = AE_SUPPORT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
capbuf[OSC_QUERY_TYPE] = 0;
|
||||
capbuf[OSC_SUPPORT_TYPE] = root->osc_support_set;
|
||||
capbuf[OSC_CONTROL_TYPE] = root->osc_control_set | control_req;
|
||||
status = acpi_pci_run_osc(handle, capbuf, &result);
|
||||
if (ACPI_SUCCESS(status))
|
||||
root->osc_control_set = result;
|
||||
out:
|
||||
mutex_unlock(&osc_lock);
|
||||
return status;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_pci_osc_control_set);
|
||||
|
||||
static int __devinit acpi_pci_root_add(struct acpi_device *device)
|
||||
{
|
||||
int result = 0;
|
||||
@@ -217,7 +393,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
|
||||
* PCI domains, so we indicate this in _OSC support capabilities.
|
||||
*/
|
||||
flags = base_flags = OSC_PCI_SEGMENT_GROUPS_SUPPORT;
|
||||
pci_acpi_osc_support(device->handle, flags);
|
||||
acpi_pci_osc_support(root, flags);
|
||||
|
||||
/*
|
||||
* Segment
|
||||
@@ -353,7 +529,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device)
|
||||
if (pci_msi_enabled())
|
||||
flags |= OSC_MSI_SUPPORT;
|
||||
if (flags != base_flags)
|
||||
pci_acpi_osc_support(device->handle, flags);
|
||||
acpi_pci_osc_support(root, flags);
|
||||
|
||||
end:
|
||||
if (result) {
|
||||
|
@@ -359,7 +359,6 @@ static int acpi_processor_add_fs(struct acpi_device *device)
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
}
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
|
||||
/* 'info' [R] */
|
||||
entry = proc_create_data(ACPI_PROCESSOR_FILE_INFO,
|
||||
@@ -1163,7 +1162,6 @@ static int __init acpi_processor_init(void)
|
||||
acpi_processor_dir = proc_mkdir(ACPI_PROCESSOR_CLASS, acpi_root_dir);
|
||||
if (!acpi_processor_dir)
|
||||
return -ENOMEM;
|
||||
acpi_processor_dir->owner = THIS_MODULE;
|
||||
|
||||
/*
|
||||
* Check whether the system is DMI table. If yes, OSPM
|
||||
|
@@ -524,7 +524,7 @@ int acpi_processor_preregister_performance(
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
if (!performance || !percpu_ptr(performance, i)) {
|
||||
if (!performance || !per_cpu_ptr(performance, i)) {
|
||||
retval = -EINVAL;
|
||||
goto err_out;
|
||||
}
|
||||
@@ -536,7 +536,7 @@ int acpi_processor_preregister_performance(
|
||||
if (!pr)
|
||||
continue;
|
||||
|
||||
pr->performance = percpu_ptr(performance, i);
|
||||
pr->performance = per_cpu_ptr(performance, i);
|
||||
cpumask_set_cpu(i, pr->performance->shared_cpu_map);
|
||||
if (acpi_processor_get_psd(pr)) {
|
||||
retval = -EINVAL;
|
||||
|
@@ -493,7 +493,6 @@ acpi_sbs_add_fs(struct proc_dir_entry **dir,
|
||||
if (!*dir) {
|
||||
return -ENODEV;
|
||||
}
|
||||
(*dir)->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
/* 'info' [R] */
|
||||
|
@@ -211,14 +211,15 @@ acpi_table_parse_entries(char *id,
|
||||
struct acpi_subtable_header *entry;
|
||||
unsigned int count = 0;
|
||||
unsigned long table_end;
|
||||
acpi_size tbl_size;
|
||||
|
||||
if (!handler)
|
||||
return -EINVAL;
|
||||
|
||||
if (strncmp(id, ACPI_SIG_MADT, 4) == 0)
|
||||
acpi_get_table(id, acpi_apic_instance, &table_header);
|
||||
acpi_get_table_with_size(id, acpi_apic_instance, &table_header, &tbl_size);
|
||||
else
|
||||
acpi_get_table(id, 0, &table_header);
|
||||
acpi_get_table_with_size(id, 0, &table_header, &tbl_size);
|
||||
|
||||
if (!table_header) {
|
||||
printk(KERN_WARNING PREFIX "%4.4s not present\n", id);
|
||||
@@ -236,8 +237,10 @@ acpi_table_parse_entries(char *id,
|
||||
table_end) {
|
||||
if (entry->type == entry_id
|
||||
&& (!max_entries || count++ < max_entries))
|
||||
if (handler(entry, table_end))
|
||||
if (handler(entry, table_end)) {
|
||||
early_acpi_os_unmap_memory((char *)table_header, tbl_size);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
entry = (struct acpi_subtable_header *)
|
||||
((unsigned long)entry + entry->length);
|
||||
@@ -247,6 +250,7 @@ acpi_table_parse_entries(char *id,
|
||||
"%i found\n", id, entry_id, count - max_entries, count);
|
||||
}
|
||||
|
||||
early_acpi_os_unmap_memory((char *)table_header, tbl_size);
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -271,17 +275,19 @@ acpi_table_parse_madt(enum acpi_madt_type id,
|
||||
int __init acpi_table_parse(char *id, acpi_table_handler handler)
|
||||
{
|
||||
struct acpi_table_header *table = NULL;
|
||||
acpi_size tbl_size;
|
||||
|
||||
if (!handler)
|
||||
return -EINVAL;
|
||||
|
||||
if (strncmp(id, ACPI_SIG_MADT, 4) == 0)
|
||||
acpi_get_table(id, acpi_apic_instance, &table);
|
||||
acpi_get_table_with_size(id, acpi_apic_instance, &table, &tbl_size);
|
||||
else
|
||||
acpi_get_table(id, 0, &table);
|
||||
acpi_get_table_with_size(id, 0, &table, &tbl_size);
|
||||
|
||||
if (table) {
|
||||
handler(table);
|
||||
early_acpi_os_unmap_memory(table, tbl_size);
|
||||
return 0;
|
||||
} else
|
||||
return 1;
|
||||
@@ -295,8 +301,9 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler)
|
||||
static void __init check_multiple_madt(void)
|
||||
{
|
||||
struct acpi_table_header *table = NULL;
|
||||
acpi_size tbl_size;
|
||||
|
||||
acpi_get_table(ACPI_SIG_MADT, 2, &table);
|
||||
acpi_get_table_with_size(ACPI_SIG_MADT, 2, &table, &tbl_size);
|
||||
if (table) {
|
||||
printk(KERN_WARNING PREFIX
|
||||
"BIOS bug: multiple APIC/MADT found,"
|
||||
@@ -305,6 +312,7 @@ static void __init check_multiple_madt(void)
|
||||
"If \"acpi_apic_instance=%d\" works better, "
|
||||
"notify linux-acpi@vger.kernel.org\n",
|
||||
acpi_apic_instance ? 0 : 2);
|
||||
early_acpi_os_unmap_memory(table, tbl_size);
|
||||
|
||||
} else
|
||||
acpi_apic_instance = 0;
|
||||
|
@@ -371,7 +371,7 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
||||
/*
|
||||
* Treat freezing temperatures as invalid as well; some
|
||||
* BIOSes return really low values and cause reboots at startup.
|
||||
* Below zero (Celcius) values clearly aren't right for sure..
|
||||
* Below zero (Celsius) values clearly aren't right for sure..
|
||||
* ... so lets discard those as invalid.
|
||||
*/
|
||||
if (ACPI_FAILURE(status) ||
|
||||
@@ -1192,7 +1192,6 @@ static int acpi_thermal_add_fs(struct acpi_device *device)
|
||||
acpi_thermal_dir);
|
||||
if (!acpi_device_dir(device))
|
||||
return -ENODEV;
|
||||
acpi_device_dir(device)->owner = THIS_MODULE;
|
||||
}
|
||||
|
||||
/* 'state' [R] */
|
||||
@@ -1534,7 +1533,6 @@ static int __init acpi_thermal_init(void)
|
||||
acpi_thermal_dir = proc_mkdir(ACPI_THERMAL_CLASS, acpi_root_dir);
|
||||
if (!acpi_thermal_dir)
|
||||
return -ENODEV;
|
||||
acpi_thermal_dir->owner = THIS_MODULE;
|
||||
|
||||
result = acpi_bus_register_driver(&acpi_thermal_driver);
|
||||
if (result < 0) {
|
||||
|
@@ -1256,8 +1256,6 @@ static int acpi_video_device_add_fs(struct acpi_device *device)
|
||||
if (!device_dir)
|
||||
return -ENOMEM;
|
||||
|
||||
device_dir->owner = THIS_MODULE;
|
||||
|
||||
/* 'info' [R] */
|
||||
entry = proc_create_data("info", S_IRUGO, device_dir,
|
||||
&acpi_video_device_info_fops, acpi_driver_data(device));
|
||||
@@ -1531,8 +1529,6 @@ static int acpi_video_bus_add_fs(struct acpi_device *device)
|
||||
if (!device_dir)
|
||||
return -ENOMEM;
|
||||
|
||||
device_dir->owner = THIS_MODULE;
|
||||
|
||||
/* 'info' [R] */
|
||||
entry = proc_create_data("info", S_IRUGO, device_dir,
|
||||
&acpi_video_bus_info_fops,
|
||||
@@ -2291,7 +2287,6 @@ int acpi_video_register(void)
|
||||
acpi_video_dir = proc_mkdir(ACPI_VIDEO_CLASS, acpi_root_dir);
|
||||
if (!acpi_video_dir)
|
||||
return -ENODEV;
|
||||
acpi_video_dir->owner = THIS_MODULE;
|
||||
|
||||
result = acpi_bus_register_driver(&acpi_video_bus);
|
||||
if (result < 0) {
|
||||
|
Verwijs in nieuw issue
Block a user