Linux 5.19.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.19.9 kernel.
All users of the 5.19 kernel series must upgrade.
The updated 5.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.19.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/arm64/silicon-errata.rst | 2 Documentation/hwmon/asus_ec_sensors.rst | 4 Makefile | 5 arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi | 21 arch/arm/boot/dts/at91-sama5d2_icp.dts | 21 arch/arm/boot/dts/at91-sama7g5ek.dts | 18 arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 12 arch/arm/boot/dts/imx6qdl-vicut1.dtsi | 2 arch/arm/mach-at91/pm.c | 36 arch/arm/mach-at91/pm_suspend.S | 24 arch/arm64/Kconfig | 19 arch/arm64/boot/dts/freescale/fsl-ls1028a-qds-65bb.dts | 1 arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 4 arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 11 arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts | 8 arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 4 arch/arm64/boot/dts/freescale/imx8mq-tqma8mq.dtsi | 1 arch/arm64/boot/dts/renesas/r8a779g0.dtsi | 2 arch/arm64/kernel/cpu_errata.c | 10 arch/arm64/kernel/cpufeature.c | 5 arch/arm64/kernel/hibernate.c | 5 arch/arm64/kernel/mte.c | 9 arch/arm64/kernel/topology.c | 32 arch/arm64/mm/copypage.c | 9 arch/arm64/mm/mteswap.c | 9 arch/arm64/tools/cpucaps | 1 arch/mips/loongson32/ls1c/board.c | 1 arch/parisc/include/asm/bitops.h | 8 arch/parisc/kernel/head.S | 43 arch/riscv/boot/dts/microchip/mpfs.dtsi | 2 arch/s390/kernel/nmi.c | 2 arch/s390/kernel/setup.c | 1 arch/x86/include/asm/sev.h | 2 arch/x86/kernel/sev.c | 2 block/partitions/core.c | 3 drivers/base/driver.c | 6 drivers/base/regmap/regmap-spi.c | 8 drivers/cpufreq/cpufreq.c | 2 drivers/firmware/efi/capsule-loader.c | 31 drivers/firmware/efi/libstub/Makefile | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 2 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 18 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 3 drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 2 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c | 18 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c | 17 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c | 14 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c | 14 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_smu.c | 14 drivers/gpu/drm/drm_gem.c | 17 drivers/gpu/drm/drm_internal.h | 4 drivers/gpu/drm/drm_prime.c | 20 drivers/gpu/drm/i915/display/intel_bios.c | 7 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 22 drivers/gpu/drm/i915/gt/intel_llc.c | 19 drivers/gpu/drm/i915/gt/intel_rps.c | 50 + drivers/gpu/drm/i915/gt/intel_rps.h | 2 drivers/gpu/drm/radeon/radeon_device.c | 3 drivers/hwmon/asus-ec-sensors.c | 446 ++++++---- drivers/hwmon/mr75203.c | 72 + drivers/hwmon/tps23861.c | 10 drivers/infiniband/core/cma.c | 4 drivers/infiniband/core/umem_odp.c | 2 drivers/infiniband/hw/hns/hns_roce_device.h | 1 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 3 drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 4 drivers/infiniband/hw/hns/hns_roce_main.c | 2 drivers/infiniband/hw/hns/hns_roce_qp.c | 7 drivers/infiniband/hw/irdma/uk.c | 4 drivers/infiniband/hw/irdma/utils.c | 15 drivers/infiniband/hw/irdma/verbs.c | 13 drivers/infiniband/hw/mlx5/mad.c | 6 drivers/infiniband/sw/siw/siw_qp_tx.c | 18 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 9 drivers/infiniband/ulp/rtrs/rtrs-srv.c | 14 drivers/infiniband/ulp/srp/ib_srp.c | 3 drivers/iommu/amd/iommu.c | 3 drivers/iommu/amd/iommu_v2.c | 2 drivers/iommu/intel/dmar.c | 7 drivers/iommu/intel/iommu.c | 55 - drivers/iommu/iommu.c | 21 drivers/iommu/virtio-iommu.c | 11 drivers/md/md.c | 1 drivers/net/bonding/bond_main.c | 55 - drivers/net/dsa/ocelot/felix_vsc9959.c | 162 ++- drivers/net/ethernet/intel/i40e/i40e.h | 14 drivers/net/ethernet/intel/i40e/i40e_client.c | 5 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 23 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 drivers/net/ethernet/intel/iavf/iavf_main.c | 14 drivers/net/ethernet/intel/ice/ice_base.c | 17 drivers/net/ethernet/intel/ice/ice_main.c | 10 drivers/net/ethernet/intel/ice/ice_xsk.c | 63 + drivers/net/ethernet/intel/ice/ice_xsk.h | 8 drivers/net/ethernet/mediatek/mtk_ppe.c | 2 drivers/net/ethernet/mediatek/mtk_ppe.h | 3 drivers/net/phy/meson-gxl.c | 8 drivers/net/phy/microchip_t1.c | 58 + drivers/net/wireless/intel/iwlegacy/4965-rs.c | 5 drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c | 2 drivers/net/wireless/microchip/wilc1000/netdev.h | 1 drivers/net/wireless/microchip/wilc1000/sdio.c | 39 drivers/net/wireless/microchip/wilc1000/wlan.c | 15 drivers/net/xen-netback/xenbus.c | 2 drivers/nvme/host/tcp.c | 7 drivers/nvme/target/core.c | 6 drivers/nvme/target/zns.c | 17 drivers/parisc/ccio-dma.c | 11 drivers/perf/riscv_pmu_sbi.c | 2 drivers/regulator/core.c | 9 drivers/scsi/lpfc/lpfc_init.c | 5 drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 2 drivers/scsi/qla2xxx/qla_target.c | 10 drivers/scsi/scsi_lib.c | 44 drivers/soc/bcm/brcmstb/pm/pm-arm.c | 50 - drivers/soc/fsl/Kconfig | 1 drivers/soc/imx/gpcv2.c | 5 drivers/soc/imx/imx8m-blk-ctrl.c | 1 drivers/spi/spi-bitbang-txrx.h | 6 drivers/tee/tee_shm.c | 1 drivers/thermal/intel/int340x_thermal/int3400_thermal.c | 9 drivers/ufs/core/ufshcd.c | 9 drivers/vfio/vfio_iommu_type1.c | 12 drivers/video/fbdev/chipsfb.c | 1 drivers/video/fbdev/core/fbsysfs.c | 4 drivers/video/fbdev/omap/omapfb_main.c | 4 fs/afs/flock.c | 2 fs/afs/fsclient.c | 2 fs/afs/internal.h | 3 fs/afs/rxrpc.c | 7 fs/afs/yfsclient.c | 3 fs/btrfs/ctree.h | 2 fs/btrfs/disk-io.c | 1 fs/btrfs/inode.c | 7 fs/btrfs/space-info.c | 2 fs/btrfs/volumes.c | 3 fs/btrfs/zoned.c | 99 +- fs/cifs/smb2file.c | 1 fs/cifs/smb2ops.c | 88 - fs/cifs/smb2pdu.c | 20 fs/cifs/smb2proto.h | 4 fs/debugfs/inode.c | 22 fs/erofs/fscache.c | 8 fs/erofs/internal.h | 29 fs/tracefs/inode.c | 31 include/kunit/test.h | 6 include/linux/buffer_head.h | 11 include/linux/debugfs.h | 6 include/linux/dmar.h | 4 include/linux/lsm_hook_defs.h | 1 include/linux/lsm_hooks.h | 3 include/linux/security.h | 5 include/linux/skbuff.h | 49 - include/linux/time64.h | 3 include/linux/udp.h | 1 include/net/bonding.h | 13 include/net/udp_tunnel.h | 4 include/soc/at91/sama7-ddr.h | 8 io_uring/io_uring.c | 5 kernel/cgroup/cgroup.c | 85 + kernel/cgroup/cpuset.c | 3 kernel/dma/swiotlb.c | 5 kernel/fork.c | 1 kernel/kprobes.c | 1 kernel/sched/debug.c | 2 kernel/trace/trace_events_trigger.c | 3 kernel/trace/trace_preemptirq.c | 4 mm/kmemleak.c | 8 net/bridge/br_netfilter_hooks.c | 2 net/bridge/br_netfilter_ipv6.c | 1 net/core/datagram.c | 2 net/core/skbuff.c | 5 net/ipv4/tcp.c | 2 net/ipv4/tcp_input.c | 25 net/ipv4/udp.c | 2 net/ipv4/udp_tunnel_core.c | 1 net/ipv6/addrconf.c | 8 net/ipv6/seg6.c | 5 net/ipv6/udp.c | 5 net/netfilter/nf_conntrack_irc.c | 5 net/netfilter/nf_conntrack_proto_tcp.c | 31 net/netfilter/nf_tables_api.c | 4 net/rxrpc/ar-internal.h | 1 net/rxrpc/local_object.c | 1 net/rxrpc/peer_event.c | 293 +++++- net/rxrpc/rxkad.c | 2 net/sched/sch_sfb.c | 13 net/sched/sch_taprio.c | 5 net/smc/smc_core.c | 1 net/smc/smc_core.h | 2 net/smc/smc_wr.c | 5 net/smc/smc_wr.h | 5 net/tipc/monitor.c | 2 security/security.c | 4 security/selinux/hooks.c | 24 security/selinux/include/classmap.h | 2 security/smack/smack_lsm.c | 32 sound/core/memalloc.c | 9 sound/core/oss/pcm_oss.c | 6 sound/drivers/aloop.c | 7 sound/pci/emu10k1/emupcm.c | 2 sound/pci/hda/hda_intel.c | 2 sound/soc/atmel/mchp-spdiftx.c | 10 sound/soc/codecs/cs42l42.c | 13 sound/soc/qcom/sm8250.c | 1 sound/soc/sof/Kconfig | 2 sound/usb/card.c | 2 sound/usb/endpoint.c | 25 sound/usb/endpoint.h | 6 sound/usb/pcm.c | 14 sound/usb/quirks.c | 2 sound/usb/stream.c | 9 tools/lib/perf/evlist.c | 50 + tools/objtool/check.c | 34 tools/perf/arch/x86/util/evlist.c | 7 tools/perf/builtin-record.c | 8 tools/perf/builtin-script.c | 3 tools/perf/builtin-stat.c | 11 tools/perf/dlfilters/dlfilter-show-cycles.c | 4 tools/perf/util/evlist.c | 9 tools/perf/util/evlist.h | 7 226 files changed, 2437 insertions(+), 969 deletions(-)
Adrian Hunter (3):
libperf evlist: Fix per-thread mmaps for multi-threaded targets perf dlfilter dlfilter-show-cycles: Fix types for print format perf record: Fix synthesis failure warnings
[email protected] (1):
wifi: wilc1000: fix DMA on stack objects
Alex Williamson (1):
vfio/type1: Unpin zero pages
Alexander Gordeev (1):
s390/boot: fix absolute zero lowcore corruption on boot
Alexander Stein (1):
arm64: dts: imx8mq-tqma8mq: Remove superfluous interrupt-names
Alexandru Gagniuc (1):
hwmon: (tps23861) fix byte order in resistance register
Andrejs Cainikovs (2):
arm64: dts: imx8mm-verdin: update CAN clock to 40MHz
arm64: dts: imx8mm-verdin: use level interrupt for mcp251xfd
Andrew Halaney (1):
regulator: core: Clean up on enable failure
Ard Biesheuvel (1):
efi: libstub: Disable struct randomization
Arun Ramadoss (1):
net: phy: lan87xx: change interrupt src of link_up to comm_ready
Bart Van Assche (2):
scsi: ufs: core: Reduce the power mode change timeout
nvmet: fix a use-after-free
Borislav Petkov (1):
x86/sev: Mark snp_abort() noreturn
Brian Bunker (1):
scsi: core: Allow the ALUA transitioning state enough time
Brian Norris (1):
tracefs: Only clobber mode/uid/gid on remount if asked
Candice Li (1):
drm/amdgpu: Check num_gfx_rings for gfx v9_0 rb setup.
Casey Schaufler (1):
Smack: Provide read control for io_uring_cmd
Chao Gao (1):
swiotlb: avoid potential left shift overflow
Chengchang Tang (1):
RDMA/hns: Fix supported page size
Chris Mi (1):
RDMA/mlx5: Set local port to one when accessing counters
Christian A. Ehrhardt (1):
kprobes: Prohibit probes in gate area
Claudiu Beznea (8):
ARM: at91: pm: fix self-refresh for sama7g5
ARM: at91: pm: fix DDR recalibration when resuming from backup and self-refresh
ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges
ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges
ARM: dts: at91: sama7g5ek: specify proper regulator output ranges
ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time
ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time
ASoC: mchp-spdiftx: remove references to mchp_i2s_caps
Conor Dooley (1):
riscv: dts: microchip: use an mpfs specific l2 compatible
Cristian Ciocaltea (1):
regmap: spi: Reserve space for register address/padding
Dan Carpenter (1):
tipc: fix shift wrapping bug in map_get()
David Howells (4):
smb3: missing inode locks in zero range
rxrpc: Fix ICMP/ICMP6 error handling
rxrpc: Fix an insufficiently large sglist in rxkad_verify_packet_2()
afs: Use the operation issue time instead of the reply time for callbacks
David Jander (1):
ARM: dts: imx6qdl-vicut1.dtsi: Fix node name backlight_led
David Leadbeater (1):
netfilter: nf_conntrack_irc: Fix forged IP logic
David Lebrun (1):
ipv6: sr: fix out-of-bounds read when setting HMAC data.
David Sloan (1):
md: Flush workqueue md_rdev_misc_wq in md_alloc()
Dennis Maisenbacher (1):
nvmet: fix mar and mor off-by-one errors
Deren Wu (1):
wifi: mt76: mt7921e: fix crash in chip reset fail
Dongxiang Ke (1):
ALSA: usb-audio: Fix an out-of-bounds bug in __snd_usb_parse_audio_interface()
Eliav Farber (5):
hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined
hwmon: (mr75203) update pvt->v_num and vm_num to the actual number of used sensors
hwmon: (mr75203) fix voltage equation for negative source input
hwmon: (mr75203) fix multi-channel voltage reading
hwmon: (mr75203) enable polling for all VM channels
Enzo Matsumiya (1):
cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl()
Eric Dumazet (1):
tcp: TX zerocopy should not sense pfmemalloc status
Eugene Shalygin (2):
hwmon: (asus-ec-sensors) add missing sensors for X570-I GAMING
hwmon: (asus-ec-sensors) autoload module via DMI data
Florian Westphal (1):
netfilter: conntrack: work around exceeded receive window
Gao Xiang (1):
erofs: fix pcluster use-after-free on UP platforms
Geert Uytterhoeven (1):
arm64: dts: renesas: r8a779g0: Fix HSCIF0 interrupt number
Greg Kroah-Hartman (5):
debugfs: add debugfs_lookup_and_remove() sched/debug: fix dentry leak in update_sched_domain_debugfs drm/amd/display: fix memory leak when using debugfs_lookup() driver core: fix driver_set_override() issue with empty strings Linux 5.19.9
Guixin Liu (1):
scsi: megaraid_sas: Fix double kfree()
Hangbin Liu (3):
bonding: use unspecified address if no available link local address
bonding: add all node mcast address when slave up
bonding: accept unsolicited NA message
Harsh Modi (1):
netfilter: br_netfilter: Drop dst references before setting.
Heiner Kallweit (1):
Revert "net: phy: meson-gxl: improve link-up behavior"
Helge Deller (2):
Revert "parisc: Show error if wrong 32/64-bit compiler is being used"
parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines
Hyunwoo Kim (1):
efi: capsule-loader: Fix use-after-free in efi_capsule_write
Ionela Voinescu (1):
arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly
Ivan Vecera (2):
i40e: Fix kernel crash during module removal
iavf: Detach device during reset task
Jack Wang (2):
RDMA/rtrs-clt: Use the right sg_cnt after ib_dma_map_sg RDMA/rtrs-srv: Pass the correct number of entries for dma mapped SGL
Jason Gunthorpe (1):
iommu: Fix false ownership failure on AMD systems with PASID activated
Jean-Philippe Brucker (1):
iommu/virtio: Fix interaction with VFIO
Jeffy Chen (1):
drm/gem: Fix GEM handle release errors
Jens Wiklander (1):
tee: fix compiler warning in tee_shm_register()
Johannes Thumshirn (1):
btrfs: zoned: fix mounting with conventional zones
John Sperbeck (1):
iommu/amd: use full 64-bit value in build_completion_wait()
Kan Liang (1):
perf evlist: Always use arch_evlist__add_default_attrs()
Lee, Chun-Yi (1):
thermal/int340x_thermal: handle data_vault when the value is ZERO_SIZE_PTR
Li Qiong (1):
parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources()
Liang He (1):
soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs
Linus Torvalds (1):
fs: only do a memory barrier for the first set_buffer_uptodate()
Linus Walleij (1):
RDMA/siw: Pass a pointer to virt_to_page()
Lorenzo Bianconi (2):
net: ethernet: mtk_eth_soc: fix typo in __mtk_foe_entry_clear
net: ethernet: mtk_eth_soc: check max allowed hash in mtk_ppe_check_skb
Lu Baolu (2):
iommu/vt-d: Fix possible recursive locking in intel_iommu_init() iommu/vt-d: Correctly calculate sagaw value of IOMMU
Luis Chamberlain (1):
lsm,io_uring: add LSM hooks for the new uring_cmd file op
Lukasz Luba (1):
cpufreq: check only freq_table in __resolve_freq()
Marcel Ziswiler (2):
arm64: dts: freescale: verdin-imx8mm: fix atmel_mxt_ts reset polarity
arm64: dts: freescale: verdin-imx8mp: fix atmel_mxt_ts reset polarity
Marco Felsch (3):
Revert "soc: imx: imx8m-blk-ctrl: set power device name"
ARM: dts: imx6qdl-kontron-samx6i: remove duplicated node
ARM: dts: imx6qdl-kontron-samx6i: fix spi-flash compatible
Marek Vasut (1):
soc: imx: gpcv2: Assert reset before ungating clock
Mark Brown (1):
arm64/bti: Disable in kernel BTI when cross section thunks are broken
Masahiro Yamada (1):
kbuild: disable header exports for UML in a straightforward way
Masami Hiramatsu (Google) (1):
tracing: Fix to check event_mutex is held while accessing trigger list
Mathew McBride (1):
soc: fsl: select FSL_GUTS driver for DPIO
Michael Carns (1):
hwmon: (asus-ec-sensors) add support for Maximus XI Hero
Michael Guralnik (1):
RDMA/cma: Fix arguments order in net device validation
Michal Swiatkowski (1):
ice: use bitmap_free instead of devm_kfree
Ming Lei (1):
block: don't add partitions if GD_SUPPRESS_PART_SCAN is set
Naohiro Aota (1):
btrfs: zoned: fix API misuse of zone finish waiting
Nathan Chancellor (1):
ASoC: mchp-spdiftx: Fix clang -Wbitfield-constant-conversion
Neal Cardwell (1):
tcp: fix early ETIMEDOUT after spurious non-SACK RTO
Pablo Neira Ayuso (1):
netfilter: nf_tables: clean up hook list when offload flags check fails
Pattara Teerapong (1):
ALSA: aloop: Fix random zeros in capture data when using jiffies timer
Paul Durrant (1):
xen-netback: only remove 'hotplug-status' when the vif is actually destroyed
Paul Moore (1):
selinux: implement the security_uring_cmd() LSM hook
Pavel Begunkov (2):
net: introduce __skb_fill_page_desc_noacc
io_uring: recycle kbuf recycle on tw requeue
Peng Fan (1):
arm64: dts: imx8mp-venice-gw74xx: fix sai2 pin settings
Peter Ujfalusi (2):
ASoC: SOF: Kconfig: Make IPC_FLOOD_TEST depend on SND_SOC_SOF
ASoC: SOF: Kconfig: Make IPC_MESSAGE_INJECTOR depend on SND_SOC_SOF
Philippe Schenker (1):
arm64: dts: verdin-imx8mm: add otg2 pd to usbphy
Przemyslaw Patynowski (3):
ice: Fix DMA mappings leak
i40e: Refactor tc mqprio checks
i40e: Fix ADQ rate limiting for PF
Qu Huang (1):
drm/amdgpu: mmVM_L2_CNTL3 register not initialized correctly
Qu Wenruo (1):
btrfs: fix the max chunk size and stripe length calculation
Richard Fitzgerald (1):
ASoC: cs42l42: Only report button state if there was a button interrupt
Robin Murphy (1):
spi: bitbang: Fix lsb-first Rx
Rodrigo Vivi (1):
drm/i915/slpc: Let's fix the PCODE min freq table setup for SLPC
Saaem Rizvi (2):
drm/amd/display: Add SMU logging code drm/amd/display: Removing assert statements for Linux
Sagi Grimberg (2):
nvme-tcp: fix UAF when detecting digest errors
nvme-tcp: fix regression that causes sporadic requests to time out
Sander Vanheule (1):
kunit: fix assert_type for comparison macros
Sasha Levin (1):
Revert "arm64: kasan: Revert "arm64: mte: reset the page tag in page->flags""
Sergey Matyukevich (1):
perf: RISC-V: fix access beyond allocated array
Shady Nawara (1):
hwmon: (asus-ec-sensors) add support for Strix Z690-a D4
Shigeru Yoshida (1):
fbdev: fbcon: Destroy mutex on freeing struct fb_info
Shin'ichiro Kawasaki (1):
btrfs: zoned: set pseudo max append zone limit in zone emulation mode
Shiraz Saleem (1):
RDMA/irdma: Fix drain SQ hang with no completion
Sindhu-Devale (4):
RDMA/irdma: Report the correct max cqes from query device RDMA/irdma: Return error on MR deregister CQP failure RDMA/irdma: Return correct WC error for bind operation failure RDMA/irdma: Report RNR NAK generation in device caps
Sreekanth Reddy (1):
scsi: mpt3sas: Fix use-after-free warning
Srinivas Kandagatla (1):
ASoC: qcom: sm8250: add missing module owner
Stanislaw Gruszka (1):
wifi: iwlegacy: 4965: corrected fix for potential off-by-one overflow in il4965_rs_fill_link_cmd()
Sun Ke (1):
erofs: fix error return code in erofs_fscache_{meta_,}read_folio
Takashi Iwai (6):
ALSA: pcm: oss: Fix race at SNDCTL_DSP_SYNC
ALSA: hda: Once again fix regression of page allocations with IOMMU
ALSA: usb-audio: Split endpoint setups for hw_params and prepare
ALSA: usb-audio: Clear fixed clock rate at closing EP
ALSA: usb-audio: Inform the delayed registration more properly
ALSA: usb-audio: Register card again for iface over delayed_register option
Tasos Sahanidis (1):
ALSA: emu10k1: Fix out of bounds access in snd_emu10k1_pcm_channel_alloc()
Tejun Heo (2):
cgroup: Elide write-locking threadgroup_rwsem when updating csses on an empty subtree
cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock
Tim Harvey (1):
arm64: dts: imx8mm-venice-gw7901: fix port/phy validation
Tim Huang (1):
drm/amdgpu: add sdma instance check for gfx11 CGCG
Toke Høiland-Jørgensen (2):
sch_sfb: Don't assume the skb is still around after enqueueing to child
sch_sfb: Also store skb len before calling child enqueue
Tony Battersby (1):
scsi: qla2xxx: Disable ATIO interrupt coalesce for quad port ISP27XX
Urs Schroffenegger (1):
hwmon: (asus-ec-sensors) add definitions for ROG ZENITH II EXTREME
Ville Syrjälä (2):
drm/i915/bios: Copy the whole MIPI sequence block drm/i915: Implement WaEdpLinkRateDataReload
Vladimir Oltean (6):
arm64: dts: ls1028a-qds-65bb: don't use in-band autoneg for 2500base-x
net: dsa: felix: disable cut-through forwarding for frames oversized for tc-taprio
net: dsa: felix: access QSYS_TAG_CONFIG under tas_lock in vsc9959_sched_speed_set
net: bonding: replace dev_trans_start() with the jiffies of the last ARP/NS time64.h: consolidate uses of PSEC_PER_NSEC
net: dsa: felix: tc-taprio intervals smaller than MTU should send at least one packet
Wenpeng Liang (1):
RDMA/hns: Fix wrong fixed value of qp->rq.wqe_shift
Yacan Liu (1):
net/smc: Fix possible access to freed memory in link clear
Yang Ling (1):
MIPS: loongson32: ls1c: Fix hang during startup
Yang Yingliang (2):
fbdev: chipsfb: Add missing pci_disable_device() in chipsfb_pci_init()
scsi: lpfc: Add missing destroy_workqueue() in error path
Yee Lee (1):
Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()"
YiPeng Chai (2):
drm/amdgpu: Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to psp_hw_fini drm/amdgpu: fix hive reference leak when adding xgmi device
Yipeng Zou (1):
tracing: hold caller_addr to hardirq_{enable,disable}_ip
Yishai Hadas (1):
IB/core: Fix a nested dead lock as part of ODP flow
Yixing Liu (1):
RDMA/hns: Remove the num_qpc_timer variable
Yu Zhe (1):
fbdev: omapfb: Fix tests for platform_get_irq() failure
Zhengjun Xing (2):
perf script: Fix Cannot print 'iregs' field for hybrid systems perf stat: Fix L2 Topdown metrics disappear for raw events
Zhenneng Li (1):
drm/radeon: add a force flush to delay work when radeon
lily (1):
net/core/skbuff: Check the return value of skb_copy_bits()
shaoyunl (1):
drm/amdgpu: Remove the additional kfd pre reset call for sriov
[email protected] (1):
RDMA/srp: Set scmnd->result only when scmnd is not NULL
Greg Kroah-Hartman
maintainerDocumentation/arm64/silicon-errata.rst +2 -0
@@ -52,6 +52,8 @@ stable kernels. | Allwinner | A64/R18 | UNKNOWN1 | SUN50I_ERRATUM_UNKNOWN1 | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #2457168 | ARM64_ERRATUM_2457168 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A510 | #2064142 | ARM64_ERRATUM_2064142 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A510 | #2038923 | ARM64_ERRATUM_2038923 |
Documentation/hwmon/asus_ec_sensors.rst +4 -0
@@ -13,12 +13,16 @@ Supported boards: * ROG CROSSHAIR VIII FORMULA * ROG CROSSHAIR VIII HERO * ROG CROSSHAIR VIII IMPACT + * ROG MAXIMUS XI HERO + * ROG MAXIMUS XI HERO (WI-FI) * ROG STRIX B550-E GAMING * ROG STRIX B550-I GAMING * ROG STRIX X570-E GAMING * ROG STRIX X570-E GAMING WIFI II * ROG STRIX X570-F GAMING * ROG STRIX X570-I GAMING + * ROG STRIX Z690-A GAMING WIFI D4 + * ROG ZENITH II EXTREME Authors: - Eugene Shalygin <[email protected]>
Makefile +2 -3
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 19 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Superb Owl
@@ -1286,8 +1286,7 @@ hdr-inst := -f $(srctree)/scripts/Makefile.headersinst obj PHONY += headers headers: $(version_h) scripts_unifdef uapi-asm-generic archheaders archscripts - $(if $(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/Kbuild),, \ - $(error Headers not exportable for the $(SRCARCH) architecture)) + $(if $(filter um, $(SRCARCH)), $(error Headers not exportable for UML)) $(Q)$(MAKE) $(hdr-inst)=include/uapi $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi
arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi +10 -11
@@ -76,8 +76,8 @@ mcp16502@5b { regulators { vdd_3v3: VDD_IO { regulator-name = "VDD_IO"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -95,8 +95,8 @@ regulator-state-mem { vddio_ddr: VDD_DDR { regulator-name = "VDD_DDR"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -118,8 +118,8 @@ regulator-state-mem { vdd_core: VDD_CORE { regulator-name = "VDD_CORE"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1250000>; + regulator-max-microvolt = <1250000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -160,8 +160,8 @@ regulator-state-mem { LDO1 { regulator-name = "LDO1"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-always-on; regulator-state-standby {
@@ -175,9 +175,8 @@ regulator-state-mem { LDO2 { regulator-name = "LDO2"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; - regulator-always-on; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; regulator-state-standby { regulator-on-in-suspend;
arch/arm/boot/dts/at91-sama5d2_icp.dts +10 -11
@@ -197,8 +197,8 @@ mcp16502@5b { regulators { vdd_io_reg: VDD_IO { regulator-name = "VDD_IO"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -216,8 +216,8 @@ regulator-state-mem { VDD_DDR { regulator-name = "VDD_DDR"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -235,8 +235,8 @@ regulator-state-mem { VDD_CORE { regulator-name = "VDD_CORE"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1250000>; + regulator-max-microvolt = <1250000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -258,7 +258,6 @@ VDD_OTHER { regulator-max-microvolt = <1850000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; - regulator-always-on; regulator-state-standby { regulator-on-in-suspend;
@@ -273,8 +272,8 @@ regulator-state-mem { LDO1 { regulator-name = "LDO1"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; regulator-always-on; regulator-state-standby {
@@ -288,8 +287,8 @@ regulator-state-mem { LDO2 { regulator-name = "LDO2"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-always-on; regulator-state-standby {
arch/arm/boot/dts/at91-sama7g5ek.dts +9 -9
@@ -244,8 +244,8 @@ mcp16502@5b { regulators { vdd_3v3: VDD_IO { regulator-name = "VDD_IO"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -264,8 +264,8 @@ regulator-state-mem { vddioddr: VDD_DDR { regulator-name = "VDD_DDR"; - regulator-min-microvolt = <1300000>; - regulator-max-microvolt = <1450000>; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <1350000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -285,8 +285,8 @@ regulator-state-mem { vddcore: VDD_CORE { regulator-name = "VDD_CORE"; - regulator-min-microvolt = <1100000>; - regulator-max-microvolt = <1850000>; + regulator-min-microvolt = <1150000>; + regulator-max-microvolt = <1150000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-always-on;
@@ -306,7 +306,7 @@ regulator-state-mem { vddcpu: VDD_OTHER { regulator-name = "VDD_OTHER"; regulator-min-microvolt = <1050000>; - regulator-max-microvolt = <1850000>; + regulator-max-microvolt = <1250000>; regulator-initial-mode = <2>; regulator-allowed-modes = <2>, <4>; regulator-ramp-delay = <3125>;
@@ -326,8 +326,8 @@ regulator-state-mem { vldo1: LDO1 { regulator-name = "LDO1"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <3700000>; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; regulator-always-on; regulator-state-standby {
arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi +1 -11
@@ -51,16 +51,6 @@ reg_3p3v_s0: regulator-3p3v-s0 { vin-supply = <®_3p3v_s5>; }; - reg_3p3v_s0: regulator-3p3v-s0 { - compatible = "regulator-fixed"; - regulator-name = "V_3V3_S0"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - regulator-boot-on; - vin-supply = <®_3p3v_s5>; - }; - reg_3p3v_s5: regulator-3p3v-s5 { compatible = "regulator-fixed"; regulator-name = "V_3V3_S5";
@@ -259,7 +249,7 @@ &ecspi4 { /* default boot source: workaround #1 for errata ERR006282 */ smarc_flash: flash@0 { - compatible = "winbond,w25q16dw", "jedec,spi-nor"; + compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <20000000>; };
arch/arm/boot/dts/imx6qdl-vicut1.dtsi +1 -1
@@ -28,7 +28,7 @@ backlight_lcd: backlight { enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>; }; - backlight_led: backlight_led { + backlight_led: backlight-led { compatible = "pwm-backlight"; pwms = <&pwm3 0 5000000 0>; brightness-levels = <0 16 64 255>;
arch/arm/mach-at91/pm.c +32 -4
@@ -541,9 +541,41 @@ extern u32 at91_pm_suspend_in_sram_sz;static int at91_suspend_finish (unsigned long val) { +unsigned char modified_gray_code[] = { +0x00 ,0x01 ,0x02 ,0x03 ,0x06 ,0x07 ,0x04 ,0x05 ,0x0c ,0x0d , +0x0e ,0x0f ,0x0a ,0x0b ,0x08 ,0x09 ,0x18 ,0x19 ,0x1a ,0x1b , +0x1e ,0x1f ,0x1c ,0x1d ,0x14 ,0x15 ,0x16 ,0x17 ,0x12 ,0x13 , +0x10 ,0x11 , + }; +unsigned int tmp, index;int i;if (soc_pm.data.mode ==AT91_PM_BACKUP && soc_pm.data.ramc_phy) { +/* +* Bootloader will perform DDR recalibration and will try to +* restore the ZQ0SR0 with the value saved here. But the +* calibration is buggy and restoring some values from ZQ0SR0 +* is forbidden and risky thus we need to provide processed +* values for these (modified gray code values). +*/ + tmp =readl (soc_pm.data.ramc_phy +DDR3PHY_ZQ0SR0 ); + +/* Store pull-down output impedance select. */ + index = (tmp >>DDR3PHY_ZQ0SR0_PDO_OFF ) &0x1f ; + soc_pm.bu->ddr_phy_calibration[0 ] = modified_gray_code[index]; + +/* Store pull-up output impedance select. */ + index = (tmp >>DDR3PHY_ZQ0SR0_PUO_OFF ) &0x1f ; + soc_pm.bu->ddr_phy_calibration[0 ] |= modified_gray_code[index]; + +/* Store pull-down on-die termination impedance select. */ + index = (tmp >>DDR3PHY_ZQ0SR0_PDODT_OFF ) &0x1f ; + soc_pm.bu->ddr_phy_calibration[0 ] |= modified_gray_code[index]; + +/* Store pull-up on-die termination impedance select. */ + index = (tmp >>DDR3PHY_ZQ0SRO_PUODT_OFF ) &0x1f ; + soc_pm.bu->ddr_phy_calibration[0 ] |= modified_gray_code[index]; +/* * The 1st 8 words of memory might get corrupted in the process * of DDR PHY recalibration; it is saved here in securam and it
@@ -1066,10 +1098,6 @@ static int __init at91_pm_backup_init(void)of_scan_flat_dt (at91_pm_backup_scan_memcs, &located);if (!located) goto securam_fail; - -/* DDR3PHY_ZQ0SR0 */ - soc_pm.bu->ddr_phy_calibration[0 ] =readl (soc_pm.data.ramc_phy + -0x188 ); }return 0 ;
arch/arm/mach-at91/pm_suspend.S +17 -7
@@ -172,9 +172,15 @@ sr_ena_2: /* Put DDR PHY's DLL in bypass mode for non-backup modes. */ cmp r7, #AT91_PM_BACKUP beq sr_ena_3 - ldr tmp1, [r3, #DDR3PHY_PIR] - orr tmp1, tmp1, #DDR3PHY_PIR_DLLBYP - str tmp1, [r3, #DDR3PHY_PIR] + + /* Disable DX DLLs. */ + ldr tmp1, [r3, #DDR3PHY_DX0DLLCR] + orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS + str tmp1, [r3, #DDR3PHY_DX0DLLCR] + + ldr tmp1, [r3, #DDR3PHY_DX1DLLCR] + orr tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS + str tmp1, [r3, #DDR3PHY_DX1DLLCR] sr_ena_3: /* Power down DDR PHY data receivers. */
@@ -221,10 +227,14 @@ sr_ena_3: bic tmp1, tmp1, #DDR3PHY_DSGCR_ODTPDD_ODT0 str tmp1, [r3, #DDR3PHY_DSGCR] - /* Take DDR PHY's DLL out of bypass mode. */ - ldr tmp1, [r3, #DDR3PHY_PIR] - bic tmp1, tmp1, #DDR3PHY_PIR_DLLBYP - str tmp1, [r3, #DDR3PHY_PIR] + /* Enable DX DLLs. */ + ldr tmp1, [r3, #DDR3PHY_DX0DLLCR] + bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS + str tmp1, [r3, #DDR3PHY_DX0DLLCR] + + ldr tmp1, [r3, #DDR3PHY_DX1DLLCR] + bic tmp1, tmp1, #DDR3PHY_DXDLLCR_DLLDIS + str tmp1, [r3, #DDR3PHY_DX1DLLCR] /* Enable quasi-dynamic programming. */ mov tmp1, #0
arch/arm64/Kconfig +19 -0
@@ -914,6 +914,23 @@ config ARM64_ERRATUM_1902691 If unsure, say Y. +config ARM64_ERRATUM_2457168 + bool "Cortex-A510: 2457168: workaround for AMEVCNTR01 incrementing incorrectly" + depends on ARM64_AMU_EXTN + default y + help + This option adds the workaround for ARM Cortex-A510 erratum 2457168. + + The AMU counter AMEVCNTR01 (constant counter) should increment at the same rate + as the system counter. On affected Cortex-A510 cores AMEVCNTR01 increments + incorrectly giving a significantly higher output value. + + Work around this problem by returning 0 when reading the affected counter in + key locations that results in disabling all users of this counter. This effect + is the same to firmware disabling affected counters. + + If unsure, say Y. + config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y
@@ -1867,6 +1884,8 @@ config ARM64_BTI_KERNEL depends on CC_HAS_BRANCH_PROT_PAC_RET_BTI # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94697 depends on !CC_IS_GCC || GCC_VERSION >= 100100 + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671 + depends on !CC_IS_GCC # https://github.com/llvm/llvm-project/commit/a88c722e687e6780dcd6a58718350dc76fcc4cc9 depends on !CC_IS_CLANG || CLANG_VERSION >= 120000 depends on (!FUNCTION_GRAPH_TRACER || DYNAMIC_FTRACE_WITH_REGS)
arch/arm64/boot/dts/freescale/fsl-ls1028a-qds-65bb.dts +0 -1
@@ -25,7 +25,6 @@ slot1_sgmii: ethernet-phy@2 { &enetc_port0 { phy-handle = <&slot1_sgmii>; phy-mode = "2500base-x"; - managed = "in-band-status"; status = "okay"; };
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts +4 -0
@@ -626,24 +626,28 @@ ports { lan1: port@0 { reg = <0>; label = "lan1"; + phy-mode = "internal"; local-mac-address = [00 00 00 00 00 00]; }; lan2: port@1 { reg = <1>; label = "lan2"; + phy-mode = "internal"; local-mac-address = [00 00 00 00 00 00]; }; lan3: port@2 { reg = <2>; label = "lan3"; + phy-mode = "internal"; local-mac-address = [00 00 00 00 00 00]; }; lan4: port@3 { reg = <3>; label = "lan4"; + phy-mode = "internal"; local-mac-address = [00 00 00 00 00 00]; };
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi +6 -5
@@ -32,10 +32,10 @@ backlight: backlight { }; /* Fixed clock dedicated to SPI CAN controller */ - clk20m: oscillator { + clk40m: oscillator { compatible = "fixed-clock"; #clock-cells = <0>; - clock-frequency = <20000000>; + clock-frequency = <40000000>; }; gpio-keys {
@@ -194,8 +194,8 @@ &ecspi3 { can1: can@0 { compatible = "microchip,mcp251xfd"; - clocks = <&clk20m>; - interrupts-extended = <&gpio1 6 IRQ_TYPE_EDGE_FALLING>; + clocks = <&clk40m>; + interrupts-extended = <&gpio1 6 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_can1_int>; reg = <0>;
@@ -595,7 +595,7 @@ atmel_mxt_ts: touch@4a { pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>; reg = <0x4a>; /* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */ - reset-gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>; status = "disabled"; };
@@ -737,6 +737,7 @@ &usbphynop1 { }; &usbphynop2 { + power-domains = <&pgc_otg2>; vcc-supply = <®_vdd_3v3>; };
arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx.dts +4 -4
@@ -770,10 +770,10 @@ MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09 0x110 pinctrl_sai2: sai2grp { fsl,pins = < - MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC - MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 - MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK - MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK + MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC 0xd6 + MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 0xd6 + MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK 0xd6 + MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK 0xd6 >; };
arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi +2 -2
@@ -620,7 +620,7 @@ atmel_mxt_ts_mezzanine: touch-mezzanine@4a { interrupts = <5 IRQ_TYPE_EDGE_FALLING>; reg = <0x4a>; /* Verdin GPIO_2 (SODIMM 208) */ - reset-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; status = "disabled"; }; };
@@ -697,7 +697,7 @@ atmel_mxt_ts: touch@4a { pinctrl-0 = <&pinctrl_gpio_9_dsi>, <&pinctrl_i2s_2_bclk_touch_reset>; reg = <0x4a>; /* Verdin I2S_2_BCLK (TOUCH_RESET#, SODIMM 42) */ - reset-gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; status = "disabled"; };
arch/arm64/boot/dts/freescale/imx8mq-tqma8mq.dtsi +0 -1
@@ -204,7 +204,6 @@ pcf85063: rtc@51 { reg = <0x51>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_rtc>; - interrupt-names = "irq"; interrupt-parent = <&gpio1>; interrupts = <1 IRQ_TYPE_EDGE_FALLING>; quartz-load-femtofarads = <7000>;
arch/arm64/boot/dts/renesas/r8a779g0.dtsi +1 -1
@@ -85,7 +85,7 @@ hscif0: serial@e6540000 { "renesas,rcar-gen4-hscif", "renesas,hscif"; reg = <0 0xe6540000 0 96>; - interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>; + interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cpg CPG_MOD 514>, <&cpg CPG_CORE R8A779G0_CLK_S0D3_PER>, <&scif_clk>;
arch/arm64/kernel/cpu_errata.c +10 -0
@@ -656,6 +656,16 @@ const struct arm64_cpu_capabilities arm64_errata[] = { ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2) },#endif +#ifdef CONFIG_ARM64_ERRATUM_2457168 + { + .desc = "ARM erratum 2457168", + .capability = ARM64_WORKAROUND_2457168, + .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE, + + /* Cortex-A510 r0p0-r1p1 */ + CAP_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1) + }, +#endif #ifdef CONFIG_ARM64_ERRATUM_2038923 { .desc = "ARM erratum 2038923",
arch/arm64/kernel/cpufeature.c +4 -1
@@ -1798,7 +1798,10 @@ static void cpu_amu_enable(struct arm64_cpu_capabilities const *cap)pr_info ("detected CPU%d: Activity Monitors Unit (AMU)\n" ,smp_processor_id ());cpumask_set_cpu (smp_processor_id (), &amu_cpus); -update_freq_counters_refs (); + +/* 0 reference values signal broken/disabled counters */ +if (!this_cpu_has_cap (ARM64_WORKAROUND_2457168 )) +update_freq_counters_refs (); } }
arch/arm64/kernel/hibernate.c +5 -0
@@ -300,6 +300,11 @@ static void swsusp_mte_restore_tags(void)unsigned long pfn = xa_state.xa_index;struct page *page =pfn_to_online_page (pfn); +/* +* It is not required to invoke page_kasan_tag_reset(page) +* at this point since the tags stored in page->flags are +* already restored. +*/ mte_restore_page_tags (page_address (page), tags);mte_free_tag_storage (tags);
arch/arm64/kernel/mte.c +9 -0
@@ -48,6 +48,15 @@ static void mte_sync_page_tags(struct page *page, pte_t old_pte,if (!pte_is_tagged)return ; +page_kasan_tag_reset (page); +/* +* We need smp_wmb() in between setting the flags and clearing the +* tags because if another thread reads page->flags and builds a +* tagged address out of it, there is an actual dependency to the +* memory access, but on the current thread we do not guarantee that +* the new page->flags are visible before the tags were updated. +*/ +smp_wmb ();mte_clear_page_tags (page_address (page)); }
arch/arm64/kernel/topology.c +30 -2
@@ -310,12 +310,25 @@ core_initcall(init_amu_fie);static void cpu_read_corecnt (void *val) { +/* +* A value of 0 can be returned if the current CPU does not support AMUs +* or if the counter is disabled for this CPU. A return value of 0 at +* counter read is properly handled as an error case by the users of the +* counter. +*/ *(u64 *)val =read_corecnt (); }static void cpu_read_constcnt (void *val) { - *(u64 *)val =read_constcnt (); +/* +* Return 0 if the current CPU is affected by erratum 2457168. A value +* of 0 is also returned if the current CPU does not support AMUs or if +* the counter is disabled. A return value of 0 at counter read is +* properly handled as an error case by the users of the counter. +*/ + *(u64 *)val =this_cpu_has_cap (ARM64_WORKAROUND_2457168 ) ? +0UL :read_constcnt (); } static inline
@@ -342,7 +355,22 @@ int counters_read_on_cpu(int cpu, smp_call_func_t func, u64 *val)*/ bool cpc_ffh_supported (void ) { -return freq_counters_valid (get_cpu_with_amu_feat ()); +int cpu =get_cpu_with_amu_feat (); + +/* +* FFH is considered supported if there is at least one present CPU that +* supports AMUs. Using FFH to read core and reference counters for CPUs +* that do not support AMUs, have counters disabled or that are affected +* by errata, will result in a return value of 0. +* +* This is done to allow any enabled and valid counters to be read +* through FFH, knowing that potentially returning 0 as counter value is +* properly handled by the users of these counters. +*/ +if ((cpu >= nr_cpu_ids) || !cpumask_test_cpu (cpu, cpu_present_mask)) +return false; + +return true; }int cpc_read_ffh (int cpu,struct cpc_reg *reg,u64 *val)
arch/arm64/mm/copypage.c +9 -0
@@ -23,6 +23,15 @@ void copy_highpage(struct page *to, struct page *from)if (system_supports_mte () &&test_bit (PG_mte_tagged, &from->flags)) {set_bit (PG_mte_tagged, &to->flags); +page_kasan_tag_reset (to); +/* +* We need smp_wmb() in between setting the flags and clearing the +* tags because if another thread reads page->flags and builds a +* tagged address out of it, there is an actual dependency to the +* memory access, but on the current thread we do not guarantee that +* the new page->flags are visible before the tags were updated. +*/ +smp_wmb ();mte_copy_page_tags (kto, kfrom); } }
arch/arm64/mm/mteswap.c +9 -0
@@ -53,6 +53,15 @@ bool mte_restore_tags(swp_entry_t entry, struct page *page)if (!tags)return false; +page_kasan_tag_reset (page); +/* +* We need smp_wmb() in between setting the flags and clearing the +* tags because if another thread reads page->flags and builds a +* tagged address out of it, there is an actual dependency to the +* memory access, but on the current thread we do not guarantee that +* the new page->flags are visible before the tags were updated. +*/ +smp_wmb ();mte_restore_page_tags (page_address (page), tags);return true;
arch/arm64/tools/cpucaps +1 -0
@@ -66,6 +66,7 @@ WORKAROUND_1902691 WORKAROUND_2038923 WORKAROUND_2064142 WORKAROUND_2077057 +WORKAROUND_2457168 WORKAROUND_TRBE_OVERWRITE_FILL_MODE WORKAROUND_TSB_FLUSH_FAILURE WORKAROUND_TRBE_WRITE_OUT_OF_RANGE
arch/mips/loongson32/ls1c/board.c +0 -1
@@ -15,7 +15,6 @@ static struct platform_device *ls1c_platform_devices[] __initdata = {static int __init ls1c_platform_init (void ) {ls1x_serial_set_uartclk (&ls1x_uart_pdev); -ls1x_rtc_set_extclk (&ls1x_rtc_pdev);return platform_add_devices (ls1c_platform_devices,ARRAY_SIZE (ls1c_platform_devices));
arch/parisc/include/asm/bitops.h +0 -8
@@ -12,14 +12,6 @@#include <asm/barrier.h> #include <linux/atomic.h> -/* compiler build environment sanity checks: */ -#if !defined(CONFIG_64BIT ) && defined(__LP64__) -#error "Please use 'ARCH=parisc' to build the 32-bit kernel." -#endif -#if defined(CONFIG_64BIT ) && !defined(__LP64__) -#error "Please use 'ARCH=parisc64' to build the 64-bit kernel." -#endif -/* See http://marc.theaimsgroup.com/?t=108826637900003 for discussion * on use of volatile and __*_bit() (set/clear/change): * *_bit() want use of volatile.
arch/parisc/kernel/head.S +42 -1
55 lines not on this page · raw message
arch/riscv/boot/dts/microchip/mpfs.dtsi +1 -1
@@ -161,7 +161,7 @@ soc { ranges; cctrllr: cache-controller@2010000 { - compatible = "sifive,fu540-c000-ccache", "cache"; + compatible = "microchip,mpfs-ccache", "sifive,fu540-c000-ccache", "cache"; reg = <0x0 0x2010000 0x0 0x1000>; cache-block-size = <64>; cache-level = <2>;
arch/s390/kernel/nmi.c +1 -1
@@ -63,7 +63,7 @@ static inline unsigned long nmi_get_mcesa_size(void)* structure. The structure is required for machine check happening * early in the boot process. */ -static struct mcesa boot_mcesa__initdata __aligned(MCESA_MAX_SIZE) ; +static struct mcesa boot_mcesa__aligned(MCESA_MAX_SIZE) ;void __init nmi_alloc_mcesa_early (u64 *mcesad) {
arch/s390/kernel/setup.c +1 -0
@@ -486,6 +486,7 @@ static void __init setup_lowcore_dat_off(void)put_abs_lowcore (restart_data, lc->restart_data);put_abs_lowcore (restart_source, lc->restart_source);put_abs_lowcore (restart_psw, lc->restart_psw); +put_abs_lowcore (mcesad, lc->mcesad); lc->spinlock_lockval =arch_spin_lockval (0 ); lc->spinlock_index =0 ;
arch/x86/include/asm/sev.h +1 -1
@@ -195,7 +195,7 @@ void snp_set_memory_shared(unsigned long vaddr, unsigned int npages);void snp_set_memory_private (unsigned long vaddr,unsigned int npages);void snp_set_wakeup_secondary_cpu (void );bool snp_init (struct boot_params *bp); -void snp_abort (void ); +void __init __noreturn snp_abort (void );int snp_issue_guest_request (u64 exit_code,struct snp_req_data *input,unsigned long *fw_err);#else static inline void sev_es_ist_enter (struct pt_regs *regs) { }
arch/x86/kernel/sev.c +1 -1
@@ -2112,7 +2112,7 @@ bool __init snp_init(struct boot_params *bp)return true; } -void __init snp_abort (void ) +void __init __noreturn snp_abort (void ) {sev_es_terminate (SEV_TERM_SET_GEN ,GHCB_SNP_UNSUPPORTED ); }
block/partitions/core.c +3 -0
@@ -597,6 +597,9 @@ static int blk_add_partitions(struct gendisk *disk)if (disk->flags &GENHD_FL_NO_PART )return 0 ; +if (test_bit (GD_SUPPRESS_PART_SCAN , &disk->state)) +return 0 ; + state =check_partition (disk);if (!state)return 0 ;
drivers/base/driver.c +6 -0
@@ -63,6 +63,12 @@ int driver_set_override(struct device *dev, const char **override,if (len >= (PAGE_SIZE -1 ))return -EINVAL ; +/* +* Compute the real length of the string in case userspace sends us a +* bunch of \0 characters like python likes to do. +*/ + len =strlen (s); +if (!len) {/* Empty string passed - clear override */ device_lock (dev);
drivers/base/regmap/regmap-spi.c +8 -0
@@ -113,6 +113,7 @@ static const struct regmap_bus *regmap_get_spi_bus(struct spi_device *spi, const struct regmap_config *config) {size_t max_size =spi_max_transfer_size (spi); +size_t max_msg_size, reg_reserve_size;struct regmap_bus *bus;if (max_size !=SIZE_MAX ) {
@@ -120,9 +121,16 @@ static const struct regmap_bus *regmap_get_spi_bus(struct spi_device *spi,if (!bus)return ERR_PTR (-ENOMEM ); + max_msg_size =spi_max_message_size (spi); + reg_reserve_size = config->reg_bits /BITS_PER_BYTE + + config->pad_bits /BITS_PER_BYTE ; +if (max_size + reg_reserve_size > max_msg_size) + max_size -= reg_reserve_size; + bus->free_on_exit = true; bus->max_raw_read = max_size; bus->max_raw_write = max_size; +return bus; }
drivers/cpufreq/cpufreq.c +1 -1
@@ -532,7 +532,7 @@ static unsigned int __resolve_freq(struct cpufreq_policy *policy, target_freq =clamp_val (target_freq, policy->min, policy->max); -if (!cpufreq_driver->target_index) +if (!policy->freq_table)return target_freq; idx =cpufreq_frequency_table_target (policy, target_freq, relation);
drivers/firmware/efi/capsule-loader.c +7 -24
@@ -242,29 +242,6 @@ static ssize_t efi_capsule_write(struct file *file, const char __user *buff,return ret; } -/** -* efi_capsule_flush - called by file close or file flush -* @file: file pointer -* @id: not used -* -* If a capsule is being partially uploaded then calling this function -* will be treated as upload termination and will free those completed -* buffer pages and -ECANCELED will be returned. -**/ -static int efi_capsule_flush (struct file *file,fl_owner_t id) -{ -int ret =0 ; -struct capsule_info *cap_info = file->private_data; - -if (cap_info->index >0 ) { -pr_err ("capsule upload not complete\n" ); -efi_free_all_buff_pages (cap_info); - ret = -ECANCELED ; - } - -return ret; -} -/** * efi_capsule_release - called by file close * @inode: not used
@@ -277,6 +254,13 @@ static int efi_capsule_release(struct inode *inode, struct file *file) {struct capsule_info *cap_info = file->private_data; +if (cap_info->index >0 && + (cap_info->header.headersize ==0 || + cap_info->count < cap_info->total_size)) { +pr_err ("capsule upload not complete\n" ); +efi_free_all_buff_pages (cap_info); + } +kfree (cap_info->pages);kfree (cap_info->phys);kfree (file->private_data);
@@ -324,7 +308,6 @@ static const struct file_operations efi_capsule_fops = { .owner = THIS_MODULE, .open = efi_capsule_open, .write = efi_capsule_write, - .flush = efi_capsule_flush, .release = efi_capsule_release, .llseek = no_llseek, };
drivers/firmware/efi/libstub/Makefile +7 -0
@@ -37,6 +37,13 @@ KBUILD_CFLAGS := $(cflags-y) -Os -DDISABLE_BRANCH_PROFILING \ $(call cc-option,-fno-addrsig) \ -D__DISABLE_EXPORTS +# +# struct randomization only makes sense for Linux internal types, which the EFI +# stub code never touches, so let's turn off struct randomization for the stub +# altogether +# +KBUILD_CFLAGS := $(filter-out $(RANDSTRUCT_CFLAGS), $(KBUILD_CFLAGS)) + # remove SCS flags from all objects in this directory KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_SCS), $(KBUILD_CFLAGS)) # disable LTO
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -2
@@ -2482,12 +2482,14 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev)if (!hive->reset_domain || !amdgpu_reset_get_reset_domain (hive->reset_domain)) { r = -ENOENT ; +amdgpu_put_xgmi_hive (hive); goto init_failed; }/* Drop the early temporary reset domain we created for device */ amdgpu_reset_put_reset_domain (adev->reset_domain); adev->reset_domain = hive->reset_domain; +amdgpu_put_xgmi_hive (hive); } }
@@ -4473,8 +4475,6 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev, retry:amdgpu_amdkfd_pre_reset (adev); -amdgpu_amdkfd_pre_reset (adev); -if (from_hypervisor) r =amdgpu_virt_request_full_gpu (adev, true);else
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +3 -0
@@ -2612,6 +2612,9 @@ static int psp_hw_fini(void *handle)psp_rap_terminate (psp);psp_dtm_terminate (psp);psp_hdcp_terminate (psp); + +if (adev->gmc.xgmi.num_physical_nodes >1 ) +psp_xgmi_terminate (psp); }psp_asd_terminate (psp);
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +1 -1
@@ -742,7 +742,7 @@ int amdgpu_xgmi_remove_device(struct amdgpu_device *adev)amdgpu_put_xgmi_hive (hive); } -return psp_xgmi_terminate (&adev->psp); +return 0 ; }static int amdgpu_xgmi_ras_late_init (struct amdgpu_device *adev,struct ras_common_if *ras_block)
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +12 -6
@@ -5090,9 +5090,12 @@ static void gfx_v11_0_update_coarse_grain_clock_gating(struct amdgpu_device *ade data =REG_SET_FIELD (data,SDMA0_RLC_CGCG_CTRL ,CGCG_INT_ENABLE ,1 );WREG32_SOC15 (GC ,0 , regSDMA0_RLC_CGCG_CTRL, data); - data =RREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL); - data =REG_SET_FIELD (data,SDMA1_RLC_CGCG_CTRL ,CGCG_INT_ENABLE ,1 ); -WREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL, data); +/* Some ASICs only have one SDMA instance, not need to configure SDMA1 */ +if (adev->sdma.num_instances >1 ) { + data =RREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL); + data =REG_SET_FIELD (data,SDMA1_RLC_CGCG_CTRL ,CGCG_INT_ENABLE ,1 ); +WREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL, data); + } }else {/* Program RLC_CGCG_CGLS_CTRL */ def = data =RREG32_SOC15 (GC ,0 , regRLC_CGCG_CGLS_CTRL);
@@ -5121,9 +5124,12 @@ static void gfx_v11_0_update_coarse_grain_clock_gating(struct amdgpu_device *ade data &= ~SDMA0_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK ;WREG32_SOC15 (GC ,0 , regSDMA0_RLC_CGCG_CTRL, data); - data =RREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL); - data &= ~SDMA1_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK ; -WREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL, data); +/* Some ASICs only have one SDMA instance, not need to configure SDMA1 */ +if (adev->sdma.num_instances >1 ) { + data =RREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL); + data &= ~SDMA1_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK ; +WREG32_SOC15 (GC ,0 , regSDMA1_RLC_CGCG_CTRL, data); + } } }
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -1
@@ -2587,7 +2587,8 @@ static void gfx_v9_0_constants_init(struct amdgpu_device *adev)gfx_v9_0_tiling_mode_table_init (adev); -gfx_v9_0_setup_rb (adev); +if (adev->gfx.num_gfx_rings) +gfx_v9_0_setup_rb (adev);gfx_v9_0_get_cu_info (adev, &adev->gfx.cu_info); adev->gfx.config.db_debug2 =RREG32_SOC15 (GC ,0 , mmDB_DEBUG2);
drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c +1 -0
@@ -176,6 +176,7 @@ static void mmhub_v1_0_init_cache_regs(struct amdgpu_device *adev) tmp =REG_SET_FIELD (tmp,VM_L2_CNTL2 ,INVALIDATE_L2_CACHE ,1 );WREG32_SOC15 (MMHUB ,0 , mmVM_L2_CNTL2, tmp); + tmp = mmVM_L2_CNTL3_DEFAULT;if (adev->gmc.translate_further) { tmp =REG_SET_FIELD (tmp,VM_L2_CNTL3 ,BANK_SELECT ,12 ); tmp = REG_SET_FIELD(tmp, VM_L2_CNTL3,
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +1 -1
@@ -3188,7 +3188,7 @@ void crtc_debugfs_init(struct drm_crtc *crtc) &crc_win_y_end_fops);debugfs_create_file_unsafe ("crc_win_update" ,0644 , dir, crtc, &crc_win_update_fops); - + dput(dir); }#endif /*
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.c +17 -1
@@ -41,6 +41,12 @@#define FN (reg_name, field) \ FD(reg_name##__##field) +#include "logger_types.h" +#undef DC_LOGGER +#define DC_LOGGER \ + CTX->logger +#define smu_print (str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } +#define VBIOSSMC_MSG_TestMessage 0x1#define VBIOSSMC_MSG_GetSmuVersion 0x2#define VBIOSSMC_MSG_PowerUpGfx 0x3
@@ -95,7 +101,13 @@ static int rn_vbios_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,uint32_t result; result =rn_smu_wait_for_response (clk_mgr,10 ,200000 ); -ASSERT (result == VBIOSSMC_Result_OK); + +if (result != VBIOSSMC_Result_OK) +smu_print ("SMU Response was not OK. SMU response after wait received is: %d\n" , result); + +if (result == VBIOSSMC_Status_BUSY) { +return -1 ; + }/* First clear response register */ REG_WRITE (MP1_SMN_C2PMSG_91 , VBIOSSMC_Status_BUSY);
@@ -176,6 +188,10 @@ int rn_vbios_smu_set_hard_min_dcfclk(struct clk_mgr_internal *clk_mgr, int reque VBIOSSMC_MSG_SetHardMinDcfclkByFreq, khz_to_mhz_ceil(requested_dcfclk_khz)); +#ifdef DBG +smu_print ("actual_dcfclk_set_mhz %d is set to : %d\n" , actual_dcfclk_set_mhz, actual_dcfclk_set_mhz *1000 ); +#endif +return actual_dcfclk_set_mhz *1000 ; }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/dcn301_smu.c +17 -0
@@ -41,6 +41,12 @@#define FN (reg_name, field) \ FD(reg_name##__##field) +#include "logger_types.h" +#undef DC_LOGGER +#define DC_LOGGER \ + CTX->logger +#define smu_print (str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } +#define VBIOSSMC_MSG_GetSmuVersion 0x2#define VBIOSSMC_MSG_SetDispclkFreq 0x4#define VBIOSSMC_MSG_SetDprefclkFreq 0x5
@@ -96,6 +102,13 @@ static int dcn301_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr, result =dcn301_smu_wait_for_response (clk_mgr,10 ,200000 ); +if (result != VBIOSSMC_Result_OK) +smu_print ("SMU Response was not OK. SMU response after wait received is: %d\n" , result); + +if (result == VBIOSSMC_Status_BUSY) { +return -1 ; + } +/* First clear response register */ REG_WRITE (MP1_SMN_C2PMSG_91 , VBIOSSMC_Status_BUSY);
@@ -167,6 +180,10 @@ int dcn301_smu_set_hard_min_dcfclk(struct clk_mgr_internal *clk_mgr, int request VBIOSSMC_MSG_SetHardMinDcfclkByFreq, khz_to_mhz_ceil(requested_dcfclk_khz)); +#ifdef DBG +smu_print ("actual_dcfclk_set_mhz %d is set to : %d\n" , actual_dcfclk_set_mhz, actual_dcfclk_set_mhz *1000 ); +#endif +return actual_dcfclk_set_mhz *1000 ; }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn31/dcn31_smu.c +13 -1
@@ -40,6 +40,12 @@#define FN (reg_name, field) \ FD(reg_name##__##field) +#include "logger_types.h" +#undef DC_LOGGER +#define DC_LOGGER \ + CTX->logger +#define smu_print (str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } +#define VBIOSSMC_MSG_TestMessage 0x1#define VBIOSSMC_MSG_GetSmuVersion 0x2#define VBIOSSMC_MSG_PowerUpGfx 0x3
@@ -102,7 +108,9 @@ static int dcn31_smu_send_msg_with_param(struct clk_mgr_internal *clk_mgr,uint32_t result; result =dcn31_smu_wait_for_response (clk_mgr,10 ,200000 ); -ASSERT (result == VBIOSSMC_Result_OK); + +if (result != VBIOSSMC_Result_OK) +smu_print ("SMU Response was not OK. SMU response after wait received is: %d\n" , result);if (result == VBIOSSMC_Status_BUSY) {return -1 ;
@@ -194,6 +202,10 @@ int dcn31_smu_set_hard_min_dcfclk(struct clk_mgr_internal *clk_mgr, int requeste VBIOSSMC_MSG_SetHardMinDcfclkByFreq, khz_to_mhz_ceil(requested_dcfclk_khz)); +#ifdef DBG +smu_print ("actual_dcfclk_set_mhz %d is set to : %d\n" , actual_dcfclk_set_mhz, actual_dcfclk_set_mhz *1000 ); +#endif +return actual_dcfclk_set_mhz *1000 ; }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c +13 -1
@@ -70,6 +70,12 @@ static const struct IP_BASE NBIO_BASE = { { { { 0x00000000, 0x00000014, 0x00000D#define REG_NBIO (reg_name) \ (NBIO_BASE.instance[0].segment[regBIF_BX_PF2_ ## reg_name ## _BASE_IDX] + regBIF_BX_PF2_ ## reg_name) +#include "logger_types.h" +#undef DC_LOGGER +#define DC_LOGGER \ + CTX->logger +#define smu_print (str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } +#define mmMP1_C2PMSG_3 0x3B1050C#define VBIOSSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team
@@ -130,7 +136,9 @@ static int dcn315_smu_send_msg_with_param(uint32_t result; result =dcn315_smu_wait_for_response (clk_mgr,10 ,200000 ); -ASSERT (result == VBIOSSMC_Result_OK); + +if (result != VBIOSSMC_Result_OK) +smu_print ("SMU Response was not OK. SMU response after wait received is: %d\n" , result);if (result == VBIOSSMC_Status_BUSY) {return -1 ;
@@ -197,6 +205,10 @@ int dcn315_smu_set_hard_min_dcfclk(struct clk_mgr_internal *clk_mgr, int request VBIOSSMC_MSG_SetHardMinDcfclkByFreq, khz_to_mhz_ceil(requested_dcfclk_khz)); +#ifdef DBG +smu_print ("actual_dcfclk_set_mhz %d is set to : %d\n" , actual_dcfclk_set_mhz, actual_dcfclk_set_mhz *1000 ); +#endif +return actual_dcfclk_set_mhz *1000 ; }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn316/dcn316_smu.c +13 -1
@@ -58,6 +58,12 @@ static const struct IP_BASE MP0_BASE = { { { { 0x00016000, 0x00DC0000, 0x00E0000#define FN (reg_name, field) \ FD(reg_name##__##field) +#include "logger_types.h" +#undef DC_LOGGER +#define DC_LOGGER \ + CTX->logger +#define smu_print (str, ...) {DC_LOG_SMU(str, ##__VA_ARGS__); } +#define VBIOSSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team#define VBIOSSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version#define VBIOSSMC_MSG_Spare0 0x03 ///< Spare0
@@ -118,7 +124,9 @@ static int dcn316_smu_send_msg_with_param(uint32_t result; result =dcn316_smu_wait_for_response (clk_mgr,10 ,200000 ); -ASSERT (result == VBIOSSMC_Result_OK); + +if (result != VBIOSSMC_Result_OK) +smu_print ("SMU Response was not OK. SMU response after wait received is: %d\n" , result);if (result == VBIOSSMC_Status_BUSY) {return -1 ;
@@ -183,6 +191,10 @@ int dcn316_smu_set_hard_min_dcfclk(struct clk_mgr_internal *clk_mgr, int request VBIOSSMC_MSG_SetHardMinDcfclkByFreq, khz_to_mhz_ceil(requested_dcfclk_khz)); +#ifdef DBG +smu_print ("actual_dcfclk_set_mhz %d is set to : %d\n" , actual_dcfclk_set_mhz, actual_dcfclk_set_mhz *1000 ); +#endif +return actual_dcfclk_set_mhz *1000 ; }
drivers/gpu/drm/drm_gem.c +1 -16
@@ -168,21 +168,6 @@ void drm_gem_private_object_init(struct drm_device *dev, }EXPORT_SYMBOL (drm_gem_private_object_init); -static void -drm_gem_remove_prime_handles (struct drm_gem_object *obj,struct drm_file *filp) -{ -/* -* Note: obj->dma_buf can't disappear as long as we still hold a -* handle reference in obj->handle_count. -*/ -mutex_lock (&filp->prime.lock); -if (obj->dma_buf) { -drm_prime_remove_buf_handle_locked (&filp->prime, - obj->dma_buf); - } -mutex_unlock (&filp->prime.lock); -} -/** * drm_gem_object_handle_free - release resources bound to userspace handles * @obj: GEM object to clean up.
@@ -253,7 +238,7 @@ drm_gem_object_release_handle(int id, void *ptr, void *data)if (obj->funcs->close) obj->funcs->close (obj, file_priv); -drm_gem_remove_prime_handles (obj, file_priv); +drm_prime_remove_buf_handle (&file_priv->prime, id);drm_vma_node_revoke (&obj->vma_node, file_priv);drm_gem_object_handle_put_unlocked (obj);
drivers/gpu/drm/drm_internal.h +2 -2
@@ -74,8 +74,8 @@ int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,void drm_prime_init_file_private (struct drm_prime_file_private *prime_fpriv);void drm_prime_destroy_file_private (struct drm_prime_file_private *prime_fpriv); -void drm_prime_remove_buf_handle_locked (struct drm_prime_file_private *prime_fpriv, -struct dma_buf *dma_buf); +void drm_prime_remove_buf_handle (struct drm_prime_file_private *prime_fpriv, +uint32_t handle);/* drm_drv.c */ struct drm_minor *drm_minor_acquire (unsigned int minor_id);
drivers/gpu/drm/drm_prime.c +12 -8
@@ -190,29 +190,33 @@ static int drm_prime_lookup_buf_handle(struct drm_prime_file_private *prime_fprireturn -ENOENT ; } -void drm_prime_remove_buf_handle_locked (struct drm_prime_file_private *prime_fpriv, -struct dma_buf *dma_buf) +void drm_prime_remove_buf_handle (struct drm_prime_file_private *prime_fpriv, +uint32_t handle) {struct rb_node *rb; - rb = prime_fpriv->dmabufs.rb_node; +mutex_lock (&prime_fpriv->lock); + + rb = prime_fpriv->handles.rb_node;while (rb) {struct drm_prime_member *member; - member = rb_entry(rb, struct drm_prime_member, dmabuf_rb); -if (member->dma_buf == dma_buf) { + member = rb_entry(rb, struct drm_prime_member, handle_rb); +if (member->handle == handle) {rb_erase (&member->handle_rb, &prime_fpriv->handles);rb_erase (&member->dmabuf_rb, &prime_fpriv->dmabufs); -dma_buf_put (dma_buf); +dma_buf_put (member->dma_buf);kfree (member); -return ; - }else if (member->dma_buf < dma_buf) { +break ; + }else if (member->handle < handle) { rb = rb->rb_right; }else { rb = rb->rb_left; } } + +mutex_unlock (&prime_fpriv->lock); }void drm_prime_init_file_private (struct drm_prime_file_private *prime_fpriv)
drivers/gpu/drm/i915/display/intel_bios.c +7 -0
@@ -478,6 +478,13 @@ init_bdb_block(struct drm_i915_private *i915, block_size =get_blocksize (block); +/* +* Version number and new block size are considered +* part of the header for MIPI sequenece block v3+. +*/ +if (section_id ==BDB_MIPI_SEQUENCE && *(const u8 *)block >=3 ) + block_size +=5 ; + entry =kzalloc (struct_size (entry, data,max (min_size, block_size) +3 ),GFP_KERNEL );if (!entry) {
drivers/gpu/drm/i915/display/intel_dp_link_training.c +22 -0
@@ -671,6 +671,28 @@ intel_dp_prepare_link_train(struct intel_dp *intel_dp,intel_dp_compute_rate (intel_dp, crtc_state->port_clock, &link_bw, &rate_select); +/* +* WaEdpLinkRateDataReload +* +* Parade PS8461E MUX (used on varius TGL+ laptops) needs +* to snoop the link rates reported by the sink when we +* use LINK_RATE_SET in order to operate in jitter cleaning +* mode (as opposed to redriver mode). Unfortunately it +* loses track of the snooped link rates when powered down, +* so we need to make it re-snoop often. Without this high +* link rates are not stable. +*/ +if (!link_bw) { +struct intel_connector *connector = intel_dp->attached_connector; +__le16 sink_rates[DP_MAX_SUPPORTED_RATES ]; + +drm_dbg_kms (&i915->drm,"[CONNECTOR:%d:%s] Reloading eDP link rates\n" , + connector->base.base.id, connector->base.name); + +drm_dp_dpcd_read (&intel_dp->aux,DP_SUPPORTED_LINK_RATES , + sink_rates,sizeof (sink_rates)); + } +if (link_bw) drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] Using LINK_BW_SET value %02x\n",
drivers/gpu/drm/i915/gt/intel_llc.c +9 -10
@@ -12,6 +12,7 @@#include "intel_llc.h" #include "intel_mchbar_regs.h" #include "intel_pcode.h" +#include "intel_rps.h" struct ia_constants {unsigned int min_gpu_freq;
@@ -55,9 +56,6 @@ static bool get_ia_constants(struct intel_llc *llc,if (!HAS_LLC (i915) ||IS_DGFX (i915))return false; -if (rps->max_freq <= rps->min_freq) -return false; - consts->max_ia_freq =cpu_max_MHz (); consts->min_ring_freq =
@@ -65,13 +63,8 @@ static bool get_ia_constants(struct intel_llc *llc,/* convert DDR frequency from units of 266.6MHz to bandwidth */ consts->min_ring_freq =mult_frac (consts->min_ring_freq,8 ,3 ); - consts->min_gpu_freq = rps->min_freq; - consts->max_gpu_freq = rps->max_freq; -if (GRAPHICS_VER (i915) >=9 ) { -/* Convert GT frequency to 50 HZ units */ - consts->min_gpu_freq /=GEN9_FREQ_SCALER ; - consts->max_gpu_freq /=GEN9_FREQ_SCALER ; - } + consts->min_gpu_freq =intel_rps_get_min_raw_freq (rps); + consts->max_gpu_freq =intel_rps_get_max_raw_freq (rps);return true; }
@@ -131,6 +124,12 @@ static void gen6_update_ring_freq(struct intel_llc *llc)if (!get_ia_constants (llc, &consts))return ; +/* +* Although this is unlikely on any platform during initialization, +* let's ensure we don't get accidentally into infinite loop +*/ +if (consts.max_gpu_freq <= consts.min_gpu_freq) +return ;/* * For each potential GPU frequency, load a ring frequency we'd like * to use for memory access. We do this by specifying the IA frequency
drivers/gpu/drm/i915/gt/intel_rps.c +50 -0
62 lines not on this page · raw message
drivers/gpu/drm/i915/gt/intel_rps.h +2 -0
@@ -37,8 +37,10 @@ u32 intel_rps_get_cagf(struct intel_rps *rps, u32 rpstat1);u32 intel_rps_read_actual_frequency (struct intel_rps *rps);u32 intel_rps_get_requested_frequency (struct intel_rps *rps);u32 intel_rps_get_min_frequency (struct intel_rps *rps); +u32 intel_rps_get_min_raw_freq (struct intel_rps *rps);int intel_rps_set_min_frequency (struct intel_rps *rps,u32 val);u32 intel_rps_get_max_frequency (struct intel_rps *rps); +u32 intel_rps_get_max_raw_freq (struct intel_rps *rps);int intel_rps_set_max_frequency (struct intel_rps *rps,u32 val);u32 intel_rps_get_rp0_frequency (struct intel_rps *rps);u32 intel_rps_get_rp1_frequency (struct intel_rps *rps);
drivers/gpu/drm/radeon/radeon_device.c +3 -0
@@ -1604,6 +1604,9 @@ int radeon_suspend_kms(struct drm_device *dev, bool suspend,if (r) {/* delay GPU reset to resume */ radeon_fence_driver_force_completion (rdev, i); + }else { +/* finish executing delayed work */ +flush_delayed_work (&rdev->fence_drv[i].lockup_work); } }
drivers/hwmon/asus-ec-sensors.c +292 -154
546 lines not on this page · raw message
drivers/hwmon/mr75203.c +50 -22
151 lines not on this page · raw message
drivers/hwmon/tps23861.c +6 -4
@@ -489,18 +489,20 @@ static char *tps23861_port_poe_plus_status(struct tps23861_data *data, int port)static int tps23861_port_resistance (struct tps23861_data *data,int port) { -u16 regval; +unsigned int raw_val; +__le16 regval;regmap_bulk_read (data->regmap,PORT_1_RESISTANCE_LSB +PORT_N_RESISTANCE_LSB_OFFSET * (port -1 ), ®val,2 ); -switch (FIELD_GET (PORT_RESISTANCE_RSN_MASK , regval)) { + raw_val =le16_to_cpu (regval); +switch (FIELD_GET (PORT_RESISTANCE_RSN_MASK , raw_val)) {case PORT_RESISTANCE_RSN_OTHER : -return (FIELD_GET (PORT_RESISTANCE_MASK , regval) *RESISTANCE_LSB ) /10000 ; +return (FIELD_GET (PORT_RESISTANCE_MASK , raw_val) *RESISTANCE_LSB ) /10000 ;case PORT_RESISTANCE_RSN_LOW : -return (FIELD_GET (PORT_RESISTANCE_MASK , regval) *RESISTANCE_LSB_LOW ) /10000 ; +return (FIELD_GET (PORT_RESISTANCE_MASK , raw_val) *RESISTANCE_LSB_LOW ) /10000 ;case PORT_RESISTANCE_RSN_SHORT :case PORT_RESISTANCE_RSN_OPEN :default :
drivers/infiniband/core/cma.c +2 -2
@@ -1719,8 +1719,8 @@ cma_ib_id_from_event(struct ib_cm_id *cm_id, }if (!validate_net_dev (*net_dev, - (struct sockaddr *)&req->listen_addr_storage, - (struct sockaddr *)&req->src_addr_storage)) { + (struct sockaddr *)&req->src_addr_storage, + (struct sockaddr *)&req->listen_addr_storage)) { id_priv =ERR_PTR (-EHOSTUNREACH ); goto err; }
drivers/infiniband/core/umem_odp.c +1 -1
@@ -462,7 +462,7 @@ int ib_umem_odp_map_dma_and_lock(struct ib_umem_odp *umem_odp, u64 user_virt,mutex_unlock (&umem_odp->umem_mutex); out_put_mm: -mmput (owning_mm); +mmput_async (owning_mm); out_put_task:if (owning_process)put_task_struct (owning_process);
drivers/infiniband/hw/hns/hns_roce_device.h +0 -1
@@ -730,7 +730,6 @@ struct hns_roce_caps {u32 num_qps;u32 num_pi_qps;u32 reserved_qps; -int num_qpc_timer;u32 num_srqs;u32 max_wqes;u32 max_srq_wrs;
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +1 -2
@@ -1941,7 +1941,7 @@ static void set_default_caps(struct hns_roce_dev *hr_dev) caps->num_mtpts =HNS_ROCE_V2_MAX_MTPT_NUM ; caps->num_pds =HNS_ROCE_V2_MAX_PD_NUM ; - caps->num_qpc_timer =HNS_ROCE_V2_MAX_QPC_TIMER_NUM ; + caps->qpc_timer_bt_num =HNS_ROCE_V2_MAX_QPC_TIMER_BT_NUM ; caps->cqc_timer_bt_num =HNS_ROCE_V2_MAX_CQC_TIMER_BT_NUM ; caps->max_qp_init_rdma =HNS_ROCE_V2_MAX_QP_INIT_RDMA ;
@@ -2237,7 +2237,6 @@ static int hns_roce_query_pf_caps(struct hns_roce_dev *hr_dev) caps->max_rq_sg =le16_to_cpu (resp_a->max_rq_sg); caps->max_rq_sg =roundup_pow_of_two (caps->max_rq_sg); caps->max_extend_sg =le32_to_cpu (resp_a->max_extend_sg); - caps->num_qpc_timer =le16_to_cpu (resp_a->num_qpc_timer); caps->max_srq_sges =le16_to_cpu (resp_a->max_srq_sges); caps->max_srq_sges =roundup_pow_of_two (caps->max_srq_sges); caps->num_aeq_vectors = resp_a->num_aeq_vectors;
drivers/infiniband/hw/hns/hns_roce_hw_v2.h +2 -2
@@ -36,11 +36,11 @@#include <linux/bitops.h> #define HNS_ROCE_V2_MAX_QP_NUM 0x1000 -#define HNS_ROCE_V2_MAX_QPC_TIMER_NUM 0x200#define HNS_ROCE_V2_MAX_WQE_NUM 0x8000#define HNS_ROCE_V2_MAX_SRQ_WR 0x8000#define HNS_ROCE_V2_MAX_SRQ_SGE 64#define HNS_ROCE_V2_MAX_CQ_NUM 0x100000 +#define HNS_ROCE_V2_MAX_QPC_TIMER_BT_NUM 0x100#define HNS_ROCE_V2_MAX_CQC_TIMER_BT_NUM 0x100#define HNS_ROCE_V2_MAX_SRQ_NUM 0x100000#define HNS_ROCE_V2_MAX_CQE_NUM 0x400000
@@ -83,7 +83,7 @@#define HNS_ROCE_V2_QPC_TIMER_ENTRY_SZ PAGE_SIZE#define HNS_ROCE_V2_CQC_TIMER_ENTRY_SZ PAGE_SIZE -#define HNS_ROCE_V2_PAGE_SIZE_SUPPORTED 0xFFFFF000 +#define HNS_ROCE_V2_PAGE_SIZE_SUPPORTED 0xFFFF000#define HNS_ROCE_V2_MAX_INNER_MTPT_NUM 2#define HNS_ROCE_INVALID_LKEY 0x0#define HNS_ROCE_INVALID_SGE_LENGTH 0x80000000
drivers/infiniband/hw/hns/hns_roce_main.c +1 -1
@@ -725,7 +725,7 @@ static int hns_roce_init_hem(struct hns_roce_dev *hr_dev) ret =hns_roce_init_hem_table (hr_dev, &hr_dev->qpc_timer_table,HEM_TYPE_QPC_TIMER , hr_dev->caps.qpc_timer_entry_sz, - hr_dev->caps.num_qpc_timer,1 ); + hr_dev->caps.qpc_timer_bt_num,1 );if (ret) {dev_err (dev,"Failed to init QPC timer memory, aborting.\n" );
drivers/infiniband/hw/hns/hns_roce_qp.c +2 -5
@@ -462,11 +462,8 @@ static int set_rq_size(struct hns_roce_dev *hr_dev, struct ib_qp_cap *cap, hr_qp->rq.max_gs =roundup_pow_of_two (max (1U , cap->max_recv_sge) + hr_qp->rq.rsv_sge); -if (hr_dev->caps.max_rq_sg <=HNS_ROCE_SGE_IN_WQE ) - hr_qp->rq.wqe_shift =ilog2 (hr_dev->caps.max_rq_desc_sz); -else - hr_qp->rq.wqe_shift =ilog2 (hr_dev->caps.max_rq_desc_sz * - hr_qp->rq.max_gs); + hr_qp->rq.wqe_shift =ilog2 (hr_dev->caps.max_rq_desc_sz * + hr_qp->rq.max_gs); hr_qp->rq.wqe_cnt = cnt; if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RQ_INLINE &&
drivers/infiniband/hw/irdma/uk.c +3 -1
@@ -1005,6 +1005,7 @@ int irdma_uk_cq_poll_cmpl(struct irdma_cq_uk *cq,int ret_code;bool move_cq_head = true;u8 polarity; +u8 op_type;bool ext_valid;__le64 *ext_cqe;
@@ -1187,7 +1188,6 @@ int irdma_uk_cq_poll_cmpl(struct irdma_cq_uk *cq, do { __le64 *sw_wqe; u64 wqe_qword; - u8 op_type; u32 tail; tail = qp->sq_ring.tail;
@@ -1204,6 +1204,8 @@ int irdma_uk_cq_poll_cmpl(struct irdma_cq_uk *cq,break ; } }while (1 ); +if (op_type ==IRDMA_OP_TYPE_BIND_MW && info->minor_err ==FLUSH_PROT_ERR ) + info->minor_err =FLUSH_MW_BIND_ERR ; qp->sq_flush_seen = true;if (!IRDMA_RING_MORE_WORK (qp->sq_ring)) qp->sq_flush_complete = true;
drivers/infiniband/hw/irdma/utils.c +9 -6
@@ -590,11 +590,14 @@ static int irdma_wait_event(struct irdma_pci_f *rf, cqp_error = cqp_request->compl_info.error;if (cqp_error) { err_code = -EIO ; -if (cqp_request->compl_info.maj_err_code ==0xFFFF && - cqp_request->compl_info.min_err_code ==0x8029 ) { -if (!rf->reset) { - rf->reset = true; - rf->gen_ops.request_reset (rf); +if (cqp_request->compl_info.maj_err_code ==0xFFFF ) { +if (cqp_request->compl_info.min_err_code ==0x8002 ) + err_code = -EBUSY ; +else if (cqp_request->compl_info.min_err_code ==0x8029 ) { +if (!rf->reset) { + rf->reset = true; + rf->gen_ops.request_reset (rf); + } } } }
@@ -2597,7 +2600,7 @@ void irdma_generate_flush_completions(struct irdma_qp *iwqp)spin_unlock_irqrestore (&iwqp->lock, flags2);spin_unlock_irqrestore (&iwqp->iwscq->lock, flags1);if (compl_generated) -irdma_comp_handler (iwqp->iwrcq); +irdma_comp_handler (iwqp->iwscq); }else {spin_unlock_irqrestore (&iwqp->iwscq->lock, flags1); mod_delayed_work(iwqp->iwdev->cleanup_wq, &iwqp->dwork_flush,
drivers/infiniband/hw/irdma/verbs.c +10 -3
@@ -39,15 +39,18 @@ static int irdma_query_device(struct ib_device *ibdev, props->max_send_sge = hw_attrs->uk_attrs.max_hw_wq_frags; props->max_recv_sge = hw_attrs->uk_attrs.max_hw_wq_frags; props->max_cq = rf->max_cq - rf->used_cqs; - props->max_cqe = rf->max_cqe; + props->max_cqe = rf->max_cqe -1 ; props->max_mr = rf->max_mr - rf->used_mrs; props->max_mw = props->max_mr; props->max_pd = rf->max_pd - rf->used_pds; props->max_sge_rd = hw_attrs->uk_attrs.max_hw_read_sges; props->max_qp_rd_atom = hw_attrs->max_hw_ird; props->max_qp_init_rd_atom = hw_attrs->max_hw_ord; -if (rdma_protocol_roce (ibdev,1 )) +if (rdma_protocol_roce (ibdev,1 )) { + props->device_cap_flags |=IB_DEVICE_RC_RNR_NAK_GEN ; props->max_pkeys =IRDMA_PKEY_TBL_SZ ; + } + props->max_ah = rf->max_ah; props->max_mcast_grp = rf->max_mcg; props->max_mcast_qp_attach =IRDMA_MAX_MGS_PER_CTX ;
@@ -3001,6 +3004,7 @@ static int irdma_dereg_mr(struct ib_mr *ib_mr, struct ib_udata *udata)struct irdma_pble_alloc *palloc = &iwpbl->pble_alloc;struct irdma_cqp_request *cqp_request;struct cqp_cmds_info *cqp_info; +int status;if (iwmr->type !=IRDMA_MEMREG_TYPE_MEM ) {if (iwmr->region) {
@@ -3031,8 +3035,11 @@ static int irdma_dereg_mr(struct ib_mr *ib_mr, struct ib_udata *udata) cqp_info->post_sq =1 ; cqp_info->in.u.dealloc_stag.dev = &iwdev->rf->sc_dev; cqp_info->in.u.dealloc_stag.scratch = (uintptr_t )cqp_request; -irdma_handle_cqp_op (iwdev->rf, cqp_request); + status =irdma_handle_cqp_op (iwdev->rf, cqp_request);irdma_put_cqp_request (&iwdev->rf->cqp, cqp_request); +if (status) +return status; +irdma_free_stag (iwdev, iwmr->stag); done:if (iwpbl->pbl_allocated)
drivers/infiniband/hw/mlx5/mad.c +6 -0
@@ -166,6 +166,12 @@ static int process_pma_cmd(struct mlx5_ib_dev *dev, u32 port_num, mdev = dev->mdev; mdev_port_num =1 ; } +if (MLX5_CAP_GEN (dev->mdev, num_ports) ==1 ) { +/* set local port to one for Function-Per-Port HCA. */ + mdev = dev->mdev; + mdev_port_num =1 ; + } +/* Declaring support of extended counters */ if (in_mad->mad_hdr.attr_id ==IB_PMA_CLASS_PORT_INFO ) {struct ib_class_port_info cpi = {};
drivers/infiniband/sw/siw/siw_qp_tx.c +14 -4
@@ -29,7 +29,7 @@ static struct page *siw_get_pblpage(struct siw_mem *mem, u64 addr, int *idx)dma_addr_t paddr =siw_pbl_get_buffer (pbl, offset,NULL , idx);if (paddr) -return virt_to_page (paddr); +return virt_to_page ((void *)paddr);return NULL ; }
@@ -533,13 +533,23 @@ static int siw_tx_hdt(struct siw_iwarp_tx *c_tx, struct socket *s)kunmap_local (kaddr); } }else { -u64 va = sge->laddr + sge_off; +/* +* Cast to an uintptr_t to preserve all 64 bits +* in sge->laddr. +*/ +uintptr_t va = (uintptr_t )(sge->laddr + sge_off); - page_array[seg] =virt_to_page (va &PAGE_MASK ); +/* +* virt_to_page() takes a (void *) pointer +* so cast to a (void *) meaning it will be 64 +* bits on a 64 bit platform and 32 bits on a +* 32 bit platform. +*/ + page_array[seg] =virt_to_page ((void *)(va &PAGE_MASK ));if (do_crc)crypto_shash_update ( c_tx->mpa_crc_hd, - (void *)(uintptr_t )va, + (void *)va, plen); }
drivers/infiniband/ulp/rtrs/rtrs-clt.c +5 -4
@@ -1004,7 +1004,8 @@ rtrs_clt_get_copy_req(struct rtrs_clt_path *alive_path,static int rtrs_post_rdma_write_sg (struct rtrs_clt_con *con,struct rtrs_clt_io_req *req,struct rtrs_rbuf *rbuf,bool fr_en, -u32 size,u32 imm,struct ib_send_wr *wr, +u32 count,u32 size,u32 imm, +struct ib_send_wr *wr,struct ib_send_wr *tail) {struct rtrs_clt_path *clt_path =to_clt_path (con->c.path);
@@ -1024,12 +1025,12 @@ static int rtrs_post_rdma_write_sg(struct rtrs_clt_con *con, num_sge =2 ; ptail = tail; }else { -for_each_sg (req->sglist, sg, req->sg_cnt, i) { +for_each_sg (req->sglist, sg, count, i) { sge[i].addr =sg_dma_address (sg); sge[i].length =sg_dma_len (sg); sge[i].lkey = clt_path->s.dev->ib_pd->local_dma_lkey; } - num_sge =1 + req->sg_cnt; + num_sge =1 + count; } sge[i].addr = req->iu->dma_addr; sge[i].length = size;
@@ -1142,7 +1143,7 @@ static int rtrs_clt_write_req(struct rtrs_clt_io_req *req)*/ rtrs_clt_update_all_stats (req,WRITE ); - ret =rtrs_post_rdma_write_sg (req->con, req, rbuf, fr_en, + ret =rtrs_post_rdma_write_sg (req->con, req, rbuf, fr_en, count, req->usr_len +sizeof (*msg), imm, wr, &inv_wr);if (ret) {
drivers/infiniband/ulp/rtrs/rtrs-srv.c +7 -7
@@ -600,7 +600,7 @@ static int map_cont_bufs(struct rtrs_srv_path *srv_path)struct sg_table *sgt = &srv_mr->sgt;struct scatterlist *s;struct ib_mr *mr; -int nr, chunks; +int nr, nr_sgt, chunks; chunks = chunks_per_mr * mri;if (!always_invalidate)
@@ -615,19 +615,19 @@ static int map_cont_bufs(struct rtrs_srv_path *srv_path)sg_set_page (s, srv->chunks[chunks + i], max_chunk_size,0 ); - nr =ib_dma_map_sg (srv_path->s.dev->ib_dev, sgt->sgl, + nr_sgt =ib_dma_map_sg (srv_path->s.dev->ib_dev, sgt->sgl, sgt->nents,DMA_BIDIRECTIONAL ); -if (nr < sgt->nents) { - err = nr <0 ? nr : -EINVAL ; +if (!nr_sgt) { + err = -EINVAL ; goto free_sg; } mr =ib_alloc_mr (srv_path->s.dev->ib_pd,IB_MR_TYPE_MEM_REG , - sgt->nents); + nr_sgt);if (IS_ERR (mr)) { err =PTR_ERR (mr); goto unmap_sg; } - nr =ib_map_mr_sg (mr, sgt->sgl, sgt->nents, + nr =ib_map_mr_sg (mr, sgt->sgl, nr_sgt,NULL , max_chunk_size);if (nr <0 || nr < sgt->nents) { err = nr <0 ? nr : -EINVAL ;
@@ -646,7 +646,7 @@ static int map_cont_bufs(struct rtrs_srv_path *srv_path) } }/* Eventually dma addr for each chunk can be cached */ -for_each_sg (sgt->sgl, s, sgt->orig_nents, i) +for_each_sg (sgt->sgl, s, nr_sgt, i) srv_path->dma_addr[chunks + i] =sg_dma_address (s);ib_update_fast_reg_key (mr,ib_inc_rkey (mr->rkey));
drivers/infiniband/ulp/srp/ib_srp.c +2 -1
@@ -1962,7 +1962,8 @@ static void srp_process_rsp(struct srp_rdma_ch *ch, struct srp_rsp *rsp)if (scmnd) { req =scsi_cmd_priv (scmnd); scmnd =srp_claim_req (ch, req,NULL , scmnd); - }else { + } +if (!scmnd) {shost_printk (KERN_ERR , target->scsi_host,"Null scmnd for RSP w/tag %#016llx received on ch %td / QP %#x\n" , rsp->tag, ch - target->ch, ch->qp->qp_num);
drivers/iommu/amd/iommu.c +2 -1
@@ -874,7 +874,8 @@ static void build_completion_wait(struct iommu_cmd *cmd,memset (cmd,0 ,sizeof (*cmd)); cmd->data[0 ] =lower_32_bits (paddr) |CMD_COMPL_WAIT_STORE_MASK ; cmd->data[1 ] =upper_32_bits (paddr); - cmd->data[2 ] = data; + cmd->data[2 ] =lower_32_bits (data); + cmd->data[3 ] =upper_32_bits (data);CMD_SET_TYPE (cmd,CMD_COMPL_WAIT ); }
drivers/iommu/amd/iommu_v2.c +2 -0
@@ -786,6 +786,8 @@ int amd_iommu_init_device(struct pci_dev *pdev, int pasids)if (dev_state->domain ==NULL ) goto out_free_states; +/* See iommu_is_default_domain() */ + dev_state->domain->type =IOMMU_DOMAIN_IDENTITY ;amd_iommu_domain_direct_map (dev_state->domain); ret =amd_iommu_domain_enable_v2 (dev_state->domain, pasids);
drivers/iommu/intel/dmar.c +7 -0
@@ -2368,6 +2368,13 @@ static int dmar_device_hotplug(acpi_handle handle, bool insert)if (!dmar_in_use ())return 0 ; +/* +* It's unlikely that any I/O board is hot added before the IOMMU +* subsystem is initialized. +*/ +if (IS_ENABLED (CONFIG_INTEL_IOMMU ) && !intel_iommu_enabled) +return -EOPNOTSUPP ; +if (dmar_detect_dsm (handle,DMAR_DSM_FUNC_DRHD )) { tmp = handle; }else {
drivers/iommu/intel/iommu.c +27 -28
118 lines not on this page · raw message
drivers/iommu/iommu.c +19 -2
@@ -3089,6 +3089,24 @@ static ssize_t iommu_group_store_type(struct iommu_group *group,return ret; } +static bool iommu_is_default_domain (struct iommu_group *group) +{ +if (group->domain == group->default_domain) +return true; + +/* +* If the default domain was set to identity and it is still an identity +* domain then we consider this a pass. This happens because of +* amd_iommu_init_device() replacing the default idenytity domain with an +* identity domain that has a different configuration for AMDGPU. +*/ +if (group->default_domain && + group->default_domain->type ==IOMMU_DOMAIN_IDENTITY && + group->domain && group->domain->type ==IOMMU_DOMAIN_IDENTITY ) +return true; +return false; +} +/** * iommu_device_use_default_domain() - Device driver wants to handle device * DMA through the kernel DMA API.
@@ -3107,8 +3125,7 @@ int iommu_device_use_default_domain(struct device *dev)mutex_lock (&group->mutex);if (group->owner_cnt) { -if (group->domain != group->default_domain || - group->owner) { +if (group->owner || !iommu_is_default_domain (group)) { ret = -EBUSY ; goto unlock_out; }
drivers/iommu/virtio-iommu.c +11 -0
@@ -1006,7 +1006,18 @@ static int viommu_of_xlate(struct device *dev, struct of_phandle_args *args)return iommu_fwspec_add_ids (dev, args->args,1 ); } +static bool viommu_capable (enum iommu_cap cap) +{ +switch (cap) { +case IOMMU_CAP_CACHE_COHERENCY : +return true; +default : +return false; + } +} +static struct iommu_ops viommu_ops = { + .capable = viommu_capable, .domain_alloc = viommu_domain_alloc, .probe_device = viommu_probe_device, .probe_finalize = viommu_probe_finalize,
drivers/md/md.c +1 -0
@@ -5647,6 +5647,7 @@ static int md_alloc(dev_t dev, char *name)* removed (mddev_delayed_delete). */ flush_workqueue (md_misc_wq); +flush_workqueue (md_rdev_misc_wq);mutex_lock (&disks_mutex); mddev =mddev_alloc (dev);
drivers/net/bonding/bond_main.c +35 -20
151 lines not on this page · raw message
drivers/net/dsa/ocelot/felix_vsc9959.c +113 -49
242 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e.h +14 -0
@@ -1291,4 +1291,18 @@ int i40e_add_del_cloud_filter(struct i40e_vsi *vsi,int i40e_add_del_cloud_filter_big_buf (struct i40e_vsi *vsi,struct i40e_cloud_filter *filter,bool add); + +/** +* i40e_is_tc_mqprio_enabled - check if TC MQPRIO is enabled on PF +* @pf: pointer to a pf. +* +* Check and return value of flag I40E_FLAG_TC_MQPRIO. +* +* Return: I40E_FLAG_TC_MQPRIO set state. +**/ +static inline u32 i40e_is_tc_mqprio_enabled (struct i40e_pf *pf) +{ +return pf->flags &I40E_FLAG_TC_MQPRIO ; +} +#endif /* _I40E_H_ */
drivers/net/ethernet/intel/i40e/i40e_client.c +4 -1
@@ -177,6 +177,10 @@ void i40e_notify_client_of_netdev_close(struct i40e_vsi *vsi, bool reset) "Cannot locate client instance close routine\n");return ; } +if (!test_bit (__I40E_CLIENT_INSTANCE_OPENED, &cdev->state)) { +dev_dbg (&pf->pdev->dev,"Client is not open, abort close\n" ); +return ; + } cdev->client->ops->close (&cdev->lan_info, cdev->client, reset);clear_bit (__I40E_CLIENT_INSTANCE_OPENED, &cdev->state);i40e_client_release_qvlist (&cdev->lan_info);
@@ -429,7 +433,6 @@ void i40e_client_subtask(struct i40e_pf *pf)/* Remove failed client instance */ clear_bit (__I40E_CLIENT_INSTANCE_OPENED, &cdev->state); -i40e_client_del_instance (pf);return ; } }
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +1 -1
@@ -4931,7 +4931,7 @@ static int i40e_set_channels(struct net_device *dev,/* We do not support setting channels via ethtool when TCs are * configured through mqprio */ -if (pf->flags &I40E_FLAG_TC_MQPRIO ) +if (i40e_is_tc_mqprio_enabled (pf))return -EINVAL ;/* verify they are not requesting separate vectors */
drivers/net/ethernet/intel/i40e/i40e_main.c +13 -10
@@ -5339,7 +5339,7 @@ static u8 i40e_pf_get_num_tc(struct i40e_pf *pf)u8 num_tc =0 ;struct i40e_dcbx_config *dcbcfg = &hw->local_dcbx_config; -if (pf->flags &I40E_FLAG_TC_MQPRIO ) +if (i40e_is_tc_mqprio_enabled (pf))
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_txrx.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +11 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_base.c +0 -17
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +9 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_xsk.c +63 -0
63 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_xsk.h +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_ppe.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_ppe.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/phy/microchip_t1.c +54 -4
58 lines not on this page · raw message
drivers/net/wireless/intel/iwlegacy/4965-rs.c +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/netdev.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/sdio.c +33 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/wlan.c +13 -2
Lines of this file are not shown. View the raw message.
drivers/scsi/megaraid/megaraid_sas_fusion.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/scsi_lib.c +25 -19
44 lines not on this page · raw message
drivers/soc/bcm/brcmstb/pm/pm-arm.c +39 -11
50 lines not on this page · raw message
drivers/thermal/intel/int340x_thermal/int3400_thermal.c +5 -4
Lines of this file are not shown. View the raw message.
fs/btrfs/zoned.c +53 -46
99 lines not on this page · raw message
fs/cifs/smb2ops.c +42 -46
88 lines not on this page · raw message
include/linux/skbuff.h +38 -11
49 lines not on this page · raw message
kernel/cgroup/cgroup.c +63 -22
85 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_tcp.c +31 -0
Lines of this file are not shown. View the raw message.
net/rxrpc/peer_event.c +256 -37
293 lines not on this page · raw message
tools/lib/perf/evlist.c +50 -0
50 lines not on this page · raw message
tools/perf/dlfilters/dlfilter-show-cycles.c +2 -2
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.