Skip to contentSkip to conversation

Linux 6.6.37

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jul 5, 2024 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'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

author maintainer
#1 lore raw
Documentation/kbuild/modules.rst +4 -4
index a1f3eb7a43e2..131863142cbb 100644
@@ -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
index b7d5f2f0def0..8a73b886156a 100644
@@ -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
index de9915d946f7..b98d5e357baf 100644
@@ -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
index 6a1c9fca5260..ac8e4d9bf954 100644
@@ -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
index e9810d2f0407..4f6541262ab8 100644
@@ -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
index 018a3a5075c7..d9905a08c6ce 100644
@@ -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
index a4c5aaf1f457..cac58ad951b2 100644
@@ -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
index 789fd0dcc88b..3cd63d1e8f15 100644
@@ -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
index 8347adcbd003..68763714f7f7 100644
@@ -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
index 78b68311ec81..545a4a7b5371 100644
@@ -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
index 9a70d9746b66..f090e39f69bc 100644
@@ -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
index 7ff6a2466af1..e0594b6370a6 100644
@@ -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
new file mode 100644
index 000000000000..40f2d08bec92
@@ -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
index 432c4db1b623..21ae22306b5d 100644
@@ -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
index 0fadd582cfc7..5d98bdc494ec 100644
@@ -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
index 9eb7753d117d..13cd480385ca 100644
@@ -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
index 152034b8e0a0..4a296124604a 100644
@@ -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
index 1a646813afdc..37bbc8d9a94c 100644
@@ -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
index a40d926b6513..e355dfca4400 100644
@@ -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
index 4adeb73d5885..722e83edad28 100644
@@ -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
index 2a12a547b447..826c8e51b585 100644
@@ -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
index e97c175b56f9..73f560e30957 100644
@@ -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
index d6ee2fd45550..979f45d4d1fb 100644
@@ -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
index 20e50586e8a2..40f6751271d3 100644
@@ -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
index 72b7bb34fade..cdea5dccaefe 100644
@@ -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
index 06f886850a93..dd61aa4325d9 100644
@@ -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
index 2239ce5e8501..884eef1b3973 100644
@@ -240,7 +240,7 @@ static int bpf_jit_emit_func_call_hlp(u32 *image, struct codegen_context *ctx, u
 	return 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
index 06e439eeef9a..09fde95a5e8f 100644
@@ -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
index 528ec7cc9a62..0d3f00eb0bae 100644
@@ -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
index fdd319a622b0..622cd08e5f50 100644
@@ -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
index 0122cc156952..51cc3616d5f9 100644
@@ -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
index 62ee557d4b49..05746e22fe79 100644
@@ -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
index ff8f24854c64..0ef83b6ac0db 100644
@@ -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
index 9dca568509a5..d6f4afcb0e87 100644
@@ -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
index e90d585c4d3e..7e1ceb2ba572 100644
@@ -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
index 4ed06c71c43f..d0f535230ad8 100644
@@ -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
index fa0759bfe498..73bf0aea8baf 100644
@@ -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
index 2d0b1bd866ea..38db5ef2329f 100644
@@ -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
index 7e523bb3d2d3..fb2809b20b0a 100644
@@ -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
index a21a4d0ecc34..4b414b0ab069 100644
@@ -145,8 +145,8 @@ void restore_fpregs_from_fpstate(struct fpstate *fpstate, u64 mask)
 		asm volatile(
 			"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
index e42faa792c07..52e1f3f0b361 100644
@@ -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
index 429a89c5468b..f2fc8c38629b 100644
@@ -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
index 80afee3234fb..3049f147e011 100644
@@ -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
index 535de3ed60f2..0a6aea36cd97 100644
@@ -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
index a492f23faa87..373d23af1d9a 100644
@@ -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
index b0f24cf3e891..4d3de4a35801 100644
@@ -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
index a5f4c255edad..3efc2aef31ce 100644
@@ -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
index 586a58d761bb..0ee3a04bb102 100644
@@ -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
index 8e5f3d84311e..6444cc827c9c 100644
@@ -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
index 90664659d5fa..3600b7cbfb58 100644
@@ -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
index de2c250c894b..bb3ad219b6b3 100644
@@ -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
index 6933bc20e76b..59c7f88b915a 100644
@@ -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
index 8db5717bdabe..aa3ce8aa99dc 100644
@@ -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
index b4b71e68b90d..d526a4c91e82 100644
@@ -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
index 23651a9738cc..6521d06c7e4e 100644
@@ -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
index 062d78818da1..e1227b7c71b1 100644
@@ -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
index db6fc0cb18eb..f417c3393a09 100644
@@ -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
index db87aa7b5c90..9a0beaf601f8 100644
@@ -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
index 914f28e9f224..aee5170f5fb2 100644
@@ -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
index d612133e2cf7..117237d3528b 100644
@@ -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
index 6c9427bb4053..13cd754af311 100644
@@ -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
index a7799086017a..639fa6bef69b 100644
@@ -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
index 40371b8a9bbb..93bc1cc1ee7e 100644
@@ -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
index 670c9739e5e1..2033214c4b78 100644
@@ -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
index 7838947a1bf3..bb201f848ae9 100644
@@ -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
index e8d12ec8dbec..11ade6bac592 100644
@@ -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
index 3d3d2109dfeb..426a49851e34 100644
@@ -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
index efd18c8d84c8..5f1d24d3120c 100644
@@ -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
index a49642bbae4b..ca43e98cae1b 100644
@@ -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
index 5c5876b4d3b6..0398974c9d2b 100644
@@ -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
index 468c2656d2be..98648c679a55 100644
@@ -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
index f0b71a1220e0..f52abf759260 100644
@@ -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
index 4edc5d21cb9f..f959252a4fe6 100644
@@ -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
index a2ef1373a274..a65630d5742f 100644
@@ -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
index 5c0563ce7572..9d9f4ce2baa6 100644
@@ -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
index ad6828e4f2e2..ae7ba0c419f5 100644
@@ -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
index f7149d0f3d45..e7b736800dd0 100644
@@ -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
index b3736bdd4b9f..08e95fad5b12 100644
@@ -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
index e4b33aed1c97..7c4fe7ab4b83 100644
@@ -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
index 733d0bc4b4cc..b43695bc51e7 100644
@@ -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
index c23251bb95f3..25664cd5e90f 100644
@@ -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
index 7c14feb5db77..7039af2680ff 100644
@@ -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
index 8ad5f49a4ce9..9796a3cb3ca6 100644
@@ -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
index a16b42a88581..3b55b676ca6b 100644
@@ -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
index eebf967f4711..1665f78abb5c 100644
@@ -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
index 24510b3b8020..b35bfebd23f2 100644
@@ -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
index 83b7f2d5c1ea..a7e8fcdf2576 100644
@@ -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
index cba3dba58bc3..a2ef4b18349c 100644
@@ -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
index 3c2a2b5290e5..1c3f18649998 100644
@@ -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
index 888509cf1f21..40e881829595 100644
@@ -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
index cdf5251e5679..ca21e55335b2 100644
@@ -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
index 26ef8aec4cfd..600a2f537087 100644
@@ -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
index c9f1c79f3f9d..ba090262e27e 100644
@@ -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
index e443d69e3951..a09001d22b49 100644
@@ -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
index 366ae2253437..029c82f88ee3 100644
@@ -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
index 53f6efc22f5c..73de34179f35 100644
@@ -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
index ef1d8857a51b..2d117cb74832 100644
@@ -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
index 9e7b3e6c79cb..e19ee66e027b 100644
@@ -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
index 4759f336941e..849266f8b191 100644
@@ -193,6 +193,7 @@ enum rockchip_pinctrl_type {
 	RK3188,
 	RK3288,
 	RK3308,
+	RK3328,
 	RK3368,
 	RK3399,
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/pinctrl/qcom/pinctrl-spmi-gpio.c +0 -1
index deded9c6fd7d..5817c52cee6b 100644

Lines of this file are not shown. View the raw message.

drivers/pwm/pwm-stm32.c +3 -0
index dd2ee5d9ca06..9bdab6c24fba 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/libsas/sas_ata.c +3 -3
index 12e2653846e3..70891a1e98a0 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/libsas/sas_discover.c +1 -1
index ff7b63b10aeb..8afd8ce259e2 100644

Lines of this file are not shown. View the raw message.

drivers/soc/ti/wkup_m3_ipc.c +2 -5
index 3aff106fc11a..9a2293298423 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/8250/8250_omap.c +19 -3
index 346167afe9e1..8f472a2080ff 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/bcm63xx_uart.c +5 -2
index 0dd8cceb837c..44c27e5cefbc 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/imx.c +8 -2
index a1476e47c6aa..285e0e1144c4 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/mcf.c +1 -1
index 1666ce012e5e..aea29b4e6567 100644

Lines of this file are not shown. View the raw message.

drivers/usb/atm/cxacru.c +14 -0
index 4ce7cba2b48a..8f3b9a0a38e1 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/core.c +19 -7
index 1f66578c671e..674467b7638e 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/core.h +1 -0
index 69b734a7bae1..07b062c2f647 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/function/f_printer.c +30 -10
index ba7d180cc9e6..44e20c6c36d3 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/aspeed_udc.c +2 -2
index 2ef89a442f50..fc2ead0fe621 100644

Lines of this file are not shown. View the raw message.

drivers/usb/musb/da8xx.c +6 -2
index 912e32b78ac6..a8d7224838cf 100644

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

drivers/usb/typec/ucsi/ucsi_glink.c +4 -1
index ee239a6b8f61..7625e28e12a8 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/ucsi/ucsi_stm32g0.c +15 -4
index 93d7806681cf..1d7ee833eb4f 100644

Lines of this file are not shown. View the raw message.

drivers/vdpa/vdpa_user/vduse_dev.c +10 -4
index df7869537ef1..d7bda179ef79 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/free-space-cache.c +1 -1
index 8dd8ef760321..dcfc0425115e 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/tree-log.c +28 -15

43 lines not on this page · raw message

fs/erofs/data.c +3 -2
index a75c89a9a3d0..19ab9bb3a9a0 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/log.c +2 -1
index 88bc9b1b2265..767549066066 100644

Lines of this file are not shown. View the raw message.

fs/gfs2/super.c +4 -0
index 2e1d1eca4d14..8b34c6cf9293 100644

Lines of this file are not shown. View the raw message.

fs/nfs/direct.c +0 -2
index b6f801e73bfd..258521d5125e 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/aops.c +5 -0
index 6ab03494fc6e..29361634ce57 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/journal.c +17 -0
index 34ac783ec7b7..400aec9126c6 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/journal.h +2 -0
index 41c9fe7e62f9..e3c3a35dc5e0 100644

Lines of this file are not shown. View the raw message.

fs/ocfs2/ocfs2_trace.h +2 -0
index ac4fd1d5b128..6c3f4d7df7d6 100644

Lines of this file are not shown. View the raw message.

fs/open.c +2 -2
index 54723fceb776..59db720693f9 100644

Lines of this file are not shown. View the raw message.

include/linux/compat.h +1 -1
index 1cfa4f0f490a..5981d3eadaee 100644

Lines of this file are not shown. View the raw message.

include/linux/filter.h +6 -4
index 5090e940ba3e..a74d97114a54 100644

Lines of this file are not shown. View the raw message.

include/linux/ieee80211.h +11 -4
index aaaa5b90bfe2..5f1e5a16d7b2 100644

Lines of this file are not shown. View the raw message.

include/linux/libata.h +1 -0
index e20bbcf594bf..91c4e11cb6ab 100644

Lines of this file are not shown. View the raw message.

include/linux/mmzone.h +4 -5
index 1acbc6ce1fe4..e46fbca00309 100644

Lines of this file are not shown. View the raw message.

include/linux/nvme.h +2 -2
index 26dd3f859d9d..b61038de139e 100644

Lines of this file are not shown. View the raw message.

include/linux/serial_core.h +19 -2
index 5da5eb719f61..052df85dfd59 100644

Lines of this file are not shown. View the raw message.

include/linux/syscalls.h +7 -1
index bbbd6fac3aff..36c592e43d65 100644

Lines of this file are not shown. View the raw message.

include/linux/workqueue.h +1 -1
index 24b1e5070f4d..52c6dd6d80ac 100644

Lines of this file are not shown. View the raw message.

include/net/inet_connection_sock.h +1 -1
index 6ecac01115d9..fee1e5650551 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_tables.h +5 -0
index 5bb8a83e2604..8af2543520b9 100644

Lines of this file are not shown. View the raw message.

include/trace/events/qdisc.h +2 -2
index 1f4258308b96..061fd4960303 100644

Lines of this file are not shown. View the raw message.

include/uapi/asm-generic/unistd.h +1 -1
index abe087c53b4b..05c412c58239 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/core.c +5 -1
index 05445a4d5518..77a9b12e00af 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/ringbuf.c +25 -6
index f045fde632e5..238d9b206bbd 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/verifier.c +8 -2
index ec0464c075bb..aa546355918c 100644

Lines of this file are not shown. View the raw message.

kernel/cpu.c +4 -4
index 4f453226fcf4..7ef4bc17453c 100644

Lines of this file are not shown. View the raw message.

kernel/sys_ni.c +1 -1
index 11c55593a2e9..e8e117787377 100644

Lines of this file are not shown. View the raw message.

mm/page_alloc.c +7 -2
index 6b4c30fcae1c..e99d3223f0fc 100644

Lines of this file are not shown. View the raw message.

mm/vmalloc.c +15 -6
index 01818b1c37e8..7d146f198bc3 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/originator.c +27 -0
index dafef3a78ad5..7388d2ad7b5d 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/main.c +1 -5
index a6fb89fa6278..7e8a20f2fc42 100644

Lines of this file are not shown. View the raw message.

net/can/j1939/transport.c +19 -2
index fe3df23a2595..4be73de5033c 100644

Lines of this file are not shown. View the raw message.

net/core/xdp.c +1 -3
index a70670fe9a2d..5fe4c099f30a 100644

Lines of this file are not shown. View the raw message.

net/dccp/ipv4.c +5 -2
index 524b7e581a03..65a6733fc897 100644

Lines of this file are not shown. View the raw message.

net/dccp/ipv6.c +5 -2
index 6f5a556f4f6d..683e4291b348 100644

Lines of this file are not shown. View the raw message.

net/ipv4/inet_connection_sock.c +13 -4
index a018981b4514..8720f3840b69 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_input.c +33 -12

45 lines not on this page · raw message

net/iucv/iucv.c +18 -8
index f66b5f74cd83..db41eb2d977f 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_hooks_lwtunnel.c +3 -0
index 7cdb59bb4459..d8ebebc9775d 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_tables_api.c +4 -4
index 387eee416b0b..7547f7b86939 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_lookup.c +2 -1
index 870e5b113d13..7ba4b1454db4 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/conntrack.c +6 -1
index 2928c142a2dd..3b980bf2770b 100644

Lines of this file are not shown. View the raw message.

scripts/Makefile.dtbinst +1 -1
index 4405d5b67578..fa3ad33a19df 100644

Lines of this file are not shown. View the raw message.

scripts/Makefile.package +1 -1
index 2bcab02da965..a16d60a4b3fd 100644

Lines of this file are not shown. View the raw message.

sound/core/seq/seq_ump_convert.c +6 -4
index d81f776a4c3d..e90b27a135e6 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +3 -0
index af70e764ea4b..c9f07e6fde96 100644

Lines of this file are not shown. View the raw message.

sound/soc/amd/acp/acp-i2s.c +0 -8
index df350014966a..cf2fdde5aaa1 100644

Lines of this file are not shown. View the raw message.

sound/soc/amd/acp/acp-pci.c +6 -4
index 223238f662f8..7de6446e6f7c 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/atmel-classd.c +10 -7
index 4c1985711218..ba314b279919 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/atmel-pcm-dma.c +4 -4
index 96a8c7dba98f..7306e04da513 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/atmel-pcm-pdc.c +2 -2
index 3e7ea2021b46..7db8df85c54f 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/atmel-pdmic.c +6 -6
index 0db7815d230c..fa29dd8ef208 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/atmel_wm8904.c +2 -2
index 00e98136bec2..01e944fa1148 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/mikroe-proto.c +1 -1
index 30c87c2c1b0b..18a8760443ae 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/sam9g20_wm8731.c +1 -1
index 0405e9e49140..d3ec9826d505 100644

Lines of this file are not shown. View the raw message.

sound/soc/atmel/sam9x5_wm8731.c +1 -1
index cd1d59a90e02..d1c1f370a9cd 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl-asoc-card.c +2 -1
index 5f181b89838a..f76252b3f591 100644

Lines of this file are not shown. View the raw message.

sound/soc/mediatek/mt8183/mt8183-da7219-max98357.c +5 -5
index 701fbcc0f2c9..b48375aa3027 100644

Lines of this file are not shown. View the raw message.

sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +20 -12
index 7ad604b80e25..6511f0a08de1 100644

Lines of this file are not shown. View the raw message.

sound/soc/rockchip/rockchip_i2s_tdm.c +11 -2
index 15f8919fd224..e6a6eabc47e5 100644

Lines of this file are not shown. View the raw message.

sound/synth/emux/soundfont.c +11 -6
index 16f00097cb95..eed47e483024 100644

Lines of this file are not shown. View the raw message.

tools/testing/cxl/test/cxl.c +4 -0
index f4e517a0c774..8251718eaf3a 100644

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.