Linux 5.9.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.9.9 kernel.
All users of the 5.9 kernel series must upgrade.
The updated 5.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.9.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
------------
Documentation/networking/j1939.rst | 4 Makefile | 6 arch/arc/kernel/head.S | 17 arch/arc/plat-hsdk/platform.c | 17 arch/arm/include/asm/kprobes.h | 22 - arch/arm/probes/kprobes/opt-arm.c | 18 arch/arm/vdso/Makefile | 2 arch/arm64/kernel/kexec_image.c | 41 + arch/arm64/kernel/machine_kexec_file.c | 9 arch/arm64/kernel/vdso/Makefile | 2 arch/arm64/kernel/vdso32/Makefile | 2 arch/arm64/kvm/hypercalls.c | 2 arch/arm64/kvm/mmu.c | 1 arch/arm64/kvm/sys_regs.c | 18 arch/arm64/mm/mmu.c | 17 arch/mips/vdso/Makefile | 2 arch/powerpc/kernel/eeh_cache.c | 5 arch/powerpc/kernel/head_32.S | 12 arch/riscv/kernel/head.S | 5 arch/riscv/kernel/vdso/.gitignore | 1 arch/riscv/kernel/vdso/Makefile | 18 arch/riscv/kernel/vdso/so2s.sh | 6 arch/s390/kernel/smp.c | 3 arch/s390/kernel/vdso64/Makefile | 2 arch/sparc/vdso/Makefile | 2 arch/x86/boot/compressed/mem_encrypt.S | 16 arch/x86/entry/vdso/Makefile | 2 arch/x86/kernel/cpu/bugs.c | 51 +- block/genhd.c | 5 drivers/accessibility/speakup/main.c | 1 drivers/accessibility/speakup/selection.c | 11 drivers/accessibility/speakup/speakup.h | 1 drivers/accessibility/speakup/spk_ttyio.c | 10 drivers/accessibility/speakup/spk_types.h | 8 drivers/block/loop.c | 3 drivers/block/nbd.c | 10 drivers/block/null_blk.h | 1 drivers/block/null_blk_zoned.c | 31 + drivers/char/tpm/eventlog/efi.c | 5 drivers/char/tpm/tpm_tis.c | 29 + drivers/char/virtio_console.c | 8 drivers/cpufreq/cpufreq.c | 4 drivers/cpufreq/cpufreq_governor.h | 2 drivers/cpufreq/cpufreq_performance.c | 1 drivers/cpufreq/cpufreq_powersave.c | 1 drivers/cpufreq/intel_pstate.c | 16 drivers/crypto/chelsio/chcr_ktls.c | 27 - drivers/firmware/xilinx/zynqmp.c | 3 drivers/gpio/gpio-aspeed.c | 1 drivers/gpio/gpio-pcie-idio-24.c | 62 ++ drivers/gpio/gpio-sifive.c | 2 drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 27 - drivers/gpu/drm/amd/amdgpu/soc15.c | 3 drivers/gpu/drm/amd/display/dc/irq/dcn30/irq_service_dcn30.c | 4 drivers/gpu/drm/amd/powerplay/hwmgr/ci_baco.c | 7 drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 4 drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 1 drivers/gpu/drm/amd/powerplay/inc/smumgr.h | 2 drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c | 29 + drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c | 8 drivers/gpu/drm/gma500/psb_irq.c | 34 - drivers/gpu/drm/i915/gem/i915_gem_domain.c | 28 - drivers/gpu/drm/i915/gt/intel_engine_cs.c | 3 drivers/gpu/drm/i915/i915_vma.c | 6 drivers/gpu/drm/panfrost/panfrost_device.c | 40 + drivers/gpu/drm/panfrost/panfrost_drv.c | 20 drivers/gpu/drm/vc4/vc4_bo.c | 5 drivers/gpu/drm/vc4/vc4_drv.c | 1 drivers/gpu/drm/vc4/vc4_drv.h | 2 drivers/hv/hv_balloon.c | 2 drivers/hwmon/amd_energy.c | 2 drivers/hwmon/applesmc.c | 130 +++--- drivers/hwtracing/coresight/coresight-etm-perf.c | 4 drivers/i2c/busses/i2c-designware-slave.c | 52 -- drivers/i2c/busses/i2c-mt65xx.c | 8 drivers/i2c/busses/i2c-sh_mobile.c | 86 +++- drivers/infiniband/ulp/srpt/ib_srpt.c | 13 drivers/iommu/amd/amd_iommu_types.h | 6 drivers/iommu/intel/svm.c | 8 drivers/irqchip/irq-sifive-plic.c | 10 drivers/mfd/sprd-sc27xx-spi.c | 28 + drivers/misc/mei/client.h | 4 drivers/mmc/host/renesas_sdhi_core.c | 1 drivers/mmc/host/sdhci-of-esdhc.c | 2 drivers/mtd/spi-nor/core.c | 8 drivers/net/can/dev.c | 14 drivers/net/can/flexcan.c | 5 drivers/net/can/peak_canfd/peak_canfd.c | 11 drivers/net/can/rx-offload.c | 4 drivers/net/can/ti_hecc.c | 8 drivers/net/can/usb/peak_usb/pcan_usb_core.c | 51 ++ drivers/net/can/usb/peak_usb/pcan_usb_fd.c | 48 +- drivers/net/can/xilinx_can.c | 6 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 26 + drivers/net/ethernet/intel/igc/igc_main.c | 14 drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 72 ++- drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c | 14 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_rep.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 2 drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 2 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 7 drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c | 23 - drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h | 2 drivers/net/ethernet/microchip/lan743x_main.c | 24 - drivers/net/ethernet/microchip/lan743x_main.h | 3 drivers/net/ethernet/realtek/r8169_main.c | 18 drivers/net/phy/realtek.c | 2 drivers/net/vrf.c | 92 +++- drivers/net/wan/cosa.c | 1 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 2 drivers/nvme/host/core.c | 106 +++- drivers/nvme/host/nvme.h | 1 drivers/nvme/host/pci.c | 23 - drivers/nvme/host/rdma.c | 14 drivers/nvme/host/tcp.c | 16 drivers/of/address.c | 4 drivers/opp/core.c | 7 drivers/pci/controller/pci-mvebu.c | 23 - drivers/pci/pci.c | 9 drivers/pinctrl/aspeed/pinctrl-aspeed.c | 7 drivers/pinctrl/intel/pinctrl-intel.c | 40 + drivers/pinctrl/pinctrl-amd.c | 6 drivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 drivers/pinctrl/qcom/pinctrl-msm.c | 32 - drivers/pinctrl/qcom/pinctrl-sm8250.c | 18 drivers/scsi/device_handler/scsi_dh_alua.c | 9 drivers/scsi/hpsa.c | 4 drivers/scsi/mpt3sas/mpt3sas_base.c | 7 drivers/scsi/ufs/ufshcd-crypto.c | 4 drivers/spi/spi-bcm2835.c | 3 drivers/spi/spi-fsl-dspi.c | 10 drivers/spi/spi-imx.c | 23 - drivers/thunderbolt/nhi.c | 19 drivers/thunderbolt/xdomain.c | 1 drivers/uio/uio.c | 10 drivers/usb/class/cdc-acm.c | 9 drivers/usb/dwc3/dwc3-pci.c | 4 drivers/usb/gadget/legacy/raw_gadget.c | 5 drivers/usb/gadget/udc/fsl_udc_core.c | 2 drivers/usb/gadget/udc/goku_udc.c | 2 drivers/usb/host/xhci-histb.c | 2 drivers/usb/misc/apple-mfi-fastcharge.c | 4 drivers/usb/musb/musb_dsps.c | 4 drivers/usb/typec/ucsi/psy.c | 9 drivers/usb/typec/ucsi/ucsi.c | 7 drivers/usb/typec/ucsi/ucsi.h | 2 drivers/vfio/pci/vfio_pci.c | 2 drivers/vfio/pci/vfio_pci_rdwr.c | 43 +- drivers/vfio/platform/vfio_platform_common.c | 3 fs/afs/write.c | 5 fs/afs/xattr.c | 7 fs/afs/yfsclient.c | 1 fs/btrfs/dev-replace.c | 26 + fs/btrfs/ioctl.c | 10 fs/btrfs/ref-verify.c | 1 fs/btrfs/relocation.c | 4 fs/btrfs/volumes.c | 26 - fs/ceph/caps.c | 2 fs/ceph/mds_client.c | 50 +- fs/ceph/mds_client.h | 1 fs/ceph/quota.c | 2 fs/ceph/snap.c | 2 fs/cifs/cifs_unicode.c | 8 fs/erofs/inode.c | 21 fs/erofs/zdata.c | 7 fs/ext4/inline.c | 1 fs/ext4/super.c | 4 fs/gfs2/rgrp.c | 5 fs/gfs2/super.c | 1 fs/io_uring.c | 29 - fs/iomap/buffered-io.c | 15 fs/jbd2/checkpoint.c | 2 fs/jbd2/transaction.c | 4 fs/nfs/nfs42xattr.c | 2 fs/nfs/nfs42xdr.c | 4 fs/nfsd/nfs4proc.c | 3 fs/ocfs2/super.c | 1 fs/xfs/libxfs/xfs_alloc.c | 1 fs/xfs/libxfs/xfs_bmap.h | 2 fs/xfs/libxfs/xfs_rmap.c | 2 fs/xfs/libxfs/xfs_rmap_btree.c | 16 fs/xfs/scrub/bmap.c | 2 fs/xfs/scrub/inode.c | 3 fs/xfs/scrub/refcount.c | 8 fs/xfs/xfs_aops.c | 6 fs/xfs/xfs_iops.c | 10 fs/xfs/xfs_pnfs.c | 2 include/linux/arm-smccc.h | 2 include/linux/can/skb.h | 20 include/linux/compiler-gcc.h | 2 include/linux/compiler_types.h | 4 include/linux/cpufreq.h | 18 include/linux/genhd.h | 2 include/linux/memcontrol.h | 11 include/linux/netfilter/nfnetlink.h | 9 include/linux/netfilter_ipv4.h | 2 include/linux/netfilter_ipv6.h | 10 include/trace/events/sunrpc.h | 8 init/main.c | 14 kernel/bpf/Makefile | 6 kernel/bpf/core.c | 2 kernel/bpf/hashtab.c | 30 + kernel/dma/swiotlb.c | 6 kernel/events/core.c | 12 kernel/events/internal.h | 2 kernel/exit.c | 5 kernel/futex.c | 5 kernel/irq/Kconfig | 1 kernel/reboot.c | 28 - kernel/sched/cpufreq_schedutil.c | 2 kernel/trace/trace.c | 4 kernel/watchdog.c | 4 mm/compaction.c | 12 mm/gup.c | 14 mm/hugetlb.c | 90 ---- mm/memcontrol.c | 28 - mm/memory-failure.c | 36 - mm/migrate.c | 44 +- mm/rmap.c | 5 mm/slub.c | 2 mm/vmscan.c | 5 net/can/j1939/socket.c | 6 net/core/devlink.c | 8 net/ethtool/features.c | 2 net/ipv4/ip_tunnel_core.c | 4 net/ipv4/netfilter.c | 8 net/ipv4/netfilter/iptable_mangle.c | 2 net/ipv4/netfilter/nf_reject_ipv4.c | 2 net/ipv4/syncookies.c | 9 net/ipv4/udp_offload.c | 19 net/ipv4/xfrm4_tunnel.c | 4 net/ipv6/netfilter.c | 6 net/ipv6/netfilter/ip6table_mangle.c | 2 net/ipv6/sit.c | 2 net/ipv6/syncookies.c | 10 net/ipv6/udp_offload.c | 17 net/ipv6/xfrm6_tunnel.c | 4 net/iucv/af_iucv.c | 3 net/mac80211/mlme.c | 3 net/mac80211/tx.c | 37 + net/mptcp/protocol.c | 1 net/netfilter/ipset/ip_set_core.c | 3 net/netfilter/ipvs/ip_vs_core.c | 4 net/netfilter/nf_nat_proto.c | 4 net/netfilter/nf_synproxy_core.c | 2 net/netfilter/nf_tables_api.c | 19 net/netfilter/nfnetlink.c | 22 - net/netfilter/nft_chain_route.c | 4 net/netfilter/utils.c | 4 net/tipc/topsrv.c | 10 net/wireless/core.c | 57 +- net/wireless/core.h | 5 net/wireless/nl80211.c | 3 net/wireless/reg.c | 2 net/x25/af_x25.c | 2 net/xfrm/xfrm_interface.c | 8 net/xfrm/xfrm_state.c | 8 security/selinux/ibpkey.c | 4 sound/hda/ext/hdac_ext_controller.c | 2 sound/pci/hda/hda_controller.h | 3 sound/pci/hda/hda_intel.c | 63 +- sound/soc/codecs/cs42l51.c | 22 - sound/soc/codecs/wcd9335.c | 2 sound/soc/codecs/wcd934x.c | 2 sound/soc/codecs/wsa881x.c | 2 sound/soc/intel/boards/kbl_rt5663_max98927.c | 39 + sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c | 31 + sound/soc/qcom/sdm845.c | 2 sound/soc/sof/loader.c | 5 tools/bpf/bpftool/prog.c | 2 tools/lib/bpf/hashmap.h | 15 tools/perf/builtin-trace.c | 15 tools/perf/util/scripting-engines/trace-event-python.c | 7 tools/perf/util/session.c | 14 tools/testing/kunit/kunit_parser.py | 3 tools/testing/selftests/bpf/Makefile | 2 tools/testing/selftests/bpf/prog_tests/map_init.c | 214 ++++++++++ tools/testing/selftests/bpf/progs/test_map_init.c | 33 + tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c | 2 tools/testing/selftests/core/close_range_test.c | 8 tools/testing/selftests/filesystems/binderfs/binderfs_test.c | 8 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_user.tc | 4 tools/testing/selftests/lib.mk | 2 tools/testing/selftests/pidfd/pidfd_open_test.c | 1 tools/testing/selftests/pidfd/pidfd_poll_test.c | 1 tools/testing/selftests/proc/proc-loadavg-001.c | 1 tools/testing/selftests/proc/proc-self-syscall.c | 1 tools/testing/selftests/proc/proc-uptime-002.c | 1 tools/testing/selftests/tc-testing/tc-tests/filters/tests.json | 4 tools/testing/selftests/wireguard/netns.sh | 8 tools/testing/selftests/wireguard/qemu/kernel.config | 2 296 files changed, 2431 insertions(+), 1240 deletions(-)
Al Viro (1):
don't dump the threads that had been already exiting when zapped.
Alex Williamson (1):
vfio/pci: Implement ioeventfd thread handler for contended memory lock
Alexander Lobakin (4):
virtio: virtio_console: fix DMA memory allocation for rproc serial
ethtool: netlink: add missing netdev_features_change() call
net: udp: fix IP header access and skb lookup on Fast/frag0 UDP GRO
net: udp: fix UDP header access on Fast/frag0 UDP GRO
Alexander Usyskin (1):
mei: protect mei_cl_mtu from null dereference
Anand Jain (1):
btrfs: dev-replace: fail mount if we don't have replace item with target device
Anand K Mistry (1):
x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always-on STIBP
Andrew Jeffery (1):
ARM: 9019/1: kprobes: Avoid fortify_panic() when copying optprobe template
Andrew Jones (1):
KVM: arm64: Don't hide ID registers from userspace
Andy Shevchenko (4):
kunit: Don't fail test suites if one of them is empty
pinctrl: intel: Fix 2 kOhm bias which is 833 Ohm
pinctrl: intel: Set default bias in case no particular value given
pinctrl: mcp23s08: Use full chunk of memory for regmap configuration
Anshuman Khandual (1):
arm64/mm: Validate hotplug range before creating linear mapping
Ard Biesheuvel (1):
bpf: Don't rely on GCC __attribute__((optimize)) to disable GCSE
Arnaldo Carvalho de Melo (1):
perf scripting python: Avoid declaring function pointers with a visibility attribute
Arnaud de Turckheim (3):
gpio: pcie-idio-24: Fix irq mask when masking
gpio: pcie-idio-24: Fix IRQ Enable Register value
gpio: pcie-idio-24: Enable PEX8311 interrupts
Arnd Bergmann (1):
firmware: xilinx: fix out-of-bounds access
Aya Levin (1):
net/mlx5e: Fix VXLAN synchronization after function reload
Baolin Wang (1):
mfd: sprd: Add wakeup capability for PMIC IRQ
Bard Liao (1):
ASoC: SOF: loader: handle all SOF_IPC_EXT types
Benjamin Gwin (1):
arm64: kexec_file: try more regions if loading segments fails
Bert Vermeulen (1):
mtd: spi-nor: Fix address width on flash chips > 16MB
Bhawanpreet Lakha (1):
drm/amd/display: Add missing pflip irq
Bill Wendling (1):
kbuild: explicitly specify the build id style
Billy Tsai (2):
gpio: aspeed: fix ast2600 bank properties
pinctrl: aspeed: Fix GPI only function problem.
Bjorn Andersson (1):
pinctrl: qcom: sm8250: Specify PDC map
Bob Peterson (3):
gfs2: Free rd_bits later in gfs2_clear_rgrpd to fix use-after-free
gfs2: Add missing truncate_inode_pages_final for sd_aspace
gfs2: check for live vs. read-only file system in gfs2_fitrim
Boris Protopopov (1):
Convert trailing spaces and periods in path components
Brad Campbell (1):
hwmon: (applesmc) Re-work SMC comms
Brian Foster (2):
xfs: flush new eof page on truncate to avoid post-eof corruption
iomap: clean up writeback state logic on writepage error
Chao Leng (3):
nvme: introduce nvme_sync_io_queues
nvme-rdma: avoid race between time out and tear down
nvme-tcp: avoid race between time out and tear down
Chen Zhou (1):
selinux: Fix error return code in sel_ib_pkey_sid_slow()
Chris Brandt (1):
usb: cdc-acm: Add DISABLE_ECHO for Renesas USB Download mode
Chris Wilson (2):
drm/i915: Hold onto an explicit ref to i915_vma_work.pinned drm/i915/gem: Flush coherency domains on first set-domain-ioctl
Christoph Hellwig (4):
nbd: fix a block_device refcount leak in nbd_release
xfs: fix a missing unlock on error in xfs_fs_map_blocks
nvme: factor out a nvme_configure_metadata helper
block: add a return value to set_capacity_revalidate_and_notify
Christophe Leroy (1):
powerpc/603: Always fault when _PAGE_ACCESSED is not set
Chuck Lever (2):
SUNRPC: Fix general protection fault in trace_rpc_xdr_overflow()
NFS: Fix listxattr receive buffer size
Clément Péron (2):
drm/panfrost: rename error labels in device_init drm/panfrost: move devfreq_init()/fini() in device
Coiby Xu (2):
pinctrl: amd: use higher precision for 512 RtcClk
pinctrl: amd: fix incorrect way to disable debounce filter
Colin Ian King (1):
selftests/ftrace: check for do_sys_openat2 in user-memory test
Dai Ngo (2):
NFSD: Fix use-after-free warning when doing inter-server copy
NFSD: fix missing refcount in nfsd4_copy by nfsd4_do_async_copy
Damien Le Moal (2):
gpio: sifive: Fix SiFive gpio probe
null_blk: Fix scheduling in atomic with zoned mode
Dan Carpenter (3):
ALSA: hda: prevent undefined shift in snd_hdac_ext_bus_get_link()
can: peak_usb: add range checking in decode operations
futex: Don't enable IRQs unconditionally in put_pi_state()
Darrick J. Wong (7):
xfs: set xefi_discard when creating a deferred agfl free log intent item
xfs: fix missing CoW blocks writeback conversion retry
xfs: fix scrub flagging rtinherit even if there is no rt device
xfs: fix flags argument to rmap lookup when converting shared file rmaps
xfs: set the unwritten bit in rmap lookup flags in xchk_bmap_get_rmapextents
xfs: fix rmap key and record comparison functions
xfs: fix brainos in the refcount scrubber's rmap fragment processor
David Gow (1):
kunit: Fix kunit.py --raw_output option
David Howells (3):
afs: Fix warning due to unadvanced marshalling pointer
afs: Fix incorrect freeing of the ACL passed to the YFS ACL store op
afs: Fix afs_write_end() when called with copied == 0 [ver #3]
David Verbeiren (1):
bpf: Zero-fill re-used per-cpu map element
Dinghao Liu (1):
btrfs: ref-verify: fix memory leak in btrfs_ref_tree_mod
Evan Nimmo (1):
of/address: Fix of_node memory leak in of_dma_is_coherent
Evan Quan (4):
drm/amdgpu: perform srbm soft reset always on SDMA resume drm/amd/pm: correct the baco reset sequence for CI ASICs drm/amd/pm: perform SMC reset on suspend/hibernation drm/amd/pm: do not use ixFEATURE_STATUS for checking smc running
Evgeny Novikov (1):
usb: gadget: goku_udc: fix potential crashes in probe
Fred Gao (1):
vfio/pci: Bypass IGD init in case of -ENODEV
Gao Xiang (2):
erofs: fix setting up pcluster for temporary pages
erofs: derive atime instead of leaving it empty
Geert Uytterhoeven (1):
Revert "usb: musb: convert to devm_platform_ioremap_resource_byname"
Greentime Hu (2):
irqchip/sifive-plic: Fix broken irq_set_affinity() callback irqchip/sifive-plic: Fix chip_data access within a hierarchy
Greg Kroah-Hartman (1):
Linux 5.9.9
Hannes Reinecke (1):
scsi: scsi_dh_alua: Avoid crash during alua_bus_detach()
Heikki Krogerus (2):
usb: dwc3: pci: add support for the Intel Alder Lake-S
usb: typec: ucsi: Report power supply changes
Heiner Kallweit (3):
r8169: fix potential skb double free in an error path
r8169: disable hw csum for short packets on all chip versions
net: phy: realtek: support paged operations on RTL8201CP
Ian Rogers (1):
libbpf, hashmap: Fix undefined behavior in hash_bits
J. Bruce Fields (1):
NFSv4.2: fix failure to unregister shrinker
Jason A. Donenfeld (2):
netfilter: use actual socket sk rather than skb sk when routing harder
wireguard: selftests: check that route_me_harder packets use the right sk
Jason Gunthorpe (1):
mm/gup: use unpin_user_pages() in __gup_longterm_locked()
Jeff Layton (1):
ceph: check session state after bumping session->s_seq
Jens Axboe (2):
io_uring: ensure consistent view of original task ->mm from SQPOLL
io_uring: round-up cq size before comparing with rounded sq size
Jerry Snitselaar (1):
tpm_tis: Disable interrupts on ThinkPad T490s
Jing Xiangfeng (1):
thunderbolt: Add the missed ida_simple_remove() in ring_request_msix()
Jiri Olsa (1):
perf tools: Add missing swap for ino_generation
Joakim Zhang (2):
can: flexcan: remove FLEXCAN_QUIRK_DISABLE_MECR quirk for LS1021A
can: flexcan: flexcan_remove(): disable wakeup completely
Joerg Roedel (1):
x86/boot/compressed/64: Introduce sev_status
Johannes Berg (3):
mac80211: don't require VHT elements for HE on 2.4 GHz
mac80211: fix use of skb payload instead of header
cfg80211: initialize wdev data earlier
Josef Bacik (1):
btrfs: fix min reserved size calculation in merge_reloc_root
Joseph Qi (1):
ext4: unlock xattr_sem properly in ext4_inline_data_truncate()
Kai-Heng Feng (2):
ALSA: hda: Separate runtime and system suspend
ALSA: hda: Reinstate runtime_allow() for all hda controllers
Kaixu Xia (1):
ext4: correctly report "not supported" for {usr,grp}jquota when !CONFIG_QUOTA
Keita Suzuki (1):
scsi: hpsa: Fix memory leak in hpsa_init_one()
Keith Busch (1):
Revert "nvme-pci: remove last_sq_tail"
Laurent Dufour (1):
mm/slub: fix panic in slab_alloc_node()
Linu Cherian (1):
coresight: etm: perf: Sink selection using sysfs is deprecated
Liu Yi L (1):
iommu/vt-d: Fix sid not set issue in intel_svm_bind_gpasid()
Liu, Yi L (1):
iommu/vt-d: Fix a bug for PDP check in prq_event_thread
Lorenz Bauer (1):
tools/bpftool: Fix attaching flow dissector
Mao Wenan (1):
net: Update window_clamp if SOCK_RCVBUF is set
Maor Dickman (1):
net/mlx5e: Fix modify header actions memory leak
Maor Gottlieb (2):
IB/srpt: Fix memory leak in srpt_add_one
net/mlx5: Fix deletion of duplicate rules
Marc Kleine-Budde (1):
can: rx-offload: don't call kfree_skb() from IRQ context
Marc Zyngier (1):
genirq: Let GENERIC_IRQ_IPI select IRQ_DOMAIN_HIERARCHY
Martin Hundebøll (1):
spi: bcm2835: remove use of uninitialized gpio flags variable
Martin Schiller (1):
net/x25: Fix null-ptr-deref in x25_connect
Martin Willi (1):
vrf: Fix fast path output packet handling with async Netfilter rules
Masami Hiramatsu (1):
bootconfig: Extend the magic check range to the preceding 3 bytes
Masashi Honma (1):
ath9k_htc: Use appropriate rs_datalen type
Matteo Croce (2):
Revert "kernel/reboot.c: convert simple_strtoul to kstrtoint"
reboot: fix overflow parsing reboot cpu number
Matthew Wilcox (Oracle) (1):
btrfs: fix potential overflow in cluster_pages_for_defrag on 32bit arch
Maulik Shah (1):
pinctrl: qcom: Move clearing pending IRQ to .irq_request_resources callback
Maxim Mikityanskiy (2):
net/mlx5e: Use spin_lock_bh for async_icosq_lock net/mlx5e: Fix incorrect access of RCU-protected xdp_prog
Maxime Ripard (1):
drm/vc4: bo: Add a managed action to cleanup the cache
Michael Wu (2):
i2c: designware: call i2c_dw_read_clear_intrbits_slave() once
i2c: designware: slave should do WRITE_REQUESTED before WRITE_RECEIVED
Mika Westerberg (1):
thunderbolt: Fix memory leak if ida_simple_get() fails in enumerate_services()
Mike Kravetz (1):
hugetlbfs: fix anon huge page migration race
Mike Leach (1):
coresight: Fix uninitialised pointer bug in etm_setup_aux()
Ming Lei (1):
nbd: don't update block size after device is started
Muchun Song (1):
mm: memcontrol: fix missing wakeup polling thread
Namhyung Kim (1):
perf tools: Add missing swap for cgroup events
Naveen Krishna Chatradhi (1):
hwmon: (amd_energy) modify the visibility of the counters
Navid Emamdoost (1):
can: xilinx_can: handle failure cases of pm_runtime_get_sync
Nicholas Piggin (1):
mm/vmscan: fix NR_ISOLATED_FILE corruption on 64-bit
Olaf Hering (1):
hv_balloon: disable warning when floor reached
Oleksij Rempel (1):
can: can_create_echo_skb(): fix echo skb generation: always use skb_clone()
Oliver Hartkopp (1):
can: dev: __can_get_echo_skb(): fix real payload length return value for RTR frames
Oliver Herms (1):
IPv6: Set SIT tunnel hard_header_len to zero
Olivier Moysan (1):
ASoC: cs42l51: manage mclk shutdown delay
Pablo Neira Ayuso (2):
netfilter: nftables: fix netlink report logic in flowtable and genid
netfilter: nf_tables: missing validation from the abort path
Palmer Dabbelt (1):
RISC-V: Fix the VDSO symbol generaton for binutils-2.35+
Paolo Abeni (1):
mptcp: provide rmem[0] limit
Parav Pandit (2):
net/mlx5: E-switch, Avoid extack error log for disabled vport
devlink: Avoid overwriting port attributes of registered port
Peter Zijlstra (3):
perf: Fix get_recursion_context()
perf: Simplify group_sched_in()
perf: Fix event multiplexing for exclusive groups
Petr Vorel (1):
loop: Fix occasional uevent drop
Pujin Shi (1):
scsi: ufs: Fix missing brace warning for old compilers
Qian Cai (2):
powerpc/eeh_cache: Fix a possible debugfs deadlock s390/smp: move rcu_cpu_starting() earlier
Qii Wang (1):
i2c: mediatek: move dma reset before i2c reset
Qiujun Huang (1):
tracing: Fix the checking of stackidx in __ftrace_trace_stack
Rafael J. Wysocki (4):
cpufreq: Introduce governor flags
cpufreq: Introduce CPUFREQ_GOV_STRICT_TARGET
cpufreq: Add strict_target to struct cpufreq_policy
cpufreq: intel_pstate: Take CPUFREQ_GOV_STRICT_TARGET into account
Rajat Jain (1):
PCI: Always enable ACS even if no ACS Capability
Ran Wang (1):
usb: gadget: fsl: fix null pointer checking
Rob Herring (1):
PCI: mvebu: Fix duplicate resource requests
Rohit Maheshwari (2):
ch_ktls: Update cheksum information
ch_ktls: tcb update fails sometimes
Roman Gushchin (1):
mm: memcg: link page counters to root if use_hierarchy is false
Sagi Grimberg (3):
nvme-rdma: avoid repeated request completion
nvme-tcp: avoid repeated request completion
nvme: fix incorrect behavior when BLKROSET is called by the user
Samuel Thibault (3):
speakup: Fix var_id_t values and thus keymap speakup ttyio: Do not schedule() in ttyio_in_nowait
speakup: Fix clearing selection in safe context
Santosh Shukla (1):
KVM: arm64: Force PTE mapping on fault resulting in a device mapping
Santosh Sivaraj (1):
kernel/watchdog: fix watchdog_allowed_mask not used warning
Sascha Hauer (1):
spi: imx: fix runtime pm support for !CONFIG_PM
Sasha Levin (1):
nvme: freeze the queue over ->lba_shift updates
Sean Anderson (1):
riscv: Set text_offset correctly for M-Mode
Shin'ichiro Kawasaki (1):
uio: Fix use-after-free in uio_unregister_device()
Slawomir Laba (1):
i40e: Fix MAC address setting for a VF via Host/VM
Sreekanth Reddy (1):
scsi: mpt3sas: Fix timeouts observed while reenabling IRQ
Srinivas Kandagatla (4):
ASoC: codecs: wsa881x: add missing stream rates and format
ASoC: codecs: wcd934x: Set digital gain range correctly
ASoC: codecs: wcd9335: Set digital gain range correctly
ASoC: qcom: sdm845: set driver name correctly
Stanislav Ivanichkin (1):
perf trace: Fix segfault when trying to trace events by cgroup
Stefano Brivio (2):
netfilter: ipset: Update byte and packet counters regardless of whether they match
tunnels: Fix off-by-one in lower MTU bounds for ICMP/ICMPv6 replies
Stefano Stabellini (1):
swiotlb: fix "x86: Don't panic if can not alloc buffer for swiotlb"
Stephane Grosjean (2):
can: peak_usb: peak_usb_get_ts_time(): fix timestamp wrapping
can: peak_canfd: pucan_handle_can_rx(): fix echo management when loopback is on
Stephen Boyd (1):
KVM: arm64: ARM_SMCCC_ARCH_WORKAROUND_1 doesn't return SMCCC_RET_NOT_REQUIRED
Steven Price (1):
drm/panfrost: Fix module unload
Suravee Suthikulpanit (1):
iommu/amd: Increase interrupt remapping table limit to 512 entries
Sven Van Asbroeck (3):
lan743x: correctly handle chips with internal PHY
lan743x: fix "BUG: invalid wait context" when setting rx mode
lan743x: fix use of uninitialized variable
Theodore Ts'o (1):
jbd2: fix up sparse warnings in checkpoint code
Thomas Zimmermann (1):
drm/gma500: Fix out-of-bounds access to struct drm_device.vblank[]
Tomasz Figa (1):
ASoC: Intel: kbl_rt5663_max98927: Fix kabylake_ssp_fixup function
Tommi Rantala (6):
selftests: filter kselftest headers from command in lib.mk
selftests: core: use SKIP instead of XFAIL in close_range_test.c
selftests: clone3: use SKIP instead of XFAIL
selftests: binderfs: use SKIP instead of XFAIL
selftests: pidfd: fix compilation errors due to wait.h
selftests: proc: fix warning: _GNU_SOURCE redefined
Tyler Hicks (1):
tpm: efi: Don't create binary_bios_measurements file for an empty log
Tzung-Bi Shih (1):
ASoC: mediatek: mt8183-da7219: fix DAPM paths for rt1015
Ulrich Hecht (1):
i2c: sh_mobile: implement atomic transfers
Ursula Braun (1):
net/af_iucv: fix null pointer dereference on shutdown
Veerabadhran Gopalakrishnan (1):
amd/amdgpu: Disable VCN DPG mode for Picasso
Venkata Sandeep Dhanalakota (1):
drm/i915: Correctly set SFC capability for video engines
Vincent Mailhol (1):
can: dev: can_get_echo_skb(): prevent call to kfree_skb() in hard IRQ context
Vineet Gupta (1):
ARC: [plat-hsdk] Remap CCMs super early in asm boot trampoline
Vinicius Costa Gomes (1):
igc: Fix returning wrong statistics
Viresh Kumar (1):
opp: Reduce the size of critical section in _opp_table_kref_release()
Vlad Buslov (2):
net/mlx5e: Protect encap route dev from concurrent release
selftest: fix flower terse dump tests
Wang Hai (2):
cosa: Add missing kfree in error path of cosa_write
tipc: fix memory leak in tipc_topsrv_start()
Wengang Wang (1):
ocfs2: initialize ip_next_orphan
Xin Long (1):
xfrm: interface: fix the priorities for ipip and ipv6 tunnels
Yangbo Lu (1):
mmc: sdhci-of-esdhc: Handle pulse width detection erratum for more SoCs
Ye Bin (1):
cfg80211: regulatory: Fix inconsistent format argument
Yegor Yefremov (1):
can: j1939: swap addr and pgn in the send example
Yoshihiro Shimoda (1):
mmc: renesas_sdhi_core: Add missing tmio_mmc_host_free() at remove
Zhang Changzhong (2):
can: j1939: j1939_sk_bind(): return failure if netdev is down
can: ti_hecc: ti_hecc_probe(): add missed clk_disable_unprepare() in error path
Zhang Qilong (3):
USB: apple-mfi-fastcharge: fix reference leak in apple_mfi_fc_set_property
vfio: platform: fix reference leak in vfio_platform_open
xhci: hisilicon: fix refercence leak in xhci_histb_probe
Zhao Qiang (1):
spi: fsl-dspi: fix wrong pointer in suspend/resume
Zi Yan (2):
mm/compaction: count pages and stop correctly during page isolation mm/compaction: stop isolation if too many pages are isolated and we have pages to migrate
Zqiang (1):
usb: raw-gadget: fix memory leak in gadget_setup
zhongjiang-ali (1):
mm: memcontrol: correct the NR_ANON_THPS counter of hierarchical memcg
zhuoliang zhang (1):
net: xfrm: fix a race condition during allocing spi
Greg Kroah-Hartman
maintainerDocumentation/networking/j1939.rst +2 -2
@@ -414,8 +414,8 @@ Send: .can_family = AF_CAN, .can_addr.j1939 = { .name = J1939_NO_NAME; - .pgn = 0x30, - .addr = 0x12300, + .addr = 0x30, + .pgn = 0x12300, }, };
Makefile +3 -3
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 9 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Kleptomaniac Octopus
@@ -973,8 +973,8 @@ KBUILD_CPPFLAGS += $(KCPPFLAGS) KBUILD_AFLAGS += $(KAFLAGS) KBUILD_CFLAGS += $(KCFLAGS) -KBUILD_LDFLAGS_MODULE += --build-id -LDFLAGS_vmlinux += --build-id +KBUILD_LDFLAGS_MODULE += --build-id=sha1 +LDFLAGS_vmlinux += --build-id=sha1 ifeq ($(CONFIG_STRIP_ASM_SYMS),y) LDFLAGS_vmlinux += $(call ld-option, -X,)
arch/arc/kernel/head.S +16 -1
@@ -67,7 +67,22 @@ sr r5, [ARC_REG_LPB_CTRL] 1: #endif /* CONFIG_ARC_LPB_DISABLE */ -#endif + + /* On HSDK, CCMs need to remapped super early */ +#ifdef CONFIG_ARC_SOC_HSDK + mov r6, 0x60000000 + lr r5, [ARC_REG_ICCM_BUILD] + breq r5, 0, 1f + sr r6, [ARC_REG_AUX_ICCM] +1: + lr r5, [ARC_REG_DCCM_BUILD] + breq r5, 0, 2f + sr r6, [ARC_REG_AUX_DCCM] +2: +#endif /* CONFIG_ARC_SOC_HSDK */ + +#endif /* CONFIG_ISA_ARCV2 */ + ; Config DSP_CTRL properly, so kernel may use integer multiply, ; multiply-accumulate, and divide operations DSP_EARLY_INIT
arch/arc/plat-hsdk/platform.c +0 -17
@@ -17,22 +17,6 @@ int arc_hsdk_axi_dmac_coherent __section(.data) = 0;#define ARC_CCM_UNUSED_ADDR 0x60000000 -static void __init hsdk_init_per_cpu (unsigned int cpu) -{ -/* -* By default ICCM is mapped to 0x7z while this area is used for -* kernel virtual mappings, so move it to currently unused area. -*/ -if (cpuinfo_arc700[cpu].iccm.sz) -write_aux_reg (ARC_REG_AUX_ICCM ,ARC_CCM_UNUSED_ADDR ); - -/* -* By default DCCM is mapped to 0x8z while this area is used by kernel, -* so move it to currently unused area. -*/ -if (cpuinfo_arc700[cpu].dccm.sz) -write_aux_reg (ARC_REG_AUX_DCCM ,ARC_CCM_UNUSED_ADDR ); -}#define ARC_PERIPHERAL_BASE 0xf0000000#define CREG_BASE (ARC_PERIPHERAL_BASE + 0x1000)
@@ -339,5 +323,4 @@ static const char *hsdk_compat[] __initconst = {MACHINE_START (SIMULATION ,"hsdk" ) .dt_compat = hsdk_compat, .init_early = hsdk_init_early, - .init_per_cpu = hsdk_init_per_cpu,MACHINE_END
arch/arm/include/asm/kprobes.h +11 -11
@@ -44,20 +44,20 @@ int kprobe_exceptions_notify(struct notifier_block *self, unsigned long val, void *data);/* optinsn template addresses */ -extern __visible kprobe_opcode_t optprobe_template_entry; -extern __visible kprobe_opcode_t optprobe_template_val; -extern __visible kprobe_opcode_t optprobe_template_call; -extern __visible kprobe_opcode_t optprobe_template_end; -extern __visible kprobe_opcode_t optprobe_template_sub_sp; -extern __visible kprobe_opcode_t optprobe_template_add_sp; -extern __visible kprobe_opcode_t optprobe_template_restore_begin; -extern __visible kprobe_opcode_t optprobe_template_restore_orig_insn; -extern __visible kprobe_opcode_t optprobe_template_restore_end; +extern __visible kprobe_opcode_t optprobe_template_entry[]; +extern __visible kprobe_opcode_t optprobe_template_val[]; +extern __visible kprobe_opcode_t optprobe_template_call[]; +extern __visible kprobe_opcode_t optprobe_template_end[]; +extern __visible kprobe_opcode_t optprobe_template_sub_sp[]; +extern __visible kprobe_opcode_t optprobe_template_add_sp[]; +extern __visible kprobe_opcode_t optprobe_template_restore_begin[]; +extern __visible kprobe_opcode_t optprobe_template_restore_orig_insn[]; +extern __visible kprobe_opcode_t optprobe_template_restore_end[];#define MAX_OPTIMIZED_LENGTH 4#define MAX_OPTINSN_SIZE \ - ((unsigned long)&optprobe_template_end - \ - (unsigned long)&optprobe_template_entry) + ((unsigned long)optprobe_template_end - \ + (unsigned long)optprobe_template_entry)#define RELATIVEJUMP_SIZE 4struct arch_optimized_insn {
arch/arm/probes/kprobes/opt-arm.c +9 -9
@@ -85,21 +85,21 @@ asm ( "optprobe_template_end:\n");#define TMPL_VAL_IDX \ - ((unsigned long *)&optprobe_template_val - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_val - (unsigned long *)optprobe_template_entry)#define TMPL_CALL_IDX \ - ((unsigned long *)&optprobe_template_call - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_call - (unsigned long *)optprobe_template_entry)#define TMPL_END_IDX \ - ((unsigned long *)&optprobe_template_end - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_end - (unsigned long *)optprobe_template_entry)#define TMPL_ADD_SP \ - ((unsigned long *)&optprobe_template_add_sp - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_add_sp - (unsigned long *)optprobe_template_entry)#define TMPL_SUB_SP \ - ((unsigned long *)&optprobe_template_sub_sp - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_sub_sp - (unsigned long *)optprobe_template_entry)#define TMPL_RESTORE_BEGIN \ - ((unsigned long *)&optprobe_template_restore_begin - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_begin - (unsigned long *)optprobe_template_entry)#define TMPL_RESTORE_ORIGN_INSN \ - ((unsigned long *)&optprobe_template_restore_orig_insn - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_orig_insn - (unsigned long *)optprobe_template_entry)#define TMPL_RESTORE_END \ - ((unsigned long *)&optprobe_template_restore_end - (unsigned long *)&optprobe_template_entry) + ((unsigned long *)optprobe_template_restore_end - (unsigned long *)optprobe_template_entry)/* * ARM can always optimize an instruction when using ARM ISA, except
@@ -234,7 +234,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or }/* Copy arch-dep-instance from template. */ -memcpy (code, (unsigned long *)&optprobe_template_entry, +memcpy (code, (unsigned long *)optprobe_template_entry,TMPL_END_IDX *sizeof (kprobe_opcode_t));/* Adjust buffer according to instruction. */
arch/arm/vdso/Makefile +1 -1
@@ -19,7 +19,7 @@ ccflags-y += -DDISABLE_BRANCH_PROFILING -DBUILD_VDSO32 ldflags-$(CONFIG_CPU_ENDIAN_BE8) := --be8 ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ -z max-page-size=4096 -nostdlib -shared $(ldflags-y) \ - --hash-style=sysv --build-id \ + --hash-style=sysv --build-id=sha1 \ -T obj-$(CONFIG_VDSO) += vdso.o
arch/arm64/kernel/kexec_image.c +31 -10
61 lines not on this page · raw message
arch/arm64/kernel/machine_kexec_file.c +8 -1
@@ -242,6 +242,11 @@ static int prepare_elf_headers(void **addr, unsigned long *sz)return ret; } +/* +* Tries to add the initrd and DTB to the image. If it is not possible to find +* valid locations, this function will undo changes to the image and return non +* zero. +*/ int load_other_segments(struct kimage *image, unsigned long kernel_load_addr, unsigned long kernel_size,
@@ -250,7 +255,8 @@ int load_other_segments(struct kimage *image, {struct kexec_buf kbuf;void *headers, *dtb =NULL ; -unsigned long headers_sz, initrd_load_addr =0 , dtb_len; +unsigned long headers_sz, initrd_load_addr =0 , dtb_len, + orig_segments = image->nr_segments;int ret =0 ; kbuf.image = image;
@@ -336,6 +342,7 @@ int load_other_segments(struct kimage *image,return 0 ; out_err: + image->nr_segments = orig_segments;vfree (dtb);return ret; }
arch/arm64/kernel/vdso/Makefile +1 -1
@@ -24,7 +24,7 @@ btildflags-$(CONFIG_ARM64_BTI_KERNEL) += -z force-bti # routines, as x86 does (see 6f121e548f83 ("x86, vdso: Reimplement vdso.so # preparation in build-time C")). ldflags-y := -shared -nostdlib -soname=linux-vdso.so.1 --hash-style=sysv \ - -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id -n \ + -Bsymbolic $(call ld-option, --no-eh-frame-hdr) --build-id=sha1 -n \ $(btildflags-y) -T ccflags-y := -fno-common -fno-builtin -fno-stack-protector -ffixed-x18
arch/arm64/kernel/vdso32/Makefile +1 -1
@@ -128,7 +128,7 @@ VDSO_LDFLAGS += -Wl,-Bsymbolic -Wl,--no-undefined -Wl,-soname=linux-vdso.so.1 VDSO_LDFLAGS += -Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096 VDSO_LDFLAGS += -nostdlib -shared -mfloat-abi=soft VDSO_LDFLAGS += -Wl,--hash-style=sysv -VDSO_LDFLAGS += -Wl,--build-id +VDSO_LDFLAGS += -Wl,--build-id=sha1 VDSO_LDFLAGS += $(call cc32-ldoption,-fuse-ld=bfd)
arch/arm64/kvm/hypercalls.c +1 -1
@@ -31,7 +31,7 @@ int kvm_hvc_call_handler(struct kvm_vcpu *vcpu) val =SMCCC_RET_SUCCESS ;break ;case KVM_BP_HARDEN_NOT_REQUIRED : - val =SMCCC_RET_NOT_REQUIRED ; + val =SMCCC_ARCH_WORKAROUND_RET_UNAFFECTED ;break ; }break ;
arch/arm64/kvm/mmu.c +1 -0
@@ -1920,6 +1920,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,if (kvm_is_device_pfn (pfn)) { mem_type =PAGE_S2_DEVICE ; flags |=KVM_S2PTE_FLAG_IS_IOMAP ; + force_pte = true; }else if (logging_active) {/* * Faults on pages in a memslot with logging enabled
arch/arm64/kvm/sys_regs.c +1 -17
@@ -1193,16 +1193,6 @@ static unsigned int sve_visibility(const struct kvm_vcpu *vcpu,return REG_HIDDEN_USER |REG_HIDDEN_GUEST ; } -/* Visibility overrides for SVE-specific ID registers */ -static unsigned int sve_id_visibility (const struct kvm_vcpu *vcpu, -const struct sys_reg_desc *rd) -{ -if (vcpu_has_sve (vcpu)) -return 0 ; - -return REG_HIDDEN_USER ; -} -/* Generate the emulated ID_AA64ZFR0_EL1 value exposed to the guest */ static u64 guest_id_aa64zfr0_el1 (const struct kvm_vcpu *vcpu) {
@@ -1229,9 +1219,6 @@ static int get_id_aa64zfr0_el1(struct kvm_vcpu *vcpu, {u64 val; -if (WARN_ON (!vcpu_has_sve (vcpu))) -return -ENOENT ; - val =guest_id_aa64zfr0_el1 (vcpu);return reg_to_user (uaddr, &val, reg->id); }
@@ -1244,9 +1231,6 @@ static int set_id_aa64zfr0_el1(struct kvm_vcpu *vcpu,int err;u64 val; -if (WARN_ON (!vcpu_has_sve (vcpu))) -return -ENOENT ; - err =reg_from_user (&val, uaddr, id);if (err)return err;
@@ -1509,7 +1493,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {ID_SANITISED (ID_AA64PFR1_EL1 ),ID_UNALLOCATED (4 ,2 ),ID_UNALLOCATED (4 ,3 ), - { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, .visibility = sve_id_visibility }, + { SYS_DESC(SYS_ID_AA64ZFR0_EL1), access_id_aa64zfr0_el1, .get_user = get_id_aa64zfr0_el1, .set_user = set_id_aa64zfr0_el1, },ID_UNALLOCATED (4 ,5 ),ID_UNALLOCATED (4 ,6 ), ID_UNALLOCATED(4,7),
arch/arm64/mm/mmu.c +17 -0
@@ -1433,11 +1433,28 @@ static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size)free_empty_tables (start, end,PAGE_OFFSET ,PAGE_END ); } +static bool inside_linear_region (u64 start,u64 size) +{ +/* +* Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] +* accommodating both its ends but excluding PAGE_END. Max physical +* range which can be mapped inside this linear mapping range, must +* also be derived from its end points. +*/ +return start >=__pa (_PAGE_OFFSET (vabits_actual)) && + (start + size -1 ) <=__pa (PAGE_END -1 ); +} +int arch_add_memory (int nid,u64 start,u64 size,struct mhp_params *params) {int ret, flags =0 ; +if (!inside_linear_region (start, size)) { +pr_err ("[%llx %llx] is outside linear mapping region\n" , start, start + size); +return -EINVAL ; + } +if (rodata_full ||debug_pagealloc_enabled ()) flags =NO_BLOCK_MAPPINGS |NO_CONT_MAPPINGS ;
arch/mips/vdso/Makefile +1 -1
@@ -61,7 +61,7 @@ endif # VDSO linker flags. ldflags-y := -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \ $(filter -E%,$(KBUILD_CFLAGS)) -nostdlib -shared \ - -G 0 --eh-frame-hdr --hash-style=sysv --build-id -T + -G 0 --eh-frame-hdr --hash-style=sysv --build-id=sha1 -T CFLAGS_REMOVE_vdso.o = -pg
arch/powerpc/kernel/eeh_cache.c +3 -2
@@ -264,8 +264,9 @@ static int eeh_addr_cache_show(struct seq_file *s, void *v) {struct pci_io_addr_range *piar;struct rb_node *n; +unsigned long flags; -spin_lock (&pci_io_addr_cache_root.piar_lock); +spin_lock_irqsave (&pci_io_addr_cache_root.piar_lock, flags);for (n =rb_first (&pci_io_addr_cache_root.rb_root); n; n =rb_next (n)) { piar = rb_entry(n, struct pci_io_addr_range, rb_node);
@@ -273,7 +274,7 @@ static int eeh_addr_cache_show(struct seq_file *s, void *v) (piar->flags &IORESOURCE_IO ) ?"i/o" :"mem" , &piar->addr_lo, &piar->addr_hi, pci_name(piar->pcidev)); } -spin_unlock (&pci_io_addr_cache_root.piar_lock); +spin_unlock_irqrestore (&pci_io_addr_cache_root.piar_lock, flags);return 0 ; }
arch/powerpc/kernel/head_32.S +0 -12
@@ -472,11 +472,7 @@ InstructionTLBMiss: cmplw 0,r1,r3 #endif mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC -#else - li r1,_PAGE_PRESENT | _PAGE_EXEC -#endif #if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) bgt- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */
@@ -538,11 +534,7 @@ DataLoadTLBMiss: lis r1, TASK_SIZE@h /* check if kernel address */ cmplw 0,r1,r3 mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP li r1, _PAGE_PRESENT | _PAGE_ACCESSED -#else - li r1, _PAGE_PRESENT -#endif bgt- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */
@@ -618,11 +610,7 @@ DataStoreTLBMiss: lis r1, TASK_SIZE@h /* check if kernel address */ cmplw 0,r1,r3 mfspr r2, SPRN_SPRG_PGDIR -#ifdef CONFIG_SWAP li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT | _PAGE_ACCESSED -#else - li r1, _PAGE_RW | _PAGE_DIRTY | _PAGE_PRESENT -#endif bgt- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ addi r2, r2, (swapper_pg_dir - PAGE_OFFSET)@l /* kernel page table */
arch/riscv/kernel/head.S +5 -0
@@ -27,12 +27,17 @@ ENTRY(_start) /* reserved */ .word 0 .balign 8 +#ifdef CONFIG_RISCV_M_MODE + /* Image load offset (0MB) from start of RAM for M-mode */ + .dword 0 +#else #if __riscv_xlen == 64 /* Image load offset(2MB) from start of RAM */ .dword 0x200000 #else /* Image load offset(4MB) from start of RAM */ .dword 0x400000 +#endif #endif /* Effective size of kernel image */ .dword _end - _start
arch/riscv/kernel/vdso/.gitignore +1 -0
@@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only vdso.lds *.tmp +vdso-syms.S
arch/riscv/kernel/vdso/Makefile +9 -9
@@ -43,19 +43,14 @@ $(obj)/vdso.o: $(obj)/vdso.so SYSCFLAGS_vdso.so.dbg = $(c_flags) $(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE $(call if_changed,vdsold) +SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ + -Wl,--build-id -Wl,--hash-style=both # We also create a special relocatable object that should mirror the symbol # table and layout of the linked DSO. With ld --just-symbols we can then # refer to these symbols in the kernel code rather than hand-coded addresses. - -SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \ - -Wl,--build-id -Wl,--hash-style=both -$(obj)/vdso-dummy.o: $(src)/vdso.lds $(obj)/rt_sigreturn.o FORCE - $(call if_changed,vdsold) - -LDFLAGS_vdso-syms.o := -r --just-symbols -$(obj)/vdso-syms.o: $(obj)/vdso-dummy.o FORCE - $(call if_changed,ld) +$(obj)/vdso-syms.S: $(obj)/vdso.so FORCE + $(call if_changed,so2s) # strip rule for the .so file $(obj)/%.so: OBJCOPYFLAGS := -S
@@ -73,6 +68,11 @@ quiet_cmd_vdsold = VDSOLD $@ $(patsubst %, -G __vdso_%, $(vdso-syms)) [email protected] $@ && \ rm [email protected] +# Extracts symbol offsets from the VDSO, converting them into an assembly file +# that contains the same symbols at the same offsets. +quiet_cmd_so2s = SO2S $@ + cmd_so2s = $(NM) -D $< | $(srctree)/$(src)/so2s.sh > $@ + # install commands for the unstripped file quiet_cmd_vdso_install = INSTALL $@ cmd_vdso_install = cp $(obj)/[email protected] $(MODLIB)/vdso/$@
arch/riscv/kernel/vdso/so2s.sh new file +6 -0
@@ -0,0 +1,6 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2020 Palmer Dabbelt <[email protected]> + +sed 's!\([0-9a-f]*\) T \([a-z0-9_]*\)\(@@LINUX_4.15\)*!.global \2\n.set \2,0x\1!' \ +| grep '^\.'
arch/s390/kernel/smp.c +2 -1
@@ -855,13 +855,14 @@ void __init smp_detect_cpus(void)static void smp_init_secondary (void ) { -int cpu =smp_processor_id (); +int cpu =raw_smp_processor_id (); S390_lowcore.last_update_clock =get_tod_clock ();restore_access_regs (S390_lowcore.access_regs_save_area);set_cpu_flag (CIF_ASCE_PRIMARY );set_cpu_flag (CIF_ASCE_SECONDARY );cpu_init (); +rcu_cpu_starting (cpu);preempt_disable ();init_cpu_timer ();vtime_init ();
arch/s390/kernel/vdso64/Makefile +1 -1
@@ -19,7 +19,7 @@ KBUILD_AFLAGS_64 += -m64 -s KBUILD_CFLAGS_64 := $(filter-out -m64,$(KBUILD_CFLAGS)) KBUILD_CFLAGS_64 += -m64 -fPIC -shared -fno-common -fno-builtin ldflags-y := -fPIC -shared -nostdlib -soname=linux-vdso64.so.1 \ - --hash-style=both --build-id -T + --hash-style=both --build-id=sha1 -T $(targets:%=$(obj)/%.dbg): KBUILD_CFLAGS = $(KBUILD_CFLAGS_64) $(targets:%=$(obj)/%.dbg): KBUILD_AFLAGS = $(KBUILD_AFLAGS_64)
arch/sparc/vdso/Makefile +1 -1
@@ -115,7 +115,7 @@ quiet_cmd_vdso = VDSO $@ -T $(filter %.lds,$^) $(filter %.o,$^) && \ sh $(srctree)/$(src)/checkundef.sh '$(OBJDUMP)' '$@' -VDSO_LDFLAGS = -shared --hash-style=both --build-id -Bsymbolic +VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 -Bsymbolic GCOV_PROFILE := n #
arch/x86/boot/compressed/mem_encrypt.S +15 -1
@@ -81,6 +81,19 @@ SYM_FUNC_START(set_sev_encryption_mask) bts %rax, sme_me_mask(%rip) /* Create the encryption mask */ + /* + * Read MSR_AMD64_SEV again and store it to sev_status. Can't do this in + * get_sev_encryption_bit() because this function is 32-bit code and + * shared between 64-bit and 32-bit boot path. + */ + movl $MSR_AMD64_SEV, %ecx /* Read the SEV MSR */ + rdmsr + + /* Store MSR value in sev_status */ + shlq $32, %rdx + orq %rdx, %rax + movq %rax, sev_status(%rip) + .Lno_sev_mask: movq %rbp, %rsp /* Restore original stack pointer */
@@ -96,5 +109,6 @@ SYM_FUNC_END(set_sev_encryption_mask) #ifdef CONFIG_AMD_MEM_ENCRYPT .balign 8 -SYM_DATA(sme_me_mask, .quad 0) +SYM_DATA(sme_me_mask, .quad 0) +SYM_DATA(sev_status, .quad 0) #endif
arch/x86/entry/vdso/Makefile +1 -1
@@ -176,7 +176,7 @@ quiet_cmd_vdso = VDSO $@ -T $(filter %.lds,$^) $(filter %.o,$^) && \ sh $(srctree)/$(src)/checkundef.sh '$(NM)' '$@' -VDSO_LDFLAGS = -shared --hash-style=both --build-id \ +VDSO_LDFLAGS = -shared --hash-style=both --build-id=sha1 \ $(call ld-option, --eh-frame-hdr) -Bsymbolic GCOV_PROFILE := n
arch/x86/kernel/cpu/bugs.c +33 -18
85 lines not on this page · raw message
block/genhd.c +4 -1
@@ -49,7 +49,7 @@ static void disk_release_events(struct gendisk *disk);* Set disk capacity and notify if the size is not currently * zero and will not be set to zero */ -void set_capacity_revalidate_and_notify (struct gendisk *disk,sector_t size, +bool set_capacity_revalidate_and_notify (struct gendisk *disk,sector_t size,bool revalidate) {sector_t capacity =get_capacity (disk);
@@ -63,7 +63,10 @@ void set_capacity_revalidate_and_notify(struct gendisk *disk, sector_t size,char *envp[] = {"RESIZE=1" ,NULL };kobject_uevent_env (&disk_to_dev (disk)->kobj,KOBJ_CHANGE , envp); +return true; } + +return false; }EXPORT_SYMBOL_GPL (set_capacity_revalidate_and_notify);
drivers/accessibility/speakup/main.c +0 -1
@@ -357,7 +357,6 @@ static void speakup_cut(struct vc_data *vc) mark_cut_flag =0 ;synth_printf ("%s\n" ,spk_msg_get (MSG_CUT )); -speakup_clear_selection (); ret =speakup_set_selection (tty);switch (ret) {
drivers/accessibility/speakup/selection.c +4 -7
@@ -22,13 +22,6 @@ struct speakup_selection_work {struct tty_struct *tty; }; -void speakup_clear_selection (void ) -{ -console_lock (); -clear_selection (); -console_unlock (); -} -static void __speakup_set_selection (struct work_struct *work) { struct speakup_selection_work *ssw =
@@ -51,6 +44,10 @@ static void __speakup_set_selection(struct work_struct *work) goto unref; } +console_lock (); +clear_selection (); +console_unlock (); +set_selection_kernel (&sel, tty); unref:
drivers/accessibility/speakup/speakup.h +0 -1
@@ -70,7 +70,6 @@ void spk_do_flush(void);void speakup_start_ttys (void );void synth_buffer_add (u16 ch);void synth_buffer_clear (void ); -void speakup_clear_selection (void );int speakup_set_selection (struct tty_struct *tty);void speakup_cancel_selection (void );int speakup_paste_selection (struct tty_struct *tty);
drivers/accessibility/speakup/spk_ttyio.c +6 -4
@@ -298,11 +298,13 @@ static unsigned char ttyio_in(int timeout)struct spk_ldisc_data *ldisc_data = speakup_tty->disc_data;char rv; -if (wait_for_completion_timeout (&ldisc_data->completion, +if (!timeout) { +if (!try_wait_for_completion (&ldisc_data->completion)) +return 0xff ; + }else if (wait_for_completion_timeout (&ldisc_data->completion,usecs_to_jiffies (timeout)) ==0 ) { -if (timeout) -pr_warn ("spk_ttyio: timeout (%d) while waiting for input\n" , - timeout); +pr_warn ("spk_ttyio: timeout (%d) while waiting for input\n" , + timeout);return 0xff ; }
drivers/accessibility/speakup/spk_types.h +6 -2
@@ -32,6 +32,10 @@ enum { E_NEW_DEFAULT, }; +/* +* Note: add new members at the end, speakupmap.h depends on the values of the +* enum starting from SPELL_DELAY (see inc_dec_var) +*/ enum var_id_t {VERSION =0 ,SYNTH ,SILENT ,SYNTH_DIRECT ,KEYMAP ,CHARS ,
@@ -42,9 +46,9 @@ enum var_id_t {SAY_CONTROL ,SAY_WORD_CTL ,NO_INTERRUPT ,KEY_ECHO ,SPELL_DELAY ,PUNC_LEVEL ,READING_PUNC ,ATTRIB_BLEEP ,BLEEPS , -RATE ,PITCH ,INFLECTION ,VOL ,TONE ,PUNCT ,VOICE ,FREQUENCY ,LANG , +RATE ,PITCH ,VOL ,TONE ,PUNCT ,VOICE ,FREQUENCY ,LANG ,DIRECT ,PAUSE , -CAPS_START ,CAPS_STOP ,CHARTAB , +CAPS_START ,CAPS_STOP ,CHARTAB ,INFLECTION ,MAXVARS };
drivers/block/loop.c +2 -1
@@ -255,7 +255,8 @@ static void loop_set_size(struct loop_device *lo, loff_t size)bd_set_size (bdev, size <<SECTOR_SHIFT ); -set_capacity_revalidate_and_notify (lo->lo_disk, size, false); +if (!set_capacity_revalidate_and_notify (lo->lo_disk, size, false)) +kobject_uevent (&disk_to_dev (bdev->bd_disk)->kobj,KOBJ_CHANGE ); } static inline int
drivers/block/nbd.c +6 -4
@@ -296,7 +296,7 @@ static void nbd_size_clear(struct nbd_device *nbd) } } -static void nbd_size_update (struct nbd_device *nbd) +static void nbd_size_update (struct nbd_device *nbd,bool start) {struct nbd_config *config = nbd->config;struct block_device *bdev =bdget_disk (nbd->disk,0 );
@@ -312,7 +312,8 @@ static void nbd_size_update(struct nbd_device *nbd)if (bdev) {if (bdev->bd_disk) {bd_set_size (bdev, config->bytesize); -set_blocksize (bdev, config->blksize); +if (start) +set_blocksize (bdev, config->blksize); }else bdev->bd_invalidated =1 ;bdput (bdev);
@@ -327,7 +328,7 @@ static void nbd_size_set(struct nbd_device *nbd, loff_t blocksize, config->blksize = blocksize; config->bytesize = blocksize * nr_blocks;if (nbd->task_recv !=NULL ) -nbd_size_update (nbd); +nbd_size_update (nbd, false); }static void nbd_complete_rq (struct request *req)
@@ -1307,7 +1308,7 @@ static int nbd_start_device(struct nbd_device *nbd) args->index = i;queue_work (nbd->recv_workq, &args->work); } -nbd_size_update (nbd); +nbd_size_update (nbd, true);return error; }
@@ -1516,6 +1517,7 @@ static void nbd_release(struct gendisk *disk, fmode_t mode)if (test_bit (NBD_RT_DISCONNECT_ON_CLOSE , &nbd->config->runtime_flags) && bdev->bd_openers ==0 )nbd_disconnect_and_put (nbd); +bdput (bdev);nbd_config_put (nbd);nbd_put (nbd);
drivers/block/null_blk.h +1 -0
@@ -44,6 +44,7 @@ struct nullb_device {unsigned int nr_zones;struct blk_zone *zones;sector_t zone_size_sects; +spinlock_t zone_lock;unsigned long *zone_locks;unsigned long size;/* device size in MB */
drivers/block/null_blk_zoned.c +25 -6
@@ -46,10 +46,20 @@ int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q)if (!dev->zones)return -ENOMEM ; - dev->zone_locks =bitmap_zalloc (dev->nr_zones,GFP_KERNEL ); -if (!dev->zone_locks) { -kvfree (dev->zones); -return -ENOMEM ; +/* +* With memory backing, the zone_lock spinlock needs to be temporarily +* released to avoid scheduling in atomic context. To guarantee zone +* information protection, use a bitmap to lock zones with +* wait_on_bit_lock_io(). Sleeping on the lock is OK as memory backing +* implies that the queue is marked with BLK_MQ_F_BLOCKING. +*/ +spin_lock_init (&dev->zone_lock); +if (dev->memory_backed) { + dev->zone_locks =bitmap_zalloc (dev->nr_zones,GFP_KERNEL ); +if (!dev->zone_locks) { +kvfree (dev->zones); +return -ENOMEM ; + } }if (dev->zone_nr_conv >= dev->nr_zones) {
@@ -118,12 +128,16 @@ void null_free_zoned_dev(struct nullb_device *dev)static inline void null_lock_zone (struct nullb_device *dev,unsigned int zno) { -wait_on_bit_lock_io (dev->zone_locks, zno,TASK_UNINTERRUPTIBLE ); +if (dev->memory_backed) +wait_on_bit_lock_io (dev->zone_locks, zno,TASK_UNINTERRUPTIBLE ); +spin_lock_irq (&dev->zone_lock); }static inline void null_unlock_zone (struct nullb_device *dev,unsigned int zno) { -clear_and_wake_up_bit (zno, dev->zone_locks); +spin_unlock_irq (&dev->zone_lock); +if (dev->memory_backed) +clear_and_wake_up_bit (zno, dev->zone_locks); } int null_report_zones(struct gendisk *disk, sector_t sector,
@@ -233,7 +247,12 @@ static blk_status_t null_zone_write(struct nullb_cmd *cmd, sector_t sector,if (zone->cond !=BLK_ZONE_COND_EXP_OPEN ) zone->cond =BLK_ZONE_COND_IMP_OPEN ; +if (dev->memory_backed) +spin_unlock_irq (&dev->zone_lock); ret =null_process_cmd (cmd,REQ_OP_WRITE , sector, nr_sectors); +if (dev->memory_backed) +spin_lock_irq (&dev->zone_lock); +if (ret !=BLK_STS_OK )break ;
drivers/char/tpm/eventlog/efi.c +5 -0
@@ -41,6 +41,11 @@ int tpm_read_log_efi(struct tpm_chip *chip) log_size = log_tbl->size;memunmap (log_tbl); +if (!log_size) { +pr_warn ("UEFI TPM log area empty\n" ); +return -EIO ; + } + log_tbl =memremap (efi.tpm_log,sizeof (*log_tbl) + log_size,MEMREMAP_WB );if (!log_tbl) {
drivers/char/tpm/tpm_tis.c +27 -2
@@ -27,6 +27,7 @@#include <linux/of.h> #include <linux/of_device.h> #include <linux/kernel.h> +#include <linux/dmi.h> #include "tpm.h" #include "tpm_tis_core.h"
@@ -49,8 +50,8 @@ static inline struct tpm_tis_tcg_phy *to_tpm_tis_tcg_phy(struct tpm_tis_data *da return container_of(data, struct tpm_tis_tcg_phy, priv); } -static bool interrupts = true; -module_param (interrupts, bool,0444 ); +static int interrupts =-1 ; +module_param (interrupts, int,0444 );MODULE_PARM_DESC (interrupts,"Enable interrupts" );static bool itpm;
@@ -63,6 +64,28 @@ module_param(force, bool, 0444);MODULE_PARM_DESC (force,"Force device probe rather than using ACPI entry" );#endif +static int tpm_tis_disable_irq (const struct dmi_system_id *d) +{ +if (interrupts ==-1 ) { +pr_notice ("tpm_tis: %s detected: disabling interrupts.\n" , d->ident); + interrupts =0 ; + } + +return 0 ; +} + +static const struct dmi_system_id tpm_tis_dmi_table[] = { + { + .callback = tpm_tis_disable_irq, + .ident ="ThinkPad T490s" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), +DMI_MATCH (DMI_PRODUCT_VERSION ,"ThinkPad T490s" ), + }, + }, + {} +}; +#if defined(CONFIG_PNP ) && defined(CONFIG_ACPI )static int has_hid (struct acpi_device *dev,const char *hid) {
@@ -192,6 +215,8 @@ static int tpm_tis_init(struct device *dev, struct tpm_info *tpm_info)int irq =-1 ;int rc; +dmi_check_system (tpm_tis_dmi_table); + rc =check_acpi_tpm2 (dev);if (rc)return rc;
drivers/char/virtio_console.c +4 -4
@@ -435,12 +435,12 @@ static struct port_buffer *alloc_buf(struct virtio_device *vdev, size_t buf_size/* * Allocate DMA memory from ancestor. When a virtio * device is created by remoteproc, the DMA memory is -* associated with the grandparent device: -* vdev => rproc => platform-dev. +* associated with the parent device: +* virtioY => remoteprocX#vdevYbuffer. */ -if (!vdev->dev.parent || !vdev->dev.parent->parent) + buf->dev = vdev->dev.parent; +if (!buf->dev) goto free_buf; - buf->dev = vdev->dev.parent->parent;/* Increase device refcnt to avoid freeing it */ get_device (buf->dev);
drivers/cpufreq/cpufreq.c +3 -1
@@ -2233,7 +2233,7 @@ static int cpufreq_init_governor(struct cpufreq_policy *policy)return -EINVAL ;/* Platform doesn't want dynamic frequency switching ? */ -if (policy->governor->dynamic_switching && +if (policy->governor->flags &CPUFREQ_GOV_DYNAMIC_SWITCHING && cpufreq_driver->flags &CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING ) {struct cpufreq_governor *gov =cpufreq_fallback_governor ();
@@ -2259,6 +2259,8 @@ static int cpufreq_init_governor(struct cpufreq_policy *policy) } } + policy->strict_target = !!(policy->governor->flags &CPUFREQ_GOV_STRICT_TARGET ); +return 0 ; }
drivers/cpufreq/cpufreq_governor.h +1 -1
@@ -156,7 +156,7 @@ void cpufreq_dbs_governor_limits(struct cpufreq_policy *policy);#define CPUFREQ_DBS_GOVERNOR_INITIALIZER (_name_) \ { \ .name = _name_, \ - .dynamic_switching = true, \ + .flags = CPUFREQ_GOV_DYNAMIC_SWITCHING, \ .owner = THIS_MODULE, \ .init = cpufreq_dbs_governor_init, \ .exit = cpufreq_dbs_governor_exit, \
drivers/cpufreq/cpufreq_performance.c +1 -0
@@ -20,6 +20,7 @@ static void cpufreq_gov_performance_limits(struct cpufreq_policy *policy)static struct cpufreq_governor cpufreq_gov_performance = { .name ="performance" , .owner =THIS_MODULE , + .flags =CPUFREQ_GOV_STRICT_TARGET , .limits = cpufreq_gov_performance_limits, };
drivers/cpufreq/cpufreq_powersave.c +1 -0
@@ -21,6 +21,7 @@ static struct cpufreq_governor cpufreq_gov_powersave = { .name = "powersave", .limits = cpufreq_gov_powersave_limits, .owner = THIS_MODULE, + .flags = CPUFREQ_GOV_STRICT_TARGET, };MODULE_AUTHOR ("Dominik Brodowski <[email protected]>" );
drivers/cpufreq/intel_pstate.c +9 -7
@@ -2509,7 +2509,7 @@ static void intel_cpufreq_trace(struct cpudata *cpu, unsigned int trace_type, in }static void intel_cpufreq_adjust_hwp (struct cpudata *cpu,u32 target_pstate, -bool fast_switch) +bool strict,bool fast_switch) {u64 prev =READ_ONCE (cpu->hwp_req_cached), value = prev;
@@ -2521,7 +2521,7 @@ static void intel_cpufreq_adjust_hwp(struct cpudata *cpu, u32 target_pstate,* field in it, so opportunistically update the max too if needed. */ value &= ~HWP_MAX_PERF (~0L ); - value |=HWP_MAX_PERF (cpu->max_perf_ratio); + value |=HWP_MAX_PERF (strict ? target_pstate : cpu->max_perf_ratio);if (value == prev)return ;
@@ -2544,14 +2544,16 @@ static void intel_cpufreq_adjust_perf_ctl(struct cpudata *cpu, pstate_funcs.get_val(cpu, target_pstate)); } -static int intel_cpufreq_update_pstate (struct cpudata *cpu,int target_pstate, -bool fast_switch) +static int intel_cpufreq_update_pstate (struct cpufreq_policy *policy, +int target_pstate,bool fast_switch) { +struct cpudata *cpu = all_cpu_data[policy->cpu];int old_pstate = cpu->pstate.current_pstate; target_pstate =intel_pstate_prepare_request (cpu, target_pstate);if (hwp_active) { -intel_cpufreq_adjust_hwp (cpu, target_pstate, fast_switch); +intel_cpufreq_adjust_hwp (cpu, target_pstate, + policy->strict_target, fast_switch); cpu->pstate.current_pstate = target_pstate; }else if (target_pstate != old_pstate) {intel_cpufreq_adjust_perf_ctl (cpu, target_pstate, fast_switch);
@@ -2591,7 +2593,7 @@ static int intel_cpufreq_target(struct cpufreq_policy *policy,break ; } - target_pstate =intel_cpufreq_update_pstate (cpu, target_pstate, false); + target_pstate =intel_cpufreq_update_pstate (policy, target_pstate, false); freqs.new = target_pstate * cpu->pstate.scaling;
@@ -2610,7 +2612,7 @@ static unsigned int intel_cpufreq_fast_switch(struct cpufreq_policy *policy, target_pstate =DIV_ROUND_UP (target_freq, cpu->pstate.scaling); - target_pstate =intel_cpufreq_update_pstate (cpu, target_pstate, true); + target_pstate =intel_cpufreq_update_pstate (policy, target_pstate, true);return target_pstate * cpu->pstate.scaling; }
drivers/crypto/chelsio/chcr_ktls.c +19 -8
@@ -659,7 +659,8 @@ int chcr_ktls_cpl_set_tcb_rpl(struct adapter *adap, unsigned char *input) }static void *__chcr_write_cpl_set_tcb_ulp (struct chcr_ktls_info *tx_info, -u32 tid,void *pos,u16 word,u64 mask, +u32 tid,void *pos,u16 word, +struct sge_eth_txq *q,u64 mask,u64 val,u32 reply) {struct cpl_set_tcb_field_core *cpl;
@@ -668,7 +669,10 @@ static void *__chcr_write_cpl_set_tcb_ulp(struct chcr_ktls_info *tx_info,/* ULP_TXPKT */ txpkt = pos; - txpkt->cmd_dest =htonl (ULPTX_CMD_V (ULP_TX_PKT ) |ULP_TXPKT_DEST_V (0 )); + txpkt->cmd_dest =htonl (ULPTX_CMD_V (ULP_TX_PKT ) | +ULP_TXPKT_CHANNELID_V (tx_info->port_id) | +ULP_TXPKT_FID_V (q->q.cntxt_id) | +ULP_TXPKT_RO_F ); txpkt->len =htonl (DIV_ROUND_UP (CHCR_SET_TCB_FIELD_LEN ,16 ));/* ULPTX_IDATA sub-command */
@@ -723,7 +727,7 @@ static void *chcr_write_cpl_set_tcb_ulp(struct chcr_ktls_info *tx_info, }else {u8 buf[48 ] = {0 }; -__chcr_write_cpl_set_tcb_ulp (tx_info, tid, buf, word, +__chcr_write_cpl_set_tcb_ulp (tx_info, tid, buf, word, q, mask, val, reply); return chcr_copy_to_txd(buf, &q->q, pos,
@@ -731,7 +735,7 @@ static void *chcr_write_cpl_set_tcb_ulp(struct chcr_ktls_info *tx_info, } } - pos =__chcr_write_cpl_set_tcb_ulp (tx_info, tid, pos, word, + pos =__chcr_write_cpl_set_tcb_ulp (tx_info, tid, pos, word, q, mask, val, reply);/* check again if we are at the end of the queue */
@@ -926,6 +930,7 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb,struct iphdr *ip;int credits;u8 buf[150 ]; +u64 cntrl1;void *pos; iplen =skb_network_header_len (skb);
@@ -964,22 +969,28 @@ chcr_ktls_write_tcp_options(struct chcr_ktls_info *tx_info, struct sk_buff *skb, TXPKT_PF_V(tx_info->adap->pf)); cpl->pack =0 ; cpl->len =htons (pktlen); -/* checksum offload */ - cpl->ctrl1 =0 ; - - pos = cpl +1 ;memcpy (buf, skb->data, pktlen);if (tx_info->ip_family ==AF_INET ) {/* we need to correct ip header len */ ip = (struct iphdr *)(buf + maclen); ip->tot_len =htons (pktlen - maclen); + cntrl1 =TXPKT_CSUM_TYPE_V (TX_CSUM_TCPIP );#if IS_ENABLED (CONFIG_IPV6 ) } else { ip6 = (struct ipv6hdr *)(buf + maclen); ip6->payload_len =htons (pktlen - maclen - iplen); + cntrl1 =TXPKT_CSUM_TYPE_V (TX_CSUM_TCPIP6 );#endif } + + cntrl1 |=T6_TXPKT_ETHHDR_LEN_V (maclen -ETH_HLEN ) | +TXPKT_IPHDR_LEN_V (iplen); +/* checksum offload */ + cpl->ctrl1 =cpu_to_be64 (cntrl1); + + pos = cpl +1 ; +/* now take care of the tcp header, if fin is not set then clear push * bit as well, and if fin is set, it will be sent at the last so we * need to update the tcp sequence number as per the last packet.
drivers/firmware/xilinx/zynqmp.c +3 -0
@@ -147,6 +147,9 @@ static int zynqmp_pm_feature(u32 api_id)return 0 ;/* Return value if feature is already checked */ +if (api_id >ARRAY_SIZE (zynqmp_pm_features)) +return PM_FEATURE_INVALID ; +if (zynqmp_pm_features[api_id] !=PM_FEATURE_UNCHECKED )return zynqmp_pm_features[api_id];
drivers/gpio/gpio-aspeed.c +1 -0
@@ -1114,6 +1114,7 @@ static const struct aspeed_gpio_config ast2500_config =static const struct aspeed_bank_props ast2600_bank_props[] = {/* input output */ + {4 ,0xffffffff ,0x00ffffff },/* Q/R/S/T */ {5 ,0xffffffff ,0xffffff00 },/* U/V/W/X */ {6 ,0x0000ffff ,0x0000ffff },/* Y/Z */ { },
drivers/gpio/gpio-pcie-idio-24.c +56 -6
117 lines not on this page · raw message
drivers/gpio/gpio-sifive.c +1 -1
@@ -183,7 +183,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)return PTR_ERR (chip->regs); ngpio =of_irq_count (node); -if (ngpio >=SIFIVE_GPIO_MAX ) { +if (ngpio >SIFIVE_GPIO_MAX ) {dev_err (dev,"Too many GPIO interrupts (max=%d)\n" ,SIFIVE_GPIO_MAX );return -ENXIO ;
drivers/gpu/drm/amd/amdgpu/cik_sdma.c +12 -15
@@ -1071,22 +1071,19 @@ static int cik_sdma_soft_reset(void *handle) {u32 srbm_soft_reset =0 ;struct amdgpu_device *adev = (struct amdgpu_device *)handle; -u32 tmp =RREG32 (mmSRBM_STATUS2); +u32 tmp; -if (tmp &SRBM_STATUS2__SDMA_BUSY_MASK ) { -/* sdma0 */ - tmp =RREG32 (mmSDMA0_F32_CNTL +SDMA0_REGISTER_OFFSET ); - tmp |=SDMA0_F32_CNTL__HALT_MASK ; -WREG32 (mmSDMA0_F32_CNTL +SDMA0_REGISTER_OFFSET , tmp); - srbm_soft_reset |=SRBM_SOFT_RESET__SOFT_RESET_SDMA_MASK ; - } -if (tmp &SRBM_STATUS2__SDMA1_BUSY_MASK ) { -/* sdma1 */ - tmp =RREG32 (mmSDMA0_F32_CNTL +SDMA1_REGISTER_OFFSET ); - tmp |=SDMA0_F32_CNTL__HALT_MASK ; -WREG32 (mmSDMA0_F32_CNTL +SDMA1_REGISTER_OFFSET , tmp); - srbm_soft_reset |=SRBM_SOFT_RESET__SOFT_RESET_SDMA1_MASK ; - } +/* sdma0 */ + tmp =RREG32 (mmSDMA0_F32_CNTL +SDMA0_REGISTER_OFFSET ); + tmp |=SDMA0_F32_CNTL__HALT_MASK ; +WREG32 (mmSDMA0_F32_CNTL +SDMA0_REGISTER_OFFSET , tmp); + srbm_soft_reset |=SRBM_SOFT_RESET__SOFT_RESET_SDMA_MASK ; + +/* sdma1 */ + tmp =RREG32 (mmSDMA0_F32_CNTL +SDMA1_REGISTER_OFFSET ); + tmp |=SDMA0_F32_CNTL__HALT_MASK ; +WREG32 (mmSDMA0_F32_CNTL +SDMA1_REGISTER_OFFSET , tmp); + srbm_soft_reset |=SRBM_SOFT_RESET__SOFT_RESET_SDMA1_MASK ;if (srbm_soft_reset) { tmp =RREG32 (mmSRBM_SOFT_RESET);
drivers/gpu/drm/amd/amdgpu/soc15.c +1 -2
@@ -1220,8 +1220,7 @@ static int soc15_common_early_init(void *handle) adev->pg_flags =AMD_PG_SUPPORT_SDMA |AMD_PG_SUPPORT_MMHUB | -AMD_PG_SUPPORT_VCN | -AMD_PG_SUPPORT_VCN_DPG ; +AMD_PG_SUPPORT_VCN ; }else { adev->cg_flags =AMD_CG_SUPPORT_GFX_MGCG | AMD_CG_SUPPORT_GFX_MGLS |
drivers/gpu/drm/amd/display/dc/irq/dcn30/irq_service_dcn30.c +2 -2
@@ -306,8 +306,8 @@ irq_source_info_dcn30[DAL_IRQ_SOURCES_NUMBER] = {pflip_int_entry (1 ),pflip_int_entry (2 ),pflip_int_entry (3 ), - [DC_IRQ_SOURCE_PFLIP5] = dummy_irq_entry(), - [DC_IRQ_SOURCE_PFLIP6] = dummy_irq_entry(), +pflip_int_entry (4 ), + pflip_int_entry(5), [DC_IRQ_SOURCE_PFLIP_UNDERLAY0 ] =dummy_irq_entry (),gpio_pad_int_entry (0 ), gpio_pad_int_entry(1),
drivers/gpu/drm/amd/powerplay/hwmgr/ci_baco.c +4 -3
@@ -142,12 +142,12 @@ static const struct baco_cmd_entry exit_baco_tbl[] = { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_BCLK_OFF_MASK, BACO_CNTL__BACO_BCLK_OFF__SHIFT, 0, 0x00 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_POWER_OFF_MASK, BACO_CNTL__BACO_POWER_OFF__SHIFT, 0, 0x00 }, { CMD_DELAY_MS, 0, 0, 0, 20, 0 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_BF_MASK, 0, 0xffffffff, 0x20 }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_BF_MASK, 0, 0xffffffff, 0x200 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_ISO_DIS_MASK, BACO_CNTL__BACO_ISO_DIS__SHIFT, 0, 0x01 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_MASK, 0, 5, 0x1c }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__PWRGOOD_MASK, 0, 5, 0x1c00 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_ANA_ISO_DIS_MASK, BACO_CNTL__BACO_ANA_ISO_DIS__SHIFT, 0, 0x01 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_RESET_EN_MASK, BACO_CNTL__BACO_RESET_EN__SHIFT, 0, 0x00 }, - { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__RCU_BIF_CONFIG_DONE_MASK, 0, 5, 0x10 }, + { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__RCU_BIF_CONFIG_DONE_MASK, 0, 5, 0x100 }, { CMD_READMODIFYWRITE, mmBACO_CNTL, BACO_CNTL__BACO_EN_MASK, BACO_CNTL__BACO_EN__SHIFT, 0, 0x00 }, { CMD_WAITFOR, mmBACO_CNTL, BACO_CNTL__BACO_MODE_MASK, 0, 0xffffffff, 0x00 } };
@@ -155,6 +155,7 @@ static const struct baco_cmd_entry exit_baco_tbl[] =static const struct baco_cmd_entry clean_baco_tbl[] = { {CMD_WRITE , mmBIOS_SCRATCH_6,0 ,0 ,0 ,0 }, + {CMD_WRITE , mmBIOS_SCRATCH_7,0 ,0 ,0 ,0 }, {CMD_WRITE , mmCP_PFP_UCODE_ADDR,0 ,0 ,0 ,0 } };
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +4 -0
@@ -1541,6 +1541,10 @@ static int smu7_disable_dpm_tasks(struct pp_hwmgr *hwmgr)PP_ASSERT_WITH_CODE ((tmp_result ==0 ),"Failed to reset to default!" , result = tmp_result); + tmp_result =smum_stop_smc (hwmgr); +PP_ASSERT_WITH_CODE ((tmp_result ==0 ), +"Failed to stop smc!" , result = tmp_result); + tmp_result =smu7_force_switch_to_arbf0 (hwmgr);PP_ASSERT_WITH_CODE ((tmp_result ==0 ),"Failed to force to switch arbf0!" , result = tmp_result);
drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +1 -0
@@ -229,6 +229,7 @@ struct pp_smumgr_func {bool (*is_hw_avfs_present)(struct pp_hwmgr *hwmgr);int (*update_dpm_settings)(struct pp_hwmgr *hwmgr,void *profile_setting);int (*smc_table_manager)(struct pp_hwmgr *hwmgr,uint8_t *table,uint16_t table_id,bool rw);/*rw: true for read, false for write */ +int (*stop_smc)(struct pp_hwmgr *hwmgr); };struct pp_hwmgr_func {
drivers/gpu/drm/amd/powerplay/inc/smumgr.h +2 -0
@@ -113,4 +113,6 @@ extern int smum_update_dpm_settings(struct pp_hwmgr *hwmgr, void *profile_settinextern int smum_smc_table_manager (struct pp_hwmgr *hwmgr,uint8_t *table,uint16_t table_id,bool rw); +extern int smum_stop_smc (struct pp_hwmgr *hwmgr); +#endif
drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c +25 -4
@@ -2726,10 +2726,7 @@ static int ci_initialize_mc_reg_table(struct pp_hwmgr *hwmgr)static bool ci_is_dpm_running (struct pp_hwmgr *hwmgr) { -return (1 ==PHM_READ_INDIRECT_FIELD (hwmgr->device, -CGS_IND_REG__SMC ,FEATURE_STATUS , -VOLTAGE_CONTROLLER_ON )) - ? true : false; +return ci_is_smc_ram_running (hwmgr); }static int ci_smu_init (struct pp_hwmgr *hwmgr)
@@ -2939,6 +2936,29 @@ static int ci_update_smc_table(struct pp_hwmgr *hwmgr, uint32_t type)return 0 ; } +static void ci_reset_smc (struct pp_hwmgr *hwmgr) +{ +PHM_WRITE_INDIRECT_FIELD (hwmgr->device,CGS_IND_REG__SMC , +SMC_SYSCON_RESET_CNTL , + rst_reg,1 ); +} + + +static void ci_stop_smc_clock (struct pp_hwmgr *hwmgr) +{ +PHM_WRITE_INDIRECT_FIELD (hwmgr->device,CGS_IND_REG__SMC , +SMC_SYSCON_CLOCK_CNTL_0 , + ck_disable,1 ); +} + +static int ci_stop_smc (struct pp_hwmgr *hwmgr) +{ +ci_reset_smc (hwmgr); +ci_stop_smc_clock (hwmgr); + +return 0 ; +} +const struct pp_smumgr_func ci_smu_funcs = { .name ="ci_smu" , .smu_init = ci_smu_init,
@@ -2964,4 +2984,5 @@ const struct pp_smumgr_func ci_smu_funcs = { .is_dpm_running = ci_is_dpm_running, .update_dpm_settings = ci_update_dpm_settings, .update_smc_table = ci_update_smc_table, + .stop_smc = ci_stop_smc, };
drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c +8 -0
@@ -245,3 +245,11 @@ int smum_smc_table_manager(struct pp_hwmgr *hwmgr, uint8_t *table, uint16_t tablreturn -EINVAL ; } + +int smum_stop_smc (struct pp_hwmgr *hwmgr) +{ +if (hwmgr->smumgr_funcs->stop_smc) +return hwmgr->smumgr_funcs->stop_smc (hwmgr); + +return 0 ; +}
drivers/gpu/drm/gma500/psb_irq.c +12 -22
@@ -347,6 +347,7 @@ int psb_irq_postinstall(struct drm_device *dev) {struct drm_psb_private *dev_priv = dev->dev_private;unsigned long irqflags; +unsigned int i;spin_lock_irqsave (&dev_priv->irqmask_lock, irqflags);
@@ -359,20 +360,12 @@ int psb_irq_postinstall(struct drm_device *dev)PSB_WVDC32 (dev_priv->vdc_irq_mask,PSB_INT_ENABLE_R );PSB_WVDC32 (0xFFFFFFFF ,PSB_HWSTAM ); -if (dev->vblank[0 ].enabled) -psb_enable_pipestat (dev_priv,0 ,PIPE_VBLANK_INTERRUPT_ENABLE ); -else -psb_disable_pipestat (dev_priv,0 ,PIPE_VBLANK_INTERRUPT_ENABLE ); - -if (dev->vblank[1 ].enabled) -psb_enable_pipestat (dev_priv,1 ,PIPE_VBLANK_INTERRUPT_ENABLE ); -else -psb_disable_pipestat (dev_priv,1 ,PIPE_VBLANK_INTERRUPT_ENABLE ); - -if (dev->vblank[2 ].enabled) -psb_enable_pipestat (dev_priv,2 ,PIPE_VBLANK_INTERRUPT_ENABLE ); -else -psb_disable_pipestat (dev_priv,2 ,PIPE_VBLANK_INTERRUPT_ENABLE ); +for (i =0 ; i < dev->num_crtcs; ++i) { +if (dev->vblank[i].enabled) +psb_enable_pipestat (dev_priv, i,PIPE_VBLANK_INTERRUPT_ENABLE ); +else +psb_disable_pipestat (dev_priv, i,PIPE_VBLANK_INTERRUPT_ENABLE ); + }if (dev_priv->ops->hotplug_enable) dev_priv->ops->hotplug_enable (dev, true);
@@ -385,6 +378,7 @@ void psb_irq_uninstall(struct drm_device *dev) {struct drm_psb_private *dev_priv = dev->dev_private;unsigned long irqflags; +unsigned int i;spin_lock_irqsave (&dev_priv->irqmask_lock, irqflags);
@@ -393,14 +387,10 @@ void psb_irq_uninstall(struct drm_device *dev)PSB_WVDC32 (0xFFFFFFFF ,PSB_HWSTAM ); -if (dev->vblank[0 ].enabled) -psb_disable_pipestat (dev_priv,0 ,PIPE_VBLANK_INTERRUPT_ENABLE ); - -if (dev->vblank[1 ].enabled) -psb_disable_pipestat (dev_priv,1 ,PIPE_VBLANK_INTERRUPT_ENABLE ); - -if (dev->vblank[2 ].enabled) -psb_disable_pipestat (dev_priv,2 ,PIPE_VBLANK_INTERRUPT_ENABLE ); +for (i =0 ; i < dev->num_crtcs; ++i) { +if (dev->vblank[i].enabled) +psb_disable_pipestat (dev_priv, i,PIPE_VBLANK_INTERRUPT_ENABLE ); + } dev_priv->vdc_irq_mask &= _PSB_IRQ_SGX_FLAG | _PSB_IRQ_MSVDX_FLAG |
drivers/gpu/drm/i915/gem/i915_gem_domain.c +13 -15
@@ -484,21 +484,6 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,if (!obj)return -ENOENT ; -/* -* Already in the desired write domain? Nothing for us to do! -* -* We apply a little bit of cunning here to catch a broader set of -* no-ops. If obj->write_domain is set, we must be in the same -* obj->read_domains, and only that domain. Therefore, if that -* obj->write_domain matches the request read_domains, we are -* already in the same read/write domain and can skip the operation, -* without having to further check the requested write_domain. -*/ -if (READ_ONCE (obj->write_domain) == read_domains) { - err =0 ; - goto out; - } -/* * Try to flush the object off the GPU without holding the lock. * We will repeat the flush holding the lock in the normal manner
@@ -536,6 +521,19 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data,if (err) goto out; +/* +* Already in the desired write domain? Nothing for us to do! +* +* We apply a little bit of cunning here to catch a broader set of +* no-ops. If obj->write_domain is set, we must be in the same +* obj->read_domains, and only that domain. Therefore, if that +* obj->write_domain matches the request read_domains, we are +* already in the same read/write domain and can skip the operation, +* without having to further check the requested write_domain. +*/ +if (READ_ONCE (obj->write_domain) == read_domains) + goto out_unpin; + err =i915_gem_object_lock_interruptible (obj);if (err) goto out_unpin;
drivers/gpu/drm/i915/gt/intel_engine_cs.c +2 -1
@@ -370,7 +370,8 @@ static void __setup_engine_capabilities(struct intel_engine_cs *engine)* instances. */ if ((INTEL_GEN (i915) >=11 && - engine->gt->info.vdbox_sfc_access & engine->mask) || + (engine->gt->info.vdbox_sfc_access & +BIT (engine->instance))) || (INTEL_GEN (i915) >=9 && engine->instance ==0 )) engine->uabi_capabilities |=I915_VIDEO_AND_ENHANCE_CLASS_CAPABILITY_SFC ;
drivers/gpu/drm/i915/i915_vma.c +4 -2
@@ -315,8 +315,10 @@ static void __vma_release(struct dma_fence_work *work) {struct i915_vma_work *vw =container_of (work,typeof (*vw), base); -if (vw->pinned) +if (vw->pinned) {__i915_gem_object_unpin_pages (vw->pinned); +i915_gem_object_put (vw->pinned); + } }static const struct dma_fence_work_ops bind_ops = {
@@ -430,7 +432,7 @@ int i915_vma_bind(struct i915_vma *vma,if (vma->obj) {__i915_gem_object_pin_pages (vma->obj); - work->pinned = vma->obj; + work->pinned =i915_gem_object_get (vma->obj); } }else { ret = vma->ops->bind_vma (vma->vm, vma, cache_level, bind_flags);
drivers/gpu/drm/panfrost/panfrost_device.c +25 -15
@@ -214,58 +214,67 @@ int panfrost_device_init(struct panfrost_device *pfdev)return err; } + err =panfrost_devfreq_init (pfdev); +if (err) { +if (err != -EPROBE_DEFER ) +dev_err (pfdev->dev,"devfreq init failed %d\n" , err); + goto out_clk; + } + err =panfrost_regulator_init (pfdev);if (err) - goto err_out0; + goto out_devfreq; err =panfrost_reset_init (pfdev);if (err) {dev_err (pfdev->dev,"reset init failed %d\n" , err); - goto err_out1; + goto out_regulator; } err =panfrost_pm_domain_init (pfdev);if (err) - goto err_out2; + goto out_reset; res =platform_get_resource (pfdev->pdev,IORESOURCE_MEM ,0 ); pfdev->iomem =devm_ioremap_resource (pfdev->dev, res);if (IS_ERR (pfdev->iomem)) {dev_err (pfdev->dev,"failed to ioremap iomem\n" ); err =PTR_ERR (pfdev->iomem); - goto err_out3; + goto out_pm_domain; } err =panfrost_gpu_init (pfdev);if (err) - goto err_out3; + goto out_pm_domain; err =panfrost_mmu_init (pfdev);if (err) - goto err_out4; + goto out_gpu; err =panfrost_job_init (pfdev);if (err) - goto err_out5; + goto out_mmu; err =panfrost_perfcnt_init (pfdev);if (err) - goto err_out6; + goto out_job;return 0 ; -err_out6: +out_job:panfrost_job_fini (pfdev); -err_out5: +out_mmu:panfrost_mmu_fini (pfdev); -err_out4: +out_gpu:panfrost_gpu_fini (pfdev); -err_out3: +out_pm_domain:panfrost_pm_domain_fini (pfdev); -err_out2: +out_reset:panfrost_reset_fini (pfdev); -err_out1: +out_regulator:panfrost_regulator_fini (pfdev); -err_out0: +out_devfreq: +panfrost_devfreq_fini (pfdev); +out_clk:panfrost_clk_fini (pfdev);return err; }
@@ -278,6 +287,7 @@ void panfrost_device_fini(struct panfrost_device *pfdev)panfrost_gpu_fini (pfdev);panfrost_pm_domain_fini (pfdev);panfrost_reset_fini (pfdev); +panfrost_devfreq_fini (pfdev);panfrost_regulator_fini (pfdev);panfrost_clk_fini (pfdev); }
drivers/gpu/drm/panfrost/panfrost_drv.c +5 -15
@@ -14,7 +14,6 @@#include <drm/drm_utils.h> #include "panfrost_device.h" -#include "panfrost_devfreq.h" #include "panfrost_gem.h" #include "panfrost_mmu.h" #include "panfrost_job.h"
@@ -606,13 +605,6 @@ static int panfrost_probe(struct platform_device *pdev) goto err_out0; } - err =panfrost_devfreq_init (pfdev); -if (err) { -if (err != -EPROBE_DEFER ) -dev_err (&pdev->dev,"Fatal error during devfreq init\n" ); - goto err_out1; - } -pm_runtime_set_active (pfdev->dev);pm_runtime_mark_last_busy (pfdev->dev);pm_runtime_enable (pfdev->dev);
@@ -625,17 +617,16 @@ static int panfrost_probe(struct platform_device *pdev)*/ err =drm_dev_register (ddev,0 );if (err <0 ) - goto err_out2; + goto err_out1;panfrost_gem_shrinker_init (ddev);return 0 ; -err_out2: -pm_runtime_disable (pfdev->dev); -panfrost_devfreq_fini (pfdev); err_out1: +pm_runtime_disable (pfdev->dev);panfrost_device_fini (pfdev); +pm_runtime_set_suspended (pfdev->dev); err_out0:drm_dev_put (ddev);return err;
@@ -650,10 +641,9 @@ static int panfrost_remove(struct platform_device *pdev)panfrost_gem_shrinker_cleanup (ddev);pm_runtime_get_sync (pfdev->dev); -panfrost_devfreq_fini (pfdev); -panfrost_device_fini (pfdev); -pm_runtime_put_sync_suspend (pfdev->dev);pm_runtime_disable (pfdev->dev); +panfrost_device_fini (pfdev); +pm_runtime_set_suspended (pfdev->dev);drm_dev_put (ddev);return 0 ;
drivers/gpu/drm/vc4/vc4_bo.c +3 -2
@@ -1005,6 +1005,7 @@ int vc4_get_tiling_ioctl(struct drm_device *dev, void *data,return 0 ; } +static void vc4_bo_cache_destroy (struct drm_device *dev,void *unused);int vc4_bo_cache_init (struct drm_device *dev) {struct vc4_dev *vc4 =to_vc4_dev (dev);
@@ -1033,10 +1034,10 @@ int vc4_bo_cache_init(struct drm_device *dev)INIT_WORK (&vc4->bo_cache.time_work, vc4_bo_cache_time_work);timer_setup (&vc4->bo_cache.time_timer, vc4_bo_cache_time_timer,0 ); -return 0 ; +return drmm_add_action_or_reset (dev, vc4_bo_cache_destroy,NULL ); } -void vc4_bo_cache_destroy (struct drm_device *dev) +static void vc4_bo_cache_destroy (struct drm_device *dev,void *unused) {struct vc4_dev *vc4 =to_vc4_dev (dev);int i;
drivers/gpu/drm/vc4/vc4_drv.c +0 -1
@@ -311,7 +311,6 @@ static int vc4_drm_bind(struct device *dev) gem_destroy:vc4_gem_destroy (drm);drm_mode_config_cleanup (drm); -vc4_bo_cache_destroy (drm); dev_put:drm_dev_put (drm);return ret;
drivers/gpu/drm/vc4/vc4_drv.h +1 -1
@@ -14,6 +14,7 @@#include <drm/drm_device.h> #include <drm/drm_encoder.h> #include <drm/drm_gem_cma_helper.h> +#include <drm/drm_managed.h> #include <drm/drm_mm.h> #include <drm/drm_modeset_lock.h>
@@ -786,7 +787,6 @@ struct drm_gem_object *vc4_prime_import_sg_table(struct drm_device *dev, struct sg_table *sgt);void *vc4_prime_vmap (struct drm_gem_object *obj);int vc4_bo_cache_init (struct drm_device *dev); -void vc4_bo_cache_destroy (struct drm_device *dev);int vc4_bo_inc_usecnt (struct vc4_bo *bo);void vc4_bo_dec_usecnt (struct vc4_bo *bo);void vc4_bo_add_to_purgeable_pool (struct vc4_bo *bo);
drivers/hv/hv_balloon.c +1 -1
@@ -1275,7 +1275,7 @@ static void balloon_up(struct work_struct *dummy)/* Refuse to balloon below the floor. */ if (avail_pages < num_pages || avail_pages - num_pages < floor) { -pr_warn ("Balloon request will be partially fulfilled. %s\n" , +pr_info ("Balloon request will be partially fulfilled. %s\n" , avail_pages < num_pages ?"Not enough memory." :"Balloon floor reached." );
drivers/hwmon/amd_energy.c +1 -1
@@ -209,7 +209,7 @@ static umode_t amd_energy_is_visible(const void *_data,enum hwmon_sensor_types type, u32 attr, int channel) { - return 0444; + return 0440; }static int energy_accumulator (void *p)
drivers/hwmon/applesmc.c +82 -48
202 lines not on this page · raw message
drivers/hwtracing/coresight/coresight-etm-perf.c +1 -3
@@ -210,7 +210,7 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,u32 id;int cpu = event->cpu;cpumask_t *mask; -struct coresight_device *sink; +struct coresight_device *sink =NULL ;struct etm_event_data *event_data =NULL ; event_data =alloc_event_data (cpu);
@@ -222,8 +222,6 @@ static void *etm_setup_aux(struct perf_event *event, void **pages,if (event->attr.config2) { id = (u32 )event->attr.config2; sink =coresight_get_sink_by_id (id); - }else { - sink =coresight_get_enabled_sink (true); } mask = &event_data->mask;
drivers/i2c/busses/i2c-designware-slave.c +19 -33
86 lines not on this page · raw message
drivers/i2c/busses/i2c-mt65xx.c +4 -4
@@ -475,6 +475,10 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c) {u16 control_reg; +writel (I2C_DMA_HARD_RST , i2c->pdmabase +OFFSET_RST ); +udelay (50 ); +writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); +mtk_i2c_writew (i2c,I2C_SOFT_RST ,OFFSET_SOFTRESET );/* Set ioconfig */
@@ -529,10 +533,6 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c)mtk_i2c_writew (i2c, control_reg,OFFSET_CONTROL );mtk_i2c_writew (i2c,I2C_DELAY_LEN ,OFFSET_DELAY_LEN ); - -writel (I2C_DMA_HARD_RST , i2c->pdmabase +OFFSET_RST ); -udelay (50 ); -writel (I2C_DMA_CLR_FLAG , i2c->pdmabase +OFFSET_RST ); }static const struct i2c_spec_values *mtk_i2c_get_spec (unsigned int speed)
drivers/i2c/busses/i2c-sh_mobile.c +66 -20
142 lines not on this page · raw message
drivers/infiniband/ulp/srpt/ib_srpt.c +8 -5
@@ -622,10 +622,11 @@ static int srpt_refresh_port(struct srpt_port *sport)/** * srpt_unregister_mad_agent - unregister MAD callback functions * @sdev: SRPT HCA pointer. +* #port_cnt: number of ports with registered MAD * * Note: It is safe to call this function more than once for the same device. */ -static void srpt_unregister_mad_agent (struct srpt_device *sdev) +static void srpt_unregister_mad_agent (struct srpt_device *sdev,int port_cnt) {struct ib_port_modify port_modify = { .clr_port_cap_mask =IB_PORT_DEVICE_MGMT_SUP ,
@@ -633,7 +634,7 @@ static void srpt_unregister_mad_agent(struct srpt_device *sdev)struct srpt_port *sport;int i; -for (i =1 ; i <= sdev->device->phys_port_cnt; i++) { +for (i =1 ; i <= port_cnt; i++) { sport = &sdev->port[i -1 ];WARN_ON (sport->port != i);if (sport->mad_agent) {
@@ -3185,7 +3186,8 @@ static int srpt_add_one(struct ib_device *device)if (ret) {pr_err ("MAD registration failed for %s-%d.\n" ,dev_name (&sdev->device->dev), i); - goto err_event; + i--; + goto err_port; } }
@@ -3197,7 +3199,8 @@ static int srpt_add_one(struct ib_device *device)pr_debug ("added %s.\n" ,dev_name (&device->dev));return 0 ; -err_event: +err_port: +srpt_unregister_mad_agent (sdev, i);ib_unregister_event_handler (&sdev->event_handler); err_cm:if (sdev->cm_id)
@@ -3221,7 +3224,7 @@ static void srpt_remove_one(struct ib_device *device, void *client_data)struct srpt_device *sdev = client_data;int i; -srpt_unregister_mad_agent (sdev); +srpt_unregister_mad_agent (sdev, sdev->device->phys_port_cnt);ib_unregister_event_handler (&sdev->event_handler);
drivers/iommu/amd/amd_iommu_types.h +5 -1
@@ -406,7 +406,11 @@ extern bool amd_iommu_np_cache;/* Only true if all IOMMUs support device IOTLBs */ extern bool amd_iommu_iotlb_sup; -#define MAX_IRQS_PER_TABLE 256 +/* +* AMD IOMMU hardware only support 512 IRTEs despite +* the architectural limitation of 2048 entries. +*/ +#define MAX_IRQS_PER_TABLE 512#define IRQ_TABLE_ALIGNMENT 128struct irq_remap_table {
drivers/iommu/intel/svm.c +7 -1
@@ -278,6 +278,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,struct intel_iommu *iommu =device_to_iommu (dev,NULL ,NULL );struct intel_svm_dev *sdev =NULL ;struct dmar_domain *dmar_domain; +struct device_domain_info *info;struct intel_svm *svm =NULL ;int ret =0 ;
@@ -302,6 +303,10 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,if (data->hpasid <=0 || data->hpasid >=PASID_MAX )return -EINVAL ; + info =get_domain_info (dev); +if (!info) +return -EINVAL ; + dmar_domain =to_dmar_domain (domain);mutex_lock (&pasid_mutex);
@@ -349,6 +354,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev, goto out; } sdev->dev = dev; + sdev->sid =PCI_DEVID (info->bus, info->devfn);/* Only count users if device has aux domains */ if (iommu_dev_feature_enabled (dev,IOMMU_DEV_FEAT_AUX ))
@@ -995,7 +1001,7 @@ static irqreturn_t prq_event_thread(int irq, void *d) resp.qw0 =QI_PGRP_PASID (req->pasid) |QI_PGRP_DID (req->rid) |QI_PGRP_PASID_P (req->pasid_present) | -QI_PGRP_PDP (req->pasid_present) | +QI_PGRP_PDP (req->priv_data_present) |QI_PGRP_RESP_CODE (result) |QI_PGRP_RESP_TYPE ; resp.qw1 = QI_PGRP_IDX(req->prg_index) |
drivers/irqchip/irq-sifive-plic.c +5 -5
@@ -99,7 +99,7 @@ static inline void plic_irq_toggle(const struct cpumask *mask, struct irq_data *d, int enable) { int cpu; -struct plic_priv *priv =irq_get_chip_data (d->irq); +struct plic_priv *priv =irq_data_get_irq_chip_data (d);writel (enable, priv->regs +PRIORITY_BASE + d->hwirq *PRIORITY_PER_ID );for_each_cpu (cpu, mask) {
@@ -115,7 +115,7 @@ static void plic_irq_unmask(struct irq_data *d) {struct cpumask amask;unsigned int cpu; -struct plic_priv *priv =irq_get_chip_data (d->irq); +struct plic_priv *priv =irq_data_get_irq_chip_data (d);cpumask_and (&amask, &priv->lmask, cpu_online_mask); cpu = cpumask_any_and(irq_data_get_affinity_mask(d),
@@ -127,7 +127,7 @@ static void plic_irq_unmask(struct irq_data *d)static void plic_irq_mask (struct irq_data *d) { -struct plic_priv *priv =irq_get_chip_data (d->irq); +struct plic_priv *priv =irq_data_get_irq_chip_data (d);plic_irq_toggle (&priv->lmask, d,0 ); }
@@ -138,7 +138,7 @@ static int plic_set_affinity(struct irq_data *d, {unsigned int cpu;struct cpumask amask; -struct plic_priv *priv =irq_get_chip_data (d->irq); +struct plic_priv *priv =irq_data_get_irq_chip_data (d);cpumask_and (&amask, &priv->lmask, mask_val);
@@ -151,7 +151,7 @@ static int plic_set_affinity(struct irq_data *d,return -EINVAL ;plic_irq_toggle (&priv->lmask, d,0 ); -plic_irq_toggle (cpumask_of (cpu), d,1 ); +plic_irq_toggle (cpumask_of (cpu), d, !irqd_irq_masked (d));irq_data_update_effective_affinity (d,cpumask_of (cpu));
drivers/mfd/sprd-sc27xx-spi.c +27 -1
@@ -189,7 +189,7 @@ static int sprd_pmic_probe(struct spi_device *spi) ddata->irqs[i].mask =BIT (i); ret =devm_regmap_add_irq_chip (&spi->dev, ddata->regmap, ddata->irq, -IRQF_ONESHOT |IRQF_NO_SUSPEND ,0 , +IRQF_ONESHOT ,0 , &ddata->irq_chip, &ddata->irq_data);if (ret) {dev_err (&spi->dev,"Failed to add PMIC irq chip %d\n" , ret);
@@ -202,9 +202,34 @@ static int sprd_pmic_probe(struct spi_device *spi)return ret; } +device_init_wakeup (&spi->dev, true);return 0 ; } +#ifdef CONFIG_PM_SLEEP +static int sprd_pmic_suspend (struct device *dev) +{ +struct sprd_pmic *ddata =dev_get_drvdata (dev); + +if (device_may_wakeup (dev)) +enable_irq_wake (ddata->irq); + +return 0 ; +} + +static int sprd_pmic_resume (struct device *dev) +{ +struct sprd_pmic *ddata =dev_get_drvdata (dev); + +if (device_may_wakeup (dev)) +disable_irq_wake (ddata->irq); + +return 0 ; +} +#endif + +static SIMPLE_DEV_PM_OPS(sprd_pmic_pm_ops, sprd_pmic_suspend, sprd_pmic_resume); +static const struct of_device_id sprd_pmic_match[] = { { .compatible ="sprd,sc2731" , .data = &sc2731_data }, {},
@@ -215,6 +240,7 @@ static struct spi_driver sprd_pmic_driver = { .driver = { .name = "sc27xx-pmic", .of_match_table = sprd_pmic_match, + .pm = &sprd_pmic_pm_ops, }, .probe = sprd_pmic_probe, };
drivers/misc/mei/client.h +2 -2
@@ -164,11 +164,11 @@ static inline u8 mei_cl_me_id(const struct mei_cl *cl)* * @cl: host client * -* Return: mtu +* Return: mtu or 0 if client is not connected */ static inline size_t mei_cl_mtu (const struct mei_cl *cl) { -return cl->me_cl->props.max_msg_length; +return cl->me_cl ? cl->me_cl->props.max_msg_length :0 ; }/**
drivers/mmc/host/renesas_sdhi_core.c +1 -0
@@ -997,6 +997,7 @@ int renesas_sdhi_remove(struct platform_device *pdev)tmio_mmc_host_remove (host);renesas_sdhi_clk_disable (host); +tmio_mmc_host_free (host);return 0 ; }
drivers/mmc/host/sdhci-of-esdhc.c +2 -0
@@ -1324,6 +1324,8 @@ static struct soc_device_attribute soc_fixup_sdhc_clkdivs[] = {static struct soc_device_attribute soc_unreliable_pulse_detection[] = { { .family ="QorIQ LX2160A" , .revision ="1.0" , }, + { .family ="QorIQ LX2160A" , .revision ="2.0" , }, + { .family ="QorIQ LS1028A" , .revision ="1.0" , }, { }, };
drivers/mtd/spi-nor/core.c +5 -3
@@ -3008,13 +3008,15 @@ static int spi_nor_set_addr_width(struct spi_nor *nor)/* already configured from SFDP */ }else if (nor->info->addr_width) { nor->addr_width = nor->info->addr_width; - }else if (nor->mtd.size >0x1000000 ) { -/* enable 4-byte addressing if the device exceeds 16MiB */ - nor->addr_width =4 ; }else { nor->addr_width =3 ; } +if (nor->addr_width ==3 && nor->mtd.size >0x1000000 ) { +/* enable 4-byte addressing if the device exceeds 16MiB */ + nor->addr_width =4 ; + } +if (nor->addr_width >SPI_NOR_MAX_ADDR_WIDTH ) {dev_dbg (nor->dev,"address width is too large: %u\n" , nor->addr_width);
drivers/net/can/dev.c +11 -3
@@ -486,9 +486,13 @@ __can_get_echo_skb(struct net_device *dev, unsigned int idx, u8 *len_ptr)*/ struct sk_buff *skb = priv->echo_skb[idx];struct canfd_frame *cf = (struct canfd_frame *)skb->data; -u8 len = cf->len; - *len_ptr = len; +/* get the real payload length for netdev statistics */ +if (cf->can_id &CAN_RTR_FLAG ) + *len_ptr =0 ; +else + *len_ptr = cf->len; + priv->echo_skb[idx] =NULL ;return skb;
@@ -512,7 +516,11 @@ unsigned int can_get_echo_skb(struct net_device *dev, unsigned int idx)if (!skb)return 0 ; -netif_rx (skb); +skb_get (skb); +if (netif_rx (skb) ==NET_RX_SUCCESS ) +dev_consume_skb_any (skb); +else +dev_kfree_skb_any (skb);return len; }
drivers/net/can/flexcan.c +3 -2
@@ -321,8 +321,7 @@ static const struct flexcan_devtype_data fsl_vf610_devtype_data = {static const struct flexcan_devtype_data fsl_ls1021a_r2_devtype_data = { .quirks =FLEXCAN_QUIRK_DISABLE_RXFG |FLEXCAN_QUIRK_ENABLE_EACEN_RRS | -FLEXCAN_QUIRK_DISABLE_MECR |FLEXCAN_QUIRK_BROKEN_PERR_STATE | -FLEXCAN_QUIRK_USE_OFF_TIMESTAMP , +FLEXCAN_QUIRK_BROKEN_PERR_STATE |FLEXCAN_QUIRK_USE_OFF_TIMESTAMP , };static const struct can_bittiming_const flexcan_bittiming_const = {
@@ -1696,6 +1695,8 @@ static int flexcan_remove(struct platform_device *pdev) {struct net_device *dev =platform_get_drvdata (pdev); +device_set_wakeup_enable (&pdev->dev, false); +device_set_wakeup_capable (&pdev->dev, false);unregister_flexcandev (dev);pm_runtime_disable (&pdev->dev);free_candev (dev);
drivers/net/can/peak_canfd/peak_canfd.c +8 -3
@@ -262,8 +262,7 @@ static int pucan_handle_can_rx(struct peak_canfd_priv *priv, cf_len =get_can_dlc (pucan_msg_get_dlc (msg));/* if this frame is an echo, */ -if ((rx_msg_flags &PUCAN_MSG_LOOPED_BACK ) && - !(rx_msg_flags &PUCAN_MSG_SELF_RECEIVE )) { +if (rx_msg_flags &PUCAN_MSG_LOOPED_BACK ) {unsigned long flags;spin_lock_irqsave (&priv->echo_lock, flags);
@@ -277,7 +276,13 @@ static int pucan_handle_can_rx(struct peak_canfd_priv *priv,netif_wake_queue (priv->ndev);spin_unlock_irqrestore (&priv->echo_lock, flags); -return 0 ; + +/* if this frame is only an echo, stop here. Otherwise, +* continue to push this application self-received frame into +* its own rx queue. +*/ +if (!(rx_msg_flags &PUCAN_MSG_SELF_RECEIVE )) +return 0 ; }/* otherwise, it should be pushed into rx fifo */
drivers/net/can/rx-offload.c +2 -2
@@ -245,7 +245,7 @@ int can_rx_offload_queue_sorted(struct can_rx_offload *offload,if (skb_queue_len (&offload->skb_queue) > offload->skb_queue_len_max) { -kfree_skb (skb); +dev_kfree_skb_any (skb);return -ENOBUFS ; }
@@ -290,7 +290,7 @@ int can_rx_offload_queue_tail(struct can_rx_offload *offload, {if (skb_queue_len (&offload->skb_queue) > offload->skb_queue_len_max) { -kfree_skb (skb); +dev_kfree_skb_any (skb);return -ENOBUFS ; }
drivers/net/can/ti_hecc.c +5 -3
@@ -950,7 +950,7 @@ static int ti_hecc_probe(struct platform_device *pdev) err =clk_prepare_enable (priv->clk);if (err) {dev_err (&pdev->dev,"clk_prepare_enable() failed\n" ); - goto probe_exit_clk; + goto probe_exit_release_clk; } priv->offload.mailbox_read = ti_hecc_mailbox_read;
@@ -959,7 +959,7 @@ static int ti_hecc_probe(struct platform_device *pdev) err =can_rx_offload_add_timestamp (ndev, &priv->offload);if (err) {dev_err (&pdev->dev,"can_rx_offload_add_timestamp() failed\n" ); - goto probe_exit_clk; + goto probe_exit_disable_clk; } err =register_candev (ndev);
@@ -977,7 +977,9 @@ static int ti_hecc_probe(struct platform_device *pdev) probe_exit_offload:can_rx_offload_del (&priv->offload); -probe_exit_clk: +probe_exit_disable_clk: +clk_disable_unprepare (priv->clk); +probe_exit_release_clk:clk_put (priv->clk); probe_exit_candev:free_candev (ndev);
drivers/net/can/usb/peak_usb/pcan_usb_core.c +46 -5
60 lines not on this page · raw message
drivers/net/can/usb/peak_usb/pcan_usb_fd.c +37 -11
90 lines not on this page · raw message
drivers/net/can/xilinx_can.c +3 -3
@@ -1391,7 +1391,7 @@ static int xcan_open(struct net_device *ndev)if (ret <0 ) {netdev_err (ndev,"%s: pm_runtime_get failed(%d)\n" , __func__, ret); -return ret; + goto err; } ret = request_irq(ndev->irq, xcan_interrupt, priv->irq_flags,
@@ -1475,6 +1475,7 @@ static int xcan_get_berr_counter(const struct net_device *ndev,if (ret <0 ) {netdev_err (ndev,"%s: pm_runtime_get failed(%d)\n" , __func__, ret); +pm_runtime_put (priv->dev);return ret; }
@@ -1789,7 +1790,7 @@ static int xcan_probe(struct platform_device *pdev)if (ret <0 ) {netdev_err (ndev,"%s: pm_runtime_get failed(%d)\n" , __func__, ret); - goto err_pmdisable; + goto err_disableclks; }if (priv->read_reg (priv,XCAN_SR_OFFSET ) !=XCAN_SR_CONFIG_MASK ) {
@@ -1824,7 +1825,6 @@ static int xcan_probe(struct platform_device *pdev) err_disableclks:pm_runtime_put (priv->dev); -err_pmdisable:pm_runtime_disable (&pdev->dev); err_free:free_candev (ndev);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +24 -2
@@ -2712,6 +2712,10 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg)spin_unlock_bh (&vsi->mac_filter_hash_lock); goto error_param; } +if (is_valid_ether_addr (al->list[i].addr) && +is_zero_ether_addr (vf->default_lan_addr.addr)) +ether_addr_copy (vf->default_lan_addr.addr, + al->list[i].addr); } }spin_unlock_bh (&vsi->mac_filter_hash_lock);
@@ -2739,6 +2743,7 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) {struct virtchnl_ether_addr_list *al = (struct virtchnl_ether_addr_list *)msg; +bool was_unimac_deleted = false;struct i40e_pf *pf = vf->pf;struct i40e_vsi *vsi =NULL ;i40e_status ret =0 ;
@@ -2758,6 +2763,8 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) ret =I40E_ERR_INVALID_MAC_ADDR ; goto error_param; } +if (ether_addr_equal (al->list[i].addr, vf->default_lan_addr.addr)) + was_unimac_deleted = true; } vsi = pf->vsi[vf->lan_vsi_idx];
@@ -2778,10 +2785,25 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg)dev_err (&pf->pdev->dev,"Unable to program VF %d MAC filters, error %d\n" , vf->vf_id, ret); +if (vf->trusted && was_unimac_deleted) { +struct i40e_mac_filter *f; +struct hlist_node *h; +u8 *macaddr =NULL ; +int bkt; + +/* set last unicast mac address as default */ +spin_lock_bh (&vsi->mac_filter_hash_lock); +hash_for_each_safe (vsi->mac_filter_hash, bkt, h, f, hlist) { +if (is_valid_ether_addr (f->macaddr)) + macaddr = f->macaddr; + } +if (macaddr) +ether_addr_copy (vf->default_lan_addr.addr, macaddr); +spin_unlock_bh (&vsi->mac_filter_hash_lock); + } error_param:/* send the response to the VF */ -return i40e_vc_send_resp_to_vf (vf,VIRTCHNL_OP_DEL_ETH_ADDR , - ret); +return i40e_vc_send_resp_to_vf (vf,VIRTCHNL_OP_DEL_ETH_ADDR , ret); }/**
drivers/net/ethernet/intel/igc/igc_main.c +8 -6
@@ -3890,21 +3890,23 @@ static int igc_change_mtu(struct net_device *netdev, int new_mtu) }/** -* igc_get_stats - Get System Network Statistics +* igc_get_stats64 - Get System Network Statistics * @netdev: network interface device structure +* @stats: rtnl_link_stats64 pointer * * Returns the address of the device statistics structure. * The statistics are updated here and also from the timer callback. */ -static struct net_device_stats *igc_get_stats (struct net_device *netdev) +static void igc_get_stats64 (struct net_device *netdev, +struct rtnl_link_stats64 *stats) {struct igc_adapter *adapter =netdev_priv (netdev); +spin_lock (&adapter->stats64_lock);if (!test_bit (__IGC_RESETTING, &adapter->state))igc_update_stats (adapter); - -/* only return the current stats */ -return &netdev->stats; +memcpy (stats, &adapter->stats64,sizeof (*stats)); +spin_unlock (&adapter->stats64_lock); } static netdev_features_t igc_fix_features(struct net_device *netdev,
@@ -4833,7 +4835,7 @@ static const struct net_device_ops igc_netdev_ops = { .ndo_set_rx_mode = igc_set_rx_mode, .ndo_set_mac_address = igc_set_mac, .ndo_change_mtu = igc_change_mtu, - .ndo_get_stats = igc_get_stats, + .ndo_get_stats64 = igc_get_stats64, .ndo_fix_features = igc_fix_features, .ndo_set_features = igc_set_features, .ndo_features_check = igc_features_check,
drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +5 -1
@@ -107,12 +107,16 @@ void mlx5e_rep_update_flows(struct mlx5e_priv *priv,mlx5e_tc_encap_flows_del (priv, e, &flow_list);if (neigh_connected && !(e->flags &MLX5_ENCAP_ENTRY_VALID )) { +struct net_device *route_dev; +ether_addr_copy (e->h_dest, ha);ether_addr_copy (eth->h_dest, ha);/* Update the encap source mac, in case that we delete * the flows when encap source mac changed. */ -ether_addr_copy (eth->h_source, e->route_dev->dev_addr); + route_dev =__dev_get_by_index (dev_net (priv->netdev), e->route_dev_ifindex); +if (route_dev) +ether_addr_copy (eth->h_source, route_dev->dev_addr);mlx5e_tc_encap_flows_add (priv, e, &flow_list); }
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +46 -26
161 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +2 -2
@@ -122,9 +122,9 @@ void mlx5e_activate_xsk(struct mlx5e_channel *c)set_bit (MLX5E_RQ_STATE_ENABLED , &c->xskrq.state);/* TX queue is created active. */ -spin_lock (&c->async_icosq_lock); +spin_lock_bh (&c->async_icosq_lock);mlx5e_trigger_irq (&c->async_icosq); -spin_unlock (&c->async_icosq_lock); +spin_unlock_bh (&c->async_icosq_lock); }void mlx5e_deactivate_xsk (struct mlx5e_channel *c)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c +2 -2
@@ -36,9 +36,9 @@ int mlx5e_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags)if (test_and_set_bit (MLX5E_SQ_STATE_PENDING_XSK_TX , &c->async_icosq.state))return 0 ; -spin_lock (&c->async_icosq_lock); +spin_lock_bh (&c->async_icosq_lock);mlx5e_trigger_irq (&c->async_icosq); -spin_unlock (&c->async_icosq_lock); +spin_unlock_bh (&c->async_icosq_lock); }return 0 ;
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c +7 -7
@@ -188,7 +188,7 @@ static int post_rx_param_wqes(struct mlx5e_channel *c, err =0 ; sq = &c->async_icosq; -spin_lock (&c->async_icosq_lock); +spin_lock_bh (&c->async_icosq_lock); cseg =post_static_params (sq, priv_rx);if (IS_ERR (cseg))
@@ -199,7 +199,7 @@ static int post_rx_param_wqes(struct mlx5e_channel *c,mlx5e_notify_hw (&sq->wq, sq->pc, sq->uar_map, cseg); unlock: -spin_unlock (&c->async_icosq_lock); +spin_unlock_bh (&c->async_icosq_lock);return err;
@@ -265,10 +265,10 @@ resync_post_get_progress_params(struct mlx5e_icosq *sq,BUILD_BUG_ON (MLX5E_KTLS_GET_PROGRESS_WQEBBS !=1 ); -spin_lock (&sq->channel->async_icosq_lock); +spin_lock_bh (&sq->channel->async_icosq_lock);if (unlikely (!mlx5e_wqc_has_room_for (&sq->wq, sq->cc, sq->pc,1 ))) { -spin_unlock (&sq->channel->async_icosq_lock); +spin_unlock_bh (&sq->channel->async_icosq_lock); err = -ENOSPC ; goto err_dma_unmap; }
@@ -299,7 +299,7 @@ resync_post_get_progress_params(struct mlx5e_icosq *sq,icosq_fill_wi (sq, pi, &wi); sq->pc++;mlx5e_notify_hw (&sq->wq, sq->pc, sq->uar_map, cseg); -spin_unlock (&sq->channel->async_icosq_lock); +spin_unlock_bh (&sq->channel->async_icosq_lock);return 0 ;
@@ -360,7 +360,7 @@ static int resync_handle_seq_match(struct mlx5e_ktls_offload_context_rx *priv_rx err =0 ; sq = &c->async_icosq; -spin_lock (&c->async_icosq_lock); +spin_lock_bh (&c->async_icosq_lock); cseg =post_static_params (sq, priv_rx);if (IS_ERR (cseg)) {
@@ -372,7 +372,7 @@ static int resync_handle_seq_match(struct mlx5e_ktls_offload_context_rx *priv_rxmlx5e_notify_hw (&sq->wq, sq->pc, sq->uar_map, cseg); priv_rx->stats->tls_resync_res_ok++; unlock: -spin_unlock (&c->async_icosq_lock); +spin_unlock_bh (&c->async_icosq_lock);return err; }
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -0
@@ -5226,6 +5226,7 @@ static void mlx5e_nic_disable(struct mlx5e_priv *priv)mlx5e_disable_async_events (priv);
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rep.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c +17 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +10 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.h +0 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +5 -13
Lines of this file are not shown. View the raw message.
drivers/net/vrf.c +69 -23
92 lines not on this page · raw message
drivers/net/wireless/ath/ath9k/htc_drv_txrx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/nvme/host/core.c +66 -40
106 lines not on this page · raw message
drivers/pinctrl/aspeed/pinctrl-aspeed.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/pinctrl/intel/pinctrl-intel.c +30 -10
Lines of this file are not shown. View the raw message.
drivers/scsi/device_handler/scsi_dh_alua.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/usb/misc/apple-mfi-fastcharge.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/vfio/pci/vfio_pci_rdwr.c +35 -8
43 lines not on this page · raw message
drivers/vfio/platform/vfio_platform_common.c +1 -2
Lines of this file are not shown. View the raw message.
fs/ceph/mds_client.c +35 -15
50 lines not on this page · raw message
mm/hugetlb.c +5 -85
90 lines not on this page · raw message
mm/migrate.c +24 -20
44 lines not on this page · raw message
net/wireless/core.c +31 -26
57 lines not on this page · raw message
sound/pci/hda/hda_intel.c +35 -28
63 lines not on this page · raw message
sound/soc/intel/boards/kbl_rt5663_max98927.c +31 -8
Lines of this file are not shown. View the raw message.
sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c +25 -6
Lines of this file are not shown. View the raw message.
tools/perf/util/scripting-engines/trace-event-python.c +2 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/map_init.c new file +214 -0
214 lines not on this page · raw message
tools/testing/selftests/bpf/progs/test_map_init.c new file +33 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/clone3/clone3_cap_checkpoint_restore.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/core/close_range_test.c +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/filesystems/binderfs/binderfs_test.c +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_args_user.tc +4 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_open_test.c +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_poll_test.c +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/proc/proc-loadavg-001.c +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/proc/proc-self-syscall.c +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/proc/proc-uptime-002.c +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tc-tests/filters/tests.json +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/wireguard/netns.sh +8 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/wireguard/qemu/kernel.config +2 -0
Lines of this file are not shown. View the 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.