TencentOS-kernel/drivers
James Morse feba61061b BACKPORT: ACPI / APEI: Kick the memory_failure() queue for synchronous errors
memory_failure() offlines or repairs pages of memory that have been
discovered to be corrupt. These may be detected by an external
component, (e.g. the memory controller), and notified via an IRQ.
In this case the work is queued as not all of memory_failure()s work
can happen in IRQ context.

If the error was detected as a result of user-space accessing a
corrupt memory location the CPU may take an abort instead. On arm64
this is a 'synchronous external abort', and on a firmware first
system it is replayed using NOTIFY_SEA.

This notification has NMI like properties, (it can interrupt
IRQ-masked code), so the memory_failure() work is queued. If we
return to user-space before the queued memory_failure() work is
processed, we will take the fault again. This loop may cause platform
firmware to exceed some threshold and reboot when Linux could have
recovered from this error.

For NMIlike notifications keep track of whether memory_failure() work
was queued, and make task_work pending to flush out the queue.
To save memory allocations, the task_work is allocated as part of
the ghes_estatus_node, and free()ing it back to the pool is deferred.

This patch is needed because Quicksilver firmware-first error handling
uses the SDEI notification type for communication between trusted
firmware and the OS. This adds needed NMI and SDEI functionality so
that the SDEI path in the kernel through APEI acts as an NMI and is
properly wired up to the APEI interfaces.

Backported from: https://patchwork.kernel.org/patch/10786981/

Cherry pick from: ac5d13a052

Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Tyler Baicar <tyler@amperecomputing.com>
2021-03-16 16:43:59 +08:00
..
accessibility
acpi BACKPORT: ACPI / APEI: Kick the memory_failure() queue for synchronous errors 2021-03-16 16:43:59 +08:00
amba
android binder: add flag to clear buffer on txn complete 2021-03-16 16:43:28 +08:00
ata ata: sata_nv: Fix retrieving of active qcs 2021-03-16 16:39:39 +08:00
atm atm: nicstar: Unmap DMA on send error 2021-03-16 16:41:03 +08:00
auxdisplay
base PM: runtime: Resume the device earlier in __device_release_driver() 2021-03-16 16:40:31 +08:00
bcma
block null_blk: Fix zone size initialization 2021-03-16 16:43:51 +08:00
bluetooth Bluetooth: hci_h5: close serdev device and free hu in h5_close 2021-03-16 16:43:52 +08:00
bus bus: fsl-mc: fix error return code in fsl_mc_object_allocate() 2021-03-16 16:43:09 +08:00
cdrom
char virtio: virtio_console: fix DMA memory allocation for rproc serial 2021-03-16 16:40:54 +08:00
clk clk: tegra: Do not return 0 on failure 2021-03-16 16:43:44 +08:00
clocksource clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI 2021-03-16 16:43:03 +08:00
connector
counter
cpufreq cpufreq: scpi: Add missing MODULE_ALIAS 2021-03-16 16:43:05 +08:00
cpuidle cpuidle: Fixup IRQ state 2021-03-16 16:35:25 +08:00
crypto crypto: atmel-i2c - select CONFIG_BITREVERSE 2021-03-16 16:43:12 +08:00
dax device-dax/core: Fix memory leak when rmmod dax.ko 2021-03-16 16:43:45 +08:00
dca
devfreq PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out 2021-03-16 16:36:35 +08:00
dio
dma dmaengine: mv_xor_v2: Fix error return code in mv_xor_v2_probe() 2021-03-16 16:42:52 +08:00
dma-buf dma-buf/dma-resv: Respect num_fences when initializing the shared fence list. 2021-03-16 16:43:45 +08:00
edac EDAC/amd64: Fix PCI component registration 2021-03-16 16:43:29 +08:00
eisa
extcon extcon: max77693: Fix modalias string 2021-03-16 16:43:12 +08:00
firewire
firmware efi: EFI_EARLYCON should depend on EFI 2021-03-16 16:41:46 +08:00
fpga fpga: dfl: fix bug in port reset handshake 2021-03-16 16:32:23 +08:00
fsi
gnss
gpio gpio: eic-sprd: break loop when getting NULL device resource 2021-03-16 16:42:27 +08:00
gpu drm/i915: Fix mismatch between misplaced vma check and vma insert 2021-03-16 16:43:37 +08:00
greybus
hid HID: i2c-hid: add Vero K147 to descriptor override 2021-03-16 16:42:34 +08:00
hsi HSI: omap_ssi: Don't jump to free ID in ssi_add_controller() 2021-03-16 16:42:54 +08:00
hv Drivers: hv: vmbus: Allow cleanup of VMBUS_CONNECT_CPU if disconnected 2021-03-16 16:41:31 +08:00
hwmon hwmon: Add Ampere Altra HW monitor driver 2021-03-16 16:43:59 +08:00
hwspinlock
hwtracing coresight: etb10: Fix possible NULL ptr dereference in etb_enable_perf() 2021-03-16 16:42:33 +08:00
i2c Revert "i2c: i2c-qcom-geni: Fix DMA transfer race" 2021-03-16 16:42:37 +08:00
i3c i3c master: fix missing destroy_workqueue() on error in i3c_master_register 2021-03-16 16:43:55 +08:00
ide
idle
iio iio:adc:ti-ads124s08: Fix alignment and data leak issues. 2021-03-16 16:43:43 +08:00
infiniband RDMA/cma: Don't overwrite sgid_attr after device is released 2021-03-16 16:43:15 +08:00
input Input: cyapa_gen6 - fix out-of-bounds stack access 2021-03-16 16:43:23 +08:00
interconnect interconnect: qcom: qcs404: Remove GPU and display RPM IDs 2021-03-16 16:42:11 +08:00
iommu iommu/amd: Set DTE[IntTabLen] to represent 512 IRTEs 2021-03-16 16:42:06 +08:00
ipack
irqchip irqchip/alpine-msi: Fix freeing of interrupts on allocation error path 2021-03-16 16:43:13 +08:00
isdn
leds leds: bcm6328, bcm6358: use devres LED registering function 2021-03-16 16:39:56 +08:00
lightnvm lightnvm: fix out-of-bounds write to array devices->info[] 2021-03-16 16:39:10 +08:00
macintosh macintosh/via-macii: Access autopoll_devs when inside lock 2021-03-16 16:33:39 +08:00
mailbox mailbox: avoid timer start from callback 2021-03-16 16:38:59 +08:00
mcb
md dm verity: skip verity work if I/O error when system is shutting down 2021-03-16 16:43:56 +08:00
media media: gp8psk: initialize stats at power control logic 2021-03-16 16:43:53 +08:00
memory memory: emif: Remove bogus debugfs error handling 2021-03-16 16:39:52 +08:00
memstick memstick: r592: Fix error return in r592_probe() 2021-03-16 16:43:02 +08:00
message scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() 2021-03-16 16:39:58 +08:00
mfd mfd: sprd: Add wakeup capability for PMIC IRQ 2021-03-16 16:40:48 +08:00
misc misc: vmw_vmci: fix kernel info-leak by initializing dbells in vmci_ctx_get_chkpt_doorbells() 2021-03-16 16:43:52 +08:00
mmc mmc: pxamci: Fix error return code in pxamci_probe 2021-03-16 16:42:51 +08:00
mtd mtd: rawnand: meson: fix meson_nfc_dma_buffer_release() arguments 2021-03-16 16:43:41 +08:00
mux
net bpf: Convert bpf_prog refcnt to atomic64_t 2021-03-16 16:43:58 +08:00
nfc nfc: s3fwrn5: Release the nfc firmware 2021-03-16 16:43:15 +08:00
ntb NTB: hw: amd: fix an issue about leak system resources 2021-03-16 16:39:10 +08:00
nubus
nvdimm libnvdimm/namespace: Fix reaping of invalidated block-window-namespace labels 2021-03-16 16:43:46 +08:00
nvme nvme: free sq/cq dbbuf pointers when dbbuf set fails 2021-03-16 16:41:39 +08:00
nvmem nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell() 2021-03-16 16:38:43 +08:00
of of/address: Fix of_node memory leak in of_dma_is_coherent 2021-03-16 16:40:51 +08:00
opp opp: Reduce the size of critical section in _opp_table_kref_release() 2021-03-16 16:40:41 +08:00
oprofile
parisc parisc: mask out enable and reserved bits from sba imask 2021-03-16 16:33:54 +08:00
parport
pci drivers/pci: Add ecam quirk for Ampere Altra SOC. 2021-03-16 16:43:59 +08:00
pcmcia
perf drivers/perf: thunderx2_pmu: Fix memory resource error handling 2021-03-16 16:38:23 +08:00
phy phy: renesas: rcar-gen3-usb2: disable runtime pm in case of failure 2021-03-16 16:43:03 +08:00
pinctrl pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler 2021-03-16 16:43:44 +08:00
platform platform/x86: intel-vbtn: Allow switch events on Acer Switch Alpha 12 2021-03-16 16:43:46 +08:00
pnp
power power: supply: bq24190_charger: fix reference leak 2021-03-16 16:42:55 +08:00
powercap powercap: restrict energy meter to root access 2021-03-16 16:40:32 +08:00
pps
ps3 powerpc/ps3: use dma_mapping_error() 2021-03-16 16:43:15 +08:00
ptp
pwm pwm: lp3943: Dynamically allocate PWM chip base 2021-03-16 16:43:18 +08:00
rapidio rapidio: fix the missed put_device() for rio_mport_add_riodev 2021-03-16 16:38:59 +08:00
ras
regulator regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x 2021-03-16 16:43:47 +08:00
remoteproc remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio() 2021-03-16 16:43:11 +08:00
reset
rpmsg rpmsg: glink: Use complete_all for open states 2021-03-16 16:39:50 +08:00
rtc rtc: pl031: fix resource leak in pl031_probe 2021-03-16 16:43:54 +08:00
s390 s390/dasd: fix list corruption of lcu list 2021-03-16 16:43:28 +08:00
sbus
scsi BACKPORT: scsi: mpt3sas: Don't call disable_irq from IRQ poll handler 2021-03-16 16:43:59 +08:00
sfi
sh
siox
slimbus slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI 2021-03-16 16:42:54 +08:00
soc soc: qcom: smp2p: Safely acquire spinlock without IRQs 2021-03-16 16:43:40 +08:00
soundwire soundwire: bus: disable pm_runtime in sdw_slave_delete 2021-03-16 16:36:55 +08:00
spi spi: atmel-quadspi: Fix AHB memory accesses 2021-03-16 16:43:40 +08:00
spmi
ssb
staging staging: comedi: mf6x4: Fix AI end-of-conversion detection 2021-03-16 16:43:28 +08:00
target scsi: target: iscsi: Fix cmd abort fabric stop race 2021-03-16 16:41:40 +08:00
tc
tee optee: add writeback to valid memory type 2021-03-16 16:41:45 +08:00
thermal thermal/drivers/cpufreq_cooling: Update cpufreq_state only if state has changed 2021-03-16 16:43:48 +08:00
thunderbolt thunderbolt: Fix use-after-free in remove_unplugged_switch() 2021-03-16 16:42:03 +08:00
tty serial_core: Check for port state when tty is in error state 2021-03-16 16:42:34 +08:00
uio uio: avoid to request_irq when the legacy irq is not connected 2021-03-16 16:43:58 +08:00
usb USB: serial: keyspan_pda: fix write unthrottling 2021-03-16 16:43:31 +08:00
vfio vfio/pci: Move dummy_resources_list init in vfio_pci_probe() 2021-03-16 16:43:49 +08:00
vhost vhost scsi: fix cmd completion race 2021-03-16 16:41:39 +08:00
video video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init() 2021-03-16 16:42:47 +08:00
virt drivers/virt/fsl_hypervisor: Fix error handling path 2021-03-16 16:38:36 +08:00
virtio virtio_ring: Fix two use after free bugs 2021-03-16 16:43:19 +08:00
visorbus
vlynq
vme
w1 w1: mxc_w1: Fix timeout resolution problem leading to bus error 2021-03-16 16:39:58 +08:00
watchdog watchdog: coh901327: add COMMON_CLK dependency 2021-03-16 16:43:17 +08:00
xen xenbus/xenbus_backend: Disallow pending watch messages 2021-03-16 16:43:46 +08:00
zorro
Kconfig
Makefile