Linux 6.0.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.0.11 kernel.
All users of the 6.0 kernel series must upgrade.
The updated 6.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.0.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/devicetree/bindings/iio/adc/aspeed,ast2600-adc.yaml | 7 Makefile | 2 arch/arm/boot/dts/am335x-pcm-953.dtsi | 28 - arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 9 arch/arm/boot/dts/imx6q-prti6q.dts | 4 arch/arm/mach-mxs/mach-mxs.c | 4 arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts | 2 arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts | 7 arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts | 2 arch/arm64/include/asm/syscall_wrapper.h | 2 arch/loongarch/include/asm/pgtable.h | 8 arch/loongarch/kernel/process.c | 9 arch/mips/include/asm/fw/fw.h | 2 arch/mips/pic32/pic32mzda/early_console.c | 13 arch/mips/pic32/pic32mzda/init.c | 2 arch/nios2/boot/Makefile | 2 arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 38 + arch/riscv/kernel/vdso/Makefile | 3 arch/riscv/kernel/vdso/vdso.lds.S | 2 arch/s390/Kconfig | 6 arch/s390/Makefile | 2 arch/s390/boot/Makefile | 3 arch/s390/boot/startup.c | 3 arch/s390/kernel/crash_dump.c | 2 arch/x86/hyperv/hv_init.c | 54 +- arch/x86/include/asm/cpufeatures.h | 3 arch/x86/kernel/cpu/tsx.c | 38 - arch/x86/kvm/mmu/mmu.c | 13 arch/x86/kvm/svm/nested.c | 6 arch/x86/kvm/svm/svm.c | 16 arch/x86/kvm/vmx/nested.c | 3 arch/x86/kvm/x86.c | 18 arch/x86/kvm/xen.c | 32 + arch/x86/mm/ioremap.c | 8 arch/x86/power/cpu.c | 23 - block/bfq-cgroup.c | 4 block/blk-mq.c | 7 block/blk-settings.c | 1 block/blk.h | 1 drivers/acpi/video_detect.c | 14 drivers/android/binder_alloc.c | 7 drivers/bus/intel-ixp4xx-eb.c | 9 drivers/bus/sunxi-rsb.c | 38 - drivers/cpufreq/Kconfig.x86 | 2 drivers/cpufreq/amd-pstate.c | 21 drivers/dma-buf/dma-buf.c | 23 - drivers/dma-buf/dma-heap.c | 28 - drivers/fpga/Kconfig | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 26 - drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 26 + drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c | 2 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 6 drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler.h | 31 - drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler_gfx10.asm | 27 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 44 +- drivers/gpu/drm/amd/display/dc/dc.h | 3 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c | 3 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 213 ++++------ drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c | 1 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c | 11 drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c | 1 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 22 - drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c | 1 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c | 2 drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h | 2 drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c | 8 drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c | 14 drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c | 9 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c | 25 - drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 4 drivers/gpu/drm/display/drm_dp_mst_topology.c | 2 drivers/gpu/drm/drm_panel_orientation_quirks.c | 12 drivers/gpu/drm/i915/display/intel_display_power.c | 8 drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 4 drivers/gpu/drm/i915/gt/intel_gt.c | 5 drivers/gpu/drm/i915/gvt/kvmgt.c | 3 drivers/gpu/drm/tegra/drm.c | 4 drivers/gpu/host1x/dev.c | 4 drivers/hv/channel_mgmt.c | 6 drivers/hv/vmbus_drv.c | 1 drivers/iio/accel/bma400_core.c | 4 drivers/iio/adc/aspeed_adc.c | 11 drivers/iio/industrialio-sw-trigger.c | 6 drivers/iio/light/apds9960.c | 12 drivers/input/misc/soc_button_array.c | 14 drivers/input/mouse/synaptics.c | 1 drivers/input/serio/i8042-x86ia64io.h | 8 drivers/input/touchscreen/goodix.c | 11 drivers/md/dm-integrity.c | 21 drivers/md/dm-log-writes.c | 1 drivers/net/arcnet/com20020_cs.c | 11 drivers/net/bonding/bond_main.c | 17 drivers/net/can/usb/gs_usb.c | 39 - drivers/net/dsa/sja1105/sja1105_mdio.c | 6 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 12 drivers/net/ethernet/cavium/liquidio/lio_main.c | 4 drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 4 drivers/net/ethernet/davicom/dm9051.c | 4 drivers/net/ethernet/engleder/tsnep_main.c | 57 ++ drivers/net/ethernet/freescale/enetc/enetc.c | 32 - drivers/net/ethernet/freescale/enetc/enetc.h | 10 drivers/net/ethernet/freescale/enetc/enetc_qos.c | 77 +-- drivers/net/ethernet/intel/iavf/iavf.h | 1 drivers/net/ethernet/intel/iavf/iavf_main.c | 41 + drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 8 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 2 drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c | 7 drivers/net/ethernet/marvell/prestera/prestera_main.c | 1 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 12 drivers/net/ethernet/mellanox/mlx4/qp.c | 3 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 47 +- drivers/net/ethernet/mellanox/mlx5/core/diag/cmd_tracepoint.h | 45 ++ drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c | 16 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h | 3 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 17 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 2 drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 9 drivers/net/ethernet/mellanox/mlx5/core/main.c | 9 drivers/net/ethernet/mellanox/mlx5/core/sf/dev/dev.c | 88 ++++ drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c | 14 drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 2 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 3 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 6 drivers/net/ethernet/qlogic/qla3xxx.c | 1 drivers/net/ethernet/sfc/ef100_netdev.c | 1 drivers/net/ipvlan/ipvlan.h | 1 drivers/net/ipvlan/ipvlan_main.c | 2 drivers/net/macsec.c | 28 - drivers/net/phy/at803x.c | 4 drivers/net/usb/cdc_ncm.c | 1 drivers/net/usb/qmi_wwan.c | 1 drivers/net/virtio_net.c | 3 drivers/net/wireless/ath/ath11k/qmi.h | 2 drivers/net/wireless/cisco/airo.c | 18 drivers/net/wireless/mac80211_hwsim.c | 5 drivers/net/wireless/microchip/wilc1000/cfg80211.c | 39 + drivers/net/wireless/microchip/wilc1000/hif.c | 21 drivers/net/wwan/iosm/iosm_ipc_coredump.c | 1 drivers/net/wwan/iosm/iosm_ipc_devlink.c | 1 drivers/net/wwan/iosm/iosm_ipc_pcie.c | 2 drivers/net/wwan/t7xx/t7xx_modem_ops.c | 2 drivers/nfc/st-nci/se.c | 49 +- drivers/nvme/host/core.c | 3 drivers/nvme/host/pci.c | 2 drivers/nvme/target/configfs.c | 7 drivers/pci/controller/pci-hyperv.c | 90 +++- drivers/pinctrl/qcom/pinctrl-sc8280xp.c | 4 drivers/platform/surface/surface_aggregator_registry.c | 37 + drivers/platform/x86/acer-wmi.c | 9 drivers/platform/x86/asus-wmi.c | 2 drivers/platform/x86/hp-wmi.c | 3 drivers/platform/x86/ideapad-laptop.c | 62 ++ drivers/platform/x86/intel/hid.c | 3 drivers/platform/x86/intel/pmt/class.c | 31 + drivers/platform/x86/thinkpad_acpi.c | 8 drivers/platform/x86/touchscreen_dmi.c | 25 + drivers/power/supply/ab8500_btemp.c | 9 drivers/power/supply/ip5xxx_power.c | 2 drivers/regulator/core.c | 8 drivers/regulator/rt5759-regulator.c | 1 drivers/regulator/twl6030-regulator.c | 2 drivers/s390/block/dasd_eckd.c | 6 drivers/s390/crypto/ap_bus.c | 5 drivers/s390/crypto/zcrypt_msgtype6.c | 21 drivers/scsi/ibmvscsi/ibmvfc.c | 14 drivers/scsi/mpi3mr/mpi3mr_os.c | 3 drivers/scsi/scsi_debug.c | 7 drivers/scsi/scsi_transport_iscsi.c | 31 - drivers/scsi/storvsc_drv.c | 69 +-- drivers/spi/spi-dw-dma.c | 3 drivers/spi/spi-imx.c | 13 drivers/spi/spi-stm32.c | 2 drivers/spi/spi-tegra210-quad.c | 9 drivers/tee/optee/device.c | 2 drivers/tty/n_gsm.c | 69 +-- drivers/tty/serial/8250/8250_omap.c | 7 drivers/usb/cdns3/cdnsp-gadget.c | 12 drivers/usb/cdns3/cdnsp-ring.c | 17 drivers/usb/dwc3/dwc3-exynos.c | 11 drivers/usb/dwc3/gadget.c | 22 - drivers/virt/coco/sev-guest/sev-guest.c | 84 +++ drivers/xen/platform-pci.c | 7 drivers/xen/xen-pciback/conf_space_capability.c | 9 fs/btrfs/ioctl.c | 23 - fs/btrfs/sysfs.c | 7 fs/btrfs/tree-log.c | 59 ++ fs/btrfs/zoned.c | 9 fs/ceph/caps.c | 50 -- fs/cifs/cifsfs.c | 4 fs/cifs/sess.c | 4 fs/ext4/extents.c | 18 fs/fs-writeback.c | 30 - fs/fscache/volume.c | 7 fs/fuse/file.c | 37 - fs/nfsd/vfs.c | 7 fs/nilfs2/sufile.c | 8 fs/zonefs/super.c | 60 ++ fs/zonefs/zonefs.h | 6 include/linux/blkdev.h | 1 include/linux/bpf.h | 39 + include/linux/fault-inject.h | 7 include/linux/fscache.h | 2 include/linux/mlx5/driver.h | 1 include/net/neighbour.h | 2 include/sound/sof/info.h | 4 include/uapi/linux/audit.h | 2 init/Kconfig | 2 io_uring/filetable.c | 2 io_uring/io_uring.h | 9 io_uring/poll.c | 49 +- kernel/bpf/dispatcher.c | 22 - kernel/gcov/clang.c | 2 lib/Kconfig.debug | 1 lib/fault-inject.c | 13 lib/vdso/Makefile | 2 mm/damon/sysfs.c | 4 mm/failslab.c | 12 mm/memcontrol.c | 2 mm/page_alloc.c | 7 mm/vmscan.c | 24 - net/9p/trans_fd.c | 2 net/core/flow_dissector.c | 2 net/core/neighbour.c | 58 +- net/dccp/ipv4.c | 2 net/dccp/ipv6.c | 2 net/ipv4/Kconfig | 10 net/ipv4/esp4_offload.c | 3 net/ipv4/fib_trie.c | 4 net/ipv4/inet_hashtables.c | 10 net/ipv4/ip_input.c | 5 net/ipv4/netfilter/ipt_CLUSTERIP.c | 4 net/ipv4/tcp_ipv4.c | 2 net/ipv6/esp6_offload.c | 3 net/ipv6/tcp_ipv6.c | 2 net/ipv6/xfrm6_policy.c | 6 net/key/af_key.c | 34 + net/mac80211/main.c | 8 net/mac80211/mesh_pathtbl.c | 2 net/netfilter/ipset/ip_set_hash_gen.h | 2 net/netfilter/ipset/ip_set_hash_ip.c | 8 net/netfilter/nf_conntrack_core.c | 2 net/netfilter/nf_conntrack_netlink.c | 24 - net/netfilter/nf_conntrack_standalone.c | 2 net/netfilter/nf_flow_table_offload.c | 4 net/netfilter/nf_tables_api.c | 6 net/netfilter/nft_ct.c | 6 net/netfilter/xt_connmark.c | 18 net/nfc/nci/core.c | 2 net/nfc/nci/data.c | 4 net/openvswitch/conntrack.c | 8 net/rxrpc/ar-internal.h | 1 net/rxrpc/conn_client.c | 38 + net/sched/Kconfig | 2 net/sched/act_connmark.c | 4 net/sched/act_ct.c | 8 net/sched/act_ctinfo.c | 6 net/tipc/discover.c | 5 net/tipc/topsrv.c | 20 net/wireless/util.c | 6 net/xfrm/xfrm_device.c | 15 net/xfrm/xfrm_replay.c | 2 sound/hda/intel-dsp-config.c | 5 sound/soc/amd/yc/acp6x-mach.c | 7 sound/soc/codecs/hdac_hda.h | 4 sound/soc/codecs/max98373-i2c.c | 4 sound/soc/codecs/sgtl5000.c | 1 sound/soc/intel/boards/bytcht_es8316.c | 7 sound/soc/intel/boards/sof_es8336.c | 60 ++ sound/soc/intel/common/soc-acpi-intel-icl-match.c | 13 sound/soc/soc-pcm.c | 5 sound/soc/sof/ipc3-topology.c | 15 sound/soc/stm/stm32_adfsdm.c | 11 sound/usb/endpoint.c | 3 sound/usb/quirks.c | 2 sound/usb/usbaudio.h | 3 tools/iio/iio_generic_buffer.c | 4 tools/testing/selftests/bpf/verifier/ref_tracking.c | 36 + tools/testing/selftests/net/io_uring_zerocopy_tx.sh | 2 tools/testing/selftests/net/mptcp/mptcp_join.sh | 6 tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 9 tools/testing/selftests/net/mptcp/simult_flows.sh | 5 tools/testing/selftests/net/udpgro.sh | 4 tools/testing/selftests/net/udpgro_bench.sh | 2 tools/testing/selftests/net/udpgro_frglist.sh | 2 virt/kvm/pfncache.c | 7 293 files changed, 2598 insertions(+), 1226 deletions(-)
Adrien Thierry (1):
selftests/net: give more time to udpgro bg processes to complete startup
Ai Chao (1):
ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue
Alejandro Concepción Rodríguez (1):
iio: light: apds9960: fix wrong register for gesture gain
Aleksandr Miloserdov (1):
nvmet: fix memory leak in nvmet_subsys_attr_model_store_locked
Alex Deucher (2):
drm/amdgpu/psp: don't free PSP buffers on suspend
drm/amdgpu: Partially revert "drm/amdgpu: update drm_display_info correctly when the edid is read"
Alexandre Belloni (1):
init/Kconfig: fix CC_HAS_ASM_GOTO_TIED_OUTPUT test with dash
Alvin Lee (2):
drm/amd/display: Add debug option for allocating extra way for cursor drm/amd/display: Update MALL SS NumWays calculation
Aman Dhoot (1):
Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode
Anand Jain (3):
btrfs: free btrfs_path before copying inodes to userspace
btrfs: free btrfs_path before copying fspath to userspace
btrfs: free btrfs_path before copying subvol info to userspace
Andreas Kemnade (1):
regulator: twl6030: re-add TWL6032_SUBCLASS
Andrzej Hajda (1):
drm/i915: fix TLB invalidation for Gen12 video and compute engines
Aneesh Kumar K.V (1):
mm/cgroup/reclaim: fix dirty pages throttling on cgroup v1
Anjana Hari (1):
pinctrl: qcom: sc8280xp: Rectify UFS reset pins
Arnav Rawat (1):
platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some Yoga laptops
Asher Song (1):
Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""
Aurabindo Pillai (1):
drm/amd/display: Zeromem mypipe heap struct before using it
Baokun Li (1):
ext4: fix use-after-free in ext4_ext_shift_extents
Bart Van Assche (1):
scsi: scsi_debug: Make the READ CAPACITY response compliant with ZBC
Billy Tsai (2):
iio: adc: aspeed: Remove the trim valid dts property.
dt-bindings: iio: adc: Remove the property "aspeed,trim-data-valid"
Brent Mendelsohn (1):
ASoC: amd: yc: Add Alienware m17 R5 AMD into DMI table
Brian King (1):
scsi: ibmvfc: Avoid path failures during live migration
Carlos Llamas (1):
binder: validate alloc->mm in ->mmap() handler
Chaitanya Dhere (1):
drm/amd/display: Fix FCLK deviation and tool compile issues
Chen Zhongjin (3):
xfrm: Fix ignored return value in xfrm6_init()
iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails
nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty
Chen-Yu Tsai (1):
arm64: dts: rockchip: Fix Pine64 Quartz4-B PMIC interrupt
ChenXiaoSong (1):
cifs: fix missing unlock in cifs_file_copychunk_range()
Chris Mi (1):
net/mlx5e: Offload rule only when all encaps are valid
Christian König (1):
drm/amdgpu: always register an MMU notifier for userptr
Christian Langrock (1):
xfrm: replay: Fix ESN wrap around for GSO
Christoph Hellwig (3):
blk-mq: fix queue reference leak on blk_mq_alloc_disk_for_queue failure
btrfs: zoned: fix missing endianness conversion in sb_write_pointer
btrfs: use kvcalloc in btrfs_get_dev_zone_info
Chuck Lever (1):
NFSD: Fix reads with a non-zero offset that don't end on a page boundary
Damien Le Moal (2):
zonefs: Fix active zone accounting
zonefs: fix zone report size in __zonefs_io_error()
Dan Carpenter (1):
cifs: Use after free in debug code
Daniel Xu (1):
netfilter: conntrack: Fix data-races around ct mark
David Belanger (1):
drm/amdgpu: Enable SA software trap.
David E. Box (1):
platform/x86/intel/pmt: Sapphire Rapids PMT errata fix
David Howells (2):
rxrpc: Fix race between conn bundle lookup and bundle removal [ZDI-CAN-15975]
fscache: fix OOB Read in __fscache_acquire_volume
David Woodhouse (3):
KVM: x86/xen: Only do in-kernel acceleration of hypercalls for guest CPL0
KVM: x86/xen: Validate port number in SCHEDOP_poll
KVM: Update gfn_to_pfn_cache khva when it moves within the same page
Dawei Li (1):
dma-buf: fix racing conflict of dma_heap_add()
Detlev Casanova (1):
ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove
Dexuan Cui (1):
PCI: hv: Only reuse existing IRTE allocation for Multi-MSI
Diana Wang (1):
nfp: fill splittable of devlink_port_attrs correctly
Dillon Varone (2):
drm/amd/display: use uclk pstate latency for fw assisted mclk validation dcn32 drm/amd/display: Update soc bounding box for dcn32/dcn321
Dominik Haller (1):
ARM: dts: am335x-pcm-953: Define fixed regulators in root node
Dong Chenchen (1):
iio: accel: bma400: Fix memory leak in bma400_get_steps_reg()
Emil Renner Berthing (1):
riscv: dts: sifive unleashed: Add PWM controlled LEDs
Enrico Sau (1):
net: usb: qmi_wwan: add Telit 0x103a composition
Eric Huang (1):
drm/amdkfd: Fix a memory limit issue
Eyal Birger (1):
xfrm: fix "disable_policy" on ipv4 early demux
Fabio Estevam (1):
ARM: dts: imx6q-prti6q: Fix ref/tcxo-clock-frequency properties
Fedor Pchelkin (2):
Revert "tty: n_gsm: avoid call of sleeping functions from atomic context" Revert "tty: n_gsm: replace kicktimer with delayed_work"
Felix Fietkau (1):
netfilter: flowtable_offload: add missing locking
Filipe Manana (1):
btrfs: do not modify log tree while holding a leaf from fs tree locked
Frieder Schrempf (1):
spi: spi-imx: Fix spi_bus_clk if requested clock is higher than input clock
Gaosheng Cui (1):
audit: fix undefined behavior in bit shift for AUDIT_BIT
George Shen (1):
drm/amd/display: Fix calculation for cursor CAB allocation
Gerhard Engleder (1):
tsnep: Fix rotten packets
Gleb Mazovetskiy (1):
tcp: configurable source port perturb table size
Greg Kroah-Hartman (2):
lib/vdso: use "grep -E" instead of "egrep"
Linux 6.0.11
Guchun Chen (1):
drm/amdgpu: disable BACO support on more cards
Hamza Mahfooz (1):
drm/amd/display: only fill dirty rectangles when PSR is enabled
Hangbin Liu (1):
bonding: fix ICMPv6 header handling when receiving IPv6 messages
Hanjun Guo (1):
net: wwan: t7xx: Fix the ACPI memory leak
Hans de Goede (10):
ACPI: video: Add backlight=native DMI quirk for Dell G15 5515 platform/x86: touchscreen_dmi: Add info for the RCA Cambio W101 v2 2-in-1
drm: panel-orientation-quirks: Add quirk for Nanote UMPC-01
drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017)
ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01
Input: goodix - try resetting the controller when no config is set
Input: soc_button_array - add use_low_level_irq module parameter
Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017) platform/x86: ideapad-laptop: Add module parameters to match DMI quirk tables
Harald Freudenberger (1):
s390/zcrypt: fix warning about field-spanning write
Heiko Carstens (2):
s390: always build relocatable kernel s390/crashdump: fix TOD programmable field size
Herbert Xu (1):
af_key: Fix send_acquire race with pfkey_register
Huacai Chen (2):
LoongArch: Clear FPU/SIMD thread info flags for kernel thread
LoongArch: Set _PAGE_DIRTY only if _PAGE_WRITE is set in {pmd,pte}_mkdirty()
Hui Tang (1):
net: mvpp2: fix possible invalid pointer dereference
Imre Deak (1):
drm/i915: Fix warn in intel_display_power_*_domain() functions
Ivan Hu (1):
platform/x86/intel/hid: Add some ACPI device IDs
Ivan Vecera (2):
iavf: Fix a crash during reset task
iavf: Do not restart Tx queues after reset task failure
Jack Xiao (1):
drm/amd/amdgpu: reserve vm invalidation engine for firmware
Jaco Coetzee (1):
nfp: add port from netdev validation for EEPROM access
Jakob Unterwurzacher (1):
arm64: dts: rockchip: lower rk3399-puma-haikou SD controller clock frequency
Jason A. Donenfeld (2):
wifi: airo: do not assign -1 to unsigned char
MIPS: pic32: treat port as signed integer
Jason Ekstrand (1):
dma-buf: Use dma_fence_unwrap_for_each when importing fences
Jay Cornwall (1):
drm/amdkfd: update GFX11 CWSR trap handler
Jens Axboe (1):
io_uring: clear TIF_NOTIFY_SIGNAL if set and task_work not available
Jiasheng Jiang (2):
ASoC: max98373: Add checks for devm_kcalloc
octeontx2-pf: Add check for devm_kcalloc
Johannes Weiner (1):
mm: vmscan: fix extreme overreclaim and swap floods
Jon Hunter (1):
spi: tegra210-quad: Don't initialise DMA if not supported
Jonas Jelonek (1):
wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support
Josef Bacik (1):
btrfs: free btrfs_path before copying root refs to userspace
Jozsef Kadlecsik (1):
netfilter: ipset: restore allowing 64 clashing elements in hash:net,iface
Junxiao Chang (1):
ASoC: hdac_hda: fix hda pcm buffer overflow issue
Kai Vehmanen (1):
ASoC: SOF: ipc3-topology: use old pipeline teardown flow with SOF2.1 and older
Kai-Heng Feng (1):
platform/x86: hp-wmi: Ignore Smart Experience App event
Kazuki Takiguchi (1):
KVM: x86/mmu: Fix race condition in direct_page_fault
Keith Busch (4):
nvme: quiet user passthrough command errors
block: make blk_set_default_limits() private
dm-integrity: set dma_alignment limit in io_hints
dm-log-writes: set dma_alignment limit in io_hints
Kenneth Lee (1):
ceph: Use kcalloc for allocating multiple elements
Krishna Yarlagadda (1):
spi: tegra210-quad: Fix duplicate resource error
Kuniyuki Iwashima (2):
arm64/syscall: Include asm/ptrace.h in syscall_wrapper header. dccp/tcp: Reset saddr on failure after inet6?_hash_connect().
Lee, Alvin (1):
drm/amd/display: Added debug option for forcing subvp num ways
Lennard Gäher (1):
platform/x86: thinkpad_acpi: Enable s2idle quirk for 21A1 machine type
Leon Romanovsky (1):
net: liquidio: simplify if expression
Lev Popov (1):
arm64: dts: rockchip: fix quartz64-a bluetooth configuration
Li Hua (1):
test_kprobes: fix implicit declaration error of test_kprobes
Li Liguang (1):
mm: correctly charge compressed memory to its memcg
Li Zetao (1):
virtio_net: Fix probe failed when modprobe virtio_net
Lin Ma (3):
nfc/nci: fix race with opening and closing io_uring/filetable: fix file reference underflow io_uring/poll: fix poll_refs race with cancelation
Linus Walleij (2):
power: supply: ab8500: Defer thermal zone probe
bus: ixp4xx: Don't touch bit 7 on IXP42x
Liu Jian (2):
net: ethernet: mtk_eth_soc: fix error handling in mtk_open()
net: sparx5: fix error handling in sparx5_port_open()
Liu Shixin (1):
NFC: nci: fix memory leak in nci_rx_data_packet()
Lukas Wunner (1):
serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios()
Lyude Paul (2):
drm/display/dp_mst: Fix drm_dp_mst_add_affected_dsc_crtcs() return code drm/amd/dc/dce120: Fix audio register mapping, stop triggering KASAN
M Chetan Kumar (1):
net: wwan: iosm: fix kernel test robot reported errors
Mahesh Bandewar (1):
ipvlan: hold lower dev to avoid possible use-after-free
Manyi Li (1):
platform/x86: ideapad-laptop: Disable touchpad_switch
Marc Kleine-Budde (1):
spi: spi-imx: spi_imx_transfer_one(): check for DMA transfer first
Marek Marczykowski-Górecki (1):
xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too
Marek Szyprowski (1):
usb: dwc3: exynos: Fix remove() function
Martin Faltesek (3):
nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION
nfc: st-nci: fix memory leaks in EVT_TRANSACTION
nfc: st-nci: fix incorrect sizing calculations in EVT_TRANSACTION
Matthew Auld (1):
drm/i915/ttm: never purge busy objects
Matthieu Baerts (2):
selftests: mptcp: run mptcp_sockopt from a new netns
selftests: mptcp: fix mibit vs mbit mix up
Matti Vaittinen (1):
tools: iio: iio_generic_buffer: Fix read size
Maxim Levitsky (5):
KVM: x86: nSVM: leave nested mode on vCPU free
KVM: x86: forcibly leave nested mode on vCPU reset
KVM: x86: nSVM: harden svm_free_nested against freeing vmcb02 while still in use
KVM: x86: add kvm_leave_nested
KVM: x86: remove exit_int_info warning in svm_handle_exit
Maximilian Luz (2):
platform/surface: aggregator_registry: Add support for Surface Pro 9 platform/surface: aggregator_registry: Add support for Surface Laptop 5
Michael Grzeschik (2):
ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl
usb: dwc3: gadget: conditionally remove requests
Michael Kelley (2):
scsi: storvsc: Fix handling of srb_status and capacity change events x86/ioremap: Fix page aligned size calculation in __ioremap_caller()
Miklos Szeredi (1):
fuse: lock inode unconditionally in fuse_fallocate()
Mikulas Patocka (2):
dm integrity: flush the journal on suspend
dm integrity: clear the journal on suspend
Moshe Shemesh (4):
net/mlx5: Fix FW tracer timestamp calculation
net/mlx5: cmdif, Print info on any firmware cmd failure to tracepoint net/mlx5: Fix handling of entry refcount when command is not issued to FW net/mlx5: Fix sync reset event handler error flow
Mukesh Ojha (1):
gcov: clang: fix the buffer overflow issue
Nathan Chancellor (2):
RISC-V: vdso: Do not add missing symbols to version section in linker script
bpf: Add explicit cast to 'void *' for __BPF_DISPATCHER_UPDATE()
Nicolas Cavallari (1):
wifi: mac80211: Fix ack frame idr leak when mesh has no route
Olivier Moysan (1):
ASoC: stm32: dfsdm: manage cb buffers cleanup
Ondrej Jirman (1):
power: supply: ip5xxx: Fix integer overflow in current_now calculation
Pablo Neira Ayuso (1):
netfilter: nf_tables: do not set up extensions for end interval
Paolo Abeni (1):
selftests: mptcp: gives slow test-case more time
Paul Zhang (1):
wifi: cfg80211: Fix bitrates overflow issue
Pavel Begunkov (4):
selftests/net: don't tests batched TCP io_uring zc io_uring/poll: lockdep annote io_poll_req_insert_locked
io_uring: cmpxchg for poll arm refs release
io_uring: make poll refs more robust
Pawan Gupta (2):
x86/tsx: Add a feature bit for TSX control MSR support x86/pm: Add enumeration check before spec MSRs save/restore setup
Pawel Laszczak (2):
usb: cdnsp: Fix issue with Clear Feature Halt Endpoint
usb: cdnsp: fix issue with ZLP - added TD_SIZE = 1
Perry Yuan (1):
cpufreq: amd-pstate: change amd-pstate driver to be built-in type
Peter Gonda (1):
virt/sev-guest: Prevent IV reuse in the SNP guest driver
Peter Kosyh (1):
net/mlx4: Check retval of mlx4_bitmap_init
Peter Zijlstra (1):
bpf: Convert BPF_DISPATCHER to use static_call() (not ftrace)
Phil Turnbull (4):
wifi: wilc1000: validate pairwise and authentication suite offsets
wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_OPER_CHANNEL attribute
wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_CHANNEL_LIST attribute
wifi: wilc1000: validate number of channels
Philip Yang (1):
drm/amdgpu: Drop eviction lock when allocating PT BO
Pierre-Louis Bossart (2):
ASoC: Intel: soc-acpi: add ES83x6 support to IceLake
ASoC: hda: intel-dsp-config: add ES83x6 quirk for IceLake
Qi Zheng (1):
mm: fix unexpected changes to {failslab|fail_page_alloc}.attr
Ramesh Errabolu (1):
drm/amdgpu: Enable Aldebaran devices to report CU Occupancy
Randy Dunlap (1):
nios2: add FORCE for vmlinuz.gz
Richard Fitzgerald (1):
ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open()
Robin Murphy (1):
gpu: host1x: Avoid trying to use GART on Tegra20
Roi Dayan (1):
net/mlx5: E-Switch, Set correctly vport destination
Roy Novich (1):
net/mlx5: Do not query pci info while pci disabled
Russ Weight (1):
fpga: m10bmc-sec: Fix kconfig dependencies
Sabrina Dubroca (1):
Revert "net: macsec: report real_dev features when HW offloading is enabled"
Samuel Holland (2):
bus: sunxi-rsb: Remove the shutdown callback
bus: sunxi-rsb: Support atomic transfers
Santiago Ruano Rincón (1):
net/cdc_ncm: Fix multicast RX support for CDC NCM devices with ZLP
Sean Christopherson (1):
drm/i915/gvt: Get reference to KVM iff attachment to VM is successful
Sean Nyekjaer (1):
spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run
SeongJae Park (1):
mm/damon/sysfs-schemes: skip stats update if the scheme directory is removed
Shay Drory (1):
net/mlx5: SF: Fix probing active SFs during driver probe phase
Shin'ichiro Kawasaki (1):
scsi: mpi3mr: Suppress command reply debug prints
Slawomir Laba (1):
iavf: Fix race condition between iavf_shutdown and iavf_remove
Stefan Assmann (1):
iavf: remove INITIAL_MAC_SET to allow gARP to work properly
Stefan Haberland (1):
s390/dasd: fix no record found for raw_track_access
Steve Su (1):
drm/amd/display: Fix gpio port mapping issue
Svyatoslav Feldsherov (1):
fs: do not update freeing inode i_io_list
Takashi Iwai (1):
Input: i8042 - apply probe defer to more ASUS ZenBook models
Thinh Nguyen (2):
usb: dwc3: gadget: Return -ESHUTDOWN on ep disable
usb: dwc3: gadget: Clear ep descriptor last
Thomas Jarosch (1):
xfrm: Fix oops in __xfrm_state_delete()
Thomas Zeitlhofer (1):
net: neigh: decrement the family specific qlen
Tsung-hua Lin (1):
drm/amd/display: No display after resume from WB/CB
Tyler J. Stachecki (1):
wifi: ath11k: Fix QCN9074 firmware boot on x86
Vasanth Sadhasivan (1):
can: gs_usb: remove dma allocations
Vishwanath Pai (1):
netfilter: ipset: regression in ip_set_hash_ip.c
Vitaly Kuznetsov (1):
x86/hyperv: Restore VP assist page after cpu offlining/onlining
Vladimir Oltean (3):
net: dsa: sja1105: disallow C45 transactions on the BASE-TX MDIO bus
net: enetc: cache accesses to &priv->si->hw
net: enetc: preserve TX ring priority across reconfiguration
Wang Hai (2):
net: pch_gbe: fix potential memleak in pch_gbe_tx_queue()
arcnet: fix potential memory leak in com20020_probe()
Wang ShaoBo (1):
net: wwan: iosm: use ACPI_FREE() but not kfree() in ipc_pcie_read_bios_cfg()
Wei Yongjun (2):
net: phy: at803x: fix error return code in at803x_probe() s390/ap: fix memory leak in ap_init_qci_info()
Wyes Karny (1):
cpufreq: amd-pstate: cpufreq: amd-pstate: reset MSR_AMD_PERF_CTL register at init
Xin Long (3):
tipc: set con sock in tipc_conn_alloc
tipc: add an extra conn_get in tipc_conn_alloc
net: sched: allow act_ct to be built without NF_NAT
Xiongfeng Wang (3):
spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld()
octeontx2-af: Fix reference count issue in rvu_sdp_init() platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr()
Xiubo Li (1):
ceph: fix NULL pointer dereference for req->r_session
Yan Cangang (1):
net: ethernet: mtk_eth_soc: fix resource leak in error path
Yang Yingliang (8):
regulator: rt5759: fix OOB in validate_desc()
regulator: core: fix UAF in destroy_regulator()
tee: optee: fix possible memory leak in optee_register_device()
octeontx2-af: debugsfs: fix pci device refcount leak
net: pch_gbe: fix pci device refcount leak while module exiting
Drivers: hv: vmbus: fix double free in the error path of vmbus_add_channel_work()
Drivers: hv: vmbus: fix possible memory leak in vmbus_device_register()
bnx2x: fix pci device refcount leak in bnx2x_vf_is_pcie_pending()
Youlin Li (1):
selftests/bpf: Add verifier test for release_reference()
Yu Kuai (1):
block, bfq: fix null pointer dereference in bfq_bio_bfqg()
Yu Liao (1):
net: thunderx: Fix the ACPI memory leak
Yuan Can (1):
net: dm9051: Fix missing dev_kfree_skb() in dm9051_loop_rx()
YueHaibing (2):
macsec: Fix invalid error code set
tipc: check skb_linearize() return value in tipc_disc_rcv()
Zeng Heng (1):
regulator: core: fix kobject release warning and memory leak in regulator_register()
Zhang Changzhong (3):
net/qla3xxx: fix potential memleak in ql3xxx_send()
sfc: fix potential memleak in __ef100_hard_start_xmit()
net: marvell: prestera: add missing unregister_netdev() in prestera_port_create()
Zhang Xiaoxu (1):
zonefs: Fix race between modprobe and mount
Zhen Lei (1):
btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs()
Zheng Yongjun (1):
ARM: mxs: fix memory leak in mxs_machine_init()
Zhengchao Shao (1):
9p/fd: fix issue of list_del corruption in p9_fd_cancel()
Zhou Guanghui (1):
scsi: iscsi: Fix possible memory leak when device_register() failed
Zhu Ning (1):
ASoC: sof_es8336: reduce pop noise on speaker
Ziyang Xuan (2):
net: ethernet: mtk_eth_soc: fix potential memory leak in mtk_rx_alloc()
ipv4: Fix error return code in fib_table_insert()
ruanjinjie (1):
xen/platform-pci: add missing free_irq() in error path
taozhang (1):
wifi: mac80211: fix memory free error when registering wiphy fail
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/iio/adc/aspeed,ast2600-adc.yaml +0 -7
@@ -62,13 +62,6 @@ properties: description: Inform the driver that last channel will be used to sensor battery. - aspeed,trim-data-valid: - type: boolean - description: | - The ADC reference voltage can be calibrated to obtain the trimming - data which will be stored in otp. This property informs the driver that - the data store in the otp is valid. - required: - compatible - reg
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 0 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/boot/dts/am335x-pcm-953.dtsi +13 -15
@@ -12,22 +12,20 @@ / { compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx"; /* Power */ - regulators { - vcc3v3: fixedregulator@1 { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - }; + vcc3v3: fixedregulator1 { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; - vcc1v8: fixedregulator@2 { - compatible = "regulator-fixed"; - regulator-name = "vcc1v8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - }; + vcc1v8: fixedregulator2 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; }; /* User IO */
arch/arm/boot/dts/at91sam9g20ek_common.dtsi +9 -0
@@ -39,6 +39,13 @@ pinctrl_pck0_as_mck: pck0_as_mck { }; + usb1 { + pinctrl_usb1_vbus_gpio: usb1_vbus_gpio { + atmel,pins = + <AT91_PIOC 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PC5 GPIO */ + }; + }; + mmc0_slot1 { pinctrl_board_mmc0_slot1: mmc0_slot1-board { atmel,pins =
@@ -84,6 +91,8 @@ macb0: ethernet@fffc4000 { }; usb1: gadget@fffa4000 { + pinctrl-0 = <&pinctrl_usb1_vbus_gpio>; + pinctrl-names = "default"; atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>; status = "okay"; };
arch/arm/boot/dts/imx6q-prti6q.dts +2 -2
@@ -364,8 +364,8 @@ wifi { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_wifi>; interrupts-extended = <&gpio1 30 IRQ_TYPE_LEVEL_HIGH>; - ref-clock-frequency = "38400000"; - tcxo-clock-frequency = "19200000"; + ref-clock-frequency = <38400000>; + tcxo-clock-frequency = <19200000>; }; };
arch/arm/mach-mxs/mach-mxs.c +3 -1
@@ -393,8 +393,10 @@ static void __init mxs_machine_init(void) root =of_find_node_by_path ("/" ); ret =of_property_read_string (root,"model" , &soc_dev_attr->machine); -if (ret) +if (ret) { +kfree (soc_dev_attr);return ; + } soc_dev_attr->family ="Freescale MXS Family" ; soc_dev_attr->soc_id =mxs_get_soc_id ();
arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts +1 -1
@@ -207,7 +207,7 @@ &sdmmc { cap-sd-highspeed; cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; disable-wp; - max-frequency = <150000000>; + max-frequency = <40000000>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; vmmc-supply = <&vcc3v3_baseboard>;
arch/arm64/boot/dts/rockchip/rk3566-quartz64-a.dts +4 -3
@@ -740,7 +740,7 @@ &uart0 { &uart1 { pinctrl-names = "default"; - pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>; + pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn &uart1m0_rtsn>; status = "okay"; uart-has-rtscts;
@@ -748,13 +748,14 @@ bluetooth { compatible = "brcm,bcm43438-bt"; clocks = <&rk817 1>; clock-names = "lpo"; - device-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; - host-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; + host-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; + device-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>; vbat-supply = <&vcc_sys>; vddio-supply = <&vcca1v8_pmu>; + max-speed = <3000000>; }; };
arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts +1 -1
@@ -176,7 +176,7 @@ rk809: pmic@20 { compatible = "rockchip,rk809"; reg = <0x20>; interrupt-parent = <&gpio0>; - interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>; + interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>; clock-output-names = "rk808-clkout1", "rk808-clkout2"; pinctrl-names = "default";
arch/arm64/include/asm/syscall_wrapper.h +1 -1
@@ -8,7 +8,7 @@#ifndef __ASM_SYSCALL_WRAPPER_H#define __ASM_SYSCALL_WRAPPER_H -struct pt_regs ; +#include <asm/ptrace.h> #define SC_ARM64_REGS_TO_ARGS (x, ...) \ __MAP(x,__SC_ARGS \
arch/loongarch/include/asm/pgtable.h +6 -2
@@ -349,7 +349,9 @@ static inline pte_t pte_mkclean(pte_t pte)static inline pte_t pte_mkdirty (pte_t pte) { -pte_val (pte) |= (_PAGE_DIRTY | _PAGE_MODIFIED); +pte_val (pte) |= _PAGE_MODIFIED; +if (pte_val (pte) & _PAGE_WRITE) +pte_val (pte) |= _PAGE_DIRTY;return pte; }
@@ -475,7 +477,9 @@ static inline pmd_t pmd_mkclean(pmd_t pmd)static inline pmd_t pmd_mkdirty (pmd_t pmd) { -pmd_val (pmd) |= (_PAGE_DIRTY | _PAGE_MODIFIED); +pmd_val (pmd) |= _PAGE_MODIFIED; +if (pmd_val (pmd) & _PAGE_WRITE) +pmd_val (pmd) |= _PAGE_DIRTY;return pmd; }
arch/loongarch/kernel/process.c +5 -4
@@ -152,7 +152,7 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) childregs->csr_crmd = p->thread.csr_crmd; childregs->csr_prmd = p->thread.csr_prmd; childregs->csr_ecfg = p->thread.csr_ecfg; -return 0 ; + goto out; }/* user thread */
@@ -171,14 +171,15 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args)*/ childregs->csr_euen =0 ; +if (clone_flags &CLONE_SETTLS ) + childregs->regs[2 ] = tls; + +out:clear_tsk_thread_flag (p,TIF_USEDFPU );clear_tsk_thread_flag (p,TIF_USEDSIMD );clear_tsk_thread_flag (p,TIF_LSX_CTX_LIVE );clear_tsk_thread_flag (p,TIF_LASX_CTX_LIVE ); -if (clone_flags &CLONE_SETTLS ) - childregs->regs[2 ] = tls; -return 0 ; }
arch/mips/include/asm/fw/fw.h +1 -1
@@ -26,6 +26,6 @@ extern char *fw_getcmdline(void);extern void fw_meminit (void );extern char *fw_getenv (char *name);extern unsigned long fw_getenvl (char *name); -extern void fw_init_early_console (char port); +extern void fw_init_early_console (void );#endif /* __ASM_FW_H_ */
arch/mips/pic32/pic32mzda/early_console.c +6 -7
@@ -27,7 +27,7 @@#define U_BRG (x) (UART_BASE(x) + 0x40)static void __iomem *uart_base; -static char console_port =-1 ; +static int console_port =-1 ;static int __init configure_uart_pins (int port) {
@@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port)return 0 ; } -static void __init configure_uart (char port,int baud) +static void __init configure_uart (int port,int baud) {u32 pbclk;
@@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud) uart_base + PIC32_SET(U_STA(port))); } -static void __init setup_early_console (char port,int baud) +static void __init setup_early_console (int port,int baud) {if (configure_uart_pins (port))return ;
@@ -130,16 +130,15 @@ static int __init get_baud_from_cmdline(char *arch_cmdline)return baud; } -void __init fw_init_early_console (char port) +void __init fw_init_early_console (void ) {char *arch_cmdline =pic32_getcmdline (); -int baud =-1 ; +int baud, port; uart_base =ioremap (PIC32_BASE_UART ,0xc00 ); baud =get_baud_from_cmdline (arch_cmdline); -if (port ==-1 ) - port =get_port_from_cmdline (arch_cmdline); + port =get_port_from_cmdline (arch_cmdline);if (port ==-1 ) port =EARLY_CONSOLE_PORT ;
arch/mips/pic32/pic32mzda/init.c +1 -1
@@ -47,7 +47,7 @@ void __init plat_mem_setup(void)strlcpy (arcs_cmdline, boot_command_line,COMMAND_LINE_SIZE );#ifdef CONFIG_EARLY_PRINTK -fw_init_early_console (-1 ); +fw_init_early_console ();#endif pic32_config_init (); }
arch/nios2/boot/Makefile +1 -1
@@ -20,7 +20,7 @@ $(obj)/vmlinux.bin: vmlinux FORCE $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE $(call if_changed,gzip) -$(obj)/vmImage: $(obj)/vmlinux.gz +$(obj)/vmImage: $(obj)/vmlinux.gz FORCE $(call if_changed,uimage) @$(kecho) 'Kernel: $@ is ready'
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +38 -0
@@ -3,6 +3,8 @@ #include "fu540-c000.dtsi" #include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pwm/pwm.h> /* Clock frequency (in Hz) of the PCB crystal for rtcclk */ #define RTCCLK_FREQ 1000000
@@ -42,6 +44,42 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 10 GPIO_ACTIVE_LOW>; }; + + led-controller { + compatible = "pwm-leds"; + + led-d1 { + pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d1"; + }; + + led-d2 { + pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d2"; + }; + + led-d3 { + pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d3"; + }; + + led-d4 { + pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d4"; + }; + }; }; &uart0 {
arch/riscv/kernel/vdso/Makefile +3 -0
@@ -28,6 +28,9 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) obj-y += vdso.o CPPFLAGS_vdso.lds += -P -C -U$(ARCH) +ifneq ($(filter vgettimeofday, $(vdso-syms)),) +CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY +endif # Disable -pg to prevent insert call site CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
arch/riscv/kernel/vdso/vdso.lds.S +2 -0
@@ -68,9 +68,11 @@ VERSION LINUX_4.15 { global: __vdso_rt_sigreturn; +#ifdef HAS_VGETTIMEOFDAY __vdso_gettimeofday; __vdso_clock_gettime; __vdso_clock_getres; +#endif __vdso_getcpu; __vdso_flush_icache; local: *;
arch/s390/Kconfig +3 -3
@@ -568,8 +568,7 @@ config EXPOLINE_FULL endchoice config RELOCATABLE - bool "Build a relocatable kernel" - default y + def_bool y help This builds a kernel image that retains relocation information so it can be loaded at an arbitrary address.
@@ -578,10 +577,11 @@ config RELOCATABLE bootup process. The relocations make the kernel image about 15% larger (compressed 10%), but are discarded at runtime. + Note: this option exists only for documentation purposes, please do + not remove it. config RANDOMIZE_BASE bool "Randomize the address of the kernel image (KASLR)" - depends on RELOCATABLE default y help In support of Kernel Address Space Layout Randomization (KASLR),
arch/s390/Makefile +0 -2
@@ -14,10 +14,8 @@ KBUILD_AFLAGS_MODULE += -fPIC KBUILD_CFLAGS_MODULE += -fPIC KBUILD_AFLAGS += -m64 KBUILD_CFLAGS += -m64 -ifeq ($(CONFIG_RELOCATABLE),y) KBUILD_CFLAGS += -fPIE LDFLAGS_vmlinux := -pie -endif aflags_dwarf := -Wa,-gdwarf-2 KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__ ifndef CONFIG_AS_IS_LLVM
arch/s390/boot/Makefile +1 -2
@@ -37,9 +37,8 @@ CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o -obj-y += version.o pgm_check_info.o ctype.o ipl_data.o +obj-y += version.o pgm_check_info.o ctype.o ipl_data.o machine_kexec_reloc.o obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o -obj-$(CONFIG_RELOCATABLE) += machine_kexec_reloc.o obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o
arch/s390/boot/startup.c +1 -2
@@ -285,8 +285,7 @@ void startup_kernel(void)clear_bss_section ();copy_bootdata (); -if (IS_ENABLED (CONFIG_RELOCATABLE )) -handle_relocs (__kaslr_offset); +handle_relocs (__kaslr_offset);if (__kaslr_offset) {/*
arch/s390/kernel/crash_dump.c +1 -1
@@ -45,7 +45,7 @@ struct save_area {u64 fprs[16 ];u32 fpc;u32 prefix; -u64 todpreg; +u32 todpreg;u64 timer;u64 todcmp;u64 vxrs_low[16 ];
arch/x86/hyperv/hv_init.c +26 -28
67 lines not on this page · raw message
arch/x86/include/asm/cpufeatures.h +3 -0
@@ -305,6 +305,9 @@#define X86_FEATURE_USE_IBPB_FW (11*32+16)/* "" Use IBPB during runtime firmware calls */ #define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17)/* "" Fill RSB on VM exit when EIBRS is enabled */ + +#define X86_FEATURE_MSR_TSX_CTRL (11*32+20)/* "" MSR IA32_TSX_CTRL (Intel) implemented */ +/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */ #define X86_FEATURE_AVX512_BF16 (12*32+ 5)/* AVX512 BFLOAT16 instructions */
arch/x86/kernel/cpu/tsx.c +17 -21
@@ -58,24 +58,6 @@ static void tsx_enable(void)wrmsrl (MSR_IA32_TSX_CTRL , tsx); } -static bool tsx_ctrl_is_supported (void ) -{ -u64 ia32_cap =x86_read_arch_cap_msr (); - -/* -* TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this -* MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. -* -* TSX control (aka MSR_IA32_TSX_CTRL) is only available after a -* microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES -* bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get -* MSR_IA32_TSX_CTRL support even after a microcode update. Thus, -* tsx= cmdline requests will do nothing on CPUs without -* MSR_IA32_TSX_CTRL support. -*/ -return !!(ia32_cap &ARCH_CAP_TSX_CTRL_MSR ); -} -static enum tsx_ctrl_states x86_get_tsx_auto_mode (void ) {if (boot_cpu_has_bug (X86_BUG_TAA ))
@@ -135,7 +117,7 @@ static void tsx_clear_cpuid(void)rdmsrl (MSR_TSX_FORCE_ABORT , msr); msr |=MSR_TFA_TSX_CPUID_CLEAR ;wrmsrl (MSR_TSX_FORCE_ABORT , msr); - }else if (tsx_ctrl_is_supported ()) { + }else if (cpu_feature_enabled (X86_FEATURE_MSR_TSX_CTRL )) {rdmsrl (MSR_IA32_TSX_CTRL , msr); msr |=TSX_CTRL_CPUID_CLEAR ;wrmsrl (MSR_IA32_TSX_CTRL , msr);
@@ -158,7 +140,8 @@ static void tsx_dev_mode_disable(void)u64 mcu_opt_ctrl;/* Check if RTM_ALLOW exists */ -if (!boot_cpu_has_bug (X86_BUG_TAA ) || !tsx_ctrl_is_supported () || +if (!boot_cpu_has_bug (X86_BUG_TAA ) || + !cpu_feature_enabled (X86_FEATURE_MSR_TSX_CTRL ) || !cpu_feature_enabled (X86_FEATURE_SRBDS_CTRL ))return ;
@@ -191,7 +174,20 @@ void __init tsx_init(void)return ; } -if (!tsx_ctrl_is_supported ()) { +/* +* TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this +* MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. +* +* TSX control (aka MSR_IA32_TSX_CTRL) is only available after a +* microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES +* bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get +* MSR_IA32_TSX_CTRL support even after a microcode update. Thus, +* tsx= cmdline requests will do nothing on CPUs without +* MSR_IA32_TSX_CTRL support. +*/ +if (x86_read_arch_cap_msr () &ARCH_CAP_TSX_CTRL_MSR ) { +setup_force_cpu_cap (X86_FEATURE_MSR_TSX_CTRL ); + }else { tsx_ctrl_state =TSX_CTRL_NOT_SUPPORTED ;return ; }
arch/x86/kvm/mmu/mmu.c +7 -6
@@ -2431,6 +2431,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm, {bool list_unstable, zapped_root = false; +lockdep_assert_held_write (&kvm->mmu_lock);trace_kvm_mmu_prepare_zap_page (sp); ++kvm->stat.mmu_shadow_zapped; *nr_zapped =mmu_zap_unsync_children (kvm, sp, invalid_list);
@@ -4250,14 +4251,14 @@ static int direct_page_fault(struct kvm_vcpu *vcpu, struct kvm_page_fault *faultif (is_page_fault_stale (vcpu, fault, mmu_seq)) goto out_unlock; - r =make_mmu_pages_available (vcpu); -if (r) - goto out_unlock; - -if (is_tdp_mmu_fault) +if (is_tdp_mmu_fault) { r =kvm_tdp_mmu_map (vcpu, fault); -else + }else { + r =make_mmu_pages_available (vcpu); +if (r) + goto out_unlock; r =__direct_map (vcpu, fault); + } out_unlock:if (is_tdp_mmu_fault)
arch/x86/kvm/svm/nested.c +3 -3
@@ -1143,6 +1143,9 @@ void svm_free_nested(struct vcpu_svm *svm)if (!svm->nested.initialized)return ; +if (WARN_ON_ONCE (svm->vmcb != svm->vmcb01.ptr)) +svm_switch_vmcb (svm, &svm->vmcb01); +svm_vcpu_free_msrpm (svm->nested.msrpm); svm->nested.msrpm =NULL ;
@@ -1161,9 +1164,6 @@ void svm_free_nested(struct vcpu_svm *svm) svm->nested.initialized = false; } -/* -* Forcibly leave nested mode in order to be able to reset the VCPU later on. -*/ void svm_leave_nested (struct kvm_vcpu *vcpu) {struct vcpu_svm *svm =to_svm (vcpu);
arch/x86/kvm/svm/svm.c +1 -15
@@ -346,12 +346,6 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer)return 0 ; } -static int is_external_interrupt (u32 info) -{ - info &=SVM_EVTINJ_TYPE_MASK |SVM_EVTINJ_VALID ; -return info == (SVM_EVTINJ_VALID |SVM_EVTINJ_TYPE_INTR ); -} -static u32 svm_get_interrupt_shadow (struct kvm_vcpu *vcpu) {struct vcpu_svm *svm =to_svm (vcpu);
@@ -1440,6 +1434,7 @@ static void svm_vcpu_free(struct kvm_vcpu *vcpu)*/ svm_clear_current_vmcb (svm->vmcb); +svm_leave_nested (vcpu);svm_free_nested (svm);sev_free_vcpu (vcpu);
@@ -3426,15 +3421,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)return 0 ; } -if (is_external_interrupt (svm->vmcb->control.exit_int_info) && - exit_code !=SVM_EXIT_EXCP_BASE +PF_VECTOR && - exit_code !=SVM_EXIT_NPF && exit_code !=SVM_EXIT_TASK_SWITCH && - exit_code !=SVM_EXIT_INTR && exit_code !=SVM_EXIT_NMI ) -printk (KERN_ERR "%s: unexpected exit_int_info 0x%x " -"exit_code 0x%x\n" , - __func__, svm->vmcb->control.exit_int_info, - exit_code); -if (exit_fastpath !=EXIT_FASTPATH_NONE )return 1 ;
arch/x86/kvm/vmx/nested.c +0 -3
@@ -6294,9 +6294,6 @@ static int vmx_get_nested_state(struct kvm_vcpu *vcpu,return kvm_state.size; } -/* -* Forcibly leave nested mode in order to be able to reset the VCPU later on. -*/ void vmx_leave_nested (struct kvm_vcpu *vcpu) {if (is_guest_mode (vcpu)) {
arch/x86/kvm/x86.c +17 -1
@@ -611,6 +611,12 @@ void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu) }EXPORT_SYMBOL_GPL (kvm_deliver_exception_payload); +/* Forcibly leave the nested mode in cases like a vCPU reset */ +static void kvm_leave_nested (struct kvm_vcpu *vcpu) +{ + kvm_x86_ops.nested_ops->leave_nested (vcpu); +} +static void kvm_multiple_exception (struct kvm_vcpu *vcpu,unsigned nr,bool has_error,u32 error_code,bool has_payload,unsigned long payload,bool reinject)
@@ -5154,7 +5160,7 @@ static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,if (events->flags &KVM_VCPUEVENT_VALID_SMM ) {if (!!(vcpu->arch.hflags &HF_SMM_MASK ) != events->smi.smm) { - kvm_x86_ops.nested_ops->leave_nested (vcpu); +kvm_leave_nested (vcpu);kvm_smm_changed (vcpu, events->smi.smm); }
@@ -11789,8 +11795,18 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)WARN_ON_ONCE (!init_event && (old_cr0 ||kvm_read_cr3 (vcpu) ||kvm_read_cr4 (vcpu))); +/* +* SVM doesn't unconditionally VM-Exit on INIT and SHUTDOWN, thus it's +* possible to INIT the vCPU while L2 is active. Force the vCPU back +* into L1 as EFER.SVME is cleared on INIT (along with all other EFER +* bits), i.e. virtualization is disabled. +*/ +if (is_guest_mode (vcpu)) +kvm_leave_nested (vcpu); +kvm_lapic_reset (vcpu, init_event); +WARN_ON_ONCE (is_guest_mode (vcpu) ||is_smm (vcpu)); vcpu->arch.hflags =0 ; vcpu->arch.smi_pending =0 ;
arch/x86/kvm/xen.c +23 -9
@@ -954,6 +954,14 @@ static int kvm_xen_hypercall_complete_userspace(struct kvm_vcpu *vcpu)return kvm_xen_hypercall_set_result (vcpu, run->xen.u.hcall.result); } +static inline int max_evtchn_port (struct kvm *kvm) +{ +if (IS_ENABLED (CONFIG_64BIT ) && kvm->arch.xen.long_mode) +return EVTCHN_2L_NR_CHANNELS ; +else +return COMPAT_EVTCHN_2L_NR_CHANNELS ; +} +static bool wait_pending_event (struct kvm_vcpu *vcpu,int nr_ports,evtchn_port_t *ports) {
@@ -1042,6 +1050,10 @@ static bool kvm_xen_schedop_poll(struct kvm_vcpu *vcpu, bool longmode, *r = -EFAULT ; goto out; } +if (ports[i] >=max_evtchn_port (vcpu->kvm)) { + *r = -EINVAL ; + goto out; + } }if (sched_poll.nr_ports ==1 )
@@ -1216,6 +1228,7 @@ int kvm_xen_hypercall(struct kvm_vcpu *vcpu)bool longmode;u64 input, params[6 ], r = -ENOSYS ;bool handled = false; +u8 cpl; input = (u64 )kvm_register_read (vcpu,VCPU_REGS_RAX );
@@ -1243,9 +1256,17 @@ int kvm_xen_hypercall(struct kvm_vcpu *vcpu) params[5] = (u64)kvm_r9_read(vcpu); }#endif + cpl =static_call (kvm_x86_get_cpl)(vcpu);trace_kvm_xen_hypercall (input, params[0 ], params[1 ], params[2 ], params[3 ], params[4 ], params[5 ]); +/* +* Only allow hypercall acceleration for CPL0. The rare hypercalls that +* are permitted in guest userspace can be handled by the VMM. +*/ +if (unlikely (cpl >0 )) + goto handle_in_userspace; +switch (input) {case __HYPERVISOR_xen_version:if (params[0 ] == XENVER_version && vcpu->kvm->arch.xen.xen_version) {
@@ -1280,10 +1301,11 @@ int kvm_xen_hypercall(struct kvm_vcpu *vcpu)if (handled)return kvm_xen_hypercall_set_result (vcpu, r); +handle_in_userspace: vcpu->run->exit_reason =KVM_EXIT_XEN ; vcpu->run->xen.type =KVM_EXIT_XEN_HCALL ; vcpu->run->xen.u.hcall.longmode = longmode; - vcpu->run->xen.u.hcall.cpl =static_call (kvm_x86_get_cpl)(vcpu); + vcpu->run->xen.u.hcall.cpl = cpl; vcpu->run->xen.u.hcall.input = input; vcpu->run->xen.u.hcall.params[0 ] = params[0 ]; vcpu->run->xen.u.hcall.params[1 ] = params[1 ];
@@ -1298,14 +1320,6 @@ int kvm_xen_hypercall(struct kvm_vcpu *vcpu)return 0 ; } -static inline int max_evtchn_port (struct kvm *kvm) -{ -if (IS_ENABLED (CONFIG_64BIT ) && kvm->arch.xen.long_mode) -return EVTCHN_2L_NR_CHANNELS ; -else -return COMPAT_EVTCHN_2L_NR_CHANNELS ; -} -static void kvm_xen_check_poller (struct kvm_vcpu *vcpu,int port) {int poll_evtchn = vcpu->arch.xen.poll_evtchn;
arch/x86/mm/ioremap.c +7 -1
@@ -216,9 +216,15 @@ __ioremap_caller(resource_size_t phys_addr, unsigned long size,* Mappings have to be page-aligned */ offset = phys_addr & ~PAGE_MASK ; - phys_addr &=PHYSICAL_PAGE_MASK ; + phys_addr &=PAGE_MASK ; size =PAGE_ALIGN (last_addr+1 ) - phys_addr; +/* +* Mask out any bits not part of the actual physical +* address, like memory encryption bits. +*/ + phys_addr &=PHYSICAL_PAGE_MASK ; + retval =memtype_reserve (phys_addr, (u64 )phys_addr + size, pcm, &new_pcm);if (retval) {
arch/x86/power/cpu.c +15 -8
@@ -513,16 +513,23 @@ static int pm_cpu_check(const struct x86_cpu_id *c)static void pm_save_spec_msr (void ) { -u32 spec_msr_id[] = { -MSR_IA32_SPEC_CTRL , -MSR_IA32_TSX_CTRL , -MSR_TSX_FORCE_ABORT , -MSR_IA32_MCU_OPT_CTRL , -MSR_AMD64_LS_CFG , -MSR_AMD64_DE_CFG , +struct msr_enumeration { +u32 msr_no; +u32 feature; + } msr_enum[] = { + {MSR_IA32_SPEC_CTRL ,X86_FEATURE_MSR_SPEC_CTRL }, + {MSR_IA32_TSX_CTRL ,X86_FEATURE_MSR_TSX_CTRL }, + {MSR_TSX_FORCE_ABORT ,X86_FEATURE_TSX_FORCE_ABORT }, + {MSR_IA32_MCU_OPT_CTRL ,X86_FEATURE_SRBDS_CTRL }, + {MSR_AMD64_LS_CFG ,X86_FEATURE_LS_CFG_SSBD }, + {MSR_AMD64_DE_CFG ,X86_FEATURE_LFENCE_RDTSC }, }; +int i; -msr_build_context (spec_msr_id,ARRAY_SIZE (spec_msr_id)); +for (i =0 ; i <ARRAY_SIZE (msr_enum); i++) { +if (boot_cpu_has (msr_enum[i].feature)) +msr_build_context (&msr_enum[i].msr_no,1 ); + } }static int pm_check_save_msr (void )
block/bfq-cgroup.c +4 -0
@@ -615,6 +615,10 @@ struct bfq_group *bfq_bio_bfqg(struct bfq_data *bfqd, struct bio *bio)struct bfq_group *bfqg;while (blkg) { +if (!blkg->online) { + blkg = blkg->parent; +continue ; + } bfqg =blkg_to_bfqg (blkg);if (bfqg->online) {bio_associate_blkg_from_css (bio, &blkg->blkcg->css);
block/blk-mq.c +6 -1
@@ -3956,9 +3956,14 @@ EXPORT_SYMBOL(__blk_mq_alloc_disk);struct gendisk *blk_mq_alloc_disk_for_queue (struct request_queue *q,struct lock_class_key *lkclass) { +struct gendisk *disk; +if (!blk_get_queue (q))return NULL ; -return __alloc_disk_node (q,NUMA_NO_NODE , lkclass); + disk =__alloc_disk_node (q,NUMA_NO_NODE , lkclass); +if (!disk) +blk_put_queue (q); +return disk; }EXPORT_SYMBOL (blk_mq_alloc_disk_for_queue);
block/blk-settings.c +0 -1
@@ -59,7 +59,6 @@ void blk_set_default_limits(struct queue_limits *lim) lim->zone_write_granularity =0 ; lim->dma_alignment =511 ; } -EXPORT_SYMBOL (blk_set_default_limits);/** * blk_set_stacking_limits - set default limits for stacking devices
block/blk.h +1 -0
@@ -324,6 +324,7 @@ void blk_rq_set_mixed_merge(struct request *rq);bool blk_rq_merge_ok (struct request *rq,struct bio *bio);enum elv_merge blk_try_merge (struct request *rq,struct bio *bio); +void blk_set_default_limits (struct queue_limits *lim);int blk_dev_init (void );/*
drivers/acpi/video_detect.c +14 -0
@@ -578,6 +578,20 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_BOARD_NAME, "GMxRGxx"), }, }, +/* +* Models which have nvidia-ec-wmi support, but should not use it. +* Note this indicates a likely firmware bug on these models and should +* be revisited if/when Linux gets support for dynamic mux mode. +*/ + { + .callback = video_detect_force_native, + /* Dell G15 5515 */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"), + }, + }, + /* * Desktops which falsely report a backlight and which our heuristics * for this do not catch.
drivers/android/binder_alloc.c +7 -0
@@ -760,6 +760,12 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,const char *failure_string;struct binder_buffer *buffer; +if (unlikely (vma->vm_mm != alloc->vma_vm_mm)) { + ret = -EINVAL ; + failure_string ="invalid vma->vm_mm" ; + goto err_invalid_mm; + } +mutex_lock (&binder_alloc_mmap_lock);if (alloc->buffer_size) { ret = -EBUSY ;
@@ -806,6 +812,7 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc, alloc->buffer_size =0 ; err_already_mapped:mutex_unlock (&binder_alloc_mmap_lock); +err_invalid_mm: binder_alloc_debug(BINDER_DEBUG_USER_ERROR, "%s: %d %lx-%lx %s failed %d\n", __func__, alloc->pid, vma->vm_start, vma->vm_end,
drivers/bus/intel-ixp4xx-eb.c +3 -6
@@ -49,7 +49,7 @@#define IXP4XX_EXP_SIZE_SHIFT 10#define IXP4XX_EXP_CNFG_0 BIT(9)/* Always zero */ #define IXP43X_EXP_SYNC_INTEL BIT(8)/* Only on IXP43x */ -#define IXP43X_EXP_EXP_CHIP BIT(7)/* Only on IXP43x */ +#define IXP43X_EXP_EXP_CHIP BIT(7)/* Only on IXP43x, dangerous to touch on IXP42x */ #define IXP4XX_EXP_BYTE_RD16 BIT(6)#define IXP4XX_EXP_HRDY_POL BIT(5)/* Only on IXP42x */ #define IXP4XX_EXP_MUX_EN BIT(4)
@@ -57,8 +57,6 @@#define IXP4XX_EXP_WORD BIT(2)/* Always zero */ #define IXP4XX_EXP_WR_EN BIT(1)#define IXP4XX_EXP_BYTE_EN BIT(0) -#define IXP42X_RESERVED (BIT(30)|IXP4XX_EXP_CNFG_0|BIT(8)|BIT(7)|IXP4XX_EXP_WORD) -#define IXP43X_RESERVED (BIT(30)|IXP4XX_EXP_CNFG_0|BIT(5)|IXP4XX_EXP_WORD)#define IXP4XX_EXP_CNFG0 0x20#define IXP4XX_EXP_CNFG0_MEM_MAP BIT(31)
@@ -252,10 +250,9 @@ static void ixp4xx_exp_setup_chipselect(struct ixp4xx_eb *eb, cs_cfg |= val <<IXP4XX_EXP_CYC_TYPE_SHIFT ; } -if (eb->is_42x) - cs_cfg &= ~IXP42X_RESERVED ;if (eb->is_43x) { - cs_cfg &= ~IXP43X_RESERVED ; +/* Should always be zero */ + cs_cfg &= ~IXP4XX_EXP_WORD ;/* * This bit for Intel strata flash is currently unused, but let's * report it if we find one.
drivers/bus/sunxi-rsb.c +21 -17
@@ -267,6 +267,9 @@ EXPORT_SYMBOL_GPL(sunxi_rsb_driver_register);/* common code that starts a transfer */ static int _sunxi_rsb_run_xfer (struct sunxi_rsb *rsb) { +u32 int_mask, status; +bool timeout; +if (readl (rsb->regs +RSB_CTRL ) &RSB_CTRL_START_TRANS ) {dev_dbg (rsb->dev,"RSB transfer still in progress\n" );return -EBUSY ;
@@ -274,13 +277,23 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb)reinit_completion (&rsb->complete); -writel (RSB_INTS_LOAD_BSY |RSB_INTS_TRANS_ERR |RSB_INTS_TRANS_OVER , - rsb->regs +RSB_INTE ); + int_mask =RSB_INTS_LOAD_BSY |RSB_INTS_TRANS_ERR |RSB_INTS_TRANS_OVER ; +writel (int_mask, rsb->regs +RSB_INTE );writel (RSB_CTRL_START_TRANS |RSB_CTRL_GLOBAL_INT_ENB , rsb->regs +RSB_CTRL ); -if (!wait_for_completion_io_timeout (&rsb->complete, -msecs_to_jiffies (100 ))) { +if (irqs_disabled ()) { + timeout =readl_poll_timeout_atomic (rsb->regs +RSB_INTS , + status, (status & int_mask), +10 ,100000 ); +writel (status, rsb->regs +RSB_INTS ); + }else { + timeout = !wait_for_completion_io_timeout (&rsb->complete, +msecs_to_jiffies (100 )); + status = rsb->status; + } + +if (timeout) {dev_dbg (rsb->dev,"RSB timeout\n" );/* abort the transfer */
@@ -292,18 +305,18 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb)return -ETIMEDOUT ; } -if (rsb->status &RSB_INTS_LOAD_BSY ) { +if (status &RSB_INTS_LOAD_BSY ) {dev_dbg (rsb->dev,"RSB busy\n" );return -EBUSY ; } -if (rsb->status &RSB_INTS_TRANS_ERR ) { -if (rsb->status &RSB_INTS_TRANS_ERR_ACK ) { +if (status &RSB_INTS_TRANS_ERR ) { +if (status &RSB_INTS_TRANS_ERR_ACK ) {dev_dbg (rsb->dev,"RSB slave nack\n" );return -EINVAL ; } -if (rsb->status &RSB_INTS_TRANS_ERR_DATA ) { +if (status &RSB_INTS_TRANS_ERR_DATA ) {dev_dbg (rsb->dev,"RSB transfer data error\n" );return -EIO ; }
@@ -812,14 +825,6 @@ static int sunxi_rsb_remove(struct platform_device *pdev)return 0 ; } -static void sunxi_rsb_shutdown (struct platform_device *pdev) -{ -struct sunxi_rsb *rsb =platform_get_drvdata (pdev); - -pm_runtime_disable (&pdev->dev); -sunxi_rsb_hw_exit (rsb); -} -static const struct dev_pm_ops sunxi_rsb_dev_pm_ops = {SET_RUNTIME_PM_OPS (sunxi_rsb_runtime_suspend, sunxi_rsb_runtime_resume,NULL )
@@ -835,7 +840,6 @@ MODULE_DEVICE_TABLE(of, sunxi_rsb_of_match_table);static struct platform_driver sunxi_rsb_driver = { .probe = sunxi_rsb_probe, .remove = sunxi_rsb_remove, - .shutdown = sunxi_rsb_shutdown, .driver = { .name =RSB_CTRL_NAME , .of_match_table = sunxi_rsb_of_match_table,
drivers/cpufreq/Kconfig.x86 +1 -1
@@ -35,7 +35,7 @@ config X86_PCC_CPUFREQ If in doubt, say N. config X86_AMD_PSTATE - tristate "AMD Processor P-State driver" + bool "AMD Processor P-State driver" depends on X86 && ACPI select ACPI_PROCESSOR select ACPI_CPPC_LIB if X86_64
drivers/cpufreq/amd-pstate.c +11 -10
@@ -483,12 +483,22 @@ static void amd_pstate_boost_init(struct amd_cpudata *cpudata) amd_pstate_driver.boost_enabled = true; } +static void amd_perf_ctl_reset (unsigned int cpu) +{ +wrmsrl_on_cpu (cpu,MSR_AMD_PERF_CTL ,0 ); +} +static int amd_pstate_cpu_init (struct cpufreq_policy *policy) {int min_freq, max_freq, nominal_freq, lowest_nonlinear_freq, ret;struct device *dev;struct amd_cpudata *cpudata; +/* +* Resetting PERF_CTL_MSR will put the CPU in P0 frequency, +* which is ideal for initialization process. +*/ +amd_perf_ctl_reset (policy->cpu); dev =get_cpu_device (policy->cpu);if (!dev)return -ENODEV ;
@@ -718,16 +728,7 @@ static int __init amd_pstate_init(void)return ret; } - -static void __exit amd_pstate_exit(void) -{ -cpufreq_unregister_driver (&amd_pstate_driver); - -amd_pstate_enable (false); -} - -module_init (amd_pstate_init); -module_exit (amd_pstate_exit); +device_initcall (amd_pstate_init);MODULE_AUTHOR ("Huang Rui <[email protected]>" );MODULE_DESCRIPTION ("AMD Processor P-state Frequency Driver" );
drivers/dma-buf/dma-buf.c +17 -6
@@ -15,6 +15,7 @@#include <linux/slab.h> #include <linux/dma-buf.h> #include <linux/dma-fence.h> +#include <linux/dma-fence-unwrap.h> #include <linux/anon_inodes.h> #include <linux/export.h> #include <linux/debugfs.h>
@@ -391,8 +392,10 @@ static long dma_buf_import_sync_file(struct dma_buf *dmabuf, const void __user *user_data) {struct dma_buf_import_sync_file arg; -struct dma_fence *fence; +struct dma_fence *fence, *f;enum dma_resv_usage usage; +struct dma_fence_unwrap iter; +unsigned int num_fences;int ret =0 ;if (copy_from_user (&arg, user_data,sizeof (arg)))
@@ -411,13 +414,21 @@ static long dma_buf_import_sync_file(struct dma_buf *dmabuf, usage = (arg.flags &DMA_BUF_SYNC_WRITE ) ?DMA_RESV_USAGE_WRITE :DMA_RESV_USAGE_READ ; -dma_resv_lock (dmabuf->resv,NULL ); + num_fences =0 ; +dma_fence_unwrap_for_each (f, &iter, fence) + ++num_fences; - ret =dma_resv_reserve_fences (dmabuf->resv,1 ); -if (!ret) -dma_resv_add_fence (dmabuf->resv, fence, usage); +if (num_fences >0 ) { +dma_resv_lock (dmabuf->resv,NULL ); -dma_resv_unlock (dmabuf->resv); + ret =dma_resv_reserve_fences (dmabuf->resv, num_fences); +if (!ret) { +dma_fence_unwrap_for_each (f, &iter, fence) +dma_resv_add_fence (dmabuf->resv, f, usage); + } + +dma_resv_unlock (dmabuf->resv); + }dma_fence_put (fence);
drivers/dma-buf/dma-heap.c +15 -13
@@ -233,18 +233,6 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)return ERR_PTR (-EINVAL ); } -/* check the name is unique */ -mutex_lock (&heap_list_lock); -list_for_each_entry (h, &heap_list, list) { -if (!strcmp (h->name, exp_info->name)) { -mutex_unlock (&heap_list_lock); -pr_err ("dma_heap: Already registered heap named %s\n" , - exp_info->name); -return ERR_PTR (-EINVAL ); - } - } -mutex_unlock (&heap_list_lock); - heap =kzalloc (sizeof (*heap),GFP_KERNEL );if (!heap)return ERR_PTR (-ENOMEM );
@@ -283,13 +271,27 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info) err_ret =ERR_CAST (dev_ret); goto err2; } -/* Add heap to the list */ +mutex_lock (&heap_list_lock); +/* check the name is unique */ +list_for_each_entry (h, &heap_list, list) { +if (!strcmp (h->name, exp_info->name)) { +mutex_unlock (&heap_list_lock); +pr_err ("dma_heap: Already registered heap named %s\n" , + exp_info->name); + err_ret =ERR_PTR (-EINVAL ); + goto err3; + } + } + +/* Add heap to the list */ list_add (&heap->list, &heap_list);mutex_unlock (&heap_list_lock);return heap; +err3: +device_destroy (dma_heap_class, heap->heap_devt); err2:cdev_del (&heap->heap_cdev); err1:
drivers/fpga/Kconfig +3 -1
@@ -246,7 +246,9 @@ config FPGA_MGR_VERSAL_FPGA config FPGA_M10_BMC_SEC_UPDATE tristate "Intel MAX10 BMC Secure Update driver" - depends on MFD_INTEL_M10_BMC && FW_UPLOAD + depends on MFD_INTEL_M10_BMC + select FW_LOADER + select FW_UPLOAD help Secure update support for the Intel MAX10 board management controller.
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c +1 -0
@@ -41,5 +41,6 @@ const struct kfd2kgd_calls aldebaran_kfd2kgd = { .get_atc_vmid_pasid_mapping_info = kgd_gfx_v9_get_atc_vmid_pasid_mapping_info, .set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base, + .get_cu_occupancy = kgd_gfx_v9_get_cu_occupancy, .program_trap_handler_settings = kgd_gfx_v9_program_trap_handler_settings };
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +1 -3
@@ -170,9 +170,7 @@ int amdgpu_amdkfd_reserve_mem_limit(struct amdgpu_device *adev, (kfd_mem_limit.ttm_mem_used + ttm_mem_needed > kfd_mem_limit.max_ttm_mem_limit) || (adev && adev->kfd.vram_used + vram_needed > - adev->gmc.real_vram_size - -atomic64_read (&adev->vram_pin_size) - - reserved_for_pt)) { + adev->gmc.real_vram_size - reserved_for_pt)) { ret = -ENOMEM ; goto release; }
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +0 -1
@@ -328,7 +328,6 @@ static void amdgpu_connector_free_edid(struct drm_connector *connector)kfree (amdgpu_connector->edid); amdgpu_connector->edid =NULL ; -drm_connector_update_edid_property (connector,NULL ); }static int amdgpu_connector_ddc_get_modes (struct drm_connector *connector)
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +3 -5
@@ -413,11 +413,9 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,if (r) goto release_object; -if (args->flags &AMDGPU_GEM_USERPTR_REGISTER ) { - r =amdgpu_mn_register (bo, args->addr); -if (r) - goto release_object; - } + r =amdgpu_mn_register (bo, args->addr); +if (r) + goto release_object;if (args->flags &AMDGPU_GEM_USERPTR_VALIDATE ) { r =amdgpu_ttm_tt_get_user_pages (bo, bo->tbo.ttm->pages);
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c +6 -0
@@ -479,6 +479,12 @@ int amdgpu_gmc_allocate_vm_inv_eng(struct amdgpu_device *adev)unsigned i;unsigned vmhub, inv_eng; +if (adev->enable_mes) { +/* reserve engine 5 for firmware */ +for (vmhub =0 ; vmhub <AMDGPU_MAX_VMHUBS ; vmhub++) + vm_inv_engs[vmhub] &= ~(1 <<5 ); + } +for (i =0 ; i < adev->num_rings; ++i) { ring = adev->rings[i]; vmhub = ring->funcs->vmhub;
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +9 -7
@@ -171,6 +171,7 @@ void psp_ta_free_shared_buf(struct ta_mem_context *mem_ctx) {amdgpu_bo_free_kernel (&mem_ctx->shared_bo, &mem_ctx->shared_mc_addr, &mem_ctx->shared_buf); + mem_ctx->shared_bo =NULL ; }static void psp_free_shared_bufs (struct psp_context *psp)
@@ -181,6 +182,7 @@ static void psp_free_shared_bufs(struct psp_context *psp)/* free TMR memory buffer */ pptr =amdgpu_sriov_vf (psp->adev) ? &tmr_buf :NULL ;amdgpu_bo_free_kernel (&psp->tmr_bo, &psp->tmr_mc_addr, pptr); + psp->tmr_bo =NULL ;/* free xgmi shared memory */ psp_ta_free_shared_buf (&psp->xgmi_context.context.mem_context);
@@ -728,7 +730,7 @@ static int psp_load_toc(struct psp_context *psp,/* Set up Trusted Memory Region */ static int psp_tmr_init (struct psp_context *psp) { -int ret; +int ret =0 ;int tmr_size;void *tmr_buf;void **pptr;
@@ -755,10 +757,12 @@ static int psp_tmr_init(struct psp_context *psp) } } - pptr =amdgpu_sriov_vf (psp->adev) ? &tmr_buf :NULL ; - ret =amdgpu_bo_create_kernel (psp->adev, tmr_size,PSP_TMR_ALIGNMENT , -AMDGPU_GEM_DOMAIN_VRAM , - &psp->tmr_bo, &psp->tmr_mc_addr, pptr); +if (!psp->tmr_bo) { + pptr =amdgpu_sriov_vf (psp->adev) ? &tmr_buf :NULL ; + ret =amdgpu_bo_create_kernel (psp->adev, tmr_size,PSP_TMR_ALIGNMENT , +AMDGPU_GEM_DOMAIN_VRAM , + &psp->tmr_bo, &psp->tmr_mc_addr, pptr); + }return ret; }
@@ -2720,8 +2724,6 @@ static int psp_suspend(void *handle) } out: -psp_free_shared_bufs (psp); -return ret; }
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +0 -26
@@ -143,32 +143,6 @@ int amdgpu_vm_set_pasid(struct amdgpu_device *adev, struct amdgpu_vm *vm,return 0 ; } -/* -* vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS -* happens while holding this lock anywhere to prevent deadlocks when -* an MMU notifier runs in reclaim-FS context. -*/ -static inline void amdgpu_vm_eviction_lock (struct amdgpu_vm *vm) -{ -mutex_lock (&vm->eviction_lock); - vm->saved_flags =memalloc_noreclaim_save (); -} - -static inline int amdgpu_vm_eviction_trylock (struct amdgpu_vm *vm) -{ -if (mutex_trylock (&vm->eviction_lock)) { - vm->saved_flags =memalloc_noreclaim_save (); -return 1 ; - } -return 0 ; -} - -static inline void amdgpu_vm_eviction_unlock (struct amdgpu_vm *vm) -{ -memalloc_noreclaim_restore (vm->saved_flags); -mutex_unlock (&vm->eviction_lock); -} -/** * amdgpu_vm_bo_evicted - vm_bo is evicted *
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +26 -0
@@ -503,4 +503,30 @@ static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm) return atomic64_read(&vm->tlb_seq); } +/* +* vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS +* happens while holding this lock anywhere to prevent deadlocks when +* an MMU notifier runs in reclaim-FS context. +*/ +static inline void amdgpu_vm_eviction_lock (struct amdgpu_vm *vm) +{ +mutex_lock (&vm->eviction_lock); + vm->saved_flags =memalloc_noreclaim_save (); +} + +static inline bool amdgpu_vm_eviction_trylock (struct amdgpu_vm *vm) +{ +if (mutex_trylock (&vm->eviction_lock)) { + vm->saved_flags =memalloc_noreclaim_save (); +return true; + } +return false; +} + +static inline void amdgpu_vm_eviction_unlock (struct amdgpu_vm *vm) +{ +memalloc_noreclaim_restore (vm->saved_flags); +mutex_unlock (&vm->eviction_lock); +} +#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +2 -0
@@ -597,7 +597,9 @@ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev,if (entry->bo)return 0 ; +amdgpu_vm_eviction_unlock (vm); r =amdgpu_vm_pt_create (adev, vm, cursor->level, immediate, &pt); +amdgpu_vm_eviction_lock (vm);if (r)return r;
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +5 -1
@@ -190,7 +190,11 @@ static int mes_v11_0_add_hw_queue(struct amdgpu_mes *mes, mes_add_queue_pkt.trap_handler_addr = input->tba_addr; mes_add_queue_pkt.tma_addr = input->tma_addr; mes_add_queue_pkt.is_kfd_process = input->is_kfd_process; - mes_add_queue_pkt.trap_en =1 ; + +if (!(((adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=4 ) && + (adev->ip_versions[GC_HWIP ][0 ] >=IP_VERSION (11 ,0 ,0 )) && + (adev->ip_versions[GC_HWIP ][0 ] <=IP_VERSION (11 ,0 ,3 )))) + mes_add_queue_pkt.trap_en =1 ;/* For KFD, gds_size is re-used for queue size (needed in MES for AQL queues) */ mes_add_queue_pkt.is_aql_queue = input->is_aql_queue;
drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler.h +18 -13
@@ -742,7 +742,7 @@ static const uint32_t cwsr_trap_nv1x_hex[] = {0xbf88fffe ,0x877aff7f ,0x04000000 ,0x8f7a857a ,0x886d7a6d ,0xb97b02dc , -0x8f7b997b ,0xb97a2a05 , +0x8f7b997b ,0xb97a3a05 ,0x807a817a ,0xbf0d997b ,0xbf850002 ,0x8f7a897a , 0xbf820001, 0x8f7a8a7a,
@@ -819,7 +819,7 @@ static const uint32_t cwsr_trap_nv1x_hex[] = {0xbefe037c ,0xbefc0370 ,0xf4611c7a ,0xf8000000 ,0x80708470 ,0xbefc037e , -0xb9702a05 ,0x80708170 , +0xb9703a05 ,0x80708170 ,0xbf0d9973 ,0xbf850002 ,0x8f708970 ,0xbf820001 , 0x8f708a70, 0xb97a1e06,
@@ -1069,7 +1069,7 @@ static const uint32_t cwsr_trap_nv1x_hex[] = {0xb9f9f816 ,0x876f7bff ,0xfffff800 ,0x906f8b6f ,0xb9efa2c3 ,0xb9f3f801 , -0xb96e2a05 ,0x806e816e , +0xb96e3a05 ,0x806e816e ,0xbf0d9972 ,0xbf850002 ,0x8f6e896e ,0xbf820001 , 0x8f6e8a6e, 0xb96f1e06,
@@ -2114,7 +2114,7 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {0x007a0000 ,0x7e000280 ,0xbefe037a ,0xbeff037b ,0xb97b02dc ,0x8f7b997b , -0xb97a2a05 ,0x807a817a , +0xb97a3a05 ,0x807a817a ,0xbf0d997b ,0xbf850002 ,0x8f7a897a ,0xbf820001 , 0x8f7a8a7a, 0xb97b1e06,
@@ -2157,7 +2157,7 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {0x01000000 ,0xe0704100 ,0x705d0100 ,0xe0704200 ,0x705d0200 ,0xe0704300 , -0x705d0300 ,0xb9702a05 , +0x705d0300 ,0xb9703a05 ,0x80708170 ,0xbf0d9973 ,0xbf850002 ,0x8f708970 , 0xbf820001, 0x8f708a70,
@@ -2189,7 +2189,7 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {0xbefe03ff ,0x0000ffff ,0xbeff0380 ,0xe0704000 ,0x705d0200 ,0xbefe03c1 , -0xb9702a05 ,0x80708170 , +0xb9703a05 ,0x80708170 ,0xbf0d9973 ,0xbf850002 ,0x8f708970 ,0xbf820001 , 0x8f708a70, 0xb97a1e06,
@@ -2475,7 +2475,7 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {0xb9ef4803 ,0x876f7bff ,0xfffff800 ,0x906f8b6f ,0xb9efa2c3 ,0xb9f3f801 , -0xb96e2a05 ,0x806e816e , +0xb96e3a05 ,0x806e816e ,0xbf0d9972 ,0xbf850002 ,0x8f6e896e ,0xbf820001 , 0x8f6e8a6e, 0xb96f1e06,
@@ -2494,11 +2494,13 @@ static const uint32_t cwsr_trap_gfx10_hex[] = {0xbf9f0000 ,0xbf9f0000 , 0xbf9f0000, 0x00000000, }; -static const uint32_t cwsr_trap_gfx11_hex[] = { -0xbfa00001 ,0xbfa0021b , +0xbfa00001 ,0xbfa00221 ,0xb0804006 ,0xb8f8f802 , -0x91788678 ,0xb8fbf803 , +0x9178ff78 ,0x00020006 , +0xb8fbf803 ,0xbf0d9e6d , +0xbfa10001 ,0xbfbd0000 , +0xbf0d9f6d ,0xbfa20006 ,0x8b6eff78 ,0x00002000 ,0xbfa10009 ,0x8b6eff6d , 0x00ff0000, 0xbfa2001e,
@@ -2766,7 +2768,7 @@ static const uint32_t cwsr_trap_gfx11_hex[] = {0x701d0000 ,0x807d817d ,0x8070ff70 ,0x00000080 ,0xbf0a7b7d ,0xbfa2fff8 , -0xbfa00141 ,0xbef4007e , +0xbfa00146 ,0xbef4007e ,0x8b75ff7f ,0x0000ffff ,0x8c75ff75 ,0x00040000 , 0xbef60080, 0xbef700ff,
@@ -2926,8 +2928,11 @@ static const uint32_t cwsr_trap_gfx11_hex[] = {0xf8000074 ,0xbf89fc07 ,0x8b6dff6d ,0x0000ffff ,0x8bfe7e7e ,0x8bea6a6a , -0xb97af802 ,0xbe804a6c , -0xbfb00000 ,0xbf9f0000 , +0xb8eef802 ,0xbf0d866e , +0xbfa20002 ,0xb97af802 , +0xbe80486c ,0xb97af802 , +0xbe804a6c ,0xbfb00000 ,0xbf9f0000 ,0xbf9f0000 ,0xbf9f0000 ,0xbf9f0000 , + 0xbf9f0000, 0x00000000, };
drivers/gpu/drm/amd/amdkfd/cwsr_trap_handler_gfx10.asm +27 -0
@@ -43,12 +43,14 @@ #define HAVE_XNACK (ASIC_FAMILY < CHIP_SIENNA_CICHLID) #define HAVE_SENDMSG_RTN (ASIC_FAMILY >= CHIP_PLUM_BONITO) #define HAVE_BUFFER_LDS_LOAD (ASIC_FAMILY < CHIP_PLUM_BONITO) +#define SW_SA_TRAP (ASIC_FAMILY >= CHIP_PLUM_BONITO) var SINGLE_STEP_MISSED_WORKAROUND = 1 //workaround for lost MODE.DEBUG_EN exception when SAVECTX raised var SQ_WAVE_STATUS_SPI_PRIO_MASK = 0x00000006 var SQ_WAVE_STATUS_HALT_MASK = 0x2000 var SQ_WAVE_STATUS_ECC_ERR_MASK = 0x20000 +var SQ_WAVE_STATUS_TRAP_EN_SHIFT = 6 var SQ_WAVE_LDS_ALLOC_LDS_SIZE_SHIFT = 12 var SQ_WAVE_LDS_ALLOC_LDS_SIZE_SIZE = 9
@@ -183,6 +185,19 @@ L_SKIP_RESTORE: s_getreg_b32 s_save_trapsts, hwreg(HW_REG_TRAPSTS) +#if SW_SA_TRAP + // If ttmp1[30] is set then issue s_barrier to unblock dependent waves. + s_bitcmp1_b32 s_save_pc_hi, 30 + s_cbranch_scc0 L_TRAP_NO_BARRIER + s_barrier + +L_TRAP_NO_BARRIER: + // If ttmp1[31] is set then trap may occur early. + // Spin wait until SAVECTX exception is raised. + s_bitcmp1_b32 s_save_pc_hi, 31 + s_cbranch_scc1 L_CHECK_SAVE +#endif + s_and_b32 ttmp2, s_save_status, SQ_WAVE_STATUS_HALT_MASK s_cbranch_scc0 L_NOT_HALTED
@@ -1061,8 +1076,20 @@ L_RESTORE_HWREG: s_and_b32 s_restore_pc_hi, s_restore_pc_hi, 0x0000ffff //pc[47:32] //Do it here in order not to affect STATUS s_and_b64 exec, exec, exec // Restore STATUS.EXECZ, not writable by s_setreg_b32 s_and_b64 vcc, vcc, vcc // Restore STATUS.VCCZ, not writable by s_setreg_b32 + +#if SW_SA_TRAP + // If traps are enabled then return to the shader with PRIV=0. + // Otherwise retain PRIV=1 for subsequent context save requests. + s_getreg_b32 s_restore_tmp, hwreg(HW_REG_STATUS) + s_bitcmp1_b32 s_restore_tmp, SQ_WAVE_STATUS_TRAP_EN_SHIFT + s_cbranch_scc1 L_RETURN_WITHOUT_PRIV + s_setreg_b32 hwreg(HW_REG_STATUS), s_restore_status // SCC is included, which is changed by previous salu + s_setpc_b64 [s_restore_pc_lo, s_restore_pc_hi] +L_RETURN_WITHOUT_PRIV: +#endif + s_setreg_b32 hwreg(HW_REG_STATUS), s_restore_status // SCC is included, which is changed by previous salu s_rfe_b64 s_restore_pc_lo //Return to the main shader program and resume execution L_END_PGM:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +41 -3
57 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dc.h +3 -0
@@ -746,6 +746,9 @@ struct dc_debug_options {bool force_disable_subvp;bool force_subvp_mclk_switch;bool allow_sw_cursor_fallback; +unsigned int force_subvp_num_ways; +unsigned int force_mall_ss_num_ways; +bool alloc_extra_way_for_cursor;bool force_usr_allow;/* uses value at boot and disables switch */ bool disable_dtb_ref_clk_switch;
drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c +2 -1
@@ -359,7 +359,8 @@ static const struct dce_audio_registers audio_regs[] = {audio_regs (2 ),audio_regs (3 ),audio_regs (4 ), - audio_regs(5) +audio_regs (5 ), + audio_regs(6), };#define DCE120_AUD_COMMON_MASK_SH_LIST (mask_sh)\
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +99 -114
266 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c +1 -0
@@ -872,6 +872,7 @@ static const struct dc_debug_options debug_defaults_drv = { .enable_single_display_2to1_odm_policy = true, .enable_dp_dig_pixel_rate_div_policy = 1, .allow_sw_cursor_fallback = false, + .alloc_extra_way_for_cursor = true, };static const struct dc_debug_options debug_defaults_diags = {
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c +8 -3
@@ -54,13 +54,14 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_statuint32_t num_mblks =0 ;uint32_t cache_lines_per_plane =0 ;uint32_t i =0 , j =0 ; -uint32_t mblk_width =0 ; -uint32_t mblk_height =0 ; +uint16_t mblk_width =0 ; +uint16_t mblk_height =0 ;uint32_t full_vp_width_blk_aligned =0 ;uint32_t full_vp_height_blk_aligned =0 ;uint32_t mall_alloc_width_blk_aligned =0 ;uint32_t mall_alloc_height_blk_aligned =0 ; -uint32_t full_vp_height =0 ; +uint16_t full_vp_height =0 ; +bool subvp_in_use = false;for (i =0 ; i < dc->res_pool->pipe_count; i++) {struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
@@ -70,6 +71,7 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat pipe->stream->mall_stream_config.type == SUBVP_PHANTOM) {struct pipe_ctx *main_pipe =NULL ; + subvp_in_use = true;/* Get full viewport height from main pipe (required for MBLK calculation) */ for (j =0 ; j < dc->res_pool->pipe_count; j++) { main_pipe = &context->res_ctx.pipe_ctx[j];
@@ -129,6 +131,9 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_statif (cache_lines_used % lines_per_way >0 ) num_ways++; +if (subvp_in_use && dc->debug.force_subvp_num_ways >0 ) + num_ways = dc->debug.force_subvp_num_ways; +return num_ways; }
drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c +1 -0
@@ -873,6 +873,7 @@ static const struct dc_debug_options debug_defaults_drv = { .enable_single_display_2to1_odm_policy = true, .enable_dp_dig_pixel_rate_div_policy = 1, .allow_sw_cursor_fallback = false, + .alloc_extra_way_for_cursor = true, };static const struct dc_debug_options debug_defaults_diags = {
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +18 -4
@@ -157,7 +157,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_2_soc = { .dispclk_dppclk_vco_speed_mhz = 4300.0, .do_urgent_latency_adjustment = true, .urgent_latency_adjustment_fabric_clock_component_us = 1.0, - .urgent_latency_adjustment_fabric_clock_reference_mhz = 1000, + .urgent_latency_adjustment_fabric_clock_reference_mhz = 3000, };void dcn32_build_wm_range_table_fpu (struct clk_mgr_internal *clk_mgr)
@@ -211,7 +211,7 @@ void dcn32_build_wm_range_table_fpu(struct clk_mgr_internal *clk_mgr)/* 'DalDummyClockChangeLatencyNs' registry key option set to 0x7FFFFFFF can be used to disable Set C for dummy p-state */ if (clk_mgr->base.ctx->dc->bb_overrides.dummy_clock_change_latency_ns !=0x7FFFFFFF ) { clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].valid = true; - clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].dml_input.pstate_latency_us =38 ; + clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].dml_input.pstate_latency_us =50 ; clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].dml_input.fclk_change_latency_us = fclk_change_latency_us; clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].dml_input.sr_exit_time_us = sr_exit_time_us; clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].dml_input.sr_enter_plus_exit_time_us = sr_enter_plus_exit_time_us;
@@ -221,7 +221,7 @@ void dcn32_build_wm_range_table_fpu(struct clk_mgr_internal *clk_mgr) clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].pmfw_breakdown.min_uclk = min_uclk_mhz; clk_mgr->base.bw_params->wm_table.nv_entries[WM_C ].pmfw_breakdown.max_uclk =0xFFFF ; clk_mgr->base.bw_params->dummy_pstate_table[0 ].dram_speed_mts = clk_mgr->base.bw_params->clk_table.entries[0 ].memclk_mhz *16 ; - clk_mgr->base.bw_params->dummy_pstate_table[0 ].dummy_pstate_latency_us =38 ; + clk_mgr->base.bw_params->dummy_pstate_table[0 ].dummy_pstate_latency_us =50 ; clk_mgr->base.bw_params->dummy_pstate_table[1 ].dram_speed_mts = clk_mgr->base.bw_params->clk_table.entries[1 ].memclk_mhz *16 ; clk_mgr->base.bw_params->dummy_pstate_table[1 ].dummy_pstate_latency_us =9 ; clk_mgr->base.bw_params->dummy_pstate_table[2 ].dram_speed_mts = clk_mgr->base.bw_params->clk_table.entries[2 ].memclk_mhz *16 ;
@@ -1700,6 +1700,12 @@ void dcn32_calculate_wm_and_dlg_fpu(struct dc *dc, struct dc_state *context,*/ context->bw_ctx.dml.soc.dram_clock_change_latency_us = dc->clk_mgr->bw_params->wm_table.nv_entries[WM_A ].dml_input.pstate_latency_us; +/* For DCN32/321 need to validate with fclk pstate change latency equal to dummy so +* prefetch is scheduled correctly to account for dummy pstate. +*/ +if (dummy_latency_index ==0 ) + context->bw_ctx.dml.soc.fclk_change_latency_us = + dc->clk_mgr->bw_params->dummy_pstate_table[dummy_latency_index].dummy_pstate_latency_us;dcn32_internal_validate_bw (dc, context, pipes, &pipe_cnt, &vlevel, false); maxMpcComb = context->bw_ctx.dml.vba.maxMpcComb; dcfclk = context->bw_ctx.dml.vba.DCFCLKState[vlevel][context->bw_ctx.dml.vba.maxMpcComb];
@@ -1879,6 +1885,10 @@ void dcn32_calculate_wm_and_dlg_fpu(struct dc *dc, struct dc_state *context, context->perf_params.stutter_period_us = context->bw_ctx.dml.vba.StutterPeriod; +if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching && dummy_latency_index ==0 ) + context->bw_ctx.dml.soc.fclk_change_latency_us = + dc->clk_mgr->bw_params->dummy_pstate_table[dummy_latency_index].dummy_pstate_latency_us; +dcn32_calculate_dlg_params (dc, context, pipes, pipe_cnt, vlevel);if (!pstate_en)
@@ -1886,8 +1896,12 @@ void dcn32_calculate_wm_and_dlg_fpu(struct dc *dc, struct dc_state *context, context->bw_ctx.dml.soc.dram_clock_change_latency_us = dc->clk_mgr->bw_params->wm_table.nv_entries[WM_A ].dml_input.pstate_latency_us; -if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) +if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {dcn30_setup_mclk_switch_using_fw_based_vblank_stretch (dc, context); +if (dummy_latency_index ==0 ) + context->bw_ctx.dml.soc.fclk_change_latency_us = + dc->clk_mgr->bw_params->wm_table.nv_entries[WM_A ].dml_input.fclk_change_latency_us; + } } static void dcn32_get_optimal_dcfclk_fclk_for_uclk(unsigned int uclk_mts,
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c +1 -0
@@ -3197,6 +3197,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i], mode_lib->vba.SREnterPlusExitTime); +memset (&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull,0 ,sizeof (DmlPipe)); v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k]; v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j]; v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.PixelClock = mode_lib->vba.PixelClock[k];
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c +1 -1
@@ -4396,7 +4396,7 @@ void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport(if (v->NumberOfActiveSurfaces >1 ) { ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY - - (1 -1 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k] + - (1.0 -1.0 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k] / v->PixelClock[k] / v->VRatio[k]; }
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h +1 -1
@@ -30,7 +30,7 @@#include "os_types.h" #include "../dc_features.h" #include "../display_mode_structs.h" -#include "dml/display_mode_vba.h" +#include "../display_mode_vba.h" unsigned int dml32_dscceComputeDelay( unsigned int bpc,
drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c +4 -4
@@ -125,9 +125,9 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_21_soc = { .sr_enter_plus_exit_z8_time_us = 320, .writeback_latency_us = 12.0, .round_trip_ping_latency_dcfclk_cycles = 263, - .urgent_latency_pixel_data_only_us = 9.35, - .urgent_latency_pixel_mixed_with_vm_data_us = 9.35, - .urgent_latency_vm_data_only_us = 9.35, + .urgent_latency_pixel_data_only_us = 4, + .urgent_latency_pixel_mixed_with_vm_data_us = 4, + .urgent_latency_vm_data_only_us = 4, .fclk_change_latency_us = 20, .usr_retraining_latency_us = 2, .smn_latency_us = 2,
@@ -155,7 +155,7 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_21_soc = { .dispclk_dppclk_vco_speed_mhz = 4300.0, .do_urgent_latency_adjustment = true, .urgent_latency_adjustment_fabric_clock_component_us = 1.0, - .urgent_latency_adjustment_fabric_clock_reference_mhz = 1000, + .urgent_latency_adjustment_fabric_clock_reference_mhz = 3000, };static void get_optimal_ntuple (struct _vcs_dpi_voltage_scaling_st *entry)
drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c +14 -0
@@ -107,6 +107,13 @@ static const struct ddc_registers ddc_data_regs_dcn[] = {ddc_data_regs_dcn2 (3 ),ddc_data_regs_dcn2 (4 ),ddc_data_regs_dcn2 (5 ), + { + // add a dummy entry for cases no such port + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, + .ddc_setup =0 , + .phy_aux_cntl = 0, + .dc_gpio_aux_ctrl_5 = 0 + }, {DDC_GPIO_VGA_REG_LIST (DATA ), .ddc_setup = 0,
@@ -121,6 +128,13 @@ static const struct ddc_registers ddc_clk_regs_dcn[] = {ddc_clk_regs_dcn2 (3 ),ddc_clk_regs_dcn2 (4 ),ddc_clk_regs_dcn2 (5 ), + { + // add a dummy entry for cases no such port + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}, + .ddc_setup =0 , + .phy_aux_cntl = 0, + .dc_gpio_aux_ctrl_5 = 0 + }, {DDC_GPIO_VGA_REG_LIST (CLK ), .ddc_setup = 0,
drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c +6 -3
@@ -94,11 +94,14 @@ static enum gpio_result set_config(* is required for detection of AUX mode */ if (hw_gpio->base.en !=GPIO_DDC_LINE_VIP_PAD ) {if (!ddc_data_pd_en || !ddc_clk_pd_en) { - -REG_SET_2 (gpio.MASK_reg, regval, +if (hw_gpio->base.en ==GPIO_DDC_LINE_DDC_VGA ) { +// bit 4 of mask has different usage in some cases +REG_SET (gpio.MASK_reg, regval,DC_GPIO_DDC1DATA_PD_EN ,1 ); + }else { +REG_SET_2 (gpio.MASK_reg, regval,DC_GPIO_DDC1DATA_PD_EN ,1 ,DC_GPIO_DDC1CLK_PD_EN ,1 ); - + }if (config_data->type ==GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE )msleep (3 );
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c +12 -13
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr *hwmgr,int vega10_fan_ctrl_get_fan_speed_pwm (struct pp_hwmgr *hwmgr,uint32_t *speed) { -uint32_t current_rpm; -uint32_t percent =0 ; - -if (hwmgr->thermal_controller.fanInfo.bNoFan) -return 0 ; +struct amdgpu_device *adev = hwmgr->adev; +uint32_t duty100, duty; +uint64_t tmp64; -if (vega10_get_current_rpm (hwmgr, ¤t_rpm)) -return -1 ; + duty100 =REG_GET_FIELD (RREG32_SOC15 (THM ,0 , mmCG_FDO_CTRL1), +CG_FDO_CTRL1 ,FMAX_DUTY100 ); + duty =REG_GET_FIELD (RREG32_SOC15 (THM ,0 , mmCG_THERMAL_STATUS), +CG_THERMAL_STATUS ,FDO_PWM_DUTY ); -if (hwmgr->thermal_controller. - advanceFanControlParameters.usMaxFanRPM !=0 ) - percent = current_rpm *255 / - hwmgr->thermal_controller. - advanceFanControlParameters.usMaxFanRPM; +if (!duty100) +return -EINVAL ; - *speed =MIN (percent,255 ); + tmp64 = (uint64_t )duty *255 ; +do_div (tmp64, duty100); + *speed =MIN ((uint32_t )tmp64,255 );return 0 ; }
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +4 -0
@@ -378,6 +378,10 @@ static void sienna_cichlid_check_bxco_support(struct smu_context *smu) ((adev->pdev->device ==0x73BF ) && (adev->pdev->revision ==0xCF )) || ((adev->pdev->device ==0x7422 ) && + (adev->pdev->revision ==0x00 )) || + ((adev->pdev->device ==0x73A3 ) && + (adev->pdev->revision ==0x00 )) || + ((adev->pdev->device ==0x73E3 ) && (adev->pdev->revision == 0x00))) smu_baco->platform_support = false;
drivers/gpu/drm/display/drm_dp_mst_topology.c +1 -1
@@ -5293,7 +5293,7 @@ int drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_state *state, struct drm mst_state =drm_atomic_get_mst_topology_state (state, mgr);if (IS_ERR (mst_state)) -return -EINVAL ; +return PTR_ERR (mst_state);list_for_each_entry (pos, &mst_state->vcpis, next) {
drivers/gpu/drm/drm_panel_orientation_quirks.c +12 -0
@@ -134,6 +134,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), }, .driver_data = (void *)&lcd800x1280_rightside_up, + }, { /* Acer Switch V 10 (SW5-017) */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"Acer" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, }, { /* Anbernic Win600 */ .matches = { DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),
@@ -319,6 +325,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"), }, .driver_data = (void *)&lcd1200x1920_rightside_up, + }, { /* Nanote UMPC-01 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"RWC CO.,LTD" ), + DMI_MATCH(DMI_PRODUCT_NAME, "UMPC-01"), + }, + .driver_data = (void *)&lcd1200x1920_rightside_up, }, { /* OneGX1 Pro */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),
drivers/gpu/drm/i915/display/intel_display_power.c +4 -4
@@ -2427,7 +2427,7 @@ intel_display_power_ddi_io_domain(struct drm_i915_private *i915, enum port port) {const struct intel_ddi_port_domains *domains =intel_port_domains_for_port (i915, port); -if (drm_WARN_ON (&i915->drm, !domains) || domains->ddi_io ==POWER_DOMAIN_INVALID ) +if (drm_WARN_ON (&i915->drm, !domains || domains->ddi_io ==POWER_DOMAIN_INVALID ))return POWER_DOMAIN_PORT_DDI_IO_A ;return domains->ddi_io + (int )(port - domains->port_start);
@@ -2438,7 +2438,7 @@ intel_display_power_ddi_lanes_domain(struct drm_i915_private *i915, enum port po {const struct intel_ddi_port_domains *domains =intel_port_domains_for_port (i915, port); -if (drm_WARN_ON (&i915->drm, !domains) || domains->ddi_lanes ==POWER_DOMAIN_INVALID ) +if (drm_WARN_ON (&i915->drm, !domains || domains->ddi_lanes ==POWER_DOMAIN_INVALID ))return POWER_DOMAIN_PORT_DDI_LANES_A ;return domains->ddi_lanes + (int )(port - domains->port_start);
@@ -2464,7 +2464,7 @@ intel_display_power_legacy_aux_domain(struct drm_i915_private *i915, enum aux_ch {const struct intel_ddi_port_domains *domains =intel_port_domains_for_aux_ch (i915, aux_ch); -if (drm_WARN_ON (&i915->drm, !domains) || domains->aux_legacy_usbc ==POWER_DOMAIN_INVALID ) +if (drm_WARN_ON (&i915->drm, !domains || domains->aux_legacy_usbc ==POWER_DOMAIN_INVALID ))return POWER_DOMAIN_AUX_A ;return domains->aux_legacy_usbc + (int )(aux_ch - domains->aux_ch_start);
@@ -2475,7 +2475,7 @@ intel_display_power_tbt_aux_domain(struct drm_i915_private *i915, enum aux_ch au {const struct intel_ddi_port_domains *domains =intel_port_domains_for_aux_ch (i915, aux_ch); -if (drm_WARN_ON (&i915->drm, !domains) || domains->aux_tbt ==POWER_DOMAIN_INVALID ) +if (drm_WARN_ON (&i915->drm, !domains || domains->aux_tbt ==POWER_DOMAIN_INVALID ))return POWER_DOMAIN_AUX_TBT1 ;return domains->aux_tbt + (int )(aux_ch - domains->aux_ch_start);
drivers/gpu/drm/i915/gem/i915_gem_ttm.c +4 -0
@@ -642,6 +642,10 @@ static int i915_ttm_truncate(struct drm_i915_gem_object *obj)WARN_ON_ONCE (obj->mm.madv ==I915_MADV_WILLNEED ); + err =ttm_bo_wait (bo, true, false); +if (err) +return err; + err =i915_ttm_move_notify (bo);if (err)return err;
drivers/gpu/drm/i915/gt/intel_gt.c +5 -0
@@ -961,6 +961,11 @@ static void mmio_invalidate_full(struct intel_gt *gt)if (!i915_mmio_reg_offset (rb.reg))continue ; +if (GRAPHICS_VER (i915) ==12 && (engine->class ==VIDEO_DECODE_CLASS || + engine->class ==VIDEO_ENHANCEMENT_CLASS || + engine->class ==COMPUTE_CLASS )) + rb.bit =_MASKED_BIT_ENABLE (rb.bit); +intel_uncore_write_fw (uncore, rb.reg, rb.bit); awake |= engine->mask; }
drivers/gpu/drm/i915/gvt/kvmgt.c +1 -2
@@ -765,8 +765,6 @@ static int intel_vgpu_open_device(struct vfio_device *vfio_dev)return -ESRCH ; } -kvm_get_kvm (vgpu->vfio_device.kvm); -if (__kvmgt_vgpu_exist (vgpu))return -EEXIST ;
@@ -777,6 +775,7 @@ static int intel_vgpu_open_device(struct vfio_device *vfio_dev) vgpu->track_node.track_write = kvmgt_page_track_write; vgpu->track_node.track_flush_slot = kvmgt_page_track_flush_slot; +kvm_get_kvm (vgpu->vfio_device.kvm);kvm_page_track_register_notifier (vgpu->vfio_device.kvm, &vgpu->track_node);
drivers/gpu/drm/tegra/drm.c +4 -0
@@ -1093,6 +1093,10 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)struct host1x *host1x =dev_get_drvdata (dev->dev.parent);struct iommu_domain *domain; +/* Our IOMMU usage policy doesn't currently play well with GART */ +if (of_machine_is_compatible ("nvidia,tegra20" )) +return false; +/* * If the Tegra DRM clients are backed by an IOMMU, push buffers are * likely to be allocated beyond the 32-bit boundary if sufficient
drivers/gpu/host1x/dev.c +4 -0
@@ -292,6 +292,10 @@ static void host1x_setup_virtualization_tables(struct host1x *host)static bool host1x_wants_iommu (struct host1x *host1x) { +/* Our IOMMU usage policy doesn't currently play well with GART */ +if (of_machine_is_compatible ("nvidia,tegra20" )) +return false; +/* * If we support addressing a maximum of 32 bits of physical memory * and if the host1x firewall is enabled, there's no need to enable
drivers/hv/channel_mgmt.c +5 -1
@@ -533,13 +533,17 @@ static void vmbus_add_channel_work(struct work_struct *work)* Add the new device to the bus. This will kick off device-driver * binding which eventually invokes the device driver's AddDevice() * method. +* +* If vmbus_device_register() fails, the 'device_obj' is freed in +* vmbus_device_release() as called by device_unregister() in the +* error path of vmbus_device_register(). In the outside error +* path, there's no need to free it. */ ret =vmbus_device_register (newchannel->device_obj);if (ret !=0 ) {pr_err ("unable to add child device object (relid %d)\n" , newchannel->offermsg.child_relid); -kfree (newchannel->device_obj); goto err_deq_chan; }
drivers/hv/vmbus_drv.c +1 -0
@@ -2083,6 +2083,7 @@ int vmbus_device_register(struct hv_device *child_device_obj) ret =device_register (&child_device_obj->device);if (ret) {pr_err ("Unable to register child device\n" ); +put_device (&child_device_obj->device);return ret; }
drivers/iio/accel/bma400_core.c +3 -1
@@ -673,8 +673,10 @@ static int bma400_get_steps_reg(struct bma400_data *data, int *val) ret =regmap_bulk_read (data->regmap,BMA400_STEP_CNT0_REG , steps_raw,BMA400_STEP_RAW_LEN ); -if (ret) +if (ret) { +kfree (steps_raw);return ret; + } *val =get_unaligned_le24 (steps_raw);kfree (steps_raw);return IIO_VAL_INT ;
drivers/iio/adc/aspeed_adc.c +5 -6
@@ -202,6 +202,8 @@ static int aspeed_adc_set_trim_data(struct iio_dev *indio_dev) ((scu_otp) & (data->model_data->trim_locate->field)) >>__ffs (data->model_data->trim_locate->field); +if (!trimming_val) + trimming_val =0x8 ; } dev_dbg(data->dev, "trimming val = %d, offset = %08x, fields = %08x\n",
@@ -563,12 +565,9 @@ static int aspeed_adc_probe(struct platform_device *pdev)if (ret)return ret; -if (of_find_property (data->dev->of_node,"aspeed,trim-data-valid" , -NULL )) { - ret =aspeed_adc_set_trim_data (indio_dev); -if (ret) -return ret; - } + ret =aspeed_adc_set_trim_data (indio_dev); +if (ret) +return ret;if (of_find_property (data->dev->of_node,"aspeed,battery-sensing" ,NULL )) {
drivers/iio/industrialio-sw-trigger.c +5 -1
@@ -58,8 +58,12 @@ int iio_register_sw_trigger_type(struct iio_sw_trigger_type *t) t->group =configfs_register_default_group (iio_triggers_group, t->name, &iio_trigger_type_group_type); -if (IS_ERR (t->group)) +if (IS_ERR (t->group)) { +mutex_lock (&iio_trigger_types_lock); +list_del (&t->list); +mutex_unlock (&iio_trigger_types_lock); ret =PTR_ERR (t->group); + }return ret; }
drivers/iio/light/apds9960.c +6 -6
@@ -54,9 +54,6 @@#define APDS9960_REG_CONTROL_PGAIN_MASK_SHIFT 2#define APDS9960_REG_CONFIG_2 0x90 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK 0x60 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT 5 -#define APDS9960_REG_ID 0x92#define APDS9960_REG_STATUS 0x93
@@ -77,6 +74,9 @@#define APDS9960_REG_GCONF_1_GFIFO_THRES_MASK_SHIFT 6#define APDS9960_REG_GCONF_2 0xa3 +#define APDS9960_REG_GCONF_2_GGAIN_MASK 0x60 +#define APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT 5 +#define APDS9960_REG_GOFFSET_U 0xa4#define APDS9960_REG_GOFFSET_D 0xa5#define APDS9960_REG_GPULSE 0xa6
@@ -396,9 +396,9 @@ static int apds9960_set_pxs_gain(struct apds9960_data *data, int val) } ret =regmap_update_bits (data->regmap, -APDS9960_REG_CONFIG_2 , -APDS9960_REG_CONFIG_2_GGAIN_MASK , - idx <<APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT ); +APDS9960_REG_GCONF_2 , +APDS9960_REG_GCONF_2_GGAIN_MASK , + idx <<APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT );if (!ret) data->pxs_gain = idx;mutex_unlock (&data->lock);
drivers/input/misc/soc_button_array.c +13 -1
@@ -18,6 +18,10 @@#include <linux/gpio.h> #include <linux/platform_device.h> +static bool use_low_level_irq; +module_param (use_low_level_irq, bool,0444 ); +MODULE_PARM_DESC (use_low_level_irq,"Use low-level triggered IRQ instead of edge triggered" ); +struct soc_button_info {const char *name;int acpi_index;
@@ -73,6 +77,13 @@ static const struct dmi_system_id dmi_use_low_level_irq[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), }, }, + { +/* Acer Switch V 10 SW5-017, same issue as Acer Switch 10 SW5-012. */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Acer" ), + DMI_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + }, {/* * Acer One S1003. _LID method messes with power-button GPIO
@@ -164,7 +175,8 @@ soc_button_device_create(struct platform_device *pdev, }/* See dmi_use_low_level_irq[] comment */ -if (!autorepeat &&dmi_check_system (dmi_use_low_level_irq)) { +if (!autorepeat && (use_low_level_irq || +dmi_check_system (dmi_use_low_level_irq))) {irq_set_irq_type (irq,IRQ_TYPE_LEVEL_LOW ); gpio_keys[n_buttons].irq = irq; gpio_keys[n_buttons].gpio = -ENOENT ;
drivers/input/mouse/synaptics.c +1 -0
@@ -191,6 +191,7 @@ static const char * const smbus_pnp_ids[] = {"SYN3221" ,/* HP 15-ay000 */ "SYN323d" ,/* HP Spectre X360 13-w013dx */ "SYN3257" ,/* HP Envy 13-ad105ng */ +"SYN3286" ,/* HP Laptop 15-da3001TU */ NULL };
drivers/input/serio/i8042-x86ia64io.h +4 -4
@@ -114,18 +114,18 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_NEVER) }, { - /* ASUS ZenBook UX425UA */ + /* ASUS ZenBook UX425UA/QA */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425UA"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425"), }, .driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER) }, { - /* ASUS ZenBook UM325UA */ + /* ASUS ZenBook UM325UA/QA */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UA_UM325UA"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325"), }, .driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER) },
drivers/input/touchscreen/goodix.c +11 -0
@@ -1158,6 +1158,7 @@ static int goodix_configure_dev(struct goodix_ts_data *ts)input_set_abs_params (ts->input_dev,ABS_MT_WIDTH_MAJOR ,0 ,255 ,0 ,0 );input_set_abs_params (ts->input_dev,ABS_MT_TOUCH_MAJOR ,0 ,255 ,0 ,0 ); +retry_read_config:/* Read configuration and apply touchscreen parameters */ goodix_read_config (ts);
@@ -1165,6 +1166,16 @@ static int goodix_configure_dev(struct goodix_ts_data *ts)touchscreen_parse_properties (ts->input_dev, true, &ts->prop);if (!ts->prop.max_x || !ts->prop.max_y || !ts->max_touch_num) { +if (!ts->reset_controller_at_probe && + ts->irq_pin_access_method !=IRQ_PIN_ACCESS_NONE ) { +dev_info (&ts->client->dev,"Config not set, resetting controller\n" ); +/* Retry after a controller reset */ + ts->reset_controller_at_probe = true; + error =goodix_reset (ts); +if (error) +return error; + goto retry_read_config; + }dev_err (&ts->client->dev,"Invalid config (%d, %d, %d), using defaults\n" , ts->prop.max_x, ts->prop.max_y, ts->max_touch_num);
drivers/md/dm-integrity.c +15 -6
@@ -263,6 +263,7 @@ struct dm_integrity_c {struct completion crypto_backoff; +bool wrote_to_journal;bool journal_uptodate;bool just_formatted;bool recalculate_flag;
@@ -2375,6 +2376,8 @@ static void integrity_commit(struct work_struct *w)if (!commit_sections) goto release_flush_bios; + ic->wrote_to_journal = true; + i = commit_start;for (n =0 ; n < commit_sections; n++) {for (j =0 ; j < ic->journal_section_entries; j++) {
@@ -2591,10 +2594,6 @@ static void integrity_writer(struct work_struct *w)unsigned prev_free_sectors; -/* the following test is not needed, but it tests the replay code */ -if (unlikely (dm_post_suspending (ic->ti)) && !ic->meta_dev) -return ; -spin_lock_irq (&ic->endio_wait.lock); write_start = ic->committed_section; write_sections = ic->n_committed_sections;
@@ -3101,10 +3100,17 @@ static void dm_integrity_postsuspend(struct dm_target *ti)drain_workqueue (ic->commit_wq);if (ic->mode =='J' ) { -if (ic->meta_dev) -queue_work (ic->writer_wq, &ic->writer_work); +queue_work (ic->writer_wq, &ic->writer_work);drain_workqueue (ic->writer_wq);dm_integrity_flush_buffers (ic, true); +if (ic->wrote_to_journal) { +init_journal (ic, ic->free_section, + ic->journal_sections - ic->free_section, ic->commit_seq); +if (ic->free_section) { +init_journal (ic,0 , ic->free_section, +next_commit_seq (ic->commit_seq)); + } + } }if (ic->mode =='B' ) {
@@ -3132,6 +3138,8 @@ static void dm_integrity_resume(struct dm_target *ti)DEBUG_print ("resume\n" ); + ic->wrote_to_journal = false; +if (ic->provided_data_sectors != old_provided_data_sectors) { if (ic->provided_data_sectors > old_provided_data_sectors && ic->mode == 'B' &&
@@ -3370,6 +3378,7 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim limits->logical_block_size = ic->sectors_per_block <<SECTOR_SHIFT ; limits->physical_block_size = ic->sectors_per_block <<SECTOR_SHIFT ;blk_limits_io_min (limits, ic->sectors_per_block <<SECTOR_SHIFT ); + limits->dma_alignment = limits->logical_block_size -1 ; } }
drivers/md/dm-log-writes.c +1 -0
@@ -875,6 +875,7 @@ static void log_writes_io_hints(struct dm_target *ti, struct queue_limits *limit limits->logical_block_size =bdev_logical_block_size (lc->dev->bdev); limits->physical_block_size =bdev_physical_block_size (lc->dev->bdev); limits->io_min = limits->physical_block_size; + limits->dma_alignment = limits->logical_block_size -1 ; }#if IS_ENABLED (CONFIG_FS_DAX )
drivers/net/arcnet/com20020_cs.c +9 -2
@@ -113,6 +113,7 @@ static int com20020_probe(struct pcmcia_device *p_dev)struct com20020_dev *info;struct net_device *dev;struct arcnet_local *lp; +int ret = -ENOMEM ;dev_dbg (&p_dev->dev,"com20020_attach()\n" );
@@ -142,12 +143,18 @@ static int com20020_probe(struct pcmcia_device *p_dev) info->dev = dev; p_dev->priv = info; -return com20020_config (p_dev); + ret =com20020_config (p_dev); +if (ret) + goto fail_config; + +return 0 ; +fail_config: +free_arcdev (dev); fail_alloc_dev:kfree (info); fail_alloc_info: -return -ENOMEM ; +return ret; }/* com20020_attach */ static void com20020_detach (struct pcmcia_device *link)
drivers/net/bonding/bond_main.c +12 -5
@@ -3231,16 +3231,23 @@ static int bond_na_rcv(const struct sk_buff *skb, struct bonding *bond, struct slave *slave) {struct slave *curr_active_slave, *curr_arp_slave; -struct icmp6hdr *hdr =icmp6_hdr (skb);struct in6_addr *saddr, *daddr; +struct { +struct ipv6hdr ip6; +struct icmp6hdr icmp6; + } *combined, _combined;if (skb->pkt_type ==PACKET_OTHERHOST || - skb->pkt_type ==PACKET_LOOPBACK || - hdr->icmp6_type !=NDISC_NEIGHBOUR_ADVERTISEMENT ) + skb->pkt_type ==PACKET_LOOPBACK ) + goto out; + + combined =skb_header_pointer (skb,0 ,sizeof (_combined), &_combined); +if (!combined || combined->ip6.nexthdr !=NEXTHDR_ICMP || + combined->icmp6.icmp6_type !=NDISC_NEIGHBOUR_ADVERTISEMENT ) goto out; - saddr = &ipv6_hdr (skb)->saddr; - daddr = &ipv6_hdr (skb)->daddr; + saddr = &combined->ip6.saddr; + daddr = &combined->ip6.saddr; slave_dbg(bond->dev, slave->dev, "%s: %s/%d av %d sv %d sip %pI6c tip %pI6c\n", __func__, slave->dev->name, bond_slave_state(slave),
drivers/net/can/usb/gs_usb.c +6 -33
@@ -268,8 +268,6 @@ struct gs_can {struct usb_anchor tx_submitted;atomic_t active_tx_urbs; -void *rxbuf[GS_MAX_RX_URBS ]; -dma_addr_t rxbuf_dma[GS_MAX_RX_URBS ]; };/* usb interface struct */
@@ -587,9 +585,6 @@ static void gs_usb_xmit_callback(struct urb *urb)if (urb->status)netdev_info (netdev,"usb xmit fail %u\n" , txc->echo_id); - -usb_free_coherent (urb->dev, urb->transfer_buffer_length, - urb->transfer_buffer, urb->transfer_dma); } static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,
@@ -618,8 +613,7 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,if (!urb) goto nomem_urb; - hf =usb_alloc_coherent (dev->udev, dev->hf_size_tx,GFP_ATOMIC , - &urb->transfer_dma); + hf =kmalloc (dev->hf_size_tx,GFP_ATOMIC );if (!hf) {netdev_err (netdev,"No memory left for USB buffer\n" ); goto nomem_hf;
@@ -663,7 +657,7 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb, hf, dev->hf_size_tx, gs_usb_xmit_callback, txc); - urb->transfer_flags |=URB_NO_TRANSFER_DMA_MAP ; + urb->transfer_flags |=URB_FREE_BUFFER ;usb_anchor_urb (urb, &dev->tx_submitted);can_put_echo_skb (skb, netdev, idx,0 );
@@ -678,8 +672,6 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,gs_free_tx_context (txc);usb_unanchor_urb (urb); -usb_free_coherent (dev->udev, urb->transfer_buffer_length, - urb->transfer_buffer, urb->transfer_dma);if (rc == -ENODEV ) {netif_device_detach (netdev);
@@ -699,8 +691,7 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,return NETDEV_TX_OK ; badidx: -usb_free_coherent (dev->udev, urb->transfer_buffer_length, - urb->transfer_buffer, urb->transfer_dma); +kfree (hf); nomem_hf:usb_free_urb (urb);
@@ -744,7 +735,6 @@ static int gs_can_open(struct net_device *netdev)for (i =0 ; i <GS_MAX_RX_URBS ; i++) {struct urb *urb;u8 *buf; -dma_addr_t buf_dma;/* alloc rx urb */ urb =usb_alloc_urb (0 ,GFP_KERNEL );
@@ -752,10 +742,8 @@ static int gs_can_open(struct net_device *netdev)return -ENOMEM ;/* alloc rx buffer */ - buf =usb_alloc_coherent (dev->udev, - dev->parent->hf_size_rx, -GFP_KERNEL , - &buf_dma); + buf =kmalloc (dev->parent->hf_size_rx, +GFP_KERNEL );if (!buf) {netdev_err (netdev,"No memory left for USB buffer\n" );
@@ -763,8 +751,6 @@ static int gs_can_open(struct net_device *netdev)return -ENOMEM ; } - urb->transfer_dma = buf_dma; -/* fill, anchor, and submit rx urb */ usb_fill_bulk_urb(urb, dev->udev,
@@ -773,7 +759,7 @@ static int gs_can_open(struct net_device *netdev) buf, dev->parent->hf_size_rx, gs_usb_receive_bulk_callback, parent); - urb->transfer_flags |=URB_NO_TRANSFER_DMA_MAP ; + urb->transfer_flags |=URB_FREE_BUFFER ;usb_anchor_urb (urb, &parent->rx_submitted);
@@ -786,17 +772,10 @@ static int gs_can_open(struct net_device *netdev) "usb_submit failed (err=%d)\n", rc);usb_unanchor_urb (urb); -usb_free_coherent (dev->udev, -sizeof (struct gs_host_frame ), - buf, - buf_dma);usb_free_urb (urb);break ; } - dev->rxbuf[i] = buf; - dev->rxbuf_dma[i] = buf_dma; -/* Drop reference, * USB core will take care of freeing it */
@@ -854,7 +833,6 @@ static int gs_can_close(struct net_device *netdev)int rc;struct gs_can *dev =netdev_priv (netdev);struct gs_usb *parent = dev->parent; -unsigned int i;netif_stop_queue (netdev);
@@ -862,11 +840,6 @@ static int gs_can_close(struct net_device *netdev) parent->active_channels--;if (!parent->active_channels) {usb_kill_anchored_urbs (&parent->rx_submitted); -for (i =0 ; i <GS_MAX_RX_URBS ; i++) -usb_free_coherent (dev->udev, -sizeof (struct gs_host_frame ), - dev->rxbuf[i], - dev->rxbuf_dma[i]); }/* Stop sending URBs */
drivers/net/dsa/sja1105/sja1105_mdio.c +6 -0
@@ -256,6 +256,9 @@ static int sja1105_base_tx_mdio_read(struct mii_bus *bus, int phy, int reg)u32 tmp;int rc; +if (reg &MII_ADDR_C45 ) +return -EOPNOTSUPP ; + rc =sja1105_xfer_u32 (priv,SPI_READ , regs->mdio_100base_tx + reg, &tmp,NULL );if (rc <0 )
@@ -272,6 +275,9 @@ static int sja1105_base_tx_mdio_write(struct mii_bus *bus, int phy, int reg,const struct sja1105_regs *regs = priv->info->regs;u32 tmp = val; +if (reg &MII_ADDR_C45 ) +return -EOPNOTSUPP ; +return sja1105_xfer_u32 (priv,SPI_WRITE , regs->mdio_100base_tx + reg, &tmp,NULL ); }
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c +8 -4
@@ -795,16 +795,20 @@ static void bnx2x_vf_enable_traffic(struct bnx2x *bp, struct bnx2x_virtf *vf)static u8 bnx2x_vf_is_pcie_pending (struct bnx2x *bp,u8 abs_vfid) { -struct pci_dev *dev;struct bnx2x_virtf *vf =bnx2x_vf_by_abs_fid (bp, abs_vfid); +struct pci_dev *dev; +bool pending;if (!vf)return false; dev =pci_get_domain_bus_and_slot (vf->domain, vf->bus, vf->devfn); -if (dev) -return bnx2x_is_pcie_pending (dev); -return false; +if (!dev) +return false; + pending =bnx2x_is_pcie_pending (dev); +pci_dev_put (dev); + +return pending; }int bnx2x_vf_flr_clnup_epilog (struct bnx2x *bp,u8 abs_vfid)
drivers/net/ethernet/cavium/liquidio/lio_main.c +2 -2
@@ -1799,7 +1799,7 @@ static int liquidio_open(struct net_device *netdev)ifstate_set (lio,LIO_IFSTATE_RUNNING ); -if (!OCTEON_CN23XX_PF (oct) || (OCTEON_CN23XX_PF (oct) && !oct->msix_on)) { +if (!OCTEON_CN23XX_PF (oct) || !oct->msix_on) { ret =setup_tx_poll_fn (netdev);if (ret) goto err_poll;
@@ -1829,7 +1829,7 @@ static int liquidio_open(struct net_device *netdev)return 0 ; err_rx_ctrl: -if (!OCTEON_CN23XX_PF (oct) || (OCTEON_CN23XX_PF (oct) && !oct->msix_on)) +if (!OCTEON_CN23XX_PF (oct) || !oct->msix_on)cleanup_tx_poll_fn (netdev); err_poll:if (lio->ptp_clock) {
drivers/net/ethernet/cavium/thunder/thunder_bgx.c +3 -1
@@ -1436,8 +1436,10 @@ static acpi_status bgx_acpi_match_id(acpi_handle handle, u32 lvl,return AE_OK ; } -if (strncmp (string.pointer, bgx_sel,4 )) +if (strncmp (string.pointer, bgx_sel,4 )) { +kfree (string.pointer);return AE_OK ; + }acpi_walk_namespace (ACPI_TYPE_DEVICE , handle,1 , bgx_acpi_register_phy,NULL , bgx,NULL );
drivers/net/ethernet/davicom/dm9051.c +3 -1
@@ -798,8 +798,10 @@ static int dm9051_loop_rx(struct board_info *db) } ret =dm9051_stop_mrcmd (db); -if (ret) +if (ret) { +dev_kfree_skb (skb);return ret; + } skb->protocol =eth_type_trans (skb, db->ndev);if (db->ndev->features &NETIF_F_RXCSUM )
drivers/net/ethernet/engleder/tsnep_main.c +56 -1
83 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc.c +20 -12
@@ -2058,7 +2058,7 @@ static void enetc_setup_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring)/* enable Tx ints by setting pkt thr to 1 */ enetc_txbdr_wr (hw, idx,ENETC_TBICR0 ,ENETC_TBICR0_ICEN |0x1 ); - tbmr =ENETC_TBMR_EN ; + tbmr =ENETC_TBMR_EN |ENETC_TBMR_SET_PRIO (tx_ring->prio);if (tx_ring->ndev->features &NETIF_F_HW_VLAN_CTAG_TX ) tbmr |=ENETC_TBMR_VIH ;
@@ -2121,13 +2121,14 @@ static void enetc_setup_rxbdr(struct enetc_hw *hw, struct enetc_bdr *rx_ring)static void enetc_setup_bdrs (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_setup_txbdr (&priv->si->hw, priv->tx_ring[i]); +enetc_setup_txbdr (hw, priv->tx_ring[i]);for (i =0 ; i < priv->num_rx_rings; i++) -enetc_setup_rxbdr (&priv->si->hw, priv->rx_ring[i]); +enetc_setup_rxbdr (hw, priv->rx_ring[i]); }static void enetc_clear_rxbdr (struct enetc_hw *hw,struct enetc_bdr *rx_ring)
@@ -2160,13 +2161,14 @@ static void enetc_clear_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring)static void enetc_clear_bdrs (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_clear_txbdr (&priv->si->hw, priv->tx_ring[i]); +enetc_clear_txbdr (hw, priv->tx_ring[i]);for (i =0 ; i < priv->num_rx_rings; i++) -enetc_clear_rxbdr (&priv->si->hw, priv->rx_ring[i]); +enetc_clear_rxbdr (hw, priv->rx_ring[i]);udelay (1 ); }
@@ -2174,13 +2176,13 @@ static void enetc_clear_bdrs(struct enetc_ndev_priv *priv)static int enetc_setup_irqs (struct enetc_ndev_priv *priv) {struct pci_dev *pdev = priv->si->pdev; +struct enetc_hw *hw = &priv->si->hw;int i, j, err;for (i =0 ; i < priv->bdr_int_num; i++) {int irq =pci_irq_vector (pdev,ENETC_BDR_INT_BASE_IDX + i);struct enetc_int_vector *v = priv->int_vector[i];int entry =ENETC_BDR_INT_BASE_IDX + i; -struct enetc_hw *hw = &priv->si->hw;snprintf (v->name,sizeof (v->name),"%s-rxtx%d" , priv->ndev->name, i);
@@ -2268,13 +2270,14 @@ static void enetc_setup_interrupts(struct enetc_ndev_priv *priv)static void enetc_clear_interrupts (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_txbdr_wr (&priv->si->hw, i,ENETC_TBIER ,0 ); +enetc_txbdr_wr (hw, i,ENETC_TBIER ,0 );for (i =0 ; i < priv->num_rx_rings; i++) -enetc_rxbdr_wr (&priv->si->hw, i,ENETC_RBIER ,0 ); +enetc_rxbdr_wr (hw, i,ENETC_RBIER ,0 ); }static int enetc_phylink_connect (struct net_device *ndev)
@@ -2441,6 +2444,7 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) {struct enetc_ndev_priv *priv =netdev_priv (ndev);struct tc_mqprio_qopt *mqprio = type_data; +struct enetc_hw *hw = &priv->si->hw;struct enetc_bdr *tx_ring;int num_stack_tx_queues;u8 num_tc;
@@ -2457,7 +2461,8 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data)/* Reset all ring priorities to 0 */ for (i =0 ; i < priv->num_tx_rings; i++) { tx_ring = priv->tx_ring[i]; -enetc_set_bdr_prio (&priv->si->hw, tx_ring->index,0 ); + tx_ring->prio =0 ; +enetc_set_bdr_prio (hw, tx_ring->index, tx_ring->prio); }return 0 ;
@@ -2476,7 +2481,8 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data)*/ for (i =0 ; i < num_tc; i++) { tx_ring = priv->tx_ring[i]; -enetc_set_bdr_prio (&priv->si->hw, tx_ring->index, i); + tx_ring->prio = i; +enetc_set_bdr_prio (hw, tx_ring->index, tx_ring->prio); }/* Reset the number of netdev queues based on the TC count */
@@ -2589,19 +2595,21 @@ static int enetc_set_rss(struct net_device *ndev, int en)static void enetc_enable_rxvlan (struct net_device *ndev,bool en) {struct enetc_ndev_priv *priv =netdev_priv (ndev); +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_rx_rings; i++) -enetc_bdr_enable_rxvlan (&priv->si->hw, i, en); +enetc_bdr_enable_rxvlan (hw, i, en); }static void enetc_enable_txvlan (struct net_device *ndev,bool en) {struct enetc_ndev_priv *priv =netdev_priv (ndev); +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_bdr_enable_txvlan (&priv->si->hw, i, en); +enetc_bdr_enable_txvlan (hw, i, en); }void enetc_set_features (struct net_device *ndev,netdev_features_t features)
drivers/net/ethernet/freescale/enetc/enetc.h +6 -4
@@ -95,6 +95,7 @@ struct enetc_bdr {void __iomem *rcir; };u16 index; +u16 prio;int bd_count;/* # of BDs */ int next_to_use;int next_to_clean;
@@ -467,19 +468,20 @@ int enetc_set_psfp(struct net_device *ndev, bool en);static inline void enetc_get_max_cap (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;u32 reg; - reg =enetc_port_rd (&priv->si->hw,ENETC_PSIDCAPR ); + reg =enetc_port_rd (hw,ENETC_PSIDCAPR ); priv->psfp_cap.max_streamid = reg &ENETC_PSIDCAPR_MSK ;/* Port stream filter capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PSFCAPR ); + reg =enetc_port_rd (hw,ENETC_PSFCAPR ); priv->psfp_cap.max_psfp_filter = reg &ENETC_PSFCAPR_MSK ;/* Port stream gate capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PSGCAPR ); + reg =enetc_port_rd (hw,ENETC_PSGCAPR ); priv->psfp_cap.max_psfp_gate = (reg &ENETC_PSGCAPR_SGIT_MSK ); priv->psfp_cap.max_psfp_gatelist = (reg &ENETC_PSGCAPR_GCL_MSK ) >>16 ;/* Port flow meter capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PFMCAPR ); + reg =enetc_port_rd (hw,ENETC_PFMCAPR ); priv->psfp_cap.max_psfp_meter = reg &ENETC_PFMCAPR_MSK ; }
drivers/net/ethernet/freescale/enetc/enetc_qos.c +38 -39
136 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_main.c +23 -18
41 lines not on this page · raw message
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/prestera/prestera_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_eth_soc.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/qp.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +25 -22
47 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/diag/cmd_tracepoint.h new file +45 -0
45 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_encap.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +6 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c +7 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/sf/dev/dev.c +88 -0
88 lines not on this page · raw message
drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c +12 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_devlink.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/sfc/ef100_netdev.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/cfg80211.c +30 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/hif.c +16 -5
Lines of this file are not shown. View the raw message.
drivers/net/wwan/iosm/iosm_ipc_coredump.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wwan/iosm/iosm_ipc_devlink.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/nfc/st-nci/se.c +36 -13
49 lines not on this page · raw message
drivers/pci/controller/pci-hyperv.c +75 -15
90 lines not on this page · raw message
drivers/pinctrl/qcom/pinctrl-sc8280xp.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/platform/surface/surface_aggregator_registry.c +37 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/ideapad-laptop.c +59 -3
62 lines not on this page · raw message
drivers/platform/x86/intel/pmt/class.c +30 -1
Lines of this file are not shown. View the raw message.
drivers/platform/x86/touchscreen_dmi.c +25 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/storvsc_drv.c +34 -35
69 lines not on this page · raw message
drivers/tty/n_gsm.c +37 -32
69 lines not on this page · raw message
drivers/virt/coco/sev-guest/sev-guest.c +70 -14
84 lines not on this page · raw message
drivers/xen/xen-pciback/conf_space_capability.c +6 -3
Lines of this file are not shown. View the raw message.
fs/btrfs/tree-log.c +55 -4
59 lines not on this page · raw message
fs/ceph/caps.c +13 -37
50 lines not on this page · raw message
fs/zonefs/super.c +44 -16
60 lines not on this page · raw message
io_uring/poll.c +42 -7
49 lines not on this page · raw message
net/core/neighbour.c +30 -28
58 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +1 -1
Lines of this file are not shown. View the raw message.
sound/soc/intel/boards/sof_es8336.c +46 -14
60 lines not on this page · raw message
sound/soc/intel/common/soc-acpi-intel-icl-match.c +13 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/verifier/ref_tracking.c +36 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/io_uring_zerocopy_tx.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +3 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_sockopt.sh +5 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/simult_flows.sh +3 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_bench.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_frglist.sh +1 -1
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.