Linux 5.15.25
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.25 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/mach-omap2/display.c | 2 arch/arm/mach-omap2/omap_hwmod.c | 4 arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts | 8 arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 6 arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 8 arch/arm64/include/asm/el2_setup.h | 2 arch/parisc/include/asm/bitops.h | 8 arch/parisc/lib/iomap.c | 18 + arch/parisc/mm/init.c | 9 arch/powerpc/kernel/head_book3s_32.S | 4 arch/powerpc/lib/sstep.c | 2 arch/x86/include/asm/bug.h | 20 - arch/x86/kvm/pmu.c | 15 - arch/x86/kvm/pmu.h | 3 arch/x86/kvm/svm/avic.c | 2 arch/x86/kvm/svm/nested.c | 26 + arch/x86/kvm/svm/pmu.c | 8 arch/x86/kvm/svm/svm.c | 19 + arch/x86/kvm/vmx/pmu_intel.c | 9 arch/x86/kvm/vmx/vmx.c | 1 arch/x86/kvm/xen.c | 97 ++++--- arch/x86/xen/enlighten_pv.c | 4 arch/x86/xen/smp_pv.c | 26 - block/bfq-iosched.c | 2 block/blk-core.c | 10 block/elevator.c | 2 block/genhd.c | 14 + drivers/acpi/x86/s2idle.c | 12 drivers/ata/libata-core.c | 1 drivers/block/mtip32xx/mtip32xx.c | 2 drivers/block/rbd.c | 2 drivers/block/xen-blkfront.c | 2 drivers/char/random.c | 5 drivers/dma/ptdma/ptdma-dev.c | 17 - drivers/dma/sh/rcar-dmac.c | 9 drivers/dma/stm32-dmamux.c | 4 drivers/edac/edac_mc.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu.h | 10 drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 37 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 8 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c | 6 drivers/gpu/drm/amd/display/dc/core/dc.c | 2 drivers/gpu/drm/amd/display/dc/dc.h | 1 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c | 61 ++-- drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 9 drivers/gpu/drm/drm_atomic_uapi.c | 14 - drivers/gpu/drm/drm_gem_cma_helper.c | 1 drivers/gpu/drm/i915/Kconfig | 1 drivers/gpu/drm/i915/display/intel_opregion.c | 15 + drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 6 drivers/gpu/drm/i915/intel_pm.c | 4 drivers/gpu/drm/nouveau/nvkm/falcon/base.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm200.c | 31 ++ drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h | 2 drivers/gpu/drm/radeon/atombios_encoders.c | 3 drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 14 - drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 4 drivers/hid/amd-sfh-hid/amd_sfh_pcie.h | 2 drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c | 4 drivers/hid/hid-elo.c | 1 drivers/hid/hid-ids.h | 1 drivers/hid/hid-quirks.c | 1 drivers/hid/i2c-hid/i2c-hid-of-goodix.c | 28 -- drivers/hv/vmbus_drv.c | 5 drivers/i2c/busses/i2c-brcmstb.c | 2 drivers/i2c/busses/i2c-qcom-cci.c | 16 - drivers/irqchip/irq-sifive-plic.c | 1 drivers/md/dm.c | 2 drivers/mmc/core/block.c | 28 +- drivers/mtd/devices/phram.c | 12 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 2 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 3 drivers/mtd/nand/raw/ingenic/ingenic_ecc.c | 7 drivers/mtd/nand/raw/qcom_nandc.c | 14 - drivers/mtd/parsers/qcomsmempart.c | 33 +- drivers/net/bonding/bond_3ad.c | 30 +- drivers/net/bonding/bond_main.c | 5 drivers/net/dsa/Kconfig | 1 drivers/net/dsa/lan9303-core.c | 13 drivers/net/dsa/lantiq_gswip.c | 2 drivers/net/dsa/mv88e6xxx/chip.c | 7 drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 2 drivers/net/ethernet/broadcom/bgmac-platform.c | 23 + drivers/net/ethernet/cadence/macb_main.c | 2 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 2 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c | 4 drivers/net/ethernet/intel/ice/ice_lib.c | 6 drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 2 drivers/net/ieee802154/at86rf230.c | 13 drivers/net/ieee802154/ca8210.c | 4 drivers/net/netdevsim/fib.c | 4 drivers/net/phy/mediatek-ge.c | 3 drivers/net/usb/qmi_wwan.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 6 drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 11 drivers/net/wireless/intel/iwlwifi/iwl-csr.h | 3 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 2 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c | 3 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 3 drivers/nvme/host/core.c | 11 drivers/nvme/host/multipath.c | 2 drivers/nvme/host/rdma.c | 1 drivers/nvme/host/tcp.c | 1 drivers/parisc/ccio-dma.c | 3 drivers/parisc/sba_iommu.c | 3 drivers/pci/controller/pci-hyperv.c | 13 drivers/phy/broadcom/phy-brcm-usb.c | 38 ++ drivers/phy/mediatek/phy-mtk-tphy.c | 2 drivers/pinctrl/bcm/Kconfig | 1 drivers/platform/x86/intel/speed_select_if/isst_if_common.c | 97 ++++--- drivers/platform/x86/touchscreen_dmi.c | 24 + drivers/scsi/lpfc/lpfc.h | 1 drivers/scsi/lpfc/lpfc_attr.c | 3 drivers/scsi/lpfc/lpfc_els.c | 20 + drivers/scsi/lpfc/lpfc_nportdisc.c | 5 drivers/scsi/lpfc/lpfc_sli.c | 15 - drivers/scsi/pm8001/pm8001_hwi.c | 18 - drivers/scsi/pm8001/pm8001_sas.c | 5 drivers/scsi/pm8001/pm80xx_hwi.c | 30 -- drivers/scsi/qedi/qedi_fw.c | 6 drivers/scsi/scsi_scan.c | 55 +++- drivers/scsi/ufs/ufshcd.c | 58 +--- drivers/scsi/ufs/ufshcd.h | 2 drivers/soc/aspeed/aspeed-lpc-ctrl.c | 7 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 20 + drivers/tty/n_tty.c | 6 drivers/tty/serial/8250/8250_gsc.c | 2 fs/btrfs/dev-replace.c | 2 fs/btrfs/disk-io.c | 2 fs/btrfs/send.c | 4 fs/btrfs/volumes.c | 2 fs/btrfs/zoned.c | 85 +++++- fs/btrfs/zoned.h | 8 fs/cifs/fs_context.c | 4 fs/cifs/xattr.c | 2 fs/io_uring.c | 5 fs/ksmbd/smb2pdu.c | 7 fs/ksmbd/smb_common.c | 5 fs/ksmbd/vfs.h | 1 fs/nfs/dir.c | 4 fs/nfs/inode.c | 9 fs/nfs/nfs4proc.c | 3 fs/proc/task_mmu.c | 40 ++ fs/quota/dquot.c | 11 fs/super.c | 19 - include/linux/blkdev.h | 3 include/linux/compiler.h | 21 - include/linux/netdevice.h | 2 include/linux/sched.h | 1 include/net/addrconf.h | 2 include/net/bond_3ad.h | 2 include/net/dsa.h | 1 include/net/ip6_fib.h | 10 include/net/ipv6.h | 5 include/net/netns/ipv6.h | 3 kernel/async.c | 3 kernel/cred.c | 12 kernel/fork.c | 17 - kernel/locking/lockdep.c | 4 kernel/module.c | 25 - kernel/stackleak.c | 5 kernel/sys.c | 20 + kernel/trace/trace.c | 4 kernel/ucount.c | 3 lib/iov_iter.c | 2 mm/mprotect.c | 2 net/ax25/af_ax25.c | 9 net/bridge/br_multicast.c | 4 net/core/drop_monitor.c | 11 net/core/rtnetlink.c | 6 net/dsa/dsa.c | 1 net/dsa/dsa_priv.h | 1 net/dsa/tag_lan9303.c | 21 - net/ipv4/fib_lookup.h | 7 net/ipv4/fib_semantics.c | 6 net/ipv4/fib_trie.c | 22 - net/ipv4/ping.c | 11 net/ipv4/route.c | 4 net/ipv6/addrconf.c | 4 net/ipv6/ip6_flowlabel.c | 4 net/ipv6/mcast.c | 2 net/ipv6/route.c | 19 - net/mac80211/mlme.c | 29 +- net/netfilter/nf_conntrack_proto_sctp.c | 9 net/netfilter/nft_synproxy.c | 4 net/sched/act_api.c | 13 net/sched/cls_api.c | 6 net/sched/sch_api.c | 22 - net/sched/sch_generic.c | 29 +- net/smc/af_smc.c | 10 net/sunrpc/xprtrdma/verbs.c | 3 net/tipc/node.c | 13 net/vmw_vsock/af_vsock.c | 1 net/wireless/core.c | 17 - scripts/kconfig/confdata.c | 13 scripts/kconfig/preprocess.c | 2 sound/pci/hda/hda_intel.c | 5 sound/pci/hda/patch_realtek.c | 40 +- sound/soc/codecs/tas2770.c | 7 sound/soc/qcom/lpass-platform.c | 8 sound/soc/soc-ops.c | 41 ++- sound/usb/implicit.c | 4 tools/lib/subcmd/subcmd-util.h | 11 tools/perf/util/bpf-loader.c | 3 tools/testing/kunit/kunit_kernel.py | 1 tools/testing/selftests/clone3/clone3.c | 2 tools/testing/selftests/exec/Makefile | 4 tools/testing/selftests/kselftest_harness.h | 4 tools/testing/selftests/mincore/mincore_selftest.c | 20 + tools/testing/selftests/mount_setattr/mount_setattr_test.c | 4 tools/testing/selftests/netfilter/nft_concat_range.sh | 2 tools/testing/selftests/netfilter/nft_fib.sh | 1 tools/testing/selftests/openat2/Makefile | 2 tools/testing/selftests/openat2/helpers.h | 12 tools/testing/selftests/openat2/openat2_test.c | 12 tools/testing/selftests/pidfd/pidfd.h | 13 tools/testing/selftests/pidfd/pidfd_fdinfo_test.c | 22 + tools/testing/selftests/pidfd/pidfd_test.c | 6 tools/testing/selftests/pidfd/pidfd_wait.c | 5 tools/testing/selftests/rtc/settings | 2 tools/testing/selftests/vDSO/vdso_test_abi.c | 135 ++++------ tools/testing/selftests/zram/zram.sh | 15 - tools/testing/selftests/zram/zram01.sh | 33 -- tools/testing/selftests/zram/zram02.sh | 1 tools/testing/selftests/zram/zram_lib.sh | 134 ++++++--- 234 files changed, 1634 insertions(+), 992 deletions(-)
Ajish Koshy (1):
scsi: pm80xx: Fix double completion for SATA devices
Al Cooper (1):
phy: usb: Leave some clocks running during suspend
Alexey Khoroshilov (1):
net: dsa: lantiq_gswip: fix use after free in gswip_remove()
Amir Goldstein (1):
cifs: fix set of group SID via NTSD xattrs
Anders Roxell (1):
powerpc/lib/sstep: fix 'ptesync' build error
Andy Shevchenko (1):
parisc: Add ioread64_lo_hi() and iowrite64_lo_hi()
Ansuel Smith (2):
mtd: parsers: qcom: Fix kernel panic on skipped partition
mtd: parsers: qcom: Fix missing free for pparts in cleanup
Arnaldo Carvalho de Melo (1):
perf bpf: Defer freeing string after possible strlen() on it
Axel Rasmussen (2):
pidfd: fix test failure due to stack overflow on some arches
selftests: fixup build warnings in pidfd / clone3 tests
Bart Van Assche (2):
scsi: ufs: Remove dead code
scsi: ufs: Fix a deadlock in the error handler
Basavaraj Natikar (3):
HID: amd_sfh: Add illuminance mask to limit ALS max value
HID: amd_sfh: Increase sensor command timeout
HID: amd_sfh: Correct the structure field name
Ben Skeggs (1):
drm/nouveau/pmu/gm200-: use alternate falcon reset sequence
Brenda Streiff (1):
kconfig: let 'shell' return enough output for deep path names
Bryan O'Donoghue (1):
mtd: rawnand: qcom: Fix clock sequencing in qcom_nandc_probe()
Cheng Jui Wang (1):
lockdep: Correct lock_classes index mapping
Christian Brauner (1):
tests: fix idmapped mount_setattr test
Christian Eggers (1):
mtd: rawnand: gpmi: don't leak PM reference in error path
Christian Hewitt (3):
arm64: dts: meson-gx: add ATF BL32 reserved-memory region
arm64: dts: meson-g12: add ATF BL32 reserved-memory region
arm64: dts: meson-g12: drop BL32 region from SEI510/SEI610
Christian König (1):
drm/amdgpu: fix logic inversion in check
Christian Löhle (1):
mmc: block: fix read single on recovery logic
Christoph Hellwig (1):
block: fix surprise removal for drivers calling blk_set_queue_dying
Christophe JAILLET (1):
dmaengine: ptdma: Fix the error handling path in pt_core_init()
Christophe Leroy (1):
powerpc/603: Fix boot failure with DEBUG_PAGEALLOC and KFENCE
Cristian Marussi (4):
selftests: openat2: Print also errno in failure messages
selftests: openat2: Add missing dependency in Makefile
selftests: openat2: Skip testcases that fail with EOPNOTSUPP
selftests: skip mincore.check_file_mmap when fs lacks needed support
DENG Qingfang (1):
net: phy: mediatek: remove PHY mode check on MT7531
Dan Aloni (1):
xprtrdma: fix pointer derefs in error cases of rpcrdma_ep_create
Dan Carpenter (1):
mtd: phram: Prevent divide by zero bug in phram_setup()
Daniel Thompson (1):
HID: i2c-hid: goodix: Fix a lockdep splat
Darrick J. Wong (2):
vfs: make freeze_super abort when sync_filesystem returns error
quota: make dquot_quota_sync return errors from ->sync_fs
David Woodhouse (1):
KVM: x86/xen: Fix runstate updates to be atomic when preempting vCPU
Dmytro Laktyushkin (1):
drm/amd/display: fix yellow carp wm clamping
Dongliang Mu (1):
HID: elo: fix memory leak in elo_probe
Duoming Zhou (1):
ax25: improve the incomplete fix to avoid UAF and NPD bugs
Dāvis Mosāns (1):
btrfs: send: in case of IO error log it
Eliav Farber (1):
EDAC: Fix calculation of returned address and next offset in edac_align_ptr()
Eric Dumazet (6):
ipv4: fix data races in fib_alias_hw_flags_set
ipv6: fix data-race in fib6_info_hw_flags_set / fib6_purge_rt
drop_monitor: fix data-race in dropmon_net_event / trace_napi_poll_hit
net_sched: add __rcu annotation to netdev->qdisc
bonding: fix data-races around agg_select_timer
net: sched: limit TC_ACT_REPEAT loops
Eric W. Biederman (6):
ucounts: Handle wrapping in is_ucounts_overlimit
ucounts: In set_cred_ucounts assume new->ucounts is non-NULL
ucounts: Base set_cred_ucounts changes on the real user
ucounts: Enforce RLIMIT_NPROC not RLIMIT_NPROC+1
rlimit: Fix RLIMIT_NPROC enforcement failure caused by capability calls in set_user
ucounts: Move RLIMIT_NPROC handling after set_user
Florian Westphal (1):
netfilter: conntrack: don't refresh sctp entries in closed state
Gatis Peisenieks (1):
atl1c: fix tx timeout after link flap on Mikrotik 10/25G NIC
Greg Kroah-Hartman (1):
Linux 5.15.25
Guo Ren (1):
irqchip/sifive-plic: Add missing thead,c900-plic match string
Hangbin Liu (2):
selftests: netfilter: fix exit value for nft_concat_range
selftests: netfilter: disable rp_filter on router
Helge Deller (1):
parisc: Show error if wrong 32/64-bit compiler is being used
Ignat Korchagin (1):
ipv6: mcast: use rcu-safe version of ipv6_get_lladdr()
Igor Pylypiv (1):
Revert "module, async: async_synchronize_full() on module init iff async is used"
Jae Hyun Yoo (1):
soc: aspeed: lpc-ctrl: Block error printing on probe defer cases
JaeSang Yoo (1):
tracing: Fix tp_printk option related with tp_printk_stop_on_boot
James Smart (2):
scsi: lpfc: Fix mailbox command failure during driver initialization
scsi: lpfc: Fix pt2pt NVMe PRLI reject LOGO loop
Jan Beulich (1):
x86/Xen: streamline (and fix) PV CPU enumeration
Jani Nikula (1):
drm/i915/opregion: check port number bounds for SWSCI display power state
Jason A. Donenfeld (1):
random: wake up /dev/random writers after zap
Jesse Brandeburg (1):
ice: enable parsing IPSEC SPI headers for RSS
Jiasheng Jiang (3):
mac80211: mlme: check for null after calling kmemdup
dmaengine: sh: rcar-dmac: Check for error num after setting mask
dmaengine: sh: rcar-dmac: Check for error num after dma_set_max_seg_size
Jim Mattson (2):
KVM: x86/pmu: Don't truncate the PerfEvtSeln MSR when creating a perf event
KVM: x86/pmu: Use AMD64_RAW_EVENT_MASK for PERF_TYPE_RAW
Jing Leng (1):
kconfig: fix failing to generate auto.conf
Joakim Tjernlund (1):
arm64: Correct wrong label in macro __init_el2_gicv3
Johannes Berg (4):
iwlwifi: fix use-after-free
iwlwifi: pcie: fix locking when "HW not ready"
iwlwifi: pcie: gen2: fix locking when "HW not ready"
cfg80211: fix race in netlink owner interface destruction
John David Anglin (3):
parisc: Drop __init from map_pages declaration
parisc: Fix data TLB miss in sba_unmap_sg
parisc: Fix sglist access in ccio-dma.c
John Garry (2):
scsi: pm8001: Fix use-after-free for aborted TMF sas_task
scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task
Jon Maloy (2):
tipc: fix wrong publisher node address in link publications
tipc: fix wrong notification node addresses
Jonas Gorski (1):
Revert "net: ethernet: bgmac: Use devm_platform_ioremap_resource_byname"
Julian Braha (1):
pinctrl: bcm63xx: fix unmet dependency on REGMAP for GPIO_REGMAP
Kees Cook (2):
gcc-plugins/stackleak: Use noinstr in favor of notrace
libsubcmd: Fix use-after-free for realloc(..., 0)
Laibin Qiu (1):
block/wbt: fix negative inflight counter when remove scsi device
Li Zhijian (1):
kselftest: signal all child processes
Like Xu (1):
KVM: x86/pmu: Refactoring find_arch_event() to pmc_perf_hw_id()
Linus Torvalds (2):
mm: don't try to NUMA-migrate COW pages that have other uses
tty: n_tty: do not look ahead for EOL character past the end of the buffer
Long Li (1):
PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA topology
Luca Coelho (1):
iwlwifi: mvm: don't send SAR GEO command for 3160 devices
Mans Rullgard (3):
net: dsa: lan9303: fix reset on probe
net: dsa: lan9303: handle hwaccel VLAN tags
net: dsa: lan9303: add VLAN IDs to master device
Marc St-Amand (1):
net: macb: Align the dma and coherent dma masks
Mario Limonciello (5):
drm/amd: Warn users about potential s0ix problems
drm/amd: add support to check whether the system is set to s3 drm/amd: Only run s3 or s0ix if system is configured properly
ACPI: PM: Revert "Only mark EC GPE for wakeup on Intel systems" display/amd: decrease message verbosity about watermarks table failure
Mark Brown (4):
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw()
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_range()
ASoC: ops: Fix stereo change notifications in snd_soc_put_volsw_sx()
ASoC: ops: Fix stereo change notifications in snd_soc_put_xr_sx()
Martin Povišer (1):
ASoC: tas2770: Insert post reset delay
Matteo Martelli (1):
ALSA: usb-audio: revert to IMPLICIT_FB_FIXED_DEV for M-Audio FastTrack Ultra
Matthew Auld (1):
drm/i915/ttm: tweak priority hint selection
Max Kellermann (1):
lib/iov_iter: initialize "flags" in new pipe_buffer
Maxim Levitsky (4):
KVM: x86: nSVM/nVMX: set nested_run_pending on VM entry which is a result of RSM
KVM: x86: SVM: don't passthrough SMAP/SMEP/PKE bits in !NPT && !gCR0.PG case
KVM: x86: nSVM: fix potential NULL derefernce on nested migration
KVM: x86: nSVM: mark vmcb01 as dirty when restoring SMM saved state
Miaoqian Lin (3):
mtd: rawnand: ingenic: Fix missing put_device in ingenic_ecc_get
Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj
dmaengine: stm32-dmamux: Fix PM disable depth imbalance in stm32_dmamux_probe
Michał Winiarski (1):
kunit: tool: Import missing importlib.abc
Mike Christie (1):
scsi: qedi: Fix ABBA deadlock in qedi_process_tmf_resp() and qedi_process_cmd_cleanup_resp()
Ming Lei (1):
scsi: core: Reallocate device's budget map on queue depth change
Miquel Raynal (2):
net: ieee802154: at86rf230: Stop leaking skb's
net: ieee802154: ca8210: Fix lifs/sifs periodsMuhammad Usama Anjum (1):
selftests/exec: Add non-regular to TEST_GEN_PROGS
Namjae Jeon (2):
ksmbd: fix same UniqueId for dot and dotdot entries
ksmbd: don't align last entry offset in smb2 query directory
Naohiro Aota (1):
btrfs: zoned: cache reported zone during mount
Nicholas Bishop (1):
drm/radeon: Fix backlight control on iMac 12,1
Nick Desaulniers (1):
x86/bug: Merge annotate_reachable() into _BUG_FLAGS() asm
Nícolas F. R. A. Prado (1):
selftests: rtc: Increase test timeout so that all tests run
Oleksandr Mazur (1):
net: bridge: multicast: notify switchdev driver whenever MC processing gets disabled
Pablo Neira Ayuso (1):
netfilter: nft_synproxy: unregister hooks on init error path
Padmanabha Srinivasaiah (1):
staging: vc04_services: Fix RCU dereference check
Phil Elwell (1):
brcmfmac: firmware: Fix crash in brcm_alt_fw_path
Radu Bulie (1):
dpaa2-eth: Initialize mutex used in one step timestamping path
Rafał Miłecki (1):
i2c: brcmstb: fix support for DSL and CM variants
Rajib Mahapatra (1):
drm/amdgpu: skipping SDMA hw_init and hw_fini for S0ix.
Randy Dunlap (1):
serial: parisc: GSC: fix build when IOSAPIC is not set
Robin Murphy (1):
drm/cma-helper: Set VM_DONTEXPAND for mmap
Roman Li (1):
drm/amd/display: Cap pflip irqs per max otg number
Sagi Grimberg (3):
nvme: fix a possible use-after-free in controller reset during load
nvme-tcp: fix possible use-after-free in transport error_recovery work
nvme-rdma: fix possible use-after-free in transport error_recovery work
Sascha Hauer (1):
drm/rockchip: dw_hdmi: Do not leave clock enabled in error case
Sean Christopherson (1):
Revert "svm: Add warning message for AVIC IPI invalid target"
Sergio Costas (1):
HID:Add support for UGTABLET WP5540
Seth Forshee (1):
vsock: remove vsock from connected table when connect is interrupted by a signal
Shakeel Butt (1):
mm: io_uring: allow oom-killer from io_uring_setup
Siva Mullati (1):
drm/i915/gvt: Make DRM_I915_GVT depend on X86
Slark Xiao (1):
net: usb: qmi_wwan: Add support for Dell DW5829e
Srinivas Pandruvada (1):
platform/x86: ISST: Fix possible circular locking dependency detected
Steen Hegelund (1):
net: sparx5: do not refer to skb after passing it on
Stephen Boyd (1):
ASoC: qcom: Actually clear DMA interrupt register for HDMI
Steve French (1):
smb3: fix snapshot mount option
Takashi Iwai (3):
ALSA: hda/realtek: Fix deadlock by COEF mutex
ALSA: hda: Fix regression on forced probe mask option
ALSA: hda: Fix missing codec probe on Shenker Dock 15
Tom Rix (1):
dpaa2-switch: fix default return of dpaa2_switch_flower_parse_mirror_key
Trond Myklebust (3):
NFS: Remove an incorrect revalidation in nfs4_update_changeattr_locked()
NFS: LOOKUP_DIRECTORY is also ok with symlinks
NFS: Do not report writeback errors in nfs_getattr()
Ville Syrjälä (3):
drm/atomic: Don't pollute crtc_state->mode_blob with error pointers drm/i915: Fix dbuf slice config lookup
drm/i915: Fix mbus join config lookup
Vincenzo Frascino (1):
kselftest: Fix vdso_test_abi return status
Vladimir Oltean (1):
net: dsa: mv88e6xxx: flush switchdev FDB workqueue before removing VLAN
Vladimir Zapolskiy (2):
i2c: qcom-cci: don't delete an unregistered adapter
i2c: qcom-cci: don't put a device tree node before i2c_add_adapter()
Waiman Long (1):
copy_process(): Move fd_install() out of sighand->siglock critical section
Wan Jiabing (2):
ARM: OMAP2+: hwmod: Add of_node_put() before break
phy: phy-mtk-tphy: Fix duplicated argument in phy-mtk-tphy
Wen Gu (1):
net/smc: Avoid overwriting the copies of clcsock callback functions
Willem de Bruijn (1):
ipv6: per-netns exclusive flowlabel checks
Xin Long (1):
ping: fix the dif and sdif check in ping_lookup
Yang Shi (1):
fs/proc: task_mmu.c: don't read mapcount for migration entry
Yang Xu (3):
selftests/zram: Skip max_comp_streams interface on newer kernel selftests/zram01.sh: Fix compression ratio calculation selftests/zram: Adapt the situation that /dev/zram0 is being used
Ye Guojin (1):
ARM: OMAP2+: adjust the location of put_device() call in omapdss_init_of
Yifan Zhang (1):
drm/amd/pm: correct the sequence of sending gpu reset msg
Yu Huang (1):
ALSA: hda/realtek: Add quirk for Legion Y9000X 2019
Yuka Kawajiri (1):
platform/x86: touchscreen_dmi: Add info for the RWC NANOTE P8 AY07J 2-in-1
Zhang Changzhong (1):
bonding: force carrier update when releasing slave
Zoltán Böszörményi (1):
ata: libata-core: Disable TRIM on M88V29
david regan (1):
mtd: rawnand: brcmnand: Fixed incorrect sub-page ECC status
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 24 +SUBLEVEL = 25 EXTRAVERSION = NAME = Trick or Treat
arch/arm/mach-omap2/display.c +1 -1
@@ -263,9 +263,9 @@ static int __init omapdss_init_of(void) } r =of_platform_populate (node,NULL ,NULL , &pdev->dev); +put_device (&pdev->dev);if (r) {pr_err ("Unable to populate DSS submodule devices\n" ); -put_device (&pdev->dev);return r; }
arch/arm/mach-omap2/omap_hwmod.c +3 -1
@@ -752,8 +752,10 @@ static int __init _init_clkctrl_providers(void)for_each_matching_node (np, ti_clkctrl_match_table) { ret =_setup_clkctrl_provider (np); -if (ret) +if (ret) { +of_node_put (np);break ; + } }return ret;
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi +6 -0
@@ -107,6 +107,12 @@ secmon_reserved: secmon@5000000 { no-map; }; + /* 32 MiB reserved for ARM Trusted Firmware (BL32) */ + secmon_reserved_bl32: secmon@5300000 { + reg = <0x0 0x05300000 0x0 0x2000000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; reusable;
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts +0 -8
@@ -157,14 +157,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 { regulator-always-on; }; - reserved-memory { - /* TEE Reserved Memory */ - bl32_reserved: bl32@5000000 { - reg = <0x0 0x05300000 0x0 0x2000000>; - no-map; - }; - }; - sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
arch/arm64/boot/dts/amlogic/meson-gx.dtsi +6 -0
@@ -49,6 +49,12 @@ secmon_reserved_alt: secmon@5000000 { no-map; }; + /* 32 MiB reserved for ARM Trusted Firmware (BL32) */ + secmon_reserved_bl32: secmon@5300000 { + reg = <0x0 0x05300000 0x0 0x2000000>; + no-map; + }; + linux,cma { compatible = "shared-dma-pool"; reusable;
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts +0 -8
@@ -203,14 +203,6 @@ vddio_ao1v8: regulator-vddio_ao1v8 { regulator-always-on; }; - reserved-memory { - /* TEE Reserved Memory */ - bl32_reserved: bl32@5000000 { - reg = <0x0 0x05300000 0x0 0x2000000>; - no-map; - }; - }; - sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
arch/arm64/include/asm/el2_setup.h +1 -1
@@ -106,7 +106,7 @@ msr_s SYS_ICC_SRE_EL2, x0 isb // Make sure SRE is now set mrs_s x0, SYS_ICC_SRE_EL2 // Read SRE back, - tbz x0, #0, 1f // and check that it sticks + tbz x0, #0, .Lskip_gicv3_\@ // and check that it sticks msr_s SYS_ICH_HCR_EL2, xzr // Reset ICC_HCR_EL2 to defaults .Lskip_gicv3_\@: .endm
arch/parisc/include/asm/bitops.h +8 -0
@@ -12,6 +12,14 @@#include <asm/barrier.h> #include <linux/atomic.h> +/* compiler build environment sanity checks: */ +#if !defined(CONFIG_64BIT ) && defined(__LP64__) +#error "Please use 'ARCH=parisc' to build the 32-bit kernel." +#endif +#if defined(CONFIG_64BIT ) && !defined(__LP64__) +#error "Please use 'ARCH=parisc64' to build the 64-bit kernel." +#endif +/* See http://marc.theaimsgroup.com/?t=108826637900003 for discussion * on use of volatile and __*_bit() (set/clear/change): * *_bit() want use of volatile.
arch/parisc/lib/iomap.c +18 -0
@@ -346,6 +346,16 @@ u64 ioread64be(const void __iomem *addr)return *((u64 *)addr); } +u64 ioread64_lo_hi (const void __iomem *addr) +{ +u32 low, high; + + low =ioread32 (addr); + high =ioread32 (addr +sizeof (u32)); + +return low + ((u64 )high <<32 ); +} +u64 ioread64_hi_lo (const void __iomem *addr) {u32 low, high;
@@ -419,6 +429,12 @@ void iowrite64be(u64 datum, void __iomem *addr) } } +void iowrite64_lo_hi (u64 val,void __iomem *addr) +{ +iowrite32 (val, addr); +iowrite32 (val >>32 , addr +sizeof (u32)); +} +void iowrite64_hi_lo (u64 val,void __iomem *addr) {iowrite32 (val >>32 , addr +sizeof (u32));
@@ -530,6 +546,7 @@ EXPORT_SYMBOL(ioread32);EXPORT_SYMBOL (ioread32be);EXPORT_SYMBOL (ioread64);EXPORT_SYMBOL (ioread64be); +EXPORT_SYMBOL (ioread64_lo_hi);EXPORT_SYMBOL (ioread64_hi_lo);EXPORT_SYMBOL (iowrite8);EXPORT_SYMBOL (iowrite16);
@@ -538,6 +555,7 @@ EXPORT_SYMBOL(iowrite32);EXPORT_SYMBOL (iowrite32be);EXPORT_SYMBOL (iowrite64);EXPORT_SYMBOL (iowrite64be); +EXPORT_SYMBOL (iowrite64_lo_hi);EXPORT_SYMBOL (iowrite64_hi_lo);EXPORT_SYMBOL (ioread8_rep);EXPORT_SYMBOL (ioread16_rep);
arch/parisc/mm/init.c +4 -5
@@ -341,9 +341,9 @@ static void __init setup_bootmem(void)static bool kernel_set_to_readonly; -static void __init map_pages (unsigned long start_vaddr, -unsigned long start_paddr,unsigned long size, -pgprot_t pgprot,int force) +static void __ref map_pages (unsigned long start_vaddr, +unsigned long start_paddr,unsigned long size, +pgprot_t pgprot,int force) {pmd_t *pmd;pte_t *pg_table;
@@ -453,7 +453,7 @@ void __init set_kernel_text_rw(int enable_read_write)flush_tlb_all (); } -void __ref free_initmem (void ) +void free_initmem (void ) {unsigned long init_begin = (unsigned long )__init_begin;unsigned long init_end = (unsigned long )__init_end;
@@ -467,7 +467,6 @@ void __ref free_initmem(void)/* The init text pages are marked R-X. We have to * flush the icache and mark them RW- * -* This is tricky, because map_pages is in the init section. * Do a dummy remap of the data section first (the data * section is already PAGE_KERNEL) to pull in the TLB entries * for map_kernel */
arch/powerpc/kernel/head_book3s_32.S +2 -2
@@ -421,14 +421,14 @@ InstructionTLBMiss: */ /* Get PTE (linux-style) and check access */ mfspr r3,SPRN_IMISS -#ifdef CONFIG_MODULES +#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) lis r1, TASK_SIZE@h /* check if kernel address */ cmplw 0,r1,r3 #endif mfspr r2, SPRN_SDR1 li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER rlwinm r2, r2, 28, 0xfffff000 -#ifdef CONFIG_MODULES +#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) bgt- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
arch/powerpc/lib/sstep.c +2 -0
@@ -3181,12 +3181,14 @@ void emulate_update_regs(struct pt_regs *regs, struct instruction_op *op)case BARRIER_EIEIO :eieio ();break ; +#ifdef CONFIG_PPC64 case BARRIER_LWSYNC : asmvolatile ("lwsync" : : :"memory" );break ;case BARRIER_PTESYNC : asmvolatile ("ptesync" : : :"memory" );break ; +#endif }break ;
arch/x86/include/asm/bug.h +11 -9
@@ -22,7 +22,7 @@#ifdef CONFIG_DEBUG_BUGVERBOSE -#define _BUG_FLAGS (ins, flags) \ +#define _BUG_FLAGS (ins, flags, extra) \ do { \ asm_inline volatile("1:\t" ins "\n" \ ".pushsection __bug_table,\"aw\"\n" \
@@ -31,7 +31,8 @@ do { \"\t.word %c1" "\t# bug_entry::line\n" \"\t.word %c2" "\t# bug_entry::flags\n" \"\t.org 2b+%c3\n" \ -".popsection" \ +".popsection\n" \ + extra \ : : "i" (__FILE__), "i" (__LINE__), \"i" (flags), \ "i" (sizeof(struct bug_entry))); \
@@ -39,14 +40,15 @@ do { \#else /* !CONFIG_DEBUG_BUGVERBOSE */ -#define _BUG_FLAGS (ins, flags) \ +#define _BUG_FLAGS (ins, flags, extra) \ do { \ asm_inline volatile("1:\t" ins "\n" \ ".pushsection __bug_table,\"aw\"\n" \ "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ "\t.word %c0" "\t# bug_entry::flags\n" \ "\t.org 2b+%c1\n" \ - ".popsection" \ + ".popsection\n" \ + extra \ : : "i" (flags), \ "i" (sizeof(struct bug_entry))); \ } while (0)
@@ -55,7 +57,7 @@ do { \#else -#define _BUG_FLAGS (ins, flags) asm volatile(ins) +#define _BUG_FLAGS (ins, flags, extra) asm volatile(ins)#endif /* CONFIG_GENERIC_BUG */
@@ -63,8 +65,8 @@ do { \#define BUG () \ do { \ instrumentation_begin(); \ - _BUG_FLAGS(ASM_UD2, 0); \ - unreachable(); \ + _BUG_FLAGS(ASM_UD2, 0, ""); \ + __builtin_unreachable(); \ } while (0)/*
@@ -75,9 +77,9 @@ do { \*/ #define __WARN_FLAGS (flags) \ do { \ + __auto_type f = BUGFLAG_WARNING|(flags); \ instrumentation_begin(); \ - _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ - annotate_reachable(); \ + _BUG_FLAGS(ASM_UD2, f, ASM_REACHABLE); \ instrumentation_end(); \ } while (0)
arch/x86/kvm/pmu.c +5 -10
@@ -95,7 +95,7 @@ static void kvm_perf_overflow_intr(struct perf_event *perf_event, }static void pmc_reprogram_counter (struct kvm_pmc *pmc,u32 type, -unsigned config,bool exclude_user, +u64 config,bool exclude_user,bool exclude_kernel,bool intr,bool in_tx,bool in_tx_cp) {
@@ -173,8 +173,8 @@ static bool pmc_resume_counter(struct kvm_pmc *pmc)void reprogram_gp_counter (struct kvm_pmc *pmc,u64 eventsel) { -unsigned config, type =PERF_TYPE_RAW ; -u8 event_select, unit_mask; +u64 config; +u32 type =PERF_TYPE_RAW ;struct kvm *kvm = pmc->vcpu->kvm;struct kvm_pmu_event_filter *filter;int i;
@@ -206,23 +206,18 @@ void reprogram_gp_counter(struct kvm_pmc *pmc, u64 eventsel)if (!allow_event)return ; - event_select = eventsel &ARCH_PERFMON_EVENTSEL_EVENT ; - unit_mask = (eventsel &ARCH_PERFMON_EVENTSEL_UMASK ) >>8 ; -if (!(eventsel & (ARCH_PERFMON_EVENTSEL_EDGE |ARCH_PERFMON_EVENTSEL_INV |ARCH_PERFMON_EVENTSEL_CMASK |HSW_IN_TX |HSW_IN_TX_CHECKPOINTED ))) { - config = kvm_x86_ops.pmu_ops->find_arch_event (pmc_to_pmu (pmc), - event_select, - unit_mask); + config = kvm_x86_ops.pmu_ops->pmc_perf_hw_id (pmc);if (config !=PERF_COUNT_HW_MAX ) type =PERF_TYPE_HARDWARE ; }if (type ==PERF_TYPE_RAW ) - config = eventsel &X86_RAW_EVENT_MASK ; + config = eventsel &AMD64_RAW_EVENT_MASK ;if (pmc->current_config == eventsel &&pmc_resume_counter (pmc))return ;
arch/x86/kvm/pmu.h +1 -2
@@ -24,8 +24,7 @@ struct kvm_event_hw_type_mapping { };struct kvm_pmu_ops { -unsigned (*find_arch_event)(struct kvm_pmu *pmu,u8 event_select, -u8 unit_mask); +unsigned int (*pmc_perf_hw_id)(struct kvm_pmc *pmc);unsigned (*find_fixed_event)(int idx);bool (*pmc_is_enabled)(struct kvm_pmc *pmc);struct kvm_pmc *(*pmc_idx_to_pmc)(struct kvm_pmu *pmu,int pmc_idx);
arch/x86/kvm/svm/avic.c +0 -2
@@ -342,8 +342,6 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu)avic_kick_target_vcpus (vcpu->kvm, apic, icrl, icrh);break ;case AVIC_IPI_FAILURE_INVALID_TARGET : -WARN_ONCE (1 ,"Invalid IPI target: index=%u, vcpu=%d, icr=%#0x:%#0x\n" , - index, vcpu->vcpu_id, icrh, icrl);break ;case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE :WARN_ONCE (1 ,"Invalid backing page\n" );
arch/x86/kvm/svm/nested.c +14 -12
@@ -1357,18 +1357,6 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu, !nested_vmcb_valid_sregs(vcpu, save)) goto out_free; -/* -* While the nested guest CR3 is already checked and set by -* KVM_SET_SREGS, it was set when nested state was yet loaded, -* thus MMU might not be initialized correctly. -* Set it again to fix this. -*/ - - ret =nested_svm_load_cr3 (&svm->vcpu, vcpu->arch.cr3, -nested_npt_enabled (svm), false); -if (WARN_ON_ONCE (ret)) - goto out_free; -/* * All checks done, we can enter guest mode. Userspace provides
@@ -1394,6 +1382,20 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,svm_switch_vmcb (svm, &svm->nested.vmcb02);nested_vmcb02_prepare_control (svm); + +/* +* While the nested guest CR3 is already checked and set by +* KVM_SET_SREGS, it was set when nested state was yet loaded, +* thus MMU might not be initialized correctly. +* Set it again to fix this. +*/ + + ret =nested_svm_load_cr3 (&svm->vcpu, vcpu->arch.cr3, +nested_npt_enabled (svm), false); +if (WARN_ON_ONCE (ret)) + goto out_free; + +kvm_make_request (KVM_REQ_GET_NESTED_STATE_PAGES , vcpu); ret =0 ; out_free:
arch/x86/kvm/svm/pmu.c +4 -4
@@ -134,10 +134,10 @@ static inline struct kvm_pmc *get_gp_pmc_amd(struct kvm_pmu *pmu, u32 msr,return &pmu->gp_counters[msr_to_index (msr)]; } -static unsigned amd_find_arch_event (struct kvm_pmu *pmu, -u8 event_select, -u8 unit_mask) +static unsigned int amd_pmc_perf_hw_id (struct kvm_pmc *pmc) { +u8 event_select = pmc->eventsel &ARCH_PERFMON_EVENTSEL_EVENT ; +u8 unit_mask = (pmc->eventsel &ARCH_PERFMON_EVENTSEL_UMASK ) >>8 ;int i;for (i =0 ; i <ARRAY_SIZE (amd_event_mapping); i++)
@@ -320,7 +320,7 @@ static void amd_pmu_reset(struct kvm_vcpu *vcpu) }struct kvm_pmu_ops amd_pmu_ops = { - .find_arch_event = amd_find_arch_event, + .pmc_perf_hw_id = amd_pmc_perf_hw_id, .find_fixed_event = amd_find_fixed_event, .pmc_is_enabled = amd_pmc_is_enabled, .pmc_idx_to_pmc = amd_pmc_idx_to_pmc,
arch/x86/kvm/svm/svm.c +17 -2
@@ -1727,6 +1727,7 @@ void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) {struct vcpu_svm *svm =to_svm (vcpu);u64 hcr0 = cr0; +bool old_paging =is_paging (vcpu);#ifdef CONFIG_X86_64 if (vcpu->arch.efer &EFER_LME && !vcpu->arch.guest_state_protected) {
@@ -1743,8 +1744,11 @@ void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)#endif vcpu->arch.cr0 = cr0; -if (!npt_enabled) +if (!npt_enabled) { hcr0 |=X86_CR0_PG |X86_CR0_WP ; +if (old_paging !=is_paging (vcpu)) +svm_set_cr4 (vcpu,kvm_read_cr4 (vcpu)); + }/* * re-enable caching here because the QEMU bios
@@ -1788,8 +1792,12 @@ void svm_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)svm_flush_tlb (vcpu); vcpu->arch.cr4 = cr4; -if (!npt_enabled) +if (!npt_enabled) { cr4 |=X86_CR4_PAE ; + +if (!is_paging (vcpu)) + cr4 &= ~(X86_CR4_SMEP |X86_CR4_SMAP |X86_CR4_PKE ); + } cr4 |= host_cr4_mce;to_svm (vcpu)->vmcb->save.cr4 = cr4;vmcb_mark_dirty (to_svm (vcpu)->vmcb,VMCB_CR );
@@ -4384,10 +4392,17 @@ static int svm_leave_smm(struct kvm_vcpu *vcpu, const char *smstate)* Enter the nested guest now */ +vmcb_mark_all_dirty (svm->vmcb01.ptr); + vmcb12 = map.hva;nested_load_control_from_vmcb12 (svm, &vmcb12->control); ret =enter_svm_guest_mode (vcpu, vmcb12_gpa, vmcb12, false); +if (ret) + goto unmap_save; + + svm->nested.nested_run_pending =1 ; + unmap_save:kvm_vcpu_unmap (vcpu, &map_save, true); unmap_map:
arch/x86/kvm/vmx/pmu_intel.c +5 -4
@@ -68,10 +68,11 @@ static void global_ctrl_changed(struct kvm_pmu *pmu, u64 data)reprogram_counter (pmu, bit); } -static unsigned intel_find_arch_event (struct kvm_pmu *pmu, -u8 event_select, -u8 unit_mask) +static unsigned int intel_pmc_perf_hw_id (struct kvm_pmc *pmc) { +struct kvm_pmu *pmu =pmc_to_pmu (pmc); +u8 event_select = pmc->eventsel &ARCH_PERFMON_EVENTSEL_EVENT ; +u8 unit_mask = (pmc->eventsel &ARCH_PERFMON_EVENTSEL_UMASK ) >>8 ;int i;for (i =0 ; i <ARRAY_SIZE (intel_arch_events); i++)
@@ -706,7 +707,7 @@ static void intel_pmu_cleanup(struct kvm_vcpu *vcpu) }struct kvm_pmu_ops intel_pmu_ops = { - .find_arch_event = intel_find_arch_event, + .pmc_perf_hw_id = intel_pmc_perf_hw_id, .find_fixed_event = intel_find_fixed_event, .pmc_is_enabled = intel_pmc_is_enabled, .pmc_idx_to_pmc = intel_pmc_idx_to_pmc,
arch/x86/kvm/vmx/vmx.c +1 -0
@@ -7532,6 +7532,7 @@ static int vmx_leave_smm(struct kvm_vcpu *vcpu, const char *smstate)if (ret)return ret; + vmx->nested.nested_run_pending =1 ; vmx->nested.smm.guest_mode = false; }return 0 ;
arch/x86/kvm/xen.c +67 -30
162 lines not on this page · raw message
arch/x86/xen/enlighten_pv.c +0 -4
@@ -1364,10 +1364,6 @@ asmlinkage __visible void __init xen_start_kernel(void)xen_acpi_sleep_register (); -/* Avoid searching for BIOS MP tables */ - x86_init.mpparse.find_smp_config = x86_init_noop; - x86_init.mpparse.get_smp_config = x86_init_uint_noop; -xen_boot_params_init_edd ();#ifdef CONFIG_ACPI
arch/x86/xen/smp_pv.c +6 -20
@@ -148,28 +148,12 @@ int xen_smp_intr_init_pv(unsigned int cpu)return rc; } -static void __init xen_fill_possible_map (void ) -{ -int i, rc; - -if (xen_initial_domain ()) -return ; - -for (i =0 ; i < nr_cpu_ids; i++) { - rc =HYPERVISOR_vcpu_op (VCPUOP_is_up, i,NULL ); -if (rc >=0 ) { - num_processors++; -set_cpu_possible (i, true); - } - } -} - -static void __init xen_filter_cpu_maps (void ) +static void __init _get_smp_config (unsigned int early) {int i, rc;unsigned int subtract =0 ; -if (!xen_initial_domain ()) +if (early)return ; num_processors =0 ;
@@ -210,7 +194,6 @@ static void __init xen_pv_smp_prepare_boot_cpu(void)* sure the old memory can be recycled. */ make_lowmem_page_readwrite (xen_initial_gdt); -xen_filter_cpu_maps ();xen_setup_vcpu_info_placement ();/*
@@ -486,5 +469,8 @@ static const struct smp_ops xen_smp_ops __initconst = {void __init xen_smp_init (void ) { smp_ops = xen_smp_ops; -xen_fill_possible_map (); + +/* Avoid searching for BIOS MP tables */ + x86_init.mpparse.find_smp_config = x86_init_noop; + x86_init.mpparse.get_smp_config = _get_smp_config; }
block/bfq-iosched.c +2 -0
@@ -6878,6 +6878,8 @@ static void bfq_exit_queue(struct elevator_queue *e)spin_unlock_irq (&bfqd->lock);#endif +wbt_enable_default (bfqd->queue); +kfree (bfqd); }
block/blk-core.c +2 -8
@@ -350,13 +350,6 @@ void blk_queue_start_drain(struct request_queue *q)wake_up_all (&q->mq_freeze_wq); } -void blk_set_queue_dying (struct request_queue *q) -{ -blk_queue_flag_set (QUEUE_FLAG_DYING , q); -blk_queue_start_drain (q); -} -EXPORT_SYMBOL_GPL (blk_set_queue_dying); -/** * blk_cleanup_queue - shutdown a request queue * @q: request queue to shutdown
@@ -374,7 +367,8 @@ void blk_cleanup_queue(struct request_queue *q)WARN_ON_ONCE (blk_queue_registered (q));/* mark @q DYING, no new request or merges will be allowed afterwards */ -blk_set_queue_dying (q); +blk_queue_flag_set (QUEUE_FLAG_DYING , q); +blk_queue_start_drain (q);blk_queue_flag_set (QUEUE_FLAG_NOMERGES , q);blk_queue_flag_set (QUEUE_FLAG_NOXMERGES , q);
block/elevator.c +0 -2
@@ -523,8 +523,6 @@ void elv_unregister_queue(struct request_queue *q)kobject_del (&e->kobj); e->registered =0 ; -/* Re-enable throttling in case elevator disabled it */ -wbt_enable_default (q); } }
block/genhd.c +14 -0
@@ -544,6 +544,20 @@ int device_add_disk(struct device *parent, struct gendisk *disk, }EXPORT_SYMBOL (device_add_disk); +/** +* blk_mark_disk_dead - mark a disk as dead +* @disk: disk to mark as dead +* +* Mark as disk as dead (e.g. surprise removed) and don't accept any new I/O +* to this disk. +*/ +void blk_mark_disk_dead (struct gendisk *disk) +{ +set_bit (GD_DEAD , &disk->state); +blk_queue_start_drain (disk->queue); +} +EXPORT_SYMBOL_GPL (blk_mark_disk_dead); +/** * del_gendisk - remove the gendisk * @disk: the struct gendisk to remove
drivers/acpi/x86/s2idle.c +4 -8
@@ -424,15 +424,11 @@ static int lps0_device_attach(struct acpi_device *adev, mem_sleep_current =PM_SUSPEND_TO_IDLE ;/* -* Some Intel based LPS0 systems, like ASUS Zenbook UX430UNR/i7-8550U don't -* use intel-hid or intel-vbtn but require the EC GPE to be enabled while -* suspended for certain wakeup devices to work, so mark it as wakeup-capable. -* -* Only enable on !AMD as enabling this universally causes problems for a number -* of AMD based systems. +* Some LPS0 systems, like ASUS Zenbook UX430UNR/i7-8550U, require the +* EC GPE to be enabled while suspended for certain wakeup devices to +* work, so mark it as wakeup-capable. */ -if (!acpi_s2idle_vendor_amd ()) -acpi_ec_mark_gpe_for_wake (); +acpi_ec_mark_gpe_for_wake ();return 0 ; }
drivers/ata/libata-core.c +1 -0
@@ -4014,6 +4014,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {/* devices that don't properly handle TRIM commands */ { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, }, + { "M88V29*", NULL, ATA_HORKAGE_NOTRIM, },/* * As defined, the DRAT (Deterministic Read After Trim) and RZAT
drivers/block/mtip32xx/mtip32xx.c +1 -1
@@ -4112,7 +4112,7 @@ static void mtip_pci_remove(struct pci_dev *pdev) "Completion workers still active!\n"); } -blk_set_queue_dying (dd->queue); +blk_mark_disk_dead (dd->disk);set_bit (MTIP_DDF_REMOVE_PENDING_BIT , &dd->dd_flag);/* Clean up the block layer. */
drivers/block/rbd.c +1 -1
@@ -7182,7 +7182,7 @@ static ssize_t do_rbd_remove(struct bus_type *bus,* IO to complete/fail. */ blk_mq_freeze_queue (rbd_dev->disk->queue); -blk_set_queue_dying (rbd_dev->disk->queue); +blk_mark_disk_dead (rbd_dev->disk); }del_gendisk (rbd_dev->disk);
drivers/block/xen-blkfront.c +1 -1
@@ -2128,7 +2128,7 @@ static void blkfront_closing(struct blkfront_info *info)/* No more blkif_request(). */ blk_mq_stop_hw_queues (info->rq); -blk_set_queue_dying (info->rq); +blk_mark_disk_dead (info->gd);set_capacity (info->gd,0 );for_each_rinfo (info, rinfo, i) {
drivers/char/random.c +4 -1
@@ -1963,7 +1963,10 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)*/ if (!capable (CAP_SYS_ADMIN ))return -EPERM ; - input_pool.entropy_count =0 ; +if (xchg (&input_pool.entropy_count,0 ) && random_write_wakeup_bits) { +wake_up_interruptible (&random_write_wait); +kill_fasync (&fasync,SIGIO ,POLL_OUT ); + }return 0 ;case RNDRESEEDCRNG :if (!capable (CAP_SYS_ADMIN ))
drivers/dma/ptdma/ptdma-dev.c +9 -8
@@ -207,7 +207,7 @@ int pt_core_init(struct pt_device *pt)if (!cmd_q->qbase) {dev_err (dev,"unable to allocate command queue\n" ); ret = -ENOMEM ; - goto e_dma_alloc; + goto e_destroy_pool; } cmd_q->qidx =0 ;
@@ -229,8 +229,10 @@ int pt_core_init(struct pt_device *pt)/* Request an irq */ ret =request_irq (pt->pt_irq, pt_core_irq_handler,0 ,dev_name (pt->dev), pt); -if (ret) - goto e_pool; +if (ret) { +dev_err (dev,"unable to allocate an IRQ\n" ); + goto e_free_dma; + }/* Update the device registers with queue information. */ cmd_q->qcontrol &= ~CMD_Q_SIZE ;
@@ -250,21 +252,20 @@ int pt_core_init(struct pt_device *pt)/* Register the DMA engine support */ ret =pt_dmaengine_register (pt);if (ret) - goto e_dmaengine; + goto e_free_irq;/* Set up debugfs entries */ ptdma_debugfs_setup (pt);return 0 ; -e_dmaengine: +e_free_irq:free_irq (pt->pt_irq, pt); -e_dma_alloc: +e_free_dma:dma_free_coherent (dev, cmd_q->qsize, cmd_q->qbase, cmd_q->qbase_dma); -e_pool: -dev_err (dev,"unable to allocate an IRQ\n" ); +e_destroy_pool:dma_pool_destroy (pt->cmd_q.dma_pool);return ret;
drivers/dma/sh/rcar-dmac.c +7 -2
@@ -1868,8 +1868,13 @@ static int rcar_dmac_probe(struct platform_device *pdev) dmac->dev = &pdev->dev;platform_set_drvdata (pdev, dmac); -dma_set_max_seg_size (dmac->dev,RCAR_DMATCR_MASK ); -dma_set_mask_and_coherent (dmac->dev,DMA_BIT_MASK (40 )); + ret =dma_set_max_seg_size (dmac->dev,RCAR_DMATCR_MASK ); +if (ret) +return ret; + + ret =dma_set_mask_and_coherent (dmac->dev,DMA_BIT_MASK (40 )); +if (ret) +return ret; ret =rcar_dmac_parse_of (&pdev->dev, dmac);if (ret <0 )
drivers/dma/stm32-dmamux.c +3 -1
@@ -292,10 +292,12 @@ static int stm32_dmamux_probe(struct platform_device *pdev) ret =of_dma_router_register (node, stm32_dmamux_route_allocate, &stm32_dmamux->dmarouter);if (ret) - goto err_clk; + goto pm_disable;return 0 ; +pm_disable: +pm_runtime_disable (&pdev->dev); err_clk:clk_disable_unprepare (stm32_dmamux->clk);
drivers/edac/edac_mc.c +1 -1
@@ -215,7 +215,7 @@ void *edac_align_ptr(void **p, unsigned int size, int n_elems)else return (char *)ptr; - r = (unsigned long )p % align; + r = (unsigned long )ptr % align;if (r ==0 )return (char *)ptr;
drivers/gpu/drm/amd/amdgpu/amdgpu.h +8 -2
@@ -1397,12 +1397,10 @@ int amdgpu_acpi_smart_shift_update(struct drm_device *dev, enum amdgpu_ss ss_staint amdgpu_acpi_pcie_notify_device_ready (struct amdgpu_device *adev);void amdgpu_acpi_get_backlight_caps (struct amdgpu_dm_backlight_caps *caps); -bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev);void amdgpu_acpi_detect (void );#else static inline int amdgpu_acpi_init (struct amdgpu_device *adev) {return 0 ; }static inline void amdgpu_acpi_fini (struct amdgpu_device *adev) { } -static inline bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev) {return false; }static inline void amdgpu_acpi_detect (void ) { }static inline bool amdgpu_acpi_is_power_shift_control_supported (void ) {return false; } static inline int amdgpu_acpi_power_shift_control(struct amdgpu_device *adev,
@@ -1411,6 +1409,14 @@ static inline int amdgpu_acpi_smart_shift_update(struct drm_device *dev, enum amdgpu_ss ss_state) { return 0; }#endif +#if defined(CONFIG_ACPI ) && defined(CONFIG_SUSPEND ) +bool amdgpu_acpi_is_s3_active (struct amdgpu_device *adev); +bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev); +#else +static inline bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev) {return false; } +static inline bool amdgpu_acpi_is_s3_active (struct amdgpu_device *adev) {return false; } +#endif +int amdgpu_cs_find_mapping (struct amdgpu_cs_parser *parser,uint64_t addr,struct amdgpu_bo **bo,struct amdgpu_bo_va_mapping **mapping);
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c +32 -5
@@ -1031,6 +1031,20 @@ void amdgpu_acpi_detect(void) } } +#if IS_ENABLED (CONFIG_SUSPEND ) +/** +* amdgpu_acpi_is_s3_active +* +* @adev: amdgpu_device_pointer +* +* returns true if supported, false if not. +*/ +bool amdgpu_acpi_is_s3_active (struct amdgpu_device *adev) +{ +return !(adev->flags &AMD_IS_APU ) || + (pm_suspend_target_state ==PM_SUSPEND_MEM ); +} +/** * amdgpu_acpi_is_s0ix_active *
@@ -1040,11 +1054,24 @@ void amdgpu_acpi_detect(void)*/ bool amdgpu_acpi_is_s0ix_active (struct amdgpu_device *adev) { -#if IS_ENABLED (CONFIG_AMD_PMC ) &&IS_ENABLED (CONFIG_SUSPEND ) -if (acpi_gbl_FADT.flags &ACPI_FADT_LOW_POWER_S0 ) { -if (adev->flags &AMD_IS_APU ) -return pm_suspend_target_state ==PM_SUSPEND_TO_IDLE ; +if (!(adev->flags &AMD_IS_APU ) || + (pm_suspend_target_state !=PM_SUSPEND_TO_IDLE )) +return false; + +if (!(acpi_gbl_FADT.flags &ACPI_FADT_LOW_POWER_S0 )) { +dev_warn_once (adev->dev, +"Power consumption will be higher as BIOS has not been configured for suspend-to-idle.\n" +"To use suspend-to-idle change the sleep mode in BIOS setup.\n" ); +return false; } -#endif + +#if !IS_ENABLED (CONFIG_AMD_PMC ) +dev_warn_once (adev->dev, +"Power consumption will be higher as the kernel has not been compiled with CONFIG_AMD_PMC.\n" );return false; +#else +return true; +#endif /* CONFIG_AMD_PMC */ } + +#endif /* CONFIG_SUSPEND */
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +8 -0
@@ -1499,6 +1499,7 @@ static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work)static int amdgpu_pmops_prepare (struct device *dev) {struct drm_device *drm_dev =dev_get_drvdata (dev); +struct amdgpu_device *adev =drm_to_adev (drm_dev);/* Return a positive number here so * DPM_FLAG_SMART_SUSPEND works properly
@@ -1506,6 +1507,13 @@ static int amdgpu_pmops_prepare(struct device *dev)if (amdgpu_device_supports_boco (drm_dev))return pm_runtime_suspended (dev); +/* if we will not support s3 or s2i for the device +* then skip suspend +*/ +if (!amdgpu_acpi_is_s0ix_active (adev) && + !amdgpu_acpi_is_s3_active (adev)) +return 1 ; +return 0 ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -1892,7 +1892,7 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset,unsigned i;int r; -if (direct_submit && !ring->sched.ready) { +if (!direct_submit && !ring->sched.ready) {DRM_ERROR ("Trying to move memory with ring turned off.\n" );return -EINVAL ; }
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +8 -0
@@ -2062,6 +2062,10 @@ static int sdma_v4_0_suspend(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +/* SMU saves SDMA state for us */ +if (adev->in_s0ix) +return 0 ; +return sdma_v4_0_hw_fini (adev); }
@@ -2069,6 +2073,10 @@ static int sdma_v4_0_resume(void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle; +/* SMU restores SDMA state for us */ +if (adev->in_s0ix) +return 0 ; +return sdma_v4_0_hw_init (adev); }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -1
@@ -3230,7 +3230,7 @@ static int dcn10_register_irq_handlers(struct amdgpu_device *adev)/* Use GRPH_PFLIP interrupt */ for (i =DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT ; - i <=DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT + adev->mode_info.num_crtc -1 ; + i <=DCN_1_0__SRCID__HUBP0_FLIP_INTERRUPT + dc->caps.max_otg_num -1 ; i++) { r =amdgpu_irq_add_id (adev,SOC15_IH_CLIENTID_DCE , i, &adev->pageflip_irq);if (r) {
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c +5 -1
@@ -120,7 +120,11 @@ int dcn31_smu_send_msg_with_param( result =dcn31_smu_wait_for_response (clk_mgr,10 ,200000 );if (result == VBIOSSMC_Result_Failed) { -ASSERT (0 ); +if (msg_id == VBIOSSMC_MSG_TransferTableDram2Smu && + param ==TABLE_WATERMARKS ) +DC_LOG_WARNING ("Watermarks table not configured properly by SMU" ); +else +ASSERT (0 );REG_WRITE (MP1_SMN_C2PMSG_91 , VBIOSSMC_Result_OK);return -1 ; }
drivers/gpu/drm/amd/display/dc/core/dc.c +2 -0
@@ -1118,6 +1118,8 @@ struct dc *dc_create(const struct dc_init_data *init_params) dc->caps.max_dp_protocol_version =DP_VERSION_1_4 ; + dc->caps.max_otg_num = dc->res_pool->res_cap->num_timing_generator; +if (dc->res_pool->dmcu !=NULL ) dc->versions.dmcu_version = dc->res_pool->dmcu->dmcu_version; }
drivers/gpu/drm/amd/display/dc/dc.h +1 -0
@@ -185,6 +185,7 @@ struct dc_caps {struct dc_color_caps color;bool vbios_lttpr_aware;bool vbios_lttpr_enable; +uint32_t max_otg_num; };struct dc_bug_wa {
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c +32 -29
236 lines not on this page · raw message
drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c +2 -7
@@ -291,14 +291,9 @@ static int yellow_carp_post_smu_init(struct smu_context *smu)static int yellow_carp_mode_reset (struct smu_context *smu,int type) { -int ret =0 , index =0 ; - - index =smu_cmn_to_asic_specific_index (smu,CMN2ASIC_MAPPING_MSG , - SMU_MSG_GfxDeviceDriverReset); -if (index <0 ) -return index == -EACCES ?0 : index; +int ret =0 ; - ret =smu_cmn_send_smc_msg_with_param (smu, (uint16_t )index, type,NULL ); + ret =smu_cmn_send_smc_msg_with_param (smu, SMU_MSG_GfxDeviceDriverReset, type,NULL );if (ret)dev_err (smu->adev->dev,"Failed to mode reset!\n" );
drivers/gpu/drm/drm_atomic_uapi.c +8 -6
@@ -76,15 +76,17 @@ int drm_atomic_set_mode_for_crtc(struct drm_crtc_state *state, state->mode_blob =NULL ;if (mode) { +struct drm_property_blob *blob; +drm_mode_convert_to_umode (&umode, mode); - state->mode_blob = -drm_property_create_blob (state->crtc->dev, -sizeof (umode), - &umode); -if (IS_ERR (state->mode_blob)) -return PTR_ERR (state->mode_blob); + blob =drm_property_create_blob (crtc->dev, +sizeof (umode), &umode); +if (IS_ERR (blob)) +return PTR_ERR (blob);drm_mode_copy (&state->mode, mode); + + state->mode_blob = blob; state->enable = true; drm_dbg_atomic(crtc->dev, "Set [MODE:%s] for [CRTC:%d:%s] state %p\n",
drivers/gpu/drm/drm_gem_cma_helper.c +1 -0
@@ -515,6 +515,7 @@ int drm_gem_cma_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)*/ vma->vm_pgoff -=drm_vma_node_start (&obj->vma_node); vma->vm_flags &= ~VM_PFNMAP ; + vma->vm_flags |=VM_DONTEXPAND ; cma_obj =to_drm_gem_cma_obj (obj);
drivers/gpu/drm/i915/Kconfig +1 -0
@@ -101,6 +101,7 @@ config DRM_I915_USERPTR config DRM_I915_GVT bool "Enable Intel GVT-g graphics virtualization host support" depends on DRM_I915 + depends on X86 depends on 64BIT default n help
drivers/gpu/drm/i915/display/intel_opregion.c +15 -0
@@ -361,6 +361,21 @@ int intel_opregion_notify_encoder(struct intel_encoder *intel_encoder, port++; } +/* +* The port numbering and mapping here is bizarre. The now-obsolete +* swsci spec supports ports numbered [0..4]. Port E is handled as a +* special case, but port F and beyond are not. The functionality is +* supposed to be obsolete for new platforms. Just bail out if the port +* number is out of bounds after mapping. +*/ +if (port >4 ) { +drm_dbg_kms (&dev_priv->drm, +"[ENCODER:%d:%s] port %c (index %u) out of bounds for display power state notification\n" , + intel_encoder->base.base.id, intel_encoder->base.name, +port_name (intel_encoder->port), port); +return -EINVAL ; + } +if (!enable) parm |=4 <<8 ;
drivers/gpu/drm/i915/gem/i915_gem_ttm.c +2 -4
@@ -759,11 +759,9 @@ static void i915_ttm_adjust_lru(struct drm_i915_gem_object *obj)if (obj->mm.madv !=I915_MADV_WILLNEED ) { bo->priority =I915_TTM_PRIO_PURGE ; }else if (!i915_gem_object_has_pages (obj)) { -if (bo->priority <I915_TTM_PRIO_HAS_PAGES ) - bo->priority =I915_TTM_PRIO_HAS_PAGES ; + bo->priority =I915_TTM_PRIO_NO_PAGES ; }else { -if (bo->priority >I915_TTM_PRIO_NO_PAGES ) - bo->priority =I915_TTM_PRIO_NO_PAGES ; + bo->priority =I915_TTM_PRIO_HAS_PAGES ; }ttm_bo_move_to_lru_tail (bo, bo->resource,NULL );
drivers/gpu/drm/i915/intel_pm.c +2 -2
@@ -4844,7 +4844,7 @@ static bool check_mbus_joined(u8 active_pipes, {int i; -for (i =0 ; i < dbuf_slices[i].active_pipes; i++) { +for (i =0 ; dbuf_slices[i].active_pipes !=0 ; i++) {if (dbuf_slices[i].active_pipes == active_pipes)return dbuf_slices[i].join_mbus; }
@@ -4861,7 +4861,7 @@ static u8 compute_dbuf_slices(enum pipe pipe, u8 active_pipes, bool join_mbus, {int i; -for (i =0 ; i < dbuf_slices[i].active_pipes; i++) { +for (i =0 ; dbuf_slices[i].active_pipes !=0 ; i++) {if (dbuf_slices[i].active_pipes == active_pipes && dbuf_slices[i].join_mbus == join_mbus)return dbuf_slices[i].dbuf_mask[pipe];
drivers/gpu/drm/nouveau/nvkm/falcon/base.c +6 -2
@@ -117,8 +117,12 @@ nvkm_falcon_disable(struct nvkm_falcon *falcon)int nvkm_falcon_reset (struct nvkm_falcon *falcon) { -nvkm_falcon_disable (falcon); -return nvkm_falcon_enable (falcon); +if (!falcon->func->reset) { +nvkm_falcon_disable (falcon); +return nvkm_falcon_enable (falcon); + } + +return falcon->func->reset (falcon); }int
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm200.c +30 -1
@@ -23,9 +23,38 @@*/ #include "priv.h" +static int +gm200_pmu_flcn_reset (struct nvkm_falcon *falcon) +{ +struct nvkm_pmu *pmu =container_of (falcon,typeof (*pmu), falcon); + +nvkm_falcon_wr32 (falcon,0x014 ,0x0000ffff ); + pmu->func->reset (pmu); +return nvkm_falcon_enable (falcon); +} + +const struct nvkm_falcon_func +gm200_pmu_flcn = { + .debug =0xc08 , + .fbif =0xe00 , + .load_imem = nvkm_falcon_v1_load_imem, + .load_dmem = nvkm_falcon_v1_load_dmem, + .read_dmem = nvkm_falcon_v1_read_dmem, + .bind_context = nvkm_falcon_v1_bind_context, + .wait_for_halt = nvkm_falcon_v1_wait_for_halt, + .clear_interrupt = nvkm_falcon_v1_clear_interrupt, + .set_start_addr = nvkm_falcon_v1_set_start_addr, + .start = nvkm_falcon_v1_start, + .enable = nvkm_falcon_v1_enable, + .disable = nvkm_falcon_v1_disable, + .reset = gm200_pmu_flcn_reset, + .cmdq = {0x4a0 ,0x4b0 ,4 }, + .msgq = {0x4c8 ,0x4cc ,0 }, +}; +static const struct nvkm_pmu_func gm200_pmu = { - .flcn = >215_pmu_flcn, + .flcn = &gm200_pmu_flcn, .enabled = gf100_pmu_enabled, .reset = gf100_pmu_reset, };
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +1 -1
@@ -211,7 +211,7 @@ gm20b_pmu_recv(struct nvkm_pmu *pmu)static const struct nvkm_pmu_func gm20b_pmu = { - .flcn = >215_pmu_flcn, + .flcn = &gm200_pmu_flcn, .enabled = gf100_pmu_enabled, .intr = gt215_pmu_intr, .recv = gm20b_pmu_recv,
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.c +1 -1
@@ -39,7 +39,7 @@ gp102_pmu_enabled(struct nvkm_pmu *pmu)static const struct nvkm_pmu_func gp102_pmu = { - .flcn = >215_pmu_flcn, + .flcn = &gm200_pmu_flcn, .enabled = gp102_pmu_enabled, .reset = gp102_pmu_reset, };
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.c +1 -1
@@ -78,7 +78,7 @@ gp10b_pmu_acr = {static const struct nvkm_pmu_func gp10b_pmu = { - .flcn = >215_pmu_flcn, + .flcn = &gm200_pmu_flcn, .enabled = gf100_pmu_enabled, .intr = gt215_pmu_intr, .recv = gm20b_pmu_recv,
drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h +2 -0
@@ -44,6 +44,8 @@ void gf100_pmu_reset(struct nvkm_pmu *);void gk110_pmu_pgob (struct nvkm_pmu *,bool ); +extern const struct nvkm_falcon_func gm200_pmu_flcn; +void gm20b_pmu_acr_bld_patch (struct nvkm_acr *,u32 ,s64 );void gm20b_pmu_acr_bld_write (struct nvkm_acr *,u32 ,struct nvkm_acr_lsfw *);int gm20b_pmu_acr_boot (struct nvkm_falcon *);
drivers/gpu/drm/radeon/atombios_encoders.c +2 -1
@@ -198,7 +198,8 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,* so don't register a backlight device */ if ((rdev->pdev->subsystem_vendor ==PCI_VENDOR_ID_APPLE ) && - (rdev->pdev->device ==0x6741 )) + (rdev->pdev->device ==0x6741 ) && + !dmi_match (DMI_PRODUCT_NAME ,"iMac12,1" ))return ;if (!radeon_encoder->enc_priv)
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +7 -7
@@ -529,13 +529,6 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,return ret; } - ret =clk_prepare_enable (hdmi->vpll_clk); -if (ret) { -DRM_DEV_ERROR (hdmi->dev,"Failed to enable HDMI vpll: %d\n" , - ret); -return ret; - } - hdmi->phy =devm_phy_optional_get (dev,"hdmi" );if (IS_ERR (hdmi->phy)) { ret =PTR_ERR (hdmi->phy);
@@ -544,6 +537,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,return ret; } + ret =clk_prepare_enable (hdmi->vpll_clk); +if (ret) { +DRM_DEV_ERROR (hdmi->dev,"Failed to enable HDMI vpll: %d\n" , + ret); +return ret; + } +drm_encoder_helper_add (encoder, &dw_hdmi_rockchip_encoder_helper_funcs);drm_simple_encoder_init (drm, encoder,DRM_MODE_ENCODER_TMDS );
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c +2 -2
@@ -36,11 +36,11 @@ static int amd_sfh_wait_response_v2(struct amd_mp2_dev *mp2, u8 sid, u32 sensor_ {union cmd_response cmd_resp; -/* Get response with status within a max of 800 ms timeout */ +/* Get response with status within a max of 1600 ms timeout */ if (!readl_poll_timeout (mp2->mmio +AMD_P2C_MSG (0 ), cmd_resp.resp, (cmd_resp.response_v2.response == sensor_sts && cmd_resp.response_v2.status ==0 && (sid ==0xff || - cmd_resp.response_v2.sensor_id == sid)),500 ,800000 )) + cmd_resp.response_v2.sensor_id == sid)),500 ,1600000 ))return cmd_resp.response_v2.response;return SENSOR_DISABLED ;
drivers/hid/amd-sfh-hid/amd_sfh_pcie.h +1 -1
@@ -48,7 +48,7 @@ union sfh_cmd_base { } s;struct {u32 cmd_id :4 ; -u32 intr_enable :1 ; +u32 intr_disable :1 ;u32 rsvd1 :3 ;u32 length :7 ;u32 mem_type :1 ;
drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c +3 -1
@@ -26,6 +26,7 @@#define HID_USAGE_SENSOR_STATE_READY_ENUM 0x02#define HID_USAGE_SENSOR_STATE_INITIALIZING_ENUM 0x05#define HID_USAGE_SENSOR_EVENT_DATA_UPDATED_ENUM 0x04 +#define ILLUMINANCE_MASK GENMASK(14, 0)int get_report_descriptor (int sensor_idx,u8 *rep_desc) {
@@ -245,7 +246,8 @@ u8 get_input_report(u8 current_index, int sensor_idx, int report_id, struct amd_get_common_inputs (&als_input.common_property, report_id);/* For ALS ,V2 Platforms uses C2P_MSG5 register instead of DRAM access method */ if (supported_input ==V2_STATUS ) - als_input.illuminance_value = (int )readl (privdata->mmio +AMD_C2P_MSG (5 )); + als_input.illuminance_value = +readl (privdata->mmio +AMD_C2P_MSG (5 )) &ILLUMINANCE_MASK ;else als_input.illuminance_value = (int )sensor_virt_addr[0 ] /AMD_SFH_FW_MULTIPLIER ;
drivers/hid/hid-elo.c +1 -0
@@ -262,6 +262,7 @@ static int elo_probe(struct hid_device *hdev, const struct hid_device_id *id)return 0 ; err_free: +usb_put_dev (udev);kfree (priv);return ret; }
drivers/hid/hid-ids.h +1 -0
@@ -1353,6 +1353,7 @@#define USB_VENDOR_ID_UGTIZER 0x2179#define USB_DEVICE_ID_UGTIZER_TABLET_GP0610 0x0053#define USB_DEVICE_ID_UGTIZER_TABLET_GT5040 0x0077 +#define USB_DEVICE_ID_UGTIZER_TABLET_WP5540 0x0004#define USB_VENDOR_ID_VIEWSONIC 0x0543#define USB_DEVICE_ID_VIEWSONIC_PD1011 0xe621
drivers/hid/hid-quirks.c +1 -0
@@ -187,6 +187,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_TURBOX, USB_DEVICE_ID_TURBOX_KEYBOARD), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_KNA5), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_UCLOGIC, USB_DEVICE_ID_UCLOGIC_TABLET_TWA60), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_UGTIZER, USB_DEVICE_ID_UGTIZER_TABLET_WP5540), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_10_6_INCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_MEDIA_TABLET_14_1_INCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_WALTOP, USB_DEVICE_ID_WALTOP_SIRIUS_BATTERY_FREE_TABLET), HID_QUIRK_MULTI_INPUT },
drivers/hid/i2c-hid/i2c-hid-of-goodix.c +12 -16
@@ -27,7 +27,6 @@ struct i2c_hid_of_goodix {struct regulator *vdd;struct notifier_block nb; -struct mutex regulator_mutex;struct gpio_desc *reset_gpio;const struct goodix_i2c_hid_timing_data *timings; };
@@ -67,8 +66,6 @@ static int ihid_goodix_vdd_notify(struct notifier_block *nb, container_of(nb, struct i2c_hid_of_goodix, nb);int ret =NOTIFY_OK ; -mutex_lock (&ihid_goodix->regulator_mutex); -switch (event) {case REGULATOR_EVENT_PRE_DISABLE :gpiod_set_value_cansleep (ihid_goodix->reset_gpio,1 );
@@ -87,8 +84,6 @@ static int ihid_goodix_vdd_notify(struct notifier_block *nb,break ; } -mutex_unlock (&ihid_goodix->regulator_mutex); -return ret; }
@@ -102,8 +97,6 @@ static int i2c_hid_of_goodix_probe(struct i2c_client *client,if (!ihid_goodix)return -ENOMEM ; -mutex_init (&ihid_goodix->regulator_mutex); - ihid_goodix->ops.power_up = goodix_i2c_hid_power_up; ihid_goodix->ops.power_down = goodix_i2c_hid_power_down;
@@ -130,25 +123,28 @@ static int i2c_hid_of_goodix_probe(struct i2c_client *client,* long. Holding the controller in reset apparently draws extra * power. */ -mutex_lock (&ihid_goodix->regulator_mutex); ihid_goodix->nb.notifier_call = ihid_goodix_vdd_notify; ret =devm_regulator_register_notifier (ihid_goodix->vdd, &ihid_goodix->nb); -if (ret) { -mutex_unlock (&ihid_goodix->regulator_mutex); +if (ret)return dev_err_probe (&client->dev, ret,"regulator notifier request failed\n" ); - }/* * If someone else is holding the regulator on (or the regulator is * an always-on one) we might never be told to deassert reset. Do it -* now. Here we'll assume that someone else might have _just -* barely_ turned the regulator on so we'll do the full -* "post_power_delay" just in case. +* now... and temporarily bump the regulator reference count just to +* make sure it is impossible for this to race with our own notifier! +* We also assume that someone else might have _just barely_ turned +* the regulator on so we'll do the full "post_power_delay" just in +* case. */ -if (ihid_goodix->reset_gpio &®ulator_is_enabled (ihid_goodix->vdd)) +if (ihid_goodix->reset_gpio &®ulator_is_enabled (ihid_goodix->vdd)) { + ret =regulator_enable (ihid_goodix->vdd); +if (ret) +return ret;goodix_i2c_hid_deassert_reset (ihid_goodix, true); -mutex_unlock (&ihid_goodix->regulator_mutex); +regulator_disable (ihid_goodix->vdd); + }return i2c_hid_core_probe (client, &ihid_goodix->ops,0x0001 ,0 ); }
drivers/hv/vmbus_drv.c +4 -1
@@ -2027,8 +2027,10 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel) kobj->kset = dev->channels_kset; ret =kobject_init_and_add (kobj, &vmbus_chan_ktype,NULL ,"%u" , relid); -if (ret) +if (ret) { +kobject_put (kobj);return ret; + } ret =sysfs_create_group (kobj, &vmbus_chan_group);
@@ -2037,6 +2039,7 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel)* The calling functions' error handling paths will cleanup the * empty channel directory. */ +kobject_put (kobj);dev_err (device,"Unable to set up channel sysfs files\n" );return ret; }
drivers/i2c/busses/i2c-brcmstb.c +1 -1
@@ -673,7 +673,7 @@ static int brcmstb_i2c_probe(struct platform_device *pdev)/* set the data in/out register size for compatible SoCs */ if (of_device_is_compatible (dev->device->of_node, -"brcmstb,brcmper-i2c" )) +"brcm,brcmper-i2c" )) dev->data_regsz =sizeof (u8);else dev->data_regsz =sizeof (u32);
drivers/i2c/busses/i2c-qcom-cci.c +11 -5
@@ -558,7 +558,7 @@ static int cci_probe(struct platform_device *pdev) cci->master[idx].adap.quirks = &cci->data->quirks; cci->master[idx].adap.algo = &cci_algo; cci->master[idx].adap.dev.parent = dev; - cci->master[idx].adap.dev.of_node = child; + cci->master[idx].adap.dev.of_node =of_node_get (child); cci->master[idx].master = idx; cci->master[idx].cci = cci;
@@ -643,8 +643,10 @@ static int cci_probe(struct platform_device *pdev)continue ; ret =i2c_add_adapter (&cci->master[i].adap); -if (ret <0 ) +if (ret <0 ) { +of_node_put (cci->master[i].adap.dev.of_node); goto error_i2c; + } }pm_runtime_set_autosuspend_delay (dev,MSEC_PER_SEC );
@@ -655,9 +657,11 @@ static int cci_probe(struct platform_device *pdev)return 0 ; error_i2c: -for (; i >=0 ; i--) { -if (cci->master[i].cci) +for (--i ; i >=0 ; i--) { +if (cci->master[i].cci) {i2c_del_adapter (&cci->master[i].adap); +of_node_put (cci->master[i].adap.dev.of_node); + } } error:disable_irq (cci->irq);
@@ -673,8 +677,10 @@ static int cci_remove(struct platform_device *pdev)int i;for (i =0 ; i < cci->data->num_masters; i++) { -if (cci->master[i].cci) +if (cci->master[i].cci) {i2c_del_adapter (&cci->master[i].adap); +of_node_put (cci->master[i].adap.dev.of_node); + }cci_halt (cci, i); }
drivers/irqchip/irq-sifive-plic.c +1 -0
@@ -398,3 +398,4 @@ static int __init plic_init(struct device_node *node,IRQCHIP_DECLARE (sifive_plic,"sifive,plic-1.0.0" , plic_init);IRQCHIP_DECLARE (riscv_plic0,"riscv,plic0" , plic_init);/* for legacy systems */ +IRQCHIP_DECLARE (thead_c900_plic,"thead,c900-plic" , plic_init);/* for firmware driver */
drivers/md/dm.c +1 -1
@@ -2156,7 +2156,7 @@ static void __dm_destroy(struct mapped_device *md, bool wait)set_bit (DMF_FREEING , &md->flags);spin_unlock (&_minor_lock); -blk_set_queue_dying (md->queue); +blk_mark_disk_dead (md->disk);/* * Take suspend_lock so that presuspend and postsuspend methods
drivers/mmc/core/block.c +14 -14
@@ -1682,31 +1682,31 @@ static void mmc_blk_read_single(struct mmc_queue *mq, struct request *req)struct mmc_card *card = mq->card;struct mmc_host *host = card->host;blk_status_t error =BLK_STS_OK ; -int retries =0 ; do { u32 status; int err; + int retries = 0; - mmc_blk_rw_rq_prep(mqrq, card, 1, mq); + while (retries++ <= MMC_READ_SINGLE_RETRIES) { + mmc_blk_rw_rq_prep(mqrq, card, 1, mq); - mmc_wait_for_req(host, mrq); + mmc_wait_for_req(host, mrq); - err = mmc_send_status(card, &status); - if (err) - goto error_exit; - - if (!mmc_host_is_spi(host) && - !mmc_ready_for_data(status)) { - err = mmc_blk_fix_state(card, req); + err = mmc_send_status(card, &status); if (err) goto error_exit; - } - if (mrq->cmd->error && retries++ < MMC_READ_SINGLE_RETRIES) - continue; + if (!mmc_host_is_spi(host) && + !mmc_ready_for_data(status)) { + err = mmc_blk_fix_state(card, req); + if (err) + goto error_exit; + } - retries = 0; + if (!mrq->cmd->error) + break; + } if (mrq->cmd->error || mrq->data->error ||
drivers/mtd/devices/phram.c +8 -4
@@ -264,16 +264,20 @@ static int phram_setup(const char *val) } } -if (erasesize) -div_u64_rem (len, (uint32_t )erasesize, &rem); -if (len ==0 || erasesize ==0 || erasesize > len - || erasesize >UINT_MAX || rem) { + || erasesize >UINT_MAX ) {parse_err ("illegal erasesize or len\n" ); ret = -EINVAL ; goto error; } +div_u64_rem (len, (uint32_t )erasesize, &rem); +if (rem) { +parse_err ("len is not multiple of erasesize\n" ); + ret = -EINVAL ; + goto error; + } + ret =register_device (name, start, len, (uint32_t )erasesize);if (ret) goto error;
drivers/mtd/nand/raw/brcmnand/brcmnand.c +1 -1
@@ -2106,7 +2106,7 @@ static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip, mtd->oobsize / trans, host->hwcfg.sector_size_1k); -if (!ret) { +if (ret != -EBADMSG ) { *err_addr =brcmnand_get_uncorrecc_addr (ctrl);if (*err_addr)
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +2 -1
@@ -2293,7 +2293,7 @@ static int gpmi_nfc_exec_op(struct nand_chip *chip, this->hw.must_apply_timings = false; ret =gpmi_nfc_apply_timings (this);if (ret) -return ret; + goto out_pm; }dev_dbg (this->dev,"%s: %d instructions\n" , __func__, op->ninstrs);
@@ -2422,6 +2422,7 @@ static int gpmi_nfc_exec_op(struct nand_chip *chip, this->bch = false; +out_pm:pm_runtime_mark_last_busy (this->dev);pm_runtime_put_autosuspend (this->dev);
drivers/mtd/nand/raw/ingenic/ingenic_ecc.c +6 -1
@@ -68,9 +68,14 @@ static struct ingenic_ecc *ingenic_ecc_get(struct device_node *np)struct ingenic_ecc *ecc; pdev =of_find_device_by_node (np); -if (!pdev || !platform_get_drvdata (pdev)) +if (!pdev)return ERR_PTR (-EPROBE_DEFER ); +if (!platform_get_drvdata (pdev)) { +put_device (&pdev->dev); +return ERR_PTR (-EPROBE_DEFER ); + } + ecc =platform_get_drvdata (pdev);clk_prepare_enable (ecc->clk);
drivers/mtd/nand/raw/qcom_nandc.c +6 -8
@@ -2,7 +2,6 @@/* * Copyright (c) 2016, The Linux Foundation. All rights reserved. */ -#include <linux/clk.h> #include <linux/slab.h> #include <linux/bitops.h>
@@ -3063,10 +3062,6 @@ static int qcom_nandc_probe(struct platform_device *pdev)if (dma_mapping_error (dev, nandc->base_dma))return -ENXIO ; - ret =qcom_nandc_alloc (nandc); -if (ret) - goto err_nandc_alloc; - ret =clk_prepare_enable (nandc->core_clk);if (ret) goto err_core_clk;
@@ -3075,6 +3070,10 @@ static int qcom_nandc_probe(struct platform_device *pdev)if (ret) goto err_aon_clk; + ret =qcom_nandc_alloc (nandc); +if (ret) + goto err_nandc_alloc; + ret =qcom_nandc_setup (nandc);if (ret) goto err_setup;
@@ -3086,15 +3085,14 @@ static int qcom_nandc_probe(struct platform_device *pdev)return 0 ; err_setup: +qcom_nandc_unalloc (nandc); +err_nandc_alloc:clk_disable_unprepare (nandc->aon_clk); err_aon_clk:clk_disable_unprepare (nandc->core_clk); err_core_clk: -qcom_nandc_unalloc (nandc); -err_nandc_alloc:dma_unmap_resource (dev, res->start,resource_size (res),DMA_BIDIRECTIONAL ,0 ); -return ret; }
drivers/mtd/parsers/qcomsmempart.c +21 -12
@@ -58,11 +58,11 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,const struct mtd_partition **pparts, struct mtd_part_parser_data *data) { + size_t len = SMEM_FLASH_PTABLE_HDR_LEN; +int ret, i, j, tmpparts, numparts =0 ;struct smem_flash_pentry *pentry;struct smem_flash_ptable *ptable; -size_t len =SMEM_FLASH_PTABLE_HDR_LEN ;struct mtd_partition *parts; -int ret, i, numparts;char *name, *c; if (IS_ENABLED(CONFIG_MTD_SPI_NOR_USE_4K_SECTORS)
@@ -87,8 +87,8 @@ static int parse_qcomsmem_part(struct mtd_info *mtd, }/* Ensure that # of partitions is less than the max we have allocated */ - numparts =le32_to_cpu (ptable->numparts); -if (numparts >SMEM_FLASH_PTABLE_MAX_PARTS_V4 ) { + tmpparts =le32_to_cpu (ptable->numparts); +if (tmpparts >SMEM_FLASH_PTABLE_MAX_PARTS_V4 ) {pr_err ("Partition numbers exceed the max limit\n" );return -EINVAL ; }
@@ -116,11 +116,17 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,return PTR_ERR (ptable); } +for (i =0 ; i < tmpparts; i++) { + pentry = &ptable->pentry[i]; +if (pentry->name[0 ] !='\0' ) + numparts++; + } + parts =kcalloc (numparts,sizeof (*parts),GFP_KERNEL );if (!parts)return -ENOMEM ; -for (i =0 ; i < numparts; i++) { +for (i =0 , j =0 ; i < tmpparts; i++) { pentry = &ptable->pentry[i];if (pentry->name[0 ] =='\0' )continue ;
@@ -135,24 +141,25 @@ static int parse_qcomsmem_part(struct mtd_info *mtd,for (c = name; *c !='\0' ; c++) *c =tolower (*c); - parts[i].name = name; - parts[i].offset =le32_to_cpu (pentry->offset) * mtd->erasesize; - parts[i].mask_flags = pentry->attr; - parts[i].size =le32_to_cpu (pentry->length) * mtd->erasesize; + parts[j].name = name; + parts[j].offset =le32_to_cpu (pentry->offset) * mtd->erasesize; + parts[j].mask_flags = pentry->attr; + parts[j].size =le32_to_cpu (pentry->length) * mtd->erasesize;pr_debug ("%d: %s offs=0x%08x size=0x%08x attr:0x%08x\n" , i, pentry->name,le32_to_cpu (pentry->offset),le32_to_cpu (pentry->length), pentry->attr); + j++; }pr_debug ("SMEM partition table found: ver: %d len: %d\n" , -le32_to_cpu (ptable->version), numparts); +le32_to_cpu (ptable->version), tmpparts); *pparts = parts;return numparts; out_free_parts: -while (--i >=0 ) -kfree (parts[i].name); +while (--j >=0 ) +kfree (parts[j].name);kfree (parts); *pparts =NULL ;
@@ -166,6 +173,8 @@ static void parse_qcomsmem_cleanup(const struct mtd_partition *pparts,for (i =0 ; i < nr_parts; i++)kfree (pparts[i].name); + +kfree (pparts); }static const struct of_device_id qcomsmem_of_match_table[] = {
drivers/net/bonding/bond_3ad.c +25 -5
@@ -225,7 +225,7 @@ static inline int __check_agg_selection_timer(struct port *port)if (bond ==NULL )return 0 ; -return BOND_AD_INFO (bond).agg_select_timer ?1 :0 ; +return atomic_read (&BOND_AD_INFO (bond).agg_select_timer) ?1 :0 ; }/**
@@ -1995,7 +1995,7 @@ static void ad_marker_response_received(struct bond_marker *marker,*/ void bond_3ad_initiate_agg_selection (struct bonding *bond,int timeout) { -BOND_AD_INFO (bond).agg_select_timer = timeout; +atomic_set (&BOND_AD_INFO (bond).agg_select_timer, timeout); }/**
@@ -2278,6 +2278,28 @@ void bond_3ad_update_ad_actor_settings(struct bonding *bond)spin_unlock_bh (&bond->mode_lock); } +/** +* bond_agg_timer_advance - advance agg_select_timer +* @bond: bonding structure +* +* Return true when agg_select_timer reaches 0. +*/ +static bool bond_agg_timer_advance (struct bonding *bond) +{ +int val, nval; + +while (1 ) { + val =atomic_read (&BOND_AD_INFO (bond).agg_select_timer); +if (!val) +return false; + nval = val -1 ; +if (atomic_cmpxchg (&BOND_AD_INFO (bond).agg_select_timer, + val, nval) == val) +break ; + } +return nval ==0 ; +} +/** * bond_3ad_state_machine_handler - handle state machines timeout * @work: work context to fetch bonding struct to work on from
@@ -2313,9 +2335,7 @@ void bond_3ad_state_machine_handler(struct work_struct *work)if (!bond_has_slaves (bond)) goto re_arm; -/* check if agg_select_timer timer after initialize is timed out */ -if (BOND_AD_INFO (bond).agg_select_timer && - !(--BOND_AD_INFO (bond).agg_select_timer)) { +if (bond_agg_timer_advance (bond)) { slave =bond_first_slave_rcu (bond); port = slave ? &(SLAVE_AD_INFO (slave)->port) :NULL ;
drivers/net/bonding/bond_main.c +2 -3
@@ -2377,10 +2377,9 @@ static int __bond_release_one(struct net_device *bond_dev,bond_select_active_slave (bond); } -if (!bond_has_slaves (bond)) { -bond_set_carrier (bond); +bond_set_carrier (bond); +if (!bond_has_slaves (bond))eth_hw_addr_random (bond_dev); - }unblock_netpoll_tx ();synchronize_rcu ();
drivers/net/dsa/Kconfig +1 -0
@@ -81,6 +81,7 @@ config NET_DSA_REALTEK_SMI config NET_DSA_SMSC_LAN9303 tristate + depends on VLAN_8021Q || VLAN_8021Q=n select NET_DSA_TAG_LAN9303 select REGMAP help
drivers/net/dsa/lan9303-core.c +10 -3
@@ -10,6 +10,7 @@#include <linux/mii.h> #include <linux/phy.h> #include <linux/if_bridge.h> +#include <linux/if_vlan.h> #include <linux/etherdevice.h> #include "lan9303.h"
@@ -1083,21 +1084,27 @@ static void lan9303_adjust_link(struct dsa_switch *ds, int port,static int lan9303_port_enable (struct dsa_switch *ds,int port,struct phy_device *phy) { +struct dsa_port *dp =dsa_to_port (ds, port);struct lan9303 *chip = ds->priv; -if (!dsa_is_user_port (ds, port)) +if (!dsa_port_is_user (dp))return 0 ; +vlan_vid_add (dp->cpu_dp->master,htons (ETH_P_8021Q ), port); +return lan9303_enable_processing_port (chip, port); }static void lan9303_port_disable (struct dsa_switch *ds,int port) { +struct dsa_port *dp =dsa_to_port (ds, port);struct lan9303 *chip = ds->priv; -if (!dsa_is_user_port (ds, port)) +if (!dsa_port_is_user (dp))return ; +vlan_vid_del (dp->cpu_dp->master,htons (ETH_P_8021Q ), port); +lan9303_disable_processing_port (chip, port);lan9303_phy_write (ds, chip->phy_addr_base + port,MII_BMCR ,BMCR_PDOWN ); }
@@ -1309,7 +1316,7 @@ static int lan9303_probe_reset_gpio(struct lan9303 *chip, struct device_node *np) { chip->reset_gpio =devm_gpiod_get_optional (chip->dev,"reset" , -GPIOD_OUT_LOW ); +GPIOD_OUT_HIGH );if (IS_ERR (chip->reset_gpio))return PTR_ERR (chip->reset_gpio);
drivers/net/dsa/lantiq_gswip.c +1 -1
@@ -2201,8 +2201,8 @@ static int gswip_remove(struct platform_device *pdev)if (priv->ds->slave_mii_bus) {mdiobus_unregister (priv->ds->slave_mii_bus); -mdiobus_free (priv->ds->slave_mii_bus);of_node_put (priv->ds->slave_mii_bus->dev.of_node); +mdiobus_free (priv->ds->slave_mii_bus); }for (i =0 ; i < priv->num_gphy_fw; i++)
drivers/net/dsa/mv88e6xxx/chip.c +7 -0
@@ -2291,6 +2291,13 @@ static int mv88e6xxx_port_vlan_del(struct dsa_switch *ds, int port,if (!mv88e6xxx_max_vid (chip))return -EOPNOTSUPP ; +/* The ATU removal procedure needs the FID to be mapped in the VTU, +* but FDB deletion runs concurrently with VLAN deletion. Flush the DSA +* switchdev workqueue to ensure that all FDB entries are deleted +* before we remove the VLAN. +*/ +dsa_flush_workqueue (); +mv88e6xxx_reg_lock (chip); err =mv88e6xxx_port_get_pvid (chip, port, &pvid);
drivers/net/ethernet/atheros/atl1c/atl1c_main.c +1 -1
@@ -900,7 +900,7 @@ static void atl1c_clean_tx_ring(struct atl1c_adapter *adapter,atl1c_clean_buffer (pdev, buffer_info); } -netdev_reset_queue (adapter->netdev); +netdev_tx_reset_queue (netdev_get_tx_queue (adapter->netdev, queue));/* Zero out Tx-buffers */ memset(tpd_ring->desc, 0, sizeof(struct atl1c_tpd_desc) *
drivers/net/ethernet/broadcom/bgmac-platform.c +16 -7
@@ -172,6 +172,7 @@ static int bgmac_probe(struct platform_device *pdev) {struct device_node *np = pdev->dev.of_node;struct bgmac *bgmac; +struct resource *regs;int ret; bgmac =bgmac_alloc (&pdev->dev);
@@ -208,15 +209,23 @@ static int bgmac_probe(struct platform_device *pdev)if (IS_ERR (bgmac->plat.base))return PTR_ERR (bgmac->plat.base); - bgmac->plat.idm_base =devm_platform_ioremap_resource_byname (pdev,"idm_base" ); -if (IS_ERR (bgmac->plat.idm_base)) -return PTR_ERR (bgmac->plat.idm_base); -else +/* The idm_base resource is optional for some platforms */ + regs =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"idm_base" ); +if (regs) { + bgmac->plat.idm_base =devm_ioremap_resource (&pdev->dev, regs); +if (IS_ERR (bgmac->plat.idm_base)) +return PTR_ERR (bgmac->plat.idm_base); bgmac->feature_flags &= ~BGMAC_FEAT_IDM_MASK ; + } - bgmac->plat.nicpm_base =devm_platform_ioremap_resource_byname (pdev,"nicpm_base" ); -if (IS_ERR (bgmac->plat.nicpm_base)) -return PTR_ERR (bgmac->plat.nicpm_base); +/* The nicpm_base resource is optional for some platforms */ + regs =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"nicpm_base" ); +if (regs) { + bgmac->plat.nicpm_base =devm_ioremap_resource (&pdev->dev, + regs); +if (IS_ERR (bgmac->plat.nicpm_base)) +return PTR_ERR (bgmac->plat.nicpm_base); + } bgmac->read = platform_bgmac_read; bgmac->write = platform_bgmac_write;
drivers/net/ethernet/cadence/macb_main.c +1 -1
@@ -4739,7 +4739,7 @@ static int macb_probe(struct platform_device *pdev)#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT if (GEM_BFEXT (DAW64 ,gem_readl (bp,DCFG6 ))) { -dma_set_mask (&pdev->dev,DMA_BIT_MASK (44 )); +dma_set_mask_and_coherent (&pdev->dev,DMA_BIT_MASK (44 )); bp->hw_dma_cap |=HW_DMA_CAP_64B ; }#endif
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +1 -1
@@ -4329,7 +4329,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) }INIT_WORK (&priv->tx_onestep_tstamp, dpaa2_eth_tx_onestep_tstamp); - +mutex_init (&priv->onestep_tstamp_lock);skb_queue_head_init (&priv->tx_skbs); priv->rx_copybreak =DPAA2_ETH_DEFAULT_COPYBREAK ;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c +3 -1
@@ -532,6 +532,7 @@ static int dpaa2_switch_flower_parse_mirror_key(struct flow_cls_offload *cls,struct flow_rule *rule =flow_cls_offload_flow_rule (cls);struct flow_dissector *dissector = rule->match.dissector;struct netlink_ext_ack *extack = cls->common.extack; +int ret = -EOPNOTSUPP ; if (dissector->used_keys & ~(BIT(FLOW_DISSECTOR_KEY_BASIC) |
@@ -561,9 +562,10 @@ static int dpaa2_switch_flower_parse_mirror_key(struct flow_cls_offload *cls, } *vlan = (u16 )match.key->vlan_id; + ret =0 ; } -return 0 ; +return ret; } static int
drivers/net/ethernet/intel/ice/ice_lib.c +6 -0
@@ -1521,6 +1521,12 @@ static void ice_vsi_set_rss_flow_fld(struct ice_vsi *vsi)if (status)dev_dbg (dev,"ice_add_rss_cfg failed for sctp6 flow, vsi = %d, error = %s\n" , vsi_num,ice_stat_str (status)); + + status =ice_add_rss_cfg (hw, vsi_handle,ICE_FLOW_HASH_ESP_SPI , +ICE_FLOW_SEG_HDR_ESP ); +if (status) +dev_dbg (dev,"ice_add_rss_cfg failed for esp/spi flow, vsi = %d, error = %d\n" , + vsi_num, status); }/**
drivers/net/ethernet/microchip/sparx5/sparx5_packet.c +1 -1
@@ -145,9 +145,9 @@ static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap)skb_put (skb, byte_cnt -ETH_FCS_LEN );eth_skb_pad (skb); skb->protocol =eth_type_trans (skb, netdev); -netif_rx (skb); netdev->stats.rx_bytes += skb->len; netdev->stats.rx_packets++; +netif_rx (skb); } static int sparx5_inject(struct sparx5 *sparx5,
drivers/net/ieee802154/at86rf230.c +11 -2
@@ -100,6 +100,7 @@ struct at86rf230_local {unsigned long cal_timeout;bool is_tx;bool is_tx_from_off; +bool was_tx;u8 tx_retry;struct sk_buff *tx_skb;struct at86rf230_state_change tx;
@@ -343,7 +344,11 @@ at86rf230_async_error_recover_complete(void *context)if (ctx->free)kfree (ctx); -ieee802154_wake_queue (lp->hw); +if (lp->was_tx) { + lp->was_tx =0 ; +dev_kfree_skb_any (lp->tx_skb); +ieee802154_wake_queue (lp->hw); + } } static void
@@ -352,7 +357,11 @@ at86rf230_async_error_recover(void *context)struct at86rf230_state_change *ctx = context;struct at86rf230_local *lp = ctx->lp; - lp->is_tx =0 ; +if (lp->is_tx) { + lp->was_tx =1 ; + lp->is_tx =0 ; + } +at86rf230_async_state_change (lp, ctx,STATE_RX_AACK_ON , at86rf230_async_error_recover_complete); }
drivers/net/ieee802154/ca8210.c +2 -2
@@ -2977,8 +2977,8 @@ static void ca8210_hw_setup(struct ieee802154_hw *ca8210_hw) ca8210_hw->phy->cca.opt =NL802154_CCA_OPT_ENERGY_CARRIER_AND ; ca8210_hw->phy->cca_ed_level =-9800 ; ca8210_hw->phy->symbol_duration =16 ; - ca8210_hw->phy->lifs_period =40 ; - ca8210_hw->phy->sifs_period =12 ; + ca8210_hw->phy->lifs_period =40 * ca8210_hw->phy->symbol_duration; + ca8210_hw->phy->sifs_period =12 * ca8210_hw->phy->symbol_duration; ca8210_hw->flags =IEEE802154_HW_AFILT | IEEE802154_HW_OMIT_CKSUM |
drivers/net/netdevsim/fib.c +2 -2
@@ -623,14 +623,14 @@ static int nsim_fib6_rt_append(struct nsim_fib_data *data,if (err) goto err_fib6_rt_nh_del; - fib6_event->rt_arr[i]->trap = true; +WRITE_ONCE (fib6_event->rt_arr[i]->trap, true); }return 0 ; err_fib6_rt_nh_del:for (i--; i >=0 ; i--) { - fib6_event->rt_arr[i]->trap = false; +WRITE_ONCE (fib6_event->rt_arr[i]->trap, false);nsim_fib6_rt_nh_del (fib6_rt, fib6_event->rt_arr[i]); }return err;
drivers/net/phy/mediatek-ge.c +0 -3
@@ -55,9 +55,6 @@ static int mt7530_phy_config_init(struct phy_device *phydev)static int mt7531_phy_config_init (struct phy_device *phydev) { -if (phydev->interface !=PHY_INTERFACE_MODE_INTERNAL ) -return -EINVAL ; -mtk_gephy_config_init (phydev);/* PHY link down power saving enable */
drivers/net/usb/qmi_wwan.c +2 -0
@@ -1395,6 +1395,8 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x413c, 0x81d7, 0)}, /* Dell Wireless 5821e */ {QMI_FIXED_INTF(0x413c, 0x81d7, 1)}, /* Dell Wireless 5821e preproduction config */ {QMI_FIXED_INTF(0x413c, 0x81e0, 0)}, /* Dell Wireless 5821e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e4, 0)}, /* Dell Wireless 5829e with eSIM support*/ + {QMI_FIXED_INTF(0x413c, 0x81e6, 0)}, /* Dell Wireless 5829e */ {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +4 -2
@@ -693,7 +693,7 @@ int brcmf_fw_get_firmwares(struct device *dev, struct brcmf_fw_request *req, {struct brcmf_fw_item *first = &req->items[0 ];struct brcmf_fw *fwctx; -char *alt_path; +char *alt_path =NULL ;int ret;brcmf_dbg (TRACE ,"enter: dev=%s\n" ,dev_name (dev));
@@ -712,7 +712,9 @@ int brcmf_fw_get_firmwares(struct device *dev, struct brcmf_fw_request *req, fwctx->done = fw_cb;/* First try alternative board-specific path if any */ - alt_path =brcm_alt_fw_path (first->path, fwctx->req->board_type); +if (fwctx->req->board_type) + alt_path =brcm_alt_fw_path (first->path, + fwctx->req->board_type);if (alt_path) { ret = request_firmware_nowait(THIS_MODULE, true, alt_path, fwctx->dev, GFP_KERNEL, fwctx,
drivers/net/wireless/intel/iwlwifi/fw/acpi.c +6 -5
@@ -1,7 +1,7 @@// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* * Copyright (C) 2017 Intel Deutschland GmbH -* Copyright (C) 2019-2021 Intel Corporation +* Copyright (C) 2019-2022 Intel Corporation */ #include <linux/uuid.h> #include "iwl-drv.h"
@@ -814,10 +814,11 @@ bool iwl_sar_geo_support(struct iwl_fw_runtime *fwrt)* only one using version 36, so skip this version entirely. */ return IWL_UCODE_SERIAL (fwrt->fw->ucode_ver) >=38 || -IWL_UCODE_SERIAL (fwrt->fw->ucode_ver) ==17 || - (IWL_UCODE_SERIAL (fwrt->fw->ucode_ver) ==29 && - ((fwrt->trans->hw_rev &CSR_HW_REV_TYPE_MSK ) == -CSR_HW_REV_TYPE_7265D )); + (IWL_UCODE_SERIAL (fwrt->fw->ucode_ver) ==17 && + fwrt->trans->hw_rev !=CSR_HW_REV_TYPE_3160 ) || + (IWL_UCODE_SERIAL (fwrt->fw->ucode_ver) ==29 && + ((fwrt->trans->hw_rev &CSR_HW_REV_TYPE_MSK ) == +CSR_HW_REV_TYPE_7265D )); }IWL_EXPORT_SYMBOL (iwl_sar_geo_support);
drivers/net/wireless/intel/iwlwifi/iwl-csr.h +2 -1
@@ -1,6 +1,6 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* -* Copyright (C) 2005-2014, 2018-2021 Intel Corporation +* Copyright (C) 2005-2014, 2018-2022 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2016 Intel Deutschland GmbH */
@@ -319,6 +319,7 @@ enum {#define CSR_HW_REV_TYPE_2x00 (0x0000100)#define CSR_HW_REV_TYPE_105 (0x0000110)#define CSR_HW_REV_TYPE_135 (0x0000120) +#define CSR_HW_REV_TYPE_3160 (0x0000164)#define CSR_HW_REV_TYPE_7265D (0x0000210)#define CSR_HW_REV_TYPE_NONE (0x00001F0)#define CSR_HW_REV_TYPE_QNJ (0x0000360)
drivers/net/wireless/intel/iwlwifi/iwl-drv.c +2 -0
@@ -1614,6 +1614,8 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context) out_unbind:complete (&drv->request_firmware_complete);device_release_driver (drv->trans->dev); +/* drv has just been freed by the release */ + failure = false; free:if (failure)iwl_dealloc_ucode (drv);
drivers/net/wireless/intel/iwlwifi/mvm/fw.c +1 -1
@@ -1572,7 +1572,7 @@ int iwl_mvm_up(struct iwl_mvm *mvm) ret =iwl_mvm_sar_init (mvm);if (ret ==0 ) ret =iwl_mvm_sar_geo_init (mvm); -else if (ret <0 ) +if (ret <0 ) goto error;iwl_mvm_tas_init (mvm);
drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +1 -2
@@ -408,8 +408,7 @@ int iwl_trans_pcie_gen2_start_fw(struct iwl_trans *trans,/* This may fail if AMT took ownership of the device */ if (iwl_pcie_prepare_card_hw (trans)) {IWL_WARN (trans,"Exit HW not ready\n" ); - ret = -EIO ; - goto out; +return -EIO ; }iwl_enable_rfkill_int (trans);
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +1 -2
@@ -1273,8 +1273,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,/* This may fail if AMT took ownership of the device */ if (iwl_pcie_prepare_card_hw (trans)) {IWL_WARN (trans,"Exit HW not ready\n" ); - ret = -EIO ; - goto out; +return -EIO ; }iwl_enable_rfkill_int (trans);
drivers/nvme/host/core.c +9 -2
@@ -131,7 +131,7 @@ static void nvme_set_queue_dying(struct nvme_ns *ns)if (test_and_set_bit (NVME_NS_DEAD , &ns->flags))return ; -blk_set_queue_dying (ns->queue); +blk_mark_disk_dead (ns->disk);blk_mq_unquiesce_queue (ns->queue);set_capacity_and_notify (ns->disk,0 );
@@ -4187,7 +4187,14 @@ static void nvme_async_event_work(struct work_struct *work) container_of(work, struct nvme_ctrl, async_event_work);nvme_aen_uevent (ctrl); - ctrl->ops->submit_async_event (ctrl); + +/* +* The transport drivers must guarantee AER submission here is safe by +* flushing ctrl async_event_work after changing the controller state +* from LIVE and before freeing the admin queue. +*/ +if (ctrl->state ==NVME_CTRL_LIVE ) + ctrl->ops->submit_async_event (ctrl); }static bool nvme_ctrl_pp_status (struct nvme_ctrl *ctrl)
drivers/nvme/host/multipath.c +1 -1
@@ -792,7 +792,7 @@ void nvme_mpath_remove_disk(struct nvme_ns_head *head) {if (!head->disk)return ; -blk_set_queue_dying (head->disk->queue); +blk_mark_disk_dead (head->disk);/* make sure all pending bios are cleaned up */ kblockd_schedule_work (&head->requeue_work);flush_work (&head->requeue_work);
drivers/nvme/host/rdma.c +1 -0
@@ -1192,6 +1192,7 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work) struct nvme_rdma_ctrl, err_work);nvme_stop_keep_alive (&ctrl->ctrl); +flush_work (&ctrl->ctrl.async_event_work);nvme_rdma_teardown_io_queues (ctrl, false);nvme_start_queues (&ctrl->ctrl);nvme_rdma_teardown_admin_queue (ctrl, false);
drivers/nvme/host/tcp.c +1 -0
@@ -2105,6 +2105,7 @@ static void nvme_tcp_error_recovery_work(struct work_struct *work)struct nvme_ctrl *ctrl = &tcp_ctrl->ctrl;nvme_stop_keep_alive (ctrl); +flush_work (&ctrl->async_event_work);nvme_tcp_teardown_io_queues (ctrl, false);/* unquiesce to fail fast pending requests */ nvme_start_queues (ctrl);
drivers/parisc/ccio-dma.c +2 -1
@@ -1003,7 +1003,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usg_calls++;#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {#ifdef CCIO_COLLECT_STATS ioc->usg_pages +=sg_dma_len (sglist) >>PAGE_SHIFT ;
@@ -1011,6 +1011,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,ccio_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 ); ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/parisc/sba_iommu.c +2 -1
@@ -1047,7 +1047,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,spin_unlock_irqrestore (&ioc->res_lock, flags);#endif -while (sg_dma_len (sglist) && nents--) { +while (nents &&sg_dma_len (sglist)) {sba_unmap_page (dev,sg_dma_address (sglist),sg_dma_len (sglist), direction,0 );
@@ -1056,6 +1056,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, ioc->usingle_calls--;/* kluge since call is unmap_sg() */ #endif ++sglist; + nents--; }DBG_RUN_SG ("%s() DONE (nents %d)\n" , __func__, nents);
drivers/pci/controller/pci-hyperv.c +11 -2
@@ -1899,8 +1899,17 @@ static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus)if (!hv_dev)continue ; -if (hv_dev->desc.flags &HV_PCI_DEVICE_FLAG_NUMA_AFFINITY ) -set_dev_node (&dev->dev, hv_dev->desc.virtual_numa_node); +if (hv_dev->desc.flags &HV_PCI_DEVICE_FLAG_NUMA_AFFINITY && + hv_dev->desc.virtual_numa_node <num_possible_nodes ()) +/* +* The kernel may boot with some NUMA nodes offline +* (e.g. in a KDUMP kernel) or with NUMA disabled via +* "numa=off". In those cases, adjust the host provided +* NUMA node to a valid NUMA node used by the kernel. +*/ +set_dev_node (&dev->dev, +numa_map_to_online_node ( + hv_dev->desc.virtual_numa_node));put_pcichild (hv_dev); }
drivers/phy/broadcom/phy-brcm-usb.c +38 -0
@@ -18,6 +18,7 @@#include <linux/soc/brcmstb/brcmstb.h> #include <dt-bindings/phy/phy.h> #include <linux/mfd/syscon.h> +#include <linux/suspend.h> #include "phy-brcm-usb-init.h"
@@ -70,12 +71,35 @@ struct brcm_usb_phy_data {int init_count;int wake_irq;struct brcm_usb_phy phys[BRCM_USB_PHY_ID_MAX ]; +struct notifier_block pm_notifier; +bool pm_active; };static s8 *node_reg_names[BRCM_REGS_MAX ] = {"crtl" ,"xhci_ec" ,"xhci_gbl" ,"usb_phy" ,"usb_mdio" ,"bdc_ec" }; +static int brcm_pm_notifier (struct notifier_block *notifier, +unsigned long pm_event, +void *unused) +{ +struct brcm_usb_phy_data *priv = + container_of(notifier, struct brcm_usb_phy_data, pm_notifier); + +switch (pm_event) { +case PM_HIBERNATION_PREPARE : +case PM_SUSPEND_PREPARE : + priv->pm_active = true; +break ; +case PM_POST_RESTORE : +case PM_POST_HIBERNATION : +case PM_POST_SUSPEND : + priv->pm_active = false; +break ; + } +return NOTIFY_DONE ; +} +static irqreturn_t brcm_usb_phy_wake_isr (int irq,void *dev_id) {struct phy *gphy = dev_id;
@@ -91,6 +115,9 @@ static int brcm_usb_phy_init(struct phy *gphy)struct brcm_usb_phy_data *priv = container_of(phy, struct brcm_usb_phy_data, phys[phy->id]); +if (priv->pm_active) +return 0 ; +/* * Use a lock to make sure a second caller waits until * the base phy is inited before using it.
@@ -120,6 +147,9 @@ static int brcm_usb_phy_exit(struct phy *gphy)struct brcm_usb_phy_data *priv = container_of(phy, struct brcm_usb_phy_data, phys[phy->id]); +if (priv->pm_active) +return 0 ; +dev_dbg (&gphy->dev,"EXIT\n" );if (phy->id ==BRCM_USB_PHY_2_0 )brcm_usb_uninit_eohci (&priv->ini);
@@ -488,6 +518,9 @@ static int brcm_usb_phy_probe(struct platform_device *pdev)if (err)return err; + priv->pm_notifier.notifier_call = brcm_pm_notifier; +register_pm_notifier (&priv->pm_notifier); +mutex_init (&priv->mutex);/* make sure invert settings are correct */
@@ -528,7 +561,10 @@ static int brcm_usb_phy_probe(struct platform_device *pdev)static int brcm_usb_phy_remove (struct platform_device *pdev) { +struct brcm_usb_phy_data *priv =dev_get_drvdata (&pdev->dev); +sysfs_remove_group (&pdev->dev.kobj, &brcm_usb_phy_group); +unregister_pm_notifier (&priv->pm_notifier);return 0 ; }
@@ -539,6 +575,7 @@ static int brcm_usb_phy_suspend(struct device *dev)struct brcm_usb_phy_data *priv =dev_get_drvdata (dev);if (priv->init_count) { +dev_dbg (dev,"SUSPEND\n" ); priv->ini.wake_enabled =device_may_wakeup (dev);if (priv->phys[BRCM_USB_PHY_3_0 ].inited)brcm_usb_uninit_xhci (&priv->ini);
@@ -578,6 +615,7 @@ static int brcm_usb_phy_resume(struct device *dev)* Uninitialize anything that wasn't previously initialized. */ if (priv->init_count) { +dev_dbg (dev,"RESUME\n" );if (priv->wake_irq >=0 )disable_irq_wake (priv->wake_irq);brcm_usb_init_common (&priv->ini);
drivers/phy/mediatek/phy-mtk-tphy.c +1 -1
@@ -1125,7 +1125,7 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc/* no efuse, ignore it */ if (!instance->efuse_intr && !instance->efuse_rx_imp && - !instance->efuse_rx_imp) { + !instance->efuse_tx_imp) {dev_warn (dev,"no u3 intr efuse, but dts enable it\n" ); instance->efuse_sw_en =0 ;break ;
drivers/pinctrl/bcm/Kconfig +1 -0
@@ -35,6 +35,7 @@ config PINCTRL_BCM63XX select PINCONF select GENERIC_PINCONF select GPIOLIB + select REGMAP select GPIO_REGMAP config PINCTRL_BCM6318
drivers/platform/x86/intel/speed_select_if/isst_if_common.c +63 -34
158 lines not on this page · raw message
drivers/platform/x86/touchscreen_dmi.c +24 -0
@@ -773,6 +773,21 @@ static const struct ts_dmi_data predia_basic_data = { .properties = predia_basic_props, }; +static const struct property_entry rwc_nanote_p8_props[] = { +PROPERTY_ENTRY_U32 ("touchscreen-min-y" ,46 ), +PROPERTY_ENTRY_U32 ("touchscreen-size-x" ,1728 ), +PROPERTY_ENTRY_U32 ("touchscreen-size-y" ,1140 ), +PROPERTY_ENTRY_BOOL ("touchscreen-inverted-y" ), +PROPERTY_ENTRY_STRING ("firmware-name" ,"gsl1680-rwc-nanote-p8.fw" ), +PROPERTY_ENTRY_U32 ("silead,max-fingers" ,10 ), + { } +}; + +static const struct ts_dmi_data rwc_nanote_p8_data = { + .acpi_name ="MSSL1680:00" , + .properties = rwc_nanote_p8_props, +}; +static const struct property_entry schneider_sct101ctm_props[] = {PROPERTY_ENTRY_U32 ("touchscreen-size-x" ,1715 ),PROPERTY_ENTRY_U32 ("touchscreen-size-y" ,1140 ),
@@ -1379,6 +1394,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"), }, }, + { +/* RWC NANOTE P8 */ + .driver_data = (void *)&rwc_nanote_p8_data, + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"Default string" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"AY07J" ), +DMI_MATCH (DMI_PRODUCT_SKU ,"0001" ) + }, + }, {/* Schneider SCT101CTM */ .driver_data = (void *)&schneider_sct101ctm_data,
drivers/scsi/lpfc/lpfc.h +1 -0
@@ -593,6 +593,7 @@ struct lpfc_vport {#define FC_VPORT_LOGO_RCVD 0x200/* LOGO received on vport */ #define FC_RSCN_DISCOVERY 0x400/* Auth all devices after RSCN */ #define FC_LOGO_RCVD_DID_CHNG 0x800/* FDISC on phys port detect DID chng*/ +#define FC_PT2PT_NO_NVME 0x1000/* Don't send NVME PRLI */ #define FC_SCSI_SCAN_TMO 0x4000/* scsi scan timer running */ #define FC_ABORT_DISCOVERY 0x8000/* we want to abort discovery */ #define FC_NDISC_ACTIVE 0x10000/* NPort discovery active */
drivers/scsi/lpfc/lpfc_attr.c +3 -0
@@ -1315,6 +1315,9 @@ lpfc_issue_lip(struct Scsi_Host *shost) pmboxq->u.mb.mbxCommand =MBX_DOWN_LINK ; pmboxq->u.mb.mbxOwner =OWN_HOST ; +if ((vport->fc_flag &FC_PT2PT ) && (vport->fc_flag &FC_PT2PT_NO_NVME )) + vport->fc_flag &= ~FC_PT2PT_NO_NVME ; + mbxstatus =lpfc_sli_issue_mbox_wait (phba, pmboxq,LPFC_MBOX_TMO *2 ); if ((mbxstatus == MBX_SUCCESS) &&
drivers/scsi/lpfc/lpfc_els.c +19 -1
@@ -1072,7 +1072,8 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,/* FLOGI failed, so there is no fabric */ spin_lock_irq (shost->host_lock); - vport->fc_flag &= ~(FC_FABRIC |FC_PUBLIC_LOOP ); + vport->fc_flag &= ~(FC_FABRIC |FC_PUBLIC_LOOP | +FC_PT2PT_NO_NVME );spin_unlock_irq (shost->host_lock);/* If private loop, then allow max outstanding els to be
@@ -4587,6 +4588,23 @@ lpfc_els_retry(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,/* Added for Vendor specifc support * Just keep retrying for these Rsn / Exp codes */ +if ((vport->fc_flag &FC_PT2PT ) && + cmd ==ELS_CMD_NVMEPRLI ) { +switch (stat.un.b.lsRjtRsnCode) { +case LSRJT_UNABLE_TPC : +case LSRJT_INVALID_CMD : +case LSRJT_LOGICAL_ERR : +case LSRJT_CMD_UNSUPPORTED : +lpfc_printf_vlog (vport,KERN_WARNING ,LOG_ELS , +"0168 NVME PRLI LS_RJT " +"reason %x port doesn't " +"support NVME, disabling NVME\n" , + stat.un.b.lsRjtRsnCode); + retry =0 ; + vport->fc_flag |=FC_PT2PT_NO_NVME ; + goto out_retry; + } + }switch (stat.un.b.lsRjtRsnCode) {case LSRJT_UNABLE_TPC :/* The driver has a VALID PLOGI but the rport has
drivers/scsi/lpfc/lpfc_nportdisc.c +3 -2
@@ -1961,8 +1961,9 @@ lpfc_cmpl_reglogin_reglogin_issue(struct lpfc_vport *vport,* is configured try it. */ ndlp->nlp_fc4_type |=NLP_FC4_FCP ; -if ((vport->cfg_enable_fc4_type ==LPFC_ENABLE_BOTH ) || - (vport->cfg_enable_fc4_type ==LPFC_ENABLE_NVME )) { +if ((!(vport->fc_flag &FC_PT2PT_NO_NVME )) && + (vport->cfg_enable_fc4_type ==LPFC_ENABLE_BOTH || + vport->cfg_enable_fc4_type ==LPFC_ENABLE_NVME )) { ndlp->nlp_fc4_type |=NLP_FC4_NVME ;/* We need to update the localport also */ lpfc_nvme_update_localport (vport);
drivers/scsi/lpfc/lpfc_sli.c +13 -2
@@ -8147,6 +8147,7 @@ lpfc_sli4_hba_setup(struct lpfc_hba *phba)struct lpfc_vport *vport = phba->pport;struct lpfc_dmabuf *mp;struct lpfc_rqb *rqbp; +u32 flg;/* Perform a PCI function reset to start from clean */ rc =lpfc_pci_function_reset (phba);
@@ -8160,7 +8161,17 @@ lpfc_sli4_hba_setup(struct lpfc_hba *phba)else {spin_lock_irq (&phba->hbalock); phba->sli.sli_flag |=LPFC_SLI_ACTIVE ; + flg = phba->sli.sli_flag;spin_unlock_irq (&phba->hbalock); +/* Allow a little time after setting SLI_ACTIVE for any polled +* MBX commands to complete via BSG. +*/ +for (i =0 ; i <50 && (flg &LPFC_SLI_MBOX_ACTIVE ); i++) { +msleep (20 ); +spin_lock_irq (&phba->hbalock); + flg = phba->sli.sli_flag; +spin_unlock_irq (&phba->hbalock); + } }lpfc_sli4_dip (phba);
@@ -9744,7 +9755,7 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,"(%d):2541 Mailbox command x%x " "(x%x/x%x) failure: " "mqe_sta: x%x mcqe_sta: x%x/x%x " -"Data: x%x x%x\n," , +"Data: x%x x%x\n" , mboxq->vport ? mboxq->vport->vpi :0 , mboxq->u.mb.mbxCommand, lpfc_sli_config_mbox_subsys_get(phba,
@@ -9778,7 +9789,7 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,"(%d):2597 Sync Mailbox command " "x%x (x%x/x%x) failure: " "mqe_sta: x%x mcqe_sta: x%x/x%x " -"Data: x%x x%x\n," , +"Data: x%x x%x\n" , mboxq->vport ? mboxq->vport->vpi :0 , mboxq->u.mb.mbxCommand, lpfc_sli_config_mbox_subsys_get(phba,
drivers/scsi/pm8001/pm8001_hwi.c +0 -18
@@ -2695,7 +2695,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, void *piomb)u32 tag =le32_to_cpu (psataPayload->tag);u32 port_id =le32_to_cpu (psataPayload->port_id);u32 dev_id =le32_to_cpu (psataPayload->device_id); -unsigned long flags; ccb = &pm8001_ha->ccb_info[tag];
@@ -2735,8 +2734,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, void *piomb) ts->resp =SAS_TASK_COMPLETE ; ts->stat =SAS_DATA_OVERRUN ; ts->residual =0 ; -if (pm8001_dev) -atomic_dec (&pm8001_dev->running_req);break ;case IO_XFER_ERROR_BREAK :pm8001_dbg (pm8001_ha,IO ,"IO_XFER_ERROR_BREAK\n" );
@@ -2778,7 +2775,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, void *piomb) IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS); ts->resp =SAS_TASK_COMPLETE ; ts->stat =SAS_QUEUE_FULL ; -pm8001_ccb_task_free_done (pm8001_ha, t, ccb, tag);return ; }break ;
@@ -2864,20 +2860,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, void *piomb) ts->stat =SAS_OPEN_TO ;break ; } -spin_lock_irqsave (&t->task_state_lock, flags); - t->task_state_flags &= ~SAS_TASK_STATE_PENDING ; - t->task_state_flags &= ~SAS_TASK_AT_INITIATOR ; - t->task_state_flags |=SAS_TASK_STATE_DONE ; -if (unlikely ((t->task_state_flags &SAS_TASK_STATE_ABORTED ))) { -spin_unlock_irqrestore (&t->task_state_lock, flags); -pm8001_dbg (pm8001_ha,FAIL , -"task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n" , - t, event, ts->resp, ts->stat); -pm8001_ccb_task_free (pm8001_ha, t, ccb, tag); - }else { -spin_unlock_irqrestore (&t->task_state_lock, flags); -pm8001_ccb_task_free_done (pm8001_ha, t, ccb, tag); - } }/*See the comments for mpi_ssp_completion */
drivers/scsi/pm8001/pm8001_sas.c +5 -0
@@ -753,8 +753,13 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev, res = -TMF_RESP_FUNC_FAILED ;/* Even TMF timed out, return direct. */ if (task->task_state_flags &SAS_TASK_STATE_ABORTED ) { +struct pm8001_ccb_info *ccb = task->lldd_task; +pm8001_dbg (pm8001_ha,FAIL ,"TMF task[%x]timeout.\n" , tmf->tmf); + +if (ccb) + ccb->task =NULL ; goto ex_err; }
drivers/scsi/pm8001/pm80xx_hwi.c +2 -28
@@ -2184,9 +2184,9 @@ mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb)pm8001_dbg (pm8001_ha,FAIL ,"task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n" , t, status, ts->resp, ts->stat); +pm8001_ccb_task_free (pm8001_ha, t, ccb, tag);if (t->slow_task)complete (&t->slow_task->completion); -pm8001_ccb_task_free (pm8001_ha, t, ccb, tag); }else {spin_unlock_irqrestore (&t->task_state_lock, flags);pm8001_ccb_task_free (pm8001_ha, t, ccb, tag);
@@ -2801,9 +2801,9 @@ mpi_sata_completion(struct pm8001_hba_info *pm8001_ha,pm8001_dbg (pm8001_ha,FAIL ,"task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n" , t, status, ts->resp, ts->stat); +pm8001_ccb_task_free (pm8001_ha, t, ccb, tag);if (t->slow_task)complete (&t->slow_task->completion); -pm8001_ccb_task_free (pm8001_ha, t, ccb, tag); }else {spin_unlock_irqrestore (&t->task_state_lock, flags); spin_unlock_irqrestore(&circularQ->oq_lock,
@@ -2828,7 +2828,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha,u32 tag =le32_to_cpu (psataPayload->tag);u32 port_id =le32_to_cpu (psataPayload->port_id);u32 dev_id =le32_to_cpu (psataPayload->device_id); -unsigned long flags; ccb = &pm8001_ha->ccb_info[tag];
@@ -2866,8 +2865,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, ts->resp =SAS_TASK_COMPLETE ; ts->stat =SAS_DATA_OVERRUN ; ts->residual =0 ; -if (pm8001_dev) -atomic_dec (&pm8001_dev->running_req);break ;case IO_XFER_ERROR_BREAK :pm8001_dbg (pm8001_ha,IO ,"IO_XFER_ERROR_BREAK\n" );
@@ -2916,11 +2913,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS); ts->resp =SAS_TASK_COMPLETE ; ts->stat =SAS_QUEUE_FULL ; -spin_unlock_irqrestore (&circularQ->oq_lock, - circularQ->lock_flags); -pm8001_ccb_task_free_done (pm8001_ha, t, ccb, tag); -spin_lock_irqsave (&circularQ->oq_lock, - circularQ->lock_flags);return ; }break ;
@@ -3020,24 +3012,6 @@ static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha, ts->stat =SAS_OPEN_TO ;break ; } -spin_lock_irqsave (&t->task_state_lock, flags); - t->task_state_flags &= ~SAS_TASK_STATE_PENDING ; - t->task_state_flags &= ~SAS_TASK_AT_INITIATOR ; - t->task_state_flags |=SAS_TASK_STATE_DONE ; -if (unlikely ((t->task_state_flags &SAS_TASK_STATE_ABORTED ))) { -spin_unlock_irqrestore (&t->task_state_lock, flags); -pm8001_dbg (pm8001_ha,FAIL , -"task 0x%p done with io_status 0x%x resp 0x%x stat 0x%x but aborted by upper layer!\n" , - t, event, ts->resp, ts->stat); -pm8001_ccb_task_free (pm8001_ha, t, ccb, tag); - }else { -spin_unlock_irqrestore (&t->task_state_lock, flags); -spin_unlock_irqrestore (&circularQ->oq_lock, - circularQ->lock_flags); -pm8001_ccb_task_free_done (pm8001_ha, t, ccb, tag); -spin_lock_irqsave (&circularQ->oq_lock, - circularQ->lock_flags); - } }/*See the comments for mpi_ssp_completion */
drivers/scsi/qedi/qedi_fw.c +2 -4
@@ -772,11 +772,10 @@ static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi, qedi_cmd->list_tmf_work =NULL ; } } +spin_unlock_bh (&qedi_conn->tmf_work_lock); -if (!found) { -spin_unlock_bh (&qedi_conn->tmf_work_lock); +if (!found) goto check_cleanup_reqs; - } QEDI_INFO(&qedi->dbg_ctx, QEDI_LOG_SCSI_TM, "TMF work, cqe->tid=0x%x, tmf flags=0x%x, cid=0x%x\n",
@@ -807,7 +806,6 @@ static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi, qedi_cmd->state =CLEANUP_RECV ; unlock:spin_unlock_bh (&conn->session->back_lock); -spin_unlock_bh (&qedi_conn->tmf_work_lock);wake_up_interruptible (&qedi_conn->wait_queue);return ;
drivers/scsi/scsi_scan.c +50 -5
21 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.c +14 -44
58 lines not on this page · raw message
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +18 -2
Lines of this file are not shown. View the raw message.
fs/btrfs/zoned.c +77 -8
85 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_sctp.c +9 -0
Lines of this file are not shown. View the raw message.
sound/soc/soc-ops.c +31 -10
41 lines not on this page · raw message
tools/testing/selftests/clone3/clone3.c +0 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kselftest_harness.h +3 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mincore/mincore_selftest.c +14 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mount_setattr/mount_setattr_test.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_concat_range.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_fib.sh +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/openat2/Makefile +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/openat2/helpers.h +7 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/openat2/openat2_test.c +11 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_fdinfo_test.c +18 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_test.c +3 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_wait.c +2 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vDSO/vdso_test_abi.c +62 -73
135 lines not on this page · raw message
tools/testing/selftests/zram/zram01.sh +9 -24
Lines of this file are not shown. View the raw message.
tools/testing/selftests/zram/zram_lib.sh +88 -46
134 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.