Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'acpi-6.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull more ACPI updates from Rafael Wysocki:
"These are fixes and cleanups on top of the previous ACPI material for
6.15-rc1 merged recently:

- Extend the Lenovo Yoga Tab 3 ACPI quirk to skip GPIO event-handlers
along with ACPI AC and battery which makes it work with Linux when
started in the Windows mode (Hans de Goede)

- Prevent the ACPI processor idle driver from being used on systems
without _CST and with invalid C2/C3 in FADT in order to restore its
previous (and expected) behavior that has been altered
inadvertently by a recent code change (Giovanni Gherdovich)

- Skip ACPI IRQ override on ASUS Vivobook 14 X1404VAP to make the
internal keyboard work on it (Paul Menzel)

- Make the ACPI backlight driver handle fetching EDID passed as
ACPI_TYPE_PACKAGE which is not specification-compliant, but has
been encountered in the field (Gergo Koteles)

- Simplify the aggregation of choices in the ACPI platform-profile
driver which has been unlocked by recent modifications of that
driver (Kurt Borja)

- Use str_enabled_disabled() instead of hardcoded strings in the ACPI
code related to NUMA (Thorsten Blum)

- Add Intel OC Watchdog device IDs to non-PNP device list to prevent
PNP from claiming the devices that carry these IDs in which case
non-PNP drivers cannot bind to them (Diogo Ivo)"

* tag 'acpi-6.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: video: Handle fetching EDID as ACPI_TYPE_PACKAGE
ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid
ACPI: platform_profile: Optimize _aggregate_choices()
ACPI: x86: Extend Lenovo Yoga Tab 3 quirk with skip GPIO event-handlers
ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP
ACPI: PNP: Add Intel OC Watchdog IDs to non-PNP device list
ACPI: NUMA: Use str_enabled_disabled() helper function

+36 -24
+2
drivers/acpi/acpi_pnp.c
··· 353 353 * device represented by it. 354 354 */ 355 355 static const struct acpi_device_id acpi_nonpnp_device_ids[] = { 356 + {"INT3F0D"}, 356 357 {"INTC1080"}, 357 358 {"INTC1081"}, 359 + {"INTC1099"}, 358 360 {""}, 359 361 }; 360 362
+8 -1
drivers/acpi/acpi_video.c
··· 649 649 650 650 obj = buffer.pointer; 651 651 652 + /* 653 + * Some buggy implementations incorrectly return the EDID buffer in an ACPI package. 654 + * In this case, extract the buffer from the package. 655 + */ 656 + if (obj && obj->type == ACPI_TYPE_PACKAGE && obj->package.count == 1) 657 + obj = &obj->package.elements[0]; 658 + 652 659 if (obj && obj->type == ACPI_TYPE_BUFFER) { 653 660 *edid = kmemdup(obj->buffer.pointer, obj->buffer.length, GFP_KERNEL); 654 661 ret = *edid ? obj->buffer.length : -ENOMEM; ··· 665 658 ret = -EFAULT; 666 659 } 667 660 668 - kfree(obj); 661 + kfree(buffer.pointer); 669 662 return ret; 670 663 } 671 664
+8 -14
drivers/acpi/numa/srat.c
··· 18 18 #include <linux/nodemask.h> 19 19 #include <linux/topology.h> 20 20 #include <linux/numa_memblks.h> 21 + #include <linux/string_choices.h> 21 22 22 23 static nodemask_t nodes_found_map = NODE_MASK_NONE; 23 24 ··· 189 188 pr_debug("SRAT Processor (id[0x%02x] eid[0x%02x]) in proximity domain %d %s\n", 190 189 p->apic_id, p->local_sapic_eid, 191 190 p->proximity_domain_lo, 192 - (p->flags & ACPI_SRAT_CPU_ENABLED) ? 193 - "enabled" : "disabled"); 191 + str_enabled_disabled(p->flags & ACPI_SRAT_CPU_ENABLED)); 194 192 } 195 193 break; 196 194 ··· 201 201 (unsigned long long)p->base_address, 202 202 (unsigned long long)p->length, 203 203 p->proximity_domain, 204 - (p->flags & ACPI_SRAT_MEM_ENABLED) ? 205 - "enabled" : "disabled", 204 + str_enabled_disabled(p->flags & ACPI_SRAT_MEM_ENABLED), 206 205 (p->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE) ? 207 206 " hot-pluggable" : "", 208 207 (p->flags & ACPI_SRAT_MEM_NON_VOLATILE) ? ··· 216 217 pr_debug("SRAT Processor (x2apicid[0x%08x]) in proximity domain %d %s\n", 217 218 p->apic_id, 218 219 p->proximity_domain, 219 - (p->flags & ACPI_SRAT_CPU_ENABLED) ? 220 - "enabled" : "disabled"); 220 + str_enabled_disabled(p->flags & ACPI_SRAT_CPU_ENABLED)); 221 221 } 222 222 break; 223 223 ··· 227 229 pr_debug("SRAT Processor (acpi id[0x%04x]) in proximity domain %d %s\n", 228 230 p->acpi_processor_uid, 229 231 p->proximity_domain, 230 - (p->flags & ACPI_SRAT_GICC_ENABLED) ? 231 - "enabled" : "disabled"); 232 + str_enabled_disabled(p->flags & ACPI_SRAT_GICC_ENABLED)); 232 233 } 233 234 break; 234 235 ··· 245 248 *(u16 *)(&p->device_handle[0]), 246 249 *(u16 *)(&p->device_handle[2]), 247 250 p->proximity_domain, 248 - (p->flags & ACPI_SRAT_GENERIC_AFFINITY_ENABLED) ? 249 - "enabled" : "disabled"); 251 + str_enabled_disabled(p->flags & ACPI_SRAT_GENERIC_AFFINITY_ENABLED)); 250 252 } else { 251 253 /* 252 254 * In this case we can rely on the device having a ··· 255 259 (char *)(&p->device_handle[0]), 256 260 (char *)(&p->device_handle[8]), 257 261 p->proximity_domain, 258 - (p->flags & ACPI_SRAT_GENERIC_AFFINITY_ENABLED) ? 259 - "enabled" : "disabled"); 262 + str_enabled_disabled(p->flags & ACPI_SRAT_GENERIC_AFFINITY_ENABLED)); 260 263 } 261 264 } 262 265 break; ··· 267 272 pr_debug("SRAT Processor (acpi id[0x%04x]) in proximity domain %d %s\n", 268 273 p->acpi_processor_uid, 269 274 p->proximity_domain, 270 - (p->flags & ACPI_SRAT_RINTC_ENABLED) ? 271 - "enabled" : "disabled"); 275 + str_enabled_disabled(p->flags & ACPI_SRAT_RINTC_ENABLED)); 272 276 } 273 277 break; 274 278
+5 -8
drivers/acpi/platform_profile.c
··· 245 245 /** 246 246 * _aggregate_choices - Aggregate the available profile choices 247 247 * @dev: The device 248 - * @arg: struct aggregate_choices_data 248 + * @arg: struct aggregate_choices_data, with it's aggregate member bitmap 249 + * initially filled with ones 249 250 * 250 251 * Return: 0 on success, -errno on failure 251 252 */ ··· 257 256 struct platform_profile_handler *handler; 258 257 259 258 lockdep_assert_held(&profile_lock); 259 + 260 260 handler = to_pprof_handler(dev); 261 261 bitmap_or(tmp, handler->choices, handler->hidden_choices, PLATFORM_PROFILE_LAST); 262 - if (test_bit(PLATFORM_PROFILE_LAST, data->aggregate)) 263 - bitmap_copy(data->aggregate, tmp, PLATFORM_PROFILE_LAST); 264 - else 265 - bitmap_and(data->aggregate, tmp, data->aggregate, PLATFORM_PROFILE_LAST); 262 + bitmap_and(data->aggregate, tmp, data->aggregate, PLATFORM_PROFILE_LAST); 266 263 data->count++; 267 264 268 265 return 0; ··· 304 305 }; 305 306 int err; 306 307 307 - set_bit(PLATFORM_PROFILE_LAST, data.aggregate); 308 308 scoped_cond_guard(mutex_intr, return -ERESTARTSYS, &profile_lock) { 309 309 err = class_for_each_device(&platform_profile_class, NULL, 310 310 &data, _aggregate_choices); ··· 420 422 i = sysfs_match_string(profile_names, buf); 421 423 if (i < 0 || i == PLATFORM_PROFILE_CUSTOM) 422 424 return -EINVAL; 423 - set_bit(PLATFORM_PROFILE_LAST, data.aggregate); 425 + 424 426 scoped_cond_guard(mutex_intr, return -ERESTARTSYS, &profile_lock) { 425 427 ret = class_for_each_device(&platform_profile_class, NULL, 426 428 &data, _aggregate_choices); ··· 500 502 enum platform_profile_option profile = PLATFORM_PROFILE_LAST; 501 503 int err; 502 504 503 - set_bit(PLATFORM_PROFILE_LAST, data.aggregate); 504 505 scoped_cond_guard(mutex_intr, return -ERESTARTSYS, &profile_lock) { 505 506 err = class_for_each_device(&platform_profile_class, NULL, 506 507 &profile, _aggregate_profiles);
+4
drivers/acpi/processor_idle.c
··· 268 268 ACPI_CX_DESC_LEN, "ACPI P_LVL3 IOPORT 0x%x", 269 269 pr->power.states[ACPI_STATE_C3].address); 270 270 271 + if (!pr->power.states[ACPI_STATE_C2].address && 272 + !pr->power.states[ACPI_STATE_C3].address) 273 + return -ENODEV; 274 + 271 275 return 0; 272 276 } 273 277
+7
drivers/acpi/resource.c
··· 441 441 }, 442 442 }, 443 443 { 444 + /* Asus Vivobook X1404VAP */ 445 + .matches = { 446 + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), 447 + DMI_MATCH(DMI_BOARD_NAME, "X1404VAP"), 448 + }, 449 + }, 450 + { 444 451 /* Asus Vivobook X1504VAP */ 445 452 .matches = { 446 453 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+2 -1
drivers/acpi/x86/utils.c
··· 374 374 DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), 375 375 }, 376 376 .driver_data = (void *)(ACPI_QUIRK_SKIP_I2C_CLIENTS | 377 - ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY), 377 + ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY | 378 + ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS), 378 379 }, 379 380 { 380 381 /* Medion Lifetab S10346 */