Linux 6.2.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.2.11 kernel.
All users of the 6.2 kernel series must upgrade.
The updated 6.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.2.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/s390/kvm/intercept.c | 32 - arch/x86/kernel/acpi/boot.c | 9 arch/x86/kvm/kvm_onhyperv.h | 5 arch/x86/kvm/svm/svm.c | 37 + arch/x86/kvm/svm/svm_onhyperv.h | 15 arch/x86/kvm/vmx/nested.c | 7 arch/x86/kvm/x86.c | 11 block/blk-mq.c | 4 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/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/bridge/lontium-lt9611.c | 1 drivers/gpu/drm/i915/display/intel_color.c | 23 drivers/gpu/drm/i915/display/intel_color.h | 3 drivers/gpu/drm/i915/display/intel_display.c | 28 drivers/gpu/drm/i915/display/intel_display.h | 8 drivers/gpu/drm/i915/gt/intel_execlists_submission.c | 12 drivers/gpu/drm/i915/gt/uc/intel_huc.c | 7 drivers/gpu/drm/i915/gt/uc/intel_huc.h | 7 drivers/gpu/drm/i915/i915_perf.c | 6 drivers/gpu/drm/nouveau/dispnv50/disp.c | 32 + 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/accel/kionix-kx022a.c | 2 drivers/iio/adc/ad7791.c | 2 drivers/iio/adc/ltc2497.c | 6 drivers/iio/adc/max11410.c | 22 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/iio/light/vcnl4000.c | 3 drivers/iommu/iommufd/pages.c | 16 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/mediatek/mtk_eth_soc.c | 4 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/net/wireless/mediatek/mt76/mt7921/pci.c | 2 drivers/net/wireless/mediatek/mt76/mt7996/main.c | 13 drivers/nvme/host/core.c | 6 drivers/pci/doe.c | 30 - drivers/platform/x86/think-lmi.c | 20 drivers/pwm/pwm-cros-ec.c | 1 drivers/pwm/pwm-hibvt.c | 1 drivers/pwm/pwm-iqs620a.c | 1 drivers/pwm/pwm-meson.c | 8 drivers/pwm/pwm-sprd.c | 1 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 | 10 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-pci.c | 7 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/dax.c | 52 + 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/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/net/raw.h | 15 io_uring/io_uring.c | 2 io_uring/kbuf.c | 7 kernel/events/core.c | 14 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-topology.c | 8 sound/soc/sof/ipc4.c | 8 tools/testing/radix-tree/maple.c | 18 241 files changed, 2636 insertions(+), 1756 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
Daniele Ceraolo Spurio (1):
drm/i915/huc: Cancel HuC delayed load timer on reset.
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
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 (3):
wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for non-uploaded sta
net: ethernet: mtk_eth_soc: fix remaining throughput regression
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.2.11
Guennadi Liakhovetski (1):
ASoC: SOF: avoid a NULL dereference with unsupported widgets
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
Jakub Kicinski (1):
net: don't let netpoll invoke NAPI if in xmit context
Jason Gunthorpe (3):
iommufd: Check for uptr overflow
iommufd: Fix unpinning of pages when an access is present
iommufd: Do not corrupt the pfn list when doing batch carry
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
Jeremi Piotrowski (1):
KVM: SVM: Flush Hyper-V TLB when required
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
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
Lorenzo Bianconi (1):
wifi: mt76: mt7921: fix fw used for offload check for mt7922
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
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 (2):
Revert "usb: xhci-pci: Set PROBE_PREFER_ASYNCHRONOUS"
xhci: Free the command allocated for setting LPM if we return early
Mehdi Djait (1):
iio: accel: kionix-kx022a: Get the timestamp from the driver's private data in the trigger_handler
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
Mårten Lindahl (1):
iio: light: vcnl4000: Fix WARN_ON on uninitialized lock
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á (4):
iio: adc: max11410: fix read_poll_timeout() usage
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
Peter Zijlstra (1):
perf: Optimize perf_pmu_migrate_context()
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()
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 (2):
tty: serial: fsl_lpuart: avoid checking for transfer complete when UARTCTRL_SBK is asserted in lpuart32_tx_empty
tty: serial: fsl_lpuart: fix crash in lpuart_uport_is_active
Shiyang Ruan (3):
fsdax: dedupe should compare the min of two iters' length
fsdax: unshare: zero destination if srcmap is HOLE or UNWRITTEN
fsdax: force clear dirty mark if CoW
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 (5):
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: Move the DSB setup/cleaup into the color code drm/i915: Add a .color_post_update() hook
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
@@ -92,7 +92,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
@@ -107,7 +107,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 = 2 -SUBLEVEL = 10 +SUBLEVEL = 11 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/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/kvm_onhyperv.h +5 -0
@@ -12,6 +12,11 @@ int hv_remote_flush_tlb_with_range(struct kvm *kvm,int hv_remote_flush_tlb (struct kvm *kvm);void hv_track_root_tdp (struct kvm_vcpu *vcpu,hpa_t root_tdp);#else /* !CONFIG_HYPERV */ +static inline int hv_remote_flush_tlb (struct kvm *kvm) +{ +return -EOPNOTSUPP ; +} +static inline void hv_track_root_tdp (struct kvm_vcpu *vcpu,hpa_t root_tdp) { }
arch/x86/kvm/svm/svm.c +34 -3
@@ -3718,7 +3718,7 @@ static void svm_enable_nmi_window(struct kvm_vcpu *vcpu) svm->vmcb->save.rflags |= (X86_EFLAGS_TF |X86_EFLAGS_RF ); } -static void svm_flush_tlb_current (struct kvm_vcpu *vcpu) +static void svm_flush_tlb_asid (struct kvm_vcpu *vcpu) {struct vcpu_svm *svm =to_svm (vcpu);
@@ -3742,6 +3742,37 @@ static void svm_flush_tlb_current(struct kvm_vcpu *vcpu) svm->current_vmcb->asid_generation--; } +static void svm_flush_tlb_current (struct kvm_vcpu *vcpu) +{ +hpa_t root_tdp = vcpu->arch.mmu->root.hpa; + +/* +* When running on Hyper-V with EnlightenedNptTlb enabled, explicitly +* flush the NPT mappings via hypercall as flushing the ASID only +* affects virtual to physical mappings, it does not invalidate guest +* physical to host physical mappings. +*/ +if (svm_hv_is_enlightened_tlb_enabled (vcpu) &&VALID_PAGE (root_tdp)) +hyperv_flush_guest_mapping (root_tdp); + +svm_flush_tlb_asid (vcpu); +} + +static void svm_flush_tlb_all (struct kvm_vcpu *vcpu) +{ +/* +* When running on Hyper-V with EnlightenedNptTlb enabled, remote TLB +* flushes should be routed to hv_remote_flush_tlb() without requesting +* a "regular" remote flush. Reaching this point means either there's +* a KVM bug or a prior hv_remote_flush_tlb() call failed, both of +* which might be fatal to the guest. Yell, but try to recover. +*/ +if (WARN_ON_ONCE (svm_hv_is_enlightened_tlb_enabled (vcpu))) +hv_remote_flush_tlb (vcpu->kvm); + +svm_flush_tlb_asid (vcpu); +} +static void svm_flush_tlb_gva (struct kvm_vcpu *vcpu,gva_t gva) {struct vcpu_svm *svm =to_svm (vcpu);
@@ -4747,10 +4778,10 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { .set_rflags = svm_set_rflags, .get_if_flag = svm_get_if_flag, - .flush_tlb_all = svm_flush_tlb_current, + .flush_tlb_all = svm_flush_tlb_all, .flush_tlb_current = svm_flush_tlb_current, .flush_tlb_gva = svm_flush_tlb_gva, - .flush_tlb_guest = svm_flush_tlb_current, + .flush_tlb_guest = svm_flush_tlb_asid, .vcpu_pre_run = svm_vcpu_pre_run, .vcpu_run = svm_vcpu_run,
arch/x86/kvm/svm/svm_onhyperv.h +15 -0
@@ -6,6 +6,8 @@#ifndef __ARCH_X86_KVM_SVM_ONHYPERV_H__#define __ARCH_X86_KVM_SVM_ONHYPERV_H__ +#include <asm/mshyperv.h> +#if IS_ENABLED (CONFIG_HYPERV )#include "kvm_onhyperv.h"
@@ -15,6 +17,14 @@ static struct kvm_x86_ops svm_x86_ops;int svm_hv_enable_l2_tlb_flush (struct kvm_vcpu *vcpu); +static inline bool svm_hv_is_enlightened_tlb_enabled (struct kvm_vcpu *vcpu) +{ +struct hv_vmcb_enlightenments *hve = &to_svm (vcpu)->vmcb->control.hv_enlightenments; + +return ms_hyperv.nested_features &HV_X64_NESTED_ENLIGHTENED_TLB && + !!hve->hv_enlightenments_control.enlightened_npt_tlb; +} +static inline void svm_hv_init_vmcb (struct vmcb *vmcb) {struct hv_vmcb_enlightenments *hve = &vmcb->control.hv_enlightenments;
@@ -80,6 +90,11 @@ static inline void svm_hv_update_vp_id(struct vmcb *vmcb, struct kvm_vcpu *vcpu) }#else +static inline bool svm_hv_is_enlightened_tlb_enabled (struct kvm_vcpu *vcpu) +{ +return false; +} +static inline void svm_hv_init_vmcb (struct vmcb *vmcb) { }
arch/x86/kvm/vmx/nested.c +6 -1
@@ -3873,7 +3873,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
@@ -9795,13 +9795,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
@@ -1359,8 +1359,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);
@@ -1368,7 +1366,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/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
@@ -480,7 +480,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, \
@@ -493,8 +493,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; };
@@ -528,10 +528,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 ;
@@ -542,13 +542,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);
@@ -557,26 +557,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
@@ -62,6 +62,20 @@ enum cxl_regloc_type { CXL_REGLOC_RBI_TYPES }; +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
@@ -325,7 +325,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)
@@ -642,9 +642,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/gpu/drm/amd/amdgpu/amdgpu_device.c +18 -0
@@ -3045,6 +3045,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
@@ -2183,6 +2183,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/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/i915/display/intel_color.c +23 -0
@@ -46,6 +46,11 @@ struct intel_color_funcs {* registers involved with the same commit. */ void (*color_commit_arm)(const struct intel_crtc_state *crtc_state); +/* +* Perform any extra tasks needed after all the +* double buffered registers have been latched. +*/ +void (*color_post_update)(const struct intel_crtc_state *crtc_state);/* * Load LUTs (and other single buffered color management * registers). Will (hopefully) be called during the vblank
@@ -1220,6 +1225,24 @@ void intel_color_commit_arm(const struct intel_crtc_state *crtc_state) i915->display.funcs.color->color_commit_arm (crtc_state); } +void intel_color_post_update (const struct intel_crtc_state *crtc_state) +{ +struct drm_i915_private *i915 =to_i915 (crtc_state->uapi.crtc->dev); + +if (i915->display.funcs.color->color_post_update) + i915->display.funcs.color->color_post_update (crtc_state); +} + +void intel_color_prepare_commit (struct intel_crtc_state *crtc_state) +{ +intel_dsb_prepare (crtc_state); +} + +void intel_color_cleanup_commit (struct intel_crtc_state *crtc_state) +{ +intel_dsb_cleanup (crtc_state); +} +static bool intel_can_preload_luts (const struct intel_crtc_state *new_crtc_state) {struct intel_crtc *crtc =to_intel_crtc (new_crtc_state->uapi.crtc);
drivers/gpu/drm/i915/display/intel_color.h +3 -0
@@ -17,8 +17,11 @@ void intel_color_init_hooks(struct drm_i915_private *i915);int intel_color_init (struct drm_i915_private *i915);void intel_color_crtc_init (struct intel_crtc *crtc);int intel_color_check (struct intel_crtc_state *crtc_state); +void intel_color_prepare_commit (struct intel_crtc_state *crtc_state); +void intel_color_cleanup_commit (struct intel_crtc_state *crtc_state);void intel_color_commit_noarm (const struct intel_crtc_state *crtc_state);void intel_color_commit_arm (const struct intel_crtc_state *crtc_state); +void intel_color_post_update (const struct intel_crtc_state *crtc_state);void intel_color_load_luts (const struct intel_crtc_state *crtc_state);void intel_color_get_config (struct intel_crtc_state *crtc_state);int intel_color_get_gamma_bit_precision (const struct intel_crtc_state *crtc_state);
drivers/gpu/drm/i915/display/intel_display.c +13 -15
@@ -93,7 +93,6 @@#include "intel_dp_link_training.h" #include "intel_dpio_phy.h" #include "intel_dpt.h" -#include "intel_dsb.h" #include "intel_fbc.h" #include "intel_fbdev.h" #include "intel_fdi.h"
@@ -1264,6 +1263,9 @@ static void intel_post_plane_update(struct intel_atomic_state *state,if (needs_cursorclk_wa (old_crtc_state) && !needs_cursorclk_wa (new_crtc_state))icl_wa_cursorclkgating (dev_priv, pipe, false); + +if (intel_crtc_needs_color_update (new_crtc_state)) +intel_color_post_update (new_crtc_state); } static void intel_crtc_enable_flip_done(struct intel_atomic_state *state,
@@ -6946,7 +6948,7 @@ static int intel_atomic_prepare_commit(struct intel_atomic_state *state)for_each_new_intel_crtc_in_state (state, crtc, crtc_state, i) {if (intel_crtc_needs_color_update (crtc_state)) -intel_dsb_prepare (crtc_state); +intel_color_prepare_commit (crtc_state); }return 0 ;
@@ -7399,24 +7401,18 @@ static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_stat &wait_reset); } -static void intel_cleanup_dsbs (struct intel_atomic_state *state) -{ -struct intel_crtc_state *old_crtc_state, *new_crtc_state; -struct intel_crtc *crtc; -int i; - -for_each_oldnew_intel_crtc_in_state (state, crtc, old_crtc_state, - new_crtc_state, i) -intel_dsb_cleanup (old_crtc_state); -} -static void intel_atomic_cleanup_work (struct work_struct *work) {struct intel_atomic_state *state = container_of(work, struct intel_atomic_state, base.commit_work);struct drm_i915_private *i915 =to_i915 (state->base.dev); +struct intel_crtc_state *old_crtc_state; +struct intel_crtc *crtc; +int i; + +for_each_old_intel_crtc_in_state (state, crtc, old_crtc_state, i) +intel_color_cleanup_commit (old_crtc_state); -intel_cleanup_dsbs (state);drm_atomic_helper_cleanup_planes (&i915->drm, &state->base);drm_atomic_helper_commit_cleanup_done (&state->base);drm_atomic_state_put (&state->base);
@@ -7624,6 +7620,8 @@ static void intel_atomic_commit_tail(struct intel_atomic_state *state)* DSB cleanup is done in cleanup_work aligning with framebuffer * cleanup. So copy and reset the dsb structure to sync with * commit_done and later do dsb cleanup in cleanup_work. +* +* FIXME get rid of this funny new->old swapping */ old_crtc_state->dsb =fetch_and_zero (&new_crtc_state->dsb); }
@@ -7774,7 +7772,7 @@ static int intel_atomic_commit(struct drm_device *dev,i915_sw_fence_commit (&state->commit_ready);for_each_new_intel_crtc_in_state (state, crtc, new_crtc_state, i) -intel_dsb_cleanup (new_crtc_state); +intel_color_cleanup_commit (new_crtc_state);drm_atomic_helper_cleanup_planes (dev, &state->base);intel_runtime_pm_put (&dev_priv->runtime_pm, state->wakeref);
drivers/gpu/drm/i915/display/intel_display.h +8 -0
@@ -440,6 +440,14 @@ enum hpd_pin { (__i)++) \ for_each_if(plane) +#define for_each_old_intel_crtc_in_state (__state, crtc, old_crtc_state, __i) \ + for ((__i) = 0; \ + (__i) < (__state)->base.dev->mode_config.num_crtc && \ + ((crtc) = to_intel_crtc((__state)->base.crtcs[__i].ptr), \ + (old_crtc_state) = to_intel_crtc_state((__state)->base.crtcs[__i].old_state), 1); \ + (__i)++) \ + for_each_if(crtc) +#define for_each_new_intel_plane_in_state (__state, plane, new_plane_state, __i) \ for ((__i) = 0; \ (__i) < (__state)->base.dev->mode_config.num_total_plane && \
drivers/gpu/drm/i915/gt/intel_execlists_submission.c +10 -2
@@ -2018,6 +2018,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
@@ -2029,9 +2031,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/gt/uc/intel_huc.c +7 -0
@@ -235,6 +235,13 @@ static void delayed_huc_load_fini(struct intel_huc *huc)i915_sw_fence_fini (&huc->delayed_load.fence); } +int intel_huc_sanitize (struct intel_huc *huc) +{ +delayed_huc_load_complete (huc); +intel_uc_fw_sanitize (&huc->fw); +return 0 ; +} +static bool vcs_supported (struct intel_gt *gt) {intel_engine_mask_t mask = gt->info.engine_mask;
drivers/gpu/drm/i915/gt/uc/intel_huc.h +1 -6
@@ -41,6 +41,7 @@ struct intel_huc { } delayed_load; }; +int intel_huc_sanitize (struct intel_huc *huc);void intel_huc_init_early (struct intel_huc *huc);int intel_huc_init (struct intel_huc *huc);void intel_huc_fini (struct intel_huc *huc);
@@ -54,12 +55,6 @@ bool intel_huc_is_authenticated(struct intel_huc *huc);void intel_huc_register_gsc_notifier (struct intel_huc *huc,struct bus_type *bus);void intel_huc_unregister_gsc_notifier (struct intel_huc *huc,struct bus_type *bus); -static inline int intel_huc_sanitize (struct intel_huc *huc) -{ -intel_uc_fw_sanitize (&huc->fw); -return 0 ; -} -static inline bool intel_huc_is_supported (struct intel_huc *huc) {return intel_uc_fw_is_supported (&huc->fw);
drivers/gpu/drm/i915/i915_perf.c +3 -3
@@ -4612,13 +4612,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/nouveau/dispnv50/disp.c +32 -0
@@ -363,6 +363,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,
@@ -381,6 +410,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 ; }
drivers/gpu/drm/nouveau/nouveau_dp.c +5 -3
@@ -263,8 +263,6 @@ nouveau_dp_irq(struct work_struct *work) }/* 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) */
@@ -276,7 +274,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
@@ -454,7 +454,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)); }
@@ -1013,25 +1013,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/accel/kionix-kx022a.c +1 -1
@@ -864,7 +864,7 @@ static irqreturn_t kx022a_trigger_handler(int irq, void *p)if (ret <0 ) goto err_read; -iio_push_to_buffers_with_timestamp (idev, data->buffer, pf->timestamp); +iio_push_to_buffers_with_timestamp (idev, data->buffer, data->timestamp); err_read:iio_trigger_notify_done (idev->trig);
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/max11410.c +15 -7
@@ -413,13 +413,17 @@ static int max11410_sample(struct max11410_state *st, int *sample_raw,if (!ret)return -ETIMEDOUT ; }else { +int ret2; +/* Wait for status register Conversion Ready flag */ - ret =read_poll_timeout (max11410_read_reg, ret, - ret || (val &MAX11410_STATUS_CONV_READY_BIT ), + ret =read_poll_timeout (max11410_read_reg, ret2, + ret2 || (val &MAX11410_STATUS_CONV_READY_BIT ),5000 ,MAX11410_CONVERSION_TIMEOUT_MS *1000 , true, st,MAX11410_REG_STATUS , &val);if (ret)return ret; +if (ret2) +return ret2; }/* Read ADC Data */
@@ -850,17 +854,21 @@ static int max11410_init_vref(struct device *dev,static int max11410_calibrate (struct max11410_state *st,u32 cal_type) { -int ret, val; +int ret, ret2, val; ret =max11410_write_reg (st,MAX11410_REG_CAL_START , cal_type);if (ret)return ret;/* Wait for status register Calibration Ready flag */ -return read_poll_timeout (max11410_read_reg, ret, - ret || (val &MAX11410_STATUS_CAL_READY_BIT ), -50000 ,MAX11410_CALIB_TIMEOUT_MS *1000 , true, - st,MAX11410_REG_STATUS , &val); + ret =read_poll_timeout (max11410_read_reg, ret2, + ret2 || (val &MAX11410_STATUS_CAL_READY_BIT ), +50000 ,MAX11410_CALIB_TIMEOUT_MS *1000 , true, + st,MAX11410_REG_STATUS , &val); +if (ret) +return ret; + +return ret2; }static int max11410_self_calibrate (struct max11410_state *st)
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/iio/light/vcnl4000.c +2 -1
@@ -199,7 +199,6 @@ static int vcnl4000_init(struct vcnl4000_data *data) data->rev = ret &0xf ; data->al_scale =250000 ; -mutex_init (&data->vcnl4000_lock);return data->chip_spec->set_power_state (data, true); };
@@ -1197,6 +1196,8 @@ static int vcnl4000_probe(struct i2c_client *client) data->id = id->driver_data; data->chip_spec = &vcnl4000_chip_spec_cfg[data->id]; +mutex_init (&data->vcnl4000_lock); + ret = data->chip_spec->init (data);if (ret <0 )return ret;
drivers/iommu/iommufd/pages.c +14 -2
@@ -294,9 +294,9 @@ static void batch_clear_carry(struct pfn_batch *batch, unsigned int keep_pfns) batch->npfns[batch->end - 1] < keep_pfns); batch->total_pfns = keep_pfns; - batch->npfns[0 ] = keep_pfns; batch->pfns[0 ] = batch->pfns[batch->end -1 ] + (batch->npfns[batch->end -1 ] - keep_pfns); + batch->npfns[0 ] = keep_pfns; batch->end =0 ; }
@@ -1140,6 +1140,7 @@ struct iopt_pages *iopt_alloc_pages(void __user *uptr, unsigned long length, bool writable) {struct iopt_pages *pages; +unsigned long end;/* * The iommu API uses size_t as the length, and protect the DIV_ROUND_UP
@@ -1148,6 +1149,9 @@ struct iopt_pages *iopt_alloc_pages(void __user *uptr, unsigned long length,if (length >SIZE_MAX -PAGE_SIZE || length ==0 )return ERR_PTR (-EINVAL ); +if (check_add_overflow ((unsigned long )uptr, length, &end)) +return ERR_PTR (-EOVERFLOW ); + pages =kzalloc (sizeof (*pages),GFP_KERNEL_ACCOUNT );if (!pages)return ERR_PTR (-ENOMEM );
@@ -1201,13 +1205,21 @@ iopt_area_unpin_domain(struct pfn_batch *batch, struct iopt_area *area,unsigned long start =max (start_index, *unmapped_end_index); +if (IS_ENABLED (CONFIG_IOMMUFD_TEST ) && + batch->total_pfns) +WARN_ON (*unmapped_end_index - + batch->total_pfns != + start_index);batch_from_domain (batch, domain, area, start, last_index); - batch_last_index = start + batch->total_pfns -1 ; + batch_last_index = start_index + batch->total_pfns -1 ; }else { batch_last_index = last_index; } +if (IS_ENABLED (CONFIG_IOMMUFD_TEST )) +WARN_ON (batch_last_index > real_last_index); +/* * unmaps must always 'cut' at a place where the pfns are not * contiguous to pair with the maps that always install
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
153 lines not on this page · raw message
drivers/md/dm-core.h +3 -3
@@ -119,7 +119,7 @@ struct mapped_device {struct dm_stats stats;/* the number of internal suspends */ -unsigned internal_suspend_count; +unsigned int internal_suspend_count;int swap_bios;struct semaphore swap_bios_semaphore;
@@ -326,9 +326,9 @@ static inline struct completion *dm_get_completion_from_kobject(struct kobject * return &container_of(kobj, struct dm_kobject_holder, kobj)->completion; } -unsigned __dm_get_module_param (unsigned *module_param,unsigned def,unsigned max); +unsigned int __dm_get_module_param (unsigned int *module_param,unsigned int def,unsigned int max); -static inline bool dm_message_test_buffer_overflow (char *result,unsigned maxlen) +static inline bool dm_message_test_buffer_overflow (char *result,unsigned int maxlen) {return !maxlen ||strlen (result) +1 >= maxlen; }
drivers/md/dm-crypt.c +24 -24
165 lines not on this page · raw message
drivers/md/dm-delay.c +3 -3
@@ -20,8 +20,8 @@struct delay_class {struct dm_dev *dev;sector_t start; -unsigned delay; -unsigned ops; +unsigned int delay; +unsigned int ops; };struct delay_c {
@@ -305,7 +305,7 @@ static int delay_map(struct dm_target *ti, struct bio *bio) DMEMIT("%s %llu %u", (c)->dev->name, (unsigned long long)(c)->start, (c)->delay)static void delay_status (struct dm_target *ti,status_type_t type, -unsigned status_flags,char *result,unsigned maxlen) +unsigned int status_flags,char *result,unsigned int maxlen) {struct delay_c *dc = ti->private;int sz =0 ;
drivers/md/dm-ebs-target.c +1 -1
@@ -390,7 +390,7 @@ static int ebs_map(struct dm_target *ti, struct bio *bio) }static void ebs_status (struct dm_target *ti,status_type_t type, -unsigned status_flags,char *result,unsigned maxlen) +unsigned int status_flags,char *result,unsigned int maxlen) {struct ebs_c *ec = ti->private;
drivers/md/dm-era-target.c +16 -16
@@ -51,7 +51,7 @@ static void writeset_free(struct writeset *ws) }static int setup_on_disk_bitset (struct dm_disk_bitset *info, -unsigned nr_bits,dm_block_t *root) +unsigned int nr_bits,dm_block_t *root) {int r;
@@ -62,7 +62,7 @@ static int setup_on_disk_bitset(struct dm_disk_bitset *info,return dm_bitset_resize (info, *root,0 , nr_bits, false, root); } -static size_t bitset_size (unsigned nr_bits) +static size_t bitset_size (unsigned int nr_bits) {return sizeof (unsigned long ) *dm_div_up (nr_bits,BITS_PER_LONG ); }
@@ -323,10 +323,10 @@ static int superblock_lock(struct era_metadata *md,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.
@@ -363,12 +363,12 @@ static void ws_unpack(const struct writeset_disk *disk, struct writeset_metadata core->root =le64_to_cpu (disk->root); } -static void ws_inc (void *context,const void *value,unsigned count) +static void ws_inc (void *context,const void *value,unsigned int count) {struct era_metadata *md = context;struct writeset_disk ws_d;dm_block_t b; -unsigned i; +unsigned int i;for (i =0 ; i < count; i++) {memcpy (&ws_d, value + (i *sizeof (ws_d)),sizeof (ws_d));
@@ -377,12 +377,12 @@ static void ws_inc(void *context, const void *value, unsigned count) } } -static void ws_dec (void *context,const void *value,unsigned count) +static void ws_dec (void *context,const void *value,unsigned int count) {struct era_metadata *md = context;struct writeset_disk ws_d;dm_block_t b; -unsigned i; +unsigned int i;for (i =0 ; i < count; i++) {memcpy (&ws_d, value + (i *sizeof (ws_d)),sizeof (ws_d));
@@ -667,7 +667,7 @@ static void swap_writeset(struct era_metadata *md, struct writeset *new_writeset*--------------------------------------------------------------*/ struct digest {uint32_t era; -unsigned nr_bits, current_bit; +unsigned int nr_bits, current_bit;struct writeset_metadata writeset;__le32 value;struct dm_disk_bitset info;
@@ -702,7 +702,7 @@ static int metadata_digest_transcribe_writeset(struct era_metadata *md, {int r;bool marked; -unsigned b, e =min (d->current_bit +INSERTS_PER_STEP , d->nr_bits); +unsigned int b, e =min (d->current_bit +INSERTS_PER_STEP , d->nr_bits);for (b = d->current_bit; b < e; b++) { r =writeset_marked_on_disk (&d->info, &d->writeset, b, &marked);
@@ -1439,7 +1439,7 @@ static bool valid_block_size(dm_block_t block_size)/* * <metadata dev> <data dev> <data block size (sectors)> */ -static int era_ctr (struct dm_target *ti,unsigned argc,char **argv) +static int era_ctr (struct dm_target *ti,unsigned int argc,char **argv) {int r;char dummy;
@@ -1618,7 +1618,7 @@ static int era_preresume(struct dm_target *ti)* <current era> <held metadata root | '-'> */ static void era_status (struct dm_target *ti,status_type_t type, -unsigned status_flags,char *result,unsigned maxlen) +unsigned int status_flags,char *result,unsigned int maxlen) {int r;struct era *era = ti->private;
@@ -1633,10 +1633,10 @@ static void era_status(struct dm_target *ti, status_type_t type, goto err;DMEMIT ("%u %llu/%llu %u" , - (unsigned ) (DM_ERA_METADATA_BLOCK_SIZE >>SECTOR_SHIFT ), + (unsigned int ) (DM_ERA_METADATA_BLOCK_SIZE >>SECTOR_SHIFT ), (unsigned long long ) stats.used, (unsigned long long ) stats.total, - (unsigned ) stats.era); + (unsigned int ) stats.era);if (stats.snap !=SUPERBLOCK_LOCATION )DMEMIT (" %llu" , stats.snap);
@@ -1662,8 +1662,8 @@ static void era_status(struct dm_target *ti, status_type_t type,DMEMIT ("Error" ); } -static int era_message (struct dm_target *ti,unsigned argc,char **argv, -char *result,unsigned maxlen) +static int era_message (struct dm_target *ti,unsigned int argc,char **argv, +char *result,unsigned int maxlen) {struct era *era = ti->private;
drivers/md/dm-exception-store.c +3 -3
@@ -142,7 +142,7 @@ EXPORT_SYMBOL(dm_exception_store_type_unregister);static int set_chunk_size (struct dm_exception_store *store,const char *chunk_size_arg,char **error) { -unsigned chunk_size; +unsigned int chunk_size;if (kstrtouint (chunk_size_arg,10 , &chunk_size)) { *error ="Invalid chunk size" ;
@@ -158,7 +158,7 @@ static int set_chunk_size(struct dm_exception_store *store, }int dm_exception_store_set_chunk_size (struct dm_exception_store *store, -unsigned chunk_size, +unsigned int chunk_size,char **error) {/* Check chunk_size is a power of 2 */
@@ -190,7 +190,7 @@ int dm_exception_store_set_chunk_size(struct dm_exception_store *store,int dm_exception_store_create (struct dm_target *ti,int argc,char **argv,struct dm_snapshot *snap, -unsigned *args_used, +unsigned int *args_used,struct dm_exception_store **store) {int r =0 ;
drivers/md/dm-exception-store.h +9 -9
@@ -96,9 +96,9 @@ struct dm_exception_store_type {*/ void (*drop_snapshot) (struct dm_exception_store *store); -unsigned (*status) (struct dm_exception_store *store, -status_type_t status,char *result, -unsigned maxlen); +unsigned int (*status) (struct dm_exception_store *store, +status_type_t status,char *result, +unsigned int maxlen);/* * Return how full the snapshot is.
@@ -118,9 +118,9 @@ struct dm_exception_store {struct dm_snapshot *snap;/* Size of data blocks saved - must be a power of 2 */ -unsigned chunk_size; -unsigned chunk_mask; -unsigned chunk_shift; +unsigned int chunk_size; +unsigned int chunk_mask; +unsigned int chunk_shift;void *context;
@@ -144,7 +144,7 @@ static inline chunk_t dm_chunk_number(chunk_t chunk)return chunk & (chunk_t)((1ULL <<DM_CHUNK_NUMBER_BITS ) -1ULL ); } -static inline unsigned dm_consecutive_chunk_count (struct dm_exception *e) +static inline unsigned int dm_consecutive_chunk_count (struct dm_exception *e) {return e->new_chunk >>DM_CHUNK_NUMBER_BITS ; }
@@ -181,12 +181,12 @@ int dm_exception_store_type_register(struct dm_exception_store_type *type);int dm_exception_store_type_unregister (struct dm_exception_store_type *type);int dm_exception_store_set_chunk_size (struct dm_exception_store *store, -unsigned chunk_size, +unsigned int chunk_size,char **error);
Lines of this file are not shown. View the 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/mediatek/mtk_eth_soc.c +4 -0
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/net/wireless/mediatek/mt76/mt7921/pci.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/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/dax.c +47 -5
52 lines not on this page · raw message
fs/ksmbd/smb_common.c +109 -29
138 lines not on this page · 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.