Linux 5.15.35
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.35 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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/net/qcom,ipa.yaml | 6 Documentation/devicetree/bindings/net/snps,dwmac.yaml | 6 Makefile | 2 arch/arm/mach-davinci/board-da850-evm.c | 4 arch/arm64/kernel/alternative.c | 6 arch/arm64/kernel/cpuidle.c | 6 arch/x86/include/asm/kvm_host.h | 5 arch/x86/include/asm/msr-index.h | 4 arch/x86/kernel/cpu/common.c | 2 arch/x86/kernel/cpu/cpu.h | 5 arch/x86/kernel/cpu/intel.c | 7 arch/x86/kernel/cpu/tsx.c | 104 +++++- arch/x86/kvm/mmu/mmu.c | 20 - arch/x86/kvm/x86.c | 20 + block/bio.c | 2 drivers/acpi/processor_idle.c | 23 + drivers/ata/libata-core.c | 3 drivers/base/dd.c | 1 drivers/block/drbd/drbd_main.c | 1 drivers/cpufreq/intel_pstate.c | 10 drivers/firmware/arm_scmi/clock.c | 3 drivers/firmware/arm_scmi/driver.c | 3 drivers/gpio/gpiolib-acpi.c | 4 drivers/gpu/drm/amd/amdgpu/ObjectID.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 2 drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 2 drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 5 drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 2 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 4 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 11 drivers/gpu/drm/amd/amdkfd/kfd_events.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 4 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.c | 1 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 29 + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 14 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c | 1 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 5 drivers/gpu/drm/amd/display/dc/dcn301/dcn301_hubbub.c | 1 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c | 63 +++ drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c | 5 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 2 drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h | 2 drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c | 5 drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 2 drivers/gpu/drm/msm/dp/dp_display.c | 6 drivers/gpu/drm/msm/dp/dp_panel.c | 20 - drivers/gpu/drm/msm/dp/dp_panel.h | 1 drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 drivers/gpu/drm/msm/msm_gem.c | 1 drivers/gpu/ipu-v3/ipu-di.c | 5 drivers/hv/hv_balloon.c | 36 ++ drivers/hv/ring_buffer.c | 11 drivers/hv/vmbus_drv.c | 18 - drivers/i2c/busses/i2c-pasemi.c | 6 drivers/i2c/i2c-dev.c | 15 drivers/md/dm-integrity.c | 7 drivers/md/dm-ps-historical-service-time.c | 10 drivers/media/platform/rockchip/rga/rga.c | 2 drivers/memory/atmel-ebi.c | 23 + drivers/memory/renesas-rpc-if.c | 10 drivers/net/dsa/ocelot/felix_vsc9959.c | 2 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 drivers/net/ethernet/faraday/ftgmac100.c | 10 drivers/net/ethernet/mellanox/mlxsw/i2c.c | 1 drivers/net/ethernet/micrel/Kconfig | 1 drivers/net/ethernet/myricom/myri10ge/myri10ge.c | 6 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c | 8 drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h | 4 drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 13 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 13 drivers/net/hamradio/6pack.c | 5 drivers/net/ipa/Kconfig | 1 drivers/net/ipa/ipa_power.c | 52 +++ drivers/net/ipa/ipa_power.h | 7 drivers/net/ipa/ipa_uc.c | 5 drivers/net/macvlan.c | 8 drivers/net/mdio/fwnode_mdio.c | 5 drivers/net/slip/slip.c | 2 drivers/net/usb/aqc111.c | 9 drivers/net/veth.c | 2 drivers/net/wireless/ath/ath11k/mac.c | 21 - drivers/net/wireless/ath/ath9k/main.c | 2 drivers/net/wireless/ath/ath9k/xmit.c | 33 + drivers/pci/controller/pci-hyperv.c | 9 drivers/perf/fsl_imx8_ddr_perf.c | 2 drivers/regulator/wm8994-regulator.c | 42 ++ drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c | 2 drivers/scsi/lpfc/lpfc_init.c | 2 drivers/scsi/megaraid/megaraid_sas.h | 3 drivers/scsi/megaraid/megaraid_sas_base.c | 7 drivers/scsi/mpt3sas/mpt3sas_config.c | 9 drivers/scsi/mvsas/mv_init.c | 1 drivers/scsi/pm8001/pm80xx_hwi.c | 33 + drivers/scsi/scsi_transport_iscsi.c | 168 ++++++---- drivers/soc/qcom/qcom_aoss.c | 58 +++ drivers/spi/spi-cadence-quadspi.c | 46 -- drivers/target/target_core_user.c | 3 drivers/vfio/pci/vfio_pci_core.c | 124 ++++--- fs/btrfs/block-group.c | 4 fs/btrfs/compression.c | 2 fs/btrfs/disk-io.c | 5 fs/btrfs/extent_io.c | 5 fs/btrfs/file.c | 13 fs/btrfs/inode.c | 7 fs/btrfs/volumes.c | 2 fs/cifs/cifsfs.c | 28 - fs/cifs/link.c | 3 fs/io_uring.c | 24 - include/asm-generic/tlb.h | 10 include/linux/soc/qcom/qcom_aoss.h | 38 ++ include/linux/sunrpc/svc.h | 1 include/linux/vfio_pci_core.h | 2 include/net/ax25.h | 12 include/net/flow_dissector.h | 2 include/scsi/scsi_transport_iscsi.h | 2 include/sound/core.h | 1 include/trace/events/sunrpc.h | 7 kernel/cpu.c | 36 +- kernel/dma/direct.h | 3 kernel/irq/affinity.c | 5 kernel/smp.c | 2 kernel/time/tick-sched.c | 2 kernel/time/timer.c | 11 mm/kmemleak.c | 8 mm/page_alloc.c | 2 mm/page_io.c | 54 --- mm/secretmem.c | 17 + net/ax25/af_ax25.c | 38 +- net/ax25/ax25_dev.c | 28 + net/ax25/ax25_route.c | 13 net/ax25/ax25_subr.c | 20 - net/core/flow_dissector.c | 1 net/ipv6/ip6_output.c | 2 net/netfilter/nf_tables_api.c | 2 net/netfilter/nft_socket.c | 7 net/nfc/nci/core.c | 4 net/sched/cls_api.c | 2 net/sched/cls_flower.c | 18 - net/sched/sch_taprio.c | 3 net/sctp/socket.c | 2 net/smc/smc_pnet.c | 5 net/sunrpc/svc_xprt.c | 3 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 2 net/wireless/nl80211.c | 3 net/wireless/scan.c | 2 scripts/gcc-plugins/latent_entropy_plugin.c | 44 +- sound/core/init.c | 28 + sound/core/pcm_misc.c | 2 sound/drivers/mtpav.c | 4 sound/isa/galaxy/galaxy.c | 7 sound/isa/sc6000.c | 7 sound/pci/ad1889.c | 10 sound/pci/ali5451/ali5451.c | 10 sound/pci/als300.c | 8 sound/pci/als4000.c | 10 sound/pci/atiixp.c | 10 sound/pci/atiixp_modem.c | 10 sound/pci/au88x0/au88x0.c | 8 sound/pci/aw2/aw2-alsa.c | 8 sound/pci/azt3328.c | 8 sound/pci/bt87x.c | 10 sound/pci/ca0106/ca0106_main.c | 10 sound/pci/cmipci.c | 8 sound/pci/cs4281.c | 10 sound/pci/cs5535audio/cs5535audio.c | 10 sound/pci/echoaudio/echoaudio.c | 9 sound/pci/emu10k1/emu10k1x.c | 10 sound/pci/ens1370.c | 10 sound/pci/es1938.c | 10 sound/pci/es1968.c | 10 sound/pci/fm801.c | 10 sound/pci/hda/patch_realtek.c | 2 sound/pci/ice1712/ice1724.c | 10 sound/pci/intel8x0.c | 10 sound/pci/intel8x0m.c | 10 sound/pci/korg1212/korg1212.c | 8 sound/pci/lola/lola.c | 10 sound/pci/lx6464es/lx6464es.c | 8 sound/pci/maestro3.c | 8 sound/pci/nm256/nm256.c | 2 sound/pci/oxygen/oxygen_lib.c | 12 sound/pci/riptide/riptide.c | 8 sound/pci/rme32.c | 8 sound/pci/rme96.c | 10 sound/pci/rme9652/hdsp.c | 8 sound/pci/rme9652/hdspm.c | 8 sound/pci/rme9652/rme9652.c | 8 sound/pci/sis7019.c | 14 sound/pci/sonicvibes.c | 10 sound/pci/via82xx.c | 10 sound/pci/via82xx_modem.c | 10 sound/usb/pcm.c | 16 sound/x86/intel_hdmi_audio.c | 7 tools/arch/x86/include/asm/msr-index.h | 4 tools/perf/util/parse-events.c | 5 tools/testing/selftests/mqueue/mq_perf_tests.c | 25 + 201 files changed, 1644 insertions(+), 651 deletions(-)
Adrian Hunter (1):
perf tools: Fix misleading add event PMU debug message
Ajish Koshy (2):
scsi: pm80xx: Mask and unmask upper interrupt vectors 32-63
scsi: pm80xx: Enable upper inbound, outbound queuesAlex Deucher (1):
drm/amdgpu/gmc: use PCI BARs for APUs in passthrough
Alex Elder (3):
dt-bindings: net: qcom,ipa: add optional qcom,qmp property
net: ipa: request IPA register values be retained
net: ipa: fix a build dependency
Alexey Galakhov (1):
scsi: mvsas: Add PCI ID of RocketRaid 2640
Andrea Parri (Microsoft) (1):
Drivers: hv: vmbus: Deactivate sysctl_record_panic_msg by default in isolated guests
Andy Chiu (1):
net: axienet: setup mdio unconditionally
Andy Shevchenko (1):
i2c: dev: check return value when calling dev_set_name()
Anilkumar Kolli (1):
Revert "ath11k: mesh: add support for 256 bitmap in blockack frames in 11ax"
Anna-Maria Behnsen (1):
timers: Fix warning condition in __run_timers()
Antoine Tenart (1):
netfilter: nf_tables: nft_parse_register can return a negative value
Athira Rajeev (1):
testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set
Aurabindo Pillai (1):
drm/amd: Add USBC connector ID
Axel Rasmussen (1):
mm/secretmem: fix panic when growing a memfd_secret
Benedikt Spranger (1):
net/sched: taprio: Check if socket flags are valid
Boqun Feng (1):
Drivers: hv: balloon: Disable balloon and hot-add accordingly
Borislav Petkov (1):
perf/imx_ddr: Fix undefined behavior due to shift overflowing the constant
Chandrakanth patil (1):
scsi: megaraid_sas: Target with invalid LUN ID is deleted during scan
Chao Gao (1):
dma-direct: avoid redundant memory sync for swiotlb
Charlene Liu (1):
drm/amd/display: fix audio format not updated after edid updated
Chiawen Huang (1):
drm/amd/display: FEC check in timing validation
Christian Lamparter (1):
ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
Christoph Böhmwalder (1):
drbd: set QUEUE_FLAG_STABLE_WRITES
Chuck Lever (2):
SUNRPC: Fix the svc_deferred_event trace class
SUNRPC: Fix NFSD's request deferral on RDMA transports
Cristian Marussi (2):
firmware: arm_scmi: Remove clear channel call on the TX channel
firmware: arm_scmi: Fix sorting of retrieved clock rates
Darrick J. Wong (1):
btrfs: fix fallocate to use file_modified to update permissions consistently
Deepak Kumar Singh (1):
soc: qcom: aoss: Expose send for generic usecase
Dinh Nguyen (1):
net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link
Dongjin Yang (1):
dt-bindings: net: snps: remove duplicate name
Duoming Zhou (9):
drivers: net: slip: fix NPD bug in sl_tx_timeout()
ax25: add refcount in ax25_dev to avoid UAF bugs
ax25: fix reference count leaks of ax25_dev
ax25: fix UAF bugs of net_device caused by rebinding operation
ax25: Fix refcount leaks caused by ax25_cb_del()
ax25: fix UAF bug in ax25_send_control()
ax25: fix NPD bug in ax25_disconnect
ax25: Fix NULL pointer dereferences in ax25 timers
ax25: Fix UAF bugs in ax25 timers
Dylan Hung (1):
net: ftgmac100: access hardware register after clock ready
Dylan Yudaken (3):
io_uring: move io_uring_rsrc_update2 validation
io_uring: verify that resv2 is 0 in io_uring_rsrc_update2
io_uring: verify pad field is 0 in io_get_ext_arg
Fabio M. De Francesco (1):
ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
Filipe Manana (1):
btrfs: remove no longer used counter when reading data page
Florian Westphal (1):
netfilter: nft_socket: make cgroup match work in input too
Greg Kroah-Hartman (1):
Linux 5.15.35
Guchun Chen (1):
drm/amdgpu: conduct a proper cleanup of PDB bo
Guillaume Nault (1):
veth: Ensure eth header is in skb's linear part
Harshit Mogalapalli (1):
cifs: potential buffer overflow in handling symlinks
James Smart (1):
scsi: lpfc: Fix queue failures when recovering from PCI parity error
Jason A. Donenfeld (1):
gcc-plugins: latent_entropy: use /dev/urandom
Jason Gunthorpe (1):
vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used
Jeremy Linton (1):
net: bcmgenet: Revert "Use stronger register read/writes to assure ordering"
Jia-Ju Bai (1):
btrfs: fix root ref counts in error handling in btrfs_get_root_ref
Joey Gouly (1):
arm64: alternatives: mark patch_alternative() as noinstr
Johan Hovold (1):
memory: renesas-rpc-if: fix platform-device leak in error path
Johannes Berg (1):
nl80211: correctly check NL80211_ATTR_REG_ALPHA2 size
Jonathan Bakker (1):
regulator: wm8994: Add an off-on delay for WM8994 variant
Josef Bacik (1):
btrfs: do not warn for free space inode in cow_file_range
Juergen Gross (1):
mm, page_alloc: fix build_zonerefs_node()
Karsten Graul (1):
net/smc: Fix NULL pointer dereference in smc_pnet_find_ib()
Khazhismel Kumykov (1):
dm mpath: only use ktime_get_ns() in historical selector
Kuogee Hsieh (1):
drm/msm/dp: add fail safe mode outside of event_mutex context
Kyle Copperfield (1):
media: rockchip/rga: do proper error checking in probe
Leo (Hanghong) Ma (1):
drm/amd/display: Update VTEM Infopacket definition
Leo Ruan (1):
gpu: ipu-v3: Fix dev_dbg frequency output
Lin Ma (3):
hamradio: defer 6pack kfree after unregister_netdev
hamradio: remove needs_free_netdev to avoid UAF
nfc: nci: add flush_workqueue to prevent uaf
Linus Torvalds (1):
gpiolib: acpi: use correct format characters
Marcelo Ricardo Leitner (1):
net/sched: fix initialization order when updating chain 0 head
Marcin Kozlowski (1):
net: usb: aqc111: Fix out-of-bounds accesses in RX fixup
Mario Limonciello (2):
cpuidle: PSCI: Move the has_lpi check to the beginning of the function
ACPI: processor idle: Check for architectural support for LPI
Martin Leung (1):
drm/amd/display: Revert FEC check in validation
Martin Povišer (1):
i2c: pasemi: Wait for write xfers to finish
Martin Willi (1):
macvlan: Fix leaking skb in source mode with nodst option
Matt Roper (1):
drm/i915: Sunset igpu legacy mmap support based on GRAPHICS_VER_FULL
Matthias Schiffer (1):
spi: cadence-quadspi: fix protocol setup for non-1-1-X operations
Melissa Wen (1):
drm/amd/display: don't ignore alpha property on pre-multiplied mode
Miaoqian Lin (2):
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
soc: qcom: aoss: Fix missing put_device call in qmp_get
Michael Kelley (2):
PCI: hv: Propagate coherence from VMbus device to PCI device
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
Michael Walle (1):
net: dsa: felix: suppress -EPROBE_DEFER errors
Mike Christie (5):
scsi: iscsi: Move iscsi_ep_disconnect()
scsi: iscsi: Fix offload conn cleanup when iscsid restarts
scsi: iscsi: Fix endpoint reuse regression
scsi: iscsi: Fix conn cleanup and stop race during iscsid restart
scsi: iscsi: Fix unbound endpoint error handling
Mikulas Patocka (1):
dm integrity: fix memory corruption when tag_size is less than digest size
Minchan Kim (1):
mm: fix unexpected zeroed page mapping with zram swap
Ming Lei (1):
block: fix offset/size check in bio_trim()
Nadav Amit (1):
smp: Fix offline cpu check in flush_smp_call_function_queue()
Naohiro Aota (2):
btrfs: release correct delalloc amount in direct IO write path
btrfs: mark resumed async balance as writing
Nathan Chancellor (2):
btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()
ARM: davinci: da850-evm: Avoid NULL pointer dereference
Nicholas Kazlauskas (2):
drm/amd/display: Add pstate verification and recovery for DCN31 drm/amd/display: Fix p-state allow debug index on dcn31
Nicolas Dichtel (1):
ipv6: fix panic when forwarding a pkt with no in6 dev
Patrick Wang (1):
mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
Paul Gortmaker (1):
tick/nohz: Use WARN_ON_ONCE() to prevent console saturation
Pavel Begunkov (2):
io_uring: zero tag on rsrc removal
io_uring: use nospec annotation for more indexes
Pawan Gupta (2):
x86/tsx: Use MSR_TSX_CTRL to clear CPUID bits x86/tsx: Disable TSX development mode at boot
Petr Malat (1):
sctp: Initialize daddr on peeled off socket
QintaoShen (1):
drm/amdkfd: Check for potential null return of kmalloc_array()
Qu Wenruo (1):
btrfs: remove unused parameter nr_pages in add_ra_bio_pages()
Rameshkumar Sundaram (1):
cfg80211: hold bss_lock while updating nontrans_list
Randy Dunlap (1):
net: micrel: fix KS8851_MLL Kconfig
Rei Yamamoto (1):
genirq/affinity: Consider that CPUs on nodes can be unbalanced
Richard Gong (1):
ACPI: processor idle: Allow playing dead in C3 state
Rob Clark (2):
drm/msm: Add missing put_task_struct() in debugfs path drm/msm: Fix range size vs end confusion
Roman Li (2):
drm/amd/display: Enable power gating before init_pipes drm/amd/display: Fix allocate_mst_payload assert on resume
Ronnie Sahlberg (1):
cifs: verify that tcon is valid before dereference in cifs_kill_sb
Sean Christopherson (1):
KVM: x86/mmu: Resolve nx_huge_pages when kvm.ko is loaded
Shyam Prasad N (1):
cifs: release cached dentries only if mount is complete
Sreekanth Reddy (1):
scsi: mpt3sas: Fail reset operation if config request timed out
Srinivas Pandruvada (1):
cpufreq: intel_pstate: ITMT support for overclocked system
Stephen Boyd (1):
drm/msm/dsi: Use connector directly in msm_dsi_manager_connector_init()
Steve Capper (1):
tlb: hugetlb: Add more sizes to tlb_remove_huge_tlb_entry
Steven Price (1):
cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state
Takashi Iwai (44):
ALSA: core: Add snd_card_free_on_error() helper
ALSA: sis7019: Fix the missing error handling
ALSA: ali5451: Fix the missing snd_card_free() call at probe error
ALSA: als300: Fix the missing snd_card_free() call at probe error
ALSA: als4000: Fix the missing snd_card_free() call at probe error
ALSA: atiixp: Fix the missing snd_card_free() call at probe error
ALSA: au88x0: Fix the missing snd_card_free() call at probe error
ALSA: aw2: Fix the missing snd_card_free() call at probe error
ALSA: azt3328: Fix the missing snd_card_free() call at probe error
ALSA: bt87x: Fix the missing snd_card_free() call at probe error
ALSA: ca0106: Fix the missing snd_card_free() call at probe error
ALSA: cmipci: Fix the missing snd_card_free() call at probe error
ALSA: cs4281: Fix the missing snd_card_free() call at probe error
ALSA: cs5535audio: Fix the missing snd_card_free() call at probe error
ALSA: echoaudio: Fix the missing snd_card_free() call at probe error
ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error
ALSA: ens137x: Fix the missing snd_card_free() call at probe error
ALSA: es1938: Fix the missing snd_card_free() call at probe error
ALSA: es1968: Fix the missing snd_card_free() call at probe error
ALSA: fm801: Fix the missing snd_card_free() call at probe error
ALSA: galaxy: Fix the missing snd_card_free() call at probe error
ALSA: hdsp: Fix the missing snd_card_free() call at probe error
ALSA: hdspm: Fix the missing snd_card_free() call at probe error
ALSA: ice1724: Fix the missing snd_card_free() call at probe error
ALSA: intel8x0: Fix the missing snd_card_free() call at probe error
ALSA: intel_hdmi: Fix the missing snd_card_free() call at probe error
ALSA: korg1212: Fix the missing snd_card_free() call at probe error
ALSA: lola: Fix the missing snd_card_free() call at probe error
ALSA: lx6464es: Fix the missing snd_card_free() call at probe error
ALSA: maestro3: Fix the missing snd_card_free() call at probe error
ALSA: oxygen: Fix the missing snd_card_free() call at probe error
ALSA: riptide: Fix the missing snd_card_free() call at probe error
ALSA: rme32: Fix the missing snd_card_free() call at probe error
ALSA: rme9652: Fix the missing snd_card_free() call at probe error
ALSA: rme96: Fix the missing snd_card_free() call at probe error
ALSA: sc6000: Fix the missing snd_card_free() call at probe error
ALSA: sonicvibes: Fix the missing snd_card_free() call at probe error
ALSA: via82xx: Fix the missing snd_card_free() call at probe error
ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb
ALSA: nm256: Don't call card private_free at probe error path
ALSA: ad1889: Fix the missing snd_card_free() call at probe error
ALSA: mtpav: Don't call card private_free at probe error path
ALSA: usb-audio: Increase max buffer size
ALSA: usb-audio: Limit max buffer and period sizes per time
Tao Jin (1):
ALSA: hda/realtek: add quirk for Lenovo Thinkpad X12 speakers
Tianci Yin (1):
drm/amdgpu/vcn: improve vcn dpg stop procedure
Tim Crawford (1):
ALSA: hda/realtek: Add quirk for Clevo PD50PNT
Toke Høiland-Jørgensen (2):
ath9k: Properly clear TX status area before reporting to mac80211
ath9k: Fix usage of driver-private space in tx_info
Tomasz Moń (1):
drm/amdgpu: Enable gfxoff quirk on MacBook Pro
Tushar Patel (1):
drm/amdkfd: Fix Incorrect VMIDs passed to HWS
Tyrel Datwyler (1):
scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
Vadim Pasternak (1):
mlxsw: i2c: Fix initialization error flow
Vlad Buslov (1):
net/sched: flower: fix parsing of ethertype following VLAN header
Vladimir Oltean (1):
net: mdio: don't defer probe forever if PHY IRQ provider is missing
Woody Suwalski (1):
ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40
Xiaoguang Wang (1):
scsi: target: tcmu: Fix possible page UAF
Xiaomeng Tong (1):
myri10ge: fix an incorrect free for skb in myri10ge_sw_tso
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/net/qcom,ipa.yaml +6 -0
@@ -106,6 +106,10 @@ properties: - const: imem - const: config + qcom,qmp: + $ref: /schemas/types.yaml#/definitions/phandle + description: phandle to the AOSS side-channel message RAM + qcom,smem-states: $ref: /schemas/types.yaml#/definitions/phandle-array description: State bits used in by the AP to signal the modem.
@@ -221,6 +225,8 @@ examples: "imem", "config"; + qcom,qmp = <&aoss_qmp>; + qcom,smem-states = <&ipa_smp2p_out 0>, <&ipa_smp2p_out 1>; qcom,smem-state-names = "ipa-clock-enabled-valid",
Documentation/devicetree/bindings/net/snps,dwmac.yaml +2 -4
@@ -53,20 +53,18 @@ properties: - allwinner,sun8i-r40-emac - allwinner,sun8i-v3s-emac - allwinner,sun50i-a64-emac - - loongson,ls2k-dwmac - - loongson,ls7a-dwmac - amlogic,meson6-dwmac - amlogic,meson8b-dwmac - amlogic,meson8m2-dwmac - amlogic,meson-gxbb-dwmac - amlogic,meson-axg-dwmac - - loongson,ls2k-dwmac - - loongson,ls7a-dwmac - ingenic,jz4775-mac - ingenic,x1000-mac - ingenic,x1600-mac - ingenic,x1830-mac - ingenic,x2000-mac + - loongson,ls2k-dwmac + - loongson,ls7a-dwmac - rockchip,px30-gmac - rockchip,rk3128-gmac - rockchip,rk3228-gmac
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 34 +SUBLEVEL = 35 EXTRAVERSION = NAME = Trick or Treat
arch/arm/mach-davinci/board-da850-evm.c +3 -1
@@ -1101,11 +1101,13 @@ static int __init da850_evm_config_emac(void)int ret;u32 val;struct davinci_soc_info *soc_info = &davinci_soc_info; -u8 rmii_en = soc_info->emac_pdata->rmii_en; +u8 rmii_en;if (!machine_is_davinci_da850_evm ())return 0 ; + rmii_en = soc_info->emac_pdata->rmii_en; + cfg_chip3_base =DA8XX_SYSCFG0_VIRT (DA8XX_CFGCHIP3_REG ); val =__raw_readl (cfg_chip3_base);
arch/arm64/kernel/alternative.c +3 -3
@@ -42,7 +42,7 @@ bool alternative_is_applied(u16 cpufeature)/* * Check if the target PC is within an alternative block. */ -static bool branch_insn_requires_update (struct alt_instr *alt,unsigned long pc) +static __always_inline bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc) {unsigned long replptr = (unsigned long )ALT_REPL_PTR (alt);return !(pc >= replptr && pc <= (replptr + alt->alt_len));
@@ -50,7 +50,7 @@ static bool branch_insn_requires_update(struct alt_instr *alt, unsigned long pc)#define align_down (x, a) ((unsigned long)(x) & ~(((unsigned long)(a)) - 1)) -static u32 get_alt_insn (struct alt_instr *alt,__le32 *insnptr,__le32 *altinsnptr) +static __always_inline u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnptr) {u32 insn;
@@ -95,7 +95,7 @@ static u32 get_alt_insn(struct alt_instr *alt, __le32 *insnptr, __le32 *altinsnpreturn insn; } -static void patch_alternative (struct alt_instr *alt, +static noinstr void patch_alternative(struct alt_instr *alt,__le32 *origptr,__le32 *updptr,int nr_inst) {__le32 *replptr;
arch/arm64/kernel/cpuidle.c +3 -3
@@ -54,6 +54,9 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)struct acpi_lpi_state *lpi;struct acpi_processor *pr =per_cpu (processors, cpu); +if (unlikely (!pr || !pr->flags.has_lpi)) +return -EINVAL ; +/* * If the PSCI cpu_suspend function hook has not been initialized * idle states must not be enabled, so bail out
@@ -61,9 +64,6 @@ static int psci_acpi_cpu_init_idle(unsigned int cpu)if (!psci_ops.cpu_suspend)return -EOPNOTSUPP ; -if (unlikely (!pr || !pr->flags.has_lpi)) -return -EINVAL ; - count = pr->power.count -1 ;if (count <=0 )return -ENODEV ;
arch/x86/include/asm/kvm_host.h +3 -2
@@ -1559,8 +1559,9 @@ static inline int kvm_arch_flush_remote_tlb(struct kvm *kvm)return -ENOTSUPP ; } -int kvm_mmu_module_init (void ); -void kvm_mmu_module_exit (void ); +void kvm_mmu_x86_module_init (void ); +int kvm_mmu_vendor_module_init (void ); +void kvm_mmu_vendor_module_exit (void );void kvm_mmu_destroy (struct kvm_vcpu *vcpu);int kvm_mmu_create (struct kvm_vcpu *vcpu);
arch/x86/include/asm/msr-index.h +2 -2
@@ -128,9 +128,9 @@#define TSX_CTRL_RTM_DISABLE BIT(0)/* Disable RTM feature */ #define TSX_CTRL_CPUID_CLEAR BIT(1)/* Disable TSX enumeration */ -/* SRBDS support */ #define MSR_IA32_MCU_OPT_CTRL 0x00000123 -#define RNGDS_MITG_DIS BIT(0) +#define RNGDS_MITG_DIS BIT(0)/* SRBDS support */ +#define RTM_ALLOW BIT(1)/* TSX development mode */ #define MSR_IA32_SYSENTER_CS 0x00000174#define MSR_IA32_SYSENTER_ESP 0x00000175
arch/x86/kernel/cpu/common.c +2 -0
@@ -1714,6 +1714,8 @@ void identify_secondary_cpu(struct cpuinfo_x86 *c)validate_apic_and_package_id (c);x86_spec_ctrl_setup_ap ();update_srbds_msr (); + +tsx_ap_init (); }static __init int setup_noclflush (char *arg)
arch/x86/kernel/cpu/cpu.h +2 -3
@@ -55,11 +55,10 @@ enum tsx_ctrl_states {extern __ro_after_init enum tsx_ctrl_states tsx_ctrl_state;extern void __init tsx_init (void ); -extern void tsx_enable (void ); -extern void tsx_disable (void ); -extern void tsx_clear_cpuid (void ); +void tsx_ap_init (void );#else static inline void tsx_init (void ) { } +static inline void tsx_ap_init (void ) { }#endif /* CONFIG_CPU_SUP_INTEL */ extern void get_cpu_cap (struct cpuinfo_x86 *c);
arch/x86/kernel/cpu/intel.c +0 -7
@@ -717,13 +717,6 @@ static void init_intel(struct cpuinfo_x86 *c)init_intel_misc_features (c); -if (tsx_ctrl_state ==TSX_CTRL_ENABLE ) -tsx_enable (); -else if (tsx_ctrl_state ==TSX_CTRL_DISABLE ) -tsx_disable (); -else if (tsx_ctrl_state ==TSX_CTRL_RTM_ALWAYS_ABORT ) -tsx_clear_cpuid (); -split_lock_init ();bus_lock_init ();
arch/x86/kernel/cpu/tsx.c +94 -10
145 lines not on this page · raw message
arch/x86/kvm/mmu/mmu.c +16 -4
@@ -6105,12 +6105,24 @@ static int set_nx_huge_pages(const char *val, const struct kernel_param *kp)return 0 ; } -int kvm_mmu_module_init (void ) +/* +* nx_huge_pages needs to be resolved to true/false when kvm.ko is loaded, as +* its default value of -1 is technically undefined behavior for a boolean. +*/ +void kvm_mmu_x86_module_init (void ) { -int ret = -ENOMEM ; -if (nx_huge_pages ==-1 )__set_nx_huge_pages (get_nx_auto_mode ()); +} + +/* +* The bulk of the MMU initialization is deferred until the vendor module is +* loaded as many of the masks/values may be modified by VMX or SVM, i.e. need +* to be reset when a potentially different vendor module is loaded. +*/ +int kvm_mmu_vendor_module_init (void ) +{ +int ret = -ENOMEM ;/* * MMU roles use union aliasing which is, generally speaking, an
@@ -6182,7 +6194,7 @@ void kvm_mmu_destroy(struct kvm_vcpu *vcpu)mmu_free_memory_caches (vcpu); } -void kvm_mmu_module_exit (void ) +void kvm_mmu_vendor_module_exit (void ) {mmu_destroy_caches ();percpu_counter_destroy (&kvm_total_used_mmu_pages);
arch/x86/kvm/x86.c +18 -2
@@ -8562,7 +8562,7 @@ int kvm_arch_init(void *opaque) } kvm_nr_uret_msrs =0 ; - r =kvm_mmu_module_init (); + r =kvm_mmu_vendor_module_init ();if (r) goto out_free_percpu;
@@ -8612,7 +8612,7 @@ void kvm_arch_exit(void)cancel_work_sync (&pvclock_gtod_work);#endif kvm_x86_ops.hardware_enable =NULL ; -kvm_mmu_module_exit (); +kvm_mmu_vendor_module_exit ();free_percpu (user_return_msrs);kmem_cache_destroy (x86_emulator_cache);kmem_cache_destroy (x86_fpu_cache);
@@ -12618,3 +12618,19 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_enter);EXPORT_TRACEPOINT_SYMBOL_GPL (kvm_vmgexit_exit);EXPORT_TRACEPOINT_SYMBOL_GPL (kvm_vmgexit_msr_protocol_enter);EXPORT_TRACEPOINT_SYMBOL_GPL (kvm_vmgexit_msr_protocol_exit); + +static int __init kvm_x86_init (void ) +{ +kvm_mmu_x86_module_init (); +return 0 ; +} +module_init (kvm_x86_init); + +static void __exit kvm_x86_exit(void) +{ +/* +* If module_init() is implemented, module_exit() must also be +* implemented to allow module unload. +*/ +} +module_exit (kvm_x86_exit);
block/bio.c +1 -1
@@ -1552,7 +1552,7 @@ EXPORT_SYMBOL(bio_split);void bio_trim (struct bio *bio,sector_t offset,sector_t size) {if (WARN_ON_ONCE (offset >BIO_MAX_SECTORS || size >BIO_MAX_SECTORS || - offset + size > bio->bi_iter.bi_size)) + offset + size >bio_sectors (bio)))return ; size <<=9 ;
drivers/acpi/processor_idle.c +17 -6
@@ -95,6 +95,11 @@ static const struct dmi_system_id processor_power_dmi_table[] = { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), DMI_MATCH(DMI_PRODUCT_NAME,"L8400B series Notebook PC")}, (void *)1}, + /* T40 can not handle C3 idle state */ + { set_max_cstate, "IBM ThinkPad T40", { + DMI_MATCH(DMI_SYS_VENDOR, "IBM"), + DMI_MATCH(DMI_PRODUCT_NAME, "23737CU")}, + (void *)2}, {}, };
@@ -789,7 +794,8 @@ static int acpi_processor_setup_cstates(struct acpi_processor *pr) state->enter = acpi_idle_enter; state->flags =0 ; -if (cx->type ==ACPI_STATE_C1 || cx->type ==ACPI_STATE_C2 ) { +if (cx->type ==ACPI_STATE_C1 || cx->type ==ACPI_STATE_C2 || + cx->type ==ACPI_STATE_C3 ) { state->enter_dead = acpi_idle_play_dead; drv->safe_state_index = count; }
@@ -1075,6 +1081,11 @@ static int flatten_lpi_states(struct acpi_processor *pr,return 0 ; } +int __weak acpi_processor_ffh_lpi_probe (unsigned int cpu) +{ +return -EOPNOTSUPP ; +} +static int acpi_processor_get_lpi_info (struct acpi_processor *pr) {int ret, i;
@@ -1083,6 +1094,11 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)struct acpi_device *d =NULL ;struct acpi_lpi_states_array info[2 ], *tmp, *prev, *curr; +/* make sure our architecture has support */ + ret =acpi_processor_ffh_lpi_probe (pr->id); +if (ret == -EOPNOTSUPP ) +return ret; +if (!osc_pc_lpi_support_confirmed)return -EOPNOTSUPP ;
@@ -1134,11 +1150,6 @@ static int acpi_processor_get_lpi_info(struct acpi_processor *pr)return 0 ; } -int __weak acpi_processor_ffh_lpi_probe (unsigned int cpu) -{ -return -ENODEV ; -} -int __weak acpi_processor_ffh_lpi_enter (struct acpi_lpi_state *lpi) {return -ENODEV ;
drivers/ata/libata-core.c +3 -0
@@ -3999,6 +3999,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { ATA_HORKAGE_ZERO_AFTER_TRIM, }, {"Crucial_CT*MX100*" ,"MU01" ,ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, }, + { "Samsung SSD 840 EVO*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | +ATA_HORKAGE_NO_DMA_LOG | + ATA_HORKAGE_ZERO_AFTER_TRIM, }, { "Samsung SSD 840*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, }, { "Samsung SSD 850*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
drivers/base/dd.c +1 -0
@@ -296,6 +296,7 @@ int driver_deferred_probe_check_state(struct device *dev)return -EPROBE_DEFER ; } +EXPORT_SYMBOL_GPL (driver_deferred_probe_check_state);static void deferred_probe_timeout_work_func (struct work_struct *work) {
drivers/block/drbd/drbd_main.c +1 -0
@@ -2737,6 +2737,7 @@ enum drbd_ret_code drbd_create_device(struct drbd_config_context *adm_ctx, unsigsprintf (disk->disk_name,"drbd%d" , minor); disk->private_data = device; +blk_queue_flag_set (QUEUE_FLAG_STABLE_WRITES , disk->queue);blk_queue_write_cache (disk->queue, true, true);/* Setting the max_hw_sectors to an odd value of 8kibyte here This triggers a max_bio_size message upon first attach or connect */
drivers/cpufreq/intel_pstate.c +10 -0
@@ -335,6 +335,8 @@ static void intel_pstste_sched_itmt_work_fn(struct work_struct *work) static DECLARE_WORK(sched_itmt_work, intel_pstste_sched_itmt_work_fn); +#define CPPC_MAX_PERF U8_MAX +static void intel_pstate_set_itmt_prio (int cpu) {struct cppc_perf_caps cppc_perf;
@@ -345,6 +347,14 @@ static void intel_pstate_set_itmt_prio(int cpu)if (ret)return ; +/* +* On some systems with overclocking enabled, CPPC.highest_perf is hardcoded to 0xff. +* In this case we can't use CPPC.highest_perf to enable ITMT. +* In this case we can look at MSR_HWP_CAPABILITIES bits [8:0] to decide. +*/ +if (cppc_perf.highest_perf ==CPPC_MAX_PERF ) + cppc_perf.highest_perf =HWP_HIGHEST_PERF (READ_ONCE (all_cpu_data[cpu]->hwp_cap_cached)); +/* * The priorities can be set regardless of whether or not * sched_set_itmt_support(true) has been called and it is valid to
drivers/firmware/arm_scmi/clock.c +2 -1
@@ -204,7 +204,8 @@ scmi_clock_describe_rates_get(const struct scmi_protocol_handle *ph, u32 clk_id,if (rate_discrete && rate) { clk->list.num_rates = tot_rate_cnt; -sort (rate, tot_rate_cnt,sizeof (*rate), rate_cmp_func,NULL ); +sort (clk->list.rates, tot_rate_cnt,sizeof (*rate), + rate_cmp_func,NULL ); } clk->rate_discrete = rate_discrete;
drivers/firmware/arm_scmi/driver.c +2 -1
@@ -652,7 +652,8 @@ static void scmi_handle_response(struct scmi_chan_info *cinfo, xfer =scmi_xfer_command_acquire (cinfo, msg_hdr);if (IS_ERR (xfer)) { -scmi_clear_channel (info, cinfo); +if (MSG_XTRACT_TYPE (msg_hdr) ==MSG_TYPE_DELAYED_RESP ) +scmi_clear_channel (info, cinfo);return ; }
drivers/gpio/gpiolib-acpi.c +2 -2
@@ -392,8 +392,8 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares, pin = agpio->pin_table[0 ];if (pin <=255 ) { -char ev_name[5 ]; -sprintf (ev_name,"_%c%02hhX" , +char ev_name[8 ]; +sprintf (ev_name,"_%c%02X" , agpio->triggering ==ACPI_EDGE_SENSITIVE ?'E' :'L' , pin);if (ACPI_SUCCESS (acpi_get_handle (handle, ev_name, &evt_handle)))
drivers/gpu/drm/amd/amdgpu/ObjectID.h +1 -0
@@ -119,6 +119,7 @@#define CONNECTOR_OBJECT_ID_eDP 0x14#define CONNECTOR_OBJECT_ID_MXM 0x15#define CONNECTOR_OBJECT_ID_LVDS_eDP 0x16 +#define CONNECTOR_OBJECT_ID_USBC 0x17/* deleted */
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +2 -2
@@ -5625,7 +5625,7 @@ void amdgpu_device_flush_hdp(struct amdgpu_device *adev, struct amdgpu_ring *ring) {#ifdef CONFIG_X86_64 -if (adev->flags &AMD_IS_APU ) +if ((adev->flags &AMD_IS_APU ) && !amdgpu_passthrough (adev))return ;#endif if (adev->gmc.xgmi.connected_to_cpu)
@@ -5641,7 +5641,7 @@ void amdgpu_device_invalidate_hdp(struct amdgpu_device *adev, struct amdgpu_ring *ring) {#ifdef CONFIG_X86_64 -if (adev->flags &AMD_IS_APU ) +if ((adev->flags &AMD_IS_APU ) && !amdgpu_passthrough (adev))return ;#endif if (adev->gmc.xgmi.connected_to_cpu)
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -1
@@ -680,7 +680,7 @@ MODULE_PARM_DESC(sched_policy,* Maximum number of processes that HWS can schedule concurrently. The maximum is the * number of VMIDs assigned to the HWS, which is also the default. */ -int hws_max_conc_proc =8 ; +int hws_max_conc_proc =-1 ;module_param (hws_max_conc_proc, int,0444 );MODULE_PARM_DESC (hws_max_conc_proc,"Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))" );
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +2 -0
@@ -1272,6 +1272,8 @@ static const struct amdgpu_gfxoff_quirk amdgpu_gfxoff_quirk_list[] = { { 0x1002, 0x15dd, 0x103c, 0x83e7, 0xd3 },/* GFXOFF is unstable on C6 parts with a VBIOS 113-RAVEN-114 */ { 0x1002, 0x15dd, 0x1002, 0x15dd, 0xc6 }, +/* Apple MacBook Pro (15-inch, 2019) Radeon Pro Vega 20 4 GB */ + { 0x1002, 0x69af, 0x106b, 0x019a, 0xc0 }, { 0, 0, 0, 0, 0 }, };
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c +1 -1
@@ -788,7 +788,7 @@ static int gmc_v10_0_mc_init(struct amdgpu_device *adev) adev->gmc.aper_size =pci_resource_len (adev->pdev,0 );#ifdef CONFIG_X86_64 -if (adev->flags &AMD_IS_APU ) { +if ((adev->flags &AMD_IS_APU ) && !amdgpu_passthrough (adev)) { adev->gmc.aper_base = adev->gfxhub.funcs->get_mc_fb_offset (adev); adev->gmc.aper_size = adev->gmc.real_vram_size; }
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c +3 -2
@@ -381,8 +381,9 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev) adev->gmc.aper_size =pci_resource_len (adev->pdev,0 );#ifdef CONFIG_X86_64 -if (adev->flags &AMD_IS_APU && - adev->gmc.real_vram_size > adev->gmc.aper_size) { +if ((adev->flags &AMD_IS_APU ) && + adev->gmc.real_vram_size > adev->gmc.aper_size && + !amdgpu_passthrough (adev)) { adev->gmc.aper_base = ((u64 )RREG32 (mmMC_VM_FB_OFFSET)) <<22 ; adev->gmc.aper_size = adev->gmc.real_vram_size; }
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +1 -1
@@ -581,7 +581,7 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev) adev->gmc.aper_size =pci_resource_len (adev->pdev,0 );#ifdef CONFIG_X86_64 -if (adev->flags &AMD_IS_APU ) { +if ((adev->flags &AMD_IS_APU ) && !amdgpu_passthrough (adev)) { adev->gmc.aper_base = ((u64 )RREG32 (mmMC_VM_FB_OFFSET)) <<22 ; adev->gmc.aper_size = adev->gmc.real_vram_size; }
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c +2 -2
@@ -1387,7 +1387,7 @@ static int gmc_v9_0_mc_init(struct amdgpu_device *adev)*/ /* check whether both host-gpu and gpu-gpu xgmi links exist */ -if ((adev->flags &AMD_IS_APU ) || +if (((adev->flags &AMD_IS_APU ) && !amdgpu_passthrough (adev)) || (adev->gmc.xgmi.supported && adev->gmc.xgmi.connected_to_cpu)) { adev->gmc.aper_base =
@@ -1652,7 +1652,7 @@ static int gmc_v9_0_sw_fini(void *handle)amdgpu_gem_force_release (adev);amdgpu_vm_manager_fini (adev);amdgpu_gart_table_vram_free (adev); -amdgpu_bo_unref (&adev->gmc.pdb0_bo); +amdgpu_bo_free_kernel (&adev->gmc.pdb0_bo,NULL , &adev->gmc.ptr_pdb0);amdgpu_bo_fini (adev);return 0 ;
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +3 -0
@@ -1508,8 +1508,11 @@ static int vcn_v3_0_start_sriov(struct amdgpu_device *adev)static int vcn_v3_0_stop_dpg_mode (struct amdgpu_device *adev,int inst_idx) { +struct dpg_pause_state state = {.fw_based =VCN_DPG_STATE__UNPAUSE };uint32_t tmp; +vcn_v3_0_pause_dpg_mode (adev,0 , &state); +/* Wait for power status to be 1 */ SOC15_WAIT_ON_RREG (VCN , inst_idx, mmUVD_POWER_STATUS,1 ,UVD_POWER_STATUS__UVD_POWER_STATUS_MASK );
drivers/gpu/drm/amd/amdkfd/kfd_device.c +3 -8
@@ -834,15 +834,10 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, }/* Verify module parameters regarding mapped process number*/ -if ((hws_max_conc_proc <0 ) - || (hws_max_conc_proc > kfd->vm_info.vmid_num_kfd)) { -dev_err (kfd_device, -"hws_max_conc_proc %d must be between 0 and %d, use %d instead\n" , - hws_max_conc_proc, kfd->vm_info.vmid_num_kfd, - kfd->vm_info.vmid_num_kfd); +if (hws_max_conc_proc >=0 ) + kfd->max_proc_per_quantum =min ((u32 )hws_max_conc_proc, kfd->vm_info.vmid_num_kfd); +else kfd->max_proc_per_quantum = kfd->vm_info.vmid_num_kfd; - }else - kfd->max_proc_per_quantum = hws_max_conc_proc;/* calculate max size of mqds needed for queues */ size = max_num_of_queues_per_device *
drivers/gpu/drm/amd/amdkfd/kfd_events.c +2 -0
@@ -531,6 +531,8 @@ static struct kfd_event_waiter *alloc_event_waiters(uint32_t num_events) event_waiters =kmalloc_array (num_events,sizeof (struct kfd_event_waiter ),GFP_KERNEL ); +if (!event_waiters) +return NULL ;for (i =0 ; (event_waiters) && (i < num_events) ; i++) {init_wait (&event_waiters[i].wait);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -1
@@ -2296,7 +2296,8 @@ static int dm_resume(void *handle)* this is the case when traversing through already created * MST connectors, should be skipped */ -if (aconnector->mst_port) +if (aconnector->dc_link && + aconnector->dc_link->type == dc_connection_mst_branch)continue ;mutex_lock (&aconnector->hpd_lock);
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +2 -2
@@ -1626,8 +1626,8 @@ bool dc_is_stream_unchanged(if (old_stream->ignore_msa_timing_param != stream->ignore_msa_timing_param)return false; -// Only Have Audio left to check whether it is same or not. This is a corner case for Tiled sinks -if (old_stream->audio_info.mode_count != stream->audio_info.mode_count) +/*compare audio info*/ +if (memcmp (&old_stream->audio_info, &stream->audio_info,sizeof (stream->audio_info)) !=0 )return false;return true;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubbub.c +1 -0
@@ -940,6 +940,7 @@ static const struct hubbub_funcs hubbub1_funcs = { .program_watermarks = hubbub1_program_watermarks, .is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled, .allow_self_refresh_control = hubbub1_allow_self_refresh_control, + .verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high, }; void hubbub1_construct(struct hubbub *hubbub,
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +19 -10
@@ -1052,9 +1052,13 @@ static bool dcn10_hw_wa_force_recovery(struct dc *dc)void dcn10_verify_allow_pstate_change_high (struct dc *dc) { +struct hubbub *hubbub = dc->res_pool->hubbub;static bool should_log_hw_state;/* prevent hw state log by default */ -if (!hubbub1_verify_allow_pstate_change_high (dc->res_pool->hubbub)) { +if (!hubbub->funcs->verify_allow_pstate_change_high) +return ; + +if (!hubbub->funcs->verify_allow_pstate_change_high (hubbub)) {int i =0 ;if (should_log_hw_state)
@@ -1063,8 +1067,8 @@ void dcn10_verify_allow_pstate_change_high(struct dc *dc)TRACE_DC_PIPE_STATE (pipe_ctx, i,MAX_PIPES );BREAK_TO_DEBUGGER ();if (dcn10_hw_wa_force_recovery (dc)) { -/*check again*/ -if (!hubbub1_verify_allow_pstate_change_high (dc->res_pool->hubbub)) +/*check again*/ +if (!hubbub->funcs->verify_allow_pstate_change_high (hubbub))BREAK_TO_DEBUGGER (); } }
@@ -1435,6 +1439,9 @@ void dcn10_init_hw(struct dc *dc) } } +if (hws->funcs.enable_power_gating_plane) + hws->funcs.enable_power_gating_plane (dc->hwseq, true); +/* If taking control over from VBIOS, we may want to optimize our first * mode set, so we need to skip powering down pipes until we know which * pipes we want to use.
@@ -1487,8 +1494,6 @@ void dcn10_init_hw(struct dc *dc)REG_UPDATE (DCFCLK_CNTL ,DCFCLK_GATE_DIS ,0 ); } -if (hws->funcs.enable_power_gating_plane) - hws->funcs.enable_power_gating_plane (dc->hwseq, true);if (dc->clk_mgr->funcs->notify_wm_ranges) dc->clk_mgr->funcs->notify_wm_ranges (dc->clk_mgr);
@@ -2455,14 +2460,18 @@ void dcn10_update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)struct mpc *mpc = dc->res_pool->mpc;struct mpc_tree *mpc_tree_params = &(pipe_ctx->stream_res.opp->mpc_tree_params); -if (per_pixel_alpha) - blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA ; -else - blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA ; - blnd_cfg.overlap_only = false; blnd_cfg.global_gain =0xff ; +if (per_pixel_alpha && pipe_ctx->plane_state->global_alpha) { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN ; + blnd_cfg.global_gain = pipe_ctx->plane_state->global_alpha_value; + }else if (per_pixel_alpha) { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA ; + }else { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA ; + } +if (pipe_ctx->plane_state->global_alpha) blnd_cfg.global_alpha = pipe_ctx->plane_state->global_alpha_value;else
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +9 -5
@@ -2297,14 +2297,18 @@ void dcn20_update_mpcc(struct dc *dc, struct pipe_ctx *pipe_ctx)struct mpc *mpc = dc->res_pool->mpc;struct mpc_tree *mpc_tree_params = &(pipe_ctx->stream_res.opp->mpc_tree_params); -if (per_pixel_alpha) - blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA ; -else - blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA ; - blnd_cfg.overlap_only = false; blnd_cfg.global_gain =0xff ; +if (per_pixel_alpha && pipe_ctx->plane_state->global_alpha) { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA_COMBINED_GLOBAL_GAIN ; + blnd_cfg.global_gain = pipe_ctx->plane_state->global_alpha_value; + }else if (per_pixel_alpha) { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_PER_PIXEL_ALPHA ; + }else { + blnd_cfg.alpha_mode =MPCC_ALPHA_BLEND_MODE_GLOBAL_ALPHA ; + } +if (pipe_ctx->plane_state->global_alpha) blnd_cfg.global_alpha = pipe_ctx->plane_state->global_alpha_value;else
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hubbub.c +1 -0
@@ -448,6 +448,7 @@ static const struct hubbub_funcs hubbub30_funcs = { .program_watermarks = hubbub3_program_watermarks, .allow_self_refresh_control = hubbub1_allow_self_refresh_control, .is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled, + .verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high, .force_wm_propagate_to_pipes = hubbub3_force_wm_propagate_to_pipes, .force_pstate_change_control = hubbub3_force_pstate_change_control, .init_watermarks = hubbub3_init_watermarks,
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +3 -2
@@ -570,6 +570,9 @@ void dcn30_init_hw(struct dc *dc) } } +if (hws->funcs.enable_power_gating_plane) + hws->funcs.enable_power_gating_plane (dc->hwseq, true); +/* If taking control over from VBIOS, we may want to optimize our first * mode set, so we need to skip powering down pipes until we know which * pipes we want to use.
@@ -647,8 +650,6 @@ void dcn30_init_hw(struct dc *dc)REG_UPDATE (DCFCLK_CNTL ,DCFCLK_GATE_DIS ,0 ); } -if (hws->funcs.enable_power_gating_plane) - hws->funcs.enable_power_gating_plane (dc->hwseq, true);if (!dcb->funcs->is_accelerated_mode (dcb) && dc->res_pool->hubbub->funcs->init_watermarks) dc->res_pool->hubbub->funcs->init_watermarks (dc->res_pool->hubbub);
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_hubbub.c +1 -0
@@ -60,6 +60,7 @@ static const struct hubbub_funcs hubbub301_funcs = { .program_watermarks = hubbub3_program_watermarks, .allow_self_refresh_control = hubbub1_allow_self_refresh_control, .is_allow_self_refresh_enabled = hubbub1_is_allow_self_refresh_enabled, + .verify_allow_pstate_change_high = hubbub1_verify_allow_pstate_change_high, .force_wm_propagate_to_pipes = hubbub3_force_wm_propagate_to_pipes, .force_pstate_change_control = hubbub3_force_pstate_change_control, .hubbub_read_state = hubbub2_read_state,
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hubbub.c +63 -0
86 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c +3 -2
@@ -204,6 +204,9 @@ void dcn31_init_hw(struct dc *dc) } } +if (hws->funcs.enable_power_gating_plane) + hws->funcs.enable_power_gating_plane (dc->hwseq, true); +/* If taking control over from VBIOS, we may want to optimize our first * mode set, so we need to skip powering down pipes until we know which * pipes we want to use.
@@ -287,8 +290,6 @@ void dcn31_init_hw(struct dc *dc)REG_UPDATE (DCFCLK_CNTL ,DCFCLK_GATE_DIS ,0 ); } -if (hws->funcs.enable_power_gating_plane) - hws->funcs.enable_power_gating_plane (dc->hwseq, true);if (!dcb->funcs->is_accelerated_mode (dcb) && dc->res_pool->hubbub->funcs->init_watermarks) dc->res_pool->hubbub->funcs->init_watermarks (dc->res_pool->hubbub);
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +1 -1
@@ -940,7 +940,7 @@ static const struct dc_debug_options debug_defaults_drv = { .max_downscale_src_width = 4096,/*upto true 4K*/ .disable_pplib_wm_range = false, .scl_reset_length10 = true, - .sanity_checks = false, + .sanity_checks = true, .underflow_assert_delay_us = 0xFFFFFFFF, .dwb_fi_phase = -1, // -1 = disable, .dmub_command_table = true,
drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h +2 -0
@@ -154,6 +154,8 @@ struct hubbub_funcs {bool (*is_allow_self_refresh_enabled)(struct hubbub *hubbub);void (*allow_self_refresh_control)(struct hubbub *hubbub,bool allow); +bool (*verify_allow_pstate_change_high)(struct hubbub *hubbub); +void (*apply_DEDCN21_147_wa)(struct hubbub *hubbub);void (*force_wm_propagate_to_pipes)(struct hubbub *hubbub);
drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c +3 -2
@@ -100,7 +100,8 @@ enum vsc_packet_revision {//PB7 = MD0 #define MASK_VTEM_MD0__VRR_EN 0x01#define MASK_VTEM_MD0__M_CONST 0x02 -#define MASK_VTEM_MD0__RESERVED2 0x0C +#define MASK_VTEM_MD0__QMS_EN 0x04 +#define MASK_VTEM_MD0__RESERVED2 0x08#define MASK_VTEM_MD0__FVA_FACTOR_M1 0xF0//MD1
@@ -109,7 +110,7 @@ enum vsc_packet_revision {//MD2 #define MASK_VTEM_MD2__BASE_REFRESH_RATE_98 0x03#define MASK_VTEM_MD2__RB 0x04 -#define MASK_VTEM_MD2__RESERVED3 0xF8 +#define MASK_VTEM_MD2__NEXT_TFR 0xF8//MD3 #define MASK_VTEM_MD3__BASE_REFRESH_RATE_07 0xFF
drivers/gpu/drm/i915/gem/i915_gem_mman.c +1 -1
@@ -66,7 +66,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data,* mmap ioctl is disallowed for all discrete platforms, * and for all platforms with GRAPHICS_VER > 12. */ -if (IS_DGFX (i915) ||GRAPHICS_VER (i915) >12 ) +if (IS_DGFX (i915) ||GRAPHICS_VER_FULL (i915) >IP_VER (12 ,0 ))return -EOPNOTSUPP ;if (args->flags & ~(I915_MMAP_WC ))
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +1 -1
@@ -1711,7 +1711,7 @@ a6xx_create_private_address_space(struct msm_gpu *gpu)return ERR_CAST (mmu);return msm_gem_address_space_create (mmu, -"gpu" ,0x100000000ULL ,0x1ffffffffULL ); +"gpu" ,0x100000000ULL ,SZ_4G ); }static uint32_t a6xx_get_rptr (struct msm_gpu *gpu,struct msm_ringbuffer *ring)
drivers/gpu/drm/msm/dp/dp_display.c +6 -0
@@ -551,6 +551,12 @@ static int dp_hpd_plug_handle(struct dp_display_private *dp, u32 data)mutex_unlock (&dp->event_mutex); +/* +* add fail safe mode outside event_mutex scope +* to avoid potiential circular lock with drm thread +*/ +dp_panel_add_fail_safe_mode (dp->dp_display.connector); +/* uevent will complete connection part */ return 0 ; };
drivers/gpu/drm/msm/dp/dp_panel.c +10 -10
@@ -151,6 +151,15 @@ static int dp_panel_update_modes(struct drm_connector *connector,return rc; } +void dp_panel_add_fail_safe_mode (struct drm_connector *connector) +{ +/* fail safe edid */ +mutex_lock (&connector->dev->mode_config.mutex); +if (drm_add_modes_noedid (connector,640 ,480 )) +drm_set_preferred_mode (connector,640 ,480 ); +mutex_unlock (&connector->dev->mode_config.mutex); +} +int dp_panel_read_sink_caps (struct dp_panel *dp_panel,struct drm_connector *connector) {
@@ -207,16 +216,7 @@ int dp_panel_read_sink_caps(struct dp_panel *dp_panel, goto end; } -/* fail safe edid */ -mutex_lock (&connector->dev->mode_config.mutex); -if (drm_add_modes_noedid (connector,640 ,480 )) -drm_set_preferred_mode (connector,640 ,480 ); -mutex_unlock (&connector->dev->mode_config.mutex); - }else { -/* always add fail-safe mode as backup mode */ -mutex_lock (&connector->dev->mode_config.mutex); -drm_add_modes_noedid (connector,640 ,480 ); -mutex_unlock (&connector->dev->mode_config.mutex); +dp_panel_add_fail_safe_mode (connector); }if (panel->aux_cfg_update_done) {
drivers/gpu/drm/msm/dp/dp_panel.h +1 -0
@@ -59,6 +59,7 @@ int dp_panel_init_panel_info(struct dp_panel *dp_panel);int dp_panel_deinit (struct dp_panel *dp_panel);int dp_panel_timing_cfg (struct dp_panel *dp_panel);void dp_panel_dump_regs (struct dp_panel *dp_panel); +void dp_panel_add_fail_safe_mode (struct drm_connector *connector);int dp_panel_read_sink_caps (struct dp_panel *dp_panel,struct drm_connector *connector); u32 dp_panel_get_mode_bpp(struct dp_panel *dp_panel, u32 mode_max_bpp,
drivers/gpu/drm/msm/dsi/dsi_manager.c +1 -1
@@ -643,7 +643,7 @@ struct drm_connector *msm_dsi_manager_connector_init(u8 id)return connector; fail: - connector->funcs->destroy (msm_dsi->connector); + connector->funcs->destroy (connector);return ERR_PTR (ret); }
drivers/gpu/drm/msm/msm_gem.c +1 -0
@@ -937,6 +937,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m,get_pid_task (aspace->pid,PIDTYPE_PID );if (task) { comm =kstrdup (task->comm,GFP_KERNEL ); +put_task_struct (task); }else { comm =NULL ; }
drivers/gpu/ipu-v3/ipu-di.c +3 -2
@@ -447,8 +447,9 @@ static void ipu_di_config_clock(struct ipu_di *di, error = rate / (sig->mode.pixelclock /1000 ); -dev_dbg (di->ipu->dev," IPU clock can give %lu with divider %u, error %d.%u%%\n" , - rate, div, (signed )(error -1000 ) /10 , error %10 ); +dev_dbg (di->ipu->dev," IPU clock can give %lu with divider %u, error %c%d.%d%%\n" , + rate, div, error <1000 ?'-' :'+' , +abs (error -1000 ) /10 ,abs (error -1000 ) %10 );/* Allow a 1% error */ if (error <1010 && error >=990 ) {
drivers/hv/hv_balloon.c +34 -2
@@ -1653,6 +1653,38 @@ static void disable_page_reporting(void) } } +static int ballooning_enabled (void ) +{ +/* +* Disable ballooning if the page size is not 4k (HV_HYP_PAGE_SIZE), +* since currently it's unclear to us whether an unballoon request can +* make sure all page ranges are guest page size aligned. +*/ +if (PAGE_SIZE !=HV_HYP_PAGE_SIZE ) { +pr_info ("Ballooning disabled because page size is not 4096 bytes\n" ); +return 0 ; + } + +return 1 ; +} + +static int hot_add_enabled (void ) +{ +/* +* Disable hot add on ARM64, because we currently rely on +* memory_add_physaddr_to_nid() to get a node id of a hot add range, +* however ARM64's memory_add_physaddr_to_nid() always return 0 and +* DM_MEM_HOT_ADD_REQUEST doesn't have the NUMA node information for +* add_memory(). +*/ +if (IS_ENABLED (CONFIG_ARM64 )) { +pr_info ("Memory hot add disabled on ARM64\n" ); +return 0 ; + } + +return 1 ; +} +static int balloon_connect_vsp (struct hv_device *dev) {struct dm_version_request version_req;
@@ -1724,8 +1756,8 @@ static int balloon_connect_vsp(struct hv_device *dev)* currently still requires the bits to be set, so we have to add code * to fail the host's hot-add and balloon up/down requests, if any. */ - cap_msg.caps.cap_bits.balloon =1 ; - cap_msg.caps.cap_bits.hot_add =1 ; + cap_msg.caps.cap_bits.balloon =ballooning_enabled (); + cap_msg.caps.cap_bits.hot_add =hot_add_enabled ();/* * Specify our alignment requirements as it relates
drivers/hv/ring_buffer.c +10 -1
@@ -408,7 +408,16 @@ int hv_ringbuffer_read(struct vmbus_channel *channel,static u32 hv_pkt_iter_avail (const struct hv_ring_buffer_info *rbi) {u32 priv_read_loc = rbi->priv_read_index; -u32 write_loc =READ_ONCE (rbi->ring_buffer->write_index); +u32 write_loc; + +/* +* The Hyper-V host writes the packet data, then uses +* store_release() to update the write_index. Use load_acquire() +* here to prevent loads of the packet data from being re-ordered +* before the read of the write_index and potentially getting +* stale data. +*/ + write_loc =virt_load_acquire (&rbi->ring_buffer->write_index);if (write_loc >= priv_read_loc)return write_loc - priv_read_loc;
drivers/hv/vmbus_drv.c +12 -6
@@ -76,8 +76,8 @@ static int hyperv_panic_event(struct notifier_block *nb, unsigned long val,/* * Hyper-V should be notified only once about a panic. If we will be -* doing hyperv_report_panic_msg() later with kmsg data, don't do -* the notification here. +* doing hv_kmsg_dump() with kmsg data later, don't do the notification +* here. */ if (ms_hyperv.misc_features &HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE &&hyperv_report_reg ()) {
@@ -99,8 +99,8 @@ static int hyperv_die_event(struct notifier_block *nb, unsigned long val,/* * Hyper-V should be notified only once about a panic. If we will be -* doing hyperv_report_panic_msg() later with kmsg data, don't do -* the notification here. +* doing hv_kmsg_dump() with kmsg data later, don't do the notification +* here. */ if (hyperv_report_reg ())hyperv_report_panic (regs, val, true);
@@ -1545,14 +1545,20 @@ static int vmbus_bus_init(void)if (ret) goto err_connect; +if (hv_is_isolation_supported ()) + sysctl_record_panic_msg =0 ; +/* * Only register if the crash MSRs are available */ if (ms_hyperv.misc_features &HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE ) {u64 hyperv_crash_ctl;/* -* Sysctl registration is not fatal, since by default -* reporting is enabled. +* Panic message recording (sysctl_record_panic_msg) +* is enabled by default in non-isolated guests and +* disabled by default in isolated guests; the panic +* message recording won't be available in isolated +* guests should the following registration fail. */ hv_ctl_table_hdr =register_sysctl_table (hv_root_table);if (!hv_ctl_table_hdr)
drivers/i2c/busses/i2c-pasemi.c +6 -0
@@ -137,6 +137,12 @@ static int pasemi_i2c_xfer_msg(struct i2c_adapter *adapter,TXFIFO_WR (smbus, msg->buf[msg->len-1 ] | (stop ?MTXFIFO_STOP :0 )); + +if (stop) { + err =pasemi_smb_waitready (smbus); +if (err) + goto reset_out; + } }return 0 ;
drivers/i2c/i2c-dev.c +10 -5
@@ -668,16 +668,21 @@ static int i2cdev_attach_adapter(struct device *dev, void *dummy) i2c_dev->dev.class = i2c_dev_class; i2c_dev->dev.parent = &adap->dev; i2c_dev->dev.release = i2cdev_dev_release; -dev_set_name (&i2c_dev->dev,"i2c-%d" , adap->nr); + + res =dev_set_name (&i2c_dev->dev,"i2c-%d" , adap->nr); +if (res) + goto err_put_i2c_dev; res =cdev_device_add (&i2c_dev->cdev, &i2c_dev->dev); -if (res) { -put_i2c_dev (i2c_dev, false); -return res; - } +if (res) + goto err_put_i2c_dev;pr_debug ("adapter [%s] registered as minor %d\n" , adap->name, adap->nr);return 0 ; + +err_put_i2c_dev: +put_i2c_dev (i2c_dev, false); +return res; }static int i2cdev_detach_adapter (struct device *dev,void *dummy)
drivers/md/dm-integrity.c +5 -2
@@ -4383,6 +4383,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv) }if (ic->internal_hash) { +size_t recalc_tags_size; ic->recalc_wq =alloc_workqueue ("dm-integrity-recalc" ,WQ_MEM_RECLAIM ,1 );if (!ic->recalc_wq ) { ti->error ="Cannot allocate workqueue" ;
@@ -4396,8 +4397,10 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv) r = -ENOMEM ; goto bad; } - ic->recalc_tags =kvmalloc_array (RECALC_SECTORS >> ic->sb->log2_sectors_per_block, - ic->tag_size,GFP_KERNEL ); + recalc_tags_size = (RECALC_SECTORS >> ic->sb->log2_sectors_per_block) * ic->tag_size; +if (crypto_shash_digestsize (ic->internal_hash) > ic->tag_size) + recalc_tags_size +=crypto_shash_digestsize (ic->internal_hash) - ic->tag_size; + ic->recalc_tags =kvmalloc (recalc_tags_size,GFP_KERNEL );if (!ic->recalc_tags) { ti->error ="Cannot allocate tags for recalculating" ; r = -ENOMEM ;
drivers/md/dm-ps-historical-service-time.c +5 -5
@@ -432,7 +432,7 @@ static struct dm_path *hst_select_path(struct path_selector *ps, {struct selector *s = ps->context;struct path_info *pi =NULL , *best =NULL ; -u64 time_now =sched_clock (); +u64 time_now =ktime_get_ns ();struct dm_path *ret =NULL ;unsigned long flags;
@@ -473,7 +473,7 @@ static int hst_start_io(struct path_selector *ps, struct dm_path *path,static u64 path_service_time (struct path_info *pi,u64 start_time) { -u64 sched_now =ktime_get_ns (); +u64 now =ktime_get_ns ();/* if a previous disk request has finished after this IO was * sent to the hardware, pretend the submission happened
@@ -482,11 +482,11 @@ static u64 path_service_time(struct path_info *pi, u64 start_time)if (time_after64 (pi->last_finish, start_time)) start_time = pi->last_finish; - pi->last_finish = sched_now; -if (time_before64 (sched_now, start_time)) + pi->last_finish = now; +if (time_before64 (now, start_time))return 0 ; -return sched_now - start_time; +return now - start_time; } static int hst_end_io(struct path_selector *ps, struct dm_path *path,
drivers/media/platform/rockchip/rga/rga.c +1 -1
@@ -895,7 +895,7 @@ static int rga_probe(struct platform_device *pdev) } rga->dst_mmu_pages = (unsigned int *)__get_free_pages (GFP_KERNEL | __GFP_ZERO,3 ); -if (rga->dst_mmu_pages) { +if (!rga->dst_mmu_pages) { ret = -ENOMEM ; goto free_src_pages; }
drivers/memory/atmel-ebi.c +17 -6
@@ -544,20 +544,27 @@ static int atmel_ebi_probe(struct platform_device *pdev) smc_np =of_parse_phandle (dev->of_node,"atmel,smc" ,0 ); ebi->smc.regmap =syscon_node_to_regmap (smc_np); -if (IS_ERR (ebi->smc.regmap)) -return PTR_ERR (ebi->smc.regmap); +if (IS_ERR (ebi->smc.regmap)) { + ret =PTR_ERR (ebi->smc.regmap); + goto put_node; + } ebi->smc.layout =atmel_hsmc_get_reg_layout (smc_np); -if (IS_ERR (ebi->smc.layout)) -return PTR_ERR (ebi->smc.layout); +if (IS_ERR (ebi->smc.layout)) { + ret =PTR_ERR (ebi->smc.layout); + goto put_node; + } ebi->smc.clk =of_clk_get (smc_np,0 );if (IS_ERR (ebi->smc.clk)) { -if (PTR_ERR (ebi->smc.clk) != -ENOENT ) -return PTR_ERR (ebi->smc.clk); +if (PTR_ERR (ebi->smc.clk) != -ENOENT ) { + ret =PTR_ERR (ebi->smc.clk); + goto put_node; + } ebi->smc.clk =NULL ; } +of_node_put (smc_np); ret =clk_prepare_enable (ebi->smc.clk);if (ret)return ret;
@@ -608,6 +615,10 @@ static int atmel_ebi_probe(struct platform_device *pdev) }return of_platform_populate (np,NULL ,NULL , dev); + +put_node: +of_node_put (smc_np); +return ret; }static __maybe_unused int atmel_ebi_resume (struct device *dev)
drivers/memory/renesas-rpc-if.c +9 -1
@@ -579,6 +579,7 @@ static int rpcif_probe(struct platform_device *pdev)struct platform_device *vdev;struct device_node *flash;const char *name; +int ret; flash =of_get_next_child (pdev->dev.of_node,NULL );if (!flash) {
@@ -602,7 +603,14 @@ static int rpcif_probe(struct platform_device *pdev)return -ENOMEM ; vdev->dev.parent = &pdev->dev;platform_set_drvdata (pdev, vdev); -return platform_device_add (vdev); + + ret =platform_device_add (vdev); +if (ret) { +platform_device_put (vdev); +return ret; + } + +return 0 ; }static int rpcif_remove (struct platform_device *pdev)
drivers/net/dsa/ocelot/felix_vsc9959.c +1 -1
@@ -1455,7 +1455,7 @@ static int felix_pci_probe(struct pci_dev *pdev, err =dsa_register_switch (ds);if (err) { -dev_err (&pdev->dev,"Failed to register DSA switch: %d\n" , err); +dev_err_probe (&pdev->dev, err,"Failed to register DSA switch\n" ); goto err_register_ds; }
drivers/net/ethernet/broadcom/genet/bcmgenet.c +2 -2
@@ -76,7 +76,7 @@ static inline void bcmgenet_writel(u32 value, void __iomem *offset)if (IS_ENABLED (CONFIG_MIPS ) &&IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ))__raw_writel (value, offset);else -writel (value, offset); +writel_relaxed (value, offset); }static inline u32 bcmgenet_readl (void __iomem *offset)
@@ -84,7 +84,7 @@ static inline u32 bcmgenet_readl(void __iomem *offset)if (IS_ENABLED (CONFIG_MIPS ) &&IS_ENABLED (CONFIG_CPU_BIG_ENDIAN ))return __raw_readl (offset);else -return readl (offset); +return readl_relaxed (offset); } static inline void dmadesc_set_length_status(struct bcmgenet_priv *priv,
drivers/net/ethernet/faraday/ftgmac100.c +5 -5
@@ -1817,11 +1817,6 @@ static int ftgmac100_probe(struct platform_device *pdev) priv->rxdes0_edorr_mask =BIT (30 ); priv->txdes0_edotr_mask =BIT (30 ); priv->is_aspeed = true; -/* Disable ast2600 problematic HW arbitration */ -if (of_device_is_compatible (np,"aspeed,ast2600-mac" )) { -iowrite32 (FTGMAC100_TM_DEFAULT , - priv->base +FTGMAC100_OFFSET_TM ); - } }else { priv->rxdes0_edorr_mask =BIT (15 ); priv->txdes0_edotr_mask =BIT (15 );
@@ -1893,6 +1888,11 @@ static int ftgmac100_probe(struct platform_device *pdev) err =ftgmac100_setup_clk (priv);if (err) goto err_phy_connect; + +/* Disable ast2600 problematic HW arbitration */ +if (of_device_is_compatible (np,"aspeed,ast2600-mac" )) +iowrite32 (FTGMAC100_TM_DEFAULT , + priv->base +FTGMAC100_OFFSET_TM ); }/* Default ring sizes */
drivers/net/ethernet/mellanox/mlxsw/i2c.c +1 -0
@@ -650,6 +650,7 @@ static int mlxsw_i2c_probe(struct i2c_client *client,return 0 ; errout: +mutex_destroy (&mlxsw_i2c->cmd.lock);i2c_set_clientdata (client,NULL );return err;
drivers/net/ethernet/micrel/Kconfig +1 -0
@@ -39,6 +39,7 @@ config KS8851 config KS8851_MLL tristate "Micrel KS8851 MLL" depends on HAS_IOMEM + depends on PTP_1588_CLOCK_OPTIONAL select MII select CRC32 select EEPROM_93CX6
drivers/net/ethernet/myricom/myri10ge/myri10ge.c +2 -4
@@ -2900,11 +2900,9 @@ static netdev_tx_t myri10ge_sw_tso(struct sk_buff *skb, status =myri10ge_xmit (curr, dev);if (status !=0 ) {dev_kfree_skb_any (curr); -if (segs !=NULL ) { - curr = segs; - segs = next; + skb_list_walk_safe(next, curr, next) { curr->next =NULL ; -dev_kfree_skb_any (segs); +dev_kfree_skb_any (curr); } goto drop; }
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.c +0 -8
@@ -57,10 +57,6 @@#define TSE_PCS_USE_SGMII_ENA BIT(0)#define TSE_PCS_IF_USE_SGMII 0x03 -#define SGMII_ADAPTER_CTRL_REG 0x00 -#define SGMII_ADAPTER_DISABLE 0x0001 -#define SGMII_ADAPTER_ENABLE 0x0000 -#define AUTONEGO_LINK_TIMER 20static int tse_pcs_reset (void __iomem *base,struct tse_pcs *pcs)
@@ -202,12 +198,8 @@ void tse_pcs_fix_mac_speed(struct tse_pcs *pcs, struct phy_device *phy_dev, unsigned int speed) {void __iomem *tse_pcs_base = pcs->tse_pcs_base; -void __iomem *sgmii_adapter_base = pcs->sgmii_adapter_base;u32 val; -writew (SGMII_ADAPTER_ENABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); - pcs->autoneg = phy_dev->autoneg;if (phy_dev->autoneg ==AUTONEG_ENABLE ) {
drivers/net/ethernet/stmicro/stmmac/altr_tse_pcs.h +4 -0
@@ -10,6 +10,10 @@#include <linux/phy.h> #include <linux/timer.h> +#define SGMII_ADAPTER_CTRL_REG 0x00 +#define SGMII_ADAPTER_ENABLE 0x0000 +#define SGMII_ADAPTER_DISABLE 0x0001 +struct tse_pcs {struct device *dev;void __iomem *tse_pcs_base;
drivers/net/ethernet/stmicro/stmmac/dwmac-socfpga.c +5 -8
@@ -18,9 +18,6 @@#include "altr_tse_pcs.h" -#define SGMII_ADAPTER_CTRL_REG 0x00 -#define SGMII_ADAPTER_DISABLE 0x0001 -#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII 0x0#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII 0x1#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII 0x2
@@ -62,16 +59,14 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed) {struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)priv;void __iomem *splitter_base = dwmac->splitter_base; -void __iomem *tse_pcs_base = dwmac->pcs.tse_pcs_base;void __iomem *sgmii_adapter_base = dwmac->pcs.sgmii_adapter_base;struct device *dev = dwmac->dev;struct net_device *ndev =dev_get_drvdata (dev);struct phy_device *phy_dev = ndev->phydev;u32 val; -if ((tse_pcs_base) && (sgmii_adapter_base)) -writew (SGMII_ADAPTER_DISABLE , - sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); +writew (SGMII_ADAPTER_DISABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG );if (splitter_base) { val =readl (splitter_base +EMAC_SPLITTER_CTRL_REG );
@@ -93,7 +88,9 @@ static void socfpga_dwmac_fix_mac_speed(void *priv, unsigned int speed)writel (val, splitter_base +EMAC_SPLITTER_CTRL_REG ); } -if (tse_pcs_base && sgmii_adapter_base) +writew (SGMII_ADAPTER_ENABLE , + sgmii_adapter_base +SGMII_ADAPTER_CTRL_REG ); +if (phy_dev)tse_pcs_fix_mac_speed (&dwmac->pcs, phy_dev, speed); }
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +6 -7
@@ -2127,15 +2127,14 @@ static int axienet_probe(struct platform_device *pdev)if (ret) goto cleanup_clk; - lp->phy_node =of_parse_phandle (pdev->dev.of_node,"phy-handle" ,0 ); -if (lp->phy_node) { - ret =axienet_mdio_setup (lp); -if (ret) -dev_warn (&pdev->dev, -"error registering MDIO bus: %d\n" , ret); - } + ret =axienet_mdio_setup (lp); +if (ret) +dev_warn (&pdev->dev, +"error registering MDIO bus: %d\n" , ret); +if (lp->phy_mode ==PHY_INTERFACE_MODE_SGMII || lp->phy_mode ==PHY_INTERFACE_MODE_1000BASEX ) { + lp->phy_node =of_parse_phandle (pdev->dev.of_node,"phy-handle" ,0 );if (!lp->phy_node) {dev_err (&pdev->dev,"phy-handle required for 1000BaseX/SGMII\n" ); ret = -EINVAL ;
drivers/net/hamradio/6pack.c +3 -2
@@ -306,7 +306,6 @@ static void sp_setup(struct net_device *dev) {/* Finish setting up the DEVICE info. */ dev->netdev_ops = &sp_netdev_ops; - dev->needs_free_netdev = true; dev->mtu =SIXP_MTU ; dev->hard_header_len =AX25_MAX_HEADER_LEN ; dev->header_ops = &ax25_header_ops;
@@ -674,9 +673,11 @@ static void sixpack_close(struct tty_struct *tty)del_timer_sync (&sp->tx_t);del_timer_sync (&sp->resync_t); -/* Free all 6pack frame buffers. */ +/* Free all 6pack frame buffers after unreg. */ kfree (sp->rbuff);kfree (sp->xbuff); + +free_netdev (sp->dev); }/* Perform I/O control on an active 6pack channel. */
drivers/net/ipa/Kconfig +1 -0
@@ -4,6 +4,7 @@ config QCOM_IPA depends on ARCH_QCOM || COMPILE_TEST depends on INTERCONNECT depends on QCOM_RPROC_COMMON || (QCOM_RPROC_COMMON=n && COMPILE_TEST) + depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select QCOM_MDT_LOADER if ARCH_QCOM select QCOM_SCM select QCOM_QMI_HELPERS
drivers/net/ipa/ipa_power.c +52 -0
94 lines not on this page · raw message
drivers/net/ipa/ipa_power.h +7 -0
@@ -40,6 +40,13 @@ void ipa_power_modem_queue_wake(struct ipa *ipa);*/ void ipa_power_modem_queue_active (struct ipa *ipa); +/** +* ipa_power_retention() - Control register retention on power collapse +* @ipa: IPA pointer +* @enable: Whether retention should be enabled or disabled +*/ +void ipa_power_retention (struct ipa *ipa,bool enable); +/** * ipa_power_setup() - Set up IPA power management * @ipa: IPA pointer
drivers/net/ipa/ipa_uc.c +5 -0
@@ -11,6 +11,7 @@#include "ipa.h" #include "ipa_uc.h" +#include "ipa_power.h" /** * DOC: The IPA embedded microcontroller
@@ -154,6 +155,7 @@ static void ipa_uc_response_hdlr(struct ipa *ipa, enum ipa_irq_id irq_id)case IPA_UC_RESPONSE_INIT_COMPLETED :if (ipa->uc_powered) { ipa->uc_loaded = true; +ipa_power_retention (ipa, true);pm_runtime_mark_last_busy (dev); (void )pm_runtime_put_autosuspend (dev); ipa->uc_powered = false;
@@ -184,6 +186,9 @@ void ipa_uc_deconfig(struct ipa *ipa)ipa_interrupt_remove (ipa->interrupt,IPA_IRQ_UC_1 );ipa_interrupt_remove (ipa->interrupt,IPA_IRQ_UC_0 ); +if (ipa->uc_loaded) +ipa_power_retention (ipa, false); +if (!ipa->uc_powered)return ;
drivers/net/macvlan.c +6 -2
@@ -460,8 +460,10 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)return RX_HANDLER_CONSUMED ; *pskb = skb; eth =eth_hdr (skb); -if (macvlan_forward_source (skb, port, eth->h_source)) +if (macvlan_forward_source (skb, port, eth->h_source)) { +kfree_skb (skb);return RX_HANDLER_CONSUMED ; + } src =macvlan_hash_lookup (port, eth->h_source);if (src && src->mode !=MACVLAN_MODE_VEPA && src->mode !=MACVLAN_MODE_BRIDGE ) {
@@ -480,8 +482,10 @@ static rx_handler_result_t macvlan_handle_frame(struct sk_buff **pskb)return RX_HANDLER_PASS ; } -if (macvlan_forward_source (skb, port, eth->h_source)) +if (macvlan_forward_source (skb, port, eth->h_source)) { +kfree_skb (skb);return RX_HANDLER_CONSUMED ; + }if (macvlan_passthru (port)) vlan =list_first_or_null_rcu (&port->vlans, struct macvlan_dev, list);
drivers/net/mdio/fwnode_mdio.c +5 -0
@@ -43,6 +43,11 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,int rc; rc =fwnode_irq_get (child,0 ); +/* Don't wait forever if the IRQ provider doesn't become available, +* just fall back to poll mode +*/ +if (rc == -EPROBE_DEFER ) + rc =driver_deferred_probe_check_state (&phy->mdio.dev);if (rc == -EPROBE_DEFER )return rc;
drivers/net/slip/slip.c +1 -1
@@ -469,7 +469,7 @@ static void sl_tx_timeout(struct net_device *dev, unsigned int txqueue)spin_lock (&sl->lock);if (netif_queue_stopped (dev)) { -if (!netif_running (dev)) +if (!netif_running (dev) || !sl->tty) goto out;/* May be we must check transmitter timeout here ?
drivers/net/usb/aqc111.c +7 -2
@@ -1102,10 +1102,15 @@ static int aqc111_rx_fixup(struct usbnet *dev, struct sk_buff *skb)if (start_of_descs != desc_offset) goto err; -/* self check desc_offset from header*/ -if (desc_offset >= skb_len) +/* self check desc_offset from header and make sure that the +* bounds of the metadata array are inside the SKB +*/ +if (pkt_count *2 + desc_offset >= skb_len) goto err; +/* Packets must not overlap the metadata array */ +skb_trim (skb, desc_offset); +if (pkt_count ==0 ) goto err;
drivers/net/veth.c +1 -1
@@ -327,7 +327,7 @@ static netdev_tx_t veth_xmit(struct sk_buff *skb, struct net_device *dev)rcu_read_lock (); rcv =rcu_dereference (priv->peer); -if (unlikely (!rcv)) { +if (unlikely (!rcv) || !pskb_may_pull (skb,ETH_HLEN )) {kfree_skb (skb); goto drop; }
drivers/net/wireless/ath/ath11k/mac.c +13 -8
@@ -2156,6 +2156,19 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,if (ret)ath11k_warn (ar->ab,"failed to update bcn template: %d\n" , ret); +if (vif->bss_conf.he_support) { + ret =ath11k_wmi_vdev_set_param_cmd (ar, arvif->vdev_id, +WMI_VDEV_PARAM_BA_MODE , +WMI_BA_MODE_BUFFER_SIZE_256 ); +if (ret) +ath11k_warn (ar->ab, +"failed to set BA BUFFER SIZE 256 for vdev: %d\n" , + arvif->vdev_id); +else +ath11k_dbg (ar->ab,ATH11K_DBG_MAC , +"Set BA BUFFER SIZE 256 for VDEV: %d\n" , + arvif->vdev_id); + } }if (changed & (BSS_CHANGED_BEACON_INFO |BSS_CHANGED_BEACON )) {
@@ -2191,14 +2204,6 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,if (arvif->is_up && vif->bss_conf.he_support && vif->bss_conf.he_oper.params) { - ret =ath11k_wmi_vdev_set_param_cmd (ar, arvif->vdev_id, -WMI_VDEV_PARAM_BA_MODE , -WMI_BA_MODE_BUFFER_SIZE_256 ); -if (ret) -ath11k_warn (ar->ab, -"failed to set BA BUFFER SIZE 256 for vdev: %d\n" , - arvif->vdev_id); - param_id =WMI_VDEV_PARAM_HEOPS_0_31 ; param_value = vif->bss_conf.he_oper.params; ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
drivers/net/wireless/ath/ath9k/main.c +1 -1
@@ -839,7 +839,7 @@ static bool ath9k_txq_list_has_key(struct list_head *txq_list, u32 keyix)continue ; txinfo =IEEE80211_SKB_CB (bf->bf_mpdu); - fi = (struct ath_frame_info *)&txinfo->rate_driver_data[0 ]; + fi = (struct ath_frame_info *)&txinfo->status.status_driver_data[0 ];if (fi->keyix == keyix)return true; }
drivers/net/wireless/ath/ath9k/xmit.c +21 -12
@@ -141,8 +141,8 @@ static struct ath_frame_info *get_frame_info(struct sk_buff *skb) {struct ieee80211_tx_info *tx_info =IEEE80211_SKB_CB (skb);BUILD_BUG_ON (sizeof (struct ath_frame_info ) > -sizeof (tx_info->rate_driver_data)); -return (struct ath_frame_info *) &tx_info->rate_driver_data[0 ]; +sizeof (tx_info->status.status_driver_data)); +return (struct ath_frame_info *) &tx_info->status.status_driver_data[0 ]; }static void ath_send_bar (struct ath_atx_tid *tid,u16 seqno)
@@ -2501,6 +2501,16 @@ static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,spin_unlock_irqrestore (&sc->tx.txbuflock, flags); } +static void ath_clear_tx_status (struct ieee80211_tx_info *tx_info) +{ +void *ptr = &tx_info->status; + +memset (ptr +sizeof (tx_info->status.rates),0 , +sizeof (tx_info->status) - +sizeof (tx_info->status.rates) - +sizeof (tx_info->status.status_driver_data)); +} +static void ath_tx_rc_status (struct ath_softc *sc,struct ath_buf *bf,struct ath_tx_status *ts,int nframes,int nbad,int txok)
@@ -2512,6 +2522,8 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,struct ath_hw *ah = sc->sc_ah;u8 i, tx_rateindex; +ath_clear_tx_status (tx_info); +if (txok) tx_info->status.ack_signal = ts->ts_rssi;
@@ -2526,6 +2538,13 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf, tx_info->status.ampdu_len = nframes; tx_info->status.ampdu_ack_len = nframes - nbad; + tx_info->status.rates[tx_rateindex].count = ts->ts_longretry +1 ; + +for (i = tx_rateindex +1 ; i < hw->max_rates; i++) { + tx_info->status.rates[i].count =0 ; + tx_info->status.rates[i].idx =-1 ; + } +if ((ts->ts_status &ATH9K_TXERR_FILT ) ==0 && (tx_info->flags &IEEE80211_TX_CTL_NO_ACK ) ==0 ) {/*
@@ -2547,16 +2566,6 @@ static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf, tx_info->status.rates[tx_rateindex].count = hw->max_rate_tries; } - -for (i = tx_rateindex +1 ; i < hw->max_rates; i++) { - tx_info->status.rates[i].count =0 ; - tx_info->status.rates[i].idx =-1 ; - } - - tx_info->status.rates[tx_rateindex].count = ts->ts_longretry +1 ; - -/* we report airtime in ath_tx_count_airtime(), don't report twice */ - tx_info->status.tx_time =0 ; }static void ath_tx_processq (struct ath_softc *sc,struct ath_txq *txq)
drivers/pci/controller/pci-hyperv.c +9 -0
@@ -3148,6 +3148,15 @@ static int hv_pci_probe(struct hv_device *hdev, hbus->bridge->domain_nr = dom;#ifdef CONFIG_X86 hbus->sysdata.domain = dom; +#elif defined(CONFIG_ARM64 ) +/* +* Set the PCI bus parent to be the corresponding VMbus +* device. Then the VMbus device will be assigned as the +* ACPI companion in pcibios_root_bridge_prepare() and +* pci_dma_configure() will propagate device coherence +* information to devices created on the bus. +*/ + hbus->sysdata.parent = hdev->device.parent;#endif hbus->hdev = hdev;
drivers/perf/fsl_imx8_ddr_perf.c +1 -1
@@ -29,7 +29,7 @@#define CNTL_OVER_MASK 0xFFFFFFFE#define CNTL_CSV_SHIFT 24 -#define CNTL_CSV_MASK (0xFF << CNTL_CSV_SHIFT) +#define CNTL_CSV_MASK (0xFFU << CNTL_CSV_SHIFT)#define EVENT_CYCLES_ID 0#define EVENT_CYCLES_COUNTER 0
drivers/regulator/wm8994-regulator.c +39 -3
54 lines not on this page · raw message
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c +1 -1
@@ -36,7 +36,7 @@#define IBMVSCSIS_VERSION "v0.2" -#define INITIAL_SRP_LIMIT 800 +#define INITIAL_SRP_LIMIT 1024#define DEFAULT_MAX_SECTORS 256#define MAX_TXU 1024 * 1024
drivers/scsi/lpfc/lpfc_init.c +2 -0
@@ -15105,6 +15105,8 @@ lpfc_io_slot_reset_s4(struct pci_dev *pdev) psli->sli_flag &= ~LPFC_SLI_ACTIVE ;spin_unlock_irq (&phba->hbalock); +/* Init cpu_map array */ +lpfc_cpu_map_array_init (phba);/* Configure and enable interrupt */ intr_mode =lpfc_sli4_enable_intr (phba, phba->intr_mode);if (intr_mode ==LPFC_INTR_ERROR ) {
drivers/scsi/megaraid/megaraid_sas.h +3 -0
@@ -2558,6 +2558,9 @@ struct megasas_instance_template {#define MEGASAS_IS_LOGICAL (sdev) \ ((sdev->channel < MEGASAS_MAX_PD_CHANNELS) ? 0 : 1) +#define MEGASAS_IS_LUN_VALID (sdev) \ + (((sdev)->lun == 0) ? 1 : 0) +#define MEGASAS_DEV_INDEX (scp) \ (((scp->device->channel % 2) * MEGASAS_MAX_DEV_PER_CHANNEL) + \ scp->device->id)
drivers/scsi/megaraid/megaraid_sas_base.c +7 -0
@@ -2126,6 +2126,9 @@ static int megasas_slave_alloc(struct scsi_device *sdev) goto scan_target; }return -ENXIO ; + }else if (!MEGASAS_IS_LUN_VALID (sdev)) { +sdev_printk (KERN_INFO , sdev,"%s: invalid LUN\n" , __func__); +return -ENXIO ; } scan_target:
@@ -2156,6 +2159,10 @@ static void megasas_slave_destroy(struct scsi_device *sdev) instance =megasas_lookup_instance (sdev->host->host_no);if (MEGASAS_IS_LOGICAL (sdev)) { +if (!MEGASAS_IS_LUN_VALID (sdev)) { +sdev_printk (KERN_INFO , sdev,"%s: invalid LUN\n" , __func__); +return ; + } ld_tgt_id =MEGASAS_TARGET_ID (sdev); instance->ld_tgtid_status[ld_tgt_id] =LD_TARGET_ID_DELETED ;if (megasas_dbg_lvl &LD_PD_DEBUG )
drivers/scsi/mpt3sas/mpt3sas_config.c +6 -3
@@ -394,10 +394,13 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t retry_count++;if (ioc->config_cmds.smid == smid)mpt3sas_base_free_smid (ioc, smid); -if ((ioc->shost_recovery) || (ioc->config_cmds.status & -MPT3_CMD_RESET ) || ioc->pci_error_recovery) +if (ioc->config_cmds.status &MPT3_CMD_RESET ) goto retry_config; - issue_host_reset =1 ; +if (ioc->shost_recovery || ioc->pci_error_recovery) { + issue_host_reset =0 ; + r = -EFAULT ; + }else + issue_host_reset =1 ; goto free_mem; }
drivers/scsi/mvsas/mv_init.c +1 -0
@@ -646,6 +646,7 @@ static struct pci_device_id mvs_pci_table[] = { { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1300), chip_1300 }, { PCI_VDEVICE(ARECA, PCI_DEVICE_ID_ARECA_1320), chip_1320 }, { PCI_VDEVICE(ADAPTEC2, 0x0450), chip_6440 }, + { PCI_VDEVICE(TTI, 0x2640), chip_6440 }, { PCI_VDEVICE(TTI, 0x2710), chip_9480 }, { PCI_VDEVICE(TTI, 0x2720), chip_9480 }, { PCI_VDEVICE(TTI, 0x2721), chip_9480 },
drivers/scsi/pm8001/pm80xx_hwi.c +24 -9
@@ -765,6 +765,10 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) pm8001_ha->main_cfg_tbl.pm80xx_tbl.pcs_event_log_severity =0x01 ; pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt =0x01 ; +/* Enable higher IQs and OQs, 32 to 63, bit 16 */ +if (pm8001_ha->max_q_num >32 ) + pm8001_ha->main_cfg_tbl.pm80xx_tbl.fatal_err_interrupt |= +1 <<16 ;/* Disable end to end CRC checking */ pm8001_ha->main_cfg_tbl.pm80xx_tbl.crc_core_dump = (0x1 <<16 );
@@ -1026,6 +1030,13 @@ static int mpi_init_check(struct pm8001_hba_info *pm8001_ha)if (0x0000 != gst_len_mpistate)return -EBUSY ; +/* +* As per controller datasheet, after successful MPI +* initialization minimum 500ms delay is required before +* issuing commands. +*/ +msleep (500 ); +return 0 ; }
@@ -1733,10 +1744,11 @@ static void pm80xx_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec) {#ifdef PM8001_USE_MSIX -u32 mask; - mask = (u32)(1 << vec); - -pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR_CLR , (u32)(mask &0xFFFFFFFF )); +if (vec <32 ) +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR_CLR ,1U << vec); +else +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR_CLR_U , +1U << (vec -32 ));return ;#endif pm80xx_chip_intx_interrupt_enable (pm8001_ha);
@@ -1752,12 +1764,15 @@ static void pm80xx_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec) {#ifdef PM8001_USE_MSIX -u32 mask; -if (vec ==0xFF ) - mask =0xFFFFFFFF ; +if (vec ==0xFF ) { +/* disable all vectors 0-31, 32-63 */ +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR ,0xFFFFFFFF ); +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR_U ,0xFFFFFFFF ); + }else if (vec <32 ) +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR ,1U << vec);else - mask = (u32)(1 << vec); -pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR , (u32)(mask &0xFFFFFFFF )); +pm8001_cw32 (pm8001_ha,0 ,MSGU_ODMR_U , +1U << (vec -32 ));return ;#endif pm80xx_chip_intx_interrupt_disable (pm8001_ha);
drivers/scsi/scsi_transport_iscsi.c +105 -63
281 lines not on this page · raw message
drivers/soc/qcom/qcom_aoss.c +57 -1
96 lines not on this page · raw message
drivers/spi/spi-cadence-quadspi.c +12 -34
90 lines not on this page · raw message
drivers/target/target_core_user.c +2 -1
@@ -1821,6 +1821,7 @@ static struct page *tcmu_try_get_data_page(struct tcmu_dev *udev, uint32_t dpi)mutex_lock (&udev->cmdr_lock); page =xa_load (&udev->data_pages, dpi);if (likely (page)) { +get_page (page);mutex_unlock (&udev->cmdr_lock);return page; }
@@ -1877,6 +1878,7 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)/* For the vmalloc()ed cmd area pages */ addr = (void *)(unsigned long )info->mem[mi].addr + offset; page =vmalloc_to_page (addr); +get_page (page); }else {uint32_t dpi;
@@ -1887,7 +1889,6 @@ static vm_fault_t tcmu_vma_fault(struct vm_fault *vmf)return VM_FAULT_SIGBUS ; } -get_page (page); vmf->page = page;return 0 ; }
drivers/vfio/pci/vfio_pci_core.c +74 -50
202 lines not on this page · raw message
fs/btrfs/block-group.c +0 -4
@@ -2882,7 +2882,6 @@ int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans)struct btrfs_path *path =NULL ;LIST_HEAD (dirty);struct list_head *io = &cur_trans->io_bgs; -int num_started =0 ;int loops =0 ;spin_lock (&cur_trans->dirty_bgs_lock);
@@ -2948,7 +2947,6 @@ int btrfs_start_dirty_block_groups(struct btrfs_trans_handle *trans) cache->io_ctl.inode =NULL ; ret =btrfs_write_out_cache (trans, cache, path);if (ret ==0 && cache->io_ctl.inode) { - num_started++; should_put =0 ;/*
@@ -3049,7 +3047,6 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans)int should_put;struct btrfs_path *path;struct list_head *io = &cur_trans->io_bgs; -int num_started =0 ; path =btrfs_alloc_path ();if (!path)
@@ -3107,7 +3104,6 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans) cache->io_ctl.inode =NULL ; ret =btrfs_write_out_cache (trans, cache, path);if (ret ==0 && cache->io_ctl.inode) { - num_started++; should_put =0 ;list_add_tail (&cache->io_list, io); }else {
fs/btrfs/compression.c +0 -2
@@ -550,7 +550,6 @@ static noinline int add_ra_bio_pages(struct inode *inode,u64 isize =i_size_read (inode);int ret;struct page *page; -unsigned long nr_pages =0 ;struct extent_map *em;struct address_space *mapping = inode->i_mapping;struct extent_map_tree *em_tree;
@@ -646,7 +645,6 @@ static noinline int add_ra_bio_pages(struct inode *inode, PAGE_SIZE, 0);if (ret ==PAGE_SIZE ) { - nr_pages++;put_page (page); }else {unlock_extent (tree, last_offset, end);
fs/btrfs/disk-io.c +3 -2
@@ -1738,9 +1738,10 @@ static struct btrfs_root *btrfs_get_root_ref(struct btrfs_fs_info *fs_info, ret =btrfs_insert_fs_root (fs_info, root);if (ret) { -btrfs_put_root (root); -if (ret == -EEXIST ) +if (ret == -EEXIST ) { +btrfs_put_root (root); goto again; + } goto fail; }return root;
fs/btrfs/extent_io.c +1 -4
@@ -3561,7 +3561,6 @@ int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,u64 cur_end;struct extent_map *em;int ret =0 ; -int nr =0 ;size_t pg_offset =0 ;size_t iosize;size_t blocksize = inode->i_sb->s_blocksize;
@@ -3727,9 +3726,7 @@ int btrfs_do_readpage(struct page *page, struct extent_map **em_cached, end_bio_extent_readpage,0 , this_bio_flag, force_bio_submit); -if (!ret) { - nr++; - }else { +if (ret) {unlock_extent (tree, cur, cur + iosize -1 );end_page_read (page, false, cur, iosize); goto out;
fs/btrfs/file.c +11 -2
@@ -2878,8 +2878,9 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,return ret; } -static int btrfs_punch_hole (struct inode *inode,loff_t offset,loff_t len) +static int btrfs_punch_hole (struct file *file,loff_t offset,loff_t len) { +struct inode *inode =file_inode (file);struct btrfs_fs_info *fs_info =btrfs_sb (inode->i_sb);struct btrfs_root *root =BTRFS_I (inode)->root;struct extent_state *cached_state =NULL ;
@@ -2911,6 +2912,10 @@ static int btrfs_punch_hole(struct inode *inode, loff_t offset, loff_t len) goto out_only_mutex; } + ret =file_modified (file); +if (ret) + goto out_only_mutex; + lockstart =round_up (offset,btrfs_inode_sectorsize (BTRFS_I (inode))); lockend =round_down (offset + len,btrfs_inode_sectorsize (BTRFS_I (inode))) -1 ;
@@ -3351,7 +3356,7 @@ static long btrfs_fallocate(struct file *file, int mode,return -EOPNOTSUPP ;if (mode &FALLOC_FL_PUNCH_HOLE ) -return btrfs_punch_hole (inode, offset, len); +return btrfs_punch_hole (file, offset, len);/* * Only trigger disk allocation, don't trigger qgroup reserve
@@ -3373,6 +3378,10 @@ static long btrfs_fallocate(struct file *file, int mode, goto out; } + ret =file_modified (file); +if (ret) + goto out; +/* * TODO: Move these two operations after we have checked * accurate reserved space, or fallocate can still fail but
fs/btrfs/inode.c +3 -4
@@ -1075,7 +1075,6 @@ static noinline int cow_file_range(struct btrfs_inode *inode,int ret =0 ;if (btrfs_is_free_space_inode (inode)) { -WARN_ON_ONCE (1 ); ret = -EINVAL ; goto out_unlock; }
@@ -7772,6 +7771,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,u64 block_start, orig_start, orig_block_len, ram_bytes;bool can_nocow = false;bool space_reserved = false; +u64 prev_len;int ret =0 ;/*
@@ -7799,6 +7799,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map, can_nocow = true; } + prev_len = len;if (can_nocow) {struct extent_map *em2;
@@ -7828,8 +7829,6 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map, goto out; } }else { -const u64 prev_len = len; -/* Our caller expects us to free the input extent map. */ free_extent_map (em); *map =NULL ;
@@ -7860,7 +7859,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,* We have created our ordered extent, so we can now release our reservation * for an outstanding extent. */ -btrfs_delalloc_release_extents (BTRFS_I (inode), len); +btrfs_delalloc_release_extents (BTRFS_I (inode), prev_len);/* * Need to update the i_size under the extent lock so buffered
fs/btrfs/volumes.c +2 -0
@@ -4389,10 +4389,12 @@ static int balance_kthread(void *data)struct btrfs_fs_info *fs_info = data;int ret =0 ; +sb_start_write (fs_info->sb);mutex_lock (&fs_info->balance_mutex);if (fs_info->balance_ctl) ret =btrfs_balance (fs_info, fs_info->balance_ctl,NULL );mutex_unlock (&fs_info->balance_mutex); +sb_end_write (fs_info->sb);return ret; }
fs/cifs/cifsfs.c +15 -13
@@ -266,22 +266,24 @@ static void cifs_kill_sb(struct super_block *sb)* before we kill the sb. */ if (cifs_sb->root) { +for (node =rb_first (root); node; node =rb_next (node)) { + tlink = rb_entry(node, struct tcon_link, tl_rbnode); + tcon =tlink_tcon (tlink); +if (IS_ERR (tcon)) +continue ; + cfid = &tcon->crfid; +mutex_lock (&cfid->fid_mutex); +if (cfid->dentry) { +dput (cfid->dentry); + cfid->dentry =NULL ; + } +mutex_unlock (&cfid->fid_mutex); + } + +/* finally release root dentry */ dput (cifs_sb->root); cifs_sb->root =NULL ; } - node =rb_first (root); -while (node !=NULL ) { - tlink = rb_entry(node, struct tcon_link, tl_rbnode); - tcon =tlink_tcon (tlink); - cfid = &tcon->crfid; -mutex_lock (&cfid->fid_mutex); -if (cfid->dentry) { -dput (cfid->dentry); - cfid->dentry =NULL ; - } -mutex_unlock (&cfid->fid_mutex); - node =rb_next (node); - }kill_anon_super (sb);cifs_umount (cifs_sb);
fs/cifs/link.c +3 -0
@@ -85,6 +85,9 @@ parse_mf_symlink(const u8 *buf, unsigned int buf_len, unsigned int *_link_len,if (rc !=1 )return -EINVAL ; +if (link_len >CIFS_MF_SYMLINK_LINK_MAXLEN ) +return -EINVAL ; + rc =symlink_hash (link_len, link_str, md5_hash);if (rc) {cifs_dbg (FYI ,"%s: MD5 hash failure: %d\n" , __func__, rc);
fs/io_uring.c +14 -10
@@ -6403,6 +6403,7 @@ static int io_files_update(struct io_kiocb *req, unsigned int issue_flags) up.nr =0 ; up.tags =0 ; up.resv =0 ; + up.resv2 =0 ;io_ring_submit_lock (ctx, !(issue_flags &IO_URING_F_NONBLOCK )); ret = __io_register_rsrc_update(ctx, IORING_RSRC_FILE,
@@ -8412,13 +8413,15 @@ static int io_sqe_file_register(struct io_ring_ctx *ctx, struct file *file,static int io_queue_rsrc_removal (struct io_rsrc_data *data,unsigned idx,struct io_rsrc_node *node,void *rsrc) { +u64 *tag_slot =io_get_tag_slot (data, idx);struct io_rsrc_put *prsrc; prsrc =kzalloc (sizeof (*prsrc),GFP_KERNEL );if (!prsrc)return -ENOMEM ; - prsrc->tag = *io_get_tag_slot (data, idx); + prsrc->tag = *tag_slot; + *tag_slot =0 ; prsrc->rsrc = rsrc;list_add (&prsrc->list, &node->rsrc_list);return 0 ;
@@ -8486,7 +8489,7 @@ static int io_close_fixed(struct io_kiocb *req, unsigned int issue_flags)struct io_ring_ctx *ctx = req->ctx;struct io_fixed_file *file_slot;struct file *file; -int ret, i; +int ret;io_ring_submit_lock (ctx, !(issue_flags &IO_URING_F_NONBLOCK )); ret = -ENXIO ;
@@ -8499,8 +8502,8 @@ static int io_close_fixed(struct io_kiocb *req, unsigned int issue_flags)if (ret) goto out; - i =array_index_nospec (offset, ctx->nr_user_files); - file_slot =io_fixed_file_slot (&ctx->file_table, i); + offset =array_index_nospec (offset, ctx->nr_user_files); + file_slot =io_fixed_file_slot (&ctx->file_table, offset); ret = -EBADF ;if (!file_slot->file_ptr) goto out;
@@ -8556,8 +8559,7 @@ static int __io_sqe_files_update(struct io_ring_ctx *ctx,if (file_slot->file_ptr) { file = (struct file *)(file_slot->file_ptr &FFS_MASK ); - err =io_queue_rsrc_removal (data, up->offset + done, - ctx->rsrc_node, file); + err =io_queue_rsrc_removal (data, i, ctx->rsrc_node, file);if (err)break ; file_slot->file_ptr =0 ;
@@ -9226,7 +9228,7 @@ static int __io_sqe_buffers_update(struct io_ring_ctx *ctx, i =array_index_nospec (offset, ctx->nr_user_bufs);if (ctx->user_bufs[i] != ctx->dummy_ubuf) { - err =io_queue_rsrc_removal (ctx->buf_data, offset, + err =io_queue_rsrc_removal (ctx->buf_data, i, ctx->rsrc_node, ctx->user_bufs[i]);if (unlikely (err)) {io_buffer_unmap (ctx, &imu);
@@ -9980,6 +9982,8 @@ static int io_get_ext_arg(unsigned flags, const void __user *argp, size_t *argszreturn -EINVAL ;if (copy_from_user (&arg, argp,sizeof (arg)))return -EFAULT ; +if (arg.pad) +return -EINVAL ; *sig =u64_to_user_ptr (arg.sigmask); *argsz = arg.sigmask_sz; *ts =u64_to_user_ptr (arg.ts);
@@ -10595,8 +10599,6 @@ static int __io_register_rsrc_update(struct io_ring_ctx *ctx, unsigned type,__u32 tmp;int err; -if (up->resv) -return -EINVAL ;if (check_add_overflow (up->offset, nr_args, &tmp))return -EOVERFLOW ; err =io_rsrc_node_switch_start (ctx);
@@ -10622,6 +10624,8 @@ static int io_register_files_update(struct io_ring_ctx *ctx, void __user *arg,memset (&up,0 ,sizeof (up));if (copy_from_user (&up, arg,sizeof (struct io_uring_rsrc_update )))return -EFAULT ; +if (up.resv || up.resv2) +return -EINVAL ;return __io_register_rsrc_update (ctx,IORING_RSRC_FILE , &up, nr_args); }
@@ -10634,7 +10638,7 @@ static int io_register_rsrc_update(struct io_ring_ctx *ctx, void __user *arg,return -EINVAL ;if (copy_from_user (&up, arg,sizeof (up)))return -EFAULT ; -if (!up.nr || up.resv) +if (!up.nr || up.resv || up.resv2)return -EINVAL ;return __io_register_rsrc_update (ctx, type, &up, up.nr); }
include/asm-generic/tlb.h +7 -3
@@ -565,10 +565,14 @@ static inline void tlb_flush_p4d_range(struct mmu_gather *tlb,#define tlb_remove_huge_tlb_entry (h, tlb, ptep, address) \ do { \ unsigned long _sz = huge_page_size(h); \ - if (_sz == PMD_SIZE) \ - tlb_flush_pmd_range(tlb, address, _sz); \ - else if (_sz == PUD_SIZE) \ + if (_sz >= P4D_SIZE) \ + tlb_flush_p4d_range(tlb, address, _sz); \ + else if (_sz >= PUD_SIZE) \ tlb_flush_pud_range(tlb, address, _sz); \ + else if (_sz >= PMD_SIZE) \ + tlb_flush_pmd_range(tlb, address, _sz); \ + else \ + tlb_flush_pte_range(tlb, address, _sz); \ __tlb_remove_tlb_entry(tlb, ptep, address); \ } while (0)
include/linux/soc/qcom/qcom_aoss.h new file +38 -0
@@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* +* Copyright (c) 2021, The Linux Foundation. All rights reserved. +*/ + +#ifndef __QCOM_AOSS_H__ +#define __QCOM_AOSS_H__ + +#include <linux/err.h> +#include <linux/device.h> + +struct qmp ; + +#if IS_ENABLED (CONFIG_QCOM_AOSS_QMP ) + +int qmp_send (struct qmp *qmp,const void *data,size_t len); +struct qmp *qmp_get (struct device *dev); +void qmp_put (struct qmp *qmp); + +#else + +static inline int qmp_send (struct qmp *qmp,const void *data,size_t len) +{ +return -ENODEV ; +} + +static inline struct qmp *qmp_get (struct device *dev) +{ +return ERR_PTR (-ENODEV ); +} + +static inline void qmp_put (struct qmp *qmp) +{ +} + +#endif + +#endif
include/linux/sunrpc/svc.h +1 -0
@@ -384,6 +384,7 @@ struct svc_deferred_req {size_t addrlen;struct sockaddr_storage daddr;/* where reply must come from */
Lines of this file are not shown. View the raw message.
mm/page_io.c +0 -54
54 lines not on this page · raw message
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +1 -1
Lines of this file are not shown. View the raw message.
scripts/gcc-plugins/latent_entropy_plugin.c +27 -17
44 lines not on this page · raw message
tools/testing/selftests/mqueue/mq_perf_tests.c +17 -8
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.