linux/arch/x86/pci
Bjorn Helgaas 13cfc73216 PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11
Neither soft poweroff (transition to ACPI power state S5) nor
suspend-to-RAM (transition to state S3) works on the Macbook Pro 11,4 and
11,5.

The problem is related to the [mem 0x7fa00000-0x7fbfffff] space.  When we
use that space, e.g., by assigning it to the 00:1c.0 Root Port, the ACPI
Power Management 1 Control Register (PM1_CNT) at [io 0x1804] doesn't work
anymore.

Linux does a soft poweroff (transition to S5) by writing to PM1_CNT.  The
theory about why this doesn't work is:

  - The write to PM1_CNT causes an SMI
  - The BIOS SMI handler depends on something in
    [mem 0x7fa00000-0x7fbfffff]
  - When Linux assigns [mem 0x7fa00000-0x7fbfffff] to the 00:1c.0 Port, it
    covers up whatever the SMI handler uses, so the SMI handler no longer
    works correctly

Reserve the [mem 0x7fa00000-0x7fbfffff] space so we don't assign it to
anything.

This is voodoo programming, since we don't know what the real conflict is,
but we've failed to find the root cause.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=103211
Tested-by: thejoe@gmail.com
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org
Cc: Rafael J. Wysocki <rafael@kernel.org>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Chen Yu <yu.c.chen@intel.com>
2017-06-28 16:03:38 -05:00
..
acpi.c x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F 2017-01-11 09:11:15 -06:00
amd_bus.c x86/pci/amd-bus: Convert to hotplug state machine 2016-11-22 23:34:43 +01:00
broadcom_bus.c x86/PCI: Fix Broadcom CNB20LE unintended sign extension 2014-04-25 11:01:08 -06:00
bus_numa.c x86/PCI/ACPI: Fix regression caused by commit 4d6b4e69a2 2015-12-02 02:30:15 +01:00
bus_numa.h
ce4100.c
common.c x86/PCI: Implement pcibios_release_device to release IRQ from IOAPIC 2017-03-01 10:51:41 +01:00
direct.c
early.c
fixup.c PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11 2017-06-28 16:03:38 -05:00
i386.c pci-v4.12-changes 2017-05-08 19:03:25 -07:00
init.c
intel_mid_pci.c x86/pci: Use MRFLD abbreviation for Merrifield 2016-07-13 09:24:51 +02:00
irq.c Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()" 2016-02-27 08:52:20 -06:00
legacy.c x86/PCI: Make pci_subsys_init() static 2015-10-09 18:34:48 -05:00
Makefile x86/PCI: VMD: Move VMD driver to drivers/pci/host 2016-10-04 12:26:37 -05:00
mmconfig_32.c x86/boot/e820: Move asm/e820.h to asm/e820/api.h 2017-01-28 09:31:13 +01:00
mmconfig_64.c x86/boot/e820: Move asm/e820.h to asm/e820/api.h 2017-01-28 09:31:13 +01:00
mmconfig-shared.c x86/boot/e820: Use bool in query APIs 2017-01-28 22:55:25 +01:00
numachip.c x86: numachip: APIC driver cleanups 2014-11-04 18:17:27 +01:00
olpc.c
pcbios.c x86: use set_memory.h header 2017-05-08 17:15:13 -07:00
sta2x11-fixup.c treewide: Move dma_ops from struct dev_archdata into struct device 2017-01-24 12:23:35 -05:00
xen.c xen: Revert commits da72ff5bfc and 72a9b18629 2017-05-02 11:18:05 +02:00