Linux 5.18.6
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.18.6 kernel.
All users of the 5.18 kernel series must upgrade.
The updated 5.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.18.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/ABI/testing/sysfs-driver-bd9571mwv-regulator | 2 Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt | 2 Documentation/filesystems/netfs_library.rst | 37 +- Makefile | 6 arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi | 3 arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi | 3 arch/arm64/kernel/ftrace.c | 137 +++---- arch/arm64/kvm/fpsimd.c | 1 arch/arm64/kvm/vgic/vgic-mmio-v2.c | 4 arch/arm64/kvm/vgic/vgic-mmio.c | 19 - arch/arm64/kvm/vgic/vgic-mmio.h | 3 arch/arm64/mm/cache.S | 2 arch/powerpc/kernel/process.c | 4 arch/powerpc/mm/nohash/kaslr_booke.c | 8 arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi | 9 arch/s390/Kconfig | 1 arch/s390/Makefile | 10 arch/x86/kernel/Makefile | 4 arch/x86/kernel/ftrace_64.S | 11 block/blk-mq.c | 2 certs/blacklist_hashes.c | 2 crypto/Kconfig | 1 crypto/Makefile | 2 crypto/memneq.c | 176 ---------- drivers/ata/libata-core.c | 4 drivers/base/init.c | 2 drivers/bus/fsl-mc/fsl-mc-bus.c | 6 drivers/char/Kconfig | 50 +- drivers/clk/imx/clk-imx8mp.c | 2 drivers/clocksource/hyperv_timer.c | 1 drivers/comedi/drivers/vmk80xx.c | 2 drivers/gpio/gpio-dwapb.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 13 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 27 + drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c | 4 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 6 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 2 drivers/gpu/drm/i915/i915_sysfs.c | 15 drivers/hv/channel_mgmt.c | 1 drivers/i2c/busses/i2c-designware-common.c | 3 drivers/i2c/busses/i2c-designware-platdrv.c | 13 drivers/i2c/busses/i2c-mt65xx.c | 9 drivers/i2c/busses/i2c-npcm7xx.c | 3 drivers/input/misc/soc_button_array.c | 4 drivers/irqchip/irq-apple-aic.c | 2 drivers/irqchip/irq-gic-realview.c | 1 drivers/irqchip/irq-gic-v3.c | 7 drivers/irqchip/irq-realtek-rtl.c | 2 drivers/isdn/mISDN/socket.c | 2 drivers/md/dm-core.h | 11 drivers/md/dm-log.c | 3 drivers/md/dm-rq.c | 2 drivers/md/dm-table.c | 11 drivers/md/dm.c | 87 +--- drivers/md/dm.h | 2 drivers/md/raid5-ppl.c | 4 drivers/misc/atmel-ssc.c | 4 drivers/misc/mei/hbm.c | 3 drivers/misc/mei/hw-me-regs.h | 2 drivers/misc/mei/pci-me.c | 2 drivers/net/ethernet/broadcom/bgmac-bcma.c | 1 drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 18 - drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 101 +++-- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h | 1 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 25 - drivers/net/ethernet/intel/i40e/i40e_main.c | 5 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 drivers/net/ethernet/intel/iavf/iavf_main.c | 2 drivers/net/ethernet/intel/ice/ice_main.c | 49 +- drivers/net/ethernet/intel/ice/ice_ptp.c | 2 drivers/net/ethernet/intel/ice/ice_ptp.h | 31 + drivers/net/ethernet/intel/ice/ice_vf_lib.c | 5 drivers/net/ethernet/intel/ice/ice_virtchnl.c | 53 +-- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 21 + drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c | 2 drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h | 2 drivers/net/ppp/pppoe.c | 3 drivers/nfc/nfcmrvl/usb.c | 16 drivers/nvme/host/core.c | 4 drivers/platform/mips/Kconfig | 2 drivers/platform/x86/gigabyte-wmi.c | 2 drivers/platform/x86/intel/hid.c | 6 drivers/platform/x86/intel/pmc/core.c | 1 drivers/platform/x86/intel/pmt/crashlog.c | 2 drivers/scsi/ipr.c | 4 drivers/scsi/lpfc/lpfc_els.c | 18 - drivers/scsi/lpfc/lpfc_hw4.h | 3 drivers/scsi/lpfc/lpfc_nportdisc.c | 3 drivers/scsi/lpfc/lpfc_nvme.c | 11 drivers/scsi/mpt3sas/mpt3sas_base.c | 23 - drivers/scsi/pmcraid.c | 2 drivers/scsi/vmw_pvscsi.h | 4 drivers/staging/r8188eu/core/rtw_xmit.c | 20 - drivers/staging/r8188eu/os_dep/ioctl_linux.c | 2 drivers/tty/goldfish.c | 2 drivers/tty/n_gsm.c | 2 drivers/tty/serial/8250/8250_port.c | 2 drivers/usb/cdns3/cdnsp-ring.c | 19 - drivers/usb/dwc2/hcd.c | 2 drivers/usb/dwc3/dwc3-pci.c | 1 drivers/usb/dwc3/gadget.c | 26 - drivers/usb/gadget/function/f_fs.c | 40 +- drivers/usb/gadget/function/u_ether.c | 12 drivers/usb/gadget/udc/lpc32xx_udc.c | 1 drivers/usb/serial/io_ti.c | 2 drivers/usb/serial/io_usbvend.h | 1 drivers/usb/serial/option.c | 6 drivers/virtio/virtio_mmio.c | 1 drivers/virtio/virtio_pci_common.c | 3 fs/9p/cache.c | 4 fs/9p/v9fs.c | 2 fs/9p/v9fs.h | 10 fs/9p/vfs_addr.c | 2 fs/9p/vfs_inode.c | 4 fs/afs/callback.c | 2 fs/afs/dir.c | 32 - fs/afs/dir_edit.c | 10 fs/afs/dir_silly.c | 4 fs/afs/dynroot.c | 2 fs/afs/file.c | 4 fs/afs/fs_operation.c | 6 fs/afs/inode.c | 38 +- fs/afs/internal.h | 23 - fs/afs/super.c | 6 fs/afs/write.c | 21 - fs/attr.c | 26 + fs/ceph/addr.c | 4 fs/ceph/cache.c | 4 fs/ceph/cache.h | 2 fs/ceph/caps.c | 104 ++--- fs/ceph/file.c | 2 fs/ceph/inode.c | 10 fs/ceph/mds_client.c | 4 fs/ceph/snap.c | 8 fs/ceph/super.c | 2 fs/ceph/super.h | 10 fs/ceph/xattr.c | 14 fs/cifs/cifsfs.c | 8 fs/cifs/cifsglob.h | 12 fs/cifs/file.c | 8 fs/cifs/fscache.c | 8 fs/cifs/fscache.h | 8 fs/cifs/inode.c | 4 fs/cifs/misc.c | 4 fs/cifs/smb2ops.c | 8 fs/ext4/mballoc.c | 9 fs/ext4/namei.c | 3 fs/ext4/resize.c | 10 fs/ext4/super.c | 16 fs/io_uring.c | 97 ++++- fs/netfs/buffered_read.c | 6 fs/netfs/internal.h | 2 fs/netfs/objects.c | 2 fs/nfs/callback_proc.c | 1 fs/nfs/pnfs.c | 21 - fs/nfs/pnfs.h | 1 fs/quota/dquot.c | 10 include/linux/backing-dev.h | 2 include/linux/netfs.h | 41 -- include/linux/objtool.h | 6 include/linux/skbuff.h | 3 include/net/ipv6.h | 4 init/Kconfig | 9 kernel/auditsc.c | 2 kernel/cfi.c | 22 - kernel/dma/debug.c | 2 kernel/sched/core.c | 36 +- kernel/sched/sched.h | 5 kernel/trace/bpf_trace.c | 4 lib/Kconfig | 3 lib/Makefile | 1 lib/crypto/Kconfig | 1 lib/memneq.c | 176 ++++++++++ mm/backing-dev.c | 11 net/appletalk/ddp.c | 3 net/atm/common.c | 2 net/ax25/af_ax25.c | 34 + net/bluetooth/af_bluetooth.c | 3 net/bluetooth/hci_sock.c | 3 net/caif/caif_socket.c | 2 net/can/bcm.c | 5 net/can/isotp.c | 4 net/can/j1939/socket.c | 2 net/can/raw.c | 6 net/core/datagram.c | 5 net/ieee802154/socket.c | 6 net/ipv4/ping.c | 3 net/ipv4/raw.c | 3 net/ipv6/ip6_output.c | 6 net/ipv6/raw.c | 3 net/iucv/af_iucv.c | 3 net/key/af_key.c | 2 net/l2tp/l2tp_ip.c | 3 net/l2tp/l2tp_ip6.c | 8 net/l2tp/l2tp_ppp.c | 3 net/mctp/af_mctp.c | 2 net/mctp/test/route-test.c | 8 net/netlink/af_netlink.c | 3 net/netrom/af_netrom.c | 3 net/nfc/llcp_sock.c | 3 net/nfc/rawsock.c | 3 net/packet/af_packet.c | 2 net/phonet/datagram.c | 3 net/phonet/pep.c | 6 net/qrtr/af_qrtr.c | 3 net/rose/af_rose.c | 3 net/sunrpc/clnt.c | 1 net/unix/af_unix.c | 5 net/vmw_vsock/vmci_transport.c | 5 net/x25/af_x25.c | 3 scripts/faddr2line | 45 +- security/selinux/hooks.c | 11 sound/hda/hdac_device.c | 1 sound/pci/hda/hda_intel.c | 3 sound/pci/hda/patch_hdmi.c | 1 sound/pci/hda/patch_realtek.c | 14 sound/soc/codecs/cs35l36.c | 3 sound/soc/codecs/cs42l51.c | 2 sound/soc/codecs/cs42l52.c | 8 sound/soc/codecs/cs42l56.c | 4 sound/soc/codecs/cs53l30.c | 16 sound/soc/codecs/es8328.c | 5 sound/soc/codecs/nau8822.c | 4 sound/soc/codecs/nau8822.h | 3 sound/soc/codecs/wm8962.c | 1 sound/soc/codecs/wm_adsp.c | 2 sound/soc/intel/boards/sof_cirrus_common.c | 40 ++ sound/soc/qcom/lpass-platform.c | 2 tools/include/linux/objtool.h | 6 234 files changed, 1539 insertions(+), 1077 deletions(-)
Adam Ford (3):
arm64: dts: imx8mm-beacon: Enable RTS-CTS on UART3
arm64: dts: imx8mn-beacon: Enable RTS-CTS on UART3
ASoC: wm8962: Fix suspend while playing music
Alan Previn (1):
drm/i915/reset: Fix error_state_read ptr + offset use
Aleksandr Loktionov (1):
i40e: Fix call trace in setup_tx_descriptors
Alexander Usyskin (2):
mei: hbm: drop capability response on early shutdown
mei: me: add raptor lake point S DID
August Wikerfors (1):
platform/x86: gigabyte-wmi: Add support for B450M DS3H-CF
Baokun Li (1):
ext4: fix bug_on ext4_mb_use_inode_pa
Bart Van Assche (1):
block: Fix handling of offline queues in blk_mq_alloc_request_hctx()
Benjamin Marzinski (1):
dm: fix race in dm_start_io_acct
Candice Li (1):
drm/amdgpu: Resolve RAS GFX error count issue after cold boot on Arcturus
Charles Keepax (6):
ASoC: cs42l52: Fix TLV scales for mixer controls
ASoC: cs35l36: Update digital volume TLV
ASoC: cs53l30: Correct number of volume levels on SX controls
ASoC: cs42l52: Correct TLV for Bypass Volume
ASoC: cs42l56: Correct typo in minimum level for SX volume controls
ASoC: cs42l51: Correct minimum value for SX volume control
Chen Lin (1):
net: ethernet: mtk_eth_soc: fix misuse of mem alloc interface netdev[napi]_alloc_frag
Chengguang Xu (2):
scsi: ipr: Fix missing/incorrect resource cleanup in error case
scsi: pmcraid: Fix missing resource cleanup in error case
Christian Brauner (1):
fs: account for group membership
Christian Göttsche (2):
audit: free module name
selinux: free contexts previously transferred in selinux_add_opt()
Christoph Hellwig (1):
dm: fix bio_set allocation
Christophe JAILLET (2):
net: bgmac: Fix an erroneous kfree() in bgmac_remove()
i2c: mediatek: Fix an error handling path in mtk_i2c_probe()
Conor Dooley (1):
riscv: dts: microchip: re-add pdma to mpfs device tree
Dan Carpenter (1):
bpf: Use safer kvmalloc_array() where possible
David Arcari (1):
platform/x86/intel: Fix pmt_crashlog array reference
David Howells (1):
netfs: Fix gcc-12 warning by embedding vfs inode in netfs_i_context
Ding Xiang (1):
ext4: make variable "count" signed
Duke Lee (1):
platform/x86/intel: hid: Add Surface Go to VGBS allow list
Duoming Zhou (1):
net: ax25: Fix deadlock caused by skb_recv_datagram in ax25_recvmsg
George D Sworo (1):
platform/x86/intel: pmc: Support Intel Raptorlake P
Greg Kroah-Hartman (1):
Linux 5.18.6
Grzegorz Szczurek (2):
i40e: Fix adding ADQ filter to TC0
i40e: Fix calculating the number of queue pairs
Guangbin Huang (3):
net: hns3: set port base vlan tbl_sta to false before removing old vlan
net: hns3: restore tm priority/qset to default settings when tc disabled
net: hns3: fix tm port shapping of fibre port is incorrect after driver initialization
He Ying (1):
powerpc/kasan: Silence KASAN warnings in __get_wchan()
Helge Deller (1):
scsi: mpt3sas: Fix out-of-bounds compiler warning
Hui Wang (1):
ASoC: nau8822: Add operation for internal PLL off and on
Ian Abbott (1):
comedi: vmk80xx: fix expression for tx buffer size
Ilpo Järvinen (1):
serial: 8250: Store to lsr_save_flags after lsr read
James Smart (3):
scsi: lpfc: Resolve NULL ptr dereference after an ELS LOGO is aborted
scsi: lpfc: Fix port stuck in bypassed state after LIP in PT2PT topology
scsi: lpfc: Allow reduced polling rate for nvme_admin_async_event cmd completion
Jan Kara (1):
init: Initialize noop_backing_dev_info early
Jani Nikula (1):
drm/i915/uc: remove accidental static from a local variable
Jason A. Donenfeld (2):
random: credit cpu and bootloader seeds by default
crypto: memneq - move into lib/
Jens Axboe (1):
io_uring: reinstate the inflight tracking
Jian Shen (1):
net: hns3: don't push link state to VF if unalive
Jiasheng Jiang (1):
i2c: npcm7xx: Add check for platform_driver_register
Jie Wang (1):
net: hns3: fix PF rss size initialization bug
Jing Leng (1):
usb: cdnsp: Fixed setting last_trb incorrectly
Josh Poimboeuf (2):
faddr2line: Fix overlapping text section failures, the sequel x86/ftrace: Remove OBJECT_FILES_NON_STANDARD usage
Lang Yu (1):
drm/amdkfd: add pinned BOs to kfd_bo_list
Larry Finger (1):
staging: r8188eu: Fix warning of array overflow in ioctl_linux.c
Linus Torvalds (4):
gcc-12: disable '-Wdangling-pointer' warning for now
mellanox: mlx5: avoid uninitialized variable warning with gcc-12
gcc-12: disable '-Warray-bounds' universally for now
netfs: gcc-12: temporarily disable '-Wattribute-warning' for now
Linyu Yuan (2):
usb: gadget: f_fs: change ep->status safe in ffs_epfile_io()
usb: gadget: f_fs: change ep->ep safe in ffs_epfile_io()Logan Gunthorpe (1):
md/raid5-ppl: Fix argument order in bio_alloc_bioset()
Marc Zyngier (2):
KVM: arm64: Always start with clearing SVE flag on load
KVM: arm64: Don't read a HW interrupt pending state in user context
Marian Postevca (1):
usb: gadget: u_ether: fix regression in setting fixed MAC address
Marius Hoch (1):
Input: soc_button_array - also add Lenovo Yoga Tablet2 1051F to dmi_use_low_level_irq
Mark Brown (2):
ASoC: es8328: Fix event generation for deemphasis control
ASoC: wm_adsp: Fix event generation for wm_adsp_fw_put()
Mark Rutland (2):
arm64: ftrace: fix branch range checks
arm64: ftrace: consistently handle PLTs.
Masahiro Yamada (3):
clocksource: hyper-v: unexport __init-annotated hv_init_clocksource() certs/blacklist_hashes.c: fix const confusion in certs blacklist powerpc/book3e: get rid of #include <generated/compile.h>
Matthew Wilcox (Oracle) (1):
quota: Prevent memory allocation recursion while holding dq_lock
Mauro Carvalho Chehab (2):
dt-bindings: mfd: bd9571mwv: update rohm,bd9571mwv.yaml reference
dt-bindings: interrupt-controller: update brcm,l2-intc.yaml reference
Miaoqian Lin (9):
misc: atmel-ssc: Fix IRQ check in ssc_probe irqchip/gic/realview: Fix refcount leak in realview_gic_of_init irqchip/apple-aic: Fix refcount leak in build_fiq_affinity irqchip/apple-aic: Fix refcount leak in aic_of_ic_init irqchip/gic-v3: Fix error handling in gic_populate_ppi_partitions irqchip/gic-v3: Fix refcount leak in gic_populate_ppi_partitions irqchip/realtek-rtl: Fix refcount leak in map_interrupts
usb: dwc2: Fix memory leak in dwc2_hcd_init
usb: gadget: lpc32xx_udc: Fix refcount leak in lpc32xx_udc_probe
Michal Michalik (1):
ice: Fix PTP TX timestamp offset calculation
Michal Wilczynski (1):
iavf: Fix issue with MAC address of VF shown as zero
Michel Dänzer (1):
drm/amdgpu: Fix GTT size reporting in amdgpu_ioctl
Mikulas Patocka (1):
dm mirror log: round up region bitmap size to BITS_PER_LONG
Murilo Opsfelder Araujo (1):
virtio-pci: Remove wrong address verification in vp_del_vqs()
Oliver Hartkopp (1):
net: remove noblock parameter from skb_recv_datagram()
Pavel Begunkov (2):
io_uring: fix races with file table unregister
io_uring: fix races with buffer table unregister
Peng Fan (1):
clk: imx8mp: fix usb_root_clk parent
Peter Zijlstra (1):
sched: Fix balance_push() vs __sched_setscheduler()
Petr Machata (1):
mlxsw: spectrum_cnt: Reorder counter pools
Philip Yang (1):
drm/amdkfd: Use mmget_not_zero in MMU notifier
Phillip Potter (1):
staging: r8188eu: fix rtw_alloc_hwxmits error detection for now
Piotr Chmura (1):
platform/x86: gigabyte-wmi: Add Z690M AORUS ELITE AX DDR4 support
Przemyslaw Patynowski (2):
ice: Fix queue config fail handling
ice: Fix memory corruption in VF driver
Rob Clark (1):
dma-debug: make things less spammy under memory pressure
Robert Eckelmann (1):
USB: serial: io_ti: add Agilent E5805A support
Roman Li (1):
drm/amd/display: Cap OLED brightness per max frame-average luminance
Roman Storozhenko (1):
ice: Sync VLAN filtering features for DVM
Sami Tolvanen (1):
cfi: Fix __cfi_slowpath_diag RCU usage with cpuidle
Saurabh Sengar (1):
Drivers: hv: vmbus: Release cpu lock in error case
Scott Mayhew (1):
sunrpc: set cl_max_connect when cloning an rpc_clnt
Serge Semin (2):
gpio: dwapb: Don't print error on -EPROBE_DEFER
i2c: designware: Use standard optional ref clock implementation
Sergey Shtylyov (1):
ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo()
Sherry Wang (1):
drm/amd/display: Read Golden Settings Table from VBIOS
Shin'ichiro Kawasaki (1):
bus: fsl-mc-bus: fix KASAN use-after-free in fsl_mc_bus_remove()
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV31 with new baseline
Srinivasa Rao Mandadapu (1):
ASoC: qcom: lpass-platform: Update VMA access permissions in mmap callback
Stephan Gerhold (1):
usb: dwc3: pci: Restore line lost in merge conflict resolution
Stylon Wang (1):
Revert "drm/amd/display: Fix DCN3 B0 DP Alt Mapping"
Thomas Weißschuh (1):
nvme: add device name to warning in uuid_show()
Tony Lindgren (1):
tty: n_gsm: Debug output allocation must use GFP_ATOMIC
Trond Myklebust (2):
pNFS: Don't keep retrying if the server replied NFS4ERR_LAYOUTUNAVAILABLE
pNFS: Avoid a live lock condition in pnfs_update_layout()
Vincent Whitchurch (1):
tty: goldfish: Fix free_irq() on remove
Wang Yufen (2):
ipv6: Fix signed integer overflow in __ip6_append_data
ipv6: Fix signed integer overflow in l2tp_ip6_sendmsg
Wentao Wang (1):
scsi: vmw_pvscsi: Expand vcpuHint to 16 bits
Wesley Cheng (1):
usb: dwc3: gadget: Fix IN endpoint max packet size allocation
Will Deacon (1):
arm64: mm: Don't invalidate FROM_DEVICE buffers at start of DMA transfer
Xiaohui Zhang (1):
nfc: nfcmrvl: Fix memory leak in nfcmrvl_play_deferred
Ye Bin (1):
ext4: fix super block checksum incorrect after mount
Yong Zhi (1):
ALSA: hda: MTL: add HD Audio PCI ID and HDMI codec vendor ID
Yupeng Li (1):
MIPS: Loongson-3: fix compile mips cpu_hwmon as module build error.
Zhang Yi (1):
ext4: add reserved GDT blocks check
chengkaitao (1):
virtio-mmio: fix missing put_device() when vm_cmdline_parent registration failed
huangwenhui (1):
ALSA: hda/realtek - Add HW8326 support
xliu (1):
ASoC: Intel: cirrus-common: fix incorrect channel mapping
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-driver-bd9571mwv-regulator +1 -1
@@ -26,6 +26,6 @@ Description: Read/write the current state of DDR Backup Mode, which controls DDR Backup Mode must be explicitly enabled by the user, to invoke step 1. - See also Documentation/devicetree/bindings/mfd/bd9571mwv.txt. + See also Documentation/devicetree/bindings/mfd/rohm,bd9571mwv.yaml. Users: User space applications for embedded boards equipped with a BD9571MWV PMIC.
Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt +1 -1
@@ -16,7 +16,7 @@ has been processed. See [2] for more information on the brcm,l2-intc node. firmware. On some SoCs, this firmware supports DFS and DVFS in addition to Adaptive Voltage Scaling. -[2] Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt +[2] Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.yaml Node brcm,avs-cpu-data-mem
Documentation/filesystems/netfs_library.rst +18 -19
@@ -37,30 +37,31 @@ The network filesystem helper library needs a place to store a bit of state for its use on each netfs inode it is helping to manage. To this end, a context structure is defined:: - struct netfs_i_context { + struct netfs_inode { + struct inode inode; const struct netfs_request_ops *ops; - struct fscache_cookie *cache; + struct fscache_cookie *cache; }; -A network filesystem that wants to use netfs lib must place one of these -directly after the VFS ``struct inode`` it allocates, usually as part of its -own struct. This can be done in a way similar to the following:: +A network filesystem that wants to use netfs lib must place one of these in its +inode wrapper struct instead of the VFS ``struct inode``. This can be done in +a way similar to the following:: struct my_inode { - struct { - /* These must be contiguous */ - struct inode vfs_inode; - struct netfs_i_context netfs_ctx; - }; + struct netfs_inode netfs; /* Netfslib context and vfs inode */ ... }; -This allows netfslib to find its state by simple offset from the inode pointer, -thereby allowing the netfslib helper functions to be pointed to directly by the -VFS/VM operation tables. +This allows netfslib to find its state by using ``container_of()`` from the +inode pointer, thereby allowing the netfslib helper functions to be pointed to +directly by the VFS/VM operation tables. The structure contains the following fields: + * ``inode`` + + The VFS inode structure. + * ``ops`` The set of operations provided by the network filesystem to netfslib.
@@ -78,14 +79,12 @@ To help deal with the per-inode context, a number helper functions are provided. Firstly, a function to perform basic initialisation on a context and set the operations table pointer:: - void netfs_i_context_init(struct inode *inode, - const struct netfs_request_ops *ops); + void netfs_inode_init(struct inode *inode, + const struct netfs_request_ops *ops); -then two functions to cast between the VFS inode structure and the netfs -context:: +then a function to cast from the VFS inode structure to the netfs context:: - struct netfs_i_context *netfs_i_context(struct inode *inode); - struct inode *netfs_inode(struct netfs_i_context *ctx); + struct netfs_inode *netfs_node(struct inode *inode); and finally, a function to get the cache cookie pointer from the context attached to an inode (or NULL if fscache is disabled)::
Makefile +5 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 18 -SUBLEVEL = 5 +SUBLEVEL = 6 EXTRAVERSION = NAME = Superb Owl
@@ -787,6 +787,7 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG) := -fstack-protector-strong KBUILD_CFLAGS += $(stackp-flags-y) KBUILD_CFLAGS-$(CONFIG_WERROR) += -Werror +KBUILD_CFLAGS-$(CONFIG_CC_NO_ARRAY_BOUNDS) += -Wno-array-bounds KBUILD_CFLAGS += $(KBUILD_CFLAGS-y) $(CONFIG_CC_IMPLICIT_FALLTHROUGH) ifdef CONFIG_CC_IS_CLANG
@@ -804,6 +805,9 @@ endif KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) KBUILD_CFLAGS += $(call cc-disable-warning, unused-const-variable) +# These result in bogus false positives +KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer) + ifdef CONFIG_FRAME_POINTER KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls else
arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi +3 -0
@@ -278,6 +278,7 @@ &uart3 { pinctrl-0 = <&pinctrl_uart3>; assigned-clocks = <&clk IMX8MM_CLK_UART3>; assigned-clock-parents = <&clk IMX8MM_SYS_PLL1_80M>; + uart-has-rtscts; status = "okay"; };
@@ -386,6 +387,8 @@ pinctrl_uart3: uart3grp { fsl,pins = < MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x40 MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x40 + MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x40 + MX8MM_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x40 >; };
arch/arm64/boot/dts/freescale/imx8mn-beacon-baseboard.dtsi +3 -0
@@ -175,6 +175,7 @@ &uart3 { pinctrl-0 = <&pinctrl_uart3>; assigned-clocks = <&clk IMX8MN_CLK_UART3>; assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_80M>; + uart-has-rtscts; status = "okay"; };
@@ -258,6 +259,8 @@ pinctrl_uart3: uart3grp { fsl,pins = < MX8MN_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x40 MX8MN_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x40 + MX8MN_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x40 + MX8MN_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x40 >; };
arch/arm64/kernel/ftrace.c +66 -71
173 lines not on this page · raw message
arch/arm64/kvm/fpsimd.c +1 -0
@@ -80,6 +80,7 @@ void kvm_arch_vcpu_load_fp(struct kvm_vcpu *vcpu) vcpu->arch.flags &= ~KVM_ARM64_FP_ENABLED ; vcpu->arch.flags |=KVM_ARM64_FP_HOST ; + vcpu->arch.flags &= ~KVM_ARM64_HOST_SVE_ENABLED ;if (read_sysreg (cpacr_el1) &CPACR_EL1_ZEN_EL0EN ) vcpu->arch.flags |=KVM_ARM64_HOST_SVE_ENABLED ; }
arch/arm64/kvm/vgic/vgic-mmio-v2.c +2 -2
@@ -417,11 +417,11 @@ static const struct vgic_register_region vgic_v2_dist_registers[] = { VGIC_ACCESS_32bit),REGISTER_DESC_WITH_BITS_PER_IRQ (GIC_DIST_PENDING_SET , vgic_mmio_read_pending, vgic_mmio_write_spending, -NULL , vgic_uaccess_write_spending,1 , + vgic_uaccess_read_pending, vgic_uaccess_write_spending,1 , VGIC_ACCESS_32bit),REGISTER_DESC_WITH_BITS_PER_IRQ (GIC_DIST_PENDING_CLEAR , vgic_mmio_read_pending, vgic_mmio_write_cpending, -NULL , vgic_uaccess_write_cpending,1 , + vgic_uaccess_read_pending, vgic_uaccess_write_cpending,1 , VGIC_ACCESS_32bit), REGISTER_DESC_WITH_BITS_PER_IRQ(GIC_DIST_ACTIVE_SET, vgic_mmio_read_active, vgic_mmio_write_sactive,
arch/arm64/kvm/vgic/vgic-mmio.c +16 -3
@@ -226,8 +226,9 @@ int vgic_uaccess_write_cenable(struct kvm_vcpu *vcpu,return 0 ; } -unsigned long vgic_mmio_read_pending (struct kvm_vcpu *vcpu, -gpa_t addr,unsigned int len) +static unsigned long __read_pending (struct kvm_vcpu *vcpu, +gpa_t addr,unsigned int len, +bool is_user) {u32 intid =VGIC_ADDR_TO_INTID (addr,1 );u32 value =0 ;
@@ -248,7 +249,7 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,IRQCHIP_STATE_PENDING , &val);WARN_RATELIMIT (err,"IRQ %d" , irq->host_irq); - }else if (vgic_irq_is_mapped_level (irq)) { + }else if (!is_user &&vgic_irq_is_mapped_level (irq)) { val =vgic_get_phys_line_level (irq); }else { val =irq_is_pending (irq);
@@ -263,6 +264,18 @@ unsigned long vgic_mmio_read_pending(struct kvm_vcpu *vcpu,return value; } +unsigned long vgic_mmio_read_pending (struct kvm_vcpu *vcpu, +gpa_t addr,unsigned int len) +{ +return __read_pending (vcpu, addr, len, false); +} + +unsigned long vgic_uaccess_read_pending (struct kvm_vcpu *vcpu, +gpa_t addr,unsigned int len) +{ +return __read_pending (vcpu, addr, len, true); +} +static bool is_vgic_v2_sgi (struct kvm_vcpu *vcpu,struct vgic_irq *irq) { return (vgic_irq_is_sgi(irq->intid) &&
arch/arm64/kvm/vgic/vgic-mmio.h +3 -0
@@ -149,6 +149,9 @@ int vgic_uaccess_write_cenable(struct kvm_vcpu *vcpu,unsigned long vgic_mmio_read_pending (struct kvm_vcpu *vcpu,gpa_t addr,unsigned int len); +unsigned long vgic_uaccess_read_pending (struct kvm_vcpu *vcpu, +gpa_t addr,unsigned int len); +void vgic_mmio_write_spending (struct kvm_vcpu *vcpu,gpa_t addr,unsigned int len,unsigned long val);
arch/arm64/mm/cache.S +0 -2
@@ -218,8 +218,6 @@ SYM_FUNC_ALIAS(__dma_flush_area, __pi___dma_flush_area) */ SYM_FUNC_START(__pi___dma_map_area) add x1, x0, x1 - cmp w2, #DMA_FROM_DEVICE - b.eq __pi_dcache_inval_poc b __pi_dcache_clean_poc SYM_FUNC_END(__pi___dma_map_area) SYM_FUNC_ALIAS(__dma_map_area, __pi___dma_map_area)
arch/powerpc/kernel/process.c +2 -2
@@ -2160,12 +2160,12 @@ static unsigned long ___get_wchan(struct task_struct *p)return 0 ; do { - sp = *(unsigned long *)sp; + sp = READ_ONCE_NOCHECK(*(unsigned long *)sp); if (!validate_sp(sp, p, STACK_FRAME_OVERHEAD) || task_is_running(p)) return 0; if (count > 0) { - ip = ((unsigned long *)sp)[STACK_FRAME_LR_SAVE]; + ip = READ_ONCE_NOCHECK(((unsigned long *)sp)[STACK_FRAME_LR_SAVE]); if (!in_sched_functions(ip)) return ip; }
arch/powerpc/mm/nohash/kaslr_booke.c +2 -6
@@ -18,7 +18,6 @@#include <asm/prom.h> #include <asm/kdump.h> #include <mm/mmu_decl.h> -#include <generated/compile.h> #include <generated/utsrelease.h> struct regions {
@@ -36,10 +35,6 @@ struct regions {int reserved_mem_size_cells; }; -/* Simplified build-specific string for starting entropy. */ -static const char build_str[] =UTS_RELEASE " (" LINUX_COMPILE_BY "@" -LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION ; -struct regions __initdata regions;static __init void kaslr_get_cmdline (void *fdt)
@@ -70,7 +65,8 @@ static unsigned long __init get_boot_seed(void *fdt) {unsigned long hash =0 ; - hash =rotate_xor (hash, build_str,sizeof (build_str)); +/* build-specific string for starting entropy. */ + hash =rotate_xor (hash, linux_banner,strlen (linux_banner)); hash =rotate_xor (hash, fdt,fdt_totalsize (fdt));return hash;
arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi +9 -0
@@ -188,6 +188,15 @@ plic: interrupt-controller@c000000 { riscv,ndev = <186>; }; + pdma: dma-controller@3000000 { + compatible = "sifive,fu540-c000-pdma", "sifive,pdma0"; + reg = <0x0 0x3000000 0x0 0x8000>; + interrupt-parent = <&plic>; + interrupts = <5 6>, <7 8>, <9 10>, <11 12>; + dma-channels = <4>; + #dma-cells = <1>; + }; + clkcfg: clkcfg@20002000 { compatible = "microchip,mpfs-clkcfg"; reg = <0x0 0x20002000 0x0 0x1000>, <0x0 0x3E001000 0x0 0x1000>;
arch/s390/Kconfig +1 -0
@@ -125,6 +125,7 @@ config S390 select CLONE_BACKWARDS2 select DMA_OPS if PCI select DYNAMIC_FTRACE if FUNCTION_TRACER + select GCC12_NO_ARRAY_BOUNDS select GENERIC_ALLOCATOR select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_VULNERABILITIES
arch/s390/Makefile +1 -9
@@ -30,15 +30,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member) KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g) KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,)) - -ifdef CONFIG_CC_IS_GCC - ifeq ($(call cc-ifversion, -ge, 1200, y), y) - ifeq ($(call cc-ifversion, -lt, 1300, y), y) - KBUILD_CFLAGS += $(call cc-disable-warning, array-bounds) - KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, array-bounds) - endif - endif -endif +KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_CC_NO_ARRAY_BOUNDS),-Wno-array-bounds) UTS_MACHINE := s390x STACK_SIZE := $(if $(CONFIG_KASAN),65536,16384)
arch/x86/kernel/Makefile +0 -4
@@ -36,10 +36,6 @@ KCSAN_SANITIZE := n OBJECT_FILES_NON_STANDARD_test_nx.o := y -ifdef CONFIG_FRAME_POINTER -OBJECT_FILES_NON_STANDARD_ftrace_$(BITS).o := y -endif - # If instrumentation of this dir is enabled, boot hangs during first second. # Probably could be more selective here, but note that files related to irqs, # boot, dumpstack/stacktrace, etc are either non-interesting or can lead to
arch/x86/kernel/ftrace_64.S +8 -3
@@ -175,6 +175,7 @@ SYM_INNER_LABEL(ftrace_caller_end, SYM_L_GLOBAL) jmp ftrace_epilogue SYM_FUNC_END(ftrace_caller); +STACK_FRAME_NON_STANDARD_FP(ftrace_caller) SYM_FUNC_START(ftrace_epilogue) /*
@@ -282,6 +283,7 @@ SYM_INNER_LABEL(ftrace_regs_caller_end, SYM_L_GLOBAL) jmp ftrace_epilogue SYM_FUNC_END(ftrace_regs_caller) +STACK_FRAME_NON_STANDARD_FP(ftrace_regs_caller) #else /* ! CONFIG_DYNAMIC_FTRACE */
@@ -311,10 +313,14 @@ trace: jmp ftrace_stub SYM_FUNC_END(__fentry__) EXPORT_SYMBOL(__fentry__) +STACK_FRAME_NON_STANDARD_FP(__fentry__) + #endif /* CONFIG_DYNAMIC_FTRACE */ #ifdef CONFIG_FUNCTION_GRAPH_TRACER -SYM_FUNC_START(return_to_handler) +SYM_CODE_START(return_to_handler) + UNWIND_HINT_EMPTY + ANNOTATE_NOENDBR subq $16, %rsp /* Save the return values */
@@ -339,7 +345,6 @@ SYM_FUNC_START(return_to_handler) int3 .Ldo_rop: mov %rdi, (%rsp) - UNWIND_HINT_FUNC RET -SYM_FUNC_END(return_to_handler) +SYM_CODE_END(return_to_handler) #endif
block/blk-mq.c +2 -0
@@ -579,6 +579,8 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,if (!blk_mq_hw_queue_mapped (data.hctx)) goto out_queue_exit; cpu =cpumask_first_and (data.hctx->cpumask, cpu_online_mask); +if (cpu >= nr_cpu_ids) + goto out_queue_exit; data.ctx =__blk_mq_get_ctx (q, cpu);if (!q->elevator)
certs/blacklist_hashes.c +1 -1
@@ -1,7 +1,7 @@// SPDX-License-Identifier: GPL-2.0 #include "blacklist.h" -const char __initdata *const blacklist_hashes[] = { +const char __initconst *const blacklist_hashes[] = { #include CONFIG_SYSTEM_BLACKLIST_HASH_LIST ,NULL };
crypto/Kconfig +1 -0
@@ -15,6 +15,7 @@ source "crypto/async_tx/Kconfig" # menuconfig CRYPTO tristate "Cryptographic API" + select LIB_MEMNEQ help This option provides the core Cryptographic API.
crypto/Makefile +1 -1
@@ -4,7 +4,7 @@ # obj-$(CONFIG_CRYPTO) += crypto.o -crypto-y := api.o cipher.o compress.o memneq.o +crypto-y := api.o cipher.o compress.o obj-$(CONFIG_CRYPTO_ENGINE) += crypto_engine.o obj-$(CONFIG_CRYPTO_FIPS) += fips.o
crypto/memneq.c deleted +0 -176
176 lines not on this page · raw message
drivers/ata/libata-core.c +2 -2
@@ -5506,7 +5506,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev, const struct ata_port_info * const * ppi, int n_ports) { -const struct ata_port_info *pi; +const struct ata_port_info *pi = &ata_dummy_port_info;struct ata_host *host;int i, j;
@@ -5514,7 +5514,7 @@ struct ata_host *ata_host_alloc_pinfo(struct device *dev,if (!host)return NULL ; -for (i =0 , j =0 , pi =NULL ; i < host->n_ports; i++) { +for (i =0 , j =0 ; i < host->n_ports; i++) {struct ata_port *ap = host->ports[i];if (ppi[j])
drivers/base/init.c +2 -0
@@ -8,6 +8,7 @@#include <linux/init.h> #include <linux/memory.h> #include <linux/of.h> +#include <linux/backing-dev.h> #include "base.h"
@@ -20,6 +21,7 @@void __init driver_init (void ) {/* These are the core pieces */ +bdi_init (&noop_backing_dev_info);devtmpfs_init ();devices_init ();buses_init ();
drivers/bus/fsl-mc/fsl-mc-bus.c +3 -3
@@ -1236,14 +1236,14 @@ static int fsl_mc_bus_probe(struct platform_device *pdev)static int fsl_mc_bus_remove (struct platform_device *pdev) {struct fsl_mc *mc =platform_get_drvdata (pdev); +struct fsl_mc_io *mc_io;if (!fsl_mc_is_root_dprc (&mc->root_mc_bus_dev->dev))return -EINVAL ; + mc_io = mc->root_mc_bus_dev->mc_io;fsl_mc_device_remove (mc->root_mc_bus_dev); - -fsl_destroy_mc_io (mc->root_mc_bus_dev->mc_io); - mc->root_mc_bus_dev->mc_io =NULL ; +fsl_destroy_mc_io (mc_io);bus_unregister_notifier (&fsl_mc_bus_type, &fsl_mc_nb);
drivers/char/Kconfig +31 -19
59 lines not on this page · raw message
drivers/clk/imx/clk-imx8mp.c +1 -1
@@ -659,7 +659,7 @@ static int imx8mp_clocks_probe(struct platform_device *pdev) hws[IMX8MP_CLK_UART2_ROOT ] =imx_clk_hw_gate4 ("uart2_root_clk" ,"uart2" , ccm_base +0x44a0 ,0 ); hws[IMX8MP_CLK_UART3_ROOT ] =imx_clk_hw_gate4 ("uart3_root_clk" ,"uart3" , ccm_base +0x44b0 ,0 ); hws[IMX8MP_CLK_UART4_ROOT ] =imx_clk_hw_gate4 ("uart4_root_clk" ,"uart4" , ccm_base +0x44c0 ,0 ); - hws[IMX8MP_CLK_USB_ROOT ] =imx_clk_hw_gate4 ("usb_root_clk" ,"osc_32k" , ccm_base +0x44d0 ,0 ); + hws[IMX8MP_CLK_USB_ROOT ] =imx_clk_hw_gate4 ("usb_root_clk" ,"hsio_axi" , ccm_base +0x44d0 ,0 ); hws[IMX8MP_CLK_USB_PHY_ROOT ] =imx_clk_hw_gate4 ("usb_phy_root_clk" ,"usb_phy_ref" , ccm_base +0x44f0 ,0 ); hws[IMX8MP_CLK_USDHC1_ROOT ] =imx_clk_hw_gate4 ("usdhc1_root_clk" ,"usdhc1" , ccm_base +0x4510 ,0 ); hws[IMX8MP_CLK_USDHC2_ROOT ] =imx_clk_hw_gate4 ("usdhc2_root_clk" ,"usdhc2" , ccm_base +0x4520 ,0 );
drivers/clocksource/hyperv_timer.c +0 -1
@@ -565,4 +565,3 @@ void __init hv_init_clocksource(void) hv_sched_clock_offset =hv_read_reference_counter ();hv_setup_sched_clock (read_hv_sched_clock_msr); } -EXPORT_SYMBOL_GPL (hv_init_clocksource);
drivers/comedi/drivers/vmk80xx.c +1 -1
@@ -684,7 +684,7 @@ static int vmk80xx_alloc_usb_buffers(struct comedi_device *dev)if (!devpriv->usb_rx_buf)return -ENOMEM ; - size =max (usb_endpoint_maxp (devpriv->ep_rx),MIN_BUF_SIZE ); + size =max (usb_endpoint_maxp (devpriv->ep_tx),MIN_BUF_SIZE ); devpriv->usb_tx_buf =kzalloc (size,GFP_KERNEL );if (!devpriv->usb_tx_buf)return -ENOMEM ;
drivers/gpio/gpio-dwapb.c +3 -4
@@ -652,10 +652,9 @@ static int dwapb_get_clks(struct dwapb_gpio *gpio) gpio->clks[1 ].id ="db" ; err =devm_clk_bulk_get_optional (gpio->dev,DWAPB_NR_CLOCKS , gpio->clks); -if (err) { -dev_err (gpio->dev,"Cannot get APB/Debounce clocks\n" ); -return err; - } +if (err) +return dev_err_probe (gpio->dev, err, +"Cannot get APB/Debounce clocks\n" ); err =clk_bulk_prepare_enable (DWAPB_NR_CLOCKS , gpio->clks);if (err) {
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +6 -7
@@ -1955,9 +1955,6 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct amdgpu_device *adev,return -EINVAL ; } -/* delete kgd_mem from kfd_bo_list to avoid re-validating -* this BO in BO's restoring after eviction. -*/ mutex_lock (&mem->process_info->lock); ret =amdgpu_bo_reserve (bo, true);
@@ -1980,7 +1977,6 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct amdgpu_device *adev,amdgpu_amdkfd_remove_eviction_fence ( bo, mem->process_info->eviction_fence); -list_del_init (&mem->validate_list.head);if (size) *size =amdgpu_bo_size (bo);
@@ -2544,12 +2540,15 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence **ef) process_info->eviction_fence = new_fence; *ef =dma_fence_get (&new_fence->base); -/* Attach new eviction fence to all BOs */ +/* Attach new eviction fence to all BOs except pinned ones */ list_for_each_entry (mem, &process_info->kfd_bo_list, - validate_list.head) + validate_list.head) { +if (mem->bo->tbo.pin_count) +continue ; +amdgpu_bo_fence (mem->bo, &process_info->eviction_fence->base, true); - + }/* Attach eviction fence to PD / PT BOs */ list_for_each_entry (peer_vm, &process_info->vm_list_head, vm_list_node) {
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +6 -3
@@ -625,17 +625,20 @@ int amdgpu_get_gfx_off_status(struct amdgpu_device *adev, uint32_t *value)int amdgpu_gfx_ras_late_init (struct amdgpu_device *adev,struct ras_common_if *ras_block) {int r; - r =amdgpu_ras_block_late_init (adev, ras_block); -if (r) -return r;if (amdgpu_ras_is_supported (adev, ras_block->block)) {if (!amdgpu_persistent_edc_harvesting_supported (adev))amdgpu_ras_reset_error_status (adev,AMDGPU_RAS_BLOCK__GFX ); + r =amdgpu_ras_block_late_init (adev, ras_block); +if (r) +return r; + r =amdgpu_irq_get (adev, &adev->gfx.cp_ecc_error_irq,0 );if (r) goto late_fini; + }else { +amdgpu_ras_feature_enable_on_boot (adev, ras_block,0 ); }return 0 ;
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +0 -2
@@ -634,7 +634,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)atomic64_read (&adev->visible_pin_size), vram_gtt.vram_size); vram_gtt.gtt_size =ttm_manager_type (&adev->mman.bdev,TTM_PL_TT )->size; - vram_gtt.gtt_size *=PAGE_SIZE ; vram_gtt.gtt_size -=atomic64_read (&adev->gart_pin_size);return copy_to_user (out, &vram_gtt,min ((size_t )size,sizeof (vram_gtt))) ? -EFAULT :0 ;
@@ -667,7 +666,6 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) mem.cpu_accessible_vram.usable_heap_size *3 /4 ; mem.gtt.total_heap_size = gtt_man->size; - mem.gtt.total_heap_size *=PAGE_SIZE ; mem.gtt.usable_heap_size = mem.gtt.total_heap_size -atomic64_read (&adev->gart_pin_size); mem.gtt.heap_usage =ttm_resource_manager_usage (gtt_man);
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +22 -5
@@ -195,6 +195,13 @@ static ssize_t amdgpu_ras_debugfs_read(struct file *f, char __user *buf,if (amdgpu_ras_query_error_status (obj->adev, &info))return -EINVAL ; +/* Hardware counter will be reset automatically after the query on Vega20 and Arcturus */ +if (obj->adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,2 ) && + obj->adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,4 )) { +if (amdgpu_ras_reset_error_status (obj->adev, info.head.block)) +dev_warn (obj->adev->dev,"Failed to reset error counter and error status" ); + } + s =snprintf (val,sizeof (val),"%s: %lu\n%s: %lu\n" ,"ue" , info.ue_count,"ce" , info.ce_count);
@@ -548,9 +555,10 @@ static ssize_t amdgpu_ras_sysfs_read(struct device *dev,if (amdgpu_ras_query_error_status (obj->adev, &info))return -EINVAL ; -if (obj->adev->asic_type ==CHIP_ALDEBARAN ) { +if (obj->adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,2 ) && + obj->adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,4 )) {if (amdgpu_ras_reset_error_status (obj->adev, info.head.block)) -DRM_WARN ("Failed to reset error counter and error status" ); +dev_warn (obj->adev->dev,"Failed to reset error counter and error status" ); } return sysfs_emit(buf, "%s: %lu\n%s: %lu\n", "ue", info.ue_count,
@@ -1023,9 +1031,6 @@ int amdgpu_ras_query_error_status(struct amdgpu_device *adev, } } -if (!amdgpu_persistent_edc_harvesting_supported (adev)) -amdgpu_ras_reset_error_status (adev, info->head.block); -return 0 ; }
@@ -1145,6 +1150,12 @@ int amdgpu_ras_query_error_count(struct amdgpu_device *adev,if (res)return res; +if (adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,2 ) && + adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,4 )) { +if (amdgpu_ras_reset_error_status (adev, info.head.block)) +dev_warn (adev->dev,"Failed to reset error counter and error status" ); + } + ce += info.ce_count; ue += info.ue_count; }
@@ -1705,6 +1716,12 @@ static void amdgpu_ras_log_on_err_counter(struct amdgpu_device *adev)continue ;amdgpu_ras_query_error_status (adev, &info); + +if (adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,2 ) && + adev->ip_versions[MP0_HWIP ][0 ] !=IP_VERSION (11 ,0 ,4 )) { +if (amdgpu_ras_reset_error_status (adev, info.head.block)) +dev_warn (adev->dev,"Failed to reset error counter and error status" ); + } } }
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +3 -0
@@ -2286,6 +2286,8 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni,if (range->event ==MMU_NOTIFY_RELEASE )return true; +if (!mmget_not_zero (mni->mm)) +return true; start = mni->interval_tree.start; last = mni->interval_tree.last;
@@ -2312,6 +2314,7 @@ svm_range_cpu_invalidate_pagetables(struct mmu_interval_notifier *mni, }svm_range_unlock (prange); +mmput (mni->mm);return true; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -4
@@ -2835,7 +2835,7 @@ static struct drm_mode_config_helper_funcs amdgpu_dm_mode_config_helperfuncs = {static void update_connector_ext_caps (struct amdgpu_dm_connector *aconnector) { -u32 max_cll, min_cll, max, min, q, r; +u32 max_avg, min_cll, max, min, q, r;struct amdgpu_dm_backlight_caps *caps;struct amdgpu_display_manager *dm;struct drm_connector *conn_base;
@@ -2865,7 +2865,7 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector) caps = &dm->backlight_caps[i]; caps->ext_caps = &aconnector->dc_link->dpcd_sink_ext_caps; caps->aux_support = false; - max_cll = conn_base->hdr_sink_metadata.hdmi_type1.max_cll; + max_avg = conn_base->hdr_sink_metadata.hdmi_type1.max_fall; min_cll = conn_base->hdr_sink_metadata.hdmi_type1.min_cll;if (caps->ext_caps->bits.oled ==1 /*||
@@ -2893,8 +2893,8 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)* The results of the above expressions can be verified at * pre_computed_values. */ - q = max_cll >>5 ; - r = max_cll %32 ; + q = max_avg >>5 ; + r = max_avg %32 ; max = (1 << q) * pre_computed_values[r];// min luminance: maxLum * (CV/255)^2 / 100
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c +1 -3
@@ -230,9 +230,7 @@ static void enc31_hw_init(struct link_encoder *enc)AUX_RX_PHASE_DETECT_LEN, [21,20] = 0x3 default is 3 AUX_RX_DETECTION_THRESHOLD [30:28] = 1 */ -AUX_REG_WRITE (AUX_DPHY_RX_CONTROL0 ,0x103d1110 ); - -AUX_REG_WRITE (AUX_DPHY_TX_CONTROL ,0x21c7a ); +// dmub will read AUX_DPHY_RX_CONTROL0/AUX_DPHY_TX_CONTROL from vbios table in dp_aux_init //AUX_DPHY_TX_REF_CONTROL'AUX_TX_REF_DIV HW default is 0x32; // Set AUX_TX_REF_DIV Divider to generate 2 MHz reference from refclk
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +0 -6
@@ -1392,12 +1392,6 @@ static struct stream_encoder *dcn31_stream_encoder_create(return NULL ; } -if (ctx->asic_id.chip_family ==FAMILY_YELLOW_CARP && - ctx->asic_id.hw_internal_rev ==YELLOW_CARP_B0 ) { -if ((eng_id ==ENGINE_ID_DIGC ) || (eng_id ==ENGINE_ID_DIGD )) - eng_id = eng_id +3 ;// For B0 only. C->F, D->G. - } - dcn30_dio_stream_encoder_construct(enc1, ctx, ctx->dc_bios, eng_id, vpg, afmt, &stream_enc_regs[eng_id],
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c +1 -1
@@ -154,7 +154,7 @@ __uc_fw_auto_select(struct drm_i915_private *i915, struct intel_uc_fw *uc_fw) [INTEL_UC_FW_TYPE_GUC] = { blobs_guc, ARRAY_SIZE(blobs_guc) }, [INTEL_UC_FW_TYPE_HUC] = { blobs_huc, ARRAY_SIZE(blobs_huc) }, }; -static const struct uc_fw_platform_requirement *fw_blobs; +const struct uc_fw_platform_requirement *fw_blobs;enum intel_platform p =INTEL_INFO (i915)->platform;u32 fw_count;u8 rev =INTEL_REVID (i915);
drivers/gpu/drm/i915/i915_sysfs.c +12 -3
@@ -432,7 +432,14 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj,struct device *kdev =kobj_to_dev (kobj);struct drm_i915_private *i915 =kdev_minor_to_i915 (kdev);struct i915_gpu_coredump *gpu; -ssize_t ret; +ssize_t ret =0 ; + +/* +* FIXME: Concurrent clients triggering resets and reading + clearing +* dumps can cause inconsistent sysfs reads when a user calls in with a +* non-zero offset to complete a prior partial read but the +* gpu_coredump has been cleared or replaced. +*/ gpu =i915_first_error_state (i915);if (IS_ERR (gpu)) {
@@ -444,8 +451,10 @@ static ssize_t error_state_read(struct file *filp, struct kobject *kobj,const char *str ="No error state collected\n" ;size_t len =strlen (str); - ret =min_t (size_t, count, len - off); -memcpy (buf, str + off, ret); +if (off < len) { + ret =min_t (size_t, count, len - off); +memcpy (buf, str + off, ret); + } }return ret;
drivers/hv/channel_mgmt.c +1 -0
@@ -637,6 +637,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)*/ if (newchannel->offermsg.offer.sub_channel_index ==0 ) {mutex_unlock (&vmbus_connection.channel_mutex); +cpus_read_unlock ();/* * Don't call free_channel(), because newchannel->kobj * is not initialized yet.
drivers/i2c/busses/i2c-designware-common.c +0 -3
@@ -477,9 +477,6 @@ int i2c_dw_prepare_clk(struct dw_i2c_dev *dev, bool prepare) {int ret; -if (IS_ERR (dev->clk)) -return PTR_ERR (dev->clk); -if (prepare) {/* Optional interface clock */ ret =clk_prepare_enable (dev->pclk);
drivers/i2c/busses/i2c-designware-platdrv.c +11 -2
@@ -320,8 +320,17 @@ static int dw_i2c_plat_probe(struct platform_device *pdev) goto exit_reset; } - dev->clk =devm_clk_get (&pdev->dev,NULL ); -if (!i2c_dw_prepare_clk (dev, true)) { + dev->clk =devm_clk_get_optional (&pdev->dev,NULL ); +if (IS_ERR (dev->clk)) { + ret =PTR_ERR (dev->clk); + goto exit_reset; + } + + ret =i2c_dw_prepare_clk (dev, true); +if (ret) + goto exit_reset; + +if (dev->clk) {u64 clk_khz; dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz;
drivers/i2c/busses/i2c-mt65xx.c +7 -2
@@ -1420,17 +1420,22 @@ static int mtk_i2c_probe(struct platform_device *pdev)if (ret <0 ) {dev_err (&pdev->dev,"Request I2C IRQ %d fail\n" , irq); -return ret; + goto err_bulk_unprepare; }i2c_set_adapdata (&i2c->adap, i2c); ret =i2c_add_adapter (&i2c->adap);if (ret) -return ret; + goto err_bulk_unprepare;platform_set_drvdata (pdev, i2c);return 0 ; + +err_bulk_unprepare: +clk_bulk_unprepare (I2C_MT65XX_CLK_MAX , i2c->clocks); + +return ret; }static int mtk_i2c_remove (struct platform_device *pdev)
drivers/i2c/busses/i2c-npcm7xx.c +1 -2
@@ -2369,8 +2369,7 @@ static struct platform_driver npcm_i2c_bus_driver = {static int __init npcm_i2c_init (void ) { npcm_i2c_debugfs_dir =debugfs_create_dir ("npcm_i2c" ,NULL ); -platform_driver_register (&npcm_i2c_bus_driver); -return 0 ; +return platform_driver_register (&npcm_i2c_bus_driver); }module_init (npcm_i2c_init);
drivers/input/misc/soc_button_array.c +2 -2
@@ -85,13 +85,13 @@ static const struct dmi_system_id dmi_use_low_level_irq[] = { }, { /* - * Lenovo Yoga Tab2 1051L, something messes with the home-button + * Lenovo Yoga Tab2 1051F/1051L, something messes with the home-button * IRQ settings, leading to a non working home-button. */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), DMI_MATCH(DMI_PRODUCT_NAME, "60073"), - DMI_MATCH(DMI_PRODUCT_VERSION, "1051L"), + DMI_MATCH(DMI_PRODUCT_VERSION, "1051"), }, }, {} /* Terminating entry */
drivers/irqchip/irq-apple-aic.c +2 -0
@@ -1035,6 +1035,7 @@ static void build_fiq_affinity(struct aic_irq_chip *ic, struct device_node *aff)continue ; cpu =of_cpu_node_to_id (cpu_node); +of_node_put (cpu_node);if (WARN_ON (cpu <0 ))continue ;
@@ -1143,6 +1144,7 @@ static int __init aic_of_ic_init(struct device_node *node, struct device_node *pfor_each_child_of_node (affs, chld)build_fiq_affinity (irqc, chld); } +of_node_put (affs);set_handle_irq (aic_handle_irq);set_handle_fiq (aic_handle_fiq);
drivers/irqchip/irq-gic-realview.c +1 -0
@@ -57,6 +57,7 @@ realview_gic_of_init(struct device_node *node, struct device_node *parent)/* The PB11MPCore GIC needs to be configured in the syscon */ map =syscon_node_to_regmap (np); +of_node_put (np);if (!IS_ERR (map)) {/* new irq mode with no DCC */ regmap_write(map, REALVIEW_SYS_LOCK_OFFSET,
drivers/irqchip/irq-gic-v3.c +5 -2
@@ -1922,7 +1922,7 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node) gic_data.ppi_descs =kcalloc (gic_data.ppi_nr,sizeof (*gic_data.ppi_descs),GFP_KERNEL );if (!gic_data.ppi_descs) -return ; + goto out_put_node; nr_parts =of_get_child_count (parts_node);
@@ -1963,12 +1963,15 @@ static void __init gic_populate_ppi_partitions(struct device_node *gic_node)continue ; cpu =of_cpu_node_to_id (cpu_node); -if (WARN_ON (cpu <0 )) +if (WARN_ON (cpu <0 )) { +of_node_put (cpu_node);continue ; + }pr_cont ("%pOF[%d] " , cpu_node, cpu);cpumask_set_cpu (cpu, &part->mask); +of_node_put (cpu_node); }pr_cont ("}\n" );
drivers/irqchip/irq-realtek-rtl.c +1 -1
@@ -134,9 +134,9 @@ static int __init map_interrupts(struct device_node *node, struct irq_domain *doif (!cpu_ictl)return -EINVAL ; ret =of_property_read_u32 (cpu_ictl,"#interrupt-cells" , &tmp); +of_node_put (cpu_ictl);if (ret || tmp !=1 )return -EINVAL ; -of_node_put (cpu_ictl); cpu_int =be32_to_cpup (imap +2 );if (cpu_int >7 || cpu_int <2 )
drivers/isdn/mISDN/socket.c +1 -1
@@ -121,7 +121,7 @@ mISDN_sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,if (sk->sk_state ==MISDN_CLOSED )return 0 ; - skb =skb_recv_datagram (sk, flags, flags &MSG_DONTWAIT , &err); + skb =skb_recv_datagram (sk, flags, &err);if (!skb)return err;
drivers/md/dm-core.h +9 -2
@@ -32,6 +32,14 @@ struct dm_kobject_holder {* access their members! */ +/* +* For mempools pre-allocation at the table loading time. +*/ +struct dm_md_mempools { +struct bio_set bs; +struct bio_set io_bs; +}; +struct mapped_device {struct mutex suspend_lock;
@@ -109,8 +117,7 @@ struct mapped_device {/* * io objects are allocated from here. */ -struct bio_set io_bs; -struct bio_set bs; +struct dm_md_mempools *mempools;/* kobject and completion */ struct dm_kobject_holder kobj_holder;
drivers/md/dm-log.c +1 -2
@@ -415,8 +415,7 @@ static int create_log_context(struct dm_dirty_log *log, struct dm_target *ti,/* * Work out how many "unsigned long"s we need to hold the bitset. */ - bitset_size =dm_round_up (region_count, -sizeof (*lc->clean_bits) <<BYTE_SHIFT ); + bitset_size =dm_round_up (region_count,BITS_PER_LONG ); bitset_size >>=BYTE_SHIFT ; lc->bitset_uint32_count = bitset_size /sizeof (*lc->clean_bits);
drivers/md/dm-rq.c +1 -1
@@ -319,7 +319,7 @@ static int setup_clone(struct request *clone, struct request *rq, {int r; - r =blk_rq_prep_clone (clone, rq, &tio->md->bs, gfp_mask, + r =blk_rq_prep_clone (clone, rq, &tio->md->mempools->bs, gfp_mask, dm_rq_bio_constructor, tio);if (r)return r;
drivers/md/dm-table.c +0 -11
@@ -1030,17 +1030,6 @@ static int dm_table_alloc_md_mempools(struct dm_table *t, struct mapped_device *return 0 ; } -void dm_table_free_md_mempools (struct dm_table *t) -{ -dm_free_md_mempools (t->mempools); - t->mempools =NULL ; -} - -struct dm_md_mempools *dm_table_get_md_mempools (struct dm_table *t) -{ -return t->mempools; -} -static int setup_indexes (struct dm_table *t) {int i;
drivers/md/dm.c +28 -59
130 lines not on this page · raw message
drivers/md/dm.h +0 -2
@@ -71,8 +71,6 @@ struct dm_target *dm_table_get_immutable_target(struct dm_table *t);struct dm_target *dm_table_get_wildcard_target (struct dm_table *t);bool dm_table_bio_based (struct dm_table *t);bool dm_table_request_based (struct dm_table *t); -void dm_table_free_md_mempools (struct dm_table *t); -struct dm_md_mempools *dm_table_get_md_mempools (struct dm_table *t);void dm_lock_md_type (struct mapped_device *md);void dm_unlock_md_type (struct mapped_device *md);
drivers/md/raid5-ppl.c +2 -2
@@ -629,9 +629,9 @@ static void ppl_do_flush(struct ppl_io_unit *io)if (bdev) {struct bio *bio; - bio =bio_alloc_bioset (bdev,0 ,GFP_NOIO , + bio =bio_alloc_bioset (bdev,0 ,REQ_OP_WRITE |REQ_PREFLUSH , - &ppl_conf->flush_bs); +GFP_NOIO , &ppl_conf->flush_bs); bio->bi_private = io; bio->bi_end_io = ppl_flush_endio;
drivers/misc/atmel-ssc.c +2 -2
@@ -232,9 +232,9 @@ static int ssc_probe(struct platform_device *pdev)clk_disable_unprepare (ssc->clk); ssc->irq =platform_get_irq (pdev,0 ); -if (!ssc->irq) { +if (ssc->irq <0 ) {dev_dbg (&pdev->dev,"could not get irq\n" ); -return -ENXIO ; +return ssc->irq; }mutex_lock (&user_lock);
drivers/misc/mei/hbm.c +2 -1
@@ -1351,7 +1351,8 @@ int mei_hbm_dispatch(struct mei_device *dev, struct mei_msg_hdr *hdr)if (dev->dev_state !=MEI_DEV_INIT_CLIENTS || dev->hbm_state !=MEI_HBM_CAP_SETUP ) { -if (dev->dev_state ==MEI_DEV_POWER_DOWN ) { +if (dev->dev_state ==MEI_DEV_POWER_DOWN || + dev->dev_state ==MEI_DEV_POWERING_DOWN ) {dev_dbg (dev->dev,"hbm: capabilities response: on shutdown, ignoring\n" );return 0 ; }
drivers/misc/mei/hw-me-regs.h +2 -0
@@ -109,6 +109,8 @@#define MEI_DEV_ID_ADP_P 0x51E0/* Alder Lake Point P */ #define MEI_DEV_ID_ADP_N 0x54E0/* Alder Lake Point N */ +#define MEI_DEV_ID_RPL_S 0x7A68/* Raptor Lake Point S */ +/* * MEI HW Section */
drivers/misc/mei/pci-me.c +2 -0
@@ -116,6 +116,8 @@ static const struct pci_device_id mei_me_pci_tbl[] = { {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)}, {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_N, MEI_ME_PCH15_CFG)}, + {MEI_PCI_DEVICE(MEI_DEV_ID_RPL_S, MEI_ME_PCH15_CFG)}, +/* required last entry */ {0, } };
drivers/net/ethernet/broadcom/bgmac-bcma.c +0 -1
@@ -332,7 +332,6 @@ static void bgmac_remove(struct bcma_device *core)bcma_mdio_mii_unregister (bgmac->mii_bus);bgmac_enet_remove (bgmac);bcma_set_drvdata (core,NULL ); -kfree (bgmac); }static struct bcma_driver bgmac_bcma_driver = {
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -0
@@ -765,6 +765,7 @@ struct hnae3_tc_info {u8 prio_tc[HNAE3_MAX_USER_PRIO ];/* TC indexed by prio */ u16 tqp_count[HNAE3_MAX_TC ];u16 tqp_offset[HNAE3_MAX_TC ]; +u8 max_tc;/* Total number of TCs */ u8 num_tc;/* Total number of enabled TCs */ bool mqprio_active; };
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +15 -3
@@ -3276,7 +3276,7 @@ static int hclge_tp_port_init(struct hclge_dev *hdev)static int hclge_update_port_info (struct hclge_dev *hdev) {struct hclge_mac *mac = &hdev->hw.mac; -int speed =HCLGE_MAC_SPEED_UNKNOWN ; +int speed;int ret;/* get the port info from SFP cmd if not copper port */
@@ -3287,10 +3287,13 @@ static int hclge_update_port_info(struct hclge_dev *hdev)if (!hdev->support_sfp_query)return 0 ; -if (hdev->ae_dev->dev_version >=HNAE3_DEVICE_VERSION_V2 ) +if (hdev->ae_dev->dev_version >=HNAE3_DEVICE_VERSION_V2 ) { + speed = mac->speed; ret =hclge_get_sfp_info (hdev, mac); -else + }else { + speed =HCLGE_MAC_SPEED_UNKNOWN ; ret =hclge_get_sfp_speed (hdev, &speed); + }if (ret == -EOPNOTSUPP ) { hdev->support_sfp_query = false;
@@ -3302,6 +3305,8 @@ static int hclge_update_port_info(struct hclge_dev *hdev)if (hdev->ae_dev->dev_version >=HNAE3_DEVICE_VERSION_V2 ) {if (mac->speed_type ==QUERY_ACTIVE_SPEED ) {hclge_update_port_capability (hdev, mac); +if (mac->speed != speed) + (void )hclge_tm_port_shaper_cfg (hdev);return 0 ; } return hclge_cfg_mac_speed_dup(hdev, mac->speed,
@@ -3384,6 +3389,12 @@ static int hclge_set_vf_link_state(struct hnae3_handle *handle, int vf, link_state_old = vport->vf_info.link_state; vport->vf_info.link_state = link_state; +/* return success directly if the VF is unalive, VF will +* query link state itself when it starts work. +*/ +if (!test_bit (HCLGE_VPORT_STATE_ALIVE , &vport->state)) +return 0 ; + ret =hclge_push_vf_link_status (vport);if (ret) { vport->vf_info.link_state = link_state_old;
@@ -10136,6 +10147,7 @@ static int hclge_modify_port_base_vlan_tag(struct hclge_vport *vport,if (ret)return ret; + vport->port_base_vlan_cfg.tbl_sta = false;/* remove old VLAN tag */ if (old_info->vlan_tag ==0 ) ret = hclge_set_vf_vlan_common(hdev, vport->vport_id,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c +68 -33
210 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h +1 -0
@@ -237,6 +237,7 @@ int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);void hclge_pfc_rx_stats_get (struct hclge_dev *hdev,u64 *stats);void hclge_pfc_tx_stats_get (struct hclge_dev *hdev,u64 *stats);int hclge_tm_qs_shaper_cfg (struct hclge_vport *vport,int max_tx_rate); +int hclge_tm_port_shaper_cfg (struct hclge_dev *hdev);int hclge_tm_get_qset_num (struct hclge_dev *hdev,u16 *qset_num);int hclge_tm_get_pri_num (struct hclge_dev *hdev,u8 *pri_num); int hclge_tm_get_qset_map_pri(struct hclge_dev *hdev, u16 qset_id, u8 *priority,
drivers/net/ethernet/intel/i40e/i40e_ethtool.c +17 -8
@@ -2584,15 +2584,16 @@ static void i40e_diag_test(struct net_device *netdev,set_bit (__I40E_TESTING, pf->state); +if (test_bit (__I40E_RESET_RECOVERY_PENDING, pf->state) || +test_bit (__I40E_RESET_INTR_RECEIVED, pf->state)) { +dev_warn (&pf->pdev->dev, +"Cannot start offline testing when PF is in reset state.\n" ); + goto skip_ol_tests; + } +if (i40e_active_vfs (pf) ||i40e_active_vmdqs (pf)) {dev_warn (&pf->pdev->dev,"Please take active VFs and Netqueues offline and restart the adapter before running NIC diagnostics\n" ); - data[I40E_ETH_TEST_REG ] =1 ; - data[I40E_ETH_TEST_EEPROM ] =1 ; - data[I40E_ETH_TEST_INTR ] =1 ; - data[I40E_ETH_TEST_LINK ] =1 ; - eth_test->flags |=ETH_TEST_FL_FAILED ; -clear_bit (__I40E_TESTING, pf->state); goto skip_ol_tests; }
@@ -2639,9 +2640,17 @@ static void i40e_diag_test(struct net_device *netdev, data[I40E_ETH_TEST_INTR ] =0 ; } -skip_ol_tests: -netif_info (pf, drv, netdev,"testing finished\n" ); +return ; + +skip_ol_tests: + data[I40E_ETH_TEST_REG ] =1 ; + data[I40E_ETH_TEST_EEPROM ] =1 ; + data[I40E_ETH_TEST_INTR ] =1 ; + data[I40E_ETH_TEST_LINK ] =1 ; + eth_test->flags |=ETH_TEST_FL_FAILED ; +clear_bit (__I40E_TESTING, pf->state); +netif_info (pf, drv, netdev,"testing failed\n" ); } static void i40e_get_wol(struct net_device *netdev,
drivers/net/ethernet/intel/i40e/i40e_main.c +5 -0
@@ -8537,6 +8537,11 @@ static int i40e_configure_clsflower(struct i40e_vsi *vsi,return -EOPNOTSUPP ; } +if (!tc) { +dev_err (&pf->pdev->dev,"Unable to add filter because of invalid destination" ); +return -EINVAL ; + } +if (test_bit (__I40E_RESET_RECOVERY_PENDING, pf->state) ||test_bit (__I40E_RESET_INTR_RECEIVED, pf->state))return -EBUSY ;
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +1 -1
@@ -2282,7 +2282,7 @@ static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg) }if (vf->adq_enabled) { -for (i =0 ; i <I40E_MAX_VF_VSI ; i++) +for (i =0 ; i < vf->num_tc; i++) num_qps_all += vf->ch[i].num_qps;if (num_qps_all != qci->num_queue_pairs) { aq_ret =I40E_ERR_PARAM ;
drivers/net/ethernet/intel/iavf/iavf_main.c +1 -1
@@ -984,7 +984,7 @@ struct iavf_mac_filter *iavf_add_filter(struct iavf_adapter *adapter,list_add_tail (&f->list, &adapter->mac_filter_list); f->add = true; f->is_new_mac = true; - f->is_primary = false; + f->is_primary =ether_addr_equal (macaddr, adapter->hw.mac.addr); adapter->aq_required |=IAVF_FLAG_AQ_ADD_MAC_FILTER ; }else { f->remove = false;
drivers/net/ethernet/intel/ice/ice_main.c +31 -18
56 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_ptp.c +1 -1
@@ -2271,7 +2271,7 @@ static int ice_ptp_init_tx_e822(struct ice_pf *pf, struct ice_ptp_tx *tx, u8 port) { tx->quad = port / ICE_PORTS_PER_QUAD; - tx->quad_offset = tx->quad *INDEX_PER_PORT ; + tx->quad_offset = (port %ICE_PORTS_PER_QUAD ) *INDEX_PER_PORT ; tx->len =INDEX_PER_PORT ;return ice_ptp_alloc_tx_tracker (tx);
drivers/net/ethernet/intel/ice/ice_ptp.h +31 -0
@@ -49,6 +49,37 @@ struct ice_perout_channel {* To allow multiple ports to access the shared register block independently, * the blocks are split up so that indexes are assigned to each port based on * hardware logical port number. +* +* The timestamp blocks are handled differently for E810- and E822-based +* devices. In E810 devices, each port has its own block of timestamps, while in +* E822 there is a need to logically break the block of registers into smaller +* chunks based on the port number to avoid collisions. +* +* Example for port 5 in E810: +* +--------+--------+--------+--------+--------+--------+--------+--------+ +* |register|register|register|register|register|register|register|register| +* | block | block | block | block | block | block | block | block | +* | for | for | for | for | for | for | for | for | +* | port 0 | port 1 | port 2 | port 3 | port 4 | port 5 | port 6 | port 7 | +* +--------+--------+--------+--------+--------+--------+--------+--------+ +* ^^ +* || +* |--- quad offset is always 0 +* ---- quad number +* +* Example for port 5 in E822: +* +-----------------------------+-----------------------------+ +* | register block for quad 0 | register block for quad 1 | +* |+------+------+------+------+|+------+------+------+------+| +* ||port 0|port 1|port 2|port 3|||port 0|port 1|port 2|port 3|| +* |+------+------+------+------+|+------+------+------+------+| +* +-----------------------------+-------^---------------------+ +* ^ | +* | --- quad offset* +* ---- quad number +* +* * PHY port 5 is port 1 in quad 1 +* */ /**
drivers/net/ethernet/intel/ice/ice_vf_lib.c +5 -0
@@ -504,6 +504,11 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags) }if (ice_is_vf_disabled (vf)) { + vsi =ice_get_vf_vsi (vf); +if (WARN_ON (!vsi)) +return -EINVAL ; +ice_vsi_stop_lan_tx_rings (vsi,ICE_NO_RESET , vf->vf_id); +ice_vsi_stop_all_rx_rings (vsi);dev_dbg (dev,"VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n" , vf->vf_id);return 0 ;
drivers/net/ethernet/intel/ice/ice_virtchnl.c +26 -27
122 lines not on this page · raw message
drivers/net/ethernet/mediatek/mtk_eth_soc.c +19 -2
@@ -778,6 +778,17 @@ static inline bool mtk_rx_get_desc(struct mtk_rx_dma *rxd,return true; } +static void *mtk_max_lro_buf_alloc (gfp_t gfp_mask) +{ +unsigned int size =mtk_max_frag_size (MTK_MAX_LRO_RX_LENGTH ); +unsigned long data; + + data =__get_free_pages (gfp_mask | __GFP_COMP | __GFP_NOWARN, +get_order (size)); + +return (void *)data; +} +/* the qdma core needs scratch memory to be setup */ static int mtk_init_fq_dma (struct mtk_eth *eth) {
@@ -1269,7 +1280,10 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, goto release_desc;/* alloc new buffer */ - new_data =napi_alloc_frag (ring->frag_size); +if (ring->frag_size <=PAGE_SIZE ) + new_data =napi_alloc_frag (ring->frag_size); +else + new_data =mtk_max_lro_buf_alloc (GFP_ATOMIC );if (unlikely (!new_data)) { netdev->stats.rx_dropped++; goto release_desc;
@@ -1683,7 +1697,10 @@ static int mtk_rx_alloc(struct mtk_eth *eth, int ring_no, int rx_flag)return -ENOMEM ;for (i =0 ; i < rx_dma_size; i++) { - ring->data[i] =netdev_alloc_frag (ring->frag_size); +if (ring->frag_size <=PAGE_SIZE ) + ring->data[i] =netdev_alloc_frag (ring->frag_size); +else + ring->data[i] =mtk_max_lro_buf_alloc (GFP_KERNEL );if (!ring->data[i])return -ENOMEM ; }
drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +1 -1
@@ -561,7 +561,7 @@ static void mlx5_do_bond(struct mlx5_lag *ldev) {struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1 ].dev;struct mlx5_core_dev *dev1 = ldev->pf[MLX5_LAG_P2 ].dev; -struct lag_tracker tracker; +struct lag_tracker tracker = { };bool do_bond, roce_lag;int err;
drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h +1 -1
@@ -8,8 +8,8 @@#include "spectrum.h" enum mlxsw_sp_counter_sub_pool_id { -MLXSW_SP_COUNTER_SUB_POOL_FLOW ,MLXSW_SP_COUNTER_SUB_POOL_RIF , +MLXSW_SP_COUNTER_SUB_POOL_FLOW , }; int mlxsw_sp_counter_alloc(struct mlxsw_sp *mlxsw_sp,
drivers/net/ppp/pppoe.c +1 -2
@@ -1012,8 +1012,7 @@ static int pppoe_recvmsg(struct socket *sock, struct msghdr *m, goto end; } - skb =skb_recv_datagram (sk, flags & ~MSG_DONTWAIT , - flags &MSG_DONTWAIT , &error); + skb =skb_recv_datagram (sk, flags, &error);if (error <0 ) goto end;
drivers/nfc/nfcmrvl/usb.c +14 -2
@@ -388,13 +388,25 @@ static void nfcmrvl_play_deferred(struct nfcmrvl_usb_drv_data *drv_data)int err;while ((urb =usb_get_from_anchor (&drv_data->deferred))) { +usb_anchor_urb (urb, &drv_data->tx_anchor); + err =usb_submit_urb (urb,GFP_ATOMIC ); -if (err) +if (err) { +kfree (urb->setup_packet); +usb_unanchor_urb (urb); +usb_free_urb (urb);break ; + } drv_data->tx_in_flight++; +usb_free_urb (urb); + } + +/* Cleanup the rest deferred urbs. */ +while ((urb =usb_get_from_anchor (&drv_data->deferred))) { +kfree (urb->setup_packet); +usb_free_urb (urb); } -usb_scuttle_anchored_urbs (&drv_data->deferred); }static int nfcmrvl_resume (struct usb_interface *intf)
drivers/nvme/host/core.c +2 -2
@@ -3226,8 +3226,8 @@ static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,* we have no UUID set */ if (uuid_is_null (&ids->uuid)) { -printk_ratelimited (KERN_WARNING -"No UUID available providing old NGUID\n" ); +dev_warn_ratelimited (dev, +"No UUID available providing old NGUID\n" );return sysfs_emit (buf,"%pU\n" , ids->nguid); }return sysfs_emit (buf,"%pU\n" , &ids->uuid);
drivers/platform/mips/Kconfig +1 -1
@@ -17,7 +17,7 @@ menuconfig MIPS_PLATFORM_DEVICES if MIPS_PLATFORM_DEVICES config CPU_HWMON - tristate "Loongson-3 CPU HWMon Driver" + bool "Loongson-3 CPU HWMon Driver" depends on MACH_LOONGSON64 select HWMON default y
drivers/platform/x86/gigabyte-wmi.c +2 -0
@@ -140,6 +140,7 @@ static u8 gigabyte_wmi_detect_sensor_usability(struct wmi_device *wdev) }}static const struct dmi_system_id gigabyte_wmi_known_working_platforms[] = { +DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("B450M DS3H-CF" ),DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("B450M S2H V2" ),DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("B550 AORUS ELITE AX V2" ),DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("B550 AORUS ELITE" ),
@@ -154,6 +155,7 @@ static const struct dmi_system_id gigabyte_wmi_known_working_platforms[] = {DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("X570 GAMING X" ),DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("X570 I AORUS PRO WIFI" ),DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME ("X570 UD" ), + DMI_EXACT_MATCH_GIGABYTE_BOARD_NAME("Z690M AORUS ELITE AX DDR4"), { } };
drivers/platform/x86/intel/hid.c +6 -0
@@ -122,6 +122,12 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = { DMI_MATCH(DMI_PRODUCT_NAME, "HP Spectre x360 Convertible 15-df0xxx"), }, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go"), + }, + }, { } };
drivers/platform/x86/intel/pmc/core.c +1 -0
@@ -1912,6 +1912,7 @@ static const struct x86_cpu_id intel_pmc_core_ids[] = {X86_MATCH_INTEL_FAM6_MODEL (ROCKETLAKE , &tgl_reg_map),X86_MATCH_INTEL_FAM6_MODEL (ALDERLAKE_L , &tgl_reg_map),X86_MATCH_INTEL_FAM6_MODEL (ALDERLAKE , &adl_reg_map), + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, &tgl_reg_map), {} };
drivers/platform/x86/intel/pmt/crashlog.c +1 -1
@@ -282,7 +282,7 @@ static int pmt_crashlog_probe(struct auxiliary_device *auxdev,auxiliary_set_drvdata (auxdev, priv);for (i =0 ; i < intel_vsec_dev->num_resources; i++) { -struct intel_pmt_entry *entry = &priv->entry[i].entry; +struct intel_pmt_entry *entry = &priv->entry[priv->num_entries].entry; ret =intel_pmt_dev_create (entry, &pmt_crashlog_ns, intel_vsec_dev, i);if (ret <0 )
drivers/scsi/ipr.c +2 -2
@@ -9795,7 +9795,7 @@ static int ipr_alloc_mem(struct ipr_ioa_cfg *ioa_cfg) GFP_KERNEL);if (!ioa_cfg->hrrq[i].host_rrq) { -while (--i >0 ) +while (--i >=0 ) dma_free_coherent(&pdev->dev, sizeof(u32) * ioa_cfg->hrrq[i].size, ioa_cfg->hrrq[i].host_rrq,
@@ -10068,7 +10068,7 @@ static int ipr_request_other_msi_irqs(struct ipr_ioa_cfg *ioa_cfg, ioa_cfg->vectors_info[i].desc, &ioa_cfg->hrrq[i]);if (rc) { -while (--i >=0 ) +while (--i >0 )free_irq (pci_irq_vector (pdev, i), &ioa_cfg->hrrq[i]);return rc;
drivers/scsi/lpfc/lpfc_els.c +9 -9
@@ -3035,18 +3035,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,spin_unlock_irq (&ndlp->lock);lpfc_disc_state_machine (vport, ndlp, cmdiocb,NLP_EVT_DEVICE_RM ); -lpfc_els_free_iocb (phba, cmdiocb); -lpfc_nlp_put (ndlp); - -/* Presume the node was released. */ -return ; + goto out_rsrc_free; } out: -/* Driver is done with the IO. */ -lpfc_els_free_iocb (phba, cmdiocb); -lpfc_nlp_put (ndlp); -/* At this point, the LOGO processing is complete. NOTE: For a * pt2pt topology, we are assuming the NPortID will only change * on link up processing. For a LOGO / PLOGI initiated by the
@@ -3073,6 +3065,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, ndlp->nlp_DID, ulp_status, ulp_word4, tmo, vport->num_disc_nodes); + +lpfc_els_free_iocb (phba, cmdiocb); +lpfc_nlp_put (ndlp); +lpfc_disc_start (vport);return ; }
@@ -3089,6 +3085,10 @@ lpfc_cmpl_els_logo(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,lpfc_disc_state_machine (vport, ndlp, cmdiocb,NLP_EVT_DEVICE_RM ); } +out_rsrc_free: +/* Driver is done with the I/O. */ +lpfc_els_free_iocb (phba, cmdiocb); +lpfc_nlp_put (ndlp); }/**
drivers/scsi/lpfc/lpfc_hw4.h +3 -0
@@ -4488,6 +4488,9 @@ struct wqe_common {#define wqe_sup_SHIFT 6#define wqe_sup_MASK 0x00000001#define wqe_sup_WORD word11 +#define wqe_ffrq_SHIFT 6 +#define wqe_ffrq_MASK 0x00000001 +#define wqe_ffrq_WORD word11#define wqe_wqec_SHIFT 7#define wqe_wqec_MASK 0x00000001#define wqe_wqec_WORD word11
drivers/scsi/lpfc/lpfc_nportdisc.c +2 -1
@@ -835,7 +835,8 @@ lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,lpfc_nvmet_invalidate_host (phba, ndlp);if (ndlp->nlp_DID == Fabric_DID) { -if (vport->port_state <=LPFC_FDISC ) +if (vport->port_state <=LPFC_FDISC || + vport->fc_flag &FC_PT2PT ) goto out;lpfc_linkdown_port (vport);spin_lock_irq (shost->host_lock);
drivers/scsi/lpfc/lpfc_nvme.c +9 -2
@@ -1194,7 +1194,8 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport, {struct lpfc_hba *phba = vport->phba;struct nvmefc_fcp_req *nCmd = lpfc_ncmd->nvmeCmd; -struct lpfc_iocbq *pwqeq = &(lpfc_ncmd->cur_iocbq); +struct nvme_common_command *sqe; +struct lpfc_iocbq *pwqeq = &lpfc_ncmd->cur_iocbq;union lpfc_wqe128 *wqe = &pwqeq->wqe;uint32_t req_len;
@@ -1251,8 +1252,14 @@ lpfc_nvme_prep_io_cmd(struct lpfc_vport *vport, cstat->control_requests++; } -if (pnode->nlp_nvme_info &NLP_NVME_NSLER ) +if (pnode->nlp_nvme_info &NLP_NVME_NSLER ) {bf_set (wqe_erp, &wqe->generic.wqe_com,1 ); + sqe = &((struct nvme_fc_cmd_iu *) + nCmd->cmdaddr)->sqe.common; +if (sqe->opcode == nvme_admin_async_event) +bf_set (wqe_ffrq, &wqe->generic.wqe_com,1 ); + } +/* * Finish initializing those WQE fields that are independent * of the nvme_cmnd request_buffer
drivers/scsi/mpt3sas/mpt3sas_base.c +12 -11
@@ -5368,6 +5368,7 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc)Mpi2ConfigReply_t mpi_reply;Mpi2SasIOUnitPage1_t *sas_iounit_pg1 =NULL ;Mpi26PCIeIOUnitPage1_t pcie_iounit_pg1; +u16 depth;int sz;int rc =0 ;
@@ -5379,7 +5380,7 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc) goto out;/* sas iounit page 1 */ sz = offsetof(Mpi2SasIOUnitPage1_t , PhyData); - sas_iounit_pg1 =kzalloc (sz,GFP_KERNEL ); + sas_iounit_pg1 =kzalloc (sizeof (Mpi2SasIOUnitPage1_t),GFP_KERNEL );if (!sas_iounit_pg1) {pr_err ("%s: failure at %s:%d/%s()!\n" , ioc->name, __FILE__, __LINE__, __func__);
@@ -5392,16 +5393,16 @@ static int _base_assign_fw_reported_qd(struct MPT3SAS_ADAPTER *ioc) ioc->name, __FILE__, __LINE__, __func__); goto out; } - ioc->max_wideport_qd = - (le16_to_cpu (sas_iounit_pg1->SASWideMaxQueueDepth)) ? -le16_to_cpu (sas_iounit_pg1->SASWideMaxQueueDepth) : -MPT3SAS_SAS_QUEUE_DEPTH ; - ioc->max_narrowport_qd = - (le16_to_cpu (sas_iounit_pg1->SASNarrowMaxQueueDepth)) ? -le16_to_cpu (sas_iounit_pg1->SASNarrowMaxQueueDepth) : -MPT3SAS_SAS_QUEUE_DEPTH ; - ioc->max_sata_qd = (sas_iounit_pg1->SATAMaxQDepth) ? - sas_iounit_pg1->SATAMaxQDepth :MPT3SAS_SATA_QUEUE_DEPTH ; + + depth =le16_to_cpu (sas_iounit_pg1->SASWideMaxQueueDepth); + ioc->max_wideport_qd = (depth ? depth :MPT3SAS_SAS_QUEUE_DEPTH ); + + depth =le16_to_cpu (sas_iounit_pg1->SASNarrowMaxQueueDepth); + ioc->max_narrowport_qd = (depth ? depth :MPT3SAS_SAS_QUEUE_DEPTH ); + + depth = sas_iounit_pg1->SATAMaxQDepth; + ioc->max_sata_qd = (depth ? depth :MPT3SAS_SATA_QUEUE_DEPTH ); +/* pcie iounit page 1 */ rc =mpt3sas_config_get_pcie_iounit_pg1 (ioc, &mpi_reply, &pcie_iounit_pg1,sizeof (Mpi26PCIeIOUnitPage1_t));
drivers/scsi/pmcraid.c +1 -1
@@ -4031,7 +4031,7 @@ pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)return 0 ; out_unwind: -while (--i >0 ) +while (--i >=0 )free_irq (pci_irq_vector (pdev, i), &pinstance->hrrq_vector[i]);pci_free_irq_vectors (pdev);return rc;
drivers/scsi/vmw_pvscsi.h +2 -2
@@ -331,8 +331,8 @@ struct PVSCSIRingReqDesc {u8 tag;u8 bus;u8 target; -u8 vcpuHint; -u8 unused[59 ]; +u16 vcpuHint; +u8 unused[58 ]; } __packed;/*
drivers/staging/r8188eu/core/rtw_xmit.c +5 -15
@@ -178,8 +178,7 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter) pxmitpriv->free_xmit_extbuf_cnt = num_xmit_extbuf; - res =rtw_alloc_hwxmits (padapter); -if (res) { +if (rtw_alloc_hwxmits (padapter)) { res = _FAIL; goto exit; }
@@ -1492,19 +1491,10 @@ int rtw_alloc_hwxmits(struct adapter *padapter) hwxmits = pxmitpriv->hwxmits; -if (pxmitpriv->hwxmit_entry ==5 ) { - hwxmits[0 ] .sta_queue = &pxmitpriv->bm_pending; - hwxmits[1 ] .sta_queue = &pxmitpriv->vo_pending; - hwxmits[2 ] .sta_queue = &pxmitpriv->vi_pending; - hwxmits[3 ] .sta_queue = &pxmitpriv->bk_pending; - hwxmits[4 ] .sta_queue = &pxmitpriv->be_pending; - }else if (pxmitpriv->hwxmit_entry ==4 ) { - hwxmits[0 ] .sta_queue = &pxmitpriv->vo_pending; - hwxmits[1 ] .sta_queue = &pxmitpriv->vi_pending; - hwxmits[2 ] .sta_queue = &pxmitpriv->be_pending; - hwxmits[3 ] .sta_queue = &pxmitpriv->bk_pending; - }else { - } + hwxmits[0 ].sta_queue = &pxmitpriv->vo_pending; + hwxmits[1 ].sta_queue = &pxmitpriv->vi_pending; + hwxmits[2 ].sta_queue = &pxmitpriv->be_pending; + hwxmits[3 ].sta_queue = &pxmitpriv->bk_pending;return 0 ; }
drivers/staging/r8188eu/os_dep/ioctl_linux.c +1 -1
@@ -404,7 +404,7 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param,if (wep_key_len >0 ) { wep_key_len = wep_key_len <=5 ?5 :13 ; - wep_total_len = wep_key_len + FIELD_OFFSET(struct ndis_802_11_wep, KeyMaterial); + wep_total_len = wep_key_len +sizeof (*pwep); pwep =kzalloc (wep_total_len,GFP_KERNEL );if (!pwep) goto exit;
drivers/tty/goldfish.c +1 -1
@@ -426,7 +426,7 @@ static int goldfish_tty_remove(struct platform_device *pdev)tty_unregister_device (goldfish_tty_driver, qtty->console.index);iounmap (qtty->base); qtty->base =NULL ; -free_irq (qtty->irq, pdev); +free_irq (qtty->irq, qtty);tty_port_destroy (&qtty->port); goldfish_tty_current_line_count--;if (goldfish_tty_current_line_count ==0 )
drivers/tty/n_gsm.c +1 -1
@@ -455,7 +455,7 @@ static void gsm_hex_dump_bytes(const char *fname, const u8 *data,return ; } - prefix =kasprintf (GFP_KERNEL ,"%s: " , fname); + prefix =kasprintf (GFP_ATOMIC ,"%s: " , fname);if (!prefix)return ; print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 16, 1, data, len,
drivers/tty/serial/8250/8250_port.c +2 -0
@@ -1535,6 +1535,8 @@ static inline void __stop_tx(struct uart_8250_port *p)if (em485) {unsigned char lsr =serial_in (p,UART_LSR ); + p->lsr_saved_flags |= lsr &LSR_SAVE_FLAGS ; +/* * To provide required timeing and allow FIFO transfer, * __stop_tx_rs485() must be called only when both FIFO and
drivers/usb/cdns3/cdnsp-ring.c +11 -8
@@ -1941,13 +1941,16 @@ int cdnsp_queue_bulk_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq) }if (enqd_len + trb_buff_len >= full_len) { -if (need_zero_pkt) - zero_len_trb = !zero_len_trb; - - field &= ~TRB_CHAIN ; - field |=TRB_IOC ; - more_trbs_coming = false; - preq->td.last_trb = ring->enqueue; +if (need_zero_pkt && !zero_len_trb) { + zero_len_trb = true; + }else { + zero_len_trb = false; + field &= ~TRB_CHAIN ; + field |=TRB_IOC ; + more_trbs_coming = false; + need_zero_pkt = false; + preq->td.last_trb = ring->enqueue; + } }/* Only set interrupt on short packet for OUT endpoints. */
@@ -1962,7 +1965,7 @@ int cdnsp_queue_bulk_tx(struct cdnsp_device *pdev, struct cdnsp_request *preq) length_field =TRB_LEN (trb_buff_len) |TRB_TD_SIZE (remainder) |TRB_INTR_TARGET (0 ); - cdnsp_queue_trb(pdev, ring, more_trbs_coming | zero_len_trb, + cdnsp_queue_trb(pdev, ring, more_trbs_coming, lower_32_bits(send_addr), upper_32_bits(send_addr), length_field,
drivers/usb/dwc2/hcd.c +1 -1
@@ -5190,7 +5190,7 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg) res =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (!res) { retval = -EINVAL ; - goto error1; + goto error2; } hcd->rsrc_start = res->start; hcd->rsrc_len =resource_size (res);
drivers/usb/dwc3/dwc3-pci.c +1 -0
@@ -127,6 +127,7 @@ static const struct property_entry dwc3_pci_intel_phy_charger_detect_properties[PROPERTY_ENTRY_STRING ("dr_mode" ,"peripheral" ),PROPERTY_ENTRY_BOOL ("snps,dis_u2_susphy_quirk" ),PROPERTY_ENTRY_BOOL ("linux,phy_charger_detect" ), + PROPERTY_ENTRY_BOOL("linux,sysdev_is_parent"), {} };
drivers/usb/dwc3/gadget.c +15 -11
@@ -2984,6 +2984,7 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)struct dwc3 *dwc = dep->dwc;u32 mdwidth;int size; +int maxpacket; mdwidth =dwc3_mdwidth (dwc);
@@ -2996,21 +2997,24 @@ static int dwc3_gadget_init_in_endpoint(struct dwc3_ep *dep)else size =DWC31_GTXFIFOSIZ_TXFDEP (size); -/* FIFO Depth is in MDWDITH bytes. Multiply */ - size *= mdwidth; -/* -* To meet performance requirement, a minimum TxFIFO size of 3x -* MaxPacketSize is recommended for endpoints that support burst and a -* minimum TxFIFO size of 2x MaxPacketSize for endpoints that don't -* support burst. Use those numbers and we can calculate the max packet -* limit as below. +* maxpacket size is determined as part of the following, after assuming +* a mult value of one maxpacket: +* DWC3 revision 280A and prior: +* fifo_size = mult * (max_packet / mdwidth) + 1; +* maxpacket = mdwidth * (fifo_size - 1); +* +* DWC3 revision 290A and onwards: +* fifo_size = mult * ((max_packet + mdwidth)/mdwidth + 1) + 1 +* maxpacket = mdwidth * ((fifo_size - 1) - 1) - mdwidth; */ -if (dwc->maximum_speed >=USB_SPEED_SUPER ) - size /=3 ; + if (DWC3_VER_IS_PRIOR(DWC3, 290A)) + maxpacket = mdwidth * (size -1 );else - size /=2 ; + maxpacket = mdwidth * ((size -1 ) -1 ) - mdwidth; +/* Functionally, space for one max packet is sufficient */ + size =min_t (int, maxpacket,1024 );usb_ep_set_maxpacket_limit (&dep->endpoint, size); dep->endpoint.max_streams =16 ;
drivers/usb/gadget/function/f_fs.c +25 -15
@@ -122,8 +122,6 @@ struct ffs_ep {struct usb_endpoint_descriptor *descs[3 ];u8 num; - -int status;/* P: epfile->mutex */ };struct ffs_epfile {
@@ -227,6 +225,9 @@ struct ffs_io_data {bool use_sg;struct ffs_data *ffs; + +int status; +struct completion done; };struct ffs_desc_helper {
@@ -707,12 +708,15 @@ static const struct file_operations ffs_ep0_operations = {static void ffs_epfile_io_complete (struct usb_ep *_ep,struct usb_request *req) { +struct ffs_io_data *io_data = req->context; +ENTER (); -if (req->context) { -struct ffs_ep *ep = _ep->driver_data; - ep->status = req->status ? req->status : req->actual; -complete (req->context); - } +if (req->status) + io_data->status = req->status; +else + io_data->status = req->actual; + +complete (&io_data->done); }static ssize_t ffs_copy_to_iter (void *data,int data_len,struct iov_iter *iter)
@@ -1050,7 +1054,6 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)WARN (1 ,"%s: data_len == -EINVAL\n" , __func__); ret = -EINVAL ; }else if (!io_data->aio) { -DECLARE_COMPLETION_ONSTACK (done);bool interrupted = false; req = ep->req;
@@ -1066,7 +1069,8 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data) io_data->buf = data; - req->context = &done; +init_completion (&io_data->done); + req->context = io_data; req->complete = ffs_epfile_io_complete; ret =usb_ep_queue (ep->ep, req,GFP_ATOMIC );
@@ -1075,7 +1079,12 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)spin_unlock_irq (&epfile->ffs->eps_lock); -if (wait_for_completion_interruptible (&done)) { +if (wait_for_completion_interruptible (&io_data->done)) { +spin_lock_irq (&epfile->ffs->eps_lock); +if (epfile->ep != ep) { + ret = -ESHUTDOWN ; + goto error_lock; + }/* * To avoid race condition with ffs_epfile_io_complete, * dequeue the request first then check
@@ -1083,17 +1092,18 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)* condition with req->complete callback. */ usb_ep_dequeue (ep->ep, req); -wait_for_completion (&done); - interrupted = ep->status <0 ; +spin_unlock_irq (&epfile->ffs->eps_lock); +wait_for_completion (&io_data->done); + interrupted = io_data->status <0 ; }if (interrupted) ret = -EINTR ; -else if (io_data->read && ep->status >0 ) - ret =__ffs_epfile_read_data (epfile, data, ep->status, +else if (io_data->read && io_data->status >0 ) + ret =__ffs_epfile_read_data (epfile, data, io_data->status, &io_data->data);else - ret = ep->status; + ret = io_data->status; goto error_mutex; }else if (!(req =usb_ep_alloc_request (ep->ep,GFP_ATOMIC ))) { ret = -ENOMEM ;
drivers/usb/gadget/function/u_ether.c +10 -2
@@ -775,9 +775,13 @@ struct eth_dev *gether_setup_name(struct usb_gadget *g, dev->qmult = qmult;snprintf (net->name,sizeof (net->name),"%s%%d" , netname); -if (get_ether_addr (dev_addr, addr)) +if (get_ether_addr (dev_addr, addr)) { + net->addr_assign_type =NET_ADDR_RANDOM ;dev_warn (&g->dev,"using random %s ethernet address\n" ,"self" ); + }else { + net->addr_assign_type =NET_ADDR_SET ; + }eth_hw_addr_set (net, addr);if (get_ether_addr (host_addr, dev->host_mac)) dev_warn(&g->dev,
@@ -844,6 +848,10 @@ struct net_device *gether_setup_name_default(const char *netname)eth_random_addr (dev->dev_mac);pr_warn ("using random %s ethernet address\n" ,"self" ); + +/* by default we always have a random MAC address */ + net->addr_assign_type =NET_ADDR_RANDOM ; +eth_random_addr (dev->host_mac);pr_warn ("using random %s ethernet address\n" ,"host" );
@@ -871,7 +879,6 @@ int gether_register_netdev(struct net_device *net) dev =netdev_priv (net); g = dev->gadget; - net->addr_assign_type =NET_ADDR_RANDOM ;eth_hw_addr_set (net, dev->dev_mac); status =register_netdev (net);
@@ -912,6 +919,7 @@ int gether_set_dev_addr(struct net_device *net, const char *dev_addr)if (get_ether_addr (dev_addr, new_addr))return -EINVAL ;memcpy (dev->dev_mac, new_addr,ETH_ALEN ); + net->addr_assign_type =NET_ADDR_SET ;return 0 ; }EXPORT_SYMBOL_GPL (gether_set_dev_addr);
drivers/usb/gadget/udc/lpc32xx_udc.c +1 -0
@@ -3016,6 +3016,7 @@ static int lpc32xx_udc_probe(struct platform_device *pdev) } udc->isp1301_i2c_client =isp1301_get_client (isp1301_node); +of_node_put (isp1301_node);if (!udc->isp1301_i2c_client) {return -EPROBE_DEFER ; }
drivers/usb/serial/io_ti.c +2 -0
@@ -166,6 +166,7 @@ static const struct usb_device_id edgeport_2port_id_table[] = { { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_8S) }, { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416) }, { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416B) }, + { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_E5805A) }, { } };
@@ -204,6 +205,7 @@ static const struct usb_device_id id_table_combined[] = { { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_8S) }, { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416) }, { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_TI_EDGEPORT_416B) }, + { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_E5805A) }, { } };
drivers/usb/serial/io_usbvend.h +1 -0
@@ -212,6 +212,7 @@// // Definitions for other product IDs #define ION_DEVICE_ID_MT4X56USB 0x1403 // OEM device +#define ION_DEVICE_ID_E5805A 0x1A01 // OEM device (rebranded Edgeport/4)#define GENERATION_ID_FROM_USB_PRODUCT_ID (ProductId) \
drivers/usb/serial/option.c +6 -0
@@ -432,6 +432,8 @@ static void option_instat_callback(struct urb *urb);#define CINTERION_PRODUCT_CLS8 0x00b0#define CINTERION_PRODUCT_MV31_MBIM 0x00b3#define CINTERION_PRODUCT_MV31_RMNET 0x00b7 +#define CINTERION_PRODUCT_MV31_2_MBIM 0x00b8 +#define CINTERION_PRODUCT_MV31_2_RMNET 0x00b9#define CINTERION_PRODUCT_MV32_WA 0x00f1#define CINTERION_PRODUCT_MV32_WB 0x00f2
@@ -1979,6 +1981,10 @@ static const struct usb_device_id option_ids[] = { .driver_info = RSVD(3)}, { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_RMNET, 0xff), .driver_info = RSVD(0)}, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_MBIM, 0xff), + .driver_info = RSVD(3)}, + { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV31_2_RMNET, 0xff), + .driver_info = RSVD(0)}, { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WA, 0xff), .driver_info = RSVD(3)}, { USB_DEVICE_INTERFACE_CLASS(CINTERION_VENDOR_ID, CINTERION_PRODUCT_MV32_WB, 0xff),
drivers/virtio/virtio_mmio.c +1 -0
@@ -688,6 +688,7 @@ static int vm_cmdline_set(const char *device,if (!vm_cmdline_parent_registered) { err =device_register (&vm_cmdline_parent);if (err) { +put_device (&vm_cmdline_parent);pr_err ("Failed to register parent device!\n" );return err; }
drivers/virtio/virtio_pci_common.c +1 -2
@@ -254,8 +254,7 @@ void vp_del_vqs(struct virtio_device *vdev)if (vp_dev->msix_affinity_masks) {for (i =0 ; i < vp_dev->msix_vectors; i++) -if (vp_dev->msix_affinity_masks[i]) -free_cpumask_var (vp_dev->msix_affinity_masks[i]); +free_cpumask_var (vp_dev->msix_affinity_masks[i]); }if (vp_dev->msix_enabled) {
fs/9p/cache.c +2 -2
@@ -62,12 +62,12 @@ void v9fs_cache_inode_get_cookie(struct inode *inode) version =cpu_to_le32 (v9inode->qid.version); path =cpu_to_le64 (v9inode->qid.path); v9ses =v9fs_inode2v9ses (inode); - v9inode->netfs_ctx.cache = + v9inode->netfs.cache =fscache_acquire_cookie (v9fs_session_cache (v9ses),0 , &path,sizeof (path), &version,sizeof (version), -i_size_read (&v9inode->vfs_inode)); +i_size_read (&v9inode->netfs.inode));p9_debug (P9_DEBUG_FSC ,"inode %p get cookie %p\n" , inode,v9fs_inode_cookie (v9inode));
fs/9p/v9fs.c +1 -1
@@ -625,7 +625,7 @@ static void v9fs_inode_init_once(void *foo)struct v9fs_inode *v9inode = (struct v9fs_inode *)foo;memset (&v9inode->qid,0 ,sizeof (v9inode->qid)); -inode_init_once (&v9inode->vfs_inode); +inode_init_once (&v9inode->netfs.inode); }/**
fs/9p/v9fs.h +3 -7
@@ -109,11 +109,7 @@ struct v9fs_session_info {#define V9FS_INO_INVALID_ATTR 0x01struct v9fs_inode { -struct { -/* These must be contiguous */ -struct inode vfs_inode;/* the VFS's inode record */ -struct netfs_i_context netfs_ctx;/* Netfslib context */ - }; +struct netfs_inode netfs;/* Netfslib context and vfs inode */ struct p9_qid qid;unsigned int cache_validity;struct p9_fid *writeback_fid;
@@ -122,13 +118,13 @@ struct v9fs_inode {static inline struct v9fs_inode *V9FS_I (const struct inode *inode) { - return container_of(inode, struct v9fs_inode, vfs_inode); + return container_of(inode, struct v9fs_inode, netfs.inode); }static inline struct fscache_cookie *v9fs_inode_cookie (struct v9fs_inode *v9inode) {#ifdef CONFIG_9P_FSCACHE -return netfs_i_cookie (&v9inode->vfs_inode); +return netfs_i_cookie (&v9inode->netfs.inode);#else return NULL ;#endif
fs/9p/vfs_addr.c +1 -1
@@ -141,7 +141,7 @@ static void v9fs_write_to_cache_done(void *priv, ssize_t transferred_or_error, transferred_or_error != -ENOBUFS) { version =cpu_to_le32 (v9inode->qid.version);fscache_invalidate (v9fs_inode_cookie (v9inode), &version, -i_size_read (&v9inode->vfs_inode),0 ); +i_size_read (&v9inode->netfs.inode),0 ); } }
fs/9p/vfs_inode.c +2 -2
@@ -234,7 +234,7 @@ struct inode *v9fs_alloc_inode(struct super_block *sb) v9inode->writeback_fid =NULL ; v9inode->cache_validity =0 ;mutex_init (&v9inode->v_mutex); -return &v9inode->vfs_inode; +return &v9inode->netfs.inode; }/**
@@ -252,7 +252,7 @@ void v9fs_free_inode(struct inode *inode)*/ static void v9fs_set_netfs_context (struct inode *inode) { -netfs_i_context_init (inode, &v9fs_req_ops); +netfs_inode_init (inode, &v9fs_req_ops); } int v9fs_init_inode(struct v9fs_session_info *v9ses,
fs/afs/callback.c +1 -1
@@ -30,7 +30,7 @@ void afs_invalidate_mmap_work(struct work_struct *work) { struct afs_vnode *vnode = container_of(work, struct afs_vnode, cb_work); -unmap_mapping_pages (vnode->vfs_inode.i_mapping,0 ,0 , false); +unmap_mapping_pages (vnode->netfs.inode.i_mapping,0 ,0 , false); }void afs_server_init_callback_work (struct work_struct *work)
fs/afs/dir.c +16 -16
@@ -109,7 +109,7 @@ struct afs_lookup_cookie {*/ static void afs_dir_read_cleanup (struct afs_read *req) { -struct address_space *mapping = req->vnode->vfs_inode.i_mapping; +struct address_space *mapping = req->vnode->netfs.inode.i_mapping;struct folio *folio;pgoff_t last = req->nr_pages -1 ;
@@ -153,7 +153,7 @@ static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio, block =kmap_local_folio (folio, offset);if (block->hdr.magic !=AFS_DIR_MAGIC ) {printk ("kAFS: %s(%lx): [%llx] bad magic %zx/%zx is %04hx\n" , - __func__, dvnode->vfs_inode.i_ino, + __func__, dvnode->netfs.inode.i_ino, pos, offset, size,ntohs (block->hdr.magic));trace_afs_dir_check_failed (dvnode, pos + offset, i_size);kunmap_local (block);
@@ -183,7 +183,7 @@ static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,static void afs_dir_dump (struct afs_vnode *dvnode,struct afs_read *req) {union afs_xdr_dir_block *block; -struct address_space *mapping = dvnode->vfs_inode.i_mapping; +struct address_space *mapping = dvnode->netfs.inode.i_mapping;struct folio *folio;pgoff_t last = req->nr_pages -1 ;size_t offset, size;
@@ -217,7 +217,7 @@ static void afs_dir_dump(struct afs_vnode *dvnode, struct afs_read *req)*/ static int afs_dir_check (struct afs_vnode *dvnode,struct afs_read *req) { -struct address_space *mapping = dvnode->vfs_inode.i_mapping; +struct address_space *mapping = dvnode->netfs.inode.i_mapping;struct folio *folio;pgoff_t last = req->nr_pages -1 ;int ret =0 ;
@@ -269,7 +269,7 @@ static int afs_dir_open(struct inode *inode, struct file *file)static struct afs_read *afs_read_dir (struct afs_vnode *dvnode,struct key *key) __acquires(&dvnode->validate_lock) { -struct address_space *mapping = dvnode->vfs_inode.i_mapping; +struct address_space *mapping = dvnode->netfs.inode.i_mapping;struct afs_read *req;loff_t i_size;int nr_pages, i;
@@ -287,7 +287,7 @@ static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key) req->cleanup = afs_dir_read_cleanup; expand: - i_size =i_size_read (&dvnode->vfs_inode); + i_size =i_size_read (&dvnode->netfs.inode);if (i_size <2048 ) { ret =afs_bad (dvnode, afs_file_error_dir_small); goto error;
@@ -305,7 +305,7 @@ static struct afs_read *afs_read_dir(struct afs_vnode *dvnode, struct key *key) req->actual_len = i_size;/* May change */ req->len = nr_pages *PAGE_SIZE ;/* We can ask for more than there is */ req->data_version = dvnode->status.data_version;/* May change */ -iov_iter_xarray (&req->def_iter,READ , &dvnode->vfs_inode.i_mapping->i_pages, +iov_iter_xarray (&req->def_iter,READ , &dvnode->netfs.inode.i_mapping->i_pages,0 , i_size); req->iter = &req->def_iter;
@@ -897,7 +897,7 @@ static struct inode *afs_do_lookup(struct inode *dir, struct dentry *dentry, out_op:if (op->error ==0 ) { - inode = &op->file[1 ].vnode->vfs_inode; + inode = &op->file[1 ].vnode->netfs.inode; op->file[1 ].vnode =NULL ; }
@@ -1139,7 +1139,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)afs_stat_v (dir, n_reval);/* search the directory for this vnode */ - ret =afs_do_lookup_one (&dir->vfs_inode, dentry, &fid, key, &dir_version); + ret =afs_do_lookup_one (&dir->netfs.inode, dentry, &fid, key, &dir_version);switch (ret) {case 0 :/* the filename maps to something */
@@ -1170,7 +1170,7 @@ static int afs_d_revalidate(struct dentry *dentry, unsigned int flags)_debug ("%pd: file deleted (uq %u -> %u I:%u)" , dentry, fid.unique, vnode->fid.unique, - vnode->vfs_inode.i_generation); + vnode->netfs.inode.i_generation); goto not_found; } goto out_valid;
@@ -1368,7 +1368,7 @@ static void afs_dir_remove_subdir(struct dentry *dentry)if (d_really_is_positive (dentry)) {struct afs_vnode *vnode =AFS_FS_I (d_inode (dentry)); -clear_nlink (&vnode->vfs_inode); +clear_nlink (&vnode->netfs.inode);set_bit (AFS_VNODE_DELETED , &vnode->flags);clear_bit (AFS_VNODE_CB_PROMISED , &vnode->flags);clear_bit (AFS_VNODE_DIR_VALID , &vnode->flags);
@@ -1487,8 +1487,8 @@ static void afs_dir_remove_link(struct afs_operation *op)/* Already done */ }else if (test_bit (AFS_VNODE_DIR_VALID , &dvnode->flags)) {write_seqlock (&vnode->cb_lock); -drop_nlink (&vnode->vfs_inode); -if (vnode->vfs_inode.i_nlink ==0 ) { +drop_nlink (&vnode->netfs.inode); +if (vnode->netfs.inode.i_nlink ==0 ) {set_bit (AFS_VNODE_DELETED , &vnode->flags);__afs_break_callback (vnode, afs_cb_break_for_unlink); }
@@ -1504,7 +1504,7 @@ static void afs_dir_remove_link(struct afs_operation *op) op->error = ret; } -_debug ("nlink %d [val %d]" , vnode->vfs_inode.i_nlink, op->error); +_debug ("nlink %d [val %d]" , vnode->netfs.inode.i_nlink, op->error); }static void afs_unlink_success (struct afs_operation *op)
@@ -1680,8 +1680,8 @@ static void afs_link_success(struct afs_operation *op)afs_update_dentry_version (op, dvp, op->dentry);if (op->dentry_2->d_parent == op->dentry->d_parent)afs_update_dentry_version (op, dvp, op->dentry_2); -ihold (&vp->vnode->vfs_inode); -d_instantiate (op->dentry, &vp->vnode->vfs_inode); +ihold (&vp->vnode->netfs.inode); +d_instantiate (op->dentry, &vp->vnode->netfs.inode); }static void afs_link_put (struct afs_operation *op)
fs/afs/dir_edit.c +5 -5
@@ -109,7 +109,7 @@ static void afs_clear_contig_bits(union afs_xdr_dir_block *block,*/ static struct folio *afs_dir_get_folio (struct afs_vnode *vnode,pgoff_t index) { -struct address_space *mapping = vnode->vfs_inode.i_mapping; +struct address_space *mapping = vnode->netfs.inode.i_mapping;struct folio *folio; folio = __filemap_get_folio(mapping, index,
@@ -216,7 +216,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode,_enter (",,{%d,%s}," , name->len, name->name); - i_size =i_size_read (&vnode->vfs_inode); + i_size =i_size_read (&vnode->netfs.inode);if (i_size >AFS_DIR_BLOCK_SIZE *AFS_DIR_MAX_BLOCKS || (i_size & (AFS_DIR_BLOCK_SIZE -1 ))) {clear_bit (AFS_VNODE_DIR_VALID , &vnode->flags);
@@ -336,7 +336,7 @@ void afs_edit_dir_add(struct afs_vnode *vnode,if (b <AFS_DIR_BLOCKS_WITH_CTR ) meta->meta.alloc_ctrs[b] -= need_slots; -inode_inc_iversion_raw (&vnode->vfs_inode); +inode_inc_iversion_raw (&vnode->netfs.inode);afs_stat_v (vnode, n_dir_cr);_debug ("Insert %s in %u[%u]" , name->name, b, slot);
@@ -383,7 +383,7 @@ void afs_edit_dir_remove(struct afs_vnode *vnode,_enter (",,{%d,%s}," , name->len, name->name); - i_size =i_size_read (&vnode->vfs_inode); + i_size =i_size_read (&vnode->netfs.inode);if (i_size <AFS_DIR_BLOCK_SIZE || i_size >AFS_DIR_BLOCK_SIZE *AFS_DIR_MAX_BLOCKS || (i_size & (AFS_DIR_BLOCK_SIZE -1 ))) {
@@ -463,7 +463,7 @@ void afs_edit_dir_remove(struct afs_vnode *vnode,if (b <AFS_DIR_BLOCKS_WITH_CTR ) meta->meta.alloc_ctrs[b] += need_slots; -inode_set_iversion_raw (&vnode->vfs_inode, vnode->status.data_version); +inode_set_iversion_raw (&vnode->netfs.inode, vnode->status.data_version);afs_stat_v (vnode, n_dir_rm);_debug ("Remove %s from %u[%u]" , name->name, b, slot);
fs/afs/dir_silly.c +2 -2
@@ -131,7 +131,7 @@ int afs_sillyrename(struct afs_vnode *dvnode, struct afs_vnode *vnode, goto out; }while (!d_is_negative (sdentry)); -ihold (&vnode->vfs_inode); +ihold (&vnode->netfs.inode); ret =afs_do_silly_rename (dvnode, vnode, dentry, sdentry, key);switch (ret) {
@@ -148,7 +148,7 @@ int afs_sillyrename(struct afs_vnode *dvnode, struct afs_vnode *vnode,d_drop (sdentry); } -iput (&vnode->vfs_inode); +iput (&vnode->netfs.inode);dput (sdentry); out:_leave (" = %d" , ret);
fs/afs/dynroot.c +1 -1
@@ -76,7 +76,7 @@ struct inode *afs_iget_pseudo_dir(struct super_block *sb, bool root)/* there shouldn't be an existing inode */ BUG_ON (!(inode->i_state &I_NEW )); -netfs_i_context_init (inode,NULL ); +netfs_inode_init (inode,NULL ); inode->i_size =0 ; inode->i_mode =S_IFDIR |S_IRUGO |S_IXUGO ;if (root) {
fs/afs/file.c +2 -2
@@ -194,7 +194,7 @@ int afs_release(struct inode *inode, struct file *file)afs_put_wb_key (af->wb);if ((file->f_mode &FMODE_WRITE )) { - i_size =i_size_read (&vnode->vfs_inode); + i_size =i_size_read (&vnode->netfs.inode);afs_set_cache_aux (vnode, &aux);fscache_unuse_cookie (afs_vnode_cache (vnode), &aux, &i_size); }else {
@@ -325,7 +325,7 @@ static void afs_issue_read(struct netfs_io_subrequest *subreq) fsreq->iter = &fsreq->def_iter;iov_iter_xarray (&fsreq->def_iter,READ , - &fsreq->vnode->vfs_inode.i_mapping->i_pages, + &fsreq->vnode->netfs.inode.i_mapping->i_pages, fsreq->pos, fsreq->len);afs_fetch_data (fsreq->vnode, fsreq);
fs/afs/fs_operation.c +3 -3
@@ -232,14 +232,14 @@ int afs_put_operation(struct afs_operation *op)if (op->file[1 ].modification && op->file[1 ].vnode != op->file[0 ].vnode)clear_bit (AFS_VNODE_MODIFYING , &op->file[1 ].vnode->flags);if (op->file[0 ].put_vnode) -iput (&op->file[0 ].vnode->vfs_inode); +iput (&op->file[0 ].vnode->netfs.inode);if (op->file[1 ].put_vnode) -iput (&op->file[1 ].vnode->vfs_inode); +iput (&op->file[1 ].vnode->netfs.inode);if (op->more_files) {for (i =0 ; i < op->nr_files -2 ; i++)if (op->more_files[i].put_vnode) -iput (&op->more_files[i].vnode->vfs_inode); +iput (&op->more_files[i].vnode->netfs.inode);kfree (op->more_files); }
fs/afs/inode.c +19 -19
@@ -58,7 +58,7 @@ static noinline void dump_vnode(struct afs_vnode *vnode, struct afs_vnode *paren*/ static void afs_set_netfs_context (struct afs_vnode *vnode) { -netfs_i_context_init (&vnode->vfs_inode, &afs_req_ops); +netfs_inode_init (&vnode->netfs.inode, &afs_req_ops); }/*
@@ -96,7 +96,7 @@ static int afs_inode_init_from_status(struct afs_operation *op, inode->i_flags |=S_NOATIME ; inode->i_uid =make_kuid (&init_user_ns, status->owner); inode->i_gid =make_kgid (&init_user_ns, status->group);
Lines of this file are not shown. View the raw message.
fs/ceph/caps.c +52 -52
104 lines not on this page · raw message
fs/io_uring.c +71 -26
97 lines not on this page · raw message
include/linux/netfs.h +16 -25
41 lines not on this page · raw message
lib/memneq.c new file +176 -0
176 lines not on this page · raw message
scripts/faddr2line +34 -11
45 lines not on this page · raw message
sound/soc/intel/boards/sof_cirrus_common.c +36 -4
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.