linux-stable/drivers
Shanker Donthineni 04568f4df2 irqchip/gic-v3: Fix the driver probe() fail due to disabled GICC entry
[ Upstream commit ebe2f87180 ]

The ACPI specification says OS shouldn't attempt to use GICC configuration
parameters if the flag ACPI_MADT_ENABLED is cleared. The ARM64-SMP code
skips the disabled GICC entries but not causing any issue. However the
current GICv3 driver probe bails out causing kernel panic() instead of
skipping the disabled GICC interfaces. This issue happens on systems
where redistributor regions are not in the always-on power domain and
one of GICC interface marked with ACPI_MADT_ENABLED=0.

This patch does the two things to fix the panic.
  - Don't return an error in gic_acpi_match_gicc() for disabled GICC entry.
  - No need to keep GICR region information for disabled GICC entry.

Observed kernel crash on QDF2400 platform GICC entry is disabled.
Kernel crash traces:
  Kernel panic - not syncing: No interrupt controller found.
  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.13.5 #26
  [<ffff000008087770>] dump_backtrace+0x0/0x218
  [<ffff0000080879dc>] show_stack+0x14/0x20
  [<ffff00000883b078>] dump_stack+0x98/0xb8
  [<ffff0000080c5c14>] panic+0x118/0x26c
  [<ffff000008b62348>] init_IRQ+0x24/0x2c
  [<ffff000008b609fc>] start_kernel+0x230/0x394
  [<ffff000008b601e4>] __primary_switched+0x64/0x6c
  ---[ end Kernel panic - not syncing: No interrupt controller found.

Disabled GICC subtable example:
                   Subtable Type : 0B [Generic Interrupt Controller]
                          Length : 50
                        Reserved : 0000
            CPU Interface Number : 0000003D
                   Processor UID : 0000003D
           Flags (decoded below) : 00000000
               Processor Enabled : 0
 Performance Interrupt Trig Mode : 0
 Virtual GIC Interrupt Trig Mode : 0
        Parking Protocol Version : 00000000
           Performance Interrupt : 00000017
                  Parked Address : 0000000000000000
                    Base Address : 0000000000000000
        Virtual GIC Base Address : 0000000000000000
     Hypervisor GIC Base Address : 0000000000000000
           Virtual GIC Interrupt : 00000019
      Redistributor Base Address : 0000FFFF88F40000
                       ARM MPIDR : 000000000000000D
                Efficiency Class : 00
                        Reserved : 000000
Signed-off-by: Shanker Donthineni <shankerd@codeaurora.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-04-12 12:32:14 +02:00
..
accessibility
acpi ACPI / video: Default lcd_only to true on Win8-ready and newer machines 2018-04-12 12:32:13 +02:00
amba
android binder: replace "%p" with "%pK" 2018-02-25 11:07:52 +01:00
ata libata: Modify quirks for MX100 to limit NCQ_TRIM quirk to MU01 version 2018-03-28 18:24:37 +02:00
atm atm: horizon: Fix irq release error 2017-12-14 09:53:13 +01:00
auxdisplay auxdisplay: img-ascii-lcd: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE 2018-02-07 11:12:20 -08:00
base Revert "base: arch_topology: fix section mismatch build warnings" 2018-04-08 14:26:32 +02:00
bcma
block loop: Fix lost writes caused by missing flag 2018-03-15 10:54:32 +01:00
bluetooth Bluetooth: Add a new 04ca:3015 QCA_ROME device 2018-04-12 12:32:11 +02:00
bus sunxi-rsb: Include OF based modalias in device uevent 2018-01-10 09:31:19 +01:00
cdrom
char /dev/mem: Avoid overwriting "err" in read_mem() 2018-04-08 14:26:31 +02:00
clk clk: sunxi-ng: a83t: Add M divider to TCON1 clock 2018-04-12 12:32:14 +02:00
clocksource clocksource/drivers/stm32: Fix kernel panic with multiple timers 2018-02-16 20:23:09 +01:00
connector
cpufreq Revert "cpufreq: Fix governor module removal race" 2018-04-08 14:26:34 +02:00
cpuidle cpuidle: fix broadcast control when broadcast can not be entered 2017-12-25 14:26:30 +01:00
crypto crypto: ccp - return an actual key size from RSA max_size callback 2018-04-08 14:26:32 +02:00
dax dev/dax: fix uninitialized variable build warning 2017-12-20 10:10:34 +01:00
dca
devfreq PM / devfreq: Fix potential NULL pointer dereference in governor_store 2018-04-12 12:32:13 +02:00
dio
dma dmaengine: ti-dma-crossbar: Fix event mapping for TPCC_EVT_MUX_60_63 2018-03-24 11:01:28 +01:00
dma-buf dma-buf/fence: Fix lock inversion within dma-fence-array 2018-03-19 08:42:47 +01:00
edac EDAC, sb_edac: Fix out of bound writes during DIMM configuration on KNL 2018-03-08 22:41:20 -08:00
eisa
extcon extcon: int3496: process id-pin first so that we start with the right status 2018-02-28 10:19:39 +01:00
firewire
firmware firmware/psci: Expose SMCCC version through psci_ops 2018-02-16 20:22:56 +01:00
fmc
fpga fpga: region: release of_parse_phandle nodes after use 2018-02-07 11:12:26 -08:00
fsi
gpio gpio: davinci: Assign first bank regs for unbanked case 2018-02-25 11:07:56 +01:00
gpu clk: divider: fix incorrect usage of container_of 2018-04-12 12:32:13 +02:00
hid HID: elo: clear BTN_LEFT mapping 2018-03-19 08:42:47 +01:00
hsi
hv Drivers: hv: vmbus: Fix ring buffer signaling 2018-03-28 18:24:34 +02:00
hwmon hwmon: (ina2xx) Make calibration register value fixed 2018-04-12 12:32:13 +02:00
hwspinlock
hwtracing coresight: Fix disabling of CoreSight TPIU 2018-03-24 11:01:26 +01:00
i2c i2c: i2c-stm32f7: fix no check on returned setup 2018-04-08 14:26:27 +02:00
ide ide: ide-atapi: fix compile error with defining macro DEBUG 2017-12-17 15:08:00 +01:00
idle Revert "x86/mm: Stop calling leave_mm() in idle code" 2017-11-04 15:01:50 +01:00
iio iio: imu: st_lsm6dsx: fix endianness in st_lsm6dsx_read_oneshot() 2018-03-28 18:24:49 +02:00
infiniband RDMA/cma: Mark end of CMA ID messages 2018-04-12 12:32:13 +02:00
input Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad 2018-04-08 14:26:33 +02:00
iommu iommu/vt-d: clean up pr_irq if request_threaded_irq fails 2018-03-24 11:01:26 +01:00
ipack
irqchip irqchip/gic-v3: Fix the driver probe() fail due to disabled GICC entry 2018-04-12 12:32:14 +02:00
isdn
leds leds: pm8058: Silence pointer to integer size warning 2018-03-19 08:42:50 +01:00
lightnvm lightnvm: pblk: protect line bitmap while submitting meta io 2017-12-20 10:10:38 +01:00
macintosh
mailbox mailbox: mailbox-test: don't rely on rx_buffer content to signal data ready 2017-12-14 09:53:12 +01:00
mcb
md dm raid: fix raid set size revalidation 2018-03-19 08:42:54 +01:00
media media: videobuf2-core: don't go out of the buffer range 2018-04-12 12:32:14 +02:00
memory
memstick
message
mfd mfd: twl6040: Fix child-node lookup 2017-12-29 17:53:46 +01:00
misc mei: remove dev_err message on an unsupported ioctl 2018-04-08 14:26:31 +02:00
mmc mmc: dw_mmc: fix falling from idmac to PIO mode when dw_mci_reset occurs 2018-03-28 18:24:32 +02:00
mtd mtd: nand: atmel: Fix get_sectorsize() function 2018-04-08 14:26:26 +02:00
mux mux: core: fix double get_device() 2018-01-17 09:45:27 +01:00
net net/mlx4_en: Change default QoS settings 2018-04-12 12:32:13 +02:00
nfc
ntb
nubus
nvdimm libnvdimm, {btt, blk}: do integrity setup before add_disk() 2018-03-28 18:24:41 +02:00
nvme nvme-rdma: don't suppress send completions 2018-03-08 22:41:26 -08:00
nvmem
of of_mdio: avoid MDIO bus removal when a PHY is missing 2018-03-03 10:24:37 +01:00
oprofile
parisc parisc: Hide Diva-built-in serial aux and graphics card 2017-12-29 17:53:47 +01:00
parport parport_pc: Add support for WCH CH382L PCI-E single parallel port card. 2018-04-08 14:26:31 +02:00
pci PCI: Add function 1 DMA alias quirk for Highpoint RocketRAID 644L 2018-03-28 18:24:32 +02:00
pcmcia
perf
phy phy: qcom-ufs: add MODULE_LICENSE tag 2018-04-08 14:26:30 +02:00
pinctrl pinctrl: samsung: Validate alias coming from DT 2018-03-28 18:24:34 +02:00
platform platform/chrome: Use proper protocol transfer function 2018-03-24 11:01:23 +01:00
pnp
power power: supply: ab8500_charger: Bail out in case of error in 'ab8500_charger_init_hw_registers()' 2018-03-19 08:42:50 +01:00
powercap
pps
ps3
ptp
pwm pwm: stmpe: Fix wrong register offset for hwpwm=2 case 2018-03-19 08:42:51 +01:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: fix resource leak in error handling path in 'rio_dma_transfer()' 2017-12-14 09:53:08 +01:00
ras
regulator regulator: stm32-vrefbuf: fix check on ready flag 2018-03-15 10:54:28 +01:00
remoteproc
reset
rpmsg rpmsg: glink: Initialize the "intent_req_comp" completion variable 2017-12-20 10:10:29 +01:00
rtc clk: divider: fix incorrect usage of container_of 2018-04-12 12:32:13 +02:00
s390 s390/qeth: on channel error, reject further cmd requests 2018-03-31 18:10:43 +02:00
sbus
scsi scsi: mpt3sas: Proper handling of set/clear of "ATA command pending" flag. 2018-04-12 12:32:14 +02:00
sfi
sh
sn
soc soc/fsl/qbman: fix issue in qman_delete_cgr_safe() 2018-03-31 18:10:42 +02:00
spi spi: sh-msiof: Fix timeout failures for TX-only DMA transfers 2018-04-12 12:32:14 +02:00
spmi
ssb
staging staging: comedi: ni_mio_common: ack ai fifo error interrupts. 2018-04-08 14:26:32 +02:00
target iscsi-target: make sure to wake up sleeping login worker 2018-02-22 15:42:29 +01:00
tc
tee optee: fix invalid of_node_put() in optee_driver_init() 2017-12-25 14:26:24 +01:00
thermal thermal: power_allocator: fix one race condition issue for thermal_instances list 2018-04-12 12:32:12 +02:00
thunderbolt thunderbolt: tb: fix use after free in tb_activate_pcie_devices 2017-12-20 10:10:24 +01:00
tty vt: change SGR 21 to follow the standards 2018-04-08 14:26:33 +02:00
uio
usb USB: serial: cp210x: add ELDAT Easywave RX09 id 2018-04-08 14:26:30 +02:00
uwb
vfio vfio: disable filesystem-dax page pinning 2018-03-08 22:41:06 -08:00
vhost vhost: use mutex_lock_nested() in vhost_dev_lock_vqs() 2018-02-25 11:07:45 +01:00
video omapdrm: panel: fix compatible vendor string for td028ttec1 2018-03-24 11:01:25 +01:00
virt
virtio virtio_ring: fix num_free handling in error case 2018-03-15 10:54:32 +01:00
vlynq
vme
w1
watchdog watchdog: dw_wdt: add stop watchdog operation 2018-04-12 12:32:13 +02:00
xen xen/gntdev: Fix partial gntdev_mmap() cleanup 2018-03-03 10:24:37 +01:00
zorro
Kconfig
Makefile usb: build drivers/usb/common/ when USB_SUPPORT is set 2018-02-25 11:07:53 +01:00