This is the start of the stable review cycle for the 5.4.78 release.
There are 151 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Thu, 19 Nov 2020 12:20:51 +0000.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.78-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.4.78-rc1
Boris Protopopov <[email protected]>
Convert trailing spaces and periods in path components
Yunsheng Lin <[email protected]>
net: sch_generic: fix the missing new qdisc assignment bug
Jiri Olsa <[email protected]>
perf/core: Fix race in the perf_mmap_close() function
Arnaldo Carvalho de Melo <[email protected]>
perf scripting python: Avoid declaring function pointers with a visibility attribute
Anand K Mistry <[email protected]>
x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always-on STIBP
Christophe Leroy <[email protected]>
powerpc/603: Always fault when _PAGE_ACCESSED is not set
Venkata Sandeep Dhanalakota <[email protected]>
drm/i915: Correctly set SFC capability for video engines
Heiner Kallweit <[email protected]>
r8169: fix potential skb double free in an error path
Wang Hai <[email protected]>
tipc: fix memory leak in tipc_topsrv_start()
Martin Schiller <[email protected]>
net/x25: Fix null-ptr-deref in x25_connect
Mao Wenan <[email protected]>
net: Update window_clamp if SOCK_RCVBUF is set
Alexander Lobakin <[email protected]>
net: udp: fix UDP header access on Fast/frag0 UDP GRO
Ursula Braun <[email protected]>
net/af_iucv: fix null pointer dereference on shutdown
Oliver Herms <[email protected]>
IPv6: Set SIT tunnel hard_header_len to zero
Stefano Stabellini <[email protected]>
swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb"
Coiby Xu <[email protected]>
pinctrl: amd: fix incorrect way to disable debounce filter
Coiby Xu <[email protected]>
pinctrl: amd: use higher precision for 512 RtcClk
Thomas Zimmermann <[email protected]>
drm/gma500: Fix out-of-bounds access to struct drm_device.vblank[]
Al Viro <[email protected]>
don't dump the threads that had been already exiting when zapped.
Yoshihiro Shimoda <[email protected]>
mmc: renesas_sdhi_core: Add missing tmio_mmc_host_free() at remove
Yangbo Lu <[email protected]>
mmc: sdhci-of-esdhc: Handle pulse width detection erratum for more SoCs
Arnaud de Turckheim <[email protected]>
gpio: pcie-idio-24: Enable PEX8311 interrupts
Arnaud de Turckheim <[email protected]>
gpio: pcie-idio-24: Fix IRQ Enable Register value
Arnaud de Turckheim <[email protected]>
gpio: pcie-idio-24: Fix irq mask when masking
Chen Zhou <[email protected]>
selinux: Fix error return code in sel_ib_pkey_sid_slow()
Matthew Wilcox (Oracle) <[email protected]>
btrfs: fix potential overflow in cluster_pages_for_defrag on 32bit arch
Wengang Wang <[email protected]>
ocfs2: initialize ip_next_orphan
Matteo Croce <[email protected]>
reboot: fix overflow parsing reboot cpu number
Matteo Croce <[email protected]>
Revert "kernel/reboot.c: convert simple_strtoul to kstrtoint"
Laurent Dufour <[email protected]>
mm/slub: fix panic in slab_alloc_node()
Theodore Ts'o <[email protected]>
jbd2: fix up sparse warnings in checkpoint code
Dan Carpenter <[email protected]>
futex: Don't enable IRQs unconditionally in put_pi_state()
Alexander Usyskin <[email protected]>
mei: protect mei_cl_mtu from null dereference
Alexander Lobakin <[email protected]>
virtio: virtio_console: fix DMA memory allocation for rproc serial
Zhang Qilong <[email protected]>
xhci: hisilicon: fix refercence leak in xhci_histb_probe
Chris Brandt <[email protected]>
usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode
Shin'ichiro Kawasaki <[email protected]>
uio: Fix use-after-free in uio_unregister_device()
Jing Xiangfeng <[email protected]>
thunderbolt: Add the missed ida_simple_remove() in ring_request_msix()
Mika Westerberg <[email protected]>
thunderbolt: Fix memory leak if ida_simple_get() fails in enumerate_services()
Andrew Jones <[email protected]>
KVM: arm64: Don't hide ID registers from userspace
Anand Jain <[email protected]>
btrfs: dev-replace: fail mount if we don't have replace item with target device
Josef Bacik <[email protected]>
btrfs: fix min reserved size calculation in merge_reloc_root
Dinghao Liu <[email protected]>
btrfs: ref-verify: fix memory leak in btrfs_ref_tree_mod
Joseph Qi <[email protected]>
ext4: unlock xattr_sem properly in ext4_inline_data_truncate()
Kaixu Xia <[email protected]>
ext4: correctly report "not supported" for {usr,grp}jquota when !CONFIG_QUOTA
Gao Xiang <[email protected]>
erofs: derive atime instead of leaving it empty
Peter Zijlstra <[email protected]>
perf: Fix get_recursion_context()
Martin Willi <[email protected]>
vrf: Fix fast path output packet handling with async Netfilter rules
Wang Hai <[email protected]>
cosa: Add missing kfree in error path of cosa_write
Evan Nimmo <[email protected]>
of/address: Fix of_node memory leak in of_dma_is_coherent
Christoph Hellwig <[email protected]>
xfs: fix a missing unlock on error in xfs_fs_map_blocks
Sven Van Asbroeck <[email protected]>
lan743x: fix "BUG: invalid wait context" when setting rx mode
Darrick J. Wong <[email protected]>
xfs: fix brainos in the refcount scrubber's rmap fragment processor
Darrick J. Wong <[email protected]>
xfs: fix rmap key and record comparison functions
Darrick J. Wong <[email protected]>
xfs: set the unwritten bit in rmap lookup flags in xchk_bmap_get_rmapextents
Darrick J. Wong <[email protected]>
xfs: fix flags argument to rmap lookup when converting shared file rmaps
Vinicius Costa Gomes <[email protected]>
igc: Fix returning wrong statistics
Christoph Hellwig <[email protected]>
nbd: fix a block_device refcount leak in nbd_release
David Verbeiren <[email protected]>
bpf: Zero-fill re-used per-cpu map element
Chuck Lever <[email protected]>
SUNRPC: Fix general protection fault in trace_rpc_xdr_overflow()
Maor Gottlieb <[email protected]>
net/mlx5: Fix deletion of duplicate rules
Billy Tsai <[email protected]>
pinctrl: aspeed: Fix GPI only function problem.
Ard Biesheuvel <[email protected]>
bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE
Andrew Jeffery <[email protected]>
ARM: 9019/1: kprobes: Avoid fortify_panic() when copying optprobe template
Andy Shevchenko <[email protected]>
pinctrl: intel: Set default bias in case no particular value given
Baolin Wang <[email protected]>
mfd: sprd: Add wakeup capability for PMIC IRQ
Chunyan Zhang <[email protected]>
tick/common: Touch watchdog in tick_unfreeze() on all CPUs
Martin Hundebøll <[email protected]>
spi: bcm2835: remove use of uninitialized gpio flags variable
Jerry Snitselaar <[email protected]>
tpm_tis: Disable interrupts on ThinkPad T490s
Ulrich Hecht <[email protected]>
i2c: sh_mobile: implement atomic transfers
Sean Anderson <[email protected]>
riscv: Set text_offset correctly for M-Mode
Tommi Rantala <[email protected]>
selftests: proc: fix warning: _GNU_SOURCE redefined
Veerabadhran Gopalakrishnan <[email protected]>
amd/amdgpu: Disable VCN DPG mode for Picasso
Qii Wang <[email protected]>
i2c: mediatek: move dma reset before i2c reset
Fred Gao <[email protected]>
vfio/pci: Bypass IGD init in case of -ENODEV
Zhang Qilong <[email protected]>
vfio: platform: fix reference leak in vfio_platform_open
Qian Cai <[email protected]>
s390/smp: move rcu_cpu_starting() earlier
Suravee Suthikulpanit <[email protected]>
iommu/amd: Increase interrupt remapping table limit to 512 entries
Sagi Grimberg <[email protected]>
nvme-tcp: avoid repeated request completion
Sagi Grimberg <[email protected]>
nvme-rdma: avoid repeated request completion
Chao Leng <[email protected]>
nvme-tcp: avoid race between time out and tear down
Chao Leng <[email protected]>
nvme-rdma: avoid race between time out and tear down
Chao Leng <[email protected]>
nvme: introduce nvme_sync_io_queues
Sreekanth Reddy <[email protected]>
scsi: mpt3sas: Fix timeouts observed while reenabling IRQ
Hannes Reinecke <[email protected]>
scsi: scsi_dh_alua: Avoid crash during alua_bus_detach()
Qiujun Huang <[email protected]>
tracing: Fix the checking of stackidx in __ftrace_trace_stack
Ye Bin <[email protected]>
cfg80211: regulatory: Fix inconsistent format argument
Johannes Berg <[email protected]>
mac80211: always wind down STA state
Johannes Berg <[email protected]>
cfg80211: initialize wdev data earlier
Johannes Berg <[email protected]>
mac80211: fix use of skb payload instead of header
Evan Quan <[email protected]>
drm/amd/pm: do not use ixFEATURE_STATUS for checking smc running
Evan Quan <[email protected]>
drm/amd/pm: perform SMC reset on suspend/hibernation
Evan Quan <[email protected]>
drm/amdgpu: perform srbm soft reset always on SDMA resume
Keita Suzuki <[email protected]>
scsi: hpsa: Fix memory leak in hpsa_init_one()
Bob Peterson <[email protected]>
gfs2: check for live vs. read-only file system in gfs2_fitrim
Bob Peterson <[email protected]>
gfs2: Add missing truncate_inode_pages_final for sd_aspace
Bob Peterson <[email protected]>
gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free
Kai-Heng Feng <[email protected]>
ALSA: hda: Reinstate runtime_allow() for all hda controllers
Kai-Heng Feng <[email protected]>
ALSA: hda: Separate runtime and system suspend
Tommi Rantala <[email protected]>
selftests: pidfd: fix compilation errors due to wait.h
Colin Ian King <[email protected]>
selftests/ftrace: check for do_sys_openat2 in user-memory test
Evgeny Novikov <[email protected]>
usb: gadget: goku_udc: fix potential crashes in probe
Viresh Kumar <[email protected]>
opp: Reduce the size of critical section in _opp_table_kref_release()
Heikki Krogerus <[email protected]>
usb: dwc3: pci: add support for the Intel Alder Lake-S
Olivier Moysan <[email protected]>
ASoC: cs42l51: manage mclk shutdown delay
Srinivas Kandagatla <[email protected]>
ASoC: qcom: sdm845: set driver name correctly
Masashi Honma <[email protected]>
ath9k_htc: Use appropriate rs_datalen type
Maxim Levitsky <[email protected]>
KVM: x86: don't expose MSR_IA32_UMWAIT_CONTROL unconditionally
Stephen Boyd <[email protected]>
KVM: arm64: ARM_SMCCC_ARCH_WORKAROUND_1 doesn't return SMCCC_RET_NOT_REQUIRED
George Spelvin <[email protected]>
random32: make prandom_u32() output unpredictable
Tyler Hicks <[email protected]>
tpm: efi: Don't create binary_bios_measurements file for an empty log
Darrick J. Wong <[email protected]>
xfs: fix scrub flagging rtinherit even if there is no rt device
Brian Foster <[email protected]>
xfs: flush new eof page on truncate to avoid post-eof corruption
Joakim Zhang <[email protected]>
can: flexcan: flexcan_remove(): disable wakeup completely
Joakim Zhang <[email protected]>
can: flexcan: remove FLEXCAN_QUIRK_DISABLE_MECR quirk for LS1021A
Stephane Grosjean <[email protected]>
can: peak_canfd: pucan_handle_can_rx(): fix echo management when loopback is on
Stephane Grosjean <[email protected]>
can: peak_usb: peak_usb_get_ts_time(): fix timestamp wrapping
Dan Carpenter <[email protected]>
can: peak_usb: add range checking in decode operations
Navid Emamdoost <[email protected]>
can: xilinx_can: handle failure cases of pm_runtime_get_sync
Zhang Changzhong <[email protected]>
can: ti_hecc: ti_hecc_probe(): add missed clk_disable_unprepare() in error path
Zhang Changzhong <[email protected]>
can: j1939: j1939_sk_bind(): return failure if netdev is down
Yegor Yefremov <[email protected]>
can: j1939: swap addr and pgn in the send example
Oleksij Rempel <[email protected]>
can: can_create_echo_skb(): fix echo skb generation: always use skb_clone()
Oliver Hartkopp <[email protected]>
can: dev: __can_get_echo_skb(): fix real payload length return value for RTR frames
Vincent Mailhol <[email protected]>
can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context
Marc Kleine-Budde <[email protected]>
can: rx-offload: don't call kfree_skb() from IRQ context
David Howells <[email protected]>
afs: Fix warning due to unadvanced marshalling pointer
Liu, Yi L <[email protected]>
iommu/vt-d: Fix a bug for PDP check in prq_event_thread
Dan Carpenter <[email protected]>
ALSA: hda: prevent undefined shift in snd_hdac_ext_bus_get_link()
Jiri Olsa <[email protected]>
perf tools: Add missing swap for ino_generation
Stanislav Ivanichkin <[email protected]>
perf trace: Fix segfault when trying to trace events by cgroup
Qian Cai <[email protected]>
powerpc/eeh_cache: Fix a possible debugfs deadlock
Stefano Brivio <[email protected]>
netfilter: ipset: Update byte and packet counters regardless of whether they match
Pablo Neira Ayuso <[email protected]>
netfilter: nf_tables: missing validation from the abort path
Jason A. Donenfeld <[email protected]>
netfilter: use actual socket sk rather than skb sk when routing harder
Darrick J. Wong <[email protected]>
xfs: set xefi_discard when creating a deferred agfl free log intent item
Srinivas Kandagatla <[email protected]>
ASoC: codecs: wcd9335: Set digital gain range correctly
zhuoliang zhang <[email protected]>
net: xfrm: fix a race condition during allocing spi
Olaf Hering <[email protected]>
hv_balloon: disable warning when floor reached
Marc Zyngier <[email protected]>
genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY
Tomasz Figa <[email protected]>
ASoC: Intel: kbl_rt5663_max98927: Fix kabylake_ssp_fixup function
Johannes Thumshirn <[email protected]>
btrfs: reschedule when cloning lots of extents
Josef Bacik <[email protected]>
btrfs: sysfs: init devices outside of the chunk_mutex
Qu Wenruo <[email protected]>
btrfs: tracepoints: output proper root owner for trace_find_free_extent()
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Reclaim extra TRBs after request completion
Thinh Nguyen <[email protected]>
usb: dwc3: gadget: Continue to process pending requests
Ansuel Smith <[email protected]>
PCI: qcom: Make sure PCIe is reset before init for rev 2.1.0
Santosh Shukla <[email protected]>
KVM: arm64: Force PTE mapping on fault resulting in a device mapping
Ming Lei <[email protected]>
nbd: don't update block size after device is started
Zeng Tao <[email protected]>
time: Prevent undefined behaviour in timespec64_to_ns()
Chris Wilson <[email protected]>
drm/i915/gem: Flush coherency domains on first set-domain-ioctl
-------------
Diffstat:
Documentation/networking/j1939.rst | 4 +-
Makefile | 4 +-
arch/arm/include/asm/kprobes.h | 22 +-
arch/arm/probes/kprobes/opt-arm.c | 18 +-
arch/arm64/kvm/sys_regs.c | 18 +-
arch/powerpc/kernel/eeh_cache.c | 5 +-
arch/powerpc/kernel/head_32.S | 12 -
arch/riscv/kernel/head.S | 5 +
arch/s390/kernel/smp.c | 3 +-
arch/x86/kernel/cpu/bugs.c | 52 ++-
arch/x86/kvm/x86.c | 4 +
drivers/block/nbd.c | 10 +-
drivers/char/random.c | 1 -
drivers/char/tpm/eventlog/efi.c | 5 +
drivers/char/tpm/tpm_tis.c | 29 +-
drivers/char/virtio_console.c | 8 +-
drivers/gpio/gpio-pcie-idio-24.c | 62 ++-
drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 27 +-
drivers/gpu/drm/amd/amdgpu/soc15.c | 3 +-
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 4 +
drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 +
drivers/gpu/drm/amd/powerplay/inc/smumgr.h | 2 +
drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 29 +-
drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c | 8 +
drivers/gpu/drm/gma500/psb_irq.c | 34 +-
drivers/gpu/drm/i915/gem/i915_gem_domain.c | 28 +-
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 3 +-
drivers/hv/hv_balloon.c | 2 +-
drivers/i2c/busses/i2c-mt65xx.c | 8 +-
drivers/i2c/busses/i2c-sh_mobile.c | 86 +++-
drivers/iommu/amd_iommu_types.h | 6 +-
drivers/iommu/intel-svm.c | 2 +-
drivers/mfd/sprd-sc27xx-spi.c | 28 +-
drivers/misc/mei/client.h | 4 +-
drivers/mmc/host/renesas_sdhi_core.c | 1 +
drivers/mmc/host/sdhci-of-esdhc.c | 2 +
drivers/net/can/dev.c | 14 +-
drivers/net/can/flexcan.c | 5 +-
drivers/net/can/peak_canfd/peak_canfd.c | 11 +-
drivers/net/can/rx-offload.c | 4 +-
drivers/net/can/ti_hecc.c | 8 +-
drivers/net/can/usb/peak_usb/pcan_usb_core.c | 51 ++-
drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 48 ++-
drivers/net/can/xilinx_can.c | 6 +-
drivers/net/ethernet/intel/igc/igc_main.c | 14 +-
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 7 +-
drivers/net/ethernet/microchip/lan743x_main.c | 12 +-
drivers/net/ethernet/microchip/lan743x_main.h | 3 -
drivers/net/ethernet/realtek/r8169_main.c | 3 +-
drivers/net/vrf.c | 92 +++-
drivers/net/wan/cosa.c | 1 +
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 2 +-
drivers/nvme/host/core.c | 8 +-
drivers/nvme/host/nvme.h | 1 +
drivers/nvme/host/rdma.c | 14 +-
drivers/nvme/host/tcp.c | 16 +-
drivers/of/address.c | 4 +-
drivers/opp/core.c | 7 +-
drivers/pci/controller/dwc/pcie-qcom.c | 13 +
drivers/pinctrl/aspeed/pinctrl-aspeed.c | 7 +-
drivers/pinctrl/intel/pinctrl-intel.c | 8 +
drivers/pinctrl/pinctrl-amd.c | 6 +-
drivers/scsi/device_handler/scsi_dh_alua.c | 9 +-
drivers/scsi/hpsa.c | 4 +-
drivers/scsi/mpt3sas/mpt3sas_base.c | 7 +
drivers/spi/spi-bcm2835.c | 3 +-
drivers/thunderbolt/nhi.c | 19 +-
drivers/thunderbolt/xdomain.c | 1 +
drivers/uio/uio.c | 10 +-
drivers/usb/class/cdc-acm.c | 9 +
drivers/usb/dwc3/dwc3-pci.c | 4 +
drivers/usb/dwc3/gadget.c | 32 +-
drivers/usb/gadget/udc/goku_udc.c | 2 +-
drivers/usb/host/xhci-histb.c | 2 +-
drivers/vfio/pci/vfio_pci.c | 2 +-
drivers/vfio/platform/vfio_platform_common.c | 3 +-
fs/afs/yfsclient.c | 1 +
fs/btrfs/dev-replace.c | 26 +-
fs/btrfs/extent-tree.c | 7 +-
fs/btrfs/ioctl.c | 12 +-
fs/btrfs/ref-verify.c | 1 +
fs/btrfs/relocation.c | 4 +-
fs/btrfs/volumes.c | 33 +-
fs/cifs/cifs_unicode.c | 8 +-
fs/erofs/inode.c | 21 +-
fs/ext4/inline.c | 1 +
fs/ext4/super.c | 4 +-
fs/gfs2/rgrp.c | 5 +-
fs/gfs2/super.c | 1 +
fs/jbd2/checkpoint.c | 2 +
fs/jbd2/transaction.c | 4 +-
fs/ocfs2/super.c | 1 +
fs/xfs/libxfs/xfs_alloc.c | 1 +
fs/xfs/libxfs/xfs_bmap.h | 2 +-
fs/xfs/libxfs/xfs_rmap.c | 2 +-
fs/xfs/libxfs/xfs_rmap_btree.c | 16 +-
fs/xfs/scrub/bmap.c | 2 +
fs/xfs/scrub/inode.c | 3 +-
fs/xfs/scrub/refcount.c | 8 +-
fs/xfs/xfs_iops.c | 10 +
fs/xfs/xfs_pnfs.c | 2 +-
include/linux/arm-smccc.h | 2 +
include/linux/can/skb.h | 20 +-
include/linux/compiler-gcc.h | 2 -
include/linux/compiler_types.h | 4 -
include/linux/netfilter/nfnetlink.h | 9 +-
include/linux/netfilter_ipv4.h | 2 +-
include/linux/netfilter_ipv6.h | 10 +-
include/linux/prandom.h | 36 +-
include/linux/time64.h | 4 +
include/trace/events/btrfs.h | 10 +-
include/trace/events/sunrpc.h | 8 +-
kernel/bpf/Makefile | 6 +-
kernel/bpf/core.c | 2 +-
kernel/bpf/hashtab.c | 30 +-
kernel/dma/swiotlb.c | 6 +-
kernel/events/core.c | 7 +-
kernel/events/internal.h | 2 +-
kernel/exit.c | 5 +-
kernel/futex.c | 5 +-
kernel/irq/Kconfig | 1 +
kernel/reboot.c | 28 +-
kernel/time/itimer.c | 4 -
kernel/time/tick-common.c | 2 +
kernel/time/timer.c | 7 -
kernel/trace/trace.c | 4 +-
lib/random32.c | 462 +++++++++++++--------
mm/slub.c | 2 +-
net/can/j1939/socket.c | 6 +
net/ipv4/netfilter.c | 8 +-
net/ipv4/netfilter/iptable_mangle.c | 2 +-
net/ipv4/netfilter/nf_reject_ipv4.c | 2 +-
net/ipv4/syncookies.c | 9 +-
net/ipv4/udp_offload.c | 2 +-
net/ipv6/netfilter.c | 6 +-
net/ipv6/netfilter/ip6table_mangle.c | 2 +-
net/ipv6/sit.c | 2 -
net/ipv6/syncookies.c | 10 +-
net/iucv/af_iucv.c | 3 +-
net/mac80211/sta_info.c | 18 +
net/mac80211/tx.c | 37 +-
net/netfilter/ipset/ip_set_core.c | 3 +-
net/netfilter/ipvs/ip_vs_core.c | 4 +-
net/netfilter/nf_nat_proto.c | 4 +-
net/netfilter/nf_synproxy_core.c | 2 +-
net/netfilter/nf_tables_api.c | 15 +-
net/netfilter/nfnetlink.c | 22 +-
net/netfilter/nft_chain_route.c | 4 +-
net/netfilter/utils.c | 4 +-
net/sched/sch_generic.c | 3 +
net/tipc/topsrv.c | 10 +-
net/wireless/core.c | 57 +--
net/wireless/core.h | 5 +-
net/wireless/nl80211.c | 3 +-
net/wireless/reg.c | 2 +-
net/x25/af_x25.c | 2 +-
net/xfrm/xfrm_state.c | 8 +-
security/selinux/ibpkey.c | 4 +-
sound/hda/ext/hdac_ext_controller.c | 2 +
sound/pci/hda/hda_controller.h | 3 +-
sound/pci/hda/hda_intel.c | 63 +--
sound/soc/codecs/cs42l51.c | 22 +-
sound/soc/codecs/wcd9335.c | 2 +-
sound/soc/intel/boards/kbl_rt5663_max98927.c | 39 +-
sound/soc/qcom/sdm845.c | 2 +
tools/perf/builtin-trace.c | 15 +-
.../util/scripting-engines/trace-event-python.c | 7 +-
tools/perf/util/session.c | 1 +
tools/testing/selftests/bpf/prog_tests/map_init.c | 214 ++++++++++
tools/testing/selftests/bpf/progs/test_map_init.c | 33 ++
.../ftrace/test.d/kprobe/kprobe_args_user.tc | 4 +
tools/testing/selftests/pidfd/pidfd_open_test.c | 1 -
tools/testing/selftests/pidfd/pidfd_poll_test.c | 1 -
tools/testing/selftests/proc/proc-loadavg-001.c | 1 -
tools/testing/selftests/proc/proc-self-syscall.c | 1 -
tools/testing/selftests/proc/proc-uptime-002.c | 1 -
virt/kvm/arm/mmu.c | 1 +
virt/kvm/arm/psci.c | 2 +-
178 files changed, 1759 insertions(+), 784 deletions(-)
From: Ming Lei <[email protected]>
[ Upstream commit b40813ddcd6bf9f01d020804e4cb8febc480b9e4 ]
Mounted NBD device can be resized, one use case is rbd-nbd.
Fix the issue by setting up default block size, then not touch it
in nbd_size_update() any more. This kind of usage is aligned with loop
which has same use case too.
Cc: [email protected]
Fixes: c8a83a6b54d0 ("nbd: Use set_blocksize() to set device blocksize")
Reported-by: lining <[email protected]>
Signed-off-by: Ming Lei <[email protected]>
Cc: Josef Bacik <[email protected]>
Cc: Jan Kara <[email protected]>
Tested-by: lining <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
drivers/block/nbd.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 742f8160b6e28..62a873718b5bb 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -296,7 +296,7 @@ static void nbd_size_clear(struct nbd_device *nbd)
}
}
-static void nbd_size_update(struct nbd_device *nbd)
+static void nbd_size_update(struct nbd_device *nbd, bool start)
{
struct nbd_config *config = nbd->config;
struct block_device *bdev = bdget_disk(nbd->disk, 0);
@@ -312,7 +312,8 @@ static void nbd_size_update(struct nbd_device *nbd)
if (bdev) {
if (bdev->bd_disk) {
bd_set_size(bdev, config->bytesize);
- set_blocksize(bdev, config->blksize);
+ if (start)
+ set_blocksize(bdev, config->blksize);
} else
bdev->bd_invalidated = 1;
bdput(bdev);
@@ -327,7 +328,7 @@ static void nbd_size_set(struct nbd_device *nbd, loff_t blocksize,
config->blksize = blocksize;
config->bytesize = blocksize * nr_blocks;
if (nbd->task_recv != NULL)
- nbd_size_update(nbd);
+ nbd_size_update(nbd, false);
}
static void nbd_complete_rq(struct request *req)
@@ -1293,7 +1294,7 @@ static int nbd_start_device(struct nbd_device *nbd)
args->index = i;
queue_work(nbd->recv_workq, &args->work);
}
- nbd_size_update(nbd);
+ nbd_size_update(nbd, true);
return error;
}
--
2.27.0
From: Darrick J. Wong <[email protected]>
[ Upstream commit 2c334e12f957cd8c6bb66b4aa3f79848b7c33cab ]
Make sure that we actually initialize xefi_discard when we're scheduling
a deferred free of an AGFL block. This was (eventually) found by the
UBSAN while I was banging on realtime rmap problems, but it exists in
the upstream codebase. While we're at it, rearrange the structure to
reduce the struct size from 64 to 56 bytes.
Fixes: fcb762f5de2e ("xfs: add bmapi nodiscard flag")
Signed-off-by: Darrick J. Wong <[email protected]>
Reviewed-by: Brian Foster <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
fs/xfs/libxfs/xfs_alloc.c | 1 +
fs/xfs/libxfs/xfs_bmap.h | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/xfs/libxfs/xfs_alloc.c b/fs/xfs/libxfs/xfs_alloc.c
index 0a36f532cf86c..436f686a98918 100644
--- a/fs/xfs/libxfs/xfs_alloc.c
+++ b/fs/xfs/libxfs/xfs_alloc.c
@@ -2209,6 +2209,7 @@ xfs_defer_agfl_block(
new->xefi_startblock = XFS_AGB_TO_FSB(mp, agno, agbno);
new->xefi_blockcount = 1;
new->xefi_oinfo = *oinfo;
+ new->xefi_skip_discard = false;
trace_xfs_agfl_free_defer(mp, agno, 0, agbno, 1);
diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h
index e2798c6f3a5f3..093716a074fb7 100644
--- a/fs/xfs/libxfs/xfs_bmap.h
+++ b/fs/xfs/libxfs/xfs_bmap.h
@@ -52,9 +52,9 @@ struct xfs_extent_free_item
{
xfs_fsblock_t xefi_startblock;/* starting fs block number */
xfs_extlen_t xefi_blockcount;/* number of blocks in extent */
+ bool xefi_skip_discard;
struct list_head xefi_list;
struct xfs_owner_info xefi_oinfo; /* extent owner */
- bool xefi_skip_discard;
};
#define XFS_BMAP_MAX_NMAP 4
--
2.27.0
From: Pablo Neira Ayuso <[email protected]>
[ Upstream commit c0391b6ab810381df632677a1dcbbbbd63d05b6d ]
If userspace does not include the trailing end of batch message, then
nfnetlink aborts the transaction. This allows to check that ruleset
updates trigger no errors.
After this patch, invoking this command from the prerouting chain:
# nft -c add rule x y fib saddr . oif type local
fails since oif is not supported there.
This patch fixes the lack of rule validation from the abort/check path
to catch configuration errors such as the one above.
Fixes: a654de8fdc18 ("netfilter: nf_tables: fix chain dependency validation")
Signed-off-by: Pablo Neira Ayuso <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
include/linux/netfilter/nfnetlink.h | 9 ++++++++-
net/netfilter/nf_tables_api.c | 15 ++++++++++-----
net/netfilter/nfnetlink.c | 22 ++++++++++++++++++----
3 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h
index 89016d08f6a27..f6267e2883f26 100644
--- a/include/linux/netfilter/nfnetlink.h
+++ b/include/linux/netfilter/nfnetlink.h
@@ -24,6 +24,12 @@ struct nfnl_callback {
const u_int16_t attr_count; /* number of nlattr's */
};
+enum nfnl_abort_action {
+ NFNL_ABORT_NONE = 0,
+ NFNL_ABORT_AUTOLOAD,
+ NFNL_ABORT_VALIDATE,
+};
+
struct nfnetlink_subsystem {
const char *name;
__u8 subsys_id; /* nfnetlink subsystem ID */
@@ -31,7 +37,8 @@ struct nfnetlink_subsystem {
const struct nfnl_callback *cb; /* callback for individual types */
struct module *owner;
int (*commit)(struct net *net, struct sk_buff *skb);
- int (*abort)(struct net *net, struct sk_buff *skb, bool autoload);
+ int (*abort)(struct net *net, struct sk_buff *skb,
+ enum nfnl_abort_action action);
void (*cleanup)(struct net *net);
bool (*valid_genid)(struct net *net, u32 genid);
};
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 5a77b7a177229..51391d5d22656 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -7010,11 +7010,15 @@ static void nf_tables_abort_release(struct nft_trans *trans)
kfree(trans);
}
-static int __nf_tables_abort(struct net *net, bool autoload)
+static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
{
struct nft_trans *trans, *next;
struct nft_trans_elem *te;
+ if (action == NFNL_ABORT_VALIDATE &&
+ nf_tables_validate(net) < 0)
+ return -EAGAIN;
+
list_for_each_entry_safe_reverse(trans, next, &net->nft.commit_list,
list) {
switch (trans->msg_type) {
@@ -7132,7 +7136,7 @@ static int __nf_tables_abort(struct net *net, bool autoload)
nf_tables_abort_release(trans);
}
- if (autoload)
+ if (action == NFNL_ABORT_AUTOLOAD)
nf_tables_module_autoload(net);
else
nf_tables_module_autoload_cleanup(net);
@@ -7145,9 +7149,10 @@ static void nf_tables_cleanup(struct net *net)
nft_validate_state_update(net, NFT_VALIDATE_SKIP);
}
-static int nf_tables_abort(struct net *net, struct sk_buff *skb, bool autoload)
+static int nf_tables_abort(struct net *net, struct sk_buff *skb,
+ enum nfnl_abort_action action)
{
- int ret = __nf_tables_abort(net, autoload);
+ int ret = __nf_tables_abort(net, action);
mutex_unlock(&net->nft.commit_mutex);
@@ -7754,7 +7759,7 @@ static void __net_exit nf_tables_exit_net(struct net *net)
{
mutex_lock(&net->nft.commit_mutex);
if (!list_empty(&net->nft.commit_list))
- __nf_tables_abort(net, false);
+ __nf_tables_abort(net, NFNL_ABORT_NONE);
__nft_release_tables(net);
mutex_unlock(&net->nft.commit_mutex);
WARN_ON_ONCE(!list_empty(&net->nft.tables));
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
index 6d03b09096210..81c86a156c6c0 100644
--- a/net/netfilter/nfnetlink.c
+++ b/net/netfilter/nfnetlink.c
@@ -315,7 +315,7 @@ static void nfnetlink_rcv_batch(struct sk_buff *skb, struct nlmsghdr *nlh,
return netlink_ack(skb, nlh, -EINVAL, NULL);
replay:
status = 0;
-
+replay_abort:
skb = netlink_skb_clone(oskb, GFP_KERNEL);
if (!skb)
return netlink_ack(oskb, nlh, -ENOMEM, NULL);
@@ -481,7 +481,7 @@ ack:
}
done:
if (status & NFNL_BATCH_REPLAY) {
- ss->abort(net, oskb, true);
+ ss->abort(net, oskb, NFNL_ABORT_AUTOLOAD);
nfnl_err_reset(&err_list);
kfree_skb(skb);
module_put(ss->owner);
@@ -492,11 +492,25 @@ done:
status |= NFNL_BATCH_REPLAY;
goto done;
} else if (err) {
- ss->abort(net, oskb, false);
+ ss->abort(net, oskb, NFNL_ABORT_NONE);
netlink_ack(oskb, nlmsg_hdr(oskb), err, NULL);
}
} else {
- ss->abort(net, oskb, false);
+ enum nfnl_abort_action abort_action;
+
+ if (status & NFNL_BATCH_FAILURE)
+ abort_action = NFNL_ABORT_NONE;
+ else
+ abort_action = NFNL_ABORT_VALIDATE;
+
+ err = ss->abort(net, oskb, abort_action);
+ if (err == -EAGAIN) {
+ nfnl_err_reset(&err_list);
+ kfree_skb(skb);
+ module_put(ss->owner);
+ status |= NFNL_BATCH_FAILURE;
+ goto replay_abort;
+ }
}
if (ss->cleanup)
ss->cleanup(net);
--
2.27.0
From: Liu, Yi L <[email protected]>
[ Upstream commit 71cd8e2d16703a9df5c86a9e19f4cba99316cc53 ]
In prq_event_thread(), the QI_PGRP_PDP is wrongly set by
'req->pasid_present' which should be replaced to
'req->priv_data_present'.
Fixes: 5b438f4ba315 ("iommu/vt-d: Support page request in scalable mode")
Signed-off-by: Liu, Yi L <[email protected]>
Signed-off-by: Yi Sun <[email protected]>
Acked-by: Lu Baolu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Joerg Roedel <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
drivers/iommu/intel-svm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c
index 1d3816cd65d57..ec69a99b99bab 100644
--- a/drivers/iommu/intel-svm.c
+++ b/drivers/iommu/intel-svm.c
@@ -646,7 +646,7 @@ static irqreturn_t prq_event_thread(int irq, void *d)
resp.qw0 = QI_PGRP_PASID(req->pasid) |
QI_PGRP_DID(req->rid) |
QI_PGRP_PASID_P(req->pasid_present) |
- QI_PGRP_PDP(req->pasid_present) |
+ QI_PGRP_PDP(req->priv_data_present) |
QI_PGRP_RESP_CODE(result) |
QI_PGRP_RESP_TYPE;
resp.qw1 = QI_PGRP_IDX(req->prg_index) |
--
2.27.0
From: Andrew Jones <[email protected]>
commit f81cb2c3ad41ac6d8cb2650e3d72d5f67db1aa28 upstream.
ID registers are RAZ until they've been allocated a purpose, but
that doesn't mean they should be removed from the KVM_GET_REG_LIST
list. So far we only have one register, SYS_ID_AA64ZFR0_EL1, that
is hidden from userspace when its function, SVE, is not present.
Expose SYS_ID_AA64ZFR0_EL1 to userspace as RAZ when SVE is not
implemented. Removing the userspace visibility checks is enough
to reexpose it, as it will already return zero to userspace when
SVE is not present. The register already behaves as RAZ for the
guest when SVE is not present.
Fixes: 73433762fcae ("KVM: arm64/sve: System register context switch and access support")
Reported-by: 张东旭 <[email protected]>
Signed-off-by: Andrew Jones <[email protected]>
Signed-off-by: Marc Zyngier <[email protected]>
Cc: [email protected]#v5.2+
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
arch/arm64/kvm/sys_regs.c | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -1132,16 +1132,6 @@ static unsigned int sve_visibility(const
return REG_HIDDEN_USER | REG_HIDDEN_GUEST;
}
-/* Visibility overrides for SVE-specific ID registers */
-static unsigned int sve_id_visibility(const struct kvm_vcpu *vcpu,
- const struct sys_reg_desc *rd)
-{
- if (vcpu_has_sve(vcpu))
- return 0;
-
- return REG_HIDDEN_USER;
-}
-
/* Generate the emulated ID_AA64ZFR0_EL1 value exposed to the guest */
static u64 guest_id_aa64zfr0_el1(const struct kvm_vcpu *vcpu)
{
@@ -1168,9 +1158,6 @@ static int get_id_aa64zfr0_el1(struct kv
{
u64 val;
- if (WARN_ON(!vcpu_has_sve(vcpu)))
- return -ENOENT;
-
val = guest_id_aa64zfr0_el1(vcpu);
return reg_to_user(uaddr, &val, reg->id);
}
@@ -1183,9 +1170,6 @@ static int set_id_aa64zfr0_el1(struct kv
int err;
u64 val;
- if (WARN_ON(!vcpu_has_sve(vcpu)))
- return -ENOENT;
-
err = reg_from_user(&val, uaddr, id);
if (err)
return err;
@@ -1448,7 +1432,7 @@ static const struct sys_reg_desc sys_reg
ID_SANITISED(ID_AA64PFR1_EL1),
ID_UNALLOCATED(4,2),
ID_UNALLOCATED(4,3),
- { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, .visibility = sve_id_visibility },
+ { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, },
ID_UNALLOCATED(4,5),
ID_UNALLOCATED(4,6),
ID_UNALLOCATED(4,7),
From: Thomas Zimmermann <[email protected]>
commit 06ad8d339524bf94b89859047822c31df6ace239 upstream.
The gma500 driver expects 3 pipelines in several it's IRQ functions.
Accessing struct drm_device.vblank[], this fails with devices that only
have 2 pipelines. An example KASAN report is shown below.
[ 62.267688] ==================================================================
[ 62.268856] BUG: KASAN: slab-out-of-bounds in psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
[ 62.269450] Read of size 1 at addr ffff8880012bc6d0 by task systemd-udevd/285
[ 62.269949]
[ 62.270192] CPU: 0 PID: 285 Comm: systemd-udevd Tainted: G E 5.10.0-rc1-1-default+ #572
[ 62.270807] Hardware name: /DN2800MT, BIOS MTCDT10N.86A.0164.2012.1213.1024 12/13/2012
[ 62.271366] Call Trace:
[ 62.271705] dump_stack+0xae/0xe5
[ 62.272180] print_address_description.constprop.0+0x17/0xf0
[ 62.272987] ? psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
[ 62.273474] __kasan_report.cold+0x20/0x38
[ 62.273989] ? psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
[ 62.274460] kasan_report+0x3a/0x50
[ 62.274891] psb_irq_postinstall+0x250/0x3c0 [gma500_gfx]
[ 62.275380] drm_irq_install+0x131/0x1f0
<...>
[ 62.300751] Allocated by task 285:
[ 62.301223] kasan_save_stack+0x1b/0x40
[ 62.301731] __kasan_kmalloc.constprop.0+0xbf/0xd0
[ 62.302293] drmm_kmalloc+0x55/0x100
[ 62.302773] drm_vblank_init+0x77/0x210
Resolve the issue by only handling vblank entries up to the number of
CRTCs.
I'm adding a Fixes tag for reference, although the bug has been present
since the driver's initial commit.
Signed-off-by: Thomas Zimmermann <[email protected]>
Reviewed-by: Daniel Vetter <[email protected]>
Fixes: 5c49fd3aa0ab ("gma500: Add the core DRM files and headers")
Cc: Alan Cox <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: Patrik Jakobsson <[email protected]>
Cc: [email protected]
Cc: [email protected]#v3.3+
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/gma500/psb_irq.c | 34 ++++++++++++----------------------
1 file changed, 12 insertions(+), 22 deletions(-)
--- a/drivers/gpu/drm/gma500/psb_irq.c
+++ b/drivers/gpu/drm/gma500/psb_irq.c
@@ -337,6 +337,7 @@ int psb_irq_postinstall(struct drm_devic
{
struct drm_psb_private *dev_priv = dev->dev_private;
unsigned long irqflags;
+ unsigned int i;
spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags);
@@ -349,20 +350,12 @@ int psb_irq_postinstall(struct drm_devic
PSB_WVDC32(dev_priv->vdc_irq_mask, PSB_INT_ENABLE_R);
PSB_WVDC32(0xFFFFFFFF, PSB_HWSTAM);
- if (dev->vblank[0].enabled)
- psb_enable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE);
- else
- psb_disable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE);
-
- if (dev->vblank[1].enabled)
- psb_enable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE);
- else
- psb_disable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE);
-
- if (dev->vblank[2].enabled)
- psb_enable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE);
- else
- psb_disable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE);
+ for (i = 0; i < dev->num_crtcs; ++i) {
+ if (dev->vblank[i].enabled)
+ psb_enable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE);
+ else
+ psb_disable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE);
+ }
if (dev_priv->ops->hotplug_enable)
dev_priv->ops->hotplug_enable(dev, true);
@@ -375,6 +368,7 @@ void psb_irq_uninstall(struct drm_device
{
struct drm_psb_private *dev_priv = dev->dev_private;
unsigned long irqflags;
+ unsigned int i;
spin_lock_irqsave(&dev_priv->irqmask_lock, irqflags);
@@ -383,14 +377,10 @@ void psb_irq_uninstall(struct drm_device
PSB_WVDC32(0xFFFFFFFF, PSB_HWSTAM);
- if (dev->vblank[0].enabled)
- psb_disable_pipestat(dev_priv, 0, PIPE_VBLANK_INTERRUPT_ENABLE);
-
- if (dev->vblank[1].enabled)
- psb_disable_pipestat(dev_priv, 1, PIPE_VBLANK_INTERRUPT_ENABLE);
-
- if (dev->vblank[2].enabled)
- psb_disable_pipestat(dev_priv, 2, PIPE_VBLANK_INTERRUPT_ENABLE);
+ for (i = 0; i < dev->num_crtcs; ++i) {
+ if (dev->vblank[i].enabled)
+ psb_disable_pipestat(dev_priv, i, PIPE_VBLANK_INTERRUPT_ENABLE);
+ }
dev_priv->vdc_irq_mask &= _PSB_IRQ_SGX_FLAG |
_PSB_IRQ_MSVDX_FLAG |
From: Arnaud de Turckheim <[email protected]>
commit 10a2f11d3c9e48363c729419e0f0530dea76e4fe upstream.
This enables the PEX8311 internal PCI wire interrupt and the PEX8311
local interrupt input so the local interrupts are forwarded to the PCI.
Fixes: 585562046628 ("gpio: Add GPIO support for the ACCES PCIe-IDIO-24 family")
Cc: [email protected]
Signed-off-by: Arnaud de Turckheim <[email protected]>
Reviewed-by: William Breathitt Gray <[email protected]>
Signed-off-by: Bartosz Golaszewski <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpio/gpio-pcie-idio-24.c | 52 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 51 insertions(+), 1 deletion(-)
--- a/drivers/gpio/gpio-pcie-idio-24.c
+++ b/drivers/gpio/gpio-pcie-idio-24.c
@@ -28,6 +28,47 @@
#include <linux/spinlock.h>
#include <linux/types.h>
+/*
+ * PLX PEX8311 PCI LCS_INTCSR Interrupt Control/Status
+ *
+ * Bit: Description
+ * 0: Enable Interrupt Sources (Bit 0)
+ * 1: Enable Interrupt Sources (Bit 1)
+ * 2: Generate Internal PCI Bus Internal SERR# Interrupt
+ * 3: Mailbox Interrupt Enable
+ * 4: Power Management Interrupt Enable
+ * 5: Power Management Interrupt
+ * 6: Slave Read Local Data Parity Check Error Enable
+ * 7: Slave Read Local Data Parity Check Error Status
+ * 8: Internal PCI Wire Interrupt Enable
+ * 9: PCI Express Doorbell Interrupt Enable
+ * 10: PCI Abort Interrupt Enable
+ * 11: Local Interrupt Input Enable
+ * 12: Retry Abort Enable
+ * 13: PCI Express Doorbell Interrupt Active
+ * 14: PCI Abort Interrupt Active
+ * 15: Local Interrupt Input Active
+ * 16: Local Interrupt Output Enable
+ * 17: Local Doorbell Interrupt Enable
+ * 18: DMA Channel 0 Interrupt Enable
+ * 19: DMA Channel 1 Interrupt Enable
+ * 20: Local Doorbell Interrupt Active
+ * 21: DMA Channel 0 Interrupt Active
+ * 22: DMA Channel 1 Interrupt Active
+ * 23: Built-In Self-Test (BIST) Interrupt Active
+ * 24: Direct Master was the Bus Master during a Master or Target Abort
+ * 25: DMA Channel 0 was the Bus Master during a Master or Target Abort
+ * 26: DMA Channel 1 was the Bus Master during a Master or Target Abort
+ * 27: Target Abort after internal 256 consecutive Master Retrys
+ * 28: PCI Bus wrote data to LCS_MBOX0
+ * 29: PCI Bus wrote data to LCS_MBOX1
+ * 30: PCI Bus wrote data to LCS_MBOX2
+ * 31: PCI Bus wrote data to LCS_MBOX3
+ */
+#define PLX_PEX8311_PCI_LCS_INTCSR 0x68
+#define INTCSR_INTERNAL_PCI_WIRE BIT(8)
+#define INTCSR_LOCAL_INPUT BIT(11)
+
/**
* struct idio_24_gpio_reg - GPIO device registers structure
* @out0_7: Read: FET Outputs 0-7
@@ -92,6 +133,7 @@ struct idio_24_gpio_reg {
struct idio_24_gpio {
struct gpio_chip chip;
raw_spinlock_t lock;
+ __u8 __iomem *plx;
struct idio_24_gpio_reg __iomem *reg;
unsigned long irq_mask;
};
@@ -481,6 +523,7 @@ static int idio_24_probe(struct pci_dev
struct device *const dev = &pdev->dev;
struct idio_24_gpio *idio24gpio;
int err;
+ const size_t pci_plx_bar_index = 1;
const size_t pci_bar_index = 2;
const char *const name = pci_name(pdev);
@@ -494,12 +537,13 @@ static int idio_24_probe(struct pci_dev
return err;
}
- err = pcim_iomap_regions(pdev, BIT(pci_bar_index), name);
+ err = pcim_iomap_regions(pdev, BIT(pci_plx_bar_index) | BIT(pci_bar_index), name);
if (err) {
dev_err(dev, "Unable to map PCI I/O addresses (%d)\n", err);
return err;
}
+ idio24gpio->plx = pcim_iomap_table(pdev)[pci_plx_bar_index];
idio24gpio->reg = pcim_iomap_table(pdev)[pci_bar_index];
idio24gpio->chip.label = name;
@@ -520,6 +564,12 @@ static int idio_24_probe(struct pci_dev
/* Software board reset */
iowrite8(0, &idio24gpio->reg->soft_reset);
+ /*
+ * enable PLX PEX8311 internal PCI wire interrupt and local interrupt
+ * input
+ */
+ iowrite8((INTCSR_INTERNAL_PCI_WIRE | INTCSR_LOCAL_INPUT) >> 8,
+ idio24gpio->plx + PLX_PEX8311_PCI_LCS_INTCSR + 1);
err = devm_gpiochip_add_data(dev, &idio24gpio->chip, idio24gpio);
if (err) {
On 11/17/20 6:03 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.4.78 release.
> There are 151 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 19 Nov 2020 12:20:51 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.78-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
Compiled and booted on my test system. No dmesg regressions.
Tested-by: Shuah Khan <[email protected]>
thanks,
-- Shuah
On Tue, 17 Nov 2020 at 18:55, Greg Kroah-Hartman
<[email protected]> wrote:
>
> This is the start of the stable review cycle for the 5.4.78 release.
> There are 151 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 19 Nov 2020 12:20:51 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.78-rc1.gz
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
Tested-by: Linux Kernel Functional Testing <[email protected]>
NOTE:
This intermittent kernel warning was noticed on arm64 NXP ls2088 while booting
which was reported on stable-rc 5.8 and stable-rc 5.4.
WARNING: CPU: 1 PID: 441 at kernel/irq/chip.c:242 __irq_startup+0x9c/0xa8
https://lore.kernel.org/stable/CA+G9fYsfEVK86ask=fL=M5juerbz+BwbFGcAZ_UxWrPHXYpA1Q@mail.gmail.com/T/#t
Summary
------------------------------------------------------------------------
kernel: 5.4.78-rc1
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-5.4.y
git commit: a3746663c34792114dfa71148be3dcc3f3f089ea
git describe: v5.4.77-152-ga3746663c347
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.4.y/build/v5.4.77-152-ga3746663c347
No regressions (compared to build v5.4.77)
No fixes (compared to build v5.4.77)
Ran 49989 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c
- hi6220-hikey
- i386
- juno-r2
- juno-r2-compat
- juno-r2-kasan
- nxp-ls2088
- qemu-arm-clang
- qemu-arm64-clang
- qemu-arm64-kasan
- qemu-x86_64-clang
- qemu-x86_64-kasan
- qemu_arm
- qemu_arm64
- qemu_arm64-compat
- qemu_i386
- qemu_x86_64
- qemu_x86_64-compat
- x15
- x86
- x86-kasan
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* kselftest
* linux-log-parser
* ltp-containers-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* perf
* v4l2-compliance
* libhugetlbfs
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-controllers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-tests
* ltp-math-tests
* network-basic-tests
* ltp-open-posix-tests
* ltp-tracing-tests
* kvm-unit-tests
* kselftest-vsyscall-mode-native
* kselftest-vsyscall-mode-none
--
Linaro LKFT
https://lkft.linaro.org
On Tue, Nov 17, 2020 at 02:03:50PM +0100, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 5.4.78 release.
> There are 151 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 19 Nov 2020 12:20:51 +0000.
> Anything received after that time might be too late.
>
Build results:
total: 157 pass: 157 fail: 0
Qemu test results:
total: 426 pass: 426 fail: 0
Reviewed-by: Guenter Roeck <[email protected]>
Guenter