Linux 6.6.37
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.37 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.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/kbuild/modules.rst | 8 Makefile | 2 arch/arm/boot/dts/rockchip/rk3066a.dtsi | 1 arch/arm/net/bpf_jit_32.c | 25 - arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts | 18 arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts | 4 arch/arm64/boot/dts/rockchip/rk3368.dtsi | 3 arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 2 arch/arm64/boot/dts/rockchip/rk3588s-rock-5a.dts | 1 arch/arm64/include/asm/unistd32.h | 2 arch/arm64/kernel/syscall.c | 16 arch/csky/include/uapi/asm/unistd.h | 1 arch/hexagon/include/asm/syscalls.h | 6 arch/hexagon/include/uapi/asm/unistd.h | 1 arch/hexagon/kernel/syscalltab.c | 7 arch/loongarch/net/bpf_jit.c | 22 arch/mips/kernel/syscalls/syscall_n32.tbl | 2 arch/mips/kernel/syscalls/syscall_o32.tbl | 2 arch/mips/net/bpf_jit_comp.c | 3 arch/parisc/Kconfig | 1 arch/parisc/kernel/sys_parisc32.c | 9 arch/parisc/kernel/syscalls/syscall.tbl | 6 arch/parisc/net/bpf_jit_core.c | 8 arch/powerpc/kernel/syscalls/syscall.tbl | 6 arch/powerpc/net/bpf_jit.h | 18 arch/powerpc/net/bpf_jit_comp.c | 110 +++- arch/powerpc/net/bpf_jit_comp32.c | 13 arch/powerpc/net/bpf_jit_comp64.c | 10 arch/riscv/include/asm/insn.h | 2 arch/riscv/kernel/stacktrace.c | 2 arch/s390/include/asm/entry-common.h | 2 arch/s390/kernel/syscalls/syscall.tbl | 2 arch/s390/net/bpf_jit_comp.c | 6 arch/s390/pci/pci_irq.c | 2 arch/sh/kernel/sys_sh32.c | 11 arch/sh/kernel/syscalls/syscall.tbl | 3 arch/sparc/kernel/sys32.S | 221 ---------- arch/sparc/kernel/syscalls/syscall.tbl | 8 arch/sparc/net/bpf_jit_comp_64.c | 6 arch/x86/entry/syscalls/syscall_32.tbl | 2 arch/x86/include/asm/entry-common.h | 15 arch/x86/kernel/fpu/core.c | 4 arch/x86/kernel/time.c | 20 arch/x86/net/bpf_jit_comp32.c | 3 crypto/ecdh.c | 2 drivers/ata/ahci.c | 17 drivers/ata/libata-core.c | 29 - drivers/counter/ti-eqep.c | 6 drivers/cpufreq/amd-pstate.c | 2 drivers/cpufreq/intel_pstate.c | 13 drivers/cxl/core/core.h | 7 drivers/cxl/core/hdm.c | 13 drivers/cxl/core/memdev.c | 44 - drivers/cxl/core/region.c | 137 ++++++ drivers/cxl/cxl.h | 2 drivers/cxl/cxlmem.h | 10 drivers/gpio/gpio-davinci.c | 5 drivers/gpio/gpiolib-cdev.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 18 drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c | 10 drivers/gpu/drm/amd/display/include/dpcd_defs.h | 5 drivers/gpu/drm/drm_fb_helper.c | 6 drivers/gpu/drm/drm_fbdev_dma.c | 5 drivers/gpu/drm/drm_file.c | 8 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 1 drivers/gpu/drm/nouveau/dispnv04/tvnv17.c | 6 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 6 drivers/gpu/drm/panel/panel-simple.c | 1 drivers/gpu/drm/radeon/radeon.h | 1 drivers/gpu/drm/radeon/radeon_display.c | 8 drivers/i2c/i2c-slave-testunit.c | 5 drivers/iio/accel/Kconfig | 2 drivers/iio/adc/ad7266.c | 2 drivers/iio/adc/xilinx-ams.c | 8 drivers/iio/chemical/bme680.h | 2 drivers/iio/chemical/bme680_core.c | 62 ++ drivers/iio/pressure/bmp280-core.c | 14 drivers/iio/pressure/bmp280.h | 2 drivers/infiniband/core/restrack.c | 51 -- drivers/input/touchscreen/ili210x.c | 4 drivers/irqchip/Kconfig | 2 drivers/irqchip/irq-loongson-eiointc.c | 5 drivers/irqchip/irq-loongson-liointc.c | 4 drivers/media/dvb-core/dvbdev.c | 2 drivers/mmc/host/sdhci-brcmstb.c | 4 drivers/mmc/host/sdhci-pci-core.c | 11 drivers/mmc/host/sdhci-pci-o2micro.c | 41 - drivers/mmc/host/sdhci.c | 25 - drivers/mtd/parsers/redboot.c | 2 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 14 drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c | 55 ++ drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 5 drivers/net/dsa/microchip/ksz9477.c | 10 drivers/net/dsa/microchip/ksz9477_reg.h | 1 drivers/net/dsa/microchip/ksz_common.c | 2 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 14 drivers/net/ethernet/ibm/ibmvnic.c | 6 drivers/net/ethernet/intel/ice/ice_main.c | 10 drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c | 20 drivers/net/ethernet/microsoft/mana/mana_en.c | 2 drivers/net/phy/micrel.c | 1 drivers/net/usb/ax88179_178a.c | 6 drivers/pci/msi/msi.c | 10 drivers/pinctrl/core.c | 2 drivers/pinctrl/pinctrl-rockchip.c | 68 ++- drivers/pinctrl/pinctrl-rockchip.h | 1 drivers/pinctrl/qcom/pinctrl-spmi-gpio.c | 1 drivers/pwm/pwm-stm32.c | 3 drivers/scsi/libsas/sas_ata.c | 6 drivers/scsi/libsas/sas_discover.c | 2 drivers/soc/ti/wkup_m3_ipc.c | 7 drivers/tty/serial/8250/8250_omap.c | 22 drivers/tty/serial/bcm63xx_uart.c | 7 drivers/tty/serial/imx.c | 10 drivers/tty/serial/mcf.c | 2 drivers/usb/atm/cxacru.c | 14 drivers/usb/dwc3/core.c | 26 - drivers/usb/dwc3/core.h | 1 drivers/usb/gadget/function/f_printer.c | 40 + drivers/usb/gadget/udc/aspeed_udc.c | 4 drivers/usb/musb/da8xx.c | 8 drivers/usb/typec/ucsi/ucsi.c | 55 +- drivers/usb/typec/ucsi/ucsi_glink.c | 5 drivers/usb/typec/ucsi/ucsi_stm32g0.c | 19 drivers/vdpa/vdpa_user/vduse_dev.c | 14 fs/btrfs/free-space-cache.c | 2 fs/btrfs/tree-log.c | 43 + fs/erofs/data.c | 5 fs/gfs2/log.c | 3 fs/gfs2/super.c | 4 fs/nfs/direct.c | 2 fs/ocfs2/aops.c | 5 fs/ocfs2/journal.c | 17 fs/ocfs2/journal.h | 2 fs/ocfs2/ocfs2_trace.h | 2 fs/open.c | 4 include/linux/compat.h | 2 include/linux/filter.h | 10 include/linux/ieee80211.h | 15 include/linux/libata.h | 1 include/linux/mmzone.h | 9 include/linux/nvme.h | 4 include/linux/serial_core.h | 21 include/linux/syscalls.h | 8 include/linux/workqueue.h | 2 include/net/inet_connection_sock.h | 2 include/net/netfilter/nf_tables.h | 5 include/trace/events/qdisc.h | 4 include/uapi/asm-generic/unistd.h | 2 kernel/bpf/core.c | 6 kernel/bpf/ringbuf.c | 31 + kernel/bpf/verifier.c | 10 kernel/cpu.c | 8 kernel/sys_ni.c | 2 mm/page_alloc.c | 9 mm/vmalloc.c | 21 net/batman-adv/originator.c | 27 + net/can/j1939/main.c | 6 net/can/j1939/transport.c | 21 net/core/xdp.c | 4 net/dccp/ipv4.c | 7 net/dccp/ipv6.c | 7 net/ipv4/inet_connection_sock.c | 17 net/ipv4/tcp_input.c | 45 +- net/iucv/iucv.c | 26 - net/netfilter/nf_hooks_lwtunnel.c | 3 net/netfilter/nf_tables_api.c | 8 net/netfilter/nft_lookup.c | 3 net/openvswitch/conntrack.c | 7 scripts/Makefile.dtbinst | 2 scripts/Makefile.package | 2 sound/core/seq/seq_ump_convert.c | 10 sound/pci/hda/patch_realtek.c | 3 sound/soc/amd/acp/acp-i2s.c | 8 sound/soc/amd/acp/acp-pci.c | 10 sound/soc/atmel/atmel-classd.c | 17 sound/soc/atmel/atmel-pcm-dma.c | 8 sound/soc/atmel/atmel-pcm-pdc.c | 4 sound/soc/atmel/atmel-pdmic.c | 12 sound/soc/atmel/atmel_wm8904.c | 4 sound/soc/atmel/mikroe-proto.c | 2 sound/soc/atmel/sam9g20_wm8731.c | 2 sound/soc/atmel/sam9x5_wm8731.c | 2 sound/soc/fsl/fsl-asoc-card.c | 3 sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c | 10 sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 32 - sound/soc/rockchip/rockchip_i2s_tdm.c | 13 sound/synth/emux/soundfont.c | 17 tools/testing/cxl/test/cxl.c | 4 tools/testing/selftests/net/mptcp/userspace_pm.sh | 50 +- 192 files changed, 1473 insertions(+), 908 deletions(-)
Adam Rizkalla (1):
iio: pressure: bmp280: Fix BMP580 temperature reading
Adrian Hunter (2):
mmc: sdhci: Do not invert write-protect twice
mmc: sdhci: Do not lock spinlock around mmc_gpio_get_ro()
Aleksandr Mishin (1):
gpio: davinci: Validate the obtained number of IRQs
Alex Bee (1):
arm64: dts: rockchip: Add sound-dai-cells for RK3368
Alex Deucher (1):
drm/amdgpu/atomfirmware: fix parsing of vram_info
Alexander Sverdlin (1):
iio: accel: fxls8962af: select IIO_BUFFER & IIO_KFIFO_BUF
Alibek Omarov (1):
ASoC: rockchip: i2s-tdm: Fix trcm mode by setting clock on right mclk
Alison Schofield (2):
cxl/region: Move cxl_dpa_to_region() work to the region driver cxl/region: Avoid null pointer dereference in region lookup
Andreas Gruenbacher (1):
gfs2: Fix NULL pointer dereference in gfs2_log_flush
Andrei Simion (1):
ASoC: atmel: atmel-classd: Re-add dai_link->platform to fix card init
Andrew Davis (1):
soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message
Andy Chiu (1):
riscv: stacktrace: convert arch_stack_walk() to noinstr
Arnd Bergmann (11):
sparc: fix old compat_sys_select()
sparc: fix compat recv/recvfrom syscalls
parisc: use correct compat recv/recvfrom syscalls
powerpc: restore some missing spu syscalls
parisc: use generic sys_fanotify_mark implementation
sh: rework sync_file_range ABI
csky, hexagon: fix broken sys_sync_file_range
hexagon: fix fadvise64_64 calling conventions
ftruncate: pass a signed offset
syscalls: fix compat_sys_io_pgetevents_time64 usage
syscalls: fix sys_fanotify_mark prototype
Christian A. Ehrhardt (1):
usb: typec: ucsi: Never send a lone connector change ack
Christoph Hellwig (1):
nfs: drop the incorrect assertion in nfs_swap_rw()
Christophe Leroy (2):
bpf: Take return from set_memory_ro() into account with bpf_prog_lock_ro()
bpf: Take return from set_memory_rox() into account with bpf_jit_binary_lock_ro()
Dan Carpenter (1):
usb: musb: da8xx: fix a resource leak in probe()
Daniel Borkmann (1):
bpf: Fix overrunning reservations in ringbuf
Daniil Dulov (1):
xdp: Remove WARN() from __xdp_reg_mem_model()
David Lechner (1):
counter: ti-eqep: enable clock at probe
Dawei Li (2):
net/iucv: Avoid explicit cpumask var allocation on stack net/dpaa2: Avoid explicit cpumask var allocation on stack
Denis Arefev (1):
mtd: partitions: redboot: Added conversion of operands to a larger type
Dirk Su (1):
ALSA: hda/realtek: fix mute/micmute LEDs don't work for EliteBook 645/665 G11.
Doug Brown (1):
Revert "serial: core: only stop transmit when HW fifo is empty"
Dragan Simic (1):
kbuild: Install dtb files as 0644 in Makefile.dtbinst
Elinor Montmasson (1):
ASoC: fsl-asoc-card: set priv->pdev before using it
Enguerrand de Ribaucourt (2):
net: phy: micrel: add Microchip KSZ 9477 to the device table
net: dsa: microchip: use collision based back pressure mode
Erick Archer (1):
drm/radeon/radeon_display: Decrease the size of allocated memory
FUKAUMI Naoki (2):
arm64: dts: rockchip: make poweroff(8) work on Radxa ROCK 5A
arm64: dts: rockchip: fix PMIC interrupt pin on ROCK Pi E
Fabrice Gasnier (1):
usb: ucsi: stm32: fix command completion handling
Fernando Yang (1):
iio: adc: ad7266: Fix variable checking bug
Filipe Manana (1):
btrfs: use NOFS context when getting inodes during logging and log replay
Geliang Tang (1):
selftests: mptcp: print_test out of verify_listener_events
Greg Kroah-Hartman (2):
Revert "cpufreq: amd-pstate: Fix the inconsistency in max frequency units" Linux 6.6.37
Hagar Hemdan (1):
pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER
Hannes Reinecke (1):
nvme: fixup comment for nvme RDMA Provider Type
Hari Bathini (2):
powerpc/bpf: rename powerpc64_jit_data to powerpc_jit_data powerpc/bpf: use bpf_jit_binary_pack_[alloc|finalize|free]
Heikki Krogerus (1):
usb: typec: ucsi: Ack also failed Get Error commands
Hsin-Te Yuan (2):
ASoC: mediatek: mt8183-da7219-max98357: Fix kcontrol name collision
arm64: dts: rockchip: Fix the value of dlg,jack-det-rate mismatch on rk3399-gru
Huacai Chen (2):
irqchip/loongson-eiointc: Use early_cpu_to_node() instead of cpu_to_node() irqchip/loongson-liointc: Set different ISRs for different cores
Huang-Huang Bao (4):
pinctrl: rockchip: fix pinmux bits for RK3328 GPIO2-B pins
pinctrl: rockchip: fix pinmux bits for RK3328 GPIO3-B pins
pinctrl: rockchip: use dedicated pinctrl type for RK3328
pinctrl: rockchip: fix pinmux reset in rockchip_pmx_set
Ido Schimmel (1):
mlxsw: spectrum_buffers: Fix memory corruptions on Spectrum-4 systems
Ilpo Järvinen (2):
mmc: sdhci-pci-o2micro: Convert PCIBIOS_* return codes to errnos
mmc: sdhci-pci: Convert PCIBIOS_* return codes to errnos
Jan Kara (1):
ocfs2: fix DIO failure due to insufficient transaction credits
Jan Sokolowski (1):
ice: Rebuild TC queues on VSI queue reconfiguration
Jann Horn (1):
drm/drm_file: Fix pid refcounting race
Janusz Krzysztofik (1):
drm/i915/gt: Fix potential UAF by revoke of fence registers
Javier Carrasco (1):
usb: typec: ucsi: glink: fix child node release in probe function
Jean-Michel Hautbois (1):
tty: mcf: MCF54418 has 10 UARTS
Jeff Johnson (1):
wifi: mac80211: Use flexible array in struct ieee80211_tim_ie
Jeremy Kerr (1):
usb: gadget: aspeed_udc: fix device address configuration
Jesse Taube (1):
RISC-V: fix vector insn load/store width mask
Jianguo Wu (1):
netfilter: fix undefined reference to 'netfilter_lwtunnel_*' when CONFIG_SYSCTL=n
Jingbo Xu (1):
erofs: fix NULL dereference of dif->bdev_handle in fscache mode
Joachim Vandersmissen (1):
crypto: ecdh - explicitly zeroize private_key
Johan Hovold (1):
pinctrl: qcom: spmi-gpio: drop broken pm8008 support
Johan Jonker (1):
ARM: dts: rockchip: rk3066a: add #sound-dai-cells to hdmi node
Johannes Berg (1):
wifi: ieee80211: check for NULL in ieee80211_mle_size_ok()
John Keeping (1):
Input: ili210x - fix ili251x_read_touch_data() return value
Jonas Gorski (2):
serial: core: introduce uart_port_tx_limited_flags()
serial: bcm63xx-uart: fix tx after conversion to uart_port_tx_limited()
Jonas Karlman (2):
arm64: dts: rockchip: Fix SD NAND and eMMC init on rk3308-rock-pi-s
arm64: dts: rockchip: Rename LED related pinctrl nodes on rk3308-rock-pi-s
Jos Wang (1):
usb: dwc3: core: Workaround for CSR read timeout
Jose Ignacio Tornos Martinez (1):
net: usb: ax88179_178a: improve link status logs
Julia Zhang (1):
drm/amdgpu: avoid using null object of framebuffer
Kamal Dasu (1):
mmc: sdhci-brcmstb: check R1_STATUS for erase/trim/discard
Kees Cook (1):
randomize_kstack: Remove non-functional per-arch entropy filtering
Kent Gibson (1):
gpiolib: cdev: Disallow reconfiguration without direction (uAPI v1)
Kuninori Morimoto (1):
ASoC: atmel: convert not to use asoc_xxx()
Laurent Pinchart (1):
drm/panel: ilitek-ili9881c: Fix warning with GPIO controllers that sleep
Li peiyu (1):
iio: pressure: fix some word spelling errors
Lijo Lazar (1):
drm/amdgpu: Fix pci state save during mode-1 reset
Linus Torvalds (1):
x86: stop playing stack games in profile_pc()
Liu Ying (1):
drm/panel: simple: Add missing display timing flags for KOE TX26D202VM0BWA
Ma Ke (3):
net: mana: Fix possible double free in error handling path drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_ld_modes drm/nouveau/dispnv04: fix null pointer dereference in nv17_tv_get_hd_modes
Mark-PK Tsai (1):
kbuild: doc: Update default INSTALL_MOD_DIR from extra to updates
Martin KaFai Lau (1):
bpf: Mark bpf prog stack with kmsan_unposion_memory in interpreter mode
Martin Schiller (1):
MIPS: pci: lantiq: restore reset gpio polarity
Matthieu Baerts (NGI0) (1):
selftests: mptcp: userspace_pm: fixed subtest names
Maxime Coquelin (2):
vduse: validate block features only with block devices
vduse: Temporarily fail if control queue feature requested
Meng Li (1):
usb: dwc3: core: remove lock of otg mode during gadget suspend/resume to avoid deadlock
Michael Strauss (1):
drm/amd/display: Send DP_TOTAL_LTTPR_CNT during detection if LTTPR is present
Mostafa Saleh (1):
PCI/MSI: Fix UAF in msi_capability_init
Naohiro Aota (1):
btrfs: zoned: fix initial free space detection
Neal Cardwell (1):
tcp: fix tcp_rcv_fastopen_synack() to enter TCP_CA_Loss for failed TFO
Nick Child (1):
ibmvnic: Free any outstanding tx skbs during scrq reset
Nikita Zhandarovich (1):
usb: atm: cxacru: fix endpoint checking in cxacru_bind()
Niklas Cassel (4):
ata: libata-core: Fix null pointer dereference on error ata,scsi: libata-core: Do not leak memory for ata_port struct members
ata: ahci: Clean up sysfs file on error
ata: libata-core: Fix double free on error
Niklas Schnelle (1):
s390/pci: Add missing virt_to_phys() for directed DIBV
Oleksij Rempel (2):
net: can: j1939: recover socket queue on CAN bus error during BAM transmission
net: can: j1939: enhanced error handling for tightly received RTS messages in xtp_rx_rts_session_new
Oliver Neukum (2):
usb: gadget: printer: SS+ support
usb: gadget: printer: fix races against disable
Oswald Buddenhagen (1):
ALSA: emux: improve patch ioctl data validation
Pablo Neira Ayuso (1):
netfilter: nf_tables: fully validate NFT_DATA_VALUE on store to data registers
Rafael J. Wysocki (1):
cpufreq: intel_pstate: Use HWP to initialize ITMT if CPPC is missing
Ricardo Ribalda (1):
media: dvbdev: Initialize sbuf
Sean Anderson (1):
iio: xilinx-ams: Don't include ams_ctrl_channels in scan_mask
Shigeru Yoshida (1):
net: can: j1939: Initialize unused data in j1939_send_one()
Srinivas Kandagatla (1):
ASoC: q6apm-lpass-dai: close graph on prepare errors
Stefan Eichenberger (2):
serial: imx: set receiver level before starting uart
serial: imx: only set receiver level if it is zero
Sven Eckelmann (1):
batman-adv: Don't accept TT entries for out-of-spec VIDs
Takashi Iwai (2):
ALSA: seq: Fix missing channel at encoding RPN/NRPN MIDI2 messages
ALSA: seq: Fix missing MSB in MIDI2 SPP conversion
Thayne Harbaugh (1):
kbuild: Fix build target deb-pkg: ln: failed to create hard link
Thomas Bogendoerfer (1):
Revert "MIPS: pci: lantiq: restore reset gpio polarity"
Thomas Zimmermann (1):
drm/fbdev-dma: Only set smem_start is enable per module option
Tiezhu Yang (1):
irqchip/loongson: Select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP for IRQ_LOONGARCH_CPU
Tristram Ha (2):
net: dsa: microchip: fix initial port flush problem
net: dsa: microchip: fix wrong register write when masking interrupt
Udit Kumar (2):
serial: 8250_omap: Implementation of Errata i2310
serial: 8250_omap: Fix Errata i2310 with RX FIFO level check
Uros Bizjak (1):
x86/fpu: Fix AMD X86_BUG_FXSAVE_LEAK fixup
Uwe Kleine-König (1):
pwm: stm32: Refuse too small period requests
Vasileios Amoiridis (4):
iio: chemical: bme680: Fix pressure value output
iio: chemical: bme680: Fix calibration data variable
iio: chemical: bme680: Fix overflows in compensate() functions
iio: chemical: bme680: Fix sensor data read operation
Vijendar Mukunda (2):
ASoC: amd: acp: add a null check for chip_pdev structure
ASoC: amd: acp: remove i2s configuration check in acp_i2s_probe()
Vitor Soares (1):
can: mcp251xfd: fix infinite loop when xmit fails
Wenchao Hao (2):
workqueue: Increase worker desc's length to 32 RDMA/restrack: Fix potential invalid address access
Wesley Cheng (1):
usb: dwc3: core: Add DWC31 version 2.00a controller
Wolfram Sang (2):
i2c: testunit: don't erase registers after STOP
i2c: testunit: discard write requests while old command is running
Xin Long (1):
openvswitch: get related ct labels from its master if it is not confirmed
Yao Xingtao (1):
cxl/region: check interleave capability
Yonghong Song (2):
bpf: Add missed var_off setting in set_sext32_default_val()
bpf: Add missed var_off setting in coerce_subreg_to_size_sx()
Yunseong Kim (1):
tracing/net_sched: NULL pointer dereference in perf_trace_qdisc_reset()
Yuntao Wang (1):
cpu/hotplug: Fix dynstate assignment in __cpuhp_setup_state_cpuslocked()
Zhaoyang Huang (1):
mm: fix incorrect vbq reference in purge_fragmented_block
luoxuanqiang (1):
Fix race for duplicate reqsk on identical SYN
yangge (1):
mm/page_alloc: Separate THP PCP into movable and non-movable categories
Greg Kroah-Hartman
maintainerDocumentation/kbuild/modules.rst +4 -4
@@ -128,7 +128,7 @@ executed to make module versioning work. modules_install Install the external module(s). The default location is - /lib/modules/<kernel_release>/extra/, but a prefix may + /lib/modules/<kernel_release>/updates/, but a prefix may be added with INSTALL_MOD_PATH (discussed in section 5). clean
@@ -417,7 +417,7 @@ directory: And external modules are installed in: - /lib/modules/$(KERNELRELEASE)/extra/ + /lib/modules/$(KERNELRELEASE)/updates/ 5.1 INSTALL_MOD_PATH --------------------
@@ -438,10 +438,10 @@ And external modules are installed in: ------------------- External modules are by default installed to a directory under - /lib/modules/$(KERNELRELEASE)/extra/, but you may wish to + /lib/modules/$(KERNELRELEASE)/updates/, but you may wish to locate modules for a specific functionality in a separate directory. For this purpose, use INSTALL_MOD_DIR to specify an - alternative name to "extra.":: + alternative name to "updates.":: $ make INSTALL_MOD_DIR=gandalf -C $KDIR \ M=$PWD modules_install
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 36 +SUBLEVEL = 37 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/boot/dts/rockchip/rk3066a.dtsi +1 -0
@@ -123,6 +123,7 @@ hdmi: hdmi@10116000 { pinctrl-0 = <&hdmii2c_xfer>, <&hdmi_hpd>; power-domains = <&power RK3066_PD_VIO>; rockchip,grf = <&grf>; + #sound-dai-cells = <0>; status = "disabled"; ports {
arch/arm/net/bpf_jit_32.c +12 -13
@@ -1982,28 +1982,21 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)/* If building the body of the JITed code fails somehow, * we fall back to the interpretation. */ -if (build_body (&ctx) <0 ) { - image_ptr =NULL ; -bpf_jit_binary_free (header); - prog = orig_prog; - goto out_imms; - } +if (build_body (&ctx) <0 ) + goto out_free;build_epilogue (&ctx);/* 3.) Extra pass to validate JITed Code */ -if (validate_code (&ctx)) { - image_ptr =NULL ; -bpf_jit_binary_free (header); - prog = orig_prog; - goto out_imms; - } +if (validate_code (&ctx)) + goto out_free;flush_icache_range ((u32 )header, (u32)(ctx.target + ctx.idx));if (bpf_jit_enable >1 )/* there are 2 passes here */ bpf_jit_dump (prog->len, image_size,2 , ctx.target); -bpf_jit_binary_lock_ro (header); +if (bpf_jit_binary_lock_ro (header)) + goto out_free; prog->bpf_func = (void *)ctx.target; prog->jited =1 ; prog->jited_len = image_size;
@@ -2020,5 +2013,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_jit_prog_release_other (prog, prog == orig_prog ? tmp : orig_prog);return prog; + +out_free: + image_ptr =NULL ; +bpf_jit_binary_free (header); + prog = orig_prog; + goto out_imms; }
arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts +13 -5
@@ -5,6 +5,8 @@ */ /dts-v1/; + +#include <dt-bindings/leds/common.h> #include "rk3308.dtsi" / {
@@ -24,17 +26,21 @@ chosen { leds { compatible = "gpio-leds"; pinctrl-names = "default"; - pinctrl-0 = <&green_led_gio>, <&heartbeat_led_gpio>; + pinctrl-0 = <&green_led>, <&heartbeat_led>; green-led { + color = <LED_COLOR_ID_GREEN>; default-state = "on"; + function = LED_FUNCTION_POWER; gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>; label = "rockpis:green:power"; linux,default-trigger = "default-on"; }; blue-led { + color = <LED_COLOR_ID_BLUE>; default-state = "on"; + function = LED_FUNCTION_HEARTBEAT; gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; label = "rockpis:blue:user"; linux,default-trigger = "heartbeat";
@@ -126,10 +132,12 @@ &cpu0 { }; &emmc { - bus-width = <4>; cap-mmc-highspeed; - mmc-hs200-1_8v; + cap-sd-highspeed; + no-sdio; non-removable; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>; vmmc-supply = <&vcc_io>; status = "okay"; };
@@ -152,11 +160,11 @@ &pinctrl { pinctrl-0 = <&rtc_32k>; leds { - green_led_gio: green-led-gpio { + green_led: green-led { rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>; }; - heartbeat_led_gpio: heartbeat-led-gpio { + heartbeat_led: heartbeat-led { rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>; }; };
arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts +2 -2
@@ -186,8 +186,8 @@ &i2c1 { rk805: pmic@18 { compatible = "rockchip,rk805"; reg = <0x18>; - interrupt-parent = <&gpio2>; - interrupts = <6 IRQ_TYPE_LEVEL_LOW>; + interrupt-parent = <&gpio0>; + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; #clock-cells = <1>; clock-output-names = "xin32k", "rk805-clkout2"; gpio-controller;
arch/arm64/boot/dts/rockchip/rk3368.dtsi +3 -0
@@ -790,6 +790,7 @@ spdif: spdif@ff880000 { dma-names = "tx"; pinctrl-names = "default"; pinctrl-0 = <&spdif_tx>; + #sound-dai-cells = <0>; status = "disabled"; };
@@ -801,6 +802,7 @@ i2s_2ch: i2s-2ch@ff890000 { clocks = <&cru SCLK_I2S_2CH>, <&cru HCLK_I2S_2CH>; dmas = <&dmac_bus 6>, <&dmac_bus 7>; dma-names = "tx", "rx"; + #sound-dai-cells = <0>; status = "disabled"; };
@@ -814,6 +816,7 @@ i2s_8ch: i2s-8ch@ff898000 { dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&i2s_8ch_bus>; + #sound-dai-cells = <0>; status = "disabled"; };
arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +1 -1
@@ -450,7 +450,7 @@ da7219_aad { dlg,btn-cfg = <50>; dlg,mic-det-thr = <500>; dlg,jack-ins-deb = <20>; - dlg,jack-det-rate = "32ms_64ms"; + dlg,jack-det-rate = "32_64"; dlg,jack-rem-deb = <1>; dlg,a-d-btn-thr = <0xa>;
arch/arm64/boot/dts/rockchip/rk3588s-rock-5a.dts +1 -0
@@ -390,6 +390,7 @@ pmic@0 { pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>, <&rk806_dvs2_null>, <&rk806_dvs3_null>; spi-max-frequency = <1000000>; + system-power-controller; vcc1-supply = <&vcc5v0_sys>; vcc2-supply = <&vcc5v0_sys>;
arch/arm64/include/asm/unistd32.h +1 -1
@@ -840,7 +840,7 @@ __SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)#define __NR_ppoll_time64 414 __SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)#define __NR_io_pgetevents_time64 416 -__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents) +__SYSCALL(__NR_io_pgetevents_time64, compat_sys_io_pgetevents_time64)#define __NR_recvmmsg_time64 417 __SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)#define __NR_mq_timedsend_time64 418
arch/arm64/kernel/syscall.c +7 -9
@@ -56,17 +56,15 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,syscall_set_return_value (current, regs,0 , ret);/* -* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(), -* but not enough for arm64 stack utilization comfort. To keep -* reasonable stack head room, reduce the maximum offset to 9 bits. +* This value will get limited by KSTACK_OFFSET_MAX(), which is 10 +* bits. The actual entropy will be further reduced by the compiler +* when applying stack alignment constraints: the AAPCS mandates a +* 16-byte aligned SP at function boundaries, which will remove the +* 4 low bits from any entropy chosen here. * -* The actual entropy will be further reduced by the compiler when -* applying stack alignment constraints: the AAPCS mandates a -* 16-byte (i.e. 4-bit) aligned SP at function boundaries. -* -* The resulting 5 bits of entropy is seen in SP[8:4]. +* The resulting 6 bits of entropy is seen in SP[9:4]. */ -choose_random_kstack_offset (get_random_u16 () &0x1FF ); +choose_random_kstack_offset (get_random_u16 ()); }static inline bool has_syscall_work (unsigned long flags)
arch/csky/include/uapi/asm/unistd.h +1 -0
@@ -6,6 +6,7 @@#define __ARCH_WANT_SYS_CLONE3#define __ARCH_WANT_SET_GET_RLIMIT#define __ARCH_WANT_TIME32_SYSCALLS +#define __ARCH_WANT_SYNC_FILE_RANGE2#include <asm-generic/unistd.h> #define __NR_set_thread_area (__NR_arch_specific_syscall + 0)
arch/hexagon/include/asm/syscalls.h new file +6 -0
@@ -0,0 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include <asm-generic/syscalls.h> + +asmlinkage long sys_hexagon_fadvise64_64 (int fd,int advice, +u32 a2,u32 a3,u32 a4,u32 a5);
arch/hexagon/include/uapi/asm/unistd.h +1 -0
@@ -36,5 +36,6 @@#define __ARCH_WANT_SYS_VFORK#define __ARCH_WANT_SYS_FORK#define __ARCH_WANT_TIME32_SYSCALLS +#define __ARCH_WANT_SYNC_FILE_RANGE2#include <asm-generic/unistd.h>
arch/hexagon/kernel/syscalltab.c +7 -0
@@ -14,6 +14,13 @@#undef __SYSCALL#define __SYSCALL (nr, call) [nr] = (call), +SYSCALL_DEFINE6 (hexagon_fadvise64_64, int, fd, int, advice, + SC_ARG64(offset), SC_ARG64(len)) +{ +return ksys_fadvise64_64 (fd,SC_VAL64 (loff_t, offset),SC_VAL64 (loff_t, len), advice); +} +#define sys_fadvise64_64 sys_hexagon_fadvise64_64 + void *sys_call_table[__NR_syscalls] = {#include <asm/unistd.h> };
arch/loongarch/net/bpf_jit.c +16 -6
@@ -1206,16 +1206,19 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)flush_icache_range ((unsigned long )header, (unsigned long )(ctx.image + ctx.idx));if (!prog->is_func || extra_pass) { +int err; +if (extra_pass && ctx.idx != jit_data->ctx.idx) {pr_err_once ("multi-func JIT bug %d != %d\n" , ctx.idx, jit_data->ctx.idx); -bpf_jit_binary_free (header); - prog->bpf_func =NULL ; - prog->jited =0 ; - prog->jited_len =0 ; - goto out_offset; + goto out_free; + } + err =bpf_jit_binary_lock_ro (header); +if (err) { +pr_err_once ("bpf_jit_binary_lock_ro() returned %d\n" , + err); + goto out_free; } -bpf_jit_binary_lock_ro (header); }else { jit_data->ctx = ctx; jit_data->image = image_ptr;
@@ -1246,6 +1249,13 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog) out_offset =-1 ;return prog; + +out_free: +bpf_jit_binary_free (header); + prog->bpf_func =NULL ; + prog->jited =0 ; + prog->jited_len =0 ; + goto out_offset; }/* Indicate the JIT backend supports mixing bpf2bpf and tailcalls. */
arch/mips/kernel/syscalls/syscall_n32.tbl +1 -1
@@ -354,7 +354,7 @@ 412 n32 utimensat_time64 sys_utimensat 413 n32 pselect6_time64 compat_sys_pselect6_time64 414 n32 ppoll_time64 compat_sys_ppoll_time64 -416 n32 io_pgetevents_time64 sys_io_pgetevents +416 n32 io_pgetevents_time64 compat_sys_io_pgetevents_time64 417 n32 recvmmsg_time64 compat_sys_recvmmsg_time64 418 n32 mq_timedsend_time64 sys_mq_timedsend 419 n32 mq_timedreceive_time64 sys_mq_timedreceive
arch/mips/kernel/syscalls/syscall_o32.tbl +1 -1
@@ -403,7 +403,7 @@ 412 o32 utimensat_time64 sys_utimensat sys_utimensat 413 o32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 o32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 o32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 o32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 o32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 o32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 o32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/mips/net/bpf_jit_comp.c +2 -1
@@ -1012,7 +1012,8 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_prog_fill_jited_linfo (prog, &ctx.descriptors[1 ]);/* Set as read-only exec and flush instruction cache */ -bpf_jit_binary_lock_ro (header); +if (bpf_jit_binary_lock_ro (header)) + goto out_err;flush_icache_range ((unsigned long )header, (unsigned long )&ctx.target[ctx.jit_index]);
arch/parisc/Kconfig +1 -0
@@ -14,6 +14,7 @@ config PARISC select ARCH_HAS_UBSAN_SANITIZE_ALL select ARCH_HAS_PTE_SPECIAL select ARCH_NO_SG_CHAIN + select ARCH_SPLIT_ARG64 if !64BIT select ARCH_SUPPORTS_HUGETLBFS if PA20 select ARCH_SUPPORTS_MEMORY_FAILURE select ARCH_STACKWALK
arch/parisc/kernel/sys_parisc32.c +0 -9
@@ -23,12 +23,3 @@ asmlinkage long sys32_unimplemented(int r26, int r25, int r24, int r23, current->comm, current->pid, r20);return -ENOSYS ; } - -asmlinkage long sys32_fanotify_mark (compat_int_t fanotify_fd,compat_uint_t flags, -compat_uint_t mask0,compat_uint_t mask1,compat_int_t dfd, -const char __user * pathname) -{ -return sys_fanotify_mark (fanotify_fd, flags, - ((__u64 )mask1 <<32 ) | mask0, - dfd, pathname); -}
arch/parisc/kernel/syscalls/syscall.tbl +3 -3
@@ -108,7 +108,7 @@ 95 common fchown sys_fchown 96 common getpriority sys_getpriority 97 common setpriority sys_setpriority -98 common recv sys_recv +98 common recv sys_recv compat_sys_recv 99 common statfs sys_statfs compat_sys_statfs 100 common fstatfs sys_fstatfs compat_sys_fstatfs 101 common stat64 sys_stat64
@@ -135,7 +135,7 @@ 120 common clone sys_clone_wrapper 121 common setdomainname sys_setdomainname 122 common sendfile sys_sendfile compat_sys_sendfile -123 common recvfrom sys_recvfrom +123 common recvfrom sys_recvfrom compat_sys_recvfrom 124 32 adjtimex sys_adjtimex_time32 124 64 adjtimex sys_adjtimex 125 common mprotect sys_mprotect
@@ -364,7 +364,7 @@ 320 common accept4 sys_accept4 321 common prlimit64 sys_prlimit64 322 common fanotify_init sys_fanotify_init -323 common fanotify_mark sys_fanotify_mark sys32_fanotify_mark +323 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark 324 32 clock_adjtime sys_clock_adjtime32 324 64 clock_adjtime sys_clock_adjtime 325 common name_to_handle_at sys_name_to_handle_at
arch/parisc/net/bpf_jit_core.c +7 -1
@@ -167,7 +167,13 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_flush_icache (jit_data->header, ctx->insns + ctx->ninsns);if (!prog->is_func || extra_pass) { -bpf_jit_binary_lock_ro (jit_data->header); +if (bpf_jit_binary_lock_ro (jit_data->header)) { +bpf_jit_binary_free (jit_data->header); + prog->bpf_func =NULL ; + prog->jited =0 ; + prog->jited_len =0 ; + goto out_offset; + } prologue_len = ctx->epilogue_offset - ctx->body_len;for (i =0 ; i < prog->len; i++) ctx->offset[i] += prologue_len;
arch/powerpc/kernel/syscalls/syscall.tbl +5 -1
@@ -230,8 +230,10 @@ 178 nospu rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend 179 32 pread64 sys_ppc_pread64 compat_sys_ppc_pread64 179 64 pread64 sys_pread64 +179 spu pread64 sys_pread64 180 32 pwrite64 sys_ppc_pwrite64 compat_sys_ppc_pwrite64 180 64 pwrite64 sys_pwrite64 +180 spu pwrite64 sys_pwrite64 181 common chown sys_chown 182 common getcwd sys_getcwd 183 common capget sys_capget
@@ -246,6 +248,7 @@ 190 common ugetrlimit sys_getrlimit compat_sys_getrlimit 191 32 readahead sys_ppc_readahead compat_sys_ppc_readahead 191 64 readahead sys_readahead +191 spu readahead sys_readahead 192 32 mmap2 sys_mmap2 compat_sys_mmap2 193 32 truncate64 sys_ppc_truncate64 compat_sys_ppc_truncate64 194 32 ftruncate64 sys_ppc_ftruncate64 compat_sys_ppc_ftruncate64
@@ -293,6 +296,7 @@ 232 nospu set_tid_address sys_set_tid_address 233 32 fadvise64 sys_ppc32_fadvise64 compat_sys_ppc32_fadvise64 233 64 fadvise64 sys_fadvise64 +233 spu fadvise64 sys_fadvise64 234 nospu exit_group sys_exit_group 235 nospu lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie 236 common epoll_create sys_epoll_create
@@ -502,7 +506,7 @@ 412 32 utimensat_time64 sys_utimensat sys_utimensat 413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/powerpc/net/bpf_jit.h +5 -13
@@ -36,9 +36,6 @@EMIT (PPC_RAW_BRANCH (offset)); \ }while (0 ) -/* bl (unconditional 'branch' with link) */ -#define PPC_BL (dest) EMIT(PPC_RAW_BL((dest) - (unsigned long)(image + ctx->idx))) - /* "cond" here covers BO:BI fields. */#define PPC_BCC_SHORT (cond, dest) \ do { \
@@ -147,12 +144,6 @@ struct codegen_context {#define BPF_FIXUP_LEN 2/* Two instructions => 8 bytes */ #endif -static inline void bpf_flush_icache (void *start,void *end) -{ -smp_wmb ();/* smp write barrier */ -flush_icache_range ((unsigned long )start, (unsigned long )end); -} -static inline bool bpf_is_seen_register (struct codegen_context *ctx,int i) {return ctx->seen & (1 << (31 - i));
@@ -169,16 +160,17 @@ static inline void bpf_clear_seen_register(struct codegen_context *ctx, int i) }void bpf_jit_init_reg_mapping (struct codegen_context *ctx); -int bpf_jit_emit_func_call_rel (u32 *image,struct codegen_context *ctx,u64 func); -int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,struct codegen_context *ctx, +int bpf_jit_emit_func_call_rel (u32 *image,u32 *fimage,struct codegen_context *ctx,u64 func); +int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,u32 *fimage,struct codegen_context *ctx,u32 *addrs,int pass,bool extra_pass);void bpf_jit_build_prologue (u32 *image,struct codegen_context *ctx);void bpf_jit_build_epilogue (u32 *image,struct codegen_context *ctx);void bpf_jit_realloc_regs (struct codegen_context *ctx);int bpf_jit_emit_exit_insn (u32 *image,struct codegen_context *ctx,int tmp_reg,long exit_addr); -int bpf_add_extable_entry (struct bpf_prog *fp,u32 *image,int pass,struct codegen_context *ctx, -int insn_idx,int jmp_off,int dst_reg); +int bpf_add_extable_entry (struct bpf_prog *fp,u32 *image,u32 *fimage,int pass, +struct codegen_context *ctx,int insn_idx, +int jmp_off,int dst_reg);#endif
arch/powerpc/net/bpf_jit_comp.c +81 -29
218 lines not on this page · raw message
arch/powerpc/net/bpf_jit_comp32.c +7 -6
@@ -200,12 +200,13 @@ void bpf_jit_build_epilogue(u32 *image, struct codegen_context *ctx)EMIT (PPC_RAW_BLR ()); } -int bpf_jit_emit_func_call_rel (u32 *image,struct codegen_context *ctx,u64 func) +/* Relative offset needs to be calculated based on final image location */ +int bpf_jit_emit_func_call_rel (u32 *image,u32 *fimage,struct codegen_context *ctx,u64 func) { -s32 rel = (s32 )func - (s32)(image + ctx->idx); +s32 rel = (s32 )func - (s32)(fimage + ctx->idx);if (image && rel <0x2000000 && rel >=-0x2000000 ) { -PPC_BL (func); +EMIT (PPC_RAW_BL (rel)); }else {/* Load function address into r0 */ EMIT (PPC_RAW_LIS (_R0,IMM_H (func)));
@@ -278,7 +279,7 @@ static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 o }/* Assemble the body code between the prologue & epilogue */ -int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,struct codegen_context *ctx, +int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,u32 *fimage,struct codegen_context *ctx,u32 *addrs,int pass,bool extra_pass) {const struct bpf_insn *insn = fp->insnsi;
@@ -1009,7 +1010,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context * jmp_off +=4 ; } - ret =bpf_add_extable_entry (fp, image, pass, ctx, insn_idx, + ret =bpf_add_extable_entry (fp, image, fimage, pass, ctx, insn_idx, jmp_off, dst_reg);if (ret)return ret;
@@ -1065,7 +1066,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *EMIT (PPC_RAW_STW (bpf_to_ppc (BPF_REG_5 ), _R1,12 )); } - ret =bpf_jit_emit_func_call_rel (image, ctx, func_addr); + ret =bpf_jit_emit_func_call_rel (image, fimage, ctx, func_addr);if (ret)return ret;
arch/powerpc/net/bpf_jit_comp64.c +5 -5
@@ -240,7 +240,7 @@ static int bpf_jit_emit_func_call_hlp(u32 *image, struct codegen_context *ctx, ureturn 0 ; } -int bpf_jit_emit_func_call_rel (u32 *image,struct codegen_context *ctx,u64 func) +int bpf_jit_emit_func_call_rel (u32 *image,u32 *fimage,struct codegen_context *ctx,u64 func) {unsigned int i, ctx_idx = ctx->idx;
@@ -361,7 +361,7 @@ asm ( );/* Assemble the body code between the prologue & epilogue */ -int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,struct codegen_context *ctx, +int bpf_jit_build_body (struct bpf_prog *fp,u32 *image,u32 *fimage,struct codegen_context *ctx,u32 *addrs,int pass,bool extra_pass) {enum stf_barrier_type stf_barrier =stf_barrier_type_get ();
@@ -952,8 +952,8 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context * addrs[++i] = ctx->idx *4 ;if (BPF_MODE (code) ==BPF_PROBE_MEM ) { - ret =bpf_add_extable_entry (fp, image, pass, ctx, ctx->idx -1 , -4 , dst_reg); + ret =bpf_add_extable_entry (fp, image, fimage, pass, ctx, + ctx->idx -1 ,4 , dst_reg);if (ret)return ret; }
@@ -1007,7 +1007,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *if (func_addr_fixed) ret =bpf_jit_emit_func_call_hlp (image, ctx, func_addr);else - ret =bpf_jit_emit_func_call_rel (image, ctx, func_addr); + ret =bpf_jit_emit_func_call_rel (image, fimage, ctx, func_addr);if (ret)return ret;
arch/riscv/include/asm/insn.h +1 -1
@@ -145,7 +145,7 @@/* parts of opcode for RVF, RVD and RVQ */ #define RVFDQ_FL_FS_WIDTH_OFF 12 -#define RVFDQ_FL_FS_WIDTH_MASK GENMASK(3, 0) +#define RVFDQ_FL_FS_WIDTH_MASK GENMASK(2, 0)#define RVFDQ_FL_FS_WIDTH_W 2#define RVFDQ_FL_FS_WIDTH_D 3#define RVFDQ_LS_FS_WIDTH_Q 4
arch/riscv/kernel/stacktrace.c +1 -1
@@ -156,7 +156,7 @@ unsigned long __get_wchan(struct task_struct *task)return pc; } -noinline void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie, +noinline noinstr void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,struct task_struct *task,struct pt_regs *regs) {walk_stackframe (task, regs, consume_entry, cookie);
arch/s390/include/asm/entry-common.h +1 -1
@@ -55,7 +55,7 @@ static __always_inline void arch_exit_to_user_mode(void)static inline void arch_exit_to_user_mode_prepare (struct pt_regs *regs,unsigned long ti_work) { -choose_random_kstack_offset (get_tod_clock_fast () &0xff ); +choose_random_kstack_offset (get_tod_clock_fast ()); }#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
arch/s390/kernel/syscalls/syscall.tbl +1 -1
@@ -418,7 +418,7 @@ 412 32 utimensat_time64 - sys_utimensat 413 32 pselect6_time64 - compat_sys_pselect6_time64 414 32 ppoll_time64 - compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 - sys_io_pgetevents +416 32 io_pgetevents_time64 - compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 - compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 - sys_mq_timedsend 419 32 mq_timedreceive_time64 - sys_mq_timedreceive
arch/s390/net/bpf_jit_comp.c +5 -1
@@ -1973,7 +1973,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp)print_fn_code (jit.prg_buf, jit.size_prg); }if (!fp->is_func || extra_pass) { -bpf_jit_binary_lock_ro (header); +if (bpf_jit_binary_lock_ro (header)) { +bpf_jit_binary_free (header); + fp = orig_fp; + goto free_addrs; + } }else { jit_data->header = header; jit_data->ctx = jit;
arch/s390/pci/pci_irq.c +1 -1
@@ -410,7 +410,7 @@ static void __init cpu_enable_directed_irq(void *unused)union zpci_sic_iib iib = {{0 }};union zpci_sic_iib ziib = {{0 }}; - iib.cdiib.dibv_addr = (u64 ) zpci_ibv[smp_processor_id ()]->vector; + iib.cdiib.dibv_addr =virt_to_phys (zpci_ibv[smp_processor_id ()]->vector);zpci_set_irq_ctrl (SIC_IRQ_MODE_SET_CPU ,0 , &iib);zpci_set_irq_ctrl (SIC_IRQ_MODE_D_SINGLE ,PCI_ISC , &ziib);
arch/sh/kernel/sys_sh32.c +11 -0
@@ -59,3 +59,14 @@ asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1, (u64)len0 << 32 | len1, advice);#endif } + +/* +* swap the arguments the way that libc wants them instead of +* moving flags ahead of the 64-bit nbytes argument +*/ +SYSCALL_DEFINE6 (sh_sync_file_range6, int, fd,SC_ARG64 (offset), + SC_ARG64(nbytes), unsigned int, flags) +{ +return ksys_sync_file_range (fd,SC_VAL64 (loff_t, offset), +SC_VAL64 (loff_t, nbytes), flags); +}
arch/sh/kernel/syscalls/syscall.tbl +2 -1
@@ -321,7 +321,7 @@ 311 common set_robust_list sys_set_robust_list 312 common get_robust_list sys_get_robust_list 313 common splice sys_splice -314 common sync_file_range sys_sync_file_range +314 common sync_file_range sys_sh_sync_file_range6 315 common tee sys_tee 316 common vmsplice sys_vmsplice 317 common move_pages sys_move_pages
@@ -395,6 +395,7 @@ 385 common pkey_alloc sys_pkey_alloc 386 common pkey_free sys_pkey_free 387 common rseq sys_rseq +388 common sync_file_range2 sys_sync_file_range2 # room for arch specific syscalls 393 common semget sys_semget 394 common semctl sys_semctl
arch/sparc/kernel/sys32.S +0 -221
224 lines not on this page · raw message
arch/sparc/kernel/syscalls/syscall.tbl +4 -4
@@ -117,7 +117,7 @@ 90 common dup2 sys_dup2 91 32 setfsuid32 sys_setfsuid 92 common fcntl sys_fcntl compat_sys_fcntl -93 common select sys_select +93 common select sys_select compat_sys_select 94 32 setfsgid32 sys_setfsgid 95 common fsync sys_fsync 96 common setpriority sys_setpriority
@@ -155,7 +155,7 @@ 123 32 fchown sys_fchown16 123 64 fchown sys_fchown 124 common fchmod sys_fchmod -125 common recvfrom sys_recvfrom +125 common recvfrom sys_recvfrom compat_sys_recvfrom 126 32 setreuid sys_setreuid16 126 64 setreuid sys_setreuid 127 32 setregid sys_setregid16
@@ -247,7 +247,7 @@ 204 32 readdir sys_old_readdir compat_sys_old_readdir 204 64 readdir sys_nis_syscall 205 common readahead sys_readahead compat_sys_readahead -206 common socketcall sys_socketcall sys32_socketcall +206 common socketcall sys_socketcall compat_sys_socketcall 207 common syslog sys_syslog 208 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie 209 common fadvise64 sys_fadvise64 compat_sys_fadvise64
@@ -461,7 +461,7 @@ 412 32 utimensat_time64 sys_utimensat sys_utimensat 413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents +416 32 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend 419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive
arch/sparc/net/bpf_jit_comp_64.c +5 -1
@@ -1602,7 +1602,11 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)bpf_flush_icache (header, (u8 *)header + header->size);if (!prog->is_func || extra_pass) { -bpf_jit_binary_lock_ro (header); +if (bpf_jit_binary_lock_ro (header)) { +bpf_jit_binary_free (header); + prog = orig_prog; + goto out_off; + } }else { jit_data->ctx = ctx; jit_data->image = image_ptr;
arch/x86/entry/syscalls/syscall_32.tbl +1 -1
@@ -420,7 +420,7 @@ 412 i386 utimensat_time64 sys_utimensat 413 i386 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 414 i386 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 i386 io_pgetevents_time64 sys_io_pgetevents +416 i386 io_pgetevents_time64 sys_io_pgetevents compat_sys_io_pgetevents_time64 417 i386 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 418 i386 mq_timedsend_time64 sys_mq_timedsend 419 i386 mq_timedreceive_time64 sys_mq_timedreceive
arch/x86/include/asm/entry-common.h +6 -9
@@ -73,19 +73,16 @@ static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,#endif /* -* Ultimately, this value will get limited by KSTACK_OFFSET_MAX(), -* but not enough for x86 stack utilization comfort. To keep -* reasonable stack head room, reduce the maximum offset to 8 bits. -* -* The actual entropy will be further reduced by the compiler when -* applying stack alignment constraints (see cc_stack_align4/8 in +* This value will get limited by KSTACK_OFFSET_MAX(), which is 10 +* bits. The actual entropy will be further reduced by the compiler +* when applying stack alignment constraints (see cc_stack_align4/8 in * arch/x86/Makefile), which will remove the 3 (x86_64) or 2 (ia32) * low bits from any entropy chosen here. * -* Therefore, final stack offset entropy will be 5 (x86_64) or -* 6 (ia32) bits. +* Therefore, final stack offset entropy will be 7 (x86_64) or +* 8 (ia32) bits. */ -choose_random_kstack_offset (rdtsc () &0xFF ); +choose_random_kstack_offset (rdtsc ()); }#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
arch/x86/kernel/fpu/core.c +2 -2
@@ -145,8 +145,8 @@ void restore_fpregs_from_fpstate(struct fpstate *fpstate, u64 mask) asmvolatile ("fnclex\n\t" "emms\n\t" -"fildl %P[addr]" /* set F?P to defined value */ - : : [addr]"m" (fpstate)); +"fildl %[addr]" /* set F?P to defined value */ + : : [addr]"m" (*fpstate)); }if (use_xsave ()) {
arch/x86/kernel/time.c +1 -19
@@ -27,25 +27,7 @@unsigned long profile_pc (struct pt_regs *regs) { -unsigned long pc =instruction_pointer (regs); - -if (!user_mode (regs) &&in_lock_functions (pc)) { -#ifdef CONFIG_FRAME_POINTER -return *(unsigned long *)(regs->bp +sizeof (long )); -#else -unsigned long *sp = (unsigned long *)regs->sp; -/* -* Return address is either directly at stack pointer -* or above a saved flags. Eflags has bits 22-31 zero, -* kernel addresses don't. -*/ -if (sp[0 ] >>22 ) -return sp[0 ]; -if (sp[1 ] >>22 ) -return sp[1 ]; -#endif - } -return pc; +return instruction_pointer (regs); }EXPORT_SYMBOL (profile_pc);
arch/x86/net/bpf_jit_comp32.c +1 -2
@@ -2600,8 +2600,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)if (bpf_jit_enable >1 )bpf_jit_dump (prog->len, proglen, pass +1 , image); -if (image) { -bpf_jit_binary_lock_ro (header); +if (image && !bpf_jit_binary_lock_ro (header)) { prog->bpf_func = (void *)image; prog->jited =1 ; prog->jited_len = proglen;
crypto/ecdh.c +2 -0
@@ -33,6 +33,8 @@ static int ecdh_set_secret(struct crypto_kpp *tfm, const void *buf, params.key_size > sizeof(u64) * ctx->ndigits)return -EINVAL ; +memset (ctx->private_key,0 ,sizeof (ctx->private_key)); +if (!params.key || !params.key_size)return ecc_gen_privkey (ctx->curve_id, ctx->ndigits, ctx->private_key);
drivers/ata/ahci.c +12 -5
@@ -1890,8 +1890,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) n_ports =max (ahci_nr_ports (hpriv->cap),fls (hpriv->port_map)); host =ata_host_alloc_pinfo (&pdev->dev, ppi, n_ports); -if (!host) -return -ENOMEM ; +if (!host) { + rc = -ENOMEM ; + goto err_rm_sysfs_file; + } host->private_data = hpriv;if (ahci_init_msi (pdev, n_ports, hpriv) <0 ) {
@@ -1944,11 +1946,11 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)/* initialize adapter */ rc =ahci_configure_dma_masks (pdev, hpriv);if (rc) -return rc; + goto err_rm_sysfs_file; rc =ahci_pci_reset_controller (host);if (rc) -return rc; + goto err_rm_sysfs_file;ahci_pci_init_controller (host);ahci_pci_print_info (host);
@@ -1957,10 +1959,15 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) rc =ahci_host_activate (host, &ahci_sht);if (rc) -return rc; + goto err_rm_sysfs_file;pm_runtime_put_noidle (&pdev->dev);return 0 ; + +err_rm_sysfs_file: +sysfs_remove_file_from_group (&pdev->dev.kobj, + &dev_attr_remapped_nvme.attr,NULL ); +return rc; }static void ahci_shutdown_one (struct pci_dev *pdev)
drivers/ata/libata-core.c +18 -11
@@ -5499,6 +5499,18 @@ struct ata_port *ata_port_alloc(struct ata_host *host)return ap; } +void ata_port_free (struct ata_port *ap) +{ +if (!ap) +return ; + +kfree (ap->pmp_link); +kfree (ap->slave_link); +kfree (ap->ncq_sense_buf); +kfree (ap); +} +EXPORT_SYMBOL_GPL (ata_port_free); +static void ata_devres_release (struct device *gendev,void *res) {struct ata_host *host =dev_get_drvdata (gendev);
@@ -5525,12 +5537,7 @@ static void ata_host_release(struct kref *kref)int i;for (i =0 ; i < host->n_ports; i++) { -struct ata_port *ap = host->ports[i]; - -kfree (ap->pmp_link); -kfree (ap->slave_link); -kfree (ap->ncq_sense_buf); -kfree (ap); +ata_port_free (host->ports[i]); host->ports[i] =NULL ; }kfree (host);
@@ -5580,8 +5587,10 @@ struct ata_host *ata_host_alloc(struct device *dev, int max_ports)if (!host)return NULL ; -if (!devres_open_group (dev,NULL ,GFP_KERNEL )) - goto err_free; +if (!devres_open_group (dev,NULL ,GFP_KERNEL )) { +kfree (host); +return NULL ; + } dr =devres_alloc (ata_devres_release,0 ,GFP_KERNEL );if (!dr)
@@ -5613,8 +5622,6 @@ struct ata_host *ata_host_alloc(struct device *dev, int max_ports) err_out:devres_release_group (dev,NULL ); - err_free: -kfree (host);return NULL ; }EXPORT_SYMBOL_GPL (ata_host_alloc);
@@ -5913,7 +5920,7 @@ int ata_host_register(struct ata_host *host, const struct scsi_host_template *sh* allocation time. */ for (i = host->n_ports; host->ports[i]; i++) -kfree (host->ports[i]); +ata_port_free (host->ports[i]);/* give ports names and add SCSI hosts */ for (i =0 ; i < host->n_ports; i++) {
drivers/counter/ti-eqep.c +6 -0
@@ -6,6 +6,7 @@*/ #include <linux/bitops.h> +#include <linux/clk.h> #include <linux/counter.h> #include <linux/kernel.h> #include <linux/mod_devicetable.h>
@@ -376,6 +377,7 @@ static int ti_eqep_probe(struct platform_device *pdev)struct counter_device *counter;struct ti_eqep_cnt *priv;void __iomem *base; +struct clk *clk;int err; counter =devm_counter_alloc (dev,sizeof (*priv));
@@ -415,6 +417,10 @@ static int ti_eqep_probe(struct platform_device *pdev)pm_runtime_enable (dev);pm_runtime_get_sync (dev); + clk =devm_clk_get_enabled (dev,NULL ); +if (IS_ERR (clk)) +return dev_err_probe (dev,PTR_ERR (clk),"failed to enable clock\n" ); + err =counter_add (counter);if (err <0 ) {pm_runtime_put_sync (dev);
drivers/cpufreq/amd-pstate.c +1 -1
@@ -675,7 +675,7 @@ static int amd_pstate_set_boost(struct cpufreq_policy *policy, int state)if (state) policy->cpuinfo.max_freq = cpudata->max_freq;else - policy->cpuinfo.max_freq = cpudata->nominal_freq *1000 ; + policy->cpuinfo.max_freq = cpudata->nominal_freq; policy->max = policy->cpuinfo.max_freq;
drivers/cpufreq/intel_pstate.c +6 -7
@@ -356,15 +356,14 @@ static void intel_pstate_set_itmt_prio(int cpu)int ret; ret =cppc_get_perf_caps (cpu, &cppc_perf); -if (ret) -return ; -/* -* On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff. -* In this case we can't use CPPC.highest_perf to enable ITMT. -* In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide. +* If CPPC is not available, fall back to MSR_HWP_CAPABILITIES bits [8:0]. +* +* Also, on some systems with overclocking enabled, CPPC.highest_perf is +* hardcoded to 0xff, so CPPC.highest_perf cannot be used to enable ITMT. +* Fall back to MSR_HWP_CAPABILITIES then too. */ -if (cppc_perf.highest_perf ==CPPC_MAX_PERF ) +if (ret || cppc_perf.highest_perf ==CPPC_MAX_PERF ) cppc_perf.highest_perf =HWP_HIGHEST_PERF (READ_ONCE (all_cpu_data[cpu]->hwp_cap_cached));/*
drivers/cxl/core/core.h +7 -0
@@ -27,7 +27,14 @@ void cxl_decoder_kill_region(struct cxl_endpoint_decoder *cxled);int cxl_region_init (void );void cxl_region_exit (void );int cxl_get_poison_by_endpoint (struct cxl_port *port); +struct cxl_region *cxl_dpa_to_region (const struct cxl_memdev *cxlmd,u64 dpa); +#else +static inline +struct cxl_region *cxl_dpa_to_region (const struct cxl_memdev *cxlmd,u64 dpa) +{ +return NULL ; +}static inline int cxl_get_poison_by_endpoint (struct cxl_port *port) {return 0 ;
drivers/cxl/core/hdm.c +13 -0
@@ -52,6 +52,14 @@ int devm_cxl_add_passthrough_decoder(struct cxl_port *port)struct cxl_dport *dport =NULL ;int single_port_map[1 ];unsigned long index; +struct cxl_hdm *cxlhdm =dev_get_drvdata (&port->dev); + +/* +* Capability checks are moot for passthrough decoders, support +* any and all possibilities. +*/ + cxlhdm->interleave_mask = ~0U ; + cxlhdm->iw_cap_mask = ~0UL ; cxlsd =cxl_switch_decoder_alloc (port,1 );if (IS_ERR (cxlsd))
@@ -79,6 +87,11 @@ static void parse_hdm_decoder_caps(struct cxl_hdm *cxlhdm) cxlhdm->interleave_mask |=GENMASK (11 ,8 );if (FIELD_GET (CXL_HDM_DECODER_INTERLEAVE_14_12 , hdm_cap)) cxlhdm->interleave_mask |=GENMASK (14 ,12 ); + cxlhdm->iw_cap_mask =BIT (1 ) |BIT (2 ) |BIT (4 ) |BIT (8 ); +if (FIELD_GET (CXL_HDM_DECODER_INTERLEAVE_3_6_12_WAY , hdm_cap)) + cxlhdm->iw_cap_mask |=BIT (3 ) |BIT (6 ) |BIT (12 ); +if (FIELD_GET (CXL_HDM_DECODER_INTERLEAVE_16_WAY , hdm_cap)) + cxlhdm->iw_cap_mask |=BIT (16 ); } static int map_hdm_decoder_regs(struct cxl_port *port, void __iomem *crb,
drivers/cxl/core/memdev.c +0 -44
50 lines not on this page · raw message
drivers/cxl/core/region.c +137 -0
167 lines not on this page · raw message
drivers/cxl/cxl.h +2 -0
@@ -43,6 +43,8 @@#define CXL_HDM_DECODER_TARGET_COUNT_MASK GENMASK(7, 4)#define CXL_HDM_DECODER_INTERLEAVE_11_8 BIT(8)#define CXL_HDM_DECODER_INTERLEAVE_14_12 BIT(9) +#define CXL_HDM_DECODER_INTERLEAVE_3_6_12_WAY BIT(11) +#define CXL_HDM_DECODER_INTERLEAVE_16_WAY BIT(12)#define CXL_HDM_DECODER_CTRL_OFFSET 0x4#define CXL_HDM_DECODER_ENABLE BIT(1)#define CXL_HDM_DECODER0_BASE_LOW_OFFSET (i) (0x20 * (i) + 0x10)
drivers/cxl/cxlmem.h +10 -0
@@ -888,11 +888,21 @@ static inline void cxl_mem_active_dec(void)int cxl_mem_sanitize (struct cxl_memdev *cxlmd,u16 cmd); +/** +* struct cxl_hdm - HDM Decoder registers and cached / decoded capabilities +* @regs: mapped registers, see devm_cxl_setup_hdm() +* @decoder_count: number of decoders for this port +* @target_count: for switch decoders, max downstream port targets +* @interleave_mask: interleave granularity capability, see check_interleave_cap() +* @iw_cap_mask: bitmask of supported interleave ways, see check_interleave_cap() +* @port: mapped cxl_port, see devm_cxl_setup_hdm() +*/ struct cxl_hdm {struct cxl_component_regs regs;unsigned int decoder_count;unsigned int target_count;unsigned int interleave_mask; +unsigned long iw_cap_mask;struct cxl_port *port; };
drivers/gpio/gpio-davinci.c +5 -0
@@ -225,6 +225,11 @@ static int davinci_gpio_probe(struct platform_device *pdev)else nirq =DIV_ROUND_UP (ngpio,16 ); +if (nirq >MAX_INT_PER_BANK ) { +dev_err (dev,"Too many IRQs!\n" ); +return -EINVAL ; + } + chips =devm_kzalloc (dev,sizeof (*chips),GFP_KERNEL );if (!chips)return -ENOMEM ;
drivers/gpio/gpiolib-cdev.c +10 -6
@@ -132,6 +132,10 @@ struct linehandle_state { GPIOHANDLE_REQUEST_OPEN_DRAIN | \ GPIOHANDLE_REQUEST_OPEN_SOURCE) +#define GPIOHANDLE_REQUEST_DIRECTION_FLAGS \ + (GPIOHANDLE_REQUEST_INPUT | \ + GPIOHANDLE_REQUEST_OUTPUT) +static int linehandle_validate_flags (u32 flags) {/* Return an error if an unknown flag is set */
@@ -212,21 +216,21 @@ static long linehandle_set_config(struct linehandle_state *lh,if (ret)return ret; +/* Lines must be reconfigured explicitly as input or output. */ +if (!(lflags &GPIOHANDLE_REQUEST_DIRECTION_FLAGS )) +return -EINVAL ; +for (i =0 ; i < lh->num_descs; i++) { desc = lh->descs[i]; -linehandle_flags_to_desc_flags (gcnf.flags, &desc->flags); +linehandle_flags_to_desc_flags (lflags, &desc->flags); -/* -* Lines have to be requested explicitly for input -* or output, else the line will be treated "as is". -*/ if (lflags &GPIOHANDLE_REQUEST_OUTPUT ) {int val = !!gcnf.default_values[i]; ret =gpiod_direction_output (desc, val);if (ret)return ret; - }else if (lflags &GPIOHANDLE_REQUEST_INPUT ) { + }else { ret =gpiod_direction_input (desc);if (ret)return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.c +1 -1
@@ -399,7 +399,7 @@ amdgpu_atomfirmware_get_vram_info(struct amdgpu_device *adev, mem_channel_number = vram_info->v30.channel_num; mem_channel_width = vram_info->v30.channel_width;if (vram_width) - *vram_width = mem_channel_number * (1 << mem_channel_width); + *vram_width = mem_channel_number *16 ;break ;default :return -EINVAL ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +5 -2
@@ -4685,11 +4685,14 @@ int amdgpu_device_mode1_reset(struct amdgpu_device *adev)dev_info (adev->dev,"GPU mode1 reset\n" ); +/* Cache the state before bus master disable. The saved config space +* values are used in other cases like restore after mode-2 reset. +*/ +amdgpu_device_cache_pci_state (adev->pdev); +/* disable BM */ pci_clear_master (adev->pdev); -amdgpu_device_cache_pci_state (adev->pdev); -if (amdgpu_dpm_is_mode1_reset_supported (adev)) {dev_info (adev->dev,"GPU smu mode1 reset\n" ); ret =amdgpu_dpm_mode1_reset (adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c +16 -2
@@ -2,6 +2,7 @@#include <drm/drm_atomic_helper.h> #include <drm/drm_simple_kms_helper.h> +#include <drm/drm_gem_framebuffer_helper.h> #include <drm/drm_vblank.h> #include "amdgpu.h"
@@ -313,7 +314,13 @@ static int amdgpu_vkms_prepare_fb(struct drm_plane *plane,return 0 ; } afb =to_amdgpu_framebuffer (new_state->fb); - obj = new_state->fb->obj[0 ]; + + obj =drm_gem_fb_get_obj (new_state->fb,0 ); +if (!obj) { +DRM_ERROR ("Failed to get obj from framebuffer\n" ); +return -EINVAL ; + } + rbo =gem_to_amdgpu_bo (obj); adev =amdgpu_ttm_adev (rbo->tbo.bdev);
@@ -367,12 +374,19 @@ static void amdgpu_vkms_cleanup_fb(struct drm_plane *plane, struct drm_plane_state *old_state) {struct amdgpu_bo *rbo; +struct drm_gem_object *obj;int r;if (!old_state->fb)return ; - rbo =gem_to_amdgpu_bo (old_state->fb->obj[0 ]); + obj =drm_gem_fb_get_obj (old_state->fb,0 ); +if (!obj) { +DRM_ERROR ("Failed to get obj from framebuffer\n" ); +return ; + } + + rbo =gem_to_amdgpu_bo (obj); r =amdgpu_bo_reserve (rbo, false);if (unlikely (r)) {DRM_ERROR ("failed to reserve rbo before unpin\n" );
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_capability.c +9 -1
@@ -1584,9 +1584,17 @@ static bool retrieve_link_cap(struct dc_link *link)return false; } -if (dp_is_lttpr_present (link)) +if (dp_is_lttpr_present (link)) {configure_lttpr_mode_transparent (link); +// Echo TOTAL_LTTPR_CNT back downstream +core_link_write_dpcd ( + link, +DP_TOTAL_LTTPR_CNT , + &link->dpcd_caps.lttpr_caps.phy_repeater_cnt, +sizeof (link->dpcd_caps.lttpr_caps.phy_repeater_cnt)); + } +/* Read DP tunneling information. */ status =dpcd_get_tunneling_device_data (link);
drivers/gpu/drm/amd/display/include/dpcd_defs.h +5 -0
@@ -177,4 +177,9 @@ enum dpcd_psr_sink_states {#define DP_SINK_PR_PIXEL_DEVIATION_PER_LINE 0x379#define DP_SINK_PR_MAX_NUMBER_OF_DEVIATION_LINE 0x37A +/* Remove once drm_dp_helper.h is updated upstream */ +#ifndef DP_TOTAL_LTTPR_CNT +#define DP_TOTAL_LTTPR_CNT 0xF000A/* 2.1 */ +#endif +#endif /* __DAL_DPCD_DEFS_H__ */
drivers/gpu/drm/drm_fb_helper.c +3 -3
@@ -524,6 +524,9 @@ struct fb_info *drm_fb_helper_alloc_info(struct drm_fb_helper *fb_helper)if (!info)return ERR_PTR (-ENOMEM ); +if (!drm_leak_fbdev_smem) + info->flags |=FBINFO_HIDE_SMEM_START ; + ret =fb_alloc_cmap (&info->cmap,256 ,0 );if (ret) goto err_release;
@@ -1860,9 +1863,6 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper) info = fb_helper->info; info->var.pixclock =0 ; -if (!drm_leak_fbdev_smem) - info->flags |=FBINFO_HIDE_SMEM_START ; -/* Need to drop locks to avoid recursive deadlock in * register_framebuffer. This is ok because the only thing left to do is * register the fbdev emulation instance in kernel_fb_helper_list. */
drivers/gpu/drm/drm_fbdev_dma.c +4 -1
@@ -130,7 +130,10 @@ static int drm_fbdev_dma_helper_fb_probe(struct drm_fb_helper *fb_helper, info->flags |=FBINFO_READS_FAST ;/* signal caching */ info->screen_size = sizes->surface_height * fb->pitches[0 ]; info->screen_buffer = map.vaddr; - info->fix.smem_start =page_to_phys (virt_to_page (info->screen_buffer)); +if (!(info->flags &FBINFO_HIDE_SMEM_START )) { +if (!drm_WARN_ON (dev,is_vmalloc_addr (info->screen_buffer))) + info->fix.smem_start =page_to_phys (virt_to_page (info->screen_buffer)); + } info->fix.smem_len = info->screen_size;return 0 ;
drivers/gpu/drm/drm_file.c +3 -5
@@ -529,14 +529,12 @@ void drm_file_update_pid(struct drm_file *filp) dev = filp->minor->dev;mutex_lock (&dev->filelist_mutex); +get_pid (pid); old =rcu_replace_pointer (filp->pid, pid,1 );mutex_unlock (&dev->filelist_mutex); -if (pid != old) { -get_pid (pid); -synchronize_rcu (); -put_pid (old); - } +synchronize_rcu (); +put_pid (old); }/**
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c +1 -0
@@ -298,6 +298,7 @@ void i915_vma_revoke_fence(struct i915_vma *vma)return ;GEM_BUG_ON (fence->vma != vma); +i915_active_wait (&fence->active);GEM_BUG_ON (!i915_active_is_idle (&fence->active));GEM_BUG_ON (atomic_read (&fence->pin_count));
drivers/gpu/drm/nouveau/dispnv04/tvnv17.c +6 -0
@@ -209,6 +209,8 @@ static int nv17_tv_get_ld_modes(struct drm_encoder *encoder,struct drm_display_mode *mode; mode =drm_mode_duplicate (encoder->dev, tv_mode); +if (!mode) +continue ; mode->clock = tv_norm->tv_enc_mode.vrefresh * mode->htotal / 1000 *
@@ -258,6 +260,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder,if (modes[i].hdisplay == output_mode->hdisplay && modes[i].vdisplay == output_mode->vdisplay) { mode =drm_mode_duplicate (encoder->dev, output_mode); +if (!mode) +continue ; mode->type |=DRM_MODE_TYPE_PREFERRED ; }else {
@@ -265,6 +269,8 @@ static int nv17_tv_get_hd_modes(struct drm_encoder *encoder, modes[i].vdisplay,60 , false, (output_mode->flags & DRM_MODE_FLAG_INTERLACE), false); +if (!mode) +continue ; }/* CVT modes are sometimes unsuitable... */
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +3 -3
@@ -883,10 +883,10 @@ static int ili9881c_prepare(struct drm_panel *panel)msleep (5 );/* And reset it */ -gpiod_set_value (ctx->reset,1 ); +gpiod_set_value_cansleep (ctx->reset,1 );msleep (20 ); -gpiod_set_value (ctx->reset,0 ); +gpiod_set_value_cansleep (ctx->reset,0 );msleep (20 );for (i =0 ; i < ctx->desc->init_length; i++) {
@@ -941,7 +941,7 @@ static int ili9881c_unprepare(struct drm_panel *panel)mipi_dsi_dcs_enter_sleep_mode (ctx->dsi);regulator_disable (ctx->power); -gpiod_set_value (ctx->reset,1 ); +gpiod_set_value_cansleep (ctx->reset,1 );return 0 ; }
drivers/gpu/drm/panel/panel-simple.c +1 -0
@@ -2523,6 +2523,7 @@ static const struct display_timing koe_tx26d202vm0bwa_timing = { .vfront_porch = { 3, 5, 10 }, .vback_porch = { 2, 5, 10 }, .vsync_len = { 5, 5, 5 }, + .flags = DISPLAY_FLAGS_DE_HIGH, }; static const struct panel_desc koe_tx26d202vm0bwa = {
drivers/gpu/drm/radeon/radeon.h +0 -1
@@ -132,7 +132,6 @@ extern int radeon_cik_support;/* RADEON_IB_POOL_SIZE must be a power of 2 */ #define RADEON_IB_POOL_SIZE 16#define RADEON_DEBUGFS_MAX_COMPONENTS 32 -#define RADEONFB_CONN_LIMIT 4#define RADEON_BIOS_NUM_SCRATCH 8/* internal ring indices */
drivers/gpu/drm/radeon/radeon_display.c +1 -7
@@ -683,7 +683,7 @@ static void radeon_crtc_init(struct drm_device *dev, int index)struct radeon_device *rdev = dev->dev_private;struct radeon_crtc *radeon_crtc; - radeon_crtc =kzalloc (sizeof (struct radeon_crtc ) + (RADEONFB_CONN_LIMIT *sizeof (struct drm_connector *)),GFP_KERNEL ); + radeon_crtc =kzalloc (sizeof (*radeon_crtc),GFP_KERNEL );if (radeon_crtc ==NULL )return ;
@@ -709,12 +709,6 @@ static void radeon_crtc_init(struct drm_device *dev, int index) dev->mode_config.cursor_width = radeon_crtc->max_cursor_width; dev->mode_config.cursor_height = radeon_crtc->max_cursor_height; -#if 0 - radeon_crtc->mode_set.crtc = &radeon_crtc->base; - radeon_crtc->mode_set.connectors = (struct drm_connector **)(radeon_crtc +1 ); - radeon_crtc->mode_set.num_connectors =0 ; -#endif -if (rdev->is_atom_bios && (ASIC_IS_AVIVO (rdev) || radeon_r4xx_atom))radeon_atombios_init_crtc (dev, radeon_crtc);else
drivers/i2c/i2c-slave-testunit.c +4 -1
@@ -118,9 +118,12 @@ static int i2c_slave_testunit_slave_cb(struct i2c_client *client,queue_delayed_work (system_long_wq, &tu->worker,msecs_to_jiffies (10 * tu->regs[TU_REG_DELAY ])); } - fallthrough; +break ;case I2C_SLAVE_WRITE_REQUESTED : +if (test_bit (TU_FLAG_IN_PROCESS , &tu->flags)) +return -EBUSY ; +memset (tu->regs,0 ,TU_NUM_REGS ); tu->reg_idx =0 ;break ;
drivers/iio/accel/Kconfig +2 -0
@@ -325,6 +325,8 @@ config DMARD10 config FXLS8962AF tristate depends on I2C || !I2C # cannot be built-in for modular I2C + select IIO_BUFFER + select IIO_KFIFO_BUF config FXLS8962AF_I2C tristate "NXP FXLS8962AF/FXLS8964AF Accelerometer I2C Driver"
drivers/iio/adc/ad7266.c +2 -0
@@ -157,6 +157,8 @@ static int ad7266_read_raw(struct iio_dev *indio_dev, ret =ad7266_read_single (st, val, chan->address);iio_device_release_direct_mode (indio_dev); +if (ret <0 ) +return ret; *val = (*val >>2 ) &0xfff ;if (chan->scan_type.sign =='s' ) *val = sign_extend32(*val,
drivers/iio/adc/xilinx-ams.c +6 -2
@@ -414,8 +414,12 @@ static void ams_enable_channel_sequence(struct iio_dev *indio_dev)/* Run calibration of PS & PL as part of the sequence */ scan_mask =BIT (0 ) |BIT (AMS_PS_SEQ_MAX ); -for (i =0 ; i < indio_dev->num_channels; i++) - scan_mask |=BIT_ULL (indio_dev->channels[i].scan_index); +for (i =0 ; i < indio_dev->num_channels; i++) { +const struct iio_chan_spec *chan = &indio_dev->channels[i]; + +if (chan->scan_index <AMS_CTRL_SEQ_BASE ) + scan_mask |=BIT_ULL (chan->scan_index); + }if (ams->ps_base) {/* put sysmon in a soft reset to change the sequence */
drivers/iio/chemical/bme680.h +2 -0
@@ -54,7 +54,9 @@#define BME680_NB_CONV_MASK GENMASK(3, 0)#define BME680_REG_MEAS_STAT_0 0x1D +#define BME680_NEW_DATA_BIT BIT(7)#define BME680_GAS_MEAS_BIT BIT(6) +#define BME680_MEAS_BIT BIT(5)/* Calibration Parameters */ #define BME680_T2_LSB_REG 0x8A
drivers/iio/chemical/bme680_core.c +54 -8
125 lines not on this page · raw message
drivers/iio/pressure/bmp280-core.c +7 -7
@@ -920,7 +920,7 @@ static int bmp380_cmd(struct bmp280_data *data, u8 cmd) }/* -* Returns temperature in Celsius dregrees, resolution is 0.01º C. Output value of +* Returns temperature in Celsius degrees, resolution is 0.01º C. Output value of * "5123" equals 51.2º C. t_fine carries fine temperature as global value. * * Taken from datasheet, Section Appendix 9, "Compensation formula" and repo
@@ -1385,12 +1385,12 @@ static int bmp580_read_temp(struct bmp280_data *data, int *val, int *val2)/* * Temperature is returned in Celsius degrees in fractional -* form down 2^16. We reescale by x1000 to return milli Celsius -* to respect IIO ABI. +* form down 2^16. We rescale by x1000 to return millidegrees +* Celsius to respect IIO ABI. */ - *val = raw_temp *1000 ; - *val2 =16 ; -return IIO_VAL_FRACTIONAL_LOG2 ; + raw_temp =sign_extend32 (raw_temp,23 ); + *val = ((s64 )raw_temp *1000 ) / (1 <<16 ); +return IIO_VAL_INT ; }static int bmp580_read_press (struct bmp280_data *data,int *val,int *val2)
@@ -1412,7 +1412,7 @@ static int bmp580_read_press(struct bmp280_data *data, int *val, int *val2) }/* * Pressure is returned in Pascals in fractional form down 2^16. -* We reescale /1000 to convert to kilopascal to respect IIO ABI. +* We rescale /1000 to convert to kilopascal to respect IIO ABI. */ *val = raw_press; *val2 =64000 ;/* 2^6 * 1000 */
drivers/iio/pressure/bmp280.h +1 -1
@@ -410,7 +410,7 @@ struct bmp280_data {__le16 bmp280_cal_buf[BMP280_CONTIGUOUS_CALIB_REGS /2 ];__be16 bmp180_cal_buf[BMP180_REG_CALIB_COUNT /2 ];u8 bmp380_cal_buf[BMP380_CALIB_REG_COUNT ]; -/* Miscellaneous, endianess-aware data buffers */ +/* Miscellaneous, endianness-aware data buffers */ __le16 le16;__be16 be16; }__aligned(IIO_DMA_MINALIGN) ;
drivers/infiniband/core/restrack.c +1 -50
70 lines not on this page · raw message
drivers/input/touchscreen/ili210x.c +2 -2
@@ -261,8 +261,8 @@ static int ili251x_read_touch_data(struct i2c_client *client, u8 *data)if (!error && data[0 ] ==2 ) { error =i2c_master_recv (client, data +ILI251X_DATA_SIZE1 ,ILI251X_DATA_SIZE2 ); -if (error >=0 && error !=ILI251X_DATA_SIZE2 ) - error = -EIO ; +if (error >=0 ) + error = error ==ILI251X_DATA_SIZE2 ?0 : -EIO ; }return error;
drivers/irqchip/Kconfig +1 -1
@@ -557,7 +557,7 @@ config IRQ_LOONGARCH_CPU bool select GENERIC_IRQ_CHIP select IRQ_DOMAIN - select GENERIC_IRQ_EFFECTIVE_AFF_MASK + select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP select LOONGSON_HTVEC select LOONGSON_LIOINTC select LOONGSON_EIOINTC
drivers/irqchip/irq-loongson-eiointc.c +3 -2
@@ -15,6 +15,7 @@#include <linux/irqchip/chained_irq.h> #include <linux/kernel.h> #include <linux/syscore_ops.h> +#include <asm/numa.h> #define EIOINTC_REG_NODEMAP 0x14a0#define EIOINTC_REG_IPMAP 0x14c0
@@ -349,7 +350,7 @@ static int __init pch_msi_parse_madt(union acpi_subtable_headers *header,int node;if (cpu_has_flatmode) - node =cpu_to_node (eiointc_priv[nr_pics -1 ]->node *CORES_PER_EIO_NODE ); + node =early_cpu_to_node (eiointc_priv[nr_pics -1 ]->node *CORES_PER_EIO_NODE );else node = eiointc_priv[nr_pics -1 ]->node;
@@ -441,7 +442,7 @@ int __init eiointc_acpi_init(struct irq_domain *parent, goto out_free_handle;if (cpu_has_flatmode) - node =cpu_to_node (acpi_eiointc->node *CORES_PER_EIO_NODE ); + node =early_cpu_to_node (acpi_eiointc->node *CORES_PER_EIO_NODE );else node = acpi_eiointc->node;acpi_set_vec_parent (node, priv->eiointc_domain, pch_group);
drivers/irqchip/irq-loongson-liointc.c +2 -2
@@ -28,7 +28,7 @@#define LIOINTC_INTC_CHIP_START 0x20 -#define LIOINTC_REG_INTC_STATUS (LIOINTC_INTC_CHIP_START + 0x20) +#define LIOINTC_REG_INTC_STATUS (core) (LIOINTC_INTC_CHIP_START + 0x20 + (core) * 8)#define LIOINTC_REG_INTC_EN_STATUS (LIOINTC_INTC_CHIP_START + 0x04)#define LIOINTC_REG_INTC_ENABLE (LIOINTC_INTC_CHIP_START + 0x08)#define LIOINTC_REG_INTC_DISABLE (LIOINTC_INTC_CHIP_START + 0x0c)
@@ -217,7 +217,7 @@ static int liointc_init(phys_addr_t addr, unsigned long size, int revision, goto out_free_priv;for (i =0 ; i <LIOINTC_NUM_CORES ; i++) - priv->core_isr[i] = base +LIOINTC_REG_INTC_STATUS ; + priv->core_isr[i] = base +LIOINTC_REG_INTC_STATUS (i);for (i =0 ; i <LIOINTC_NUM_PARENT ; i++) priv->handler[i].parent_int_map = parent_int_map[i];
drivers/media/dvb-core/dvbdev.c +1 -1
@@ -956,7 +956,7 @@ int dvb_usercopy(struct file *file,int (*func)(struct file *file, unsigned int cmd, void *arg)) { -char sbuf[128 ]; +char sbuf[128 ] = {};void *mbuf =NULL ;void *parg =NULL ;int err = -EINVAL ;
drivers/mmc/host/sdhci-brcmstb.c +4 -0
@@ -23,6 +23,7 @@#define BRCMSTB_MATCH_FLAGS_NO_64BIT BIT(0)#define BRCMSTB_MATCH_FLAGS_BROKEN_TIMEOUT BIT(1)#define BRCMSTB_MATCH_FLAGS_HAS_CLOCK_GATE BIT(2) +#define BRCMSTB_MATCH_FLAGS_USE_CARD_BUSY BIT(4)#define BRCMSTB_PRIV_FLAGS_HAS_CQE BIT(0)#define BRCMSTB_PRIV_FLAGS_GATE_CLOCK BIT(1)
@@ -325,6 +326,9 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)if (match_priv->flags &BRCMSTB_MATCH_FLAGS_BROKEN_TIMEOUT ) host->quirks |=SDHCI_QUIRK_BROKEN_TIMEOUT_VAL ; +if (!(match_priv->flags &BRCMSTB_MATCH_FLAGS_USE_CARD_BUSY )) + host->mmc_host_ops.card_busy =NULL ; +/* Change the base clock frequency if the DT property exists */ if (device_property_read_u32 (&pdev->dev,"clock-frequency" , &priv->base_freq_hz) !=0 )
drivers/mmc/host/sdhci-pci-core.c +7 -4
@@ -1325,7 +1325,7 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on) ret =pci_read_config_byte (chip->pdev,0xAE , &scratch);if (ret) -return ret; + goto fail;/* * Turn PMOS on [bit 0], set over current detection to 2.4 V
@@ -1336,7 +1336,10 @@ static int jmicron_pmos(struct sdhci_pci_chip *chip, int on)else scratch &= ~0x47 ; -return pci_write_config_byte (chip->pdev,0xAE , scratch); + ret =pci_write_config_byte (chip->pdev,0xAE , scratch); + +fail: +return pcibios_err_to_errno (ret); }static int jmicron_probe (struct sdhci_pci_chip *chip)
@@ -2201,7 +2204,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, ret =pci_read_config_byte (pdev,PCI_SLOT_INFO , &slots);if (ret) -return ret; +return pcibios_err_to_errno (ret); slots =PCI_SLOT_INFO_SLOTS (slots) +1 ;dev_dbg (&pdev->dev,"found %d slot(s)\n" , slots);
@@ -2210,7 +2213,7 @@ static int sdhci_pci_probe(struct pci_dev *pdev, ret =pci_read_config_byte (pdev,PCI_SLOT_INFO , &first_bar);if (ret) -return ret; +return pcibios_err_to_errno (ret); first_bar &=PCI_SLOT_INFO_FIRST_BAR_MASK ;
drivers/mmc/host/sdhci-pci-o2micro.c +22 -19
161 lines not on this page · raw message
drivers/mmc/host/sdhci.c +14 -11
@@ -2515,26 +2515,29 @@ EXPORT_SYMBOL_GPL(sdhci_get_cd_nogpio);static int sdhci_check_ro (struct sdhci_host *host) { -unsigned long flags; +bool allow_invert = false;int is_readonly; -spin_lock_irqsave (&host->lock, flags); - -if (host->flags &SDHCI_DEVICE_DEAD ) +if (host->flags &SDHCI_DEVICE_DEAD ) { is_readonly =0 ; -else if (host->ops->get_ro) + }else if (host->ops->get_ro) { is_readonly = host->ops->get_ro (host); -else if (mmc_can_gpio_ro (host->mmc)) + }else if (mmc_can_gpio_ro (host->mmc)) { is_readonly =mmc_gpio_get_ro (host->mmc); -else +/* Do not invert twice */ + allow_invert = !(host->mmc->caps2 &MMC_CAP2_RO_ACTIVE_HIGH ); + }else { is_readonly = !(sdhci_readl (host,SDHCI_PRESENT_STATE ) &SDHCI_WRITE_PROTECT ); + allow_invert = true; + } -spin_unlock_irqrestore (&host->lock, flags); +if (is_readonly >=0 && + allow_invert && + (host->quirks &SDHCI_QUIRK_INVERTED_WRITE_PROTECT )) + is_readonly = !is_readonly; -/* This quirk needs to be replaced by a callback-function later */ -return host->quirks &SDHCI_QUIRK_INVERTED_WRITE_PROTECT ? - !is_readonly : is_readonly; +return is_readonly; }#define SAMPLE_COUNT 5
drivers/mtd/parsers/redboot.c +1 -1
@@ -102,7 +102,7 @@ static int parse_redboot_partitions(struct mtd_info *master, offset -= master->erasesize; } }else { - offset = directory * master->erasesize; + offset = (unsigned long ) directory * master->erasesize;while (mtd_block_isbad (master, offset)) { offset += master->erasesize;if (offset == master->size)
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +13 -1
@@ -1618,11 +1618,20 @@ static int mcp251xfd_open(struct net_device *ndev)clear_bit (MCP251XFD_FLAGS_DOWN , priv->flags);can_rx_offload_enable (&priv->offload); + priv->wq =alloc_ordered_workqueue ("%s-mcp251xfd_wq" , +WQ_FREEZABLE |WQ_MEM_RECLAIM , +dev_name (&spi->dev)); +if (!priv->wq) { + err = -ENOMEM ; + goto out_can_rx_offload_disable; + } +INIT_WORK (&priv->tx_work, mcp251xfd_tx_obj_write_sync); + err =request_threaded_irq (spi->irq,NULL , mcp251xfd_irq,IRQF_SHARED |IRQF_ONESHOT ,dev_name (&spi->dev), priv);if (err) - goto out_can_rx_offload_disable; + goto out_destroy_workqueue; err =mcp251xfd_chip_interrupts_enable (priv);if (err)
@@ -1634,6 +1643,8 @@ static int mcp251xfd_open(struct net_device *ndev) out_free_irq:free_irq (spi->irq, priv); + out_destroy_workqueue: +destroy_workqueue (priv->wq); out_can_rx_offload_disable:can_rx_offload_disable (&priv->offload);set_bit (MCP251XFD_FLAGS_DOWN , priv->flags);
@@ -1661,6 +1672,7 @@ static int mcp251xfd_stop(struct net_device *ndev)hrtimer_cancel (&priv->tx_irq_timer);mcp251xfd_chip_interrupts_disable (priv);free_irq (ndev->irq, priv); +destroy_workqueue (priv->wq);can_rx_offload_disable (&priv->offload);mcp251xfd_timestamp_stop (priv);mcp251xfd_chip_stop (priv,CAN_STATE_STOPPED );
drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c +47 -8
79 lines not on this page · raw message
drivers/net/can/spi/mcp251xfd/mcp251xfd.h +5 -0
@@ -633,6 +633,10 @@ struct mcp251xfd_priv {struct mcp251xfd_rx_ring *rx[MCP251XFD_FIFO_RX_NUM ];struct mcp251xfd_tx_ring tx[MCP251XFD_FIFO_TX_NUM ]; +struct workqueue_struct *wq; +struct work_struct tx_work; +struct mcp251xfd_tx_obj *tx_work_obj; +DECLARE_BITMAP (flags, __MCP251XFD_FLAGS_SIZE__);u8 rx_ring_num;
@@ -952,6 +956,7 @@ void mcp251xfd_skb_set_timestamp(const struct mcp251xfd_priv *priv,void mcp251xfd_timestamp_init (struct mcp251xfd_priv *priv);void mcp251xfd_timestamp_stop (struct mcp251xfd_priv *priv); +void mcp251xfd_tx_obj_write_sync (struct work_struct *work);netdev_tx_t mcp251xfd_start_xmit (struct sk_buff *skb,struct net_device *ndev);
drivers/net/dsa/microchip/ksz9477.c +6 -4
@@ -174,10 +174,8 @@ int ksz9477_reset_switch(struct ksz_device *dev) SPI_AUTO_EDGE_DETECTION, 0);/* default configuration */ -ksz_read8 (dev,REG_SW_LUE_CTRL_1 , &data8); - data8 =SW_AGING_ENABLE |SW_LINK_AUTO_AGING | -SW_SRC_ADDR_FILTER |SW_FLUSH_STP_TABLE |SW_FLUSH_MSTP_TABLE ; -ksz_write8 (dev,REG_SW_LUE_CTRL_1 , data8); +ksz_write8 (dev,REG_SW_LUE_CTRL_1 , +SW_AGING_ENABLE |SW_LINK_AUTO_AGING |SW_SRC_ADDR_FILTER );/* disable interrupts */ ksz_write32 (dev,REG_SW_INT_MASK__4 ,SWITCH_INT_MASK );
@@ -1114,6 +1112,10 @@ int ksz9477_setup(struct dsa_switch *ds)/* Enable REG_SW_MTU__2 reg by setting SW_JUMBO_PACKET */ ksz_cfg (dev,REG_SW_MAC_CTRL_1 ,SW_JUMBO_PACKET , true); +/* Use collision based back pressure mode. */ +ksz_cfg (dev,REG_SW_MAC_CTRL_1 ,SW_BACK_PRESSURE , +SW_BACK_PRESSURE_COLLISION ); +/* Now we can configure default MTU value */ ret =regmap_update_bits (ksz_regmap_16 (dev),REG_SW_MTU__2 ,REG_SW_MTU_MASK ,VLAN_ETH_FRAME_LEN +ETH_FCS_LEN );
drivers/net/dsa/microchip/ksz9477_reg.h +1 -0
@@ -267,6 +267,7 @@#define REG_SW_MAC_CTRL_1 0x0331#define SW_BACK_PRESSURE BIT(5) +#define SW_BACK_PRESSURE_COLLISION 0#define FAIR_FLOW_CTRL BIT(4)#define NO_EXC_COLLISION_DROP BIT(3)#define SW_JUMBO_PACKET BIT(2)
drivers/net/dsa/microchip/ksz_common.c +1 -1
@@ -1973,7 +1973,7 @@ static void ksz_irq_bus_sync_unlock(struct irq_data *d)struct ksz_device *dev = kirq->dev;int ret; - ret =ksz_write32 (dev, kirq->reg_mask, kirq->masked); + ret =ksz_write8 (dev, kirq->reg_mask, kirq->masked);if (ret)dev_err (dev->dev,"failed to change IRQ mask\n" );
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +9 -5
@@ -2896,11 +2896,14 @@ static int dpaa2_eth_xdp_xmit(struct net_device *net_dev, int n,static int update_xps (struct dpaa2_eth_priv *priv) {struct net_device *net_dev = priv->net_dev; -struct cpumask xps_mask; -struct dpaa2_eth_fq *fq;int i, num_queues, netdev_queues; +struct dpaa2_eth_fq *fq; +cpumask_var_t xps_mask;int err =0 ; +if (!alloc_cpumask_var (&xps_mask,GFP_KERNEL )) +return -ENOMEM ; + num_queues =dpaa2_eth_queue_count (priv); netdev_queues = (net_dev->num_tc ? :1 ) * num_queues;
@@ -2910,16 +2913,17 @@ static int update_xps(struct dpaa2_eth_priv *priv)for (i =0 ; i < netdev_queues; i++) { fq = &priv->fq[i % num_queues]; -cpumask_clear (&xps_mask); -cpumask_set_cpu (fq->target_cpu, &xps_mask); +cpumask_clear (xps_mask); +cpumask_set_cpu (fq->target_cpu, xps_mask); - err =netif_set_xps_queue (net_dev, &xps_mask, i); + err =netif_set_xps_queue (net_dev, xps_mask, i);if (err) {netdev_warn_once (net_dev,"Error setting XPS queue\n" );break ; } } +free_cpumask_var (xps_mask);return err; }
drivers/net/ethernet/ibm/ibmvnic.c +6 -0
@@ -4057,6 +4057,12 @@ static void release_sub_crqs(struct ibmvnic_adapter *adapter, bool do_h_free) adapter->num_active_tx_scrqs =0 ; } +/* Clean any remaining outstanding SKBs +* we freed the irq so we won't be hearing +* from them +*/ +clean_tx_pools (adapter); +if (adapter->rx_scrq) {for (i =0 ; i < adapter->num_active_rx_scrqs; i++) {if (!adapter->rx_scrq[i])
drivers/net/ethernet/intel/ice/ice_main.c +9 -1
@@ -3958,7 +3958,7 @@ bool ice_is_wol_supported(struct ice_hw *hw)int ice_vsi_recfg_qs (struct ice_vsi *vsi,int new_rx,int new_tx,bool locked) {struct ice_pf *pf = vsi->back; -int err =0 , timeout =50 ; +int i, err =0 , timeout =50 ;if (!new_rx && !new_tx)return -EINVAL ;
@@ -3984,6 +3984,14 @@ int ice_vsi_recfg_qs(struct ice_vsi *vsi, int new_rx, int new_tx, bool locked)ice_vsi_close (vsi);ice_vsi_rebuild (vsi,ICE_VSI_FLAG_NO_INIT ); + +ice_for_each_traffic_class (i) { +if (vsi->tc_cfg.ena_tc &BIT (i)) +netdev_set_tc_queue (vsi->netdev, + vsi->tc_cfg.tc_info[i].netdev_tc, + vsi->tc_cfg.tc_info[i].qcount_tx, + vsi->tc_cfg.tc_info[i].qoffset); + }ice_pf_dcb_recfg (pf, locked);ice_vsi_open (vsi); done:
drivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c +14 -6
@@ -1607,8 +1607,8 @@ static void mlxsw_sp_sb_sr_occ_query_cb(struct mlxsw_core *mlxsw_core,int mlxsw_sp_sb_occ_snapshot (struct mlxsw_core *mlxsw_core,unsigned int sb_index) { +u16 local_port, local_port_1, first_local_port, last_local_port;struct mlxsw_sp *mlxsw_sp =mlxsw_core_driver_priv (mlxsw_core); -u16 local_port, local_port_1, last_local_port;struct mlxsw_sp_sb_sr_occ_query_cb_ctx cb_ctx;u8 masked_count, current_page =0 ;unsigned long cb_priv =0 ;
@@ -1628,6 +1628,7 @@ int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core, masked_count =0 ;mlxsw_reg_sbsr_pack (sbsr_pl, false);mlxsw_reg_sbsr_port_page_set (sbsr_pl, current_page); + first_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE ; last_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE -1 ;
@@ -1645,9 +1646,12 @@ int mlxsw_sp_sb_occ_snapshot(struct mlxsw_core *mlxsw_core,if (local_port !=MLXSW_PORT_CPU_PORT ) {/* Ingress quotas are not supported for the CPU port */ mlxsw_reg_sbsr_ingress_port_mask_set (sbsr_pl, - local_port,1 ); + local_port - first_local_port, +1 ); } -mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, local_port,1 ); +mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, + local_port - first_local_port, +1 );for (i =0 ; i < mlxsw_sp->sb_vals->pool_count; i++) { err =mlxsw_sp_sb_pm_occ_query (mlxsw_sp, local_port, i, &bulk_list);
@@ -1684,7 +1688,7 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, unsigned int sb_index) {struct mlxsw_sp *mlxsw_sp =mlxsw_core_driver_priv (mlxsw_core); -u16 local_port, last_local_port; +u16 local_port, first_local_port, last_local_port;LIST_HEAD (bulk_list);unsigned int masked_count;u8 current_page =0 ;
@@ -1702,6 +1706,7 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core, masked_count =0 ;mlxsw_reg_sbsr_pack (sbsr_pl, true);mlxsw_reg_sbsr_port_page_set (sbsr_pl, current_page); + first_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE ; last_local_port = current_page *MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE +MLXSW_REG_SBSR_NUM_PORTS_IN_PAGE -1 ;
@@ -1719,9 +1724,12 @@ int mlxsw_sp_sb_occ_max_clear(struct mlxsw_core *mlxsw_core,if (local_port !=MLXSW_PORT_CPU_PORT ) {/* Ingress quotas are not supported for the CPU port */ mlxsw_reg_sbsr_ingress_port_mask_set (sbsr_pl, - local_port,1 ); + local_port - first_local_port, +1 ); } -mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, local_port,1 ); +mlxsw_reg_sbsr_egress_port_mask_set (sbsr_pl, + local_port - first_local_port, +1 );for (i =0 ; i < mlxsw_sp->sb_vals->pool_count; i++) { err =mlxsw_sp_sb_pm_occ_clear (mlxsw_sp, local_port, i, &bulk_list);
drivers/net/ethernet/microsoft/mana/mana_en.c +2 -0
@@ -2752,6 +2752,8 @@ static int add_adev(struct gdma_dev *gd)if (ret) goto init_fail; +/* madev is owned by the auxiliary device */ + madev =NULL ; ret =auxiliary_device_add (adev);if (ret) goto add_fail;
drivers/net/phy/micrel.c +1 -0
@@ -5030,6 +5030,7 @@ static struct mdio_device_id __maybe_unused micrel_tbl[] = { { PHY_ID_KSZ8081, MICREL_PHY_ID_MASK }, { PHY_ID_KSZ8873MLL, MICREL_PHY_ID_MASK }, { PHY_ID_KSZ886X, MICREL_PHY_ID_MASK }, + { PHY_ID_KSZ9477, MICREL_PHY_ID_MASK }, { PHY_ID_LAN8814, MICREL_PHY_ID_MASK }, { PHY_ID_LAN8804, MICREL_PHY_ID_MASK }, { PHY_ID_LAN8841, MICREL_PHY_ID_MASK },
drivers/net/usb/ax88179_178a.c +5 -1
@@ -326,7 +326,8 @@ static void ax88179_status(struct usbnet *dev, struct urb *urb)if (netif_carrier_ok (dev->net) != link) {usbnet_link_change (dev, link,1 ); -netdev_info (dev->net,"ax88179 - Link status is: %d\n" , link); +if (!link) +netdev_info (dev->net,"ax88179 - Link status is: 0\n" ); } }
@@ -1540,6 +1541,7 @@ static int ax88179_link_reset(struct usbnet *dev) GMII_PHY_PHYSR, 2, &tmp16);if (!(tmp16 &GMII_PHY_PHYSR_LINK )) { +netdev_info (dev->net,"ax88179 - Link status is: 0\n" );return 0 ; }else if (GMII_PHY_PHYSR_GIGA == (tmp16 &GMII_PHY_PHYSR_SMASK )) { mode |=AX_MEDIUM_GIGAMODE |AX_MEDIUM_EN_125MHZ ;
@@ -1577,6 +1579,8 @@ static int ax88179_link_reset(struct usbnet *dev)netif_carrier_on (dev->net); +netdev_info (dev->net,"ax88179 - Link status is: 1\n" ); +return 0 ; }
drivers/pci/msi/msi.c +8 -2
@@ -348,7 +348,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, struct irq_affinity *affd) {struct irq_affinity_desc *masks =NULL ; -struct msi_desc *entry; +struct msi_desc *entry, desc;int ret;/* Reject multi-MSI early on irq domain enabled architectures */
@@ -373,6 +373,12 @@ static int msi_capability_init(struct pci_dev *dev, int nvec,/* All MSIs are unmasked by default; mask them all */ entry =msi_first_desc (&dev->dev,MSI_DESC_ALL );pci_msi_mask (entry,msi_multi_mask (entry)); +/* +* Copy the MSI descriptor for the error path because +* pci_msi_setup_msi_irqs() will free it for the hierarchical +* interrupt domain case. +*/ +memcpy (&desc, entry,sizeof (desc));/* Configure MSI capability structure */ ret =pci_msi_setup_msi_irqs (dev, nvec,PCI_CAP_ID_MSI );
@@ -392,7 +398,7 @@ static int msi_capability_init(struct pci_dev *dev, int nvec, goto unlock; err: -pci_msi_unmask (entry,msi_multi_mask (entry)); +pci_msi_unmask (&desc,msi_multi_mask (&desc));pci_free_msi_irqs (dev); fail: dev->msi_enabled =0 ;
drivers/pinctrl/core.c +1 -1
@@ -1098,8 +1098,8 @@ static struct pinctrl *create_pinctrl(struct device *dev,* an -EPROBE_DEFER later, as that is the worst case. */ if (ret == -EPROBE_DEFER ) { -pinctrl_free (p, false);mutex_unlock (&pinctrl_maps_mutex); +pinctrl_free (p, false);return ERR_PTR (ret); } }
drivers/pinctrl/pinctrl-rockchip.c +59 -9
122 lines not on this page · raw message
drivers/pinctrl/pinctrl-rockchip.h +1 -0
@@ -193,6 +193,7 @@ enum rockchip_pinctrl_type {RK3188 ,RK3288 ,RK3308 , +RK3328 ,RK3368 , RK3399,
Lines of this file are not shown. View the raw message.
drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/f_printer.c +30 -10
Lines of this file are not shown. View the raw message.
drivers/usb/typec/ucsi/ucsi.c +27 -28
55 lines not on this page · raw message
fs/btrfs/tree-log.c +28 -15
43 lines not on this page · raw message
net/ipv4/tcp_input.c +33 -12
45 lines not on this page · raw message
sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c +5 -5
Lines of this file are not shown. View the raw message.
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +20 -12
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/userspace_pm.sh +28 -22
50 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.