Yinghai Lu
545d6e189a
PCI / ACPI: Don't query OSC support with all possible controls
...
Found problem on system that firmware that could handle pci aer.
Firmware get error reporting after pci injecting error, before os boots.
But after os boots, firmware can not get report anymore, even pci=noaer
is passed.
Root cause: BIOS _OSC has problem with query bit checking.
It turns out that BIOS vendor is copying example code from ACPI Spec.
In ACPI Spec 5.0, page 290:
If (Not(And(CDW1,1))) // Query flag clear?
{ // Disable GPEs for features granted native control.
If (And(CTRL,0x01)) // Hot plug control granted?
{
Store(0,HPCE) // clear the hot plug SCI enable bit
Store(1,HPCS) // clear the hot plug SCI status bit
}
...
}
When Query flag is set, And(CDW1,1) will be 1, Not(1) will return 0xfffffffe.
So it will get into code path that should be for control set only.
BIOS acpi code should be changed to "If (LEqual(And(CDW1,1), 0)))"
Current kernel code is using _OSC query to notify firmware about support
from OS and then use _OSC to set control bits.
During query support, current code is using all possible controls.
So will execute code that should be only for control set stage.
That will have problem when pci=noaer or aer firmware_first is used.
As firmware have that control set for os aer already in query support stage,
but later will not os aer handling.
We should avoid passing all possible controls, just use osc_control_set
instead.
That should workaround BIOS bugs with affected systems on the field
as more bios vendors are copying sample code from ACPI spec.
Signed-off-by: Yinghai Lu <[email protected] >
Cc: [email protected]
Signed-off-by: Rafael J. Wysocki <[email protected] >
2013-03-30 02:07:17 +01:00
..
accessibility
acpi
PCI / ACPI: Don't query OSC support with all possible controls
2013-03-30 02:07:17 +01:00
amba
ARM: 7675/1: amba: tegra-ahb: Fix build error w/ PM_SLEEP w/o PM_RUNTIME
2013-03-15 17:20:02 +00:00
ata
Simple stuff. See one-line summaries.
2013-03-23 12:33:36 -07:00
atm
hlist: drop the node parameter from iterators
2013-02-27 19:10:24 -08:00
auxdisplay
base
ACPI and power management fixes for 3.9-rc2
2013-03-07 14:54:28 -08:00
bcma
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
2013-03-01 13:52:03 -05:00
block
Merge git://git.infradead.org/users/willy/linux-nvme
2013-03-22 16:43:53 -07:00
bluetooth
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
2013-03-13 13:29:56 -04:00
bus
cdrom
char
Simple virtio-rng fix.
2013-03-12 20:28:45 -07:00
clk
clk: vt8500: Fix "fix device clock divisor calculations"
2013-03-14 22:34:26 +01:00
clocksource
ImgTec Meta architecture changes for v3.9-rc1
2013-03-03 12:06:09 -08:00
connector
proc connector: reject unprivileged listener bumps
2013-02-27 13:08:35 -05:00
cpufreq
cpufreq / intel_pstate: Do not load on VM that does not report max P state.
2013-03-06 23:40:11 +01:00
cpuidle
arm-soc: soc-specific updates
2013-02-21 15:27:22 -08:00
crypto
Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
2013-02-25 15:56:15 -08:00
dca
dca: convert to idr_alloc()
2013-02-27 19:10:15 -08:00
devfreq
dio
dma
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
2013-03-03 10:20:22 -08:00
edac
EDAC: Merge mci.mem_is_per_rank with mci.csbased
2013-03-16 06:32:30 +01:00
eisa
extcon
Char/Misc driver patches for 3.9-rc1
2013-02-21 13:57:13 -08:00
firewire
firewire: convert to idr_alloc()
2013-02-27 19:10:15 -08:00
firmware
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2013-03-09 16:51:13 -08:00
gpio
Two patches for Device Tree on at91sam9x5/NAND.
2013-03-14 23:55:59 +01:00
gpu
KMS: fix EDID detailed timing frame rate
2013-03-23 10:46:10 -07:00
hid
Merge branch 'for-3.9/upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2013-03-08 14:42:52 -08:00
hsi
hsi: fix kernel-doc warnings
2013-03-01 13:39:00 -08:00
hv
Drivers: hv: vmbus: Use the new infrastructure for delivering VMBUS interrupts
2013-02-27 10:15:53 -08:00
hwmon
hwmon: (lm75.h) Update header inclusion
2013-03-18 21:19:49 +01:00
hwspinlock
i2c
Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
2013-03-23 12:32:14 -07:00
ide
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-02-26 20:16:07 -08:00
idle
Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-02-22 19:25:09 -08:00
iio
First round of iio fixes post the 3.9 merge window.
2013-03-06 05:48:24 +08:00
infiniband
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-03-19 13:20:51 -07:00
input
arm-soc: bug fixes for 3.9-rc3
2013-03-18 08:17:14 -07:00
iommu
iommu, x86: Add DMA remap fault reason
2013-03-06 09:41:51 +01:00
ipack
Char/Misc driver patches for 3.9-rc1
2013-02-21 13:57:13 -08:00
irqchip
irqchip: fix typo when moving gic_raise_softirq()
2013-03-04 17:15:33 -08:00
isdn
isdn: hisax: netjet requires VIRT_TO_BUS
2013-03-17 12:01:10 -04:00
leds
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds
2013-02-26 09:29:02 -08:00
lguest
All trivial, thanks to the stuff which didn't quite make it time.
2013-02-26 14:49:12 -08:00
macintosh
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2013-02-23 17:09:55 -08:00
mailbox
mailbox, pl320-ipc: remove __init from probe function
2013-03-04 14:23:11 +01:00
md
A few bugfixes for md
2013-03-23 15:49:49 -07:00
media
arm-soc: late OMAP changes
2013-02-28 20:00:40 -08:00
memory
memstick
memstick: move the dereference below the NULL test
2013-02-27 19:10:23 -08:00
message
mfd
mfd: twl4030-madc: Remove __exit_p annotation
2013-03-15 07:42:22 +01:00
misc
fs: Limit sys_mount to only request filesystem modules.
2013-03-03 19:36:31 -08:00
mmc
Merge branches 'devel-stable', 'fixes' and 'mmci' into for-linus
2013-03-03 00:32:50 +00:00
mtd
MTD fixes for 3.9
2013-03-18 08:27:41 -07:00
net
bnx2x: fix occasional statistics off-by-4GB error
2013-03-18 13:12:20 -04:00
nfc
ntb
nubus
of
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-02-21 17:40:58 -08:00
oprofile
fs: Limit sys_mount to only request filesystem modules.
2013-03-03 19:36:31 -08:00
parisc
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-02-26 20:16:07 -08:00
parport
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
2013-02-21 17:54:03 -08:00
pci
PCI: Use ROM images from firmware only if no other ROM source available
2013-03-19 14:51:14 -07:00
pcmcia
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2013-02-21 17:40:58 -08:00
pinctrl
ARM: at91: add gpio suspend/resume support when using pinctrl
2013-03-14 09:37:42 +01:00
platform
Platform: x86: chromeos_laptop : Add basic platform data for atmel devices
2013-03-08 16:03:29 -08:00
pnp
ACPI / glue: Add .match() callback to struct acpi_bus_type
2013-03-04 14:23:40 +01:00
power
power: convert to idr_alloc()
2013-02-27 19:10:18 -08:00
pps
drivers/pps/clients/pps-gpio.c: use devm_kzalloc
2013-02-27 19:10:23 -08:00
ps3
ptp
pwm
pwm: Changes for v3.9-rc1
2013-02-26 09:34:29 -08:00
rapidio
regulator
Merge remote-tracking branch 'regulator/fix/twl' into tmp
2013-03-05 10:12:43 +08:00
remoteproc
remoteproc: convert to idr_alloc()
2013-02-27 19:10:18 -08:00
rpmsg
rpmsg: convert to idr_alloc()
2013-02-27 19:10:18 -08:00
rtc
drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR
2013-03-22 16:41:20 -07:00
s390
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2013-03-19 13:20:51 -07:00
sbus
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-02-26 20:16:07 -08:00
scsi
ACPI / glue: Add .match() callback to struct acpi_bus_type
2013-03-04 14:23:40 +01:00
sfi
sh
sn
spi
arm-soc: soc-specific updates
2013-02-21 15:27:22 -08:00
ssb
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into mips-for-linux-next
2013-02-22 10:07:30 +01:00
staging
Merge branch 'akpm' (fixes from Andrew)
2013-03-13 15:21:57 -07:00
target
target/pscsi: Reject cross page boundary case in pscsi_map_sg
2013-03-19 17:31:14 -07:00
tc
thermal
thermal: exynos_thermal: return a proper error code while thermal_zone_device_register fail.
2013-03-11 23:09:29 +08:00
tty
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
2013-03-19 14:47:11 -07:00
uio
uio: convert to idr_alloc()
2013-02-27 19:10:19 -08:00
usb
USB: ti_usb_3410_5052: fix use-after-free in TIOCMIWAIT
2013-03-21 15:59:05 -07:00
uwb
vfio
vfio: include <linux/slab.h> for kmalloc
2013-03-15 12:58:20 -06:00
vhost
Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
2013-03-23 16:51:55 -07:00
video
drivers/video/ep93xx-fb.c: include <linux/io.h> for devm_ioremap()
2013-03-22 16:41:20 -07:00
virt
virtio
All trivial, thanks to the stuff which didn't quite make it time.
2013-02-26 14:49:12 -08:00
vlynq
vme
w1
w1: fix oops when w1_search is called from netlink connector
2013-03-12 16:20:46 -07:00
watchdog
watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2
2013-03-22 23:21:55 +01:00
xen
Fixes:
2013-03-12 20:25:53 -07:00
zorro
new helper: file_inode(file)
2013-02-22 23:31:31 -05:00
Kconfig
Char/Misc driver patches for 3.9-rc1
2013-02-21 13:57:13 -08:00
Makefile
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
2013-02-23 17:09:55 -08:00