diff options
| -rw-r--r-- | arch/ia64/kernel/acpi.c | 9 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 9 | ||||
| -rw-r--r-- | drivers/acpi/acpi_processor.c | 25 | ||||
| -rw-r--r-- | drivers/acpi/device_pm.c | 2 | ||||
| -rw-r--r-- | drivers/acpi/processor_core.c | 56 | ||||
| -rw-r--r-- | drivers/acpi/scan.c | 13 | ||||
| -rw-r--r-- | drivers/acpi/video.c | 10 | ||||
| -rw-r--r-- | include/acpi/processor.h | 8 | ||||
| -rw-r--r-- | include/linux/acpi.h | 4 |
9 files changed, 75 insertions, 61 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 615ef81def49..e795cb848154 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
| @@ -893,13 +893,13 @@ static int _acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu) | |||
| 893 | } | 893 | } |
| 894 | 894 | ||
| 895 | /* wrapper to silence section mismatch warning */ | 895 | /* wrapper to silence section mismatch warning */ |
| 896 | int __ref acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu) | 896 | int __ref acpi_map_cpu(acpi_handle handle, int physid, int *pcpu) |
| 897 | { | 897 | { |
| 898 | return _acpi_map_lsapic(handle, physid, pcpu); | 898 | return _acpi_map_lsapic(handle, physid, pcpu); |
| 899 | } | 899 | } |
| 900 | EXPORT_SYMBOL(acpi_map_lsapic); | 900 | EXPORT_SYMBOL(acpi_map_cpu); |
| 901 | 901 | ||
| 902 | int acpi_unmap_lsapic(int cpu) | 902 | int acpi_unmap_cpu(int cpu) |
| 903 | { | 903 | { |
| 904 | ia64_cpu_to_sapicid[cpu] = -1; | 904 | ia64_cpu_to_sapicid[cpu] = -1; |
| 905 | set_cpu_present(cpu, false); | 905 | set_cpu_present(cpu, false); |
| @@ -910,8 +910,7 @@ int acpi_unmap_lsapic(int cpu) | |||
| 910 | 910 | ||
| 911 | return (0); | 911 | return (0); |
| 912 | } | 912 | } |
| 913 | 913 | EXPORT_SYMBOL(acpi_unmap_cpu); | |
| 914 | EXPORT_SYMBOL(acpi_unmap_lsapic); | ||
| 915 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ | 914 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ |
| 916 | 915 | ||
| 917 | #ifdef CONFIG_ACPI_NUMA | 916 | #ifdef CONFIG_ACPI_NUMA |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4433a4be8171..d1626364a28a 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -750,13 +750,13 @@ static int _acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu) | |||
| 750 | } | 750 | } |
| 751 | 751 | ||
| 752 | /* wrapper to silence section mismatch warning */ | 752 | /* wrapper to silence section mismatch warning */ |
| 753 | int __ref acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu) | 753 | int __ref acpi_map_cpu(acpi_handle handle, int physid, int *pcpu) |
| 754 | { | 754 | { |
| 755 | return _acpi_map_lsapic(handle, physid, pcpu); | 755 | return _acpi_map_lsapic(handle, physid, pcpu); |
| 756 | } | 756 | } |
| 757 | EXPORT_SYMBOL(acpi_map_lsapic); | 757 | EXPORT_SYMBOL(acpi_map_cpu); |
| 758 | 758 | ||
| 759 | int acpi_unmap_lsapic(int cpu) | 759 | int acpi_unmap_cpu(int cpu) |
| 760 | { | 760 | { |
| 761 | #ifdef CONFIG_ACPI_NUMA | 761 | #ifdef CONFIG_ACPI_NUMA |
| 762 | set_apicid_to_node(per_cpu(x86_cpu_to_apicid, cpu), NUMA_NO_NODE); | 762 | set_apicid_to_node(per_cpu(x86_cpu_to_apicid, cpu), NUMA_NO_NODE); |
| @@ -768,8 +768,7 @@ int acpi_unmap_lsapic(int cpu) | |||
| 768 | 768 | ||
| 769 | return (0); | 769 | return (0); |
| 770 | } | 770 | } |
| 771 | 771 | EXPORT_SYMBOL(acpi_unmap_cpu); | |
| 772 | EXPORT_SYMBOL(acpi_unmap_lsapic); | ||
| 773 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ | 772 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ |
| 774 | 773 | ||
| 775 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) | 774 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) |
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index 1fdf5e07a1c7..1020b1b53a17 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c | |||
| @@ -170,7 +170,7 @@ static int acpi_processor_hotadd_init(struct acpi_processor *pr) | |||
| 170 | acpi_status status; | 170 | acpi_status status; |
| 171 | int ret; | 171 | int ret; |
| 172 | 172 | ||
| 173 | if (pr->apic_id == -1) | 173 | if (pr->phys_id == -1) |
| 174 | return -ENODEV; | 174 | return -ENODEV; |
| 175 | 175 | ||
| 176 | status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta); | 176 | status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta); |
| @@ -180,13 +180,13 @@ static int acpi_processor_hotadd_init(struct acpi_processor *pr) | |||
| 180 | cpu_maps_update_begin(); | 180 | cpu_maps_update_begin(); |
| 181 | cpu_hotplug_begin(); | 181 | cpu_hotplug_begin(); |
| 182 | 182 | ||
| 183 | ret = acpi_map_lsapic(pr->handle, pr->apic_id, &pr->id); | 183 | ret = acpi_map_cpu(pr->handle, pr->phys_id, &pr->id); |
| 184 | if (ret) | 184 | if (ret) |
| 185 | goto out; | 185 | goto out; |
| 186 | 186 | ||
| 187 | ret = arch_register_cpu(pr->id); | 187 | ret = arch_register_cpu(pr->id); |
| 188 | if (ret) { | 188 | if (ret) { |
| 189 | acpi_unmap_lsapic(pr->id); | 189 | acpi_unmap_cpu(pr->id); |
| 190 | goto out; | 190 | goto out; |
| 191 | } | 191 | } |
| 192 | 192 | ||
| @@ -215,7 +215,7 @@ static int acpi_processor_get_info(struct acpi_device *device) | |||
| 215 | union acpi_object object = { 0 }; | 215 | union acpi_object object = { 0 }; |
| 216 | struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; | 216 | struct acpi_buffer buffer = { sizeof(union acpi_object), &object }; |
| 217 | struct acpi_processor *pr = acpi_driver_data(device); | 217 | struct acpi_processor *pr = acpi_driver_data(device); |
| 218 | int apic_id, cpu_index, device_declaration = 0; | 218 | int phys_id, cpu_index, device_declaration = 0; |
| 219 | acpi_status status = AE_OK; | 219 | acpi_status status = AE_OK; |
| 220 | static int cpu0_initialized; | 220 | static int cpu0_initialized; |
| 221 | unsigned long long value; | 221 | unsigned long long value; |
| @@ -262,15 +262,18 @@ static int acpi_processor_get_info(struct acpi_device *device) | |||
| 262 | pr->acpi_id = value; | 262 | pr->acpi_id = value; |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id); | 265 | phys_id = acpi_get_phys_id(pr->handle, device_declaration, pr->acpi_id); |
| 266 | if (apic_id < 0) | 266 | if (phys_id < 0) |
| 267 | acpi_handle_debug(pr->handle, "failed to get CPU APIC ID.\n"); | 267 | acpi_handle_debug(pr->handle, "failed to get CPU physical ID.\n"); |
| 268 | pr->apic_id = apic_id; | 268 | pr->phys_id = phys_id; |
| 269 | 269 | ||
| 270 | cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id); | 270 | cpu_index = acpi_map_cpuid(pr->phys_id, pr->acpi_id); |
| 271 | if (!cpu0_initialized && !acpi_has_cpu_in_madt()) { | 271 | if (!cpu0_initialized && !acpi_has_cpu_in_madt()) { |
| 272 | cpu0_initialized = 1; | 272 | cpu0_initialized = 1; |
| 273 | /* Handle UP system running SMP kernel, with no LAPIC in MADT */ | 273 | /* |
| 274 | * Handle UP system running SMP kernel, with no CPU | ||
| 275 | * entry in MADT | ||
| 276 | */ | ||
| 274 | if ((cpu_index == -1) && (num_online_cpus() == 1)) | 277 | if ((cpu_index == -1) && (num_online_cpus() == 1)) |
| 275 | cpu_index = 0; | 278 | cpu_index = 0; |
| 276 | } | 279 | } |
| @@ -458,7 +461,7 @@ static void acpi_processor_remove(struct acpi_device *device) | |||
| 458 | 461 | ||
| 459 | /* Remove the CPU. */ | 462 | /* Remove the CPU. */ |
| 460 | arch_unregister_cpu(pr->id); | 463 | arch_unregister_cpu(pr->id); |
| 461 | acpi_unmap_lsapic(pr->id); | 464 | acpi_unmap_cpu(pr->id); |
| 462 | 465 | ||
| 463 | cpu_hotplug_done(); | 466 | cpu_hotplug_done(); |
| 464 | cpu_maps_update_done(); | 467 | cpu_maps_update_done(); |
diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index c2daa85fc9f7..c0d44d394ca3 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c | |||
| @@ -257,7 +257,7 @@ int acpi_bus_init_power(struct acpi_device *device) | |||
| 257 | 257 | ||
| 258 | device->power.state = ACPI_STATE_UNKNOWN; | 258 | device->power.state = ACPI_STATE_UNKNOWN; |
| 259 | if (!acpi_device_is_present(device)) | 259 | if (!acpi_device_is_present(device)) |
| 260 | return 0; | 260 | return -ENXIO; |
| 261 | 261 | ||
| 262 | result = acpi_device_get_power(device, &state); | 262 | result = acpi_device_get_power(device, &state); |
| 263 | if (result) | 263 | if (result) |
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 342942f90a10..02e48394276c 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
| @@ -69,7 +69,7 @@ static int map_madt_entry(int type, u32 acpi_id) | |||
| 69 | unsigned long madt_end, entry; | 69 | unsigned long madt_end, entry; |
| 70 | static struct acpi_table_madt *madt; | 70 | static struct acpi_table_madt *madt; |
| 71 | static int read_madt; | 71 | static int read_madt; |
| 72 | int apic_id = -1; | 72 | int phys_id = -1; /* CPU hardware ID */ |
| 73 | 73 | ||
| 74 | if (!read_madt) { | 74 | if (!read_madt) { |
| 75 | if (ACPI_FAILURE(acpi_get_table(ACPI_SIG_MADT, 0, | 75 | if (ACPI_FAILURE(acpi_get_table(ACPI_SIG_MADT, 0, |
| @@ -79,7 +79,7 @@ static int map_madt_entry(int type, u32 acpi_id) | |||
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | if (!madt) | 81 | if (!madt) |
| 82 | return apic_id; | 82 | return phys_id; |
| 83 | 83 | ||
| 84 | entry = (unsigned long)madt; | 84 | entry = (unsigned long)madt; |
| 85 | madt_end = entry + madt->header.length; | 85 | madt_end = entry + madt->header.length; |
| @@ -91,18 +91,18 @@ static int map_madt_entry(int type, u32 acpi_id) | |||
| 91 | struct acpi_subtable_header *header = | 91 | struct acpi_subtable_header *header = |
| 92 | (struct acpi_subtable_header *)entry; | 92 | (struct acpi_subtable_header *)entry; |
| 93 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) { | 93 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) { |
| 94 | if (!map_lapic_id(header, acpi_id, &apic_id)) | 94 | if (!map_lapic_id(header, acpi_id, &phys_id)) |
| 95 | break; | 95 | break; |
| 96 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) { | 96 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) { |
| 97 | if (!map_x2apic_id(header, type, acpi_id, &apic_id)) | 97 | if (!map_x2apic_id(header, type, acpi_id, &phys_id)) |
| 98 | break; | 98 | break; |
| 99 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) { | 99 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) { |
| 100 | if (!map_lsapic_id(header, type, acpi_id, &apic_id)) | 100 | if (!map_lsapic_id(header, type, acpi_id, &phys_id)) |
| 101 | break; | 101 | break; |
| 102 | } | 102 | } |
| 103 | entry += header->length; | 103 | entry += header->length; |
| 104 | } | 104 | } |
| 105 | return apic_id; | 105 | return phys_id; |
| 106 | } | 106 | } |
| 107 | 107 | ||
| 108 | static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id) | 108 | static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id) |
| @@ -110,7 +110,7 @@ static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id) | |||
| 110 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 110 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
| 111 | union acpi_object *obj; | 111 | union acpi_object *obj; |
| 112 | struct acpi_subtable_header *header; | 112 | struct acpi_subtable_header *header; |
| 113 | int apic_id = -1; | 113 | int phys_id = -1; |
| 114 | 114 | ||
| 115 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) | 115 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer))) |
| 116 | goto exit; | 116 | goto exit; |
| @@ -126,38 +126,38 @@ static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id) | |||
| 126 | 126 | ||
| 127 | header = (struct acpi_subtable_header *)obj->buffer.pointer; | 127 | header = (struct acpi_subtable_header *)obj->buffer.pointer; |
| 128 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) | 128 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) |
| 129 | map_lapic_id(header, acpi_id, &apic_id); | 129 | map_lapic_id(header, acpi_id, &phys_id); |
| 130 | else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) | 130 | else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) |
| 131 | map_lsapic_id(header, type, acpi_id, &apic_id); | 131 | map_lsapic_id(header, type, acpi_id, &phys_id); |
| 132 | else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) | 132 | else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) |
| 133 | map_x2apic_id(header, type, acpi_id, &apic_id); | 133 | map_x2apic_id(header, type, acpi_id, &phys_id); |
| 134 | 134 | ||
| 135 | exit: | 135 | exit: |
| 136 | kfree(buffer.pointer); | 136 | kfree(buffer.pointer); |
| 137 | return apic_id; | 137 | return phys_id; |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | int acpi_get_apicid(acpi_handle handle, int type, u32 acpi_id) | 140 | int acpi_get_phys_id(acpi_handle handle, int type, u32 acpi_id) |
| 141 | { | 141 | { |
| 142 | int apic_id; | 142 | int phys_id; |
| 143 | 143 | ||
| 144 | apic_id = map_mat_entry(handle, type, acpi_id); | 144 | phys_id = map_mat_entry(handle, type, acpi_id); |
| 145 | if (apic_id == -1) | 145 | if (phys_id == -1) |
| 146 | apic_id = map_madt_entry(type, acpi_id); | 146 | phys_id = map_madt_entry(type, acpi_id); |
| 147 | 147 | ||
| 148 | return apic_id; | 148 | return phys_id; |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | int acpi_map_cpuid(int apic_id, u32 acpi_id) | 151 | int acpi_map_cpuid(int phys_id, u32 acpi_id) |
| 152 | { | 152 | { |
| 153 | #ifdef CONFIG_SMP | 153 | #ifdef CONFIG_SMP |
| 154 | int i; | 154 | int i; |
| 155 | #endif | 155 | #endif |
| 156 | 156 | ||
| 157 | if (apic_id == -1) { | 157 | if (phys_id == -1) { |
| 158 | /* | 158 | /* |
| 159 | * On UP processor, there is no _MAT or MADT table. | 159 | * On UP processor, there is no _MAT or MADT table. |
| 160 | * So above apic_id is always set to -1. | 160 | * So above phys_id is always set to -1. |
| 161 | * | 161 | * |
| 162 | * BIOS may define multiple CPU handles even for UP processor. | 162 | * BIOS may define multiple CPU handles even for UP processor. |
| 163 | * For example, | 163 | * For example, |
| @@ -170,7 +170,7 @@ int acpi_map_cpuid(int apic_id, u32 acpi_id) | |||
| 170 | * Processor (CPU3, 0x03, 0x00000410, 0x06) {} | 170 | * Processor (CPU3, 0x03, 0x00000410, 0x06) {} |
| 171 | * } | 171 | * } |
| 172 | * | 172 | * |
| 173 | * Ignores apic_id and always returns 0 for the processor | 173 | * Ignores phys_id and always returns 0 for the processor |
| 174 | * handle with acpi id 0 if nr_cpu_ids is 1. | 174 | * handle with acpi id 0 if nr_cpu_ids is 1. |
| 175 | * This should be the case if SMP tables are not found. | 175 | * This should be the case if SMP tables are not found. |
| 176 | * Return -1 for other CPU's handle. | 176 | * Return -1 for other CPU's handle. |
| @@ -178,28 +178,28 @@ int acpi_map_cpuid(int apic_id, u32 acpi_id) | |||
| 178 | if (nr_cpu_ids <= 1 && acpi_id == 0) | 178 | if (nr_cpu_ids <= 1 && acpi_id == 0) |
| 179 | return acpi_id; | 179 | return acpi_id; |
| 180 | else | 180 | else |
| 181 | return apic_id; | 181 | return phys_id; |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | #ifdef CONFIG_SMP | 184 | #ifdef CONFIG_SMP |
| 185 | for_each_possible_cpu(i) { | 185 | for_each_possible_cpu(i) { |
| 186 | if (cpu_physical_id(i) == apic_id) | 186 | if (cpu_physical_id(i) == phys_id) |
| 187 | return i; | 187 | return i; |
| 188 | } | 188 | } |
| 189 | #else | 189 | #else |
| 190 | /* In UP kernel, only processor 0 is valid */ | 190 | /* In UP kernel, only processor 0 is valid */ |
| 191 | if (apic_id == 0) | 191 | if (phys_id == 0) |
| 192 | return apic_id; | 192 | return phys_id; |
| 193 | #endif | 193 | #endif |
| 194 | return -1; | 194 | return -1; |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id) | 197 | int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id) |
| 198 | { | 198 | { |
| 199 | int apic_id; | 199 | int phys_id; |
| 200 | 200 | ||
| 201 | apic_id = acpi_get_apicid(handle, type, acpi_id); | 201 | phys_id = acpi_get_phys_id(handle, type, acpi_id); |
| 202 | 202 | ||
| 203 | return acpi_map_cpuid(apic_id, acpi_id); | 203 | return acpi_map_cpuid(phys_id, acpi_id); |
| 204 | } | 204 | } |
| 205 | EXPORT_SYMBOL_GPL(acpi_get_cpuid); | 205 | EXPORT_SYMBOL_GPL(acpi_get_cpuid); |
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 16914cc30882..dc4d8960684a 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c | |||
| @@ -1001,7 +1001,7 @@ static void acpi_free_power_resources_lists(struct acpi_device *device) | |||
| 1001 | if (device->wakeup.flags.valid) | 1001 | if (device->wakeup.flags.valid) |
| 1002 | acpi_power_resources_list_free(&device->wakeup.resources); | 1002 | acpi_power_resources_list_free(&device->wakeup.resources); |
| 1003 | 1003 | ||
| 1004 | if (!device->flags.power_manageable) | 1004 | if (!device->power.flags.power_resources) |
| 1005 | return; | 1005 | return; |
| 1006 | 1006 | ||
| 1007 | for (i = ACPI_STATE_D0; i <= ACPI_STATE_D3_HOT; i++) { | 1007 | for (i = ACPI_STATE_D0; i <= ACPI_STATE_D3_HOT; i++) { |
| @@ -1744,10 +1744,8 @@ static void acpi_bus_get_power_flags(struct acpi_device *device) | |||
| 1744 | device->power.flags.power_resources) | 1744 | device->power.flags.power_resources) |
| 1745 | device->power.states[ACPI_STATE_D3_COLD].flags.os_accessible = 1; | 1745 | device->power.states[ACPI_STATE_D3_COLD].flags.os_accessible = 1; |
| 1746 | 1746 | ||
| 1747 | if (acpi_bus_init_power(device)) { | 1747 | if (acpi_bus_init_power(device)) |
| 1748 | acpi_free_power_resources_lists(device); | ||
| 1749 | device->flags.power_manageable = 0; | 1748 | device->flags.power_manageable = 0; |
| 1750 | } | ||
| 1751 | } | 1749 | } |
| 1752 | 1750 | ||
| 1753 | static void acpi_bus_get_flags(struct acpi_device *device) | 1751 | static void acpi_bus_get_flags(struct acpi_device *device) |
| @@ -2371,13 +2369,18 @@ static void acpi_bus_attach(struct acpi_device *device) | |||
| 2371 | /* Skip devices that are not present. */ | 2369 | /* Skip devices that are not present. */ |
| 2372 | if (!acpi_device_is_present(device)) { | 2370 | if (!acpi_device_is_present(device)) { |
| 2373 | device->flags.visited = false; | 2371 | device->flags.visited = false; |
| 2372 | device->flags.power_manageable = 0; | ||
| 2374 | return; | 2373 | return; |
| 2375 | } | 2374 | } |
| 2376 | if (device->handler) | 2375 | if (device->handler) |
| 2377 | goto ok; | 2376 | goto ok; |
| 2378 | 2377 | ||
| 2379 | if (!device->flags.initialized) { | 2378 | if (!device->flags.initialized) { |
| 2380 | acpi_bus_update_power(device, NULL); | 2379 | device->flags.power_manageable = |
| 2380 | device->power.states[ACPI_STATE_D0].flags.valid; | ||
| 2381 | if (acpi_bus_init_power(device)) | ||
| 2382 | device->flags.power_manageable = 0; | ||
| 2383 | |||
| 2381 | device->flags.initialized = true; | 2384 | device->flags.initialized = true; |
| 2382 | } | 2385 | } |
| 2383 | device->flags.visited = false; | 2386 | device->flags.visited = false; |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index c72e79d2c5ad..032db459370f 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
| @@ -522,6 +522,16 @@ static struct dmi_system_id video_dmi_table[] __initdata = { | |||
| 522 | DMI_MATCH(DMI_PRODUCT_NAME, "370R4E/370R4V/370R5E/3570RE/370R5V"), | 522 | DMI_MATCH(DMI_PRODUCT_NAME, "370R4E/370R4V/370R5E/3570RE/370R5V"), |
| 523 | }, | 523 | }, |
| 524 | }, | 524 | }, |
| 525 | |||
| 526 | { | ||
| 527 | /* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */ | ||
| 528 | .callback = video_disable_native_backlight, | ||
| 529 | .ident = "Dell XPS15 L521X", | ||
| 530 | .matches = { | ||
| 531 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
| 532 | DMI_MATCH(DMI_PRODUCT_NAME, "XPS L521X"), | ||
| 533 | }, | ||
| 534 | }, | ||
| 525 | {} | 535 | {} |
| 526 | }; | 536 | }; |
| 527 | 537 | ||
diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 3ca9b751f122..b95dc32a6e6b 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h | |||
| @@ -196,8 +196,8 @@ struct acpi_processor_flags { | |||
| 196 | struct acpi_processor { | 196 | struct acpi_processor { |
| 197 | acpi_handle handle; | 197 | acpi_handle handle; |
| 198 | u32 acpi_id; | 198 | u32 acpi_id; |
| 199 | u32 apic_id; | 199 | u32 phys_id; /* CPU hardware ID such as APIC ID for x86 */ |
| 200 | u32 id; | 200 | u32 id; /* CPU logical ID allocated by OS */ |
| 201 | u32 pblk; | 201 | u32 pblk; |
| 202 | int performance_platform_limit; | 202 | int performance_platform_limit; |
| 203 | int throttling_platform_limit; | 203 | int throttling_platform_limit; |
| @@ -310,8 +310,8 @@ static inline int acpi_processor_get_bios_limit(int cpu, unsigned int *limit) | |||
| 310 | #endif /* CONFIG_CPU_FREQ */ | 310 | #endif /* CONFIG_CPU_FREQ */ |
| 311 | 311 | ||
| 312 | /* in processor_core.c */ | 312 | /* in processor_core.c */ |
| 313 | int acpi_get_apicid(acpi_handle, int type, u32 acpi_id); | 313 | int acpi_get_phys_id(acpi_handle, int type, u32 acpi_id); |
| 314 | int acpi_map_cpuid(int apic_id, u32 acpi_id); | 314 | int acpi_map_cpuid(int phys_id, u32 acpi_id); |
| 315 | int acpi_get_cpuid(acpi_handle, int type, u32 acpi_id); | 315 | int acpi_get_cpuid(acpi_handle, int type, u32 acpi_id); |
| 316 | 316 | ||
| 317 | /* in processor_pdc.c */ | 317 | /* in processor_pdc.c */ |
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 856d381b1d5b..d459cd17b477 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h | |||
| @@ -147,8 +147,8 @@ void acpi_numa_arch_fixup(void); | |||
| 147 | 147 | ||
| 148 | #ifdef CONFIG_ACPI_HOTPLUG_CPU | 148 | #ifdef CONFIG_ACPI_HOTPLUG_CPU |
| 149 | /* Arch dependent functions for cpu hotplug support */ | 149 | /* Arch dependent functions for cpu hotplug support */ |
| 150 | int acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu); | 150 | int acpi_map_cpu(acpi_handle handle, int physid, int *pcpu); |
| 151 | int acpi_unmap_lsapic(int cpu); | 151 | int acpi_unmap_cpu(int cpu); |
| 152 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ | 152 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ |
| 153 | 153 | ||
| 154 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); | 154 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); |
