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

ACPICA: hw: remove use_lock flag from acpi_hw_register_{read, write}

use_lock flag is used once for acpi_hw_register_read, and never for
acpi_hw_register_write. It will greatly simplify understanding of
locking if we just drop this use_lock altogether, and wrap the only call
to ..._read in lock/unlock.

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>

authored by

Alexey Starikovskiy and committed by
Len Brown
d30dc9ab bbf25010

+48 -78
+2 -4
drivers/acpi/events/evevent.c
··· 239 239 * Read the fixed feature status and enable registers, as all the cases 240 240 * depend on their values. Ignore errors here. 241 241 */ 242 - (void)acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 243 - ACPI_REGISTER_PM1_STATUS, &fixed_status); 244 - (void)acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 245 - ACPI_REGISTER_PM1_ENABLE, &fixed_enable); 242 + (void)acpi_hw_register_read(ACPI_REGISTER_PM1_STATUS, &fixed_status); 243 + (void)acpi_hw_register_read(ACPI_REGISTER_PM1_ENABLE, &fixed_enable); 246 244 247 245 ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS, 248 246 "Fixed Event Block: Enable %08X Status %08X\n",
+35 -54
drivers/acpi/hardware/hwregs.c
··· 75 75 76 76 lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); 77 77 78 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 79 - ACPI_REGISTER_PM1_STATUS, 78 + status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS, 80 79 ACPI_BITMASK_ALL_FIXED_STATUS); 81 80 if (ACPI_FAILURE(status)) { 82 81 goto unlock_and_exit; ··· 258 259 * 259 260 ******************************************************************************/ 260 261 261 - acpi_status acpi_get_register(u32 register_id, u32 * return_value) 262 + acpi_status acpi_get_register_unlocked(u32 register_id, u32 * return_value) 262 263 { 263 264 u32 register_value = 0; 264 265 struct acpi_bit_register_info *bit_reg_info; ··· 275 276 276 277 /* Read from the register */ 277 278 278 - status = acpi_hw_register_read(ACPI_MTX_LOCK, 279 - bit_reg_info->parent_register, 279 + status = acpi_hw_register_read(bit_reg_info->parent_register, 280 280 &register_value); 281 281 282 282 if (ACPI_SUCCESS(status)) { ··· 294 296 } 295 297 296 298 return_ACPI_STATUS(status); 299 + } 300 + 301 + acpi_status acpi_get_register(u32 register_id, u32 * return_value) 302 + { 303 + acpi_status status; 304 + acpi_cpu_flags flags; 305 + flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); 306 + status = acpi_get_register_unlocked(register_id, return_value); 307 + acpi_os_release_lock(acpi_gbl_hardware_lock, flags); 308 + return status; 297 309 } 298 310 299 311 ACPI_EXPORT_SYMBOL(acpi_get_register) ··· 343 335 344 336 /* Always do a register read first so we can insert the new bits */ 345 337 346 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 347 - bit_reg_info->parent_register, 338 + status = acpi_hw_register_read(bit_reg_info->parent_register, 348 339 &register_value); 349 340 if (ACPI_FAILURE(status)) { 350 341 goto unlock_and_exit; ··· 370 363 bit_reg_info-> 371 364 access_bit_mask); 372 365 if (value) { 373 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 374 - ACPI_REGISTER_PM1_STATUS, 366 + status = acpi_hw_register_write(ACPI_REGISTER_PM1_STATUS, 375 367 (u16) value); 376 368 register_value = 0; 377 369 } ··· 383 377 bit_reg_info->access_bit_mask, 384 378 value); 385 379 386 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 387 - ACPI_REGISTER_PM1_ENABLE, 380 + status = acpi_hw_register_write(ACPI_REGISTER_PM1_ENABLE, 388 381 (u16) register_value); 389 382 break; 390 383 ··· 402 397 bit_reg_info->access_bit_mask, 403 398 value); 404 399 405 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 406 - ACPI_REGISTER_PM1_CONTROL, 400 + status = acpi_hw_register_write(ACPI_REGISTER_PM1_CONTROL, 407 401 (u16) register_value); 408 402 break; 409 403 410 404 case ACPI_REGISTER_PM2_CONTROL: 411 405 412 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 413 - ACPI_REGISTER_PM2_CONTROL, 406 + status = acpi_hw_register_read(ACPI_REGISTER_PM2_CONTROL, 414 407 &register_value); 415 408 if (ACPI_FAILURE(status)) { 416 409 goto unlock_and_exit; ··· 433 430 xpm2_control_block. 434 431 address))); 435 432 436 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 437 - ACPI_REGISTER_PM2_CONTROL, 433 + status = acpi_hw_register_write(ACPI_REGISTER_PM2_CONTROL, 438 434 (u8) (register_value)); 439 435 break; 440 436 ··· 463 461 * 464 462 * FUNCTION: acpi_hw_register_read 465 463 * 466 - * PARAMETERS: use_lock - Lock hardware? True/False 467 - * register_id - ACPI Register ID 464 + * PARAMETERS: register_id - ACPI Register ID 468 465 * return_value - Where the register value is returned 469 466 * 470 467 * RETURN: Status and the value read. ··· 472 471 * 473 472 ******************************************************************************/ 474 473 acpi_status 475 - acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value) 474 + acpi_hw_register_read(u32 register_id, u32 * return_value) 476 475 { 477 476 u32 value1 = 0; 478 477 u32 value2 = 0; 479 478 acpi_status status; 480 - acpi_cpu_flags lock_flags = 0; 481 479 482 480 ACPI_FUNCTION_TRACE(hw_register_read); 483 - 484 - if (ACPI_MTX_LOCK == use_lock) { 485 - lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); 486 - } 487 481 488 482 switch (register_id) { 489 483 case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ ··· 487 491 acpi_hw_low_level_read(16, &value1, 488 492 &acpi_gbl_FADT.xpm1a_event_block); 489 493 if (ACPI_FAILURE(status)) { 490 - goto unlock_and_exit; 494 + goto exit; 491 495 } 492 496 493 497 /* PM1B is optional */ ··· 503 507 status = 504 508 acpi_hw_low_level_read(16, &value1, &acpi_gbl_xpm1a_enable); 505 509 if (ACPI_FAILURE(status)) { 506 - goto unlock_and_exit; 510 + goto exit; 507 511 } 508 512 509 513 /* PM1B is optional */ ··· 519 523 acpi_hw_low_level_read(16, &value1, 520 524 &acpi_gbl_FADT.xpm1a_control_block); 521 525 if (ACPI_FAILURE(status)) { 522 - goto unlock_and_exit; 526 + goto exit; 523 527 } 524 528 525 529 status = ··· 554 558 break; 555 559 } 556 560 557 - unlock_and_exit: 558 - if (ACPI_MTX_LOCK == use_lock) { 559 - acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags); 560 - } 561 + exit: 561 562 562 563 if (ACPI_SUCCESS(status)) { 563 564 *return_value = value1; ··· 567 574 * 568 575 * FUNCTION: acpi_hw_register_write 569 576 * 570 - * PARAMETERS: use_lock - Lock hardware? True/False 571 - * register_id - ACPI Register ID 577 + * PARAMETERS: register_id - ACPI Register ID 572 578 * Value - The value to write 573 579 * 574 580 * RETURN: Status ··· 589 597 * 590 598 ******************************************************************************/ 591 599 592 - acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value) 600 + acpi_status acpi_hw_register_write(u32 register_id, u32 value) 593 601 { 594 602 acpi_status status; 595 - acpi_cpu_flags lock_flags = 0; 596 603 u32 read_value; 597 604 598 605 ACPI_FUNCTION_TRACE(hw_register_write); 599 - 600 - if (ACPI_MTX_LOCK == use_lock) { 601 - lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock); 602 - } 603 606 604 607 switch (register_id) { 605 608 case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */ 606 609 607 610 /* Perform a read first to preserve certain bits (per ACPI spec) */ 608 611 609 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 610 - ACPI_REGISTER_PM1_STATUS, 612 + status = acpi_hw_register_read(ACPI_REGISTER_PM1_STATUS, 611 613 &read_value); 612 614 if (ACPI_FAILURE(status)) { 613 - goto unlock_and_exit; 615 + goto exit; 614 616 } 615 617 616 618 /* Insert the bits to be preserved */ ··· 618 632 acpi_hw_low_level_write(16, value, 619 633 &acpi_gbl_FADT.xpm1a_event_block); 620 634 if (ACPI_FAILURE(status)) { 621 - goto unlock_and_exit; 635 + goto exit; 622 636 } 623 637 624 638 /* PM1B is optional */ ··· 633 647 status = 634 648 acpi_hw_low_level_write(16, value, &acpi_gbl_xpm1a_enable); 635 649 if (ACPI_FAILURE(status)) { 636 - goto unlock_and_exit; 650 + goto exit; 637 651 } 638 652 639 653 /* PM1B is optional */ ··· 647 661 /* 648 662 * Perform a read first to preserve certain bits (per ACPI spec) 649 663 */ 650 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 651 - ACPI_REGISTER_PM1_CONTROL, 664 + status = acpi_hw_register_read(ACPI_REGISTER_PM1_CONTROL, 652 665 &read_value); 653 666 if (ACPI_FAILURE(status)) { 654 - goto unlock_and_exit; 667 + goto exit; 655 668 } 656 669 657 670 /* Insert the bits to be preserved */ ··· 664 679 acpi_hw_low_level_write(16, value, 665 680 &acpi_gbl_FADT.xpm1a_control_block); 666 681 if (ACPI_FAILURE(status)) { 667 - goto unlock_and_exit; 682 + goto exit; 668 683 } 669 684 670 685 status = ··· 713 728 break; 714 729 } 715 730 716 - unlock_and_exit: 717 - if (ACPI_MTX_LOCK == use_lock) { 718 - acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags); 719 - } 720 - 731 + exit: 721 732 return_ACPI_STATUS(status); 722 733 } 723 734
+9 -18
drivers/acpi/hardware/hwsleep.c
··· 313 313 314 314 /* Get current value of PM1A control */ 315 315 316 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 317 - ACPI_REGISTER_PM1_CONTROL, &PM1Acontrol); 316 + status = acpi_hw_register_read(ACPI_REGISTER_PM1_CONTROL, &PM1Acontrol); 318 317 if (ACPI_FAILURE(status)) { 319 318 return_ACPI_STATUS(status); 320 319 } ··· 340 341 341 342 /* Write #1: fill in SLP_TYP data */ 342 343 343 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 344 - ACPI_REGISTER_PM1A_CONTROL, 344 + status = acpi_hw_register_write(ACPI_REGISTER_PM1A_CONTROL, 345 345 PM1Acontrol); 346 346 if (ACPI_FAILURE(status)) { 347 347 return_ACPI_STATUS(status); 348 348 } 349 349 350 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 351 - ACPI_REGISTER_PM1B_CONTROL, 350 + status = acpi_hw_register_write(ACPI_REGISTER_PM1B_CONTROL, 352 351 PM1Bcontrol); 353 352 if (ACPI_FAILURE(status)) { 354 353 return_ACPI_STATUS(status); ··· 361 364 362 365 ACPI_FLUSH_CPU_CACHE(); 363 366 364 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 365 - ACPI_REGISTER_PM1A_CONTROL, 367 + status = acpi_hw_register_write(ACPI_REGISTER_PM1A_CONTROL, 366 368 PM1Acontrol); 367 369 if (ACPI_FAILURE(status)) { 368 370 return_ACPI_STATUS(status); 369 371 } 370 372 371 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 372 - ACPI_REGISTER_PM1B_CONTROL, 373 + status = acpi_hw_register_write(ACPI_REGISTER_PM1B_CONTROL, 373 374 PM1Bcontrol); 374 375 if (ACPI_FAILURE(status)) { 375 376 return_ACPI_STATUS(status); ··· 387 392 */ 388 393 acpi_os_stall(10000000); 389 394 390 - status = acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 391 - ACPI_REGISTER_PM1_CONTROL, 395 + status = acpi_hw_register_write(ACPI_REGISTER_PM1_CONTROL, 392 396 sleep_enable_reg_info-> 393 397 access_bit_mask); 394 398 if (ACPI_FAILURE(status)) { ··· 514 520 515 521 /* Get current value of PM1A control */ 516 522 517 - status = acpi_hw_register_read(ACPI_MTX_DO_NOT_LOCK, 518 - ACPI_REGISTER_PM1_CONTROL, 523 + status = acpi_hw_register_read(ACPI_REGISTER_PM1_CONTROL, 519 524 &PM1Acontrol); 520 525 if (ACPI_SUCCESS(status)) { 521 526 ··· 536 543 537 544 /* Just ignore any errors */ 538 545 539 - (void)acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 540 - ACPI_REGISTER_PM1A_CONTROL, 546 + (void)acpi_hw_register_write(ACPI_REGISTER_PM1A_CONTROL, 541 547 PM1Acontrol); 542 - (void)acpi_hw_register_write(ACPI_MTX_DO_NOT_LOCK, 543 - ACPI_REGISTER_PM1B_CONTROL, 548 + (void)acpi_hw_register_write(ACPI_REGISTER_PM1B_CONTROL, 544 549 PM1Bcontrol); 545 550 } 546 551 }
+2 -2
include/acpi/achware.h
··· 71 71 struct acpi_bit_register_info *acpi_hw_get_bit_register_info(u32 register_id); 72 72 73 73 acpi_status 74 - acpi_hw_register_read(u8 use_lock, u32 register_id, u32 * return_value); 74 + acpi_hw_register_read(u32 register_id, u32 * return_value); 75 75 76 - acpi_status acpi_hw_register_write(u8 use_lock, u32 register_id, u32 value); 76 + acpi_status acpi_hw_register_write(u32 register_id, u32 value); 77 77 78 78 acpi_status 79 79 acpi_hw_low_level_read(u32 width,