linux/drivers
Mika Westerberg a252d881c5 ACPI / platform: Pay attention to parent device's resources
Given following simplified device hierarchy:

  // PCI device having BAR0 (RMEM) split between 4 GPIO devices.
  Device (P2S)
  {
      Name (_ADR, 0x000d0000)

      Device (GPO0)
      {
          Name (_HID, "INT3452")
          Name (_UID, 1)
          Name (_CRS, ResourceTemplate () {
              Memory32Fixed (ReadWrite, 0, 0x4000, RMEM + 0x0000)
          })
      }

      Device (GPO1)
      {
          Name (_HID, "INT3452")
          Name (_UID, 2)
          Name (_CRS, ResourceTemplate () {
              Memory32Fixed (ReadWrite, 0, 0x4000, RMEM + 0x4000)
          })
      }

      Device (GPO2)
      {
          Name (_HID, "INT3452")
          Name (_UID, 3)
          Name (_CRS, ResourceTemplate () {
              Memory32Fixed (ReadWrite, 0, 0x4000, RMEM + 0x8000)
          })
      }

      Device (GPO3)
      {
          Name (_HID, "INT3452")
          Name (_UID, 4)
          Name (_CRS, ResourceTemplate () {
              Memory32Fixed (ReadWrite, 0, 0x4000, RMEM + 0xc000)
          })
      }
  }

The current ACPI platform enumeration code allocates resources from the
global MMIO resource pool (/proc/iomem) for all the four GPIO devices.
After this PCI core calls pcibios_resource_survey() to allocate resources
for all PCI devices including the parent device for these GPIO devices
(P2S). Since that resource range has already been reserved the allocation
fails.

The reason for this is that we never bother with parent device's resources
when ACPI platform devices are created.

Fix this by checking whether there is a parent device and in that case make
sure we assign correct parent resource to the resources for the child ACPI
platform device. Currently we only deal with parent devices if they are PCI
devices but we may expand this later to cover other bus types as well.

Reported-by: Aaron Durbin <adurbin@google.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2016-09-17 01:17:17 +02:00
..
accessibility
acpi ACPI / platform: Pay attention to parent device's resources 2016-09-17 01:17:17 +02:00
amba
android Revert "android: binder: fix dangling pointer comparison" 2016-08-18 17:21:37 +02:00
ata pata_ninja32: Avoid corrupting status flags 2016-08-30 11:59:47 -04:00
atm drivers: atm: nicstar: Use the correct function to free some resources 2016-07-19 11:30:26 -07:00
auxdisplay
base PM / runtime: Add _rcuidle suffix to allow rpm_idle() use from idle 2016-08-31 03:00:59 +02:00
bcma wireless-drivers-next patches for 4.8 2016-07-25 11:09:19 -07:00
block Revert "floppy: refactor open() flags handling" 2016-08-25 08:56:51 -06:00
bluetooth Bluetooth: btmrvl: reset is_suspending flag in failure path 2016-07-18 10:13:02 +02:00
bus ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
cdrom
char tpm: invalid self test error message 2016-09-03 08:27:37 +10:00
clk Some fixes for rk3399 register errors that revealed themself 2016-08-29 17:08:35 -07:00
clocksource clocksource/drivers/atmel-pit: Fix compilation error 2016-08-29 09:51:39 +02:00
connector
cpufreq cpufreq: dt: Add terminate entry for of_device_id tables 2016-08-31 02:49:05 +02:00
cpuidle powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
crypto crypto: vmx - fix null dereference in p8_aes_xts_crypt 2016-08-24 20:51:20 +08:00
dax dax: fix device-dax region base 2016-08-26 17:39:35 -07:00
dca
devfreq
dio
dma dmaengine: img-mdc: fix a possible NULL dereference 2016-08-22 11:57:49 +05:30
dma-buf dma-buf: Release module reference on creation failure 2016-07-18 14:10:49 +02:00
edac EDAC, skx_edac: Add EDAC driver for Skylake 2016-08-21 10:58:34 -07:00
eisa
extcon
firewire
firmware efi/capsule: Allocate whole capsule into virtual memory 2016-08-11 13:55:36 +02:00
fmc
fpga drivers/fpga/Kconfig: fix build failure 2016-08-04 08:50:07 -04:00
gpio gpio: make any OF dependent driver depend on OF_GPIO 2016-08-19 15:01:29 +02:00
gpu This pull request brings in fixes for VC4 3D in 4.8, most of which are 2016-09-02 15:55:15 +10:00
hid Merge branch 'for-4.8/hid-led' into for-linus 2016-07-28 10:49:23 +02:00
hsi
hv
hwmon hwmon: (it87) Add missing sysfs attribute group terminator 2016-08-29 05:31:31 -07:00
hwspinlock
hwtracing Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-29 13:55:30 -07:00
i2c i2c: meson: Use complete() instead of complete_all() 2016-08-15 00:55:34 +02:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2016-07-29 13:29:06 -07:00
idle Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-07-30 12:56:26 -07:00
iio Char/Misc driver fixes for 4.8-rc5 2016-09-03 11:38:43 -07:00
infiniband Merge branch 'misc-fixes' into k.o/for-4.8-rc 2016-08-25 11:17:10 -04:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-08-26 18:36:23 -07:00
iommu Merge branch 'for-joerg/arm-smmu/fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/will/linux into iommu/fixes 2016-08-22 12:33:56 +02:00
ipack
irqchip irqchip/mips-gic: Implement activate op for device domain 2016-08-22 18:37:51 +02:00
isdn
leds powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
lguest
lightnvm block: get rid of bio_rw and READA 2016-07-20 17:37:01 -06:00
macintosh drivers/macintosh: Delete owner assignment 2016-08-22 11:09:33 +10:00
mailbox mailbox: Fix format and type mismatches in Broadcom PDC driver 2016-07-28 21:27:31 +05:30
mcb
md - a stable fix in both DM crypt and DM log-writes for too large bios (as 2016-09-03 17:29:58 -07:00
media media updates for v4.8-rc1 2016-08-04 09:59:37 -04:00
memory MTD updates for v4.8: 2016-08-02 17:05:11 -04:00
memstick memstick: don't allocate unused major for ms_block 2016-08-02 17:31:41 -04:00
message
mfd ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
misc Char/Misc driver fixes for 4.8-rc5 2016-09-03 11:38:43 -07:00
mmc mmc: fix use-after-free of struct request 2016-08-25 14:11:43 -06:00
mtd This pull request contains mostly cleanups and minor 2016-08-04 19:51:49 -04:00
net Add Killer E2500 device ID in alx driver. 2016-08-29 00:23:50 -04:00
nfc NFC 4.8 pull request 2016-07-20 23:39:36 -07:00
ntb NTB: ntb_hw_intel: use local variable pdev 2016-08-05 10:34:13 -04:00
nubus
nvdimm nvdimm, btt: add a size attribute for BTTs 2016-08-08 09:26:14 -07:00
nvme Merge branch 'nvmf-4.8-rc' of git://git.infradead.org/nvme-fabrics into for-linus 2016-08-29 08:39:22 -06:00
nvmem
of of: fix reference counting in of_graph_get_endpoint_by_regs 2016-08-15 11:15:05 -05:00
oprofile
parisc dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
parport
pci PCI: Add pci_find_resource() 2016-09-17 01:16:03 +02:00
pcmcia
perf drivers/perf: arm_pmu: Fix NULL pointer dereference during probe 2016-09-02 17:17:52 +01:00
phy phy: sun9i-usb: fix error handling 2016-08-12 14:59:10 +05:30
pinctrl pinctrl: intel: merrifield: Add missed header 2016-08-10 15:46:28 +02:00
platform intel_pmic_gpio: Make explicitly non-modular 2016-08-28 22:31:52 -07:00
pnp PNP: pnpbios: add header file to fix build errors 2016-07-27 18:52:54 +02:00
power power_supply: tps65217-charger: fix missing platform_set_drvdata() 2016-08-15 23:10:44 +02:00
powercap
pps pps: do not crash when failed to register 2016-07-23 10:25:54 +09:00
ps3
ptp
pwm pwm: Changes for v4.8-rc1 2016-08-06 00:01:33 -04:00
rapidio rapidio/tsi721: fix incorrect detection of address translation condition 2016-09-01 17:52:02 -07:00
ras
regulator pwm: Changes for v4.8-rc1 2016-08-06 00:01:33 -04:00
remoteproc dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
reset
rpmsg
rtc RTC for 4.8 2016-08-05 09:48:22 -04:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2016-08-16 15:50:22 -07:00
sbus
scsi drivers/scsi/wd719x.c: remove last declaration using DEFINE_PCI_DEVICE_TABLE 2016-09-01 17:52:01 -07:00
sfi
sh
sn
soc ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
spi ARM: DT updates for v4.8 2016-08-01 18:37:45 -04:00
spmi
ssb
staging First round of IIO fixes for the 4.8 cycle. 2016-08-23 17:39:31 -04:00
target target: iblock_execute_sync_cache() should use bio_set_op_attrs() 2016-08-07 14:41:02 -06:00
tc
thermal thermal: imx: fix a possible NULL dereference 2016-08-19 21:34:08 +08:00
thunderbolt thunderbolt: Don't declare Falcon Ridge unsupported 2016-08-31 13:25:02 +02:00
tty serial: 8250: added acces i/o products quad and octal serial cards 2016-08-31 16:28:26 +02:00
uio
usb usb: musb: Fix locking errors for host only mode 2016-08-30 14:11:38 +02:00
uwb
vfio vfio/pci: Fix NULL pointer oops in error interrupt setup handling 2016-08-08 16:16:23 -06:00
vhost vhost/scsi: fix reuse of &vq->iov[out] in response 2016-08-23 17:16:57 +03:00
video dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
virt
virtio virtio: fix error handling for debug builds 2016-08-09 13:42:35 +03:00
vlynq
vme
w1 w1:omap_hdq: fix regression 2016-08-02 19:35:40 -04:00
watchdog watchdog: gpio_wdt: Fix missing platform_set_drvdata() in gpio_wdt_probe() 2016-07-27 10:47:43 +02:00
xen xenbus: don't look up transaction IDs for ordinary writes 2016-08-24 18:16:18 +01:00
zorro
Kconfig
Makefile virtio/vhost: new features for 4.8 2016-08-06 09:20:13 -04:00