Linux 6.1.24
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.24 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/serial/renesas,scif.yaml | 4 Documentation/mm/zsmalloc.rst | 2 Makefile | 2 arch/arm64/kernel/compat_alignment.c | 32 - arch/arm64/kvm/pmu-emul.c | 352 +++-------- arch/arm64/kvm/sys_regs.c | 6 arch/s390/kvm/intercept.c | 32 - arch/x86/kernel/acpi/boot.c | 9 arch/x86/kvm/vmx/nested.c | 7 arch/x86/kvm/x86.c | 11 block/blk-mq.c | 4 block/blk-throttle.c | 2 block/genhd.c | 8 drivers/acpi/acpi_video.c | 15 drivers/acpi/video_detect.c | 58 + drivers/block/ublk_drv.c | 26 drivers/counter/104-quad-8.c | 31 - drivers/cxl/core/pci.c | 38 - drivers/cxl/cxlpci.h | 14 drivers/gpio/Kconfig | 2 drivers/gpio/gpio-davinci.c | 5 drivers/gpio/gpio-mvebu.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 2 drivers/gpu/drm/bridge/lontium-lt9611.c | 1 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 14 drivers/gpu/drm/display/drm_dp_mst_topology.c | 26 drivers/gpu/drm/i915/display/intel_color.c | 21 drivers/gpu/drm/i915/display/intel_dp_mst.c | 14 drivers/gpu/drm/i915/gt/intel_execlists_submission.c | 12 drivers/gpu/drm/i915/i915_perf.c | 6 drivers/gpu/drm/i915/i915_reg.h | 3 drivers/gpu/drm/nouveau/dispnv50/disp.c | 34 + drivers/gpu/drm/nouveau/nouveau_dp.c | 8 drivers/gpu/drm/panfrost/panfrost_mmu.c | 1 drivers/hv/connection.c | 4 drivers/hwtracing/coresight/coresight-etm4x-core.c | 24 drivers/hwtracing/coresight/coresight-etm4x.h | 20 drivers/iio/adc/ad7791.c | 2 drivers/iio/adc/ltc2497.c | 6 drivers/iio/adc/qcom-spmi-adc5.c | 10 drivers/iio/adc/ti-ads7950.c | 1 drivers/iio/dac/cio-dac.c | 4 drivers/iio/imu/Kconfig | 1 drivers/iio/industrialio-buffer.c | 21 drivers/iio/light/cm32181.c | 12 drivers/leds/rgb/leds-qcom-lpg.c | 14 drivers/md/dm-bio-prison-v1.c | 10 drivers/md/dm-bio-prison-v2.c | 12 drivers/md/dm-bio-prison-v2.h | 10 drivers/md/dm-bufio.c | 58 - drivers/md/dm-cache-background-tracker.c | 8 drivers/md/dm-cache-background-tracker.h | 46 + drivers/md/dm-cache-metadata.c | 40 - drivers/md/dm-cache-metadata.h | 4 drivers/md/dm-cache-policy-internal.h | 10 drivers/md/dm-cache-policy-smq.c | 163 ++--- drivers/md/dm-cache-policy.c | 2 drivers/md/dm-cache-policy.h | 4 drivers/md/dm-cache-target.c | 50 - drivers/md/dm-core.h | 6 drivers/md/dm-crypt.c | 48 - drivers/md/dm-delay.c | 6 drivers/md/dm-ebs-target.c | 2 drivers/md/dm-era-target.c | 32 - drivers/md/dm-exception-store.c | 6 drivers/md/dm-exception-store.h | 18 drivers/md/dm-flakey.c | 22 drivers/md/dm-integrity.c | 328 +++++------ drivers/md/dm-io-rewind.c | 4 drivers/md/dm-io.c | 32 - drivers/md/dm-ioctl.c | 18 drivers/md/dm-kcopyd.c | 30 - drivers/md/dm-linear.c | 2 drivers/md/dm-log-userspace-base.c | 6 drivers/md/dm-log-userspace-transfer.c | 2 drivers/md/dm-log-writes.c | 10 drivers/md/dm-log.c | 10 drivers/md/dm-mpath.c | 46 - drivers/md/dm-mpath.h | 2 drivers/md/dm-path-selector.h | 2 drivers/md/dm-ps-io-affinity.c | 4 drivers/md/dm-ps-queue-length.c | 10 drivers/md/dm-ps-round-robin.c | 6 drivers/md/dm-ps-service-time.c | 14 drivers/md/dm-raid.c | 2 drivers/md/dm-raid1.c | 22 drivers/md/dm-region-hash.c | 22 drivers/md/dm-rq.c | 16 drivers/md/dm-rq.h | 2 drivers/md/dm-snap-persistent.c | 8 drivers/md/dm-snap-transient.c | 6 drivers/md/dm-snap.c | 34 - drivers/md/dm-stats.c | 74 +- drivers/md/dm-stats.h | 6 drivers/md/dm-stripe.c | 10 drivers/md/dm-switch.c | 46 - drivers/md/dm-table.c | 25 drivers/md/dm-thin-metadata.c | 24 drivers/md/dm-thin.c | 46 - drivers/md/dm-uevent.c | 4 drivers/md/dm-uevent.h | 4 drivers/md/dm-verity-fec.c | 30 - drivers/md/dm-verity-fec.h | 18 drivers/md/dm-verity-target.c | 30 - drivers/md/dm-verity.h | 8 drivers/md/dm-writecache.c | 80 +- drivers/md/dm.c | 55 - drivers/md/dm.h | 4 drivers/md/persistent-data/dm-array.c | 69 +- drivers/md/persistent-data/dm-array.h | 2 drivers/md/persistent-data/dm-bitset.c | 12 drivers/md/persistent-data/dm-block-manager.c | 16 drivers/md/persistent-data/dm-block-manager.h | 6 drivers/md/persistent-data/dm-btree-remove.c | 46 - drivers/md/persistent-data/dm-btree-spine.c | 4 drivers/md/persistent-data/dm-btree.c | 98 +-- drivers/md/persistent-data/dm-btree.h | 12 drivers/md/persistent-data/dm-persistent-data-internal.h | 6 drivers/md/persistent-data/dm-space-map-common.c | 28 drivers/md/persistent-data/dm-space-map-metadata.c | 20 drivers/md/persistent-data/dm-transaction-manager.c | 16 drivers/md/persistent-data/dm-transaction-manager.h | 2 drivers/net/dsa/mv88e6xxx/chip.c | 2 drivers/net/dsa/mv88e6xxx/global2.c | 20 drivers/net/dsa/mv88e6xxx/global2.h | 1 drivers/net/ethernet/google/gve/gve.h | 2 drivers/net/ethernet/google/gve/gve_tx.c | 12 drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c | 23 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 21 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 6 drivers/net/phy/phylink.c | 19 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 36 - drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 2 drivers/net/wireless/mediatek/mt76/mt7603/main.c | 10 drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 70 -- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 15 drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h | 6 drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 18 drivers/net/wireless/mediatek/mt76/mt7915/main.c | 13 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 13 drivers/nvme/host/core.c | 6 drivers/pci/doe.c | 30 - drivers/platform/x86/think-lmi.c | 20 drivers/pwm/pwm-atmel.c | 6 drivers/pwm/pwm-bcm-iproc.c | 8 drivers/pwm/pwm-crc.c | 10 drivers/pwm/pwm-cros-ec.c | 9 drivers/pwm/pwm-dwc.c | 6 drivers/pwm/pwm-hibvt.c | 7 drivers/pwm/pwm-imx-tpm.c | 8 drivers/pwm/pwm-imx27.c | 8 drivers/pwm/pwm-intel-lgm.c | 6 drivers/pwm/pwm-iqs620a.c | 7 drivers/pwm/pwm-keembay.c | 6 drivers/pwm/pwm-lpss.c | 6 drivers/pwm/pwm-meson.c | 16 drivers/pwm/pwm-mtk-disp.c | 12 drivers/pwm/pwm-pca9685.c | 8 drivers/pwm/pwm-raspberrypi-poe.c | 8 drivers/pwm/pwm-rockchip.c | 12 drivers/pwm/pwm-sifive.c | 6 drivers/pwm/pwm-sl28cpld.c | 8 drivers/pwm/pwm-sprd.c | 9 drivers/pwm/pwm-stm32-lp.c | 8 drivers/pwm/pwm-sun4i.c | 12 drivers/pwm/pwm-sunplus.c | 6 drivers/pwm/pwm-visconti.c | 6 drivers/pwm/pwm-xilinx.c | 8 drivers/scsi/iscsi_tcp.c | 3 drivers/scsi/qla2xxx/qla_os.c | 1 drivers/tty/serial/8250/8250_port.c | 11 drivers/tty/serial/fsl_lpuart.c | 8 drivers/tty/serial/sh-sci.c | 10 drivers/usb/cdns3/cdnsp-ep0.c | 3 drivers/usb/dwc3/dwc3-pci.c | 4 drivers/usb/host/xhci-tegra.c | 6 drivers/usb/host/xhci.c | 7 drivers/usb/serial/cp210x.c | 1 drivers/usb/serial/option.c | 10 drivers/usb/typec/altmodes/displayport.c | 6 fs/cifs/fs_context.c | 13 fs/cifs/fs_context.h | 3 fs/cifs/misc.c | 2 fs/ksmbd/connection.c | 5 fs/ksmbd/server.c | 5 fs/ksmbd/smb2pdu.c | 3 fs/ksmbd/smb_common.c | 138 +++- fs/ksmbd/smb_common.h | 2 fs/namespace.c | 2 fs/nfsd/blocklayout.c | 1 fs/nfsd/nfs4callback.c | 4 fs/nfsd/nfs4xdr.c | 15 fs/nilfs2/segment.c | 3 fs/nilfs2/super.c | 2 fs/nilfs2/the_nilfs.c | 12 include/acpi/video.h | 15 include/drm/display/drm_dp_mst_helper.h | 3 include/kvm/arm_pmu.h | 2 include/linux/device-mapper.h | 38 - include/linux/dm-bufio.h | 12 include/linux/dm-dirty-log.h | 6 include/linux/dm-io.h | 8 include/linux/dm-kcopyd.h | 22 include/linux/dm-region-hash.h | 2 include/linux/ftrace.h | 2 include/linux/mm_types.h | 3 include/linux/pci-doe.h | 8 include/linux/phylink.h | 1 include/linux/pwm.h | 4 include/net/raw.h | 15 io_uring/io_uring.c | 2 io_uring/kbuf.c | 7 kernel/events/core.c | 2 kernel/fork.c | 3 kernel/trace/ftrace.c | 15 kernel/trace/ring_buffer.c | 13 kernel/trace/trace.c | 1 kernel/trace/trace_events_synth.c | 19 kernel/trace/trace_osnoise.c | 4 lib/maple_tree.c | 383 ++++++++----- mm/hugetlb.c | 14 mm/kfence/core.c | 32 - mm/memory.c | 16 mm/mmap.c | 3 mm/swapfile.c | 3 mm/vmalloc.c | 8 net/can/isotp.c | 74 +- net/can/j1939/transport.c | 5 net/core/netpoll.c | 19 net/ethtool/linkmodes.c | 7 net/ipv4/icmp.c | 5 net/ipv4/ping.c | 8 net/ipv4/raw.c | 49 - net/ipv4/raw_diag.c | 10 net/ipv6/ip6_output.c | 7 net/ipv6/raw.c | 14 net/l2tp/l2tp_ip.c | 8 net/l2tp/l2tp_ip6.c | 8 net/mac80211/sta_info.c | 3 net/mac80211/util.c | 2 net/netlink/af_netlink.c | 15 net/qrtr/af_qrtr.c | 2 net/qrtr/ns.c | 15 net/sctp/socket.c | 4 net/sunrpc/svcauth_unix.c | 17 sound/pci/hda/patch_hdmi.c | 11 sound/pci/hda/patch_realtek.c | 2 sound/soc/codecs/hdac_hdmi.c | 17 sound/soc/codecs/lpass-rx-macro.c | 4 sound/soc/codecs/lpass-tx-macro.c | 4 sound/soc/codecs/lpass-wsa-macro.c | 4 sound/soc/sof/ipc4.c | 8 tools/lib/bpf/btf_dump.c | 6 tools/testing/radix-tree/maple.c | 18 257 files changed, 2737 insertions(+), 2053 deletions(-)
Alex Deucher (1):
drm/amdgpu: for S0ix, skip SDMA 5.x+ suspend/resume
Alistair Popple (1):
mm: take a page reference when removing device exclusive entries
Andrea Righi (1):
l2tp: generate correct module alias strings
Andy Chi (1):
ALSA: hda/realtek: fix mute/micmute LEDs for a HP ProBook
Andy Roulin (1):
ethtool: reset #lanes when lanes is omitted
Andy Shevchenko (1):
iio: adc: qcom-spmi-adc5: Fix the channel name
Ard Biesheuvel (1):
arm64: compat: Work around uninitialized variable warning
Armin Wolf (1):
platform/x86: think-lmi: Fix memory leak when showing current settings
Arnd Bergmann (1):
iio: adis16480: select CONFIG_CRC32
Biju Das (2):
tty: serial: sh-sci: Fix transmit end interrupt handler
tty: serial: sh-sci: Fix Rx on RZ/G2L SCI
Bjørn Mork (1):
USB: serial: option: add Quectel RM500U-CN modem
Boris Brezillon (1):
drm/panfrost: Fix the panfrost_mmu_map_fault_addr() error path
Christian Brauner (1):
fs: drop peer group ids under namespace lock
Chuck Lever (1):
NFSD: Avoid calling OPDESC() with ops->opnum == OP_ILLEGAL
Corinna Vinschen (1):
net: stmmac: fix up RX flow hash indirection table when setting channels
D Scott Phillips (1):
xhci: also avoid the XHCI_ZERO_64B_REGS quirk with a passthrough iommu
Dai Ngo (1):
NFSD: callback request does not use correct credential for AUTH_SYS
Daniel Bristot de Oliveira (2):
tracing/timerlat: Notify new max thread latency tracing/osnoise: Fix notify new tracing_max_latency
Dhruva Gole (2):
gpio: davinci: Do not clear the bank intr enable bit in save_context
gpio: davinci: Add irq chip flag to skip set wake
Eduard Zingerman (1):
bpftool: Print newline before '}' for struct with padding only fields
Enrico Sau (1):
USB: serial: option: add Telit FE990 compositions
Eric DeVolder (1):
x86/acpi/boot: Correct acpi_is_processor_usable() check
Eric Dumazet (3):
icmp: guard against too small mtu
raw: use net_hash_mix() in hash function
netlink: annotate lockless accesses to nlk->max_recvmsg_len
Felix Fietkau (2):
wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta
wifi: mt76: ignore key disable commands
Geert Uytterhoeven (1):
dt-bindings: serial: renesas,scif: Fix 4th IRQ for 4-IRQ SCIFs
Greg Kroah-Hartman (1):
Linux 6.1.24
Gustav Ekelund (1):
net: dsa: mv88e6xxx: Reset mv88e6393x force WD event bit
Hans de Goede (5):
wifi: brcmfmac: Fix SDIO suspend/resume regression
ACPI: video: Add auto_detect arg to __acpi_video_get_backlight_type()
ACPI: video: Make acpi_backlight=video work independent from GPU driver
ACPI: video: Add acpi_backlight=video quirk for Apple iMac14,1 and iMac14,2
ACPI: video: Add acpi_backlight=video quirk for Lenovo ThinkPad W530
Heikki Krogerus (1):
usb: dwc3: pci: add support for the Intel Meteor Lake-S
Heinz Mauelshagen (1):
dm: change "unsigned" to "unsigned int"
Ian Ray (1):
drivers: iio: adc: ltc2497: fix LSB shift
Ilpo Järvinen (1):
serial: 8250: Prevent starting up DMA Rx on THRI interrupt
Imre Deak (2):
drm/display/dp_mst: Handle old/new payload states in drm_dp_remove_payload() drm/i915/dp_mst: Fix payload removal during output disabling
Jakub Kicinski (1):
net: don't let netpoll invoke NAPI if in xmit context
Jason Montleon (1):
ASoC: hdac_hdmi: use set_stream() instead of set_tdm_slots()
Jeff Layton (2):
nfsd: call op_release, even when op_func returns an error
sunrpc: only free unix grouplist after RCU settles
Jens Axboe (1):
ublk: read any SQE values upfront
Jeremy Soller (1):
ALSA: hda/realtek: Add quirk for Clevo X370SNW
Jiapeng Chong (1):
dm integrity: Remove bi_sector that's only used by commented debug code
Joe Thornber (1):
dm cache: Add some documentation to dm-cache-background-tracker.h
John Keeping (1):
ftrace: Mark get_lock_parent_ip() __always_inline
Kai-Heng Feng (1):
iio: light: cm32181: Unregister second I2C client if present
Kan Liang (1):
perf/core: Fix the same task check in perf_event_set_output
Karol Herbst (1):
drm/nouveau/disp: Support more modes by checking with lower bpc
Kees Jan Koster (1):
USB: serial: cp210x: add Silicon Labs IFS-USB-DATACABLE IDs
Keith Busch (2):
blk-mq: directly poll requests
nvme: fix discard support without oncs
Kemeng Shi (1):
blk-throttle: Fix that bps of child could exceed bps limited in parent
Kuniyuki Iwashima (2):
raw: Fix NULL deref in raw_get_next().
ping: Fix potentail NULL deref for /proc/net/icmp.Lars-Peter Clausen (1):
iio: adc: ti-ads7950: Set can_sleep flag for GPIO chip
Li Zetao (1):
scsi: qla2xxx: Fix memory leak in qla2x00_probe_one()
Liam R. Howlett (13):
maple_tree: remove GFP_ZERO from kmem_cache_alloc() and kmem_cache_alloc_bulk()
maple_tree: fix potential rcu issue
maple_tree: reduce user error potential
maple_tree: fix handle of invalidated state in mas_wr_store_setup()
maple_tree: fix mas_prev() and mas_find() state handling
maple_tree: be more cautious about dead nodes
maple_tree: refine ma_state init from mas_start()
maple_tree: detect dead nodes in mas_start()
maple_tree: fix freeing of nodes in rcu mode
maple_tree: remove extra smp_wmb() from mas_dead_leaves()
maple_tree: add smp_rmb() to dead node detection
maple_tree: add RCU lock checking to rcu callback functions
mm: enable maple tree RCU mode by default.
Lingyu Liu (1):
ice: Reset FDIR counter in FDIR init stage
Lukas Wunner (6):
cxl/pci: Fix CDAT retrieval on big endian cxl/pci: Handle truncated CDAT header cxl/pci: Handle truncated CDAT entries cxl/pci: Handle excessive CDAT length PCI/DOE: Silence WARN splat with CONFIG_DEBUG_OBJECTS=y PCI/DOE: Fix memory leak with CONFIG_DEBUG_OBJECTS=y
Marc Zyngier (3):
KVM: arm64: PMU: Align chained counter implementation with architecture pseudocode
KVM: arm64: PMU: Distinguish between 64bit counter and 64bit overflow
KVM: arm64: PMU: Sanitise PMCR_EL0.LP on first vcpu run
Mario Limonciello (1):
x86/ACPI/boot: Use FADT version to check support for online capable
Marios Makassikis (1):
ksmbd: do not call kvmalloc() with __GFP_NORETRY | __GFP_NO_WARN
Mark Pearson (2):
platform/x86: think-lmi: Fix memory leaks when parsing ThinkStation WMI strings platform/x86: think-lmi: Clean up display of current_value on Thinkstation
Mathias Nyman (1):
xhci: Free the command allocated for setting LPM if we return early
Michael Sit Wei Hong (4):
net: phylink: add phylink_expects_phy() method
net: stmmac: check if MAC needs to attach to a PHY
net: stmmac: remove redundant fixup to support fixed-link mode
net: stmmac: check fwnode for phy device before scanning for phy
Michal Sojka (1):
can: isotp: isotp_ops: fix poll() to not report false EPOLLOUT events
Mike Snitzer (1):
dm: fix improper splitting for abnormal bios
Min Li (1):
drm/i915: fix race condition UAF in i915_perf_add_config_ioctl
Ming Lei (1):
block: ublk: make sure that block size is set correctly
Mohammed Gamal (1):
Drivers: vmbus: Check for channel allocation before looking up relids
Muchun Song (2):
mm: kfence: fix PG_slab and memcg_data clearing
mm: kfence: fix handling discontiguous page
Namjae Jeon (1):
ksmbd: fix slab-out-of-bounds in init_smb2_rsp_hdr
Nico Boehr (1):
KVM: s390: pv: fix external interruption loop not always detected
Nuno Sá (3):
iio: buffer: correctly return bytes written in output buffers
iio: buffer: make sure O_NONBLOCK is respected
iio: adc: ad7791: fix IRQ flags
Oleksij Rempel (1):
can: j1939: j1939_tp_tx_dat_new(): fix out-of-bounds memory access
Oliver Hartkopp (2):
can: isotp: fix race between isotp_sendsmg() and isotp_release()
can: isotp: isotp_recvmsg(): use sock_recv_cmsgs() to get SOCK_RXQ_OVFL infos
Pawel Laszczak (1):
usb: cdnsp: Fixes error: uninitialized symbol 'len'
Peng Zhang (2):
maple_tree: fix get wrong data_end in mtree_lookup_walk()
maple_tree: fix a potential concurrency bug in RCU mode
Peter Xu (1):
mm/hugetlb: fix uffd wr-protection for CoW optimization path
RD Babiera (1):
usb: typec: altmodes/displayport: Fix configure initial pin assignment
Randy Dunlap (1):
gpio: GPIO_REGMAP: select REGMAP instead of depending on it
Ranjani Sridharan (1):
ASoC: SOF: ipc4: Ensure DSP is in D0I0 during sof_ipc4_set_get_data()
Reiji Watanabe (1):
KVM: arm64: PMU: Don't save PMCR_EL0.{C,P} for the vCPU
Robert Foss (1):
drm/bridge: lt9611: Fix PLL being unable to lock
Roman Li (1):
drm/amd/display: Clear MST topology if it fails to resume
Rongwei Wang (1):
mm/swap: fix swap_info_struct race between swapoff and get_swap_pages()
Ryder Lee (1):
wifi: mac80211: fix the size calculation of ieee80211_ie_len_eht_cap()
Ryusuke Konishi (2):
nilfs2: fix potential UAF of struct nilfs_sc_info in nilfs_segctor_thread()
nilfs2: fix sysfs interface lifetime
Sean Christopherson (2):
KVM: x86: Clear "has_error_code", not "error_code", for RM exception injection
KVM: nVMX: Do not report error code when synthesizing VM-Exit from Real Mode
Sergey Senozhatsky (1):
zsmalloc: document freeable stats
Shailend Chand (1):
gve: Secure enough bytes in the first TX desc for all TCP pkts
Sherry Sun (1):
tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_empty
Siddharth Vadapalli (1):
net: ethernet: ti: am65-cpsw: Fix mdio cleanup in probe
Simei Su (1):
ice: fix wrong fallback logic for FDIR
Song Yoong Siang (1):
net: stmmac: Add queue reset into stmmac_xdp_open() function
Sricharan Ramabadhran (1):
net: qrtr: Do not do DEL_SERVER broadcast after DEL_CLIENT
Srinivas Kandagatla (1):
ASoC: codecs: lpass: fix the order or clks turn off during suspend
Steve Clevenger (1):
coresight-etm4: Fix for() loop drvdata->nr_addr_cmp range bug
Steven Rostedt (Google) (2):
tracing: Free error logs of tracing instances tracing/synthetic: Make lastcmd_mutex static
Suzuki K Poulose (1):
coresight: etm4x: Do not access TRCIDR1 for identification
Takashi Iwai (1):
ALSA: hda/hdmi: Preserve the previous PCM device upon re-enablement
Thiago Rafael Becker (1):
cifs: sanitize paths in cifs_update_super_prepath.
Tim Huang (1):
drm/amdgpu: skip psp suspend for IMU enabled ASICs mode2 reset
Tvrtko Ursulin (1):
drm/i915: Fix context runtime accounting
Tze-nan Wu (1):
tracing/synthetic: Fix races on freeing last_cmd
Uwe Kleine-König (6):
pwm: Make .get_state() callback return an error code
pwm: hibvt: Explicitly set .polarity in .get_state()
pwm: cros-ec: Explicitly set .polarity in .get_state()
pwm: iqs620a: Explicitly set .polarity in .get_state()
pwm: sprd: Explicitly set .polarity in .get_state()
pwm: meson: Explicitly set .polarity in .get_state()
Ville Syrjälä (2):
drm/i915: Use _MMIO_PIPE() for SKL_BOTTOM_COLOR
drm/i915: Split icl_color_commit_noarm() from skl_color_commit_noarm()
Wayne Chang (1):
usb: xhci: tegra: fix sleep in atomic call
William Breathitt Gray (3):
iio: dac: cio-dac: Fix max DAC write value check for 12-bit
counter: 104-quad-8: Fix race condition between FLAG and CNTR reads
counter: 104-quad-8: Fix Synapse action reported for Index signals
Wojciech Lukowicz (2):
io_uring: fix return value when removing provided buffers
io_uring: fix memory leak when removing provided buffers
Xin Long (1):
sctp: check send stream number after wait_for_sndbuf
Yafang Shao (1):
mm: vmalloc: avoid warn_alloc noise caused by fatal signal
Yu Kuai (1):
block: don't set GD_NEED_PART_SCAN if scan partition failed
Zheng Yejian (2):
ftrace: Fix issue that 'direct->addr' not restored in modify_ftrace_direct()
ring-buffer: Fix race while reader and writer are on the same page
Zhong Jinghua (1):
scsi: iscsi_tcp: Check that sock is valid before iscsi_set_param()
Ziyang Xuan (2):
net: qrtr: Fix a refcount bug in qrtr_recvmsg()
ipv6: Fix an uninit variable access bug in __ip6_make_skb()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/serial/renesas,scif.yaml +2 -2
@@ -91,7 +91,7 @@ properties: - description: Error interrupt - description: Receive buffer full interrupt - description: Transmit buffer empty interrupt - - description: Transmit End interrupt + - description: Break interrupt - items: - description: Error interrupt - description: Receive buffer full interrupt
@@ -106,7 +106,7 @@ properties: - const: eri - const: rxi - const: txi - - const: tei + - const: bri - items: - const: eri - const: rxi
Documentation/mm/zsmalloc.rst +2 -0
@@ -68,6 +68,8 @@ pages_used the number of pages allocated for the class pages_per_zspage the number of 0-order pages to make a zspage +freeable + the approximate number of pages class compaction can free We assign a zspage to ZS_ALMOST_EMPTY fullness group when n <= N / f, where
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 23 +SUBLEVEL = 24 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm64/kernel/compat_alignment.c +14 -18
@@ -314,36 +314,32 @@ int do_compat_alignment_fixup(unsigned long addr, struct pt_regs *regs)int (*handler)(unsigned long addr,u32 instr,struct pt_regs *regs);unsigned int type;u32 instr =0 ; -u16 tinstr =0 ;int isize =4 ;int thumb2_32b =0 ; -int fault; instrptr =instruction_pointer (regs);if (compat_thumb_mode (regs)) {__le16 __user *ptr = (__le16 __user *)(instrptr & ~1 ); +u16 tinstr, tinst2; - fault =alignment_get_thumb (regs, ptr, &tinstr); -if (!fault) { -if (IS_T32 (tinstr)) { -/* Thumb-2 32-bit */ -u16 tinst2; - fault =alignment_get_thumb (regs, ptr +1 , &tinst2); - instr = ((u32 )tinstr <<16 ) | tinst2; - thumb2_32b =1 ; - }else { - isize =2 ; - instr =thumb2arm (tinstr); - } +if (alignment_get_thumb (regs, ptr, &tinstr)) +return 1 ; + +if (IS_T32 (tinstr)) {/* Thumb-2 32-bit */ +if (alignment_get_thumb (regs, ptr +1 , &tinst2)) +return 1 ; + instr = ((u32 )tinstr <<16 ) | tinst2; + thumb2_32b =1 ; + }else { + isize =2 ; + instr =thumb2arm (tinstr); } }else { - fault =alignment_get_arm (regs, (__le32 __user *)instrptr, &instr); +if (alignment_get_arm (regs, (__le32 __user *)instrptr, &instr)) +return 1 ; } -if (fault) -return 1 ; -switch (CODING_BITS (instr)) {case 0x00000000 :/* 3.13.4 load/store instruction extensions */ if (LDSTHD_I_BIT (instr))
arch/arm64/kvm/pmu-emul.c +113 -239
500 lines not on this page · raw message
arch/arm64/kvm/sys_regs.c +4 -2
@@ -697,13 +697,15 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,return false;if (p->is_write) { -/* Only update writeable bits of PMCR */ +/* +* Only update writeable bits of PMCR (continuing into +* kvm_pmu_handle_pmcr() as well) +*/ val =__vcpu_sys_reg (vcpu,PMCR_EL0 ); val &= ~ARMV8_PMU_PMCR_MASK ; val |= p->regval &ARMV8_PMU_PMCR_MASK ;if (!kvm_supports_32bit_el0 ()) val |=ARMV8_PMU_PMCR_LC ; -__vcpu_sys_reg (vcpu,PMCR_EL0 ) = val;kvm_pmu_handle_pmcr (vcpu, val);kvm_vcpu_pmu_restore_guest (vcpu); }else {
arch/s390/kvm/intercept.c +24 -8
@@ -271,10 +271,18 @@ static int handle_prog(struct kvm_vcpu *vcpu)* handle_external_interrupt - used for external interruption interceptions * @vcpu: virtual cpu * -* This interception only occurs if the CPUSTAT_EXT_INT bit was set, or if -* the new PSW does not have external interrupts disabled. In the first case, -* we've got to deliver the interrupt manually, and in the second case, we -* drop to userspace to handle the situation there. +* This interception occurs if: +* - the CPUSTAT_EXT_INT bit was already set when the external interrupt +* occurred. In this case, the interrupt needs to be injected manually to +* preserve interrupt priority. +* - the external new PSW has external interrupts enabled, which will cause an +* interruption loop. We drop to userspace in this case. +* +* The latter case can be detected by inspecting the external mask bit in the +* external new psw. +* +* Under PV, only the latter case can occur, since interrupt priorities are +* handled in the ultravisor. */ static int handle_external_interrupt (struct kvm_vcpu *vcpu) {
@@ -285,10 +293,18 @@ static int handle_external_interrupt(struct kvm_vcpu *vcpu) vcpu->stat.exit_external_interrupt++; - rc =read_guest_lc (vcpu, __LC_EXT_NEW_PSW, &newpsw,sizeof (psw_t)); -if (rc) -return rc; -/* We can not handle clock comparator or timer interrupt with bad PSW */ +if (kvm_s390_pv_cpu_is_protected (vcpu)) { + newpsw = vcpu->arch.sie_block->gpsw; + }else { + rc =read_guest_lc (vcpu, __LC_EXT_NEW_PSW, &newpsw,sizeof (psw_t)); +if (rc) +return rc; + } + +/* +* Clock comparator or timer interrupt with external interrupt enabled +* will cause interrupt loop. Drop to userspace. +*/ if ((eic ==EXT_IRQ_CLK_COMP || eic ==EXT_IRQ_CPU_TIMER ) && (newpsw.mask &PSW_MASK_EXT ))return -EOPNOTSUPP ;
arch/x86/kernel/acpi/boot.c +7 -2
@@ -146,7 +146,11 @@ static int __init acpi_parse_madt(struct acpi_table_header *table)pr_debug ("Local APIC address 0x%08x\n" , madt->address); } -if (madt->header.revision >=5 ) + +/* ACPI 6.3 and newer support the online capable bit. */ +if (acpi_gbl_FADT.header.revision >6 || + (acpi_gbl_FADT.header.revision ==6 && + acpi_gbl_FADT.minor_revision >=3 )) acpi_support_online_capable = true; default_acpi_madt_oem_check(madt->header.oem_id,
@@ -193,7 +197,8 @@ static bool __init acpi_is_processor_usable(u32 lapic_flags)if (lapic_flags &ACPI_MADT_ENABLED )return true; -if (acpi_support_online_capable && (lapic_flags &ACPI_MADT_ONLINE_CAPABLE )) +if (!acpi_support_online_capable || + (lapic_flags &ACPI_MADT_ONLINE_CAPABLE ))return true;return false;
arch/x86/kvm/vmx/nested.c +6 -1
@@ -3845,7 +3845,12 @@ static void nested_vmx_inject_exception_vmexit(struct kvm_vcpu *vcpu) exit_qual =0 ; } -if (ex->has_error_code) { +/* +* Unlike AMD's Paged Real Mode, which reports an error code on #PF +* VM-Exits even if the CPU is in Real Mode, Intel VMX never sets the +* "has error code" flags on VM-Exit if the CPU is in Real Mode. +*/ +if (ex->has_error_code &&is_protmode (vcpu)) {/* * Intel CPUs do not generate error codes with bits 31:16 set, * and more importantly VMX disallows setting bits 31:16 in the
arch/x86/kvm/x86.c +9 -2
@@ -9853,13 +9853,20 @@ int kvm_check_nested_events(struct kvm_vcpu *vcpu)static void kvm_inject_exception (struct kvm_vcpu *vcpu) { +/* +* Suppress the error code if the vCPU is in Real Mode, as Real Mode +* exceptions don't report error codes. The presence of an error code +* is carried with the exception and only stripped when the exception +* is injected as intercepted #PF VM-Exits for AMD's Paged Real Mode do +* report an error code despite the CPU being in Real Mode. +*/ + vcpu->arch.exception.has_error_code &=is_protmode (vcpu); +trace_kvm_inj_exception (vcpu->arch.exception.vector, vcpu->arch.exception.has_error_code, vcpu->arch.exception.error_code, vcpu->arch.exception.injected); -if (vcpu->arch.exception.error_code && !is_protmode (vcpu)) - vcpu->arch.exception.error_code = false;static_call (kvm_x86_inject_exception)(vcpu); }
block/blk-mq.c +1 -3
@@ -1327,8 +1327,6 @@ bool blk_rq_is_poll(struct request *rq)return false;if (rq->mq_hctx->type !=HCTX_TYPE_POLL )return false; -if (WARN_ON_ONCE (!rq->bio)) -return false;return true; }EXPORT_SYMBOL_GPL (blk_rq_is_poll);
@@ -1336,7 +1334,7 @@ EXPORT_SYMBOL_GPL(blk_rq_is_poll);static void blk_rq_poll_completion (struct request *rq,struct completion *wait) {do { -bio_poll (rq->bio,NULL ,0 ); +blk_mq_poll (rq->q,blk_rq_to_qc (rq),NULL ,0 );cond_resched (); }while (!completion_done (wait)); }
block/blk-throttle.c +1 -1
@@ -1066,7 +1066,6 @@ static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw) sq->nr_queued[rw]--;throtl_charge_bio (tg, bio); -bio_set_flag (bio,BIO_BPS_THROTTLED );/* * If our parent is another tg, we just need to transfer @bio to
@@ -1079,6 +1078,7 @@ static void tg_dispatch_one_bio(struct throtl_grp *tg, bool rw)throtl_add_bio_tg (bio, &tg->qnode_on_parent[rw], parent_tg);start_parent_slice_with_credit (tg, parent_tg, rw); }else { +bio_set_flag (bio,BIO_BPS_THROTTLED );throtl_qnode_add_bio (bio, &tg->qnode_on_parent[rw], &parent_sq->queued[rw]);BUG_ON (tg->td->nr_queued[rw] <=0 );
block/genhd.c +7 -1
@@ -368,7 +368,6 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)if (disk->open_partitions)return -EBUSY ; -set_bit (GD_NEED_PART_SCAN , &disk->state);/* * If the device is opened exclusively by current thread already, it's * safe to scan partitons, otherwise, use bd_prepare_to_claim() to
@@ -381,12 +380,19 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)return ret; } +set_bit (GD_NEED_PART_SCAN , &disk->state); bdev =blkdev_get_by_dev (disk_devt (disk), mode & ~FMODE_EXCL ,NULL );if (IS_ERR (bdev)) ret =PTR_ERR (bdev);else blkdev_put (bdev, mode & ~FMODE_EXCL ); +/* +* If blkdev_get_by_dev() failed early, GD_NEED_PART_SCAN is still set, +* and this will cause that re-assemble partitioned raid device will +* creat partition for underlying disk. +*/ +clear_bit (GD_NEED_PART_SCAN , &disk->state);if (!(mode &FMODE_EXCL ))bd_abort_claiming (disk->part0, disk_scan_partitions);return ret;
drivers/acpi/acpi_video.c +13 -2
@@ -1984,6 +1984,7 @@ static int instance;static int acpi_video_bus_add (struct acpi_device *device) {struct acpi_video_bus *video; +bool auto_detect;int error;acpi_status status;
@@ -2045,10 +2046,20 @@ static int acpi_video_bus_add(struct acpi_device *device)mutex_unlock (&video_list_lock);/* -* The userspace visible backlight_device gets registered separately -* from acpi_video_register_backlight(). +* If backlight-type auto-detection is used then a native backlight may +* show up later and this may change the result from video to native. +* Therefor normally the userspace visible /sys/class/backlight device +* gets registered separately by the GPU driver calling +* acpi_video_register_backlight() when an internal panel is detected. +* Register the backlight now when not using auto-detection, so that +* when the kernel cmdline or DMI-quirks are used the backlight will +* get registered even if acpi_video_register_backlight() is not called. */ acpi_video_run_bcl_for_osi (video); +if (__acpi_video_get_backlight_type (false, &auto_detect) == acpi_backlight_video && + !auto_detect) +acpi_video_bus_register_backlight (video); +acpi_video_bus_add_notify_handler (video);return 0 ;
drivers/acpi/video_detect.c +45 -13
85 lines not on this page · raw message
drivers/block/ublk_drv.c +23 -3
@@ -233,7 +233,7 @@ static int ublk_validate_params(const struct ublk_device *ub)if (ub->params.types &UBLK_PARAM_TYPE_BASIC ) {const struct ublk_param_basic *p = &ub->params.basic; -if (p->logical_bs_shift >PAGE_SHIFT ) +if (p->logical_bs_shift >PAGE_SHIFT || p->logical_bs_shift <9 )return -EINVAL ;if (p->logical_bs_shift > p->physical_bs_shift)
@@ -1202,9 +1202,10 @@ static void ublk_handle_need_get_data(struct ublk_device *ub, int q_id,ublk_queue_cmd (ubq, req); } -static int ublk_ch_uring_cmd (struct io_uring_cmd *cmd,unsigned int issue_flags) +static int __ublk_ch_uring_cmd (struct io_uring_cmd *cmd, +unsigned int issue_flags, +struct ublksrv_io_cmd *ub_cmd) { -struct ublksrv_io_cmd *ub_cmd = (struct ublksrv_io_cmd *)cmd->cmd;struct ublk_device *ub = cmd->file->private_data;struct ublk_queue *ubq;struct ublk_io *io;
@@ -1306,6 +1307,23 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)return -EIOCBQUEUED ; } +static int ublk_ch_uring_cmd (struct io_uring_cmd *cmd,unsigned int issue_flags) +{ +struct ublksrv_io_cmd *ub_src = (struct ublksrv_io_cmd *) cmd->cmd; +struct ublksrv_io_cmd ub_cmd; + +/* +* Not necessary for async retry, but let's keep it simple and always +* copy the values to avoid any potential reuse. +*/ + ub_cmd.q_id =READ_ONCE (ub_src->q_id); + ub_cmd.tag =READ_ONCE (ub_src->tag); + ub_cmd.result =READ_ONCE (ub_src->result); + ub_cmd.addr =READ_ONCE (ub_src->addr); + +return __ublk_ch_uring_cmd (cmd, issue_flags, &ub_cmd); +} +static const struct file_operations ublk_ch_fops = { .owner =THIS_MODULE , .open = ublk_ch_open,
@@ -1886,6 +1904,8 @@ static int ublk_ctrl_set_params(struct io_uring_cmd *cmd)/* clear all we don't support yet */ ub->params.types &=UBLK_PARAM_TYPE_ALL ; ret =ublk_validate_params (ub); +if (ret) + ub->params.types =0 ; }mutex_unlock (&ub->mutex);ublk_put_device (ub);
drivers/counter/104-quad-8.c +9 -22
@@ -97,10 +97,6 @@ struct quad8 {struct quad8_reg __iomem *reg; }; -/* Borrow Toggle flip-flop */ -#define QUAD8_FLAG_BT BIT(0) -/* Carry Toggle flip-flop */ -#define QUAD8_FLAG_CT BIT(1)/* Error flag */ #define QUAD8_FLAG_E BIT(4)/* Up/Down flag */
@@ -133,6 +129,9 @@ struct quad8 {#define QUAD8_CMR_QUADRATURE_X2 0x10#define QUAD8_CMR_QUADRATURE_X4 0x18 +/* Each Counter is 24 bits wide */ +#define LS7267_CNTR_MAX GENMASK(23, 0) +static int quad8_signal_read (struct counter_device *counter,struct counter_signal *signal,enum counter_signal_level *level)
@@ -156,18 +155,10 @@ static int quad8_count_read(struct counter_device *counter, {struct quad8 *const priv =counter_priv (counter);struct channel_reg __iomem *const chan = priv->reg->channel + count->id; -unsigned int flags; -unsigned int borrow; -unsigned int carry;unsigned long irqflags;int i; - flags =ioread8 (&chan->control); - borrow = flags &QUAD8_FLAG_BT ; - carry = !!(flags &QUAD8_FLAG_CT ); - -/* Borrow XOR Carry effectively doubles count range */ - *val = (unsigned long )(borrow ^ carry) <<24 ; + *val =0 ;spin_lock_irqsave (&priv->lock, irqflags);
@@ -191,8 +182,7 @@ static int quad8_count_write(struct counter_device *counter,unsigned long irqflags;int i; -/* Only 24-bit values are supported */ -if (val >0xFFFFFF ) +if (val >LS7267_CNTR_MAX )return -ERANGE ;spin_lock_irqsave (&priv->lock, irqflags);
@@ -378,7 +368,7 @@ static int quad8_action_read(struct counter_device *counter,/* Handle Index signals */ if (synapse->signal->id >=16 ) { -if (priv->preset_enable[count->id]) +if (!priv->preset_enable[count->id]) *action =COUNTER_SYNAPSE_ACTION_RISING_EDGE ;else *action =COUNTER_SYNAPSE_ACTION_NONE ;
@@ -806,8 +796,7 @@ static int quad8_count_preset_write(struct counter_device *counter,struct quad8 *const priv =counter_priv (counter);unsigned long irqflags; -/* Only 24-bit values are supported */ -if (preset >0xFFFFFF ) +if (preset >LS7267_CNTR_MAX )return -ERANGE ;spin_lock_irqsave (&priv->lock, irqflags);
@@ -834,8 +823,7 @@ static int quad8_count_ceiling_read(struct counter_device *counter, *ceiling = priv->preset[count->id];break ;default : -/* By default 0x1FFFFFF (25 bits unsigned) is maximum count */ - *ceiling =0x1FFFFFF ; + *ceiling =LS7267_CNTR_MAX ;break ; }
@@ -850,8 +838,7 @@ static int quad8_count_ceiling_write(struct counter_device *counter,struct quad8 *const priv =counter_priv (counter);unsigned long irqflags; -/* Only 24-bit values are supported */ -if (ceiling >0xFFFFFF ) +if (ceiling >LS7267_CNTR_MAX )return -ERANGE ;spin_lock_irqsave (&priv->lock, irqflags);
drivers/cxl/core/pci.c +23 -15
@@ -483,7 +483,7 @@ static struct pci_doe_mb *find_cdat_doe(struct device *uport)return NULL ; } -#define CDAT_DOE_REQ (entry_handle) \ +#define CDAT_DOE_REQ (entry_handle) cpu_to_le32 \ (FIELD_PREP(CXL_DOE_TABLE_ACCESS_REQ_CODE, \ CXL_DOE_TABLE_ACCESS_REQ_CODE_READ) | \ FIELD_PREP(CXL_DOE_TABLE_ACCESS_TABLE_TYPE, \
@@ -496,8 +496,8 @@ static void cxl_doe_task_complete(struct pci_doe_task *task) }struct cdat_doe_task { -u32 request_pl; -u32 response_pl[32 ]; +__le32 request_pl; +__le32 response_pl[32 ];struct completion c;struct pci_doe_task task; };
@@ -531,10 +531,10 @@ static int cxl_cdat_get_length(struct device *dev,return rc; }wait_for_completion (&t.c); -if (t.task.rv <sizeof (u32)) +if (t.task.rv <2 *sizeof (__le32))return -EIO ; - *length = t.response_pl[1 ]; + *length =le32_to_cpu (t.response_pl[1 ]);dev_dbg (dev,"CDAT length %zu\n" , *length);return 0 ;
@@ -545,13 +545,13 @@ static int cxl_cdat_read_table(struct device *dev, struct cxl_cdat *cdat) {size_t length = cdat->length; -u32 *data = cdat->table; +__le32 *data = cdat->table;int entry_handle =0 ; do { DECLARE_CDAT_DOE_TASK(CDAT_DOE_REQ(entry_handle), t); + struct cdat_entry_header *entry; size_t entry_dw; - u32 *entry; int rc; rc = pci_doe_submit_task(cdat_doe, &t.task);
@@ -560,26 +560,34 @@ static int cxl_cdat_read_table(struct device *dev,return rc; }wait_for_completion (&t.c); -/* 1 DW header + 1 DW data min */ -if (t.task.rv < (2 *sizeof (u32))) + +/* 1 DW Table Access Response Header + CDAT entry */ + entry = (struct cdat_entry_header *)(t.response_pl +1 ); +if ((entry_handle ==0 && + t.task.rv !=sizeof (__le32) +sizeof (struct cdat_header )) || + (entry_handle >0 && + (t.task.rv <sizeof (__le32) +sizeof (*entry) || + t.task.rv !=sizeof (__le32) +le16_to_cpu (entry->length))))return -EIO ;/* Get the CXL table access header entry handle */ entry_handle =FIELD_GET (CXL_DOE_TABLE_ACCESS_ENTRY_HANDLE , - t.response_pl[0 ]); - entry = t.response_pl +1 ; - entry_dw = t.task.rv /sizeof (u32); +le32_to_cpu (t.response_pl[0 ])); + entry_dw = t.task.rv /sizeof (__le32);/* Skip Header */ entry_dw -=1 ; - entry_dw =min (length /sizeof (u32), entry_dw); + entry_dw =min (length /sizeof (__le32), entry_dw);/* Prevent length < 1 DW from causing a buffer overflow */ if (entry_dw) { -memcpy (data, entry, entry_dw *sizeof (u32)); - length -= entry_dw *sizeof (u32); +memcpy (data, entry, entry_dw *sizeof (__le32)); + length -= entry_dw *sizeof (__le32); data += entry_dw; } }while (entry_handle !=CXL_DOE_TABLE_ACCESS_LAST_ENTRY ); +/* Length in CDAT header may exceed concatenation of CDAT entries */ + cdat->length -= length; +return 0 ; }
drivers/cxl/cxlpci.h +14 -0
@@ -71,6 +71,20 @@ static inline resource_size_t cxl_regmap_to_base(struct pci_dev *pdev,return pci_resource_start (pdev, map->barno) + map->block_offset; } +struct cdat_header { +__le32 length; +u8 revision; +u8 checksum; +u8 reserved[6 ]; +__le32 sequence; +} __packed; + +struct cdat_entry_header { +u8 type; +u8 reserved; +__le16 length; +} __packed; +int devm_cxl_port_enumerate_dports (struct cxl_port *port);struct cxl_dev_state ;int cxl_hdm_decode_init (struct cxl_dev_state *cxlds,struct cxl_hdm *cxlhdm);
drivers/gpio/Kconfig +1 -1
@@ -100,7 +100,7 @@ config GPIO_GENERIC tristate config GPIO_REGMAP - depends on REGMAP + select REGMAP tristate # put drivers in the right section, in alphabetical order
drivers/gpio/gpio-davinci.c +1 -4
@@ -328,7 +328,7 @@ static struct irq_chip gpio_irqchip = { .irq_enable = gpio_irq_enable, .irq_disable = gpio_irq_disable, .irq_set_type = gpio_irq_type, - .flags = IRQCHIP_SET_TYPE_MASKED, + .flags = IRQCHIP_SET_TYPE_MASKED | IRQCHIP_SKIP_SET_WAKE, };static void gpio_irq_handler (struct irq_desc *desc)
@@ -645,9 +645,6 @@ static void davinci_gpio_save_context(struct davinci_gpio_controller *chips, context->set_falling =readl_relaxed (&g->set_falling); } -/* Clear Bank interrupt enable bit */ -writel_relaxed (0 , base +BINTEN ); -/* Clear all interrupt status registers */ writel_relaxed (GENMASK (31 ,0 ), &g->intstat); }
drivers/gpio/gpio-mvebu.c +6 -3
@@ -657,9 +657,10 @@ static void mvebu_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)spin_unlock_irqrestore (&mvpwm->lock, flags); } -static void mvebu_pwm_get_state (struct pwm_chip *chip, -struct pwm_device *pwm, -struct pwm_state *state) { +static int mvebu_pwm_get_state (struct pwm_chip *chip, +struct pwm_device *pwm, +struct pwm_state *state) +{struct mvebu_pwm *mvpwm =to_mvebu_pwm (chip);struct mvebu_gpio_chip *mvchip = mvpwm->mvchip;
@@ -693,6 +694,8 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, state->enabled = false;spin_unlock_irqrestore (&mvpwm->lock, flags); + +return 0 ; } static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +18 -0
@@ -3034,6 +3034,24 @@ static int amdgpu_device_ip_suspend_phase2(struct amdgpu_device *adev) adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_MES))continue ; +/* SDMA 5.x+ is part of GFX power domain so it's covered by GFXOFF */ +if (adev->in_s0ix && + (adev->ip_versions[SDMA0_HWIP ][0 ] >=IP_VERSION (5 ,0 ,0 )) && + (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_SDMA )) +continue ; + +/* Once swPSP provides the IMU, RLC FW binaries to TOS during cold-boot. +* These are in TMR, hence are expected to be reused by PSP-TOS to reload +* from this location and RLC Autoload automatically also gets loaded +* from here based on PMFW -> PSP message during re-init sequence. +* Therefore, the psp suspend & resume should be skipped to avoid destroy +* the TMR and reload FWs again for IMU enabled APU ASICs. +*/ +if (amdgpu_in_reset (adev) && + (adev->flags &AMD_IS_APU ) && adev->gfx.imu.funcs && + adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_PSP ) +continue ; +/* XXX handle errors */ r = adev->ip_blocks[i].version->funcs->suspend (adev);/* XXX handle errors */
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -0
@@ -2175,6 +2175,8 @@ static int detect_mst_link_for_all_connectors(struct drm_device *dev)DRM_ERROR ("DM_MST: Failed to start MST\n" ); aconnector->dc_link->type = dc_connection_single; + ret =dm_helpers_dp_mst_stop_top_mgr (aconnector->dc_link->ctx, + aconnector->dc_link);break ; } }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +1 -1
@@ -206,7 +206,7 @@ bool dm_helpers_dp_mst_write_payload_allocation_table(if (enable)drm_dp_add_payload_part1 (mst_mgr, mst_state, payload);else -drm_dp_remove_payload (mst_mgr, mst_state, payload); +drm_dp_remove_payload (mst_mgr, mst_state, payload, payload);/* mst_mgr->->payloads are VC payload notify MST branch using DPCD or * AUX message. The sequence is slot 1-63 allocated sequence for each
drivers/gpu/drm/bridge/lontium-lt9611.c +1 -0
@@ -258,6 +258,7 @@ static int lt9611_pll_setup(struct lt9611 *lt9611, const struct drm_display_mode { 0x8126, 0x55 }, { 0x8127, 0x66 }, { 0x8128, 0x88 }, + { 0x812a, 0x20 }, };regmap_multi_reg_write (lt9611->regmap, reg_cfg,ARRAY_SIZE (reg_cfg));
drivers/gpu/drm/bridge/ti-sn65dsi86.c +8 -6
@@ -1500,8 +1500,8 @@ static int ti_sn_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,return ret; } -static void ti_sn_pwm_get_state (struct pwm_chip *chip,struct pwm_device *pwm, -struct pwm_state *state) +static int ti_sn_pwm_get_state (struct pwm_chip *chip,struct pwm_device *pwm, +struct pwm_state *state) {struct ti_sn65dsi86 *pdata =pwm_chip_to_ti_sn_bridge (chip);unsigned int pwm_en_inv;
@@ -1512,19 +1512,19 @@ static void ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm, ret =regmap_read (pdata->regmap,SN_PWM_EN_INV_REG , &pwm_en_inv);if (ret) -return ; +return 0 ; ret =ti_sn65dsi86_read_u16 (pdata,SN_BACKLIGHT_SCALE_REG , &scale);if (ret) -return ; +return 0 ; ret =ti_sn65dsi86_read_u16 (pdata,SN_BACKLIGHT_REG , &backlight);if (ret) -return ; +return 0 ; ret =regmap_read (pdata->regmap,SN_PWM_PRE_DIV_REG , &pre_div);if (ret) -return ; +return 0 ; state->enabled =FIELD_GET (SN_PWM_EN_MASK , pwm_en_inv);if (FIELD_GET (SN_PWM_INV_MASK , pwm_en_inv))
@@ -1539,6 +1539,8 @@ static void ti_sn_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,if (state->duty_cycle > state->period) state->duty_cycle = state->period; + +return 0 ; }static const struct pwm_ops ti_sn_pwm_ops = {
drivers/gpu/drm/display/drm_dp_mst_topology.c +14 -12
@@ -3342,7 +3342,8 @@ EXPORT_SYMBOL(drm_dp_add_payload_part1);* drm_dp_remove_payload() - Remove an MST payload * @mgr: Manager to use. * @mst_state: The MST atomic state -* @payload: The payload to write +* @old_payload: The payload with its old state +* @new_payload: The payload to write * * Removes a payload from an MST topology if it was successfully assigned a start slot. Also updates * the starting time slots of all other payloads which would have been shifted towards the start of
@@ -3350,36 +3351,37 @@ EXPORT_SYMBOL(drm_dp_add_payload_part1);*/ void drm_dp_remove_payload (struct drm_dp_mst_topology_mgr *mgr,struct drm_dp_mst_topology_state *mst_state, -struct drm_dp_mst_atomic_payload *payload) +const struct drm_dp_mst_atomic_payload *old_payload, +struct drm_dp_mst_atomic_payload *new_payload) {struct drm_dp_mst_atomic_payload *pos;bool send_remove = false;/* We failed to make the payload, so nothing to do */ -if (payload->vc_start_slot ==-1 ) +if (new_payload->vc_start_slot ==-1 )return ;mutex_lock (&mgr->lock); - send_remove =drm_dp_mst_port_downstream_of_branch (payload->port, mgr->mst_primary); + send_remove =drm_dp_mst_port_downstream_of_branch (new_payload->port, mgr->mst_primary);mutex_unlock (&mgr->lock);if (send_remove) -drm_dp_destroy_payload_step1 (mgr, mst_state, payload); +drm_dp_destroy_payload_step1 (mgr, mst_state, new_payload);else drm_dbg_kms (mgr->dev,"Payload for VCPI %d not in topology, not sending remove\n" , - payload->vcpi); + new_payload->vcpi);list_for_each_entry (pos, &mst_state->payloads, next) { -if (pos != payload && pos->vc_start_slot > payload->vc_start_slot) - pos->vc_start_slot -= payload->time_slots; +if (pos != new_payload && pos->vc_start_slot > new_payload->vc_start_slot) + pos->vc_start_slot -= old_payload->time_slots; } - payload->vc_start_slot =-1 ; + new_payload->vc_start_slot =-1 ; mgr->payload_count--; - mgr->next_start_slot -= payload->time_slots; + mgr->next_start_slot -= old_payload->time_slots; -if (payload->delete) -drm_dp_mst_put_port_malloc (payload->port); +if (new_payload->delete) +drm_dp_mst_put_port_malloc (new_payload->port); }EXPORT_SYMBOL (drm_dp_remove_payload);
drivers/gpu/drm/i915/display/intel_color.c +20 -1
@@ -2098,6 +2098,25 @@ static void glk_read_luts(struct intel_crtc_state *crtc_state) } } +static void icl_color_commit_arm (const struct intel_crtc_state *crtc_state) +{ +struct intel_crtc *crtc =to_intel_crtc (crtc_state->uapi.crtc); +struct drm_i915_private *i915 =to_i915 (crtc->base.dev); +enum pipe pipe = crtc->pipe; + +/* +* We don't (yet) allow userspace to control the pipe background color, +* so force it to black. +*/ +intel_de_write (i915,SKL_BOTTOM_COLOR (pipe),0 ); + +intel_de_write (i915,GAMMA_MODE (crtc->pipe), + crtc_state->gamma_mode); + +intel_de_write_fw (i915,PIPE_CSC_MODE (crtc->pipe), + crtc_state->csc_mode); +} +static struct drm_property_blob *icl_read_lut_multi_segment (struct intel_crtc *crtc) {
@@ -2183,7 +2202,7 @@ static const struct intel_color_funcs i9xx_color_funcs = {static const struct intel_color_funcs icl_color_funcs = { .color_check = icl_color_check, .color_commit_noarm = icl_color_commit_noarm, - .color_commit_arm = skl_color_commit_arm, + .color_commit_arm = icl_color_commit_arm, .load_luts = icl_load_luts, .read_luts = icl_read_luts, };
drivers/gpu/drm/i915/display/intel_dp_mst.c +10 -4
@@ -364,8 +364,14 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state,struct intel_dp *intel_dp = &dig_port->dp;struct intel_connector *connector =to_intel_connector (old_conn_state->connector); -struct drm_dp_mst_topology_state *mst_state = -drm_atomic_get_mst_topology_state (&state->base, &intel_dp->mst_mgr); +struct drm_dp_mst_topology_state *old_mst_state = +drm_atomic_get_old_mst_topology_state (&state->base, &intel_dp->mst_mgr); +struct drm_dp_mst_topology_state *new_mst_state = +drm_atomic_get_new_mst_topology_state (&state->base, &intel_dp->mst_mgr); +const struct drm_dp_mst_atomic_payload *old_payload = +drm_atomic_get_mst_payload_state (old_mst_state, connector->port); +struct drm_dp_mst_atomic_payload *new_payload = +drm_atomic_get_mst_payload_state (new_mst_state, connector->port);struct drm_i915_private *i915 =to_i915 (connector->base.dev); drm_dbg_kms(&i915->drm, "active links %d\n",
@@ -373,8 +379,8 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state,intel_hdcp_disable (intel_mst->connector); -drm_dp_remove_payload (&intel_dp->mst_mgr, mst_state, -drm_atomic_get_mst_payload_state (mst_state, connector->port)); +drm_dp_remove_payload (&intel_dp->mst_mgr, new_mst_state, + old_payload, new_payload);intel_audio_codec_disable (encoder, old_crtc_state, old_conn_state); }
drivers/gpu/drm/i915/gt/intel_execlists_submission.c +10 -2
@@ -2017,6 +2017,8 @@ process_csb(struct intel_engine_cs *engine, struct i915_request **inactive)* inspecting the queue to see if we need to resumbit. */ if (*prev != *execlists->active) {/* elide lite-restores */ +struct intel_context *prev_ce =NULL , *active_ce =NULL ; +/* * Note the inherent discrepancy between the HW runtime, * recorded as part of the context switch, and the CPU
@@ -2028,9 +2030,15 @@ process_csb(struct intel_engine_cs *engine, struct i915_request **inactive)* and correct overselves later when updating from HW. */ if (*prev) -lrc_runtime_stop ((*prev)->context); + prev_ce = (*prev)->context;if (*execlists->active) -lrc_runtime_start ((*execlists->active)->context); + active_ce = (*execlists->active)->context; +if (prev_ce != active_ce) { +if (prev_ce) +lrc_runtime_stop (prev_ce); +if (active_ce) +lrc_runtime_start (active_ce); + }new_timeslice (execlists); }
drivers/gpu/drm/i915/i915_perf.c +3 -3
@@ -4270,13 +4270,13 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data, err = oa_config->id; goto sysfs_err; } - -mutex_unlock (&perf->metrics_lock); + id = oa_config->id;drm_dbg (&perf->i915->drm,"Added config %s id=%i\n" , oa_config->uuid, oa_config->id); +mutex_unlock (&perf->metrics_lock); -return oa_config->id; +return id; sysfs_err:mutex_unlock (&perf->metrics_lock);
drivers/gpu/drm/i915/i915_reg.h +2 -1
@@ -3747,9 +3747,10 @@/* Skylake+ pipe bottom (background) color */ #define _SKL_BOTTOM_COLOR_A 0x70034 +#define _SKL_BOTTOM_COLOR_B 0x71034#define SKL_BOTTOM_COLOR_GAMMA_ENABLE REG_BIT(31)#define SKL_BOTTOM_COLOR_CSC_ENABLE REG_BIT(30) -#define SKL_BOTTOM_COLOR (pipe) _MMIO_PIPE2(pipe, _SKL_BOTTOM_COLOR_A) +#define SKL_BOTTOM_COLOR (pipe) _MMIO_PIPE(pipe, _SKL_BOTTOM_COLOR_A, _SKL_BOTTOM_COLOR_B)#define _ICL_PIPE_A_STATUS 0x70058#define ICL_PIPESTATUS (pipe) _MMIO_PIPE2(pipe, _ICL_PIPE_A_STATUS)
drivers/gpu/drm/nouveau/dispnv50/disp.c +33 -1
@@ -410,6 +410,35 @@ nv50_outp_atomic_check_view(struct drm_encoder *encoder,return 0 ; } +static void +nv50_outp_atomic_fix_depth (struct drm_encoder *encoder,struct drm_crtc_state *crtc_state) +{ +struct nv50_head_atom *asyh =nv50_head_atom (crtc_state); +struct nouveau_encoder *nv_encoder =nouveau_encoder (encoder); +struct drm_display_mode *mode = &asyh->state.adjusted_mode; +unsigned int max_rate, mode_rate; + +switch (nv_encoder->dcb->type) { +case DCB_OUTPUT_DP : + max_rate = nv_encoder->dp.link_nr * nv_encoder->dp.link_bw; + +/* we don't support more than 10 anyway */ + asyh->or.bpc =min_t (u8, asyh->or.bpc,10 ); + +/* reduce the bpc until it works out */ +while (asyh->or.bpc >6 ) { + mode_rate =DIV_ROUND_UP (mode->clock * asyh->or.bpc *3 ,8 ); +if (mode_rate <= max_rate) +break ; + + asyh->or.bpc -=2 ; + } +break ; +default : +break ; + } +} + static int nv50_outp_atomic_check(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state,
@@ -428,6 +457,9 @@ nv50_outp_atomic_check(struct drm_encoder *encoder,if (crtc_state->mode_changed || crtc_state->connectors_changed) asyh->or.bpc = connector->display_info.bpc; +/* We might have to reduce the bpc */ +nv50_outp_atomic_fix_depth (encoder, crtc_state); +return 0 ; }
@@ -996,7 +1028,7 @@ nv50_msto_prepare(struct drm_atomic_state *state,// TODO: Figure out if we want to do a better job of handling VCPI allocation failures here? if (msto->disabled) { -drm_dp_remove_payload (mgr, mst_state, payload); +drm_dp_remove_payload (mgr, mst_state, payload, payload); }else {if (msto->enabled)drm_dp_add_payload_part1 (mgr, mst_state, payload);
drivers/gpu/drm/nouveau/nouveau_dp.c +5 -3
@@ -245,8 +245,6 @@ void nouveau_dp_irq(struct nouveau_drm *drm, }/* TODO: -* - Use the minimum possible BPC here, once we add support for the max bpc -* property. * - Validate against the DP caps advertised by the GPU (we don't check these * yet) */
@@ -258,7 +256,11 @@ nv50_dp_mode_valid(struct drm_connector *connector, {const unsigned int min_clock =25000 ;unsigned int max_rate, mode_rate, ds_max_dotclock, clock = mode->clock; -const u8 bpp = connector->display_info.bpc *3 ; +/* Check with the minmum bpc always, so we can advertise better modes. +* In particlar not doing this causes modes to be dropped on HDR +* displays as we might check with a bpc of 16 even. +*/ +const u8 bpp =6 *3 ;if (mode->flags &DRM_MODE_FLAG_INTERLACE && !outp->caps.dp_interlace)return MODE_NO_INTERLACE ;
drivers/gpu/drm/panfrost/panfrost_mmu.c +1 -0
@@ -504,6 +504,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_device *pfdev, int as,if (IS_ERR (pages[i])) {mutex_unlock (&bo->base.pages_lock); ret =PTR_ERR (pages[i]); + pages[i] =NULL ; goto err_pages; } }
drivers/hv/connection.c +4 -0
@@ -409,6 +409,10 @@ void vmbus_disconnect(void)*/ struct vmbus_channel *relid2channel (u32 relid) { +if (vmbus_connection.channels ==NULL ) { +pr_warn_once ("relid2channel: relid=%d: No channels mapped!\n" , relid); +return NULL ; + }if (WARN_ON (relid >=MAX_CHANNEL_RELIDS ))return NULL ;return READ_ONCE (vmbus_connection.channels[relid]);
drivers/hwtracing/coresight/coresight-etm4x-core.c +10 -14
@@ -451,7 +451,7 @@ static int etm4_enable_hw(struct etmv4_drvdata *drvdata)if (etm4x_sspcicrn_present (drvdata, i))etm4x_relaxed_write32 (csa, config->ss_pe_cmp[i],TRCSSPCICRn (i)); } -for (i =0 ; i < drvdata->nr_addr_cmp; i++) { +for (i =0 ; i < drvdata->nr_addr_cmp *2 ; i++) {etm4x_relaxed_write64 (csa, config->addr_val[i],TRCACVRn (i));etm4x_relaxed_write64 (csa, config->addr_acc[i],TRCACATRn (i)); }
@@ -1010,25 +1010,21 @@ static bool etm4_init_iomem_access(struct etmv4_drvdata *drvdata, struct csdev_access *csa) {u32 devarch =readl_relaxed (drvdata->base +TRCDEVARCH ); -u32 idr1 =readl_relaxed (drvdata->base +TRCIDR1 );/* * All ETMs must implement TRCDEVARCH to indicate that -* the component is an ETMv4. To support any broken -* implementations we fall back to TRCIDR1 check, which -* is not really reliable. +* the component is an ETMv4. Even though TRCIDR1 also +* contains the information, it is part of the "Trace" +* register and must be accessed with the OSLK cleared, +* with MMIO. But we cannot touch the OSLK until we are +* sure this is an ETM. So rely only on the TRCDEVARCH. */ -if ((devarch &ETM_DEVARCH_ID_MASK ) == ETM_DEVARCH_ETMv4x_ARCH) { - drvdata->arch =etm_devarch_to_arch (devarch); - }else { -pr_warn ("CPU%d: ETM4x incompatible TRCDEVARCH: %x, falling back to TRCIDR1\n" , -smp_processor_id (), devarch); - -if (ETM_TRCIDR1_ARCH_MAJOR (idr1) != ETM_TRCIDR1_ARCH_ETMv4) -return false; - drvdata->arch =etm_trcidr_to_arch (idr1); +if ((devarch &ETM_DEVARCH_ID_MASK ) != ETM_DEVARCH_ETMv4x_ARCH) { +pr_warn_once ("TRCDEVARCH doesn't match ETMv4 architecture\n" ); +return false; } + drvdata->arch =etm_devarch_to_arch (devarch); *csa =CSDEV_ACCESS_IOMEM (drvdata->base);return true; }
drivers/hwtracing/coresight/coresight-etm4x.h +6 -14
@@ -753,14 +753,12 @@* TRCDEVARCH - CoreSight architected register * - Bits[15:12] - Major version * - Bits[19:16] - Minor version -* TRCIDR1 - ETM architected register -* - Bits[11:8] - Major version -* - Bits[7:4] - Minor version -* We must rely on TRCDEVARCH for the version information, -* however we don't want to break the support for potential -* old implementations which might not implement it. Thus -* we fall back to TRCIDR1 if TRCDEVARCH is not implemented -* for memory mapped components. +* +* We must rely only on TRCDEVARCH for the version information. Even though, +* TRCIDR1 also provides the architecture version, it is a "Trace" register +* and as such must be accessed only with Trace power domain ON. This may +* not be available at probe time. +* * Now to make certain decisions easier based on the version * we use an internal representation of the version in the * driver, as follows :
@@ -786,12 +784,6 @@ static inline u8 etm_devarch_to_arch(u32 devarch) ETM_DEVARCH_REVISION(devarch)); } -static inline u8 etm_trcidr_to_arch (u32 trcidr1) -{ -return ETM_ARCH_VERSION (ETM_TRCIDR1_ARCH_MAJOR (trcidr1), -ETM_TRCIDR1_ARCH_MINOR (trcidr1)); -} -enum etm_impdef_type {ETM4_IMPDEF_HISI_CORE_COMMIT ,ETM4_IMPDEF_FEATURE_MAX ,
drivers/iio/adc/ad7791.c +1 -1
@@ -253,7 +253,7 @@ static const struct ad_sigma_delta_info ad7791_sigma_delta_info = { .has_registers = true, .addr_shift = 4, .read_mask = BIT(3), - .irq_flags = IRQF_TRIGGER_LOW, + .irq_flags = IRQF_TRIGGER_FALLING, }; static int ad7791_read_raw(struct iio_dev *indio_dev,
drivers/iio/adc/ltc2497.c +2 -4
@@ -28,7 +28,6 @@ struct ltc2497_driverdata {struct ltc2497core_driverdata common_ddata;struct i2c_client *client;u32 recv_size; -u32 sub_lsb;/* * DMA (thus cache coherency maintenance) may require the * transfer buffers to live in their own cache lines.
@@ -65,10 +64,10 @@ static int ltc2497_result_and_measure(struct ltc2497core_driverdata *ddata,* equivalent to a sign extension. */ if (st->recv_size ==3 ) { - *val = (get_unaligned_be24 (st->data.d8) >> st->sub_lsb) + *val = (get_unaligned_be24 (st->data.d8) >>6 ) -BIT (ddata->chip_info->resolution +1 ); }else { - *val = (be32_to_cpu (st->data.d32) >> st->sub_lsb) + *val = (be32_to_cpu (st->data.d32) >>6 ) -BIT (ddata->chip_info->resolution +1 ); }
@@ -122,7 +121,6 @@ static int ltc2497_probe(struct i2c_client *client, st->common_ddata.chip_info = chip_info; resolution = chip_info->resolution; - st->sub_lsb =31 - (resolution +1 ); st->recv_size =BITS_TO_BYTES (resolution) +1 ;return ltc2497core_probe (dev, indio_dev);
drivers/iio/adc/qcom-spmi-adc5.c +9 -1
@@ -626,12 +626,20 @@ static int adc5_get_fw_channel_data(struct adc5_chip *adc,struct fwnode_handle *fwnode, const struct adc5_data *data) { - const char *name = fwnode_get_name(fwnode), *channel_name; + const char *channel_name; +char *name;u32 chan, value, varr[2 ];u32 sid =0 ;int ret;struct device *dev = adc->dev; + name =devm_kasprintf (dev,GFP_KERNEL ,"%pfwP" , fwnode); +if (!name) +return -ENOMEM ; + +/* Cut the address part */ + name[strchrnul (name,'@' ) - name] ='\0' ; + ret =fwnode_property_read_u32 (fwnode,"reg" , &chan);if (ret) {dev_err (dev,"invalid channel number %s\n" , name);
drivers/iio/adc/ti-ads7950.c +1 -0
@@ -634,6 +634,7 @@ static int ti_ads7950_probe(struct spi_device *spi) st->chip.label =dev_name (&st->spi->dev); st->chip.parent = &st->spi->dev; st->chip.owner =THIS_MODULE ; + st->chip.can_sleep = true; st->chip.base =-1 ; st->chip.ngpio =TI_ADS7950_NUM_GPIOS ; st->chip.get_direction = ti_ads7950_get_direction;
drivers/iio/dac/cio-dac.c +2 -2
@@ -66,8 +66,8 @@ static int cio_dac_write_raw(struct iio_dev *indio_dev,if (mask !=IIO_CHAN_INFO_RAW )return -EINVAL ; -/* DAC can only accept up to a 16-bit value */ -if ((unsigned int )val >65535 ) +/* DAC can only accept up to a 12-bit value */ +if ((unsigned int )val >4095 )return -EINVAL ; priv->chan_out_states[chan->channel] = val;
drivers/iio/imu/Kconfig +1 -0
@@ -47,6 +47,7 @@ config ADIS16480 depends on SPI select IIO_ADIS_LIB select IIO_ADIS_LIB_BUFFER if IIO_BUFFER + select CRC32 help Say yes here to build support for Analog Devices ADIS16375, ADIS16480, ADIS16485, ADIS16488 inertial sensors.
drivers/iio/industrialio-buffer.c +12 -9
@@ -203,24 +203,27 @@ static ssize_t iio_buffer_write(struct file *filp, const char __user *buf,break ; } +if (filp->f_flags &O_NONBLOCK ) { +if (!written) + ret = -EAGAIN ; +break ; + } +wait_woken (&wait,TASK_INTERRUPTIBLE ,MAX_SCHEDULE_TIMEOUT );continue ; } ret = rb->access->write (rb, n - written, buf + written); -if (ret ==0 && (filp->f_flags &O_NONBLOCK )) - ret = -EAGAIN ; +if (ret <0 ) +break ; -if (ret >0 ) { - written += ret; -if (written != n && !(filp->f_flags &O_NONBLOCK )) -continue ; - } - }while (ret ==0 ); + written += ret; + + }while (written != n);remove_wait_queue (&rb->pollq, &wait); -return ret <0 ? ret : n; +return ret <0 ? ret : written; }/**
drivers/iio/light/cm32181.c +12 -0
@@ -429,6 +429,14 @@ static const struct iio_info cm32181_info = { .attrs = &cm32181_attribute_group, }; +static void cm32181_unregister_dummy_client (void *data) +{ +struct i2c_client *client = data; + +/* Unregister the dummy client */ +i2c_unregister_device (client); +} +static int cm32181_probe (struct i2c_client *client) {struct device *dev = &client->dev;
@@ -460,6 +468,10 @@ static int cm32181_probe(struct i2c_client *client) client =i2c_acpi_new_device (dev,1 , &board_info);if (IS_ERR (client))return PTR_ERR (client); + + ret =devm_add_action_or_reset (dev, cm32181_unregister_dummy_client, client); +if (ret) +return ret; } cm32181 =iio_priv (indio_dev);
drivers/leds/rgb/leds-qcom-lpg.c +8 -6
@@ -972,8 +972,8 @@ static int lpg_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,return ret; } -static void lpg_pwm_get_state (struct pwm_chip *chip,struct pwm_device *pwm, -struct pwm_state *state) +static int lpg_pwm_get_state (struct pwm_chip *chip,struct pwm_device *pwm, +struct pwm_state *state) { struct lpg *lpg = container_of(chip, struct lpg, pwm);struct lpg_channel *chan = &lpg->channels[pwm->hwpwm];
@@ -986,20 +986,20 @@ static void lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm, ret =regmap_read (lpg->map, chan->base +LPG_SIZE_CLK_REG , &val);if (ret) -return ; +return 0 ; refclk = lpg_clk_rates[val &PWM_CLK_SELECT_MASK ];if (refclk) { ret =regmap_read (lpg->map, chan->base +LPG_PREDIV_CLK_REG , &val);if (ret) -return ; +return 0 ; pre_div = lpg_pre_divs[FIELD_GET (PWM_FREQ_PRE_DIV_MASK , val)]; m =FIELD_GET (PWM_FREQ_EXP_MASK , val); ret =regmap_bulk_read (lpg->map, chan->base +PWM_VALUE_REG , &pwm_value,sizeof (pwm_value));if (ret) -return ; +return 0 ; state->period =DIV_ROUND_UP_ULL ((u64 )NSEC_PER_SEC *LPG_RESOLUTION * pre_div * (1 << m), refclk); state->duty_cycle =DIV_ROUND_UP_ULL ((u64 )NSEC_PER_SEC * pwm_value * pre_div * (1 << m), refclk);
@@ -1010,13 +1010,15 @@ static void lpg_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm, ret =regmap_read (lpg->map, chan->base +PWM_ENABLE_CONTROL_REG , &val);if (ret) -return ; +return 0 ; state->enabled =FIELD_GET (LPG_ENABLE_CONTROL_OUTPUT , val); state->polarity =PWM_POLARITY_NORMAL ;if (state->duty_cycle > state->period) state->duty_cycle = state->period; + +return 0 ; }static const struct pwm_ops lpg_pwm_ops = {
drivers/md/dm-bio-prison-v1.c +5 -5
@@ -285,14 +285,14 @@ EXPORT_SYMBOL_GPL(dm_cell_promote_or_release);struct dm_deferred_entry {struct dm_deferred_set *ds; -unsigned count; +unsigned int count;struct list_head work_items; };struct dm_deferred_set {spinlock_t lock; -unsigned current_entry; -unsigned sweeper; +unsigned int current_entry; +unsigned int sweeper;struct dm_deferred_entry entries[DEFERRED_SET_SIZE ]; };
@@ -338,7 +338,7 @@ struct dm_deferred_entry *dm_deferred_entry_inc(struct dm_deferred_set *ds) }EXPORT_SYMBOL_GPL (dm_deferred_entry_inc); -static unsigned ds_next (unsigned index) +static unsigned int ds_next (unsigned int index) {return (index +1 ) %DEFERRED_SET_SIZE ; }
@@ -373,7 +373,7 @@ EXPORT_SYMBOL_GPL(dm_deferred_entry_dec);int dm_deferred_set_add_work (struct dm_deferred_set *ds,struct list_head *work) {int r =1 ; -unsigned next_entry; +unsigned int next_entry;spin_lock_irq (&ds->lock); if ((ds->sweeper == ds->current_entry) &&
drivers/md/dm-bio-prison-v2.c +6 -6
@@ -148,7 +148,7 @@ static bool __find_or_insert(struct dm_bio_prison_v2 *prison,static bool __get (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct bio *inmate,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell)
@@ -171,7 +171,7 @@ static bool __get(struct dm_bio_prison_v2 *prison,bool dm_cell_get_v2 (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct bio *inmate,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell_result)
@@ -224,7 +224,7 @@ EXPORT_SYMBOL_GPL(dm_cell_put_v2);static int __lock (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell_result) {
@@ -255,7 +255,7 @@ static int __lock(struct dm_bio_prison_v2 *prison,int dm_cell_lock_v2 (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell_result) {
@@ -291,7 +291,7 @@ EXPORT_SYMBOL_GPL(dm_cell_quiesce_v2);static int __promote (struct dm_bio_prison_v2 *prison,struct dm_bio_prison_cell_v2 *cell, -unsigned new_lock_level) +unsigned int new_lock_level) {if (!cell->exclusive_lock)return -EINVAL ;
@@ -302,7 +302,7 @@ static int __promote(struct dm_bio_prison_v2 *prison,int dm_cell_lock_promote_v2 (struct dm_bio_prison_v2 *prison,struct dm_bio_prison_cell_v2 *cell, -unsigned new_lock_level) +unsigned int new_lock_level) {int r;
drivers/md/dm-bio-prison-v2.h +5 -5
@@ -44,8 +44,8 @@ struct dm_cell_key_v2 {struct dm_bio_prison_cell_v2 {// FIXME: pack these bool exclusive_lock; -unsigned exclusive_level; -unsigned shared_count; +unsigned int exclusive_level; +unsigned int shared_count;struct work_struct *quiesce_continuation;struct rb_node node;
@@ -86,7 +86,7 @@ void dm_bio_prison_free_cell_v2(struct dm_bio_prison_v2 *prison,*/ bool dm_cell_get_v2 (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct bio *inmate,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell_result);
@@ -114,7 +114,7 @@ bool dm_cell_put_v2(struct dm_bio_prison_v2 *prison,*/ int dm_cell_lock_v2 (struct dm_bio_prison_v2 *prison,struct dm_cell_key_v2 *key, -unsigned lock_level, +unsigned int lock_level,struct dm_bio_prison_cell_v2 *cell_prealloc,struct dm_bio_prison_cell_v2 **cell_result);
@@ -132,7 +132,7 @@ void dm_cell_quiesce_v2(struct dm_bio_prison_v2 *prison,*/ int dm_cell_lock_promote_v2 (struct dm_bio_prison_v2 *prison,struct dm_bio_prison_cell_v2 *cell, -unsigned new_lock_level); +unsigned int new_lock_level);/* * Adds any held bios to the bio list.
drivers/md/dm-bufio.c +29 -29
179 lines not on this page · raw message
drivers/md/dm-cache-background-tracker.c +4 -4
@@ -17,7 +17,7 @@ struct bt_work { };struct background_tracker { -unsigned max_work; +unsigned int max_work;atomic_t pending_promotes;atomic_t pending_writebacks;atomic_t pending_demotes;
@@ -29,7 +29,7 @@ struct background_tracker {struct kmem_cache *work_cache; }; -struct background_tracker *btracker_create (unsigned max_work) +struct background_tracker *btracker_create (unsigned int max_work) {struct background_tracker *b =kmalloc (sizeof (*b),GFP_KERNEL );
@@ -155,13 +155,13 @@ static void update_stats(struct background_tracker *b, struct policy_work *w, in } } -unsigned btracker_nr_writebacks_queued (struct background_tracker *b) +unsigned int btracker_nr_writebacks_queued (struct background_tracker *b) {return atomic_read (&b->pending_writebacks); }EXPORT_SYMBOL_GPL (btracker_nr_writebacks_queued); -unsigned btracker_nr_demotions_queued (struct background_tracker *b) +unsigned int btracker_nr_demotions_queued (struct background_tracker *b) {return atomic_read (&b->pending_demotes); }
drivers/md/dm-cache-background-tracker.h +40 -6
70 lines not on this page · raw message
drivers/md/dm-cache-metadata.c +20 -20
@@ -104,7 +104,7 @@ struct dm_cache_metadata {refcount_t ref_count;struct list_head list; -unsigned version; +unsigned int version;struct block_device *bdev;struct dm_block_manager *bm;struct dm_space_map *metadata_sm;
@@ -129,7 +129,7 @@ struct dm_cache_metadata { bool clean_when_opened:1;char policy_name[CACHE_POLICY_NAME_SIZE ]; -unsigned policy_version[CACHE_POLICY_VERSION_SIZE ]; +unsigned int policy_version[CACHE_POLICY_VERSION_SIZE ];size_t policy_hint_size;struct dm_cache_statistics stats;
@@ -260,10 +260,10 @@ static int superblock_lock(struct dm_cache_metadata *cmd,static int __superblock_all_zeroes (struct dm_block_manager *bm,bool *result) {int r; -unsigned i; +unsigned int i;struct dm_block *b;__le64 *data_le, zero =cpu_to_le64 (0 ); -unsigned sb_block_size =dm_bm_block_size (bm) /sizeof (__le64); +unsigned int sb_block_size =dm_bm_block_size (bm) /sizeof (__le64);/* * We can't use a validator here - it may be all zeroes.
@@ -727,7 +727,7 @@ static int __commit_transaction(struct dm_cache_metadata *cmd,*/ #define FLAGS_MASK ((1 << 16) - 1) -static __le64 pack_value (dm_oblock_t block,unsigned flags) +static __le64 pack_value (dm_oblock_t block,unsigned int flags) {uint64_t value =from_oblock (block); value <<=16 ;
@@ -735,7 +735,7 @@ static __le64 pack_value(dm_oblock_t block, unsigned flags)return cpu_to_le64 (value); } -static void unpack_value (__le64 value_le,dm_oblock_t *block,unsigned *flags) +static void unpack_value (__le64 value_le,dm_oblock_t *block,unsigned int *flags) {uint64_t value =le64_to_cpu (value_le);uint64_t b = value >>16 ;
@@ -749,7 +749,7 @@ static struct dm_cache_metadata *metadata_open(struct block_device *bdev,sector_t data_block_size, bool may_format_device, size_t policy_hint_size, - unsigned metadata_version) + unsigned int metadata_version) { int r;struct dm_cache_metadata *cmd;
@@ -810,7 +810,7 @@ static struct dm_cache_metadata *lookup_or_open(struct block_device *bdev,sector_t data_block_size, bool may_format_device, size_t policy_hint_size, - unsigned metadata_version) + unsigned int metadata_version) { struct dm_cache_metadata *cmd, *cmd2;
@@ -855,7 +855,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,sector_t data_block_size, bool may_format_device, size_t policy_hint_size, - unsigned metadata_version) + unsigned int metadata_version) { struct dm_cache_metadata *cmd = lookup_or_open(bdev, data_block_size, may_format_device, policy_hint_size, metadata_version);
@@ -890,7 +890,7 @@ static int block_clean_combined_dirty(struct dm_cache_metadata *cmd, dm_cblock_tint r;__le64 value;dm_oblock_t ob; -unsigned flags; +unsigned int flags; r =dm_array_get_value (&cmd->info, cmd->root,from_cblock (b), &value);if (r)
@@ -1288,7 +1288,7 @@ static bool policy_unchanged(struct dm_cache_metadata *cmd, struct dm_cache_policy *policy) {const char *policy_name =dm_cache_policy_get_name (policy); -const unsigned *policy_version =dm_cache_policy_get_version (policy); +const unsigned int *policy_version =dm_cache_policy_get_version (policy);size_t policy_hint_size =dm_cache_policy_get_hint_size (policy);/*
@@ -1339,7 +1339,7 @@ static int __load_mapping_v1(struct dm_cache_metadata *cmd,__le32 *hint_value_le;dm_oblock_t oblock; -unsigned flags; +unsigned int flags;bool dirty = true;dm_array_cursor_get_value (mapping_cursor, (void **) &mapping_value_le);
@@ -1381,7 +1381,7 @@ static int __load_mapping_v2(struct dm_cache_metadata *cmd,__le32 *hint_value_le;dm_oblock_t oblock; -unsigned flags; +unsigned int flags;bool dirty = true;dm_array_cursor_get_value (mapping_cursor, (void **) &mapping_value_le);
@@ -1513,7 +1513,7 @@ static int __dump_mapping(void *context, uint64_t cblock, void *leaf) {__le64 value;dm_oblock_t oblock; -unsigned flags; +unsigned int flags;memcpy (&value, leaf,sizeof (value));unpack_value (value, &oblock, &flags);
@@ -1547,7 +1547,7 @@ int dm_cache_changed_this_transaction(struct dm_cache_metadata *cmd)static int __dirty (struct dm_cache_metadata *cmd,dm_cblock_t cblock,bool dirty) {int r; -unsigned flags; +unsigned int flags;dm_oblock_t oblock;__le64 value;
@@ -1574,10 +1574,10 @@ static int __dirty(struct dm_cache_metadata *cmd, dm_cblock_t cblock, bool dirty } -static int __set_dirty_bits_v1 (struct dm_cache_metadata *cmd,unsigned nr_bits,unsigned long *bits) +static int __set_dirty_bits_v1 (struct dm_cache_metadata *cmd,unsigned int nr_bits,unsigned long *bits) {int r; -unsigned i; +unsigned int i;for (i =0 ; i < nr_bits; i++) { r =__dirty (cmd,to_cblock (i),test_bit (i, bits));if (r)
@@ -1594,7 +1594,7 @@ static int is_dirty_callback(uint32_t index, bool *value, void *context)return 0 ; } -static int __set_dirty_bits_v2 (struct dm_cache_metadata *cmd,unsigned nr_bits,unsigned long *bits) +static int __set_dirty_bits_v2 (struct dm_cache_metadata *cmd,unsigned int nr_bits,unsigned long *bits) {int r =0 ;
@@ -1613,7 +1613,7 @@ static int __set_dirty_bits_v2(struct dm_cache_metadata *cmd, unsigned nr_bits, }int dm_cache_set_dirty_bits (struct dm_cache_metadata *cmd, -unsigned nr_bits, +unsigned int nr_bits,unsigned long *bits) {int r;
@@ -1712,7 +1712,7 @@ static int write_hints(struct dm_cache_metadata *cmd, struct dm_cache_policy *point r;size_t hint_size;const char *policy_name =dm_cache_policy_get_name (policy); -const unsigned *policy_version =dm_cache_policy_get_version (policy); +const unsigned int *policy_version =dm_cache_policy_get_version (policy);if (!policy_name[0 ] || (strlen (policy_name) >sizeof (cmd->policy_name) -1 ))
drivers/md/dm-cache-metadata.h +2 -2
@@ -60,7 +60,7 @@ struct dm_cache_metadata *dm_cache_metadata_open(struct block_device *bdev,sector_t data_block_size, bool may_format_device, size_t policy_hint_size, - unsigned metadata_version); + unsigned int metadata_version);void dm_cache_metadata_close (struct dm_cache_metadata *cmd);
@@ -96,7 +96,7 @@ int dm_cache_load_mappings(struct dm_cache_metadata *cmd, void *context);int dm_cache_set_dirty_bits (struct dm_cache_metadata *cmd, -unsigned nr_bits,unsigned long *bits); +unsigned int nr_bits,unsigned long *bits);struct dm_cache_statistics {uint32_t read_hits;
drivers/md/dm-cache-policy-internal.h +5 -5
@@ -85,7 +85,7 @@ static inline void policy_tick(struct dm_cache_policy *p, bool can_block) }static inline int policy_emit_config_values (struct dm_cache_policy *p,char *result, -unsigned maxlen,ssize_t *sz_ptr) +unsigned int maxlen,ssize_t *sz_ptr) {ssize_t sz = *sz_ptr;if (p->emit_config_values)
@@ -112,18 +112,18 @@ static inline void policy_allow_migrations(struct dm_cache_policy *p, bool allow/* * Some utility functions commonly used by policies and the core target. */ -static inline size_t bitset_size_in_bytes (unsigned nr_entries) +static inline size_t bitset_size_in_bytes (unsigned int nr_entries) {return sizeof (unsigned long ) *dm_div_up (nr_entries,BITS_PER_LONG ); } -static inline unsigned long *alloc_bitset (unsigned nr_entries) +static inline unsigned long *alloc_bitset (unsigned int nr_entries) {size_t s =bitset_size_in_bytes (nr_entries);return vzalloc (s); } -static inline void clear_bitset (void *bitset,unsigned nr_entries) +static inline void clear_bitset (void *bitset,unsigned int nr_entries) {size_t s =bitset_size_in_bytes (nr_entries);memset (bitset,0 , s);
@@ -154,7 +154,7 @@ void dm_cache_policy_destroy(struct dm_cache_policy *p);*/ const char *dm_cache_policy_get_name (struct dm_cache_policy *p); -const unsigned *dm_cache_policy_get_version (struct dm_cache_policy *p); +const unsigned int *dm_cache_policy_get_version (struct dm_cache_policy *p);size_t dm_cache_policy_get_hint_size (struct dm_cache_policy *p);
drivers/md/dm-cache-policy-smq.c +82 -81
485 lines not on this page · raw message
drivers/md/dm-cache-policy.c +1 -1
@@ -154,7 +154,7 @@ const char *dm_cache_policy_get_name(struct dm_cache_policy *p) }EXPORT_SYMBOL_GPL (dm_cache_policy_get_name); -const unsigned *dm_cache_policy_get_version (struct dm_cache_policy *p) +const unsigned int *dm_cache_policy_get_version (struct dm_cache_policy *p) {struct dm_cache_policy_type *t = p->private;
drivers/md/dm-cache-policy.h +2 -2
@@ -128,7 +128,7 @@ struct dm_cache_policy {* Configuration. */ int (*emit_config_values)(struct dm_cache_policy *p,char *result, -unsigned maxlen,ssize_t *sz_ptr); +unsigned int maxlen,ssize_t *sz_ptr);int (*set_config_value)(struct dm_cache_policy *p,const char *key,const char *value);
@@ -157,7 +157,7 @@ struct dm_cache_policy_type {* what gets passed on the target line to select your policy. */ char name[CACHE_POLICY_NAME_SIZE ]; -unsigned version[CACHE_POLICY_VERSION_SIZE ]; +unsigned int version[CACHE_POLICY_VERSION_SIZE ];/* * For use by an alias dm_cache_policy_type to point to the
drivers/md/dm-cache-target.c +25 -25
129 lines not on this page · raw message
drivers/md/dm-crypt.c +24 -24
48 lines not on this page · raw message
drivers/md/dm-integrity.c +161 -167
328 lines not on this page · raw message
drivers/md/dm-mpath.c +23 -23
46 lines not on this page · raw message
drivers/md/dm-stats.c +37 -37
74 lines not on this page · raw message
drivers/md/dm-switch.c +23 -23
46 lines not on this page · raw message
drivers/md/dm-thin.c +23 -23
46 lines not on this page · raw message
drivers/md/dm-writecache.c +40 -40
80 lines not on this page · raw message
drivers/md/dm.c +27 -28
55 lines not on this page · raw message
drivers/md/persistent-data/dm-array.c +35 -34
69 lines not on this page · raw message
drivers/md/persistent-data/dm-block-manager.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-block-manager.h +3 -3
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-btree-remove.c +23 -23
46 lines not on this page · raw message
drivers/md/persistent-data/dm-btree-spine.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-btree.c +49 -49
98 lines not on this page · raw message
drivers/md/persistent-data/dm-persistent-data-internal.h +3 -3
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-space-map-common.c +14 -14
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-space-map-metadata.c +10 -10
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-transaction-manager.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/md/persistent-data/dm-transaction-manager.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_tx.c +5 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c +20 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +18 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +26 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/main.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +21 -49
70 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/main.c +7 -8
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +2 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x02_util.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7915/main.c +6 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +6 -7
Lines of this file are not shown. View the raw message.
drivers/usb/typec/altmodes/displayport.c +5 -1
Lines of this file are not shown. View the raw message.
fs/ksmbd/smb_common.c +109 -29
138 lines not on this page · raw message
include/drm/display/drm_dp_mst_helper.h +2 -1
Lines of this file are not shown. View the raw message.
lib/maple_tree.c +248 -135
383 lines not on this page · raw message
net/can/isotp.c +48 -26
74 lines not on this page · raw message
net/ipv4/raw.c +26 -23
49 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.