.. | .. |
---|
536 | 536 | /* No delay is needed if we are in guest */ |
---|
537 | 537 | if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) |
---|
538 | 538 | return; |
---|
| 539 | + /* |
---|
| 540 | + * Modern (>=Nehalem) Intel systems use ACPI via intel_idle, |
---|
| 541 | + * not this code. Assume that any Intel systems using this |
---|
| 542 | + * are ancient and may need the dummy wait. This also assumes |
---|
| 543 | + * that the motivating chipset issue was Intel-only. |
---|
| 544 | + */ |
---|
| 545 | + if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL) |
---|
| 546 | + return; |
---|
539 | 547 | #endif |
---|
540 | | - /* Dummy wait op - must do something useless after P_LVL2 read |
---|
541 | | - because chipsets cannot guarantee that STPCLK# signal |
---|
542 | | - gets asserted in time to freeze execution properly. */ |
---|
| 548 | + /* |
---|
| 549 | + * Dummy wait op - must do something useless after P_LVL2 read |
---|
| 550 | + * because chipsets cannot guarantee that STPCLK# signal gets |
---|
| 551 | + * asserted in time to freeze execution properly |
---|
| 552 | + * |
---|
| 553 | + * This workaround has been in place since the original ACPI |
---|
| 554 | + * implementation was merged, circa 2002. |
---|
| 555 | + * |
---|
| 556 | + * If a profile is pointing to this instruction, please first |
---|
| 557 | + * consider moving your system to a more modern idle |
---|
| 558 | + * mechanism. |
---|
| 559 | + */ |
---|
543 | 560 | inl(acpi_gbl_FADT.xpm_timer_block.address); |
---|
544 | 561 | } |
---|
545 | 562 | |
---|