Linux 6.0.13
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.0.13 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
------------
.clang-format | 1 Makefile | 2 arch/arm/boot/dts/imx7s.dtsi | 4 arch/arm/boot/dts/rk3036-evb.dts | 3 arch/arm/boot/dts/rk3066a-mk808.dts | 2 arch/arm/boot/dts/rk3188-radxarock.dts | 2 arch/arm/boot/dts/rk3188.dtsi | 3 arch/arm/boot/dts/rk3288-evb-act8846.dts | 2 arch/arm/boot/dts/rk3288-evb.dtsi | 6 arch/arm/boot/dts/rk3288-firefly.dtsi | 3 arch/arm/boot/dts/rk3288-miqi.dts | 3 arch/arm/boot/dts/rk3288-rock2-square.dts | 3 arch/arm/boot/dts/rk3288-vmarc-som.dtsi | 1 arch/arm/boot/dts/rk3xxx.dtsi | 7 arch/arm/include/asm/perf_event.h | 2 arch/arm/include/asm/pgtable-nommu.h | 6 arch/arm/include/asm/pgtable.h | 16 arch/arm/mach-at91/sama5.c | 2 arch/arm/mm/fault.c | 18 arch/arm/mm/fault.h | 9 arch/arm/mm/nommu.c | 19 arch/arm64/boot/dts/rockchip/px30-evb.dts | 10 arch/arm64/boot/dts/rockchip/rk3308-evb.dts | 12 arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts | 2 arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts | 2 arch/arm64/boot/dts/rockchip/rk3368-orion-r68-meta.dts | 2 arch/arm64/boot/dts/rockchip/rk3368-r88.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts | 4 arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts | 2 arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi | 1 arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts | 4 arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3566-pinenote.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3566-roc-pc.dts | 8 arch/loongarch/Makefile | 2 arch/loongarch/include/asm/pgtable.h | 8 arch/loongarch/kernel/acpi.c | 31 - arch/loongarch/kernel/setup.c | 1 arch/loongarch/kernel/unwind_prologue.c | 3 arch/s390/kvm/vsie.c | 4 drivers/bluetooth/btusb.c | 6 drivers/crypto/ccp/sev-dev.c | 16 drivers/gpio/gpio-amd8111.c | 4 drivers/gpio/gpio-rockchip.c | 1 drivers/gpio/gpiolib.c | 42 + drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 7 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 24 - drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c | 4 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c | 7 drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c | 3 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c | 4 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c | 1 drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c | 2 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 2 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h | 2 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 4 drivers/gpu/drm/drm_gem_shmem_helper.c | 18 drivers/gpu/drm/i915/display/intel_display.c | 10 drivers/gpu/drm/vmwgfx/vmwgfx_msg.c | 6 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 4 drivers/hid/hid-core.c | 3 drivers/hid/hid-ids.h | 4 drivers/hid/hid-ite.c | 5 drivers/hid/hid-lg4ff.c | 6 drivers/hid/hid-quirks.c | 3 drivers/hid/hid-uclogic-core.c | 1 drivers/hid/hid-uclogic-rdesc.c | 2 drivers/hid/i2c-hid/Kconfig | 4 drivers/media/common/videobuf2/videobuf2-core.c | 102 +++- drivers/media/v4l2-core/v4l2-dv-timings.c | 20 drivers/net/bonding/bond_main.c | 2 drivers/net/can/can327.c | 17 drivers/net/can/slcan/slcan-core.c | 10 drivers/net/can/usb/esd_usb.c | 6 drivers/net/dsa/mv88e6xxx/chip.c | 7 drivers/net/dsa/sja1105/sja1105_devlink.c | 2 drivers/net/dsa/sja1105/sja1105_main.c | 2 drivers/net/ethernet/aeroflex/greth.c | 1 drivers/net/ethernet/broadcom/Kconfig | 3 drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c | 4 drivers/net/ethernet/hisilicon/hisi_femac.c | 2 drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 4 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 12 drivers/net/ethernet/intel/i40e/i40e_main.c | 19 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 drivers/net/ethernet/marvell/mvneta.c | 2 drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c | 7 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 3 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h | 14 drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c | 100 ++-- drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h | 1 drivers/net/ethernet/microchip/encx24j600-regmap.c | 4 drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c | 2 drivers/net/ethernet/microchip/sparx5/sparx5_main.c | 3 drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 41 + drivers/net/ethernet/microsoft/mana/gdma.h | 9 drivers/net/ethernet/microsoft/mana/mana_en.c | 16 drivers/net/ethernet/netronome/nfp/nfdk/dp.c | 6 drivers/net/ethernet/renesas/ravb_main.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 2 drivers/net/ieee802154/ca8210.c | 2 drivers/net/ieee802154/cc2520.c | 2 drivers/net/macsec.c | 1 drivers/net/mdio/fwnode_mdio.c | 25 - drivers/net/mdio/of_mdio.c | 3 drivers/net/phy/mdio_device.c | 2 drivers/net/phy/mxl-gpy.c | 85 +++ drivers/net/plip/plip.c | 4 drivers/net/thunderbolt.c | 1 drivers/net/usb/qmi_wwan.c | 1 drivers/net/vmxnet3/vmxnet3_drv.c | 27 + drivers/net/wwan/iosm/iosm_ipc_mux.c | 1 drivers/net/xen-netback/common.h | 2 drivers/net/xen-netback/interface.c | 6 drivers/net/xen-netback/netback.c | 225 +++++----- drivers/net/xen-netback/rx.c | 8 drivers/net/xen-netfront.c | 6 drivers/nvme/host/core.c | 8 drivers/platform/x86/asus-nb-wmi.c | 28 - drivers/platform/x86/asus-wmi.c | 86 +++ drivers/platform/x86/asus-wmi.h | 10 drivers/regulator/slg51000-regulator.c | 2 drivers/regulator/twl6030-regulator.c | 15 drivers/s390/net/qeth_l2_main.c | 2 drivers/soundwire/dmi-quirks.c | 27 + drivers/soundwire/intel.c | 1 drivers/spi/spi-mt65xx.c | 8 drivers/usb/dwc3/gadget.c | 3 drivers/video/fbdev/core/fbcon.c | 2 fs/btrfs/send.c | 24 + fs/file.c | 11 fs/fscache/cookie.c | 8 include/asm-generic/tlb.h | 4 include/linux/cgroup.h | 1 include/linux/mm.h | 29 - include/linux/platform_data/x86/asus-wmi.h | 1 include/net/bluetooth/hci.h | 12 include/net/ping.h | 3 include/trace/events/fscache.h | 2 io_uring/io_uring.c | 4 kernel/cgroup/cgroup-internal.h | 1 mm/gup.c | 2 mm/hugetlb.c | 25 - mm/khugepaged.c | 63 ++ mm/madvise.c | 6 mm/memcontrol.c | 15 mm/memory.c | 25 - mm/mmu_gather.c | 4 mm/shmem.c | 11 net/9p/trans_fd.c | 6 net/9p/trans_xen.c | 9 net/bluetooth/6lowpan.c | 1 net/bluetooth/af_bluetooth.c | 4 net/bluetooth/hci_codec.c | 19 net/bluetooth/hci_core.c | 8 net/bluetooth/hci_sync.c | 19 net/bluetooth/iso.c | 1 net/can/af_can.c | 4 net/dsa/tag_hellcreek.c | 3 net/dsa/tag_ksz.c | 3 net/dsa/tag_sja1105.c | 3 net/ipv4/fib_frontend.c | 3 net/ipv4/fib_semantics.c | 1 net/ipv4/ip_gre.c | 48 +- net/ipv4/ping.c | 7 net/ipv6/ip6_output.c | 5 net/mac802154/iface.c | 1 net/netfilter/nf_conntrack_core.c | 6 net/netfilter/nf_conntrack_netlink.c | 19 net/netfilter/nf_flow_table_offload.c | 6 net/netfilter/nft_set_pipapo.c | 5 net/nfc/nci/ntf.c | 6 net/tipc/link.c | 4 net/tipc/node.c | 12 net/unix/diag.c | 20 sound/core/seq/seq_memory.c | 11 sound/pci/hda/patch_realtek.c | 62 +- sound/soc/codecs/rt711-sdca-sdw.c | 2 sound/soc/codecs/wm8962.c | 8 sound/soc/soc-pcm.c | 2 tools/testing/selftests/net/config | 2 tools/testing/selftests/net/fcnal-test.sh | 11 tools/testing/selftests/net/fib_tests.sh | 37 + tools/testing/selftests/net/pmtu.sh | 10 tools/testing/selftests/net/rtnetlink.sh | 2 195 files changed, 1461 insertions(+), 627 deletions(-)
Akihiko Odaki (2):
e1000e: Fix TX dispatch condition
igb: Allocate MSI-X vector when testing
Alexandra Winter (1):
s390/qeth: fix use-after-free in hsci
Anastasia Belova (1):
HID: hid-lg4ff: Add check for empty lbuf
Andreas Kemnade (1):
regulator: twl6030: fix get status of twl6032 regulators
Ankit Patel (1):
HID: usbhid: Add ALWAYS_POLL quirk for some mice
Artem Chernyshev (3):
net: dsa: ksz: Check return value
net: dsa: hellcreek: Check return value
net: dsa: sja1105: Check return value
Aurabindo Pillai (1):
drm/amd/display: fix array index out of bound error in DCN32 DML
Benjamin Tissoires (1):
HID: fix I2C_HID not selected when I2C_HID_OF_ELAN is
Casper Andersson (1):
net: microchip: sparx5: correctly free skb in xmit
Chancel Liu (1):
ASoC: wm8962: Wait for updated value of WM8962_CLOCKING1 register
Chen Zhongjin (1):
Bluetooth: Fix not cleanup led when bt_init fails
Chethan T N (2):
Bluetooth: Remove codec id field in vendor codec definition
Bluetooth: Fix support for Read Local Supported Codecs V2
Dan Carpenter (2):
net: mvneta: Prevent out of bounds read in mvneta_config_rss()
net: mvneta: Fix an out of bounds check
Daniel Díaz (1):
selftests/net: Find nettest in current directory
Dave Wysochanski (1):
fscache: Fix oops due to race with cookie_lru and use_cookie
Davide Tronchin (1):
net: usb: qmi_wwan: add u-blox 0x1342 composition
Dawei Li (1):
drm/vmwgfx: Fix race issue calling pin_user_pages
Dillon Varone (2):
drm/amd/display: Use viewport height for subvp mall allocation size drm/amd/display: Use new num clk levels struct for max mclk index
Dominique Martinet (1):
9p/xen: check logical size for buffer size
Eli Cohen (1):
net/mlx5: Lag, avoid lockdep warnings
Emeel Hakim (1):
macsec: add missing attribute validation for offload
Eric Dumazet (1):
ipv6: avoid use-after-free in ip6_fragment()
FUKAUMI Naoki (1):
arm64: dts: rockchip: keep I2S1 disabled for GPIO function on ROCK Pi 4 series
Filipe Manana (1):
btrfs: send: avoid unaligned encoded writes when attempting to clone range
Florian Westphal (1):
inet: ping: use hlist_nulls rcu iterator during lookup
Francesco Dolcini (1):
Revert "ARM: dts: imx7: Fix NAND controller size-cells"
Frank Jungclaus (1):
can: esd_usb: Allow REC and TEC to return to zero
Furkan Kardame (3):
arm64: dts: rockchip: Fix gmac failure of rgmii-id from rk3566-roc-pc
arm64: dts: rockchip: Fix i2c3 pinctrl on rk3566-roc-pc
arm64: dts: rockchip: remove i2c5 from rk3566-roc-pc
GUO Zihua (1):
9p/fd: Use P9_HDRSZ for header size
Giulio Benetti (1):
ARM: 9266/1: mm: fix no-MMU ZERO_PAGE() implementation
Greg Kroah-Hartman (1):
Linux 6.0.13
Guillaume BRUN (1):
drm: bridge: dw_hdmi: fix preference of RGB modes over YUV420
Haiyang Zhang (1):
net: mana: Fix race on per-CQ variable napi work_done
Hangbin Liu (2):
ip_gre: do not report erspan version on GRE interface
bonding: get correct NA dest address
Hans Verkuil (2):
media: videobuf2-core: take mmap_lock in vb2_get_unmapped_area()
media: v4l2-dv-timings.c: fix too strict blanking sanity checks
Hans de Goede (1):
HID: ite: Enable QUIRK_TOUCHPAD_ON_OFF_REPORT on Acer Aspire Switch V 10
Harshit Mogalapalli (1):
io_uring: Fix a null-ptr-deref in io_tctx_exit_cb()
Hauke Mehrtens (1):
ca8210: Fix crash by zero initializing data
Huacai Chen (2):
LoongArch: Combine acpi_boot_table_init() and acpi_boot_init()
LoongArch: Set _PAGE_DIRTY only if _PAGE_MODIFIED is set in {pmd,pte}_mkwrite()
Hugh Dickins (1):
tmpfs: fix data loss from failed fallocate
Ido Schimmel (2):
ipv4: Fix incorrect route flushing when source address is deleted
ipv4: Fix incorrect route flushing when table ID 0 is used
Ismael Ferreras Morezuelas (2):
Bluetooth: btusb: Fix CSR clones again by re-adding ERR_DATA_REPORTING quirk
Bluetooth: btusb: Add debug message for CSR controllers
Jann Horn (4):
fs: use acquire ordering in __fget_light() mm/khugepaged: take the right locks for page table retraction mm/khugepaged: fix GUP-fast interaction by sending IPI mm/khugepaged: invoke MMU notifiers in shmem/file collapse paths
Jarkko Sakkinen (1):
crypto: ccp - Add a quirk to firmware update
Jiri Slaby (SUSE) (1):
can: slcan: fix freed work crash
Jisheng Zhang (1):
net: stmmac: fix "snps,axi-config" node property parsing
Johan Jonker (6):
ARM: dts: rockchip: fix adc-keys sub node names
arm64: dts: rockchip: fix adc-keys sub node names
ARM: dts: rockchip: fix ir-receiver node names
arm64: dts: rockchip: fix ir-receiver node names
ARM: dts: rockchip: rk3188: fix lcdc1-rgb24 node name
ARM: dts: rockchip: disable arm_global_timer on rk3066 and rk3188
John Starks (1):
mm/gup: fix gup_pud_range() for dax
José Expósito (2):
HID: uclogic: Fix frame templates for big endian architectures
HID: uclogic: Add HID_QUIRK_HIDINPUT_FORCE quirk
Juergen Gross (2):
xen/netback: don't call kfree_skb() with interrupts disabled xen/netback: fix build warning
KaiLong Wang (1):
LoongArch: Fix unsigned comparison with less than zero
Kees Cook (2):
ALSA: seq: Fix function prototype mismatch in snd_seq_expand_var_event
NFC: nci: Bounds check struct nfc_target arrays
Konrad Dybcio (1):
regulator: slg51000: Wait after asserting CS pin
Kuniyuki Iwashima (1):
af_unix: Get user_ns from in_skb in unix_diag_get_exact().
Lin Liu (1):
xen-netfront: Fix NULL sring after live migration
Liu Jian (2):
net: hisilicon: Fix potential use-after-free in hisi_femac_rx()
net: hisilicon: Fix potential use-after-free in hix5hd2_rx()
Luiz Augusto von Dentz (1):
Bluetooth: Fix crash when replugging CSR fake controllers
Luke D. Jones (2):
platform/x86: asus-wmi: Adjust tablet/lidflip handling to use enum platform/x86: asus-wmi: Add support for ROG X13 tablet mode
Max Staudt (1):
can: can327: flush TX_work on ldisc .close()
Michael Walle (1):
net: phy: mxl-gpy: add MDINT workaround
Michal Jaron (1):
i40e: Fix not setting default xps_cpus after reset
Mike Kravetz (2):
madvise: use zap_page_range_single for madvise dontneed
hugetlb: don't delete vma_lock in hugetlb MADV_DONTNEED processing
Oleksij Rempel (1):
net: mdiobus: fwnode_mdiobus_register_phy() rework error handling
Oliver Hartkopp (1):
can: af_can: fix NULL pointer dereference in can_rcv_filter
Pablo Neira Ayuso (1):
netfilter: ctnetlink: fix compilation warning after data race fixes in ct mark
Pankaj Raghav (1):
nvme initialize core quirks before calling nvme_init_subsystem
Peter Rosin (1):
ARM: at91: fix build for SAMA5D3 w/o L2 cache
Pierre-Louis Bossart (1):
soundwire: dmi-quirks: add remapping for HP Omen 16-k0005TX
Prike Liang (1):
drm/amdgpu/sdma_v4_0: turn off SDMA ring buffer in the s2idle suspend
Przemyslaw Patynowski (1):
i40e: Disallow ip4 and ip6 l4_4_bytes
Qiheng Lin (1):
net: microchip: sparx5: Fix missing destroy_workqueue of mact_queue
Qiqi Zhang (1):
drm/bridge: ti-sn65dsi86: Fix output polarity setting bug
Radu Nicolae Pirea (OSS) (1):
net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing()
Rob Clark (2):
drm/shmem-helper: Remove errant put in error path drm/shmem-helper: Avoid vm_open error paths
Ronak Doshi (2):
vmxnet3: correctly report encapsulated LRO packet
vmxnet3: use correct intrConf reference when using extended queues
Ross Lagerwall (1):
xen/netback: Ensure protocol headers don't fall in the non-linear area
Ruijing Dong (1):
drm/amdgpu/vcn: update vcn4 fw shared data structure
Sebastian Reichel (3):
arm64: dts: rockchip: fix node name for hym8563 rtc
arm: dts: rockchip: fix node name for hym8563 rtc
arm: dts: rockchip: remove clock-frequency from rtc
Shuming Fan (1):
ASoC: rt711-sdca: fix the latency time of clock stop prepare state machine transitions
Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw: Fix RGMII configuration at SPEED_10
Sjoerd Simons (1):
soundwire: intel: Initialize clock stop timeout
Srinivasa Rao Mandadapu (1):
ASoC: soc-pcm: Add NULL check in BE reparenting
Stanley.Yang (1):
drm/amdgpu: fix use-after-free during gpu recovery
Stefano Brivio (1):
netfilter: nft_set_pipapo: Actually validate intervals in fields after the first one
Sylwester Dziedziuch (1):
i40e: Fix for VF MAC address 0
Taimur Hassan (1):
drm/amd/display: Avoid setting pixel rate divider to N/A
Takashi Iwai (1):
ALSA: hda/realtek: More robust component matching for CS35L41
Tejun Heo (1):
memcg: fix possible use-after-free in memcg_write_event_control()
Tetsuo Handa (1):
fbcon: Use kzalloc() in fbcon_prepare_logo()
Thinh Nguyen (1):
usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer
Thomas Huth (1):
KVM: s390: vsie: Fix the initialization of the epoch extension (epdx) field
Tianjia Zhang (1):
selftests/tls: Fix tls selftests dependency to correct algorithm
Tiezhu Yang (1):
LoongArch: Makefile: Use "grep -E" instead of "egrep"
Tomislav Novak (1):
ARM: 9251/1: perf: Fix stacktraces for tracepoint events in THUMB2 kernels
Valentina Goncharenko (2):
net: encx24j600: Add parentheses to fix precedence
net: encx24j600: Fix invalid logic in reading of MISTAT register
Ville Syrjälä (1):
drm/i915: Remove non-existent pipes from bigjoiner pipe mask
Vladimir Oltean (1):
net: dsa: mv88e6xxx: accept phy-mode = "internal" for internal PHY ports
Wang Kefeng (1):
ARM: 9278/1: kfence: only handle translation faults
Wang ShaoBo (2):
Bluetooth: 6LoWPAN: add missing hci_dev_put() in get_l2cap_conn()
Bluetooth: hci_conn: add missing hci_dev_put() in iso_listen_bis()
Wang Yufen (1):
gpio/rockchip: fix refcount leak in rockchip_gpiolib_register()
Wei Yongjun (1):
mac802154: fix missing INIT_LIST_HEAD in ieee802154_if_add()
Xin Long (3):
netfilter: flowtable_offload: fix using __this_cpu_add in preemptible
netfilter: conntrack: fix using __this_cpu_add in preemptible
tipc: call tipc_lxc_xmit without holding node_read_lock
Xiongfeng Wang (1):
gpio: amd8111: Fix PCI device reference count leak
Yang Yingliang (2):
net: mdiobus: fix double put fwnode in the error path
net: plip: don't call kfree_skb/dev_kfree_skb() under spin_lock_irq()
Yinjun Zhang (1):
nfp: correct desc type when header dma len is 4096
Yongqiang Liu (1):
net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq
Yuan Can (1):
dpaa2-switch: Fix memory leak in dpaa2_switch_acl_entry_add() and dpaa2_switch_acl_entry_remove()
YueHaibing (3):
net: broadcom: Add PTP_1588_CLOCK_OPTIONAL dependency for BCMGENET under ARCH_BCM2835
ravb: Fix potential use-after-free in ravb_rx_gbeth()
tipc: Fix potential OOB in tipc_link_proto_rcv()
Zack Rusin (1):
drm/vmwgfx: Don't use screen objects when SEV is active
Zeng Heng (2):
gpiolib: fix memory leak in gpiochip_setup_dev()
net: mdio: fix unbalanced fwnode reference count in mdio_device_release()
Zhang Changzhong (1):
ethernet: aeroflex: fix potential skb leak in greth_init_rings()
ZhangPeng (1):
HID: core: fix shift-out-of-bounds in hid_report_raw_event
Zhengchao Shao (4):
selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload
net: wwan: iosm: fix memory leak in ipc_mux_init()
net: dsa: sja1105: fix memory leak in sja1105_setup_devlink_regions()
net: thunderbolt: fix memory leak in tbnet_open()
Zhichao Liu (1):
spi: mediatek: Fix DEVAPC Violation at KO Remove
Ziyang Xuan (2):
ieee802154: cc2520: Fix error return code in cc2520_hw_init()
octeontx2-pf: Fix potential memory leak in otx2_init_tc()
Greg Kroah-Hartman
maintainer.clang-format +1 -0
@@ -535,6 +535,7 @@ ForEachMacros: - 'perf_hpp_list__for_each_sort_list_safe' - 'perf_pmu__for_each_hybrid_pmu' - 'ping_portaddr_for_each_entry' + - 'ping_portaddr_for_each_entry_rcu' - 'plist_for_each' - 'plist_for_each_continue' - 'plist_for_each_entry'
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 0 -SUBLEVEL = 12 +SUBLEVEL = 13 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/boot/dts/imx7s.dtsi +2 -2
@@ -1270,10 +1270,10 @@ dma_apbh: dma-apbh@33000000 { clocks = <&clks IMX7D_NAND_USDHC_BUS_RAWNAND_CLK>; }; - gpmi: nand-controller@33002000 { + gpmi: nand-controller@33002000{ compatible = "fsl,imx7d-gpmi-nand"; #address-cells = <1>; - #size-cells = <0>; + #size-cells = <1>; reg = <0x33002000 0x2000>, <0x33004000 0x4000>; reg-names = "gpmi-nand", "bch"; interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/boot/dts/rk3036-evb.dts +1 -2
@@ -31,11 +31,10 @@ phy0: ethernet-phy@0 { &i2c1 { status = "okay"; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; }; };
arch/arm/boot/dts/rk3066a-mk808.dts +1 -1
@@ -32,7 +32,7 @@ adc-keys { keyup-threshold-microvolt = <2500000>; poll-interval = <100>; - recovery { + button-recovery { label = "recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <0>;
arch/arm/boot/dts/rk3188-radxarock.dts +1 -1
@@ -71,7 +71,7 @@ spdif_out: spdif-out { #sound-dai-cells = <0>; }; - ir_recv: gpio-ir-receiver { + ir_recv: ir-receiver { compatible = "gpio-ir-receiver"; gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>; pinctrl-names = "default";
arch/arm/boot/dts/rk3188.dtsi +1 -2
@@ -379,7 +379,7 @@ lcdc1_vsync: lcdc1-vsync { rockchip,pins = <2 RK_PD3 1 &pcfg_pull_none>; }; - lcdc1_rgb24: ldcd1-rgb24 { + lcdc1_rgb24: lcdc1-rgb24 { rockchip,pins = <2 RK_PA0 1 &pcfg_pull_none>, <2 RK_PA1 1 &pcfg_pull_none>, <2 RK_PA2 1 &pcfg_pull_none>,
@@ -607,7 +607,6 @@ &emac { &global_timer { interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>; - status = "disabled"; }; &local_timer {
arch/arm/boot/dts/rk3288-evb-act8846.dts +1 -1
@@ -54,7 +54,7 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563@51 { + rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>;
arch/arm/boot/dts/rk3288-evb.dtsi +3 -3
@@ -28,19 +28,19 @@ button-down { press-threshold-microvolt = <300000>; }; - menu { + button-menu { label = "Menu"; linux,code = <KEY_MENU>; press-threshold-microvolt = <640000>; }; - esc { + button-esc { label = "Esc"; linux,code = <KEY_ESC>; press-threshold-microvolt = <1000000>; }; - home { + button-home { label = "Home"; linux,code = <KEY_HOME>; press-threshold-microvolt = <1300000>;
arch/arm/boot/dts/rk3288-firefly.dtsi +1 -2
@@ -233,11 +233,10 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; interrupt-parent = <&gpio7>; interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-miqi.dts +1 -2
@@ -162,11 +162,10 @@ vdd_gpu: syr828@41 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; };
arch/arm/boot/dts/rk3288-rock2-square.dts +1 -2
@@ -165,11 +165,10 @@ &hdmi { }; &i2c0 { - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "xin32k"; interrupt-parent = <&gpio0>; interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
arch/arm/boot/dts/rk3288-vmarc-som.dtsi +0 -1
@@ -241,7 +241,6 @@ hym8563: rtc@51 { interrupt-parent = <&gpio5>; interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>; #clock-cells = <0>; - clock-frequency = <32768>; clock-output-names = "hym8563"; pinctrl-names = "default"; pinctrl-0 = <&hym8563_int>;
arch/arm/boot/dts/rk3xxx.dtsi +7 -0
@@ -76,6 +76,13 @@ global_timer: global-timer@1013c200 { reg = <0x1013c200 0x20>; interrupts = <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>; clocks = <&cru CORE_PERI>; + status = "disabled"; + /* The clock source and the sched_clock provided by the arm_global_timer + * on Rockchip rk3066a/rk3188 are quite unstable because their rates + * depend on the CPU frequency. + * Keep the arm_global_timer disabled in order to have the + * DW_APB_TIMER (rk3066a) or ROCKCHIP_TIMER (rk3188) selected by default. + */ }; local_timer: local-timer@1013c600 {
arch/arm/include/asm/perf_event.h +1 -1
@@ -17,7 +17,7 @@ extern unsigned long perf_misc_flags(struct pt_regs *regs);#define perf_arch_fetch_caller_regs (regs, __ip) { \ (regs)->ARM_pc = (__ip); \ - (regs)->ARM_fp = (unsigned long) __builtin_frame_address(0); \ + frame_pointer((regs)) = (unsigned long) __builtin_frame_address(0); \ (regs)->ARM_sp = current_stack_pointer; \ (regs)->ARM_cpsr = SVC_MODE; \ }
arch/arm/include/asm/pgtable-nommu.h +0 -6
@@ -44,12 +44,6 @@typedef pte_t *pte_addr_t ; -/* -* ZERO_PAGE is a global shared page that is always zero: used -* for zero-mapped memory areas etc.. -*/ -#define ZERO_PAGE (vaddr) (virt_to_page(0)) -/* * Mark the prot value as uncacheable and unbufferable. */
arch/arm/include/asm/pgtable.h +9 -7
@@ -10,6 +10,15 @@#include <linux/const.h> #include <asm/proc-fns.h> +#ifndef __ASSEMBLY__ +/* +* ZERO_PAGE is a global shared page that is always zero: used +* for zero-mapped memory areas etc.. +*/ +extern struct page *empty_zero_page; +#define ZERO_PAGE (vaddr) (empty_zero_page) +#endif +#ifndef CONFIG_MMU #include <asm-generic/pgtable-nopud.h>
@@ -139,13 +148,6 @@ extern pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,*/ #ifndef __ASSEMBLY__ -/* -* ZERO_PAGE is a global shared page that is always zero: used -* for zero-mapped memory areas etc.. -*/ -extern struct page *empty_zero_page; -#define ZERO_PAGE (vaddr) (empty_zero_page) -extern pgd_t swapper_pg_dir[PTRS_PER_PGD ];
arch/arm/mach-at91/sama5.c +1 -1
@@ -26,7 +26,7 @@ static void sama5_l2c310_write_sec(unsigned long val, unsigned reg)static void __init sama5_secure_cache_init (void ) {sam_secure_init (); -if (sam_linux_is_optee_available ()) +if (IS_ENABLED (CONFIG_OUTER_CACHE ) &&sam_linux_is_optee_available ()) outer_cache.write_sec = sama5_l2c310_write_sec; }
arch/arm/mm/fault.c +16 -2
@@ -105,6 +105,19 @@ static inline bool is_write_fault(unsigned int fsr)return (fsr &FSR_WRITE ) && !(fsr &FSR_CM ); } +static inline bool is_translation_fault (unsigned int fsr) +{ +int fs =fsr_fs (fsr); +#ifdef CONFIG_ARM_LPAE +if ((fs &FS_MMU_NOLL_MASK ) ==FS_TRANS_NOLL ) +return true; +#else +if (fs ==FS_L1_TRANS || fs ==FS_L2_TRANS ) +return true; +#endif +return false; +} +static void die_kernel_fault (const char *msg,struct mm_struct *mm,unsigned long addr,unsigned int fsr,struct pt_regs *regs)
@@ -140,7 +153,8 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,if (addr <PAGE_SIZE ) { msg ="NULL pointer dereference" ; }else { -if (kfence_handle_page_fault (addr,is_write_fault (fsr), regs)) +if (is_translation_fault (fsr) && +kfence_handle_page_fault (addr,is_write_fault (fsr), regs))return ; msg ="paging request" ;
@@ -208,7 +222,7 @@ static inline bool is_permission_fault(unsigned int fsr) {int fs =fsr_fs (fsr);#ifdef CONFIG_ARM_LPAE -if ((fs &FS_PERM_NOLL_MASK ) ==FS_PERM_NOLL ) +if ((fs &FS_MMU_NOLL_MASK ) ==FS_PERM_NOLL )return true;#else if (fs ==FS_L1_PERM || fs ==FS_L2_PERM )
arch/arm/mm/fault.h +6 -3
@@ -14,8 +14,9 @@#ifdef CONFIG_ARM_LPAE #define FSR_FS_AEA 17 +#define FS_TRANS_NOLL 0x4#define FS_PERM_NOLL 0xC -#define FS_PERM_NOLL_MASK 0x3C +#define FS_MMU_NOLL_MASK 0x3Cstatic inline int fsr_fs (unsigned int fsr) {
@@ -23,8 +24,10 @@ static inline int fsr_fs(unsigned int fsr) }#else #define FSR_FS_AEA 22 -#define FS_L1_PERM 0xD -#define FS_L2_PERM 0xF +#define FS_L1_TRANS 0x5 +#define FS_L2_TRANS 0x7 +#define FS_L1_PERM 0xD +#define FS_L2_PERM 0xFstatic inline int fsr_fs (unsigned int fsr) {
arch/arm/mm/nommu.c +19 -0
@@ -26,6 +26,13 @@unsigned long vectors_base; +/* +* empty_zero_page is a special page that is used for +* zero-initialized data and COW. +*/ +struct page *empty_zero_page; +EXPORT_SYMBOL (empty_zero_page); +#ifdef CONFIG_ARM_MPU struct mpu_rgn_info mpu_rgn_info;#endif
@@ -148,9 +155,21 @@ void __init adjust_lowmem_bounds(void)*/ void __init paging_init (const struct machine_desc *mdesc) { +void *zero_page; +early_trap_init ((void *)vectors_base);mpu_setup (); + +/* allocate the zero page. */ + zero_page =memblock_alloc (PAGE_SIZE ,PAGE_SIZE ); +if (!zero_page) +panic ("%s: Failed to allocate %lu bytes align=0x%lx\n" , + __func__,PAGE_SIZE ,PAGE_SIZE ); +bootmem_init (); + + empty_zero_page =virt_to_page (zero_page); +flush_dcache_page (empty_zero_page); }/*
arch/arm64/boot/dts/rockchip/px30-evb.dts +5 -5
@@ -30,31 +30,31 @@ adc-keys { keyup-threshold-microvolt = <1800000>; poll-interval = <100>; - esc-key { + button-esc { label = "esc"; linux,code = <KEY_ESC>; press-threshold-microvolt = <1310000>; }; - home-key { + button-home { label = "home"; linux,code = <KEY_HOME>; press-threshold-microvolt = <624000>; }; - menu-key { + button-menu { label = "menu"; linux,code = <KEY_MENU>; press-threshold-microvolt = <987000>; }; - vol-down-key { + button-down { label = "volume down"; linux,code = <KEY_VOLUMEDOWN>; press-threshold-microvolt = <300000>; }; - vol-up-key { + button-up { label = "volume up"; linux,code = <KEY_VOLUMEUP>; press-threshold-microvolt = <17000>;
arch/arm64/boot/dts/rockchip/rk3308-evb.dts +6 -6
@@ -23,7 +23,7 @@ adc-keys0 { poll-interval = <100>; keyup-threshold-microvolt = <1800000>; - func-key { + button-func { linux,code = <KEY_FN>; label = "function"; press-threshold-microvolt = <18000>;
@@ -37,31 +37,31 @@ adc-keys1 { poll-interval = <100>; keyup-threshold-microvolt = <1800000>; - esc-key { + button-esc { linux,code = <KEY_MICMUTE>; label = "micmute"; press-threshold-microvolt = <1130000>; }; - home-key { + button-home { linux,code = <KEY_MODE>; label = "mode"; press-threshold-microvolt = <901000>; }; - menu-key { + button-menu { linux,code = <KEY_PLAY>; label = "play"; press-threshold-microvolt = <624000>; }; - vol-down-key { + button-down { linux,code = <KEY_VOLUMEDOWN>; label = "volume down"; press-threshold-microvolt = <300000>; }; - vol-up-key { + button-up { linux,code = <KEY_VOLUMEUP>; label = "volume up"; press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts +1 -1
@@ -19,7 +19,7 @@ chosen { stdout-path = "serial2:1500000n8"; }; - ir_rx { + ir-receiver { compatible = "gpio-ir-receiver"; gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>; pinctrl-names = "default";
arch/arm64/boot/dts/rockchip/rk3318-a95x-z2.dts +1 -1
@@ -25,7 +25,7 @@ adc-keys { keyup-threshold-microvolt = <1800000>; poll-interval = <100>; - recovery { + button-recovery { label = "recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <17000>;
arch/arm64/boot/dts/rockchip/rk3368-orion-r68-meta.dts +1 -1
@@ -208,7 +208,7 @@ vdd_cpu: syr827@40 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3368-r88.dts +1 -1
@@ -192,7 +192,7 @@ vdd_cpu: syr827@40 { vin-supply = <&vcc_sys>; }; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi +1 -1
@@ -123,7 +123,7 @@ adc-keys { keyup-threshold-microvolt = <1800000>; poll-interval = <100>; - recovery { + button-recovery { label = "Recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-nanopc-t4.dts +1 -1
@@ -39,7 +39,7 @@ adc-keys { keyup-threshold-microvolt = <1800000>; poll-interval = <100>; - recovery { + button-recovery { label = "Recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-nanopi-m4b.dts +1 -1
@@ -19,7 +19,7 @@ adc-keys { keyup-threshold-microvolt = <1500000>; poll-interval = <100>; - recovery { + button-recovery { label = "Recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-orangepi.dts +2 -2
@@ -52,13 +52,13 @@ button-down { press-threshold-microvolt = <300000>; }; - back { + button-back { label = "Back"; linux,code = <KEY_BACK>; press-threshold-microvolt = <985000>; }; - menu { + button-menu { label = "Menu"; linux,code = <KEY_MENU>; press-threshold-microvolt = <1314000>;
arch/arm64/boot/dts/rockchip/rk3399-roc-pc-plus.dts +1 -1
@@ -98,7 +98,7 @@ &fusb0 { }; &i2c0 { - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; interrupt-parent = <&gpio0>;
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +1 -1
@@ -41,7 +41,7 @@ adc-keys { keyup-threshold-microvolt = <1500000>; poll-interval = <100>; - recovery { + button-recovery { label = "Recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <18000>;
arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi +0 -1
@@ -491,7 +491,6 @@ i2s0_p0_0: endpoint { &i2s1 { rockchip,playback-channels = <2>; rockchip,capture-channels = <2>; - status = "okay"; }; &i2s2 {
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts +2 -2
@@ -33,13 +33,13 @@ button-down { press-threshold-microvolt = <300000>; }; - back { + button-back { label = "Back"; linux,code = <KEY_BACK>; press-threshold-microvolt = <985000>; }; - menu { + button-menu { label = "Menu"; linux,code = <KEY_MENU>; press-threshold-microvolt = <1314000>;
arch/arm64/boot/dts/rockchip/rk3399pro-vmarc-som.dtsi +1 -1
@@ -297,7 +297,7 @@ &i2c2 { clock-frequency = <400000>; status = "okay"; - hym8563: hym8563@51 { + hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; #clock-cells = <0>;
arch/arm64/boot/dts/rockchip/rk3566-pinenote.dtsi +1 -1
@@ -23,7 +23,7 @@ adc-keys { io-channel-names = "buttons"; keyup-threshold-microvolt = <1750000>; - recovery { + button-recovery { label = "recovery"; linux,code = <KEY_VENDOR>; press-threshold-microvolt = <0>;
arch/arm64/boot/dts/rockchip/rk3566-roc-pc.dts +2 -6
@@ -130,7 +130,7 @@ &gmac1 { assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>; assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>; clock_in_out = "input"; - phy-mode = "rgmii-id"; + phy-mode = "rgmii"; phy-supply = <&vcc_3v3>; pinctrl-names = "default"; pinctrl-0 = <&gmac1m0_miim
@@ -397,11 +397,7 @@ &i2c2 { &i2c3 { pinctrl-names = "default"; - pinctrl-0 = <&i2c3m1_xfer>; - status = "okay"; -}; - -&i2c5 { + pinctrl-0 = <&i2c3m0_xfer>; status = "okay"; };
arch/loongarch/Makefile +1 -1
@@ -68,7 +68,7 @@ KBUILD_LDFLAGS += -m $(ld-emul) ifdef CONFIG_LOONGARCH CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ - egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ + grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') endif
arch/loongarch/include/asm/pgtable.h +6 -2
@@ -357,7 +357,9 @@ static inline pte_t pte_mkdirty(pte_t pte)static inline pte_t pte_mkwrite (pte_t pte) { -pte_val (pte) |= (_PAGE_WRITE | _PAGE_DIRTY); +pte_val (pte) |= _PAGE_WRITE; +if (pte_val (pte) & _PAGE_MODIFIED) +pte_val (pte) |= _PAGE_DIRTY;return pte; }
@@ -454,7 +456,9 @@ static inline int pmd_write(pmd_t pmd)static inline pmd_t pmd_mkwrite (pmd_t pmd) { -pmd_val (pmd) |= (_PAGE_WRITE | _PAGE_DIRTY); +pmd_val (pmd) |= _PAGE_WRITE; +if (pmd_val (pmd) & _PAGE_MODIFIED) +pmd_val (pmd) |= _PAGE_DIRTY;return pmd; }
arch/loongarch/kernel/acpi.c +10 -21
@@ -56,23 +56,6 @@ void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size)return ioremap_cache (phys, size); } -void __init acpi_boot_table_init (void ) -{ -/* -* If acpi_disabled, bail out -*/ -if (acpi_disabled) -return ; - -/* -* Initialize the ACPI boot-time table parser. -*/ -if (acpi_table_init ()) { -disable_acpi (); -return ; - } -} -#ifdef CONFIG_SMP static int set_processor_mask (u32 id,u32 flags) {
@@ -156,13 +139,21 @@ static void __init acpi_process_madt(void) loongson_sysconf.nr_cpus = num_processors; } -int __init acpi_boot_init (void ) +void __init acpi_boot_table_init (void ) {/* * If acpi_disabled, bail out */ if (acpi_disabled) -return -1 ; +return ; + +/* +* Initialize the ACPI boot-time table parser. +*/ +if (acpi_table_init ()) { +disable_acpi (); +return ; + } loongson_sysconf.boot_cpu_id =read_csr_cpuid ();
@@ -173,8 +164,6 @@ int __init acpi_boot_init(void)/* Do not enable ACPI SPCR console by default */ acpi_parse_spcr (earlycon_acpi_spcr_enable, false); - -return 0 ; }#ifdef CONFIG_ACPI_NUMA
arch/loongarch/kernel/setup.c +0 -1
@@ -203,7 +203,6 @@ void __init platform_init(void)#ifdef CONFIG_ACPI acpi_gbl_use_default_register_widths = false;acpi_boot_table_init (); -acpi_boot_init ();#endif #ifdef CONFIG_NUMA
arch/loongarch/kernel/unwind_prologue.c +2 -1
@@ -43,7 +43,8 @@ static bool unwind_by_prologue(struct unwind_state *state) {struct stack_info *info = &state->stack_info;union loongarch_instruction *ip, *ip_end; -unsigned long frame_size =0 , frame_ra =-1 ; +long frame_ra =-1 ; +unsigned long frame_size =0 ;unsigned long size, offset, pc = state->pc;if (state->sp >= info->end || state->sp < info->begin)
arch/s390/kvm/vsie.c +3 -1
@@ -546,8 +546,10 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)if (test_kvm_cpu_feat (vcpu->kvm,KVM_S390_VM_CPU_FEAT_CEI )) scb_s->eca |= scb_o->eca &ECA_CEI ;/* Epoch Extension */ -if (test_kvm_facility (vcpu->kvm,139 )) +if (test_kvm_facility (vcpu->kvm,139 )) { scb_s->ecd |= scb_o->ecd &ECD_MEF ; + scb_s->epdx = scb_o->epdx; + }/* etoken */ if (test_kvm_facility (vcpu->kvm,156 ))
drivers/bluetooth/btusb.c +6 -0
@@ -2042,6 +2042,11 @@ static int btusb_setup_csr(struct hci_dev *hdev) rp = (struct hci_rp_read_local_version *)skb->data; +bt_dev_info (hdev,"CSR: Setting up dongle with HCI ver=%u rev=%04x; LMP ver=%u subver=%04x; manufacturer=%u" , +le16_to_cpu (rp->hci_ver),le16_to_cpu (rp->hci_rev), +le16_to_cpu (rp->lmp_ver),le16_to_cpu (rp->lmp_subver), +le16_to_cpu (rp->manufacturer)); +/* Detect a wide host of Chinese controllers that aren't CSR. * * Known fake bcdDevices: 0x0100, 0x0134, 0x1915, 0x2520, 0x7558, 0x8891
@@ -2104,6 +2109,7 @@ static int btusb_setup_csr(struct hci_dev *hdev)* without these the controller will lock up. */ set_bit (HCI_QUIRK_BROKEN_STORED_LINK_KEY , &hdev->quirks); +set_bit (HCI_QUIRK_BROKEN_ERR_DATA_REPORTING , &hdev->quirks);set_bit (HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL , &hdev->quirks);set_bit (HCI_QUIRK_NO_SUSPEND_NOTIFIER , &hdev->quirks);
drivers/crypto/ccp/sev-dev.c +14 -2
@@ -748,6 +748,11 @@ static int sev_update_firmware(struct device *dev)struct page *p;u64 data_size; +if (!sev_version_greater_or_equal (0 ,15 )) { +dev_dbg (dev,"DOWNLOAD_FIRMWARE not supported\n" ); +return -1 ; + } +if (sev_get_firmware (dev, &firmware) == -ENOENT ) {dev_dbg (dev,"No SEV firmware file present\n" );return -1 ;
@@ -780,6 +785,14 @@ static int sev_update_firmware(struct device *dev) data->len = firmware->size; ret =sev_do_cmd (SEV_CMD_DOWNLOAD_FIRMWARE , data, &error); + +/* +* A quirk for fixing the committed TCB version, when upgrading from +* earlier firmware version than 1.50. +*/ +if (!ret && !sev_version_greater_or_equal (1 ,50 )) + ret =sev_do_cmd (SEV_CMD_DOWNLOAD_FIRMWARE , data, &error); +if (ret)dev_dbg (dev,"Failed to update SEV firmware: %#x\n" , error);else
@@ -1289,8 +1302,7 @@ void sev_pci_init(void)if (sev_get_api_version ()) goto err; -if (sev_version_greater_or_equal (0 ,15 ) && -sev_update_firmware (sev->dev) ==0 ) +if (sev_update_firmware (sev->dev) ==0 )sev_get_api_version ();/* If an init_ex_path is provided rely on INIT_EX for PSP initialization
drivers/gpio/gpio-amd8111.c +4 -0
@@ -226,7 +226,10 @@ static int __init amd_gpio_init(void)ioport_unmap (gp.pm); goto out; } +return 0 ; + out: +pci_dev_put (pdev);return err; }
@@ -234,6 +237,7 @@ static void __exit amd_gpio_exit(void) {gpiochip_remove (&gp.chip);ioport_unmap (gp.pm); +pci_dev_put (gp.pdev); }module_init (amd_gpio_init);
drivers/gpio/gpio-rockchip.c +1 -0
@@ -621,6 +621,7 @@ static int rockchip_gpiolib_register(struct rockchip_pin_bank *bank)return -ENODATA ; pctldev =of_pinctrl_get (pctlnp); +of_node_put (pctlnp);if (!pctldev)return -ENODEV ;
drivers/gpio/gpiolib.c +26 -16
115 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +5 -1
@@ -167,7 +167,11 @@ static void amdgpu_job_free_cb(struct drm_sched_job *s_job)amdgpu_sync_free (&job->sync);amdgpu_sync_free (&job->sched_sync); -dma_fence_put (&job->hw_fence); +/* only put the hw fence if has embedded fence */ +if (!job->hw_fence.ops) +kfree (job); +else +dma_fence_put (&job->hw_fence); }void amdgpu_job_free (struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +7 -0
@@ -161,6 +161,7 @@#define AMDGPU_VCN_SW_RING_FLAG (1 << 9)#define AMDGPU_VCN_FW_LOGGING_FLAG (1 << 10)#define AMDGPU_VCN_SMU_VERSION_INFO_FLAG (1 << 11) +#define AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG (1 << 11)#define AMDGPU_VCN_IB_FLAG_DECODE_BUFFER 0x00000001#define AMDGPU_VCN_CMD_FLAG_MSG_BUFFER 0x00000001
@@ -170,6 +171,9 @@#define VCN_CODEC_DISABLE_MASK_HEVC (1 << 2)#define VCN_CODEC_DISABLE_MASK_H264 (1 << 3) +#define AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU (0) +#define AMDGPU_VCN_SMU_DPM_INTERFACE_APU (1) +enum fw_queue_mode {FW_QUEUE_RING_RESET =1 ,FW_QUEUE_DPG_HOLD_OFF =2 ,
@@ -323,6 +327,9 @@ struct amdgpu_vcn4_fw_shared {struct amdgpu_fw_shared_unified_queue_struct sq;uint8_t pad1[8 ];struct amdgpu_fw_shared_fw_logging fw_log; +uint8_t pad2[20 ]; +uint32_t pad3[13 ]; +struct amdgpu_fw_shared_smu_interface_info smu_dpm_interface; };struct amdgpu_vcn_fwlog {
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +15 -9
@@ -980,13 +980,13 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se/** -* sdma_v4_0_gfx_stop - stop the gfx async dma engines +* sdma_v4_0_gfx_enable - enable the gfx async dma engines * * @adev: amdgpu_device pointer -* -* Stop the gfx async dma ring buffers (VEGA10). +* @enable: enable SDMA RB/IB +* control the gfx async dma ring buffers (VEGA10). */ -static void sdma_v4_0_gfx_stop (struct amdgpu_device *adev) +static void sdma_v4_0_gfx_enable (struct amdgpu_device *adev,bool enable) {struct amdgpu_ring *sdma[AMDGPU_MAX_SDMA_INSTANCES ];u32 rb_cntl, ib_cntl;
@@ -1001,10 +1001,10 @@ static void sdma_v4_0_gfx_stop(struct amdgpu_device *adev) } rb_cntl =RREG32_SDMA (i, mmSDMA0_GFX_RB_CNTL); - rb_cntl =REG_SET_FIELD (rb_cntl,SDMA0_GFX_RB_CNTL ,RB_ENABLE ,0 ); + rb_cntl =REG_SET_FIELD (rb_cntl,SDMA0_GFX_RB_CNTL ,RB_ENABLE , enable ?1 :0 );WREG32_SDMA (i, mmSDMA0_GFX_RB_CNTL, rb_cntl); ib_cntl =RREG32_SDMA (i, mmSDMA0_GFX_IB_CNTL); - ib_cntl =REG_SET_FIELD (ib_cntl,SDMA0_GFX_IB_CNTL ,IB_ENABLE ,0 ); + ib_cntl =REG_SET_FIELD (ib_cntl,SDMA0_GFX_IB_CNTL ,IB_ENABLE , enable ?1 :0 );WREG32_SDMA (i, mmSDMA0_GFX_IB_CNTL, ib_cntl); } }
@@ -1131,7 +1131,7 @@ static void sdma_v4_0_enable(struct amdgpu_device *adev, bool enable)int i;if (!enable) { -sdma_v4_0_gfx_stop (adev); +sdma_v4_0_gfx_enable (adev, enable);sdma_v4_0_rlc_stop (adev);if (adev->sdma.has_page_queue)sdma_v4_0_page_stop (adev);
@@ -2043,8 +2043,10 @@ static int sdma_v4_0_suspend(void *handle)struct amdgpu_device *adev = (struct amdgpu_device *)handle;/* SMU saves SDMA state for us */ -if (adev->in_s0ix) +if (adev->in_s0ix) { +sdma_v4_0_gfx_enable (adev, false);return 0 ; + }return sdma_v4_0_hw_fini (adev); }
@@ -2054,8 +2056,12 @@ static int sdma_v4_0_resume(void *handle)struct amdgpu_device *adev = (struct amdgpu_device *)handle;/* SMU restores SDMA state for us */ -if (adev->in_s0ix) +if (adev->in_s0ix) { +sdma_v4_0_enable (adev, true); +sdma_v4_0_gfx_enable (adev, true); +amdgpu_ttm_set_buffer_funcs_status (adev, true);return 0 ; + }return sdma_v4_0_hw_init (adev); }
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c +4 -0
@@ -132,6 +132,10 @@ static int vcn_v4_0_sw_init(void *handle) fw_shared->present_flag_0 =cpu_to_le32 (AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE ); fw_shared->sq.is_enabled =1 ; + fw_shared->present_flag_0 |=cpu_to_le32 (AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG ); + fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags &AMD_IS_APU ) ? +AMDGPU_VCN_SMU_DPM_INTERFACE_APU :AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU ; +if (amdgpu_vcnfw_log)amdgpu_vcn_fwlog_init (&adev->vcn.inst[i]); }
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dccg.c +7 -0
@@ -96,6 +96,13 @@ static void dccg314_set_pixel_rate_div(struct dcn_dccg *dccg_dcn =TO_DCN_DCCG (dccg);enum pixel_rate_div cur_k1 =PIXEL_RATE_DIV_NA , cur_k2 =PIXEL_RATE_DIV_NA ; +// Don't program 0xF into the register field. Not valid since +// K1 / K2 field is only 1 / 2 bits wide +if (k1 ==PIXEL_RATE_DIV_NA || k2 ==PIXEL_RATE_DIV_NA ) { +BREAK_TO_DEBUGGER (); +return ; + } +dccg314_get_pixel_rate_div (dccg, otg_inst, &cur_k1, &cur_k2);if (k1 ==PIXEL_RATE_DIV_NA || k2 ==PIXEL_RATE_DIV_NA || (k1 == cur_k1 && k2 == cur_k2))return ;
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_hwseq.c +2 -1
@@ -349,6 +349,7 @@ unsigned int dcn314_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsig odm_combine_factor =get_odm_config (pipe_ctx,NULL );if (is_dp_128b_132b_signal (pipe_ctx)) { + *k1_div =PIXEL_RATE_DIV_BY_1 ; *k2_div =PIXEL_RATE_DIV_BY_1 ; }else if (dc_is_hdmi_tmds_signal (pipe_ctx->stream->signal) ||dc_is_dvi_signal (pipe_ctx->stream->signal)) { *k1_div =PIXEL_RATE_DIV_BY_1 ;
@@ -356,7 +357,7 @@ unsigned int dcn314_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsig *k2_div =PIXEL_RATE_DIV_BY_2 ; else *k2_div =PIXEL_RATE_DIV_BY_4 ; - }else if (dc_is_dp_signal (pipe_ctx->stream->signal)) { + }else if (dc_is_dp_signal (pipe_ctx->stream->signal) ||dc_is_virtual_signal (pipe_ctx->stream->signal)) {if (two_pix_per_container) { *k1_div =PIXEL_RATE_DIV_BY_1 ; *k2_div =PIXEL_RATE_DIV_BY_2 ;
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_dccg.c +3 -1
@@ -96,8 +96,10 @@ static void dccg32_set_pixel_rate_div(// Don't program 0xF into the register field. Not valid since // K1 / K2 field is only 1 / 2 bits wide -if (k1 ==PIXEL_RATE_DIV_NA || k2 ==PIXEL_RATE_DIV_NA ) +if (k1 ==PIXEL_RATE_DIV_NA || k2 ==PIXEL_RATE_DIV_NA ) { +BREAK_TO_DEBUGGER ();return ; + }dccg32_get_pixel_rate_div (dccg, otg_inst, &cur_k1, &cur_k2);if (k1 == cur_k1 && k2 == cur_k2)
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_hwseq.c +1 -0
@@ -1171,6 +1171,7 @@ unsigned int dcn32_calculate_dccg_k1_k2_values(struct pipe_ctx *pipe_ctx, unsign odm_combine_factor =get_odm_config (pipe_ctx,NULL );if (is_dp_128b_132b_signal (pipe_ctx)) { + *k1_div =PIXEL_RATE_DIV_BY_1 ; *k2_div =PIXEL_RATE_DIV_BY_1 ; }else if (dc_is_hdmi_tmds_signal (pipe_ctx->stream->signal) ||dc_is_dvi_signal (pipe_ctx->stream->signal)) { *k1_div =PIXEL_RATE_DIV_BY_1 ;
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c +1 -1
@@ -103,7 +103,7 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat mall_alloc_width_blk_aligned = full_vp_width_blk_aligned;/* mall_alloc_height_blk_aligned_l/c = CEILING(sub_vp_height_l/c - 1, blk_height_l/c) + blk_height_l/c */ - mall_alloc_height_blk_aligned = (pipe->stream->timing.v_addressable -1 + mblk_height -1 ) / + mall_alloc_height_blk_aligned = (pipe->plane_res.scl_data.viewport.height -1 + mblk_height -1 ) / mblk_height * mblk_height + mblk_height;/* full_mblk_width_ub_l/c = mall_alloc_width_blk_aligned_l/c;
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +1 -1
@@ -1803,7 +1803,7 @@ void dcn32_calculate_wm_and_dlg_fpu(struct dc *dc, struct dc_state *context,if (context->bw_ctx.dml.vba.DRAMClockChangeSupport[vlevel][maxMpcComb] == dm_dram_clock_change_unsupported) { -int min_dram_speed_mts_offset = dc->clk_mgr->bw_params->clk_table.num_entries -1 ; +int min_dram_speed_mts_offset = dc->clk_mgr->bw_params->clk_table.num_entries_per_clk.num_memclk_levels -1 ; min_dram_speed_mts = dc->clk_mgr->bw_params->clk_table.entries[min_dram_speed_mts_offset].memclk_mhz *16 ;
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h +1 -1
@@ -1152,7 +1152,7 @@ struct vba_vars_st {double UrgBurstFactorLumaPre[DC__NUM_DPP__MAX ];double UrgBurstFactorChromaPre[DC__NUM_DPP__MAX ];bool NotUrgentLatencyHidingPre[DC__NUM_DPP__MAX ]; -bool LinkCapacitySupport[DC__NUM_DPP__MAX ]; +bool LinkCapacitySupport[DC__VOLTAGE_STATES ];bool VREADY_AT_OR_AFTER_VSYNC [DC__NUM_DPP__MAX ];unsigned int MIN_DST_Y_NEXT_START [DC__NUM_DPP__MAX ];unsigned int VFrontPorch[DC__NUM_DPP__MAX ];
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +3 -3
@@ -2720,6 +2720,9 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,* if supported. In any case the default RGB888 format is added */ +/* Default 8bit RGB fallback */ + output_fmts[i++] =MEDIA_BUS_FMT_RGB888_1X24 ; +if (max_bpc >=16 && info->bpc ==16 ) {if (info->color_formats &DRM_COLOR_FORMAT_YCBCR444 ) output_fmts[i++] =MEDIA_BUS_FMT_YUV16_1X48 ;
@@ -2753,9 +2756,6 @@ static u32 *dw_hdmi_bridge_atomic_get_output_bus_fmts(struct drm_bridge *bridge,if (info->color_formats &DRM_COLOR_FORMAT_YCBCR444 ) output_fmts[i++] =MEDIA_BUS_FMT_YUV8_1X24 ; -/* Default 8bit RGB fallback */ - output_fmts[i++] =MEDIA_BUS_FMT_RGB888_1X24 ; - *num_output_fmts = i;return output_fmts;
drivers/gpu/drm/bridge/ti-sn65dsi86.c +2 -2
@@ -906,9 +906,9 @@ static void ti_sn_bridge_set_video_timings(struct ti_sn65dsi86 *pdata) &pdata->bridge.encoder->crtc->state->adjusted_mode;u8 hsync_polarity =0 , vsync_polarity =0 ; -if (mode->flags &DRM_MODE_FLAG_PHSYNC ) +if (mode->flags &DRM_MODE_FLAG_NHSYNC ) hsync_polarity =CHA_HSYNC_POLARITY ; -if (mode->flags &DRM_MODE_FLAG_PVSYNC ) +if (mode->flags &DRM_MODE_FLAG_NVSYNC ) vsync_polarity =CHA_VSYNC_POLARITY ; ti_sn65dsi86_write_u16(pdata, SN_CHA_ACTIVE_LINE_LENGTH_LOW_REG,
drivers/gpu/drm/drm_gem_shmem_helper.c +12 -6
@@ -571,12 +571,20 @@ static void drm_gem_shmem_vm_open(struct vm_area_struct *vma) {struct drm_gem_object *obj = vma->vm_private_data;struct drm_gem_shmem_object *shmem =to_drm_gem_shmem_obj (obj); -int ret;WARN_ON (shmem->base.import_attach); - ret =drm_gem_shmem_get_pages (shmem); -WARN_ON_ONCE (ret !=0 ); +mutex_lock (&shmem->pages_lock); + +/* +* We should have already pinned the pages when the buffer was first +* mmap'd, vm_open() just grabs an additional reference for the new +* mm the vma is getting copied into (ie. on fork()). +*/ +if (!WARN_ON_ONCE (!shmem->pages_use_count)) + shmem->pages_use_count++; + +mutex_unlock (&shmem->pages_lock);drm_gem_vm_open (vma); }
@@ -622,10 +630,8 @@ int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct } ret =drm_gem_shmem_get_pages (shmem); -if (ret) { -drm_gem_vm_close (vma); +if (ret)return ret; - } vma->vm_flags |=VM_PFNMAP |VM_DONTEXPAND |VM_DONTDUMP ; vma->vm_page_prot =vm_get_page_prot (vma->vm_flags);
drivers/gpu/drm/i915/display/intel_display.c +7 -3
@@ -3717,12 +3717,16 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,static u8 bigjoiner_pipes (struct drm_i915_private *i915) { +u8 pipes; +if (DISPLAY_VER (i915) >=12 ) -return BIT (PIPE_A ) |BIT (PIPE_B ) |BIT (PIPE_C ) |BIT (PIPE_D ); + pipes =BIT (PIPE_A ) |BIT (PIPE_B ) |BIT (PIPE_C ) |BIT (PIPE_D );else if (DISPLAY_VER (i915) >=11 ) -return BIT (PIPE_B ) |BIT (PIPE_C ); + pipes =BIT (PIPE_B ) |BIT (PIPE_C );else -return 0 ; + pipes =0 ; + +return pipes &INTEL_INFO (i915)->display.pipe_mask; } static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
drivers/gpu/drm/vmwgfx/vmwgfx_msg.c +3 -3
@@ -1085,21 +1085,21 @@ int vmw_mksstat_add_ioctl(struct drm_device *dev, void *data,reset_ppn_array (pdesc->strsPPNs,ARRAY_SIZE (pdesc->strsPPNs));/* Pin mksGuestStat user pages and store those in the instance descriptor */ - nr_pinned_stat =pin_user_pages (arg->stat, num_pages_stat,FOLL_LONGTERM , pages_stat,NULL ); + nr_pinned_stat =pin_user_pages_fast (arg->stat, num_pages_stat,FOLL_LONGTERM , pages_stat);if (num_pages_stat != nr_pinned_stat) goto err_pin_stat;for (i =0 ; i < num_pages_stat; ++i) pdesc->statPPNs[i] =page_to_pfn (pages_stat[i]); - nr_pinned_info =pin_user_pages (arg->info, num_pages_info,FOLL_LONGTERM , pages_info,NULL ); + nr_pinned_info =pin_user_pages_fast (arg->info, num_pages_info,FOLL_LONGTERM , pages_info);if (num_pages_info != nr_pinned_info) goto err_pin_info;for (i =0 ; i < num_pages_info; ++i) pdesc->infoPPNs[i] =page_to_pfn (pages_info[i]); - nr_pinned_strs =pin_user_pages (arg->strs, num_pages_strs,FOLL_LONGTERM , pages_strs,NULL ); + nr_pinned_strs =pin_user_pages_fast (arg->strs, num_pages_strs,FOLL_LONGTERM , pages_strs);if (num_pages_strs != nr_pinned_strs) goto err_pin_strs;
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +4 -0
@@ -950,6 +950,10 @@ int vmw_kms_sou_init_display(struct vmw_private *dev_priv)struct drm_device *dev = &dev_priv->drm;int i, ret; +/* Screen objects won't work if GMR's aren't available */ +if (!dev_priv->has_gmr) +return -ENOSYS ; +if (!(dev_priv->capabilities &SVGA_CAP_SCREEN_OBJECT_2 )) {return -ENOSYS ; }
drivers/hid/hid-core.c +3 -0
@@ -1315,6 +1315,9 @@ static s32 snto32(__u32 value, unsigned n)if (!value || !n)return 0 ; +if (n >32 ) + n =32 ; +switch (n) {case 8 :return ((__s8 )value);case 16 :return ((__s16 )value);
drivers/hid/hid-ids.h +4 -0
@@ -274,6 +274,7 @@#define USB_DEVICE_ID_CH_AXIS_295 0x001c#define USB_VENDOR_ID_CHERRY 0x046a +#define USB_DEVICE_ID_CHERRY_MOUSE_000C 0x000c#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027
@@ -917,6 +918,7 @@#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0 +#define USB_DEVICE_ID_MS_MOUSE_0783 0x0783#define USB_VENDOR_ID_MOJO 0x8282#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
@@ -1215,6 +1217,7 @@#define USB_DEVICE_ID_SYNAPTICS_DELL_K15A 0x6e21#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1002 0x73f4#define USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003 0x73f5 +#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017 0x73f6#define USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5 0x81a7#define USB_VENDOR_ID_TEXAS_INSTRUMENTS 0x2047
@@ -1379,6 +1382,7 @@#define USB_VENDOR_ID_PRIMAX 0x0461#define USB_DEVICE_ID_PRIMAX_MOUSE_4D22 0x4d22 +#define USB_DEVICE_ID_PRIMAX_MOUSE_4E2A 0x4e2a#define USB_DEVICE_ID_PRIMAX_KEYBOARD 0x4e05#define USB_DEVICE_ID_PRIMAX_REZEL 0x4e72#define USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F 0x4d0f
drivers/hid/hid-ite.c +5 -0
@@ -121,6 +121,11 @@ static const struct hid_device_id ite_devices[] = { USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_ACER_ONE_S1003), .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, +/* ITE8910 USB kbd ctlr, with Synaptics touchpad connected to it. */ + { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, +USB_VENDOR_ID_SYNAPTICS , +USB_DEVICE_ID_SYNAPTICS_ACER_SWITCH5_017 ), + .driver_data = QUIRK_TOUCHPAD_ON_OFF_REPORT }, { } };MODULE_DEVICE_TABLE (hid, ite_devices);
drivers/hid/hid-lg4ff.c +6 -0
@@ -872,6 +872,12 @@ static ssize_t lg4ff_alternate_modes_store(struct device *dev, struct device_attreturn -ENOMEM ; i =strlen (lbuf); + +if (i ==0 ) { +kfree (lbuf); +return -EINVAL ; + } +if (lbuf[i-1 ] =='\n' ) {if (i ==1 ) {kfree (lbuf);
drivers/hid/hid-quirks.c +3 -0
@@ -54,6 +54,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_MOUSE_000C), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
@@ -122,6 +123,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MCS, USB_DEVICE_ID_MCS_GAMEPADBLOCK), HID_QUIRK_MULTI_INPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_MOUSE_0783), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PIXART_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE3_COVER), HID_QUIRK_NO_INIT_REPORTS },
@@ -146,6 +148,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4D22), HID_QUIRK_ALWAYS_POLL }, + { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_MOUSE_4E2A), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D0F), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4D65), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_PIXART_MOUSE_4E22), HID_QUIRK_ALWAYS_POLL },
drivers/hid/hid-uclogic-core.c +1 -0
@@ -192,6 +192,7 @@ static int uclogic_probe(struct hid_device *hdev,* than the pen, so use QUIRK_MULTI_INPUT for all tablets. */ hdev->quirks |=HID_QUIRK_MULTI_INPUT ; + hdev->quirks |=HID_QUIRK_HIDINPUT_FORCE ;/* Allocate and assign driver data */ drvdata =devm_kzalloc (&hdev->dev,sizeof (*drvdata),GFP_KERNEL );
drivers/hid/hid-uclogic-rdesc.c +1 -1
@@ -1119,7 +1119,7 @@ __u8 *uclogic_rdesc_template_apply(const __u8 *template_ptr, p[sizeof(btn_head)] < param_num) { v = param_list[p[sizeof(btn_head)]]; put_unaligned((__u8)0x2A, p); /* Usage Maximum */ - put_unaligned_le16((__force u16)cpu_to_le16(v), p + 1); + put_unaligned((__force u16)cpu_to_le16(v), (s16 *)(p + 1)); p += sizeof(btn_head) + 1; } else { p++;
drivers/hid/i2c-hid/Kconfig +2 -2
@@ -66,6 +66,6 @@ endmenu config I2C_HID_CORE tristate - default y if I2C_HID_ACPI=y || I2C_HID_OF=y || I2C_HID_OF_GOODIX=y - default m if I2C_HID_ACPI=m || I2C_HID_OF=m || I2C_HID_OF_GOODIX=m + default y if I2C_HID_ACPI=y || I2C_HID_OF=y || I2C_HID_OF_ELAN=y || I2C_HID_OF_GOODIX=y + default m if I2C_HID_ACPI=m || I2C_HID_OF=m || I2C_HID_OF_ELAN=m || I2C_HID_OF_GOODIX=m select HID
drivers/media/common/videobuf2/videobuf2-core.c +73 -29
214 lines not on this page · raw message
drivers/media/v4l2-core/v4l2-dv-timings.c +14 -6
@@ -145,6 +145,8 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,const struct v4l2_bt_timings *bt = &t->bt;const struct v4l2_bt_timings_cap *cap = &dvcap->bt;u32 caps = cap->capabilities; +const u32 max_vert =10240 ; +u32 max_hor =3 * bt->width;if (t->type !=V4L2_DV_BT_656_1120 )return false;
@@ -166,14 +168,20 @@ bool v4l2_valid_dv_timings(const struct v4l2_dv_timings *t,if (!bt->interlaced && (bt->il_vbackporch || bt->il_vsync || bt->il_vfrontporch))return false; -if (bt->hfrontporch >2 * bt->width || - bt->hsync >1024 || bt->hbackporch >1024 ) +/* +* Some video receivers cannot properly separate the frontporch, +* backporch and sync values, and instead they only have the total +* blanking. That can be assigned to any of these three fields. +* So just check that none of these are way out of range. +*/ +if (bt->hfrontporch > max_hor || + bt->hsync > max_hor || bt->hbackporch > max_hor)return false; -if (bt->vfrontporch >4096 || - bt->vsync >128 || bt->vbackporch >4096 ) +if (bt->vfrontporch > max_vert || + bt->vsync > max_vert || bt->vbackporch > max_vert)return false; -if (bt->interlaced && (bt->il_vfrontporch >4096 || - bt->il_vsync >128 || bt->il_vbackporch >4096 )) +if (bt->interlaced && (bt->il_vfrontporch > max_vert || + bt->il_vsync > max_vert || bt->il_vbackporch > max_vert))return false;return fnc ==NULL ||fnc (t, fnc_handle); }
drivers/net/bonding/bond_main.c +1 -1
@@ -3247,7 +3247,7 @@ static int bond_na_rcv(const struct sk_buff *skb, struct bonding *bond, goto out; saddr = &combined->ip6.saddr; - daddr = &combined->ip6.saddr; + daddr = &combined->ip6.daddr; 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/can327.c +10 -7
@@ -796,9 +796,9 @@ static int can327_netdev_close(struct net_device *dev)netif_stop_queue (dev); -/* Give UART one final chance to flush. */ -clear_bit (TTY_DO_WRITE_WAKEUP , &elm->tty->flags); -flush_work (&elm->tx_work); +/* We don't flush the UART TX queue here, as we want final stop +* commands (like the above dummy char) to be flushed out. +*/ can_rx_offload_disable (&elm->offload); elm->can.state =CAN_STATE_STOPPED ;
@@ -1069,12 +1069,15 @@ static void can327_ldisc_close(struct tty_struct *tty) {struct can327 *elm = (struct can327 *)tty->disc_data; -/* unregister_netdev() calls .ndo_stop() so we don't have to. -* Our .ndo_stop() also flushes the TTY write wakeup handler, -* so we can safely set elm->tty = NULL after this. -*/ +/* unregister_netdev() calls .ndo_stop() so we don't have to. */ unregister_candev (elm->dev); +/* Give UART one final chance to flush. +* No need to clear TTY_DO_WRITE_WAKEUP since .write_wakeup() is +* serialised against .close() and will not be called once we return. +*/ +flush_work (&elm->tx_work); +/* Mark channel as dead */ spin_lock_bh (&elm->lock); tty->disc_data =NULL ;
drivers/net/can/slcan/slcan-core.c +6 -4
@@ -864,12 +864,14 @@ static void slcan_close(struct tty_struct *tty) {struct slcan *sl = (struct slcan *)tty->disc_data; -/* unregister_netdev() calls .ndo_stop() so we don't have to. -* Our .ndo_stop() also flushes the TTY write wakeup handler, -* so we can safely set sl->tty = NULL after this. -*/ unregister_candev (sl->dev); +/* +* The netdev needn't be UP (so .ndo_stop() is not called). Hence make +* sure this is not running before freeing it up. +*/ +flush_work (&sl->tx_work); +/* Mark channel as dead */ spin_lock_bh (&sl->lock); tty->disc_data =NULL ;
drivers/net/can/usb/esd_usb.c +6 -0
@@ -234,6 +234,10 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,u8 rxerr = msg->msg.rx.data[2 ];u8 txerr = msg->msg.rx.data[3 ]; +netdev_dbg (priv->netdev, +"CAN_ERR_EV_EXT: dlc=%#02x state=%02x ecc=%02x rec=%02x tec=%02x\n" , + msg->msg.rx.dlc, state, ecc, rxerr, txerr); + skb =alloc_can_err_skb (priv->netdev, &cf);if (skb ==NULL ) { stats->rx_dropped++;
@@ -260,6 +264,8 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,break ;default : priv->can.state =CAN_STATE_ERROR_ACTIVE ; + txerr =0 ; + rxerr =0 ;break ; } }else {
drivers/net/dsa/mv88e6xxx/chip.c +5 -2
@@ -825,10 +825,13 @@ static void mv88e6xxx_get_caps(struct dsa_switch *ds, int port, chip->info->ops->phylink_get_caps (chip, port, config); -/* Internal ports need GMII for PHYLIB */ -if (mv88e6xxx_phy_is_internal (ds, port)) +if (mv88e6xxx_phy_is_internal (ds, port)) { +__set_bit (PHY_INTERFACE_MODE_INTERNAL , + config->supported_interfaces); +/* Internal ports with no phy-mode need GMII for PHYLIB */ __set_bit (PHY_INTERFACE_MODE_GMII , config->supported_interfaces); + } } static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
drivers/net/dsa/sja1105/sja1105_devlink.c +2 -0
@@ -95,6 +95,8 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds)if (IS_ERR (region)) {while (--i >=0 )dsa_devlink_region_destroy (priv->regions[i]); + +kfree (priv->regions);return PTR_ERR (region); }
drivers/net/dsa/sja1105/sja1105_main.c +1 -1
@@ -1038,7 +1038,7 @@ static int sja1105_init_l2_policing(struct sja1105_private *priv) policing[bcast].sharindx = port;/* Only SJA1110 has multicast policers */ -if (mcast <= table->ops->max_entry_count) +if (mcast < table->ops->max_entry_count) policing[mcast].sharindx = port; }
drivers/net/ethernet/aeroflex/greth.c +1 -0
@@ -258,6 +258,7 @@ static int greth_init_rings(struct greth_private *greth)if (dma_mapping_error (greth->dev, dma_addr)) {if (netif_msg_ifup (greth))dev_err (greth->dev,"Could not create initial DMA mapping\n" ); +dev_kfree_skb (skb); goto cleanup; } greth->rx_skbuff[i] = skb;
drivers/net/ethernet/broadcom/Kconfig +2 -1
@@ -71,13 +71,14 @@ config BCM63XX_ENET config BCMGENET tristate "Broadcom GENET internal MAC support" depends on HAS_IOMEM + depends on PTP_1588_CLOCK_OPTIONAL || !ARCH_BCM2835 select MII select PHYLIB select FIXED_PHY select BCM7XXX_PHY select MDIO_BCM_UNIMAC select DIMLIB - select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL) + select BROADCOM_PHY if ARCH_BCM2835 help This driver supports the built-in Ethernet MACs found in the Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/cavium/thunder/nicvf_main.c +3 -1
@@ -2240,7 +2240,7 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) err =register_netdev (netdev);if (err) {dev_err (dev,"Failed to register netdevice\n" ); - goto err_unregister_interrupts; + goto err_destroy_workqueue; } nic->msg_enable = debug;
@@ -2249,6 +2249,8 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)return 0 ; +err_destroy_workqueue: +destroy_workqueue (nic->nicvf_rx_mode_wq); err_unregister_interrupts:nicvf_unregister_interrupts (nic); err_free_netdev:
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-flower.c +4 -0
@@ -132,6 +132,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block, DMA_TO_DEVICE);if (unlikely (dma_mapping_error (dev, acl_entry_cfg->key_iova))) {dev_err (dev,"DMA mapping failed\n" ); +kfree (cmd_buff);return -EFAULT ; }
@@ -142,6 +143,7 @@ int dpaa2_switch_acl_entry_add(struct dpaa2_switch_filter_block *filter_block, DMA_TO_DEVICE);if (err) {dev_err (dev,"dpsw_acl_add_entry() failed %d\n" , err); +kfree (cmd_buff);return err; }
@@ -172,6 +174,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block, DMA_TO_DEVICE);if (unlikely (dma_mapping_error (dev, acl_entry_cfg->key_iova))) {dev_err (dev,"DMA mapping failed\n" ); +kfree (cmd_buff);return -EFAULT ; }
@@ -182,6 +185,7 @@ dpaa2_switch_acl_entry_remove(struct dpaa2_switch_filter_block *block, DMA_TO_DEVICE);if (err) {dev_err (dev,"dpsw_acl_remove_entry() failed %d\n" , err); +kfree (cmd_buff);return err; }
drivers/net/ethernet/hisilicon/hisi_femac.c +1 -1
@@ -283,7 +283,7 @@ static int hisi_femac_rx(struct net_device *dev, int limit) skb->protocol =eth_type_trans (skb, dev);napi_gro_receive (&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos = (pos +1 ) % rxq->num;if (rx_pkts_num >= limit)
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c +1 -1
@@ -550,7 +550,7 @@ static int hix5hd2_rx(struct net_device *dev, int limit) skb->protocol =eth_type_trans (skb, dev);napi_gro_receive (&priv->napi, skb); dev->stats.rx_packets++; - dev->stats.rx_bytes += skb->len; + dev->stats.rx_bytes += len; next: pos =dma_ring_incr (pos,RX_DESC_NUM ); }
drivers/net/ethernet/intel/e1000e/netdev.c +2 -2
@@ -5936,9 +5936,9 @@ static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb,e1000_tx_queue (tx_ring, tx_flags, count);/* Make sure there is space in the ring for the next send. */ e1000_maybe_stop_tx (tx_ring, - (MAX_SKB_FRAGS * + ((MAX_SKB_FRAGS +1 ) *DIV_ROUND_UP (PAGE_SIZE , - adapter->tx_fifo_limit) +2 )); + adapter->tx_fifo_limit) +4 ));if (!netdev_xmit_more () ||netif_xmit_stopped (netdev_get_tx_queue (netdev,0 ))) {
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +2 -10
@@ -4464,11 +4464,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,return -EOPNOTSUPP ;/* First 4 bytes of L4 header */ -if (usr_ip4_spec->l4_4_bytes ==htonl (0xFFFFFFFF )) - new_mask |=I40E_L4_SRC_MASK |I40E_L4_DST_MASK ; -else if (!usr_ip4_spec->l4_4_bytes) - new_mask &= ~(I40E_L4_SRC_MASK |I40E_L4_DST_MASK ); -else +if (usr_ip4_spec->l4_4_bytes)return -EOPNOTSUPP ;/* Filtering on Type of Service is not supported. */
@@ -4507,11 +4503,7 @@ static int i40e_check_fdir_input_set(struct i40e_vsi *vsi,else return -EOPNOTSUPP ; -if (usr_ip6_spec->l4_4_bytes ==htonl (0xFFFFFFFF )) - new_mask |=I40E_L4_SRC_MASK |I40E_L4_DST_MASK ; -else if (!usr_ip6_spec->l4_4_bytes) - new_mask &= ~(I40E_L4_SRC_MASK |I40E_L4_DST_MASK ); -else +if (usr_ip6_spec->l4_4_bytes)return -EOPNOTSUPP ;/* Filtering on Traffic class is not supported. */
drivers/net/ethernet/intel/i40e/i40e_main.c +18 -1
@@ -10661,6 +10661,21 @@ static int i40e_rebuild_channels(struct i40e_vsi *vsi)return 0 ; } +/** +* i40e_clean_xps_state - clean xps state for every tx_ring +* @vsi: ptr to the VSI +**/ +static void i40e_clean_xps_state (struct i40e_vsi *vsi) +{ +int i; + +if (vsi->tx_rings) +for (i =0 ; i < vsi->num_queue_pairs; i++) +if (vsi->tx_rings[i]) +clear_bit (__I40E_TX_XPS_INIT_DONE, + vsi->tx_rings[i]->state); +} +/** * i40e_prep_for_reset - prep for the core to reset * @pf: board private structure
@@ -10685,8 +10700,10 @@ static void i40e_prep_for_reset(struct i40e_pf *pf)i40e_pf_quiesce_all_vsi (pf);for (v =0 ; v < pf->num_alloc_vsi; v++) { -if (pf->vsi[v]) +if (pf->vsi[v]) { +i40e_clean_xps_state (pf->vsi[v]); pf->vsi[v]->seid =0 ; + } }i40e_shutdown_adminq (&pf->hw);
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +2 -0
@@ -1578,6 +1578,7 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr)i40e_cleanup_reset_vf (vf);i40e_flush (hw); +usleep_range (20000 ,40000 );clear_bit (I40E_VF_STATE_RESETTING , &vf->vf_states);return true;
@@ -1701,6 +1702,7 @@ bool i40e_reset_all_vfs(struct i40e_pf *pf, bool flr) }i40e_flush (hw); +usleep_range (20000 ,40000 );clear_bit (__I40E_VF_DISABLE, pf->state);return true;
drivers/net/ethernet/intel/igb/igb_ethtool.c +2 -0
@@ -1413,6 +1413,8 @@ static int igb_intr_test(struct igb_adapter *adapter, u64 *data) *data =1 ;return -1 ; } +wr32 (E1000_IVAR_MISC ,E1000_IVAR_VALID <<8 ); +wr32 (E1000_EIMS ,BIT (0 )); }else if (adapter->flags &IGB_FLAG_HAS_MSI ) { shared_int = false; if (request_irq(irq,
drivers/net/ethernet/marvell/mvneta.c +1 -1
@@ -4271,7 +4271,7 @@ static void mvneta_percpu_elect(struct mvneta_port *pp)/* Use the cpu associated to the rxq when it is online, in all * the other cases, use the cpu 0 which can't be offline. */ -if (cpu_online (pp->rxq_def)) +if (pp->rxq_def < nr_cpu_ids &&cpu_online (pp->rxq_def)) elected_cpu = pp->rxq_def; max_cpu =num_present_cpus ();
drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c +6 -1
@@ -1134,7 +1134,12 @@ int otx2_init_tc(struct otx2_nic *nic)return err; tc->flow_ht_params = tc_flow_ht_params; -return rhashtable_init (&tc->flow_table, &tc->flow_ht_params); + err =rhashtable_init (&tc->flow_table, &tc->flow_ht_params); +if (err) { +kfree (tc->tc_entries_bitmap); + tc->tc_entries_bitmap =NULL ; + } +return err; }EXPORT_SYMBOL (otx2_init_tc);
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +1 -2
@@ -201,9 +201,8 @@ static void mlx5_ldev_free(struct kref *ref)if (ldev->nb.notifier_call)unregister_netdevice_notifier_net (&init_net, &ldev->nb);mlx5_lag_mp_cleanup (ldev); -mlx5_lag_mpesw_cleanup (ldev); -cancel_work_sync (&ldev->mpesw_work);destroy_workqueue (ldev->wq); +mlx5_lag_mpesw_cleanup (ldev);mutex_destroy (&ldev->lock);kfree (ldev); }
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h +13 -1
@@ -50,6 +50,19 @@ struct lag_tracker {enum netdev_lag_hash hash_type; }; +enum mpesw_op { +MLX5_MPESW_OP_ENABLE , +MLX5_MPESW_OP_DISABLE , +}; + +struct mlx5_mpesw_work_st { +struct work_struct work; +struct mlx5_lag *lag; +enum mpesw_op op; +struct completion comp; +int result; +}; +/* LAG data of a ConnectX card. * It serves both its phys functions. */
@@ -66,7 +79,6 @@ struct mlx5_lag {struct lag_tracker tracker;struct workqueue_struct *wq;struct delayed_work bond_work; -struct work_struct mpesw_work;struct notifier_block nb;struct lag_mp lag_mp;struct mlx5_lag_port_sel port_sel;
drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c +64 -36
150 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.h +0 -1
@@ -12,7 +12,6 @@ struct lag_mpesw {atomic_t mpesw_rule_count; }; -void mlx5_mpesw_work (struct work_struct *work);int mlx5_lag_do_mirred (struct mlx5_core_dev *mdev,struct net_device *out_dev);bool mlx5_lag_mpesw_is_activated (struct mlx5_core_dev *dev);#if IS_ENABLED (CONFIG_MLX5_ESWITCH )
drivers/net/ethernet/microchip/encx24j600-regmap.c +2 -2
@@ -359,7 +359,7 @@ static int regmap_encx24j600_phy_reg_read(void *context, unsigned int reg, goto err_out;usleep_range (26 ,100 ); -while ((ret =regmap_read (ctx->regmap,MISTAT , &mistat) !=0 ) && +while (((ret =regmap_read (ctx->regmap,MISTAT , &mistat)) ==0 ) && (mistat &BUSY ))cpu_relax ();
@@ -397,7 +397,7 @@ static int regmap_encx24j600_phy_reg_write(void *context, unsigned int reg, goto err_out;usleep_range (26 ,100 ); -while ((ret =regmap_read (ctx->regmap,MISTAT , &mistat) !=0 ) && +while (((ret =regmap_read (ctx->regmap,MISTAT , &mistat)) ==0 ) && (mistat &BUSY ))cpu_relax ();
drivers/net/ethernet/microchip/sparx5/sparx5_fdma.c +1 -1
@@ -317,7 +317,7 @@ int sparx5_fdma_xmit(struct sparx5 *sparx5, u32 *ifh, struct sk_buff *skb) next_dcb_hw =sparx5_fdma_next_dcb (tx, tx->curr_entry); db_hw = &next_dcb_hw->db[0 ];if (!(db_hw->status &FDMA_DCB_STATUS_DONE )) - tx->dropped++; +return -EINVAL ; db = list_first_entry(&tx->db_list, struct sparx5_db, list);list_move_tail (&db->list, &tx->db_list); next_dcb_hw->nextptr =FDMA_DCB_INVALID_DATA ;
drivers/net/ethernet/microchip/sparx5/sparx5_main.c +3 -0
@@ -876,6 +876,8 @@ static int mchp_sparx5_probe(struct platform_device *pdev) cleanup_ports:sparx5_cleanup_ports (sparx5); +if (sparx5->mact_queue) +destroy_workqueue (sparx5->mact_queue); cleanup_config:kfree (configs); cleanup_pnode:
@@ -900,6 +902,7 @@ static int mchp_sparx5_remove(struct platform_device *pdev)sparx5_cleanup_ports (sparx5);/* Unregister netdevs */ sparx5_unregister_notifier_blocks (sparx5); +destroy_workqueue (sparx5->mact_queue);return 0 ; }
drivers/net/ethernet/microchip/sparx5/sparx5_packet.c +24 -17
56 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/gdma.h +8 -1
@@ -498,7 +498,14 @@ enum {#define GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT BIT(0) -#define GDMA_DRV_CAP_FLAGS1 GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT +/* Advertise to the NIC firmware: the NAPI work_done variable race is fixed, +* so the driver is able to reliably support features like busy_poll. +*/ +#define GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX BIT(2) + +#define GDMA_DRV_CAP_FLAGS1 \ + (GDMA_DRV_CAP_FLAG_1_EQ_SHARING_MULTI_VPORT | \ + GDMA_DRV_CAP_FLAG_1_NAPI_WKDONE_FIX)#define GDMA_DRV_CAP_FLAGS2 0
drivers/net/ethernet/microsoft/mana/mana_en.c +11 -5
@@ -1303,10 +1303,11 @@ static void mana_poll_rx_cq(struct mana_cq *cq)xdp_do_flush (); } -static void mana_cq_handler (void *context,struct gdma_queue *gdma_queue) +static int mana_cq_handler (void *context,struct gdma_queue *gdma_queue) {struct mana_cq *cq = context;u8 arm_bit; +int w;WARN_ON_ONCE (cq->gdma_cq != gdma_queue);
@@ -1315,26 +1316,31 @@ static void mana_cq_handler(void *context, struct gdma_queue *gdma_queue)else mana_poll_tx_cq (cq); -if (cq->work_done < cq->budget && -napi_complete_done (&cq->napi, cq->work_done)) { + w = cq->work_done; + +if (w < cq->budget && +napi_complete_done (&cq->napi, w)) { arm_bit =SET_ARM_BIT ; }else { arm_bit =0 ; }mana_gd_ring_cq (gdma_queue, arm_bit); + +return w; }static int mana_poll (struct napi_struct *napi,int budget) { struct mana_cq *cq = container_of(napi, struct mana_cq, napi); +int w; cq->work_done =0 ; cq->budget = budget; -mana_cq_handler (cq, cq->gdma_cq); + w =mana_cq_handler (cq, cq->gdma_cq); -return min (cq->work_done, budget); +return min (w, budget); }static void mana_schedule_napi (void *context,struct gdma_queue *gdma_queue)
drivers/net/ethernet/netronome/nfp/nfdk/dp.c +3 -3
@@ -282,7 +282,7 @@ netdev_tx_t nfp_nfdk_tx(struct sk_buff *skb, struct net_device *netdev) dma_len =skb_headlen (skb);if (skb_is_gso (skb)) type =NFDK_DESC_TX_TYPE_TSO ; -else if (!nr_frags && dma_len <NFDK_TX_MAX_DATA_PER_HEAD ) +else if (!nr_frags && dma_len <=NFDK_TX_MAX_DATA_PER_HEAD ) type =NFDK_DESC_TX_TYPE_SIMPLE ;else type =NFDK_DESC_TX_TYPE_GATHER ;
@@ -927,7 +927,7 @@ nfp_nfdk_tx_xdp_buf(struct nfp_net_dp *dp, struct nfp_net_rx_ring *rx_ring, dma_len = pkt_len; dma_addr = rxbuf->dma_addr + dma_off; -if (dma_len <NFDK_TX_MAX_DATA_PER_HEAD ) +if (dma_len <=NFDK_TX_MAX_DATA_PER_HEAD ) type =NFDK_DESC_TX_TYPE_SIMPLE ;else type =NFDK_DESC_TX_TYPE_GATHER ;
@@ -1325,7 +1325,7 @@ nfp_nfdk_ctrl_tx_one(struct nfp_net *nn, struct nfp_net_r_vector *r_vec, txbuf = &tx_ring->ktxbufs[wr_idx]; dma_len =skb_headlen (skb); -if (dma_len <NFDK_TX_MAX_DATA_PER_HEAD ) +if (dma_len <=NFDK_TX_MAX_DATA_PER_HEAD ) type =NFDK_DESC_TX_TYPE_SIMPLE ;else type =NFDK_DESC_TX_TYPE_GATHER ;
drivers/net/ethernet/renesas/ravb_main.c +1 -1
@@ -835,7 +835,7 @@ static bool ravb_rx_gbeth(struct net_device *ndev, int *quota, int q)napi_gro_receive (&priv->napi[q], priv->rx_1st_skb); stats->rx_packets++; - stats->rx_bytes += priv->rx_1st_skb->len; + stats->rx_bytes += pkt_len;break ; } }
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +4 -4
@@ -108,10 +108,10 @@ static struct stmmac_axi *stmmac_axi_setup(struct platform_device *pdev) axi->axi_lpi_en =of_property_read_bool (np,"snps,lpi_en" ); axi->axi_xit_frm =of_property_read_bool (np,"snps,xit_frm" ); - axi->axi_kbbe =of_property_read_bool (np,"snps,axi_kbbe" ); - axi->axi_fb =of_property_read_bool (np,"snps,axi_fb" ); - axi->axi_mb =of_property_read_bool (np,"snps,axi_mb" ); - axi->axi_rb =of_property_read_bool (np,"snps,axi_rb" ); + axi->axi_kbbe =of_property_read_bool (np,"snps,kbbe" ); + axi->axi_fb =of_property_read_bool (np,"snps,fb" ); + axi->axi_mb =of_property_read_bool (np,"snps,mb" ); + axi->axi_rb =of_property_read_bool (np,"snps,rb" );if (of_property_read_u32 (np,"snps,wr_osr_lmt" , &axi->axi_wr_osr_lmt)) axi->axi_wr_osr_lmt =1 ;
drivers/net/ethernet/ti/am65-cpsw-nuss.c +1 -1
@@ -1450,7 +1450,7 @@ static void am65_cpsw_nuss_mac_link_up(struct phylink_config *config, struct phyif (speed ==SPEED_1000 ) mac_control |=CPSW_SL_CTL_GIG ; -if (speed ==SPEED_10 && interface ==PHY_INTERFACE_MODE_RGMII ) +if (speed ==SPEED_10 &&phy_interface_mode_is_rgmii (interface))/* Can be used with in band mode only */ mac_control |=CPSW_SL_CTL_EXT_EN ;if (speed ==SPEED_100 && interface ==PHY_INTERFACE_MODE_RMII )
drivers/net/ieee802154/ca8210.c +1 -1
@@ -885,7 +885,7 @@ static int ca8210_spi_transfer(dev_dbg (&spi->dev,"%s called\n" , __func__); - cas_ctl =kmalloc (sizeof (*cas_ctl),GFP_ATOMIC ); + cas_ctl =kzalloc (sizeof (*cas_ctl),GFP_ATOMIC );if (!cas_ctl)return -ENOMEM ;
drivers/net/ieee802154/cc2520.c +1 -1
@@ -970,7 +970,7 @@ static int cc2520_hw_init(struct cc2520_private *priv)if (timeout-- <=0 ) {dev_err (&priv->spi->dev,"oscillator start failed!\n" ); -return ret; +return -ETIMEDOUT ; }udelay (1 ); }while (!(status &CC2520_STATUS_XOSC32M_STABLE ));
drivers/net/macsec.c +1 -0
@@ -3720,6 +3720,7 @@ static const struct nla_policy macsec_rtnl_policy[IFLA_MACSEC_MAX + 1] = { [IFLA_MACSEC_SCB] = { .type = NLA_U8 }, [IFLA_MACSEC_REPLAY_PROTECT] = { .type = NLA_U8 }, [IFLA_MACSEC_VALIDATION] = { .type = NLA_U8 }, + [IFLA_MACSEC_OFFLOAD] = { .type = NLA_U8 }, };static void macsec_free_netdev (struct net_device *dev)
drivers/net/mdio/fwnode_mdio.c +15 -10
@@ -77,6 +77,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,*/ rc =phy_device_register (phy);if (rc) { +device_set_node (&phy->mdio.dev,NULL );fwnode_handle_put (child);return rc; }
@@ -110,8 +111,8 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,else phy =phy_device_create (bus, addr, phy_id,0 ,NULL );if (IS_ERR (phy)) { -unregister_mii_timestamper (mii_ts); -return PTR_ERR (phy); + rc =PTR_ERR (phy); + goto clean_mii_ts; }if (is_acpi_node (child)) {
@@ -125,17 +126,14 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,/* All data is now stored in the phy struct, so register it */ rc =phy_device_register (phy);if (rc) { -phy_device_free (phy); -fwnode_handle_put (phy->mdio.dev.fwnode); -return rc; + phy->mdio.dev.fwnode =NULL ; +fwnode_handle_put (child); + goto clean_phy; } }else if (is_of_node (child)) { rc =fwnode_mdiobus_phy_device_register (bus, phy, child, addr); -if (rc) { -unregister_mii_timestamper (mii_ts); -phy_device_free (phy); -return rc; - } +if (rc) + goto clean_phy; }/* phy->mii_ts may already be defined by the PHY driver. A
@@ -145,5 +143,12 @@ int fwnode_mdiobus_register_phy(struct mii_bus *bus,if (mii_ts) phy->mii_ts = mii_ts;return 0 ; + +clean_phy: +phy_device_free (phy); +clean_mii_ts: +unregister_mii_timestamper (mii_ts); + +return rc; }EXPORT_SYMBOL (fwnode_mdiobus_register_phy);
drivers/net/mdio/of_mdio.c +2 -1
@@ -68,8 +68,9 @@ static int of_mdiobus_register_device(struct mii_bus *mdio,/* All data is now stored in the mdiodev struct; register it. */ rc =mdio_device_register (mdiodev);if (rc) { +device_set_node (&mdiodev->dev,NULL ); +fwnode_handle_put (fwnode);mdio_device_free (mdiodev); -of_node_put (child);return rc; }
drivers/net/phy/mdio_device.c +2 -0
@@ -21,6 +21,7 @@#include <linux/slab.h> #include <linux/string.h> #include <linux/unistd.h> +#include <linux/property.h> void mdio_device_free (struct mdio_device *mdiodev) {
@@ -30,6 +31,7 @@ EXPORT_SYMBOL(mdio_device_free);static void mdio_device_release (struct device *dev) { +fwnode_handle_put (dev->fwnode);kfree (to_mdio_device (dev)); }
drivers/net/phy/mxl-gpy.c +85 -0
128 lines not on this page · raw message
drivers/net/plip/plip.c +2 -2
@@ -450,12 +450,12 @@ plip_bh_timeout_error(struct net_device *dev, struct net_local *nl, } rcv->state =PLIP_PK_DONE ;if (rcv->skb) { -kfree_skb (rcv->skb); +dev_kfree_skb_irq (rcv->skb); rcv->skb =NULL ; } snd->state =PLIP_PK_DONE ;if (snd->skb) { -dev_kfree_skb (snd->skb); +dev_consume_skb_irq (snd->skb); snd->skb =NULL ; }spin_unlock_irq (&nl->lock);
drivers/net/thunderbolt.c +1 -0
@@ -902,6 +902,7 @@ static int tbnet_open(struct net_device *dev) tbnet_start_poll, net);if (!ring) {netdev_err (dev,"failed to allocate Rx ring\n" ); +tb_xdomain_release_out_hopid (xd, hopid);tb_ring_free (net->tx_ring.ring); net->tx_ring.ring =NULL ;return -ENOMEM ;
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1423,6 +1423,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */ {QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/ {QMI_FIXED_INTF(0x2692, 0x9025, 4)}, /* Cellient MPL200 (rebranded Qualcomm 05c6:9025) */ + {QMI_QUIRK_SET_DTR(0x1546, 0x1342, 4)}, /* u-blox LARA-L6 *//* 4. Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */
drivers/net/vmxnet3/vmxnet3_drv.c +23 -4
@@ -75,8 +75,14 @@ vmxnet3_enable_all_intrs(struct vmxnet3_adapter *adapter)for (i =0 ; i < adapter->intr.num_intrs; i++)vmxnet3_enable_intr (adapter, i); - adapter->shared->devRead.intrConf.intrCtrl &= +if (!VMXNET3_VERSION_GE_6 (adapter) || + !adapter->queuesExtEnabled) { + adapter->shared->devRead.intrConf.intrCtrl &= +cpu_to_le32 (~VMXNET3_IC_DISABLE_ALL ); + }else { + adapter->shared->devReadExt.intrConfExt.intrCtrl &=cpu_to_le32 (~VMXNET3_IC_DISABLE_ALL ); + } }
@@ -85,8 +91,14 @@ vmxnet3_disable_all_intrs(struct vmxnet3_adapter *adapter) {int i; - adapter->shared->devRead.intrConf.intrCtrl |= +if (!VMXNET3_VERSION_GE_6 (adapter) || + !adapter->queuesExtEnabled) { + adapter->shared->devRead.intrConf.intrCtrl |= +cpu_to_le32 (VMXNET3_IC_DISABLE_ALL ); + }else { + adapter->shared->devReadExt.intrConfExt.intrCtrl |=cpu_to_le32 (VMXNET3_IC_DISABLE_ALL ); + }for (i =0 ; i < adapter->intr.num_intrs; i++)vmxnet3_disable_intr (adapter, i); }
@@ -1396,6 +1408,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, };u32 num_pkts =0 ;bool skip_page_frags = false; +bool encap_lro = false;struct Vmxnet3_RxCompDesc *rcd;struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx;u16 segCnt =0 , mss =0 ;
@@ -1556,13 +1569,18 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,if (VMXNET3_VERSION_GE_2 (adapter) && rcd->type ==VMXNET3_CDTYPE_RXCOMP_LRO ) {struct Vmxnet3_RxCompDescExt *rcdlro; +union Vmxnet3_GenericDesc *gdesc; + rcdlro = (struct Vmxnet3_RxCompDescExt *)rcd; + gdesc = (union Vmxnet3_GenericDesc *)rcd; segCnt = rcdlro->segCnt;WARN_ON_ONCE (segCnt ==0 ); mss = rcdlro->mss;if (unlikely (segCnt <=1 )) segCnt =0 ; + encap_lro = (le32_to_cpu (gdesc->dword[0 ]) & + (1UL <<VMXNET3_RCD_HDR_INNER_SHIFT )); }else { segCnt =0 ; }
@@ -1630,7 +1648,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,vmxnet3_rx_csum (adapter, skb, (union Vmxnet3_GenericDesc *)rcd); skb->protocol =eth_type_trans (skb, adapter->netdev); -if (!rcd->tcp || +if ((!rcd->tcp && !encap_lro) || !(adapter->netdev->features &NETIF_F_LRO )) goto not_lro;
@@ -1639,7 +1657,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, SKB_GSO_TCPV4 :SKB_GSO_TCPV6 ;skb_shinfo (skb)->gso_size = mss;skb_shinfo (skb)->gso_segs = segCnt; - }else if (segCnt !=0 || skb->len > mtu) { + }else if ((segCnt !=0 || skb->len > mtu) && !encap_lro) {u32 hlen; hlen = vmxnet3_get_hdr_len(adapter, skb,
@@ -1668,6 +1686,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,napi_gro_receive (&rq->napi, skb); ctx->skb =NULL ; + encap_lro = false; num_pkts++; }
drivers/net/wwan/iosm/iosm_ipc_mux.c +1 -0
@@ -332,6 +332,7 @@ struct iosm_mux *ipc_mux_init(struct ipc_mux_config *mux_cfg,if (!ipc_mux->ul_adb.pp_qlt[i]) {for (j = i -1 ; j >=0 ; j--)kfree (ipc_mux->ul_adb.pp_qlt[j]); +kfree (ipc_mux);return NULL ; } }
drivers/net/xen-netback/common.h +1 -1
@@ -386,7 +386,7 @@ int xenvif_dealloc_kthread(void *data);irqreturn_t xenvif_ctrl_irq_fn (int irq,void *data);bool xenvif_have_rx_work (struct xenvif_queue *queue,bool test_kthread); -void xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb); +bool xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb);void xenvif_carrier_on (struct xenvif *vif);
drivers/net/xen-netback/interface.c +4 -2
@@ -254,14 +254,16 @@ xenvif_start_xmit(struct sk_buff *skb, struct net_device *dev)if (vif->hash.alg ==XEN_NETIF_CTRL_HASH_ALGORITHM_NONE )skb_clear_hash (skb); -xenvif_rx_queue_tail (queue, skb); +if (!xenvif_rx_queue_tail (queue, skb)) + goto drop; +xenvif_kick_thread (queue);return NETDEV_TX_OK ; drop: vif->dev->stats.tx_dropped++; -dev_kfree_skb (skb); +dev_kfree_skb_any (skb);return NETDEV_TX_OK ; }
drivers/net/xen-netback/netback.c +124 -101
337 lines not on this page · raw message
drivers/net/xen-netback/rx.c +5 -3
@@ -82,9 +82,10 @@ static bool xenvif_rx_ring_slots_available(struct xenvif_queue *queue)return false; } -void xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb) +bool xenvif_rx_queue_tail (struct xenvif_queue *queue,struct sk_buff *skb) {unsigned long flags; +bool ret = true;spin_lock_irqsave (&queue->rx_queue.lock, flags);
@@ -92,8 +93,7 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb)struct net_device *dev = queue->vif->dev;netif_tx_stop_queue (netdev_get_tx_queue (dev, queue->id)); -kfree_skb (skb); - queue->vif->dev->stats.rx_dropped++; + ret = false; }else {if (skb_queue_empty (&queue->rx_queue))xenvif_update_needed_slots (queue, skb);
@@ -104,6 +104,8 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) }spin_unlock_irqrestore (&queue->rx_queue.lock, flags); + +return ret; }static struct sk_buff *xenvif_rx_dequeue (struct xenvif_queue *queue)
drivers/net/xen-netfront.c +6 -0
@@ -1862,6 +1862,12 @@ static int netfront_resume(struct xenbus_device *dev)netif_tx_unlock_bh (info->netdev);xennet_disconnect_backend (info); + +rtnl_lock (); +if (info->queues) +xennet_destroy_queues (info); +rtnl_unlock (); +return 0 ; }
drivers/nvme/host/core.c +4 -4
@@ -3089,10 +3089,6 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)if (!ctrl->identified) {unsigned int i; - ret =nvme_init_subsystem (ctrl, id); -if (ret) - goto out_free; -/* * Check for quirks. Quirk can depend on firmware version, * so, in principle, the set of quirks present can change
@@ -3105,6 +3101,10 @@ static int nvme_init_identify(struct nvme_ctrl *ctrl)if (quirk_matches (id, &core_quirks[i])) ctrl->quirks |= core_quirks[i].quirks; } + + ret =nvme_init_subsystem (ctrl, id); +if (ret) + goto out_free; }memcpy (ctrl->subsys->firmware_rev, id->fr,sizeof (ctrl->subsys->firmware_rev));
drivers/platform/x86/asus-nb-wmi.c +20 -8
@@ -115,12 +115,17 @@ static struct quirk_entry quirk_asus_forceals = { };static struct quirk_entry quirk_asus_use_kbd_dock_devid = { - .use_kbd_dock_devid = true, + .tablet_switch_mode = asus_wmi_kbd_dock_devid, };static struct quirk_entry quirk_asus_use_lid_flip_devid = { .wmi_backlight_set_devstate = true, - .use_lid_flip_devid = true, + .tablet_switch_mode = asus_wmi_lid_flip_devid, +}; + +static struct quirk_entry quirk_asus_tablet_mode = { + .wmi_backlight_set_devstate = true, + .tablet_switch_mode = asus_wmi_lid_flip_rog_devid, };static int dmi_matched (const struct dmi_system_id *dmi)
@@ -471,6 +476,15 @@ static const struct dmi_system_id asus_quirks[] = { }, .driver_data = &quirk_asus_use_lid_flip_devid, }, + { + .callback = dmi_matched, + .ident = "ASUS ROG FLOW X13", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "GV301Q"), + }, + .driver_data = &quirk_asus_tablet_mode, + }, {}, };
@@ -492,16 +506,13 @@ static void asus_nb_wmi_quirks(struct asus_wmi_driver *driver)switch (tablet_mode_sw) {case 0 : - quirks->use_kbd_dock_devid = false; - quirks->use_lid_flip_devid = false; + quirks->tablet_switch_mode = asus_wmi_no_tablet_switch;break ;case 1 : - quirks->use_kbd_dock_devid = true; - quirks->use_lid_flip_devid = false; + quirks->tablet_switch_mode = asus_wmi_kbd_dock_devid;break ;case 2 : - quirks->use_kbd_dock_devid = false; - quirks->use_lid_flip_devid = true; + quirks->tablet_switch_mode = asus_wmi_lid_flip_devid;break ; }
@@ -581,6 +592,7 @@ static const struct key_entry asus_nb_wmi_keymap[] = { { KE_KEY, 0xC5, { KEY_KBDILLUMDOWN } }, { KE_IGNORE, 0xC6, }, /* Ambient Light Sensor notification */ { KE_KEY, 0xFA, { KEY_PROG2 } }, /* Lid flip action */ + { KE_KEY, 0xBD, { KEY_PROG2 } }, /* Lid flip action on ROG xflow laptops */ { KE_END, 0}, };
drivers/platform/x86/asus-wmi.c +72 -14
1 line not on this page · raw message
include/linux/platform_data/x86/asus-wmi.h +1 -0
Lines of this file are not shown. View the raw message.
mm/khugepaged.c +59 -4
63 lines not on this page · raw message
net/ipv4/ip_gre.c +29 -19
48 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +37 -25
62 lines not on this page · raw message
tools/testing/selftests/net/fcnal-test.sh +7 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/fib_tests.sh +37 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/rtnetlink.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.