Linux 5.10.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.9 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/display/bridge/sii902x.txt | 4 Documentation/sound/alsa-configuration.rst | 2 Makefile | 2 arch/arc/Makefile | 20 - arch/arc/boot/Makefile | 11 arch/arc/include/asm/page.h | 1 arch/arm/boot/dts/picoxcell-pc3x2.dtsi | 4 arch/arm/boot/dts/ste-ux500-samsung-golden.dts | 1 arch/arm/mach-omap2/pmic-cpcap.c | 2 arch/mips/boot/compressed/decompress.c | 3 arch/mips/kernel/binfmt_elfn32.c | 7 arch/mips/kernel/binfmt_elfo32.c | 7 arch/mips/kernel/relocate.c | 10 arch/mips/lib/uncached.c | 4 arch/mips/mm/c-r4k.c | 2 arch/mips/mm/sc-mips.c | 4 arch/riscv/include/asm/pgtable.h | 1 arch/riscv/include/asm/vdso.h | 2 arch/riscv/kernel/entry.S | 15 arch/riscv/kernel/vdso.c | 2 arch/riscv/mm/kasan_init.c | 4 arch/x86/hyperv/mmu.c | 12 arch/x86/kernel/sev-es-shared.c | 4 block/bfq-iosched.c | 8 block/blk-mq-debugfs.c | 1 drivers/acpi/internal.h | 2 drivers/acpi/scan.c | 15 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 18 - drivers/gpu/drm/amd/amdgpu/soc15.c | 3 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 7 drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c | 11 drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 1 drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c | 1 drivers/gpu/drm/bridge/sii902x.c | 100 +++-- drivers/gpu/drm/i915/Makefile | 1 drivers/gpu/drm/i915/display/icl_dsi.c | 4 drivers/gpu/drm/i915/display/intel_panel.c | 9 drivers/gpu/drm/i915/display/vlv_dsi.c | 16 drivers/gpu/drm/i915/gt/gen7_renderclear.c | 157 +++++---- drivers/gpu/drm/i915/gt/intel_ring_submission.c | 6 drivers/gpu/drm/i915/i915_mitigations.c | 146 ++++++++ drivers/gpu/drm/i915/i915_mitigations.h | 13 drivers/gpu/drm/msm/msm_drv.c | 8 drivers/hwmon/pwm-fan.c | 12 drivers/infiniband/core/restrack.c | 1 drivers/infiniband/hw/mlx5/main.c | 4 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 3 drivers/iommu/intel/iommu.c | 16 drivers/iommu/intel/svm.c | 36 +- drivers/isdn/mISDN/Kconfig | 1 drivers/md/Kconfig | 1 drivers/md/dm-bufio.c | 6 drivers/md/dm-crypt.c | 170 ++++++++-- drivers/md/dm-integrity.c | 62 ++- drivers/md/dm-raid.c | 6 drivers/md/dm-snap.c | 24 + drivers/md/dm.c | 2 drivers/misc/habanalabs/common/device.c | 2 drivers/misc/habanalabs/common/habanalabs_drv.c | 1 drivers/misc/habanalabs/common/pci.c | 28 + drivers/misc/habanalabs/gaudi/gaudi.c | 14 drivers/misc/habanalabs/gaudi/gaudi_coresight.c | 3 drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c | 8 drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c | 1 drivers/net/ethernet/freescale/fs_enet/mii-fec.c | 1 drivers/net/ethernet/freescale/ucc_geth.h | 9 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 77 ++-- drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c | 27 - drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c | 2 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c | 2 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 6 drivers/net/usb/cdc_ether.c | 7 drivers/net/usb/r8152.c | 1 drivers/net/wireless/ath/ath11k/dp_rx.c | 10 drivers/net/wireless/ath/ath11k/qmi.c | 24 + drivers/net/wireless/ath/ath11k/qmi.h | 1 drivers/nvme/host/core.c | 11 drivers/nvme/host/fc.c | 15 drivers/nvme/host/pci.c | 10 drivers/nvme/host/tcp.c | 4 drivers/nvme/target/rdma.c | 26 + drivers/regulator/bd718x7-regulator.c | 57 +++ drivers/scsi/ufs/ufshcd.c | 3 drivers/spi/spi-altera.c | 26 - drivers/spi/spi.c | 6 drivers/staging/hikey9xx/hisi-spmi-controller.c | 21 - drivers/usb/typec/altmodes/Kconfig | 2 drivers/xen/privcmd.c | 25 + fs/btrfs/discard.c | 60 +-- fs/btrfs/extent_io.c | 4 fs/btrfs/qgroup.c | 13 fs/btrfs/relocation.c | 7 fs/btrfs/super.c | 8 fs/btrfs/tree-checker.c | 7 fs/cifs/dfs_cache.c | 3 fs/cifs/smb2pdu.c | 2 fs/ext4/fast_commit.c | 25 - fs/ext4/file.c | 2 fs/ext4/ioctl.c | 3 fs/ext4/namei.c | 17 - fs/io_uring.c | 29 + fs/namespace.c | 7 fs/nfs/delegation.c | 12 fs/nfs/internal.h | 38 +- fs/nfs/nfs4proc.c | 28 - fs/nfs/nfs4super.c | 4 fs/nfs/pnfs.c | 58 +-- fs/nfs/pnfs.h | 8 fs/nfs/pnfs_nfs.c | 22 - fs/proc/task_mmu.c | 53 +-- fs/select.c | 14 include/linux/acpi.h | 7 include/linux/compiler-gcc.h | 6 include/linux/dm-bufio.h | 1 include/linux/rcupdate.h | 6 init/main.c | 1 kernel/bpf/task_iter.c | 57 +-- kernel/rcu/tasks.h | 25 + kernel/trace/Kconfig | 2 kernel/trace/trace_kprobe.c | 2 lib/raid6/Makefile | 2 mm/hugetlb.c | 2 mm/process_vm_access.c | 1 mm/slub.c | 2 mm/vmalloc.c | 4 mm/vmscan.c | 2 net/netfilter/ipset/ip_set_hash_gen.h | 22 - net/netfilter/nf_conntrack_standalone.c | 3 net/netfilter/nf_nat_core.c | 1 net/sunrpc/addr.c | 2 net/wireless/Kconfig | 1 scripts/kconfig/Makefile | 10 security/lsm_audit.c | 7 sound/firewire/fireface/ff-transaction.c | 2 sound/firewire/tascam/tascam-transaction.c | 2 sound/pci/hda/patch_realtek.c | 4 sound/soc/amd/renoir/rn-pci-acp3x.c | 7 sound/soc/intel/skylake/cnl-sst.c | 1 sound/soc/meson/axg-tdm-interface.c | 14 sound/soc/meson/axg-tdmin.c | 13 sound/soc/soc-dapm.c | 1 tools/bootconfig/scripts/bconf2ftrace.sh | 1 tools/bootconfig/scripts/ftrace2bconf.sh | 4 tools/perf/util/machine.c | 4 tools/perf/util/session.c | 2 tools/testing/selftests/net/udpgro.sh | 34 ++ tools/testing/selftests/netfilter/nft_conntrack_helper.sh | 12 151 files changed, 1519 insertions(+), 609 deletions(-)
Adrian Hunter (1):
perf intel-pt: Fix 'CPU too large' error
Akilesh Kailash (1):
dm snapshot: flush merged data before committing metadata
Al Viro (3):
MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps dump_common_audit_data(): fix racy accesses to ->d_name umount(2): move the flag validity checks first
Alaa Hleihel (1):
net/mlx5: E-Switch, fix changing vf VLANID
Alexander Lobakin (1):
MIPS: relocatable: fix possible boot hangup with KASLR enabled
Alexandre Demers (1):
drm/amdgpu: fix DRM_INFO flood if display core is not supported (bug 210921)
Alexandru Gagniuc (3):
drm/bridge: sii902x: Refactor init code into separate function
dt-bindings: display: sii902x: Add supply bindings drm/bridge: sii902x: Enable I/O and core VCC supplies if present
Anders Roxell (2):
mips: fix Section mismatch in reference
mips: lib: uncached: fix non-standard usage of variable 'sp'
Andreas Schwab (1):
riscv: return -ENOSYS for syscall -1
Andrew Morton (1):
mm/process_vm_access.c: include compat.h
Arnd Bergmann (4):
misdn: dsp: select CONFIG_BITREVERSE
ARM: picoxcell: fix missing interrupt-parent properties
cfg80211: select CONFIG_CRC32
dm zoned: select CONFIG_CRC32
Atish Patra (1):
riscv: Trace irq on only interrupt is enabled
Carl Huang (2):
ath11k: fix crash caused by NULL rx_channel
ath11k: qmi: try to allocate a big block of DMA memory first
Carl Philipp Klemm (1):
ARM: omap2: pmic-cpcap: fix maximum voltage to be consistent with defaults on xt875
Chen Yi (1):
selftests: netfilter: Pass family parameter "-f" to conntrack tool
Chris Wilson (3):
drm/i915: Allow the sysadmin to override security mitigations drm/i915/gt: Limit VFE threads based on GT
drm/i915/gt: Restore clear-residual mitigations for Ivybridge, Baytrail
Christophe JAILLET (1):
staging: spmi: hisi-spmi-controller: Fix some error handling paths
Craig Tatlor (1):
drm/msm: Call msm_init_vram before binding the gpu
Daejun Park (1):
ext4: fix wrong list_splice in ext4_fc_cleanup
Dan Carpenter (1):
ASoC: Intel: fix error code cnl_set_dsp_D0()
Dave Wysochanski (1):
NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock
Dennis Li (1):
drm/amdgpu: fix a GPU hang issue when remove device
Dexuan Cui (1):
ACPI: scan: Harden acpi_device_add() against device ID overflows
Dinghao Liu (3):
habanalabs: Fix memleak in hl_device_reset RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp
netfilter: nf_nat: Fix memleak in nf_nat_init
Filipe Manana (1):
btrfs: fix transaction leak and crash after RO remount caused by qgroup rescan
Geert Uytterhoeven (2):
ALSA: fireface: Fix integer overflow in transmit_midi_msg()
ALSA: firewire-tascam: Fix integer overflow in midi_port_work()
Gopal Tiwari (1):
nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN
Greg Kroah-Hartman (1):
Linux 5.10.9
Guido Günther (1):
regulator: bd718x7: Add enable times
Guo Ren (1):
riscv: Fixup CONFIG_GENERIC_TIME_VSYSCALL
Hans de Goede (1):
drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is no reset-deassert MIPI-sequence
Ignat Korchagin (4):
dm crypt: use GFP_ATOMIC when allocating crypto requests from softirq dm crypt: do not wait for backlogged crypto request completion in softirq dm crypt: do not call bio_endio() from the dm-crypt tasklet dm crypt: defer decryption to a tasklet if interrupts disabled
Imre Deak (1):
drm/i915/icl: Fix initing the DSI DSC power refcount during HW readout
Israel Rukshin (2):
nvmet-rdma: Fix list_del corruption on queue establishment failure
nvmet-rdma: Fix NULL deref when setting pi_enable and traddr INADDR_ANY
James Smart (1):
nvme-fc: avoid calling _nvme_fc_abort_outstanding_ios from interrupt context
Jan Kara (2):
bfq: Fix computation of shallow depth
ext4: fix superblock checksum failure when setting password salt
Jani Nikula (1):
drm/i915/backlight: fix CPU mode backlight takeover on LPT
Jann Horn (1):
mm, slub: consider rest of partial list if acquire_slab() fails
Jaroslav Kysela (1):
ASoC: AMD Renoir - add DMI entry for Lenovo ThinkPad X395
Jeremy Szu (1):
ALSA: hda/realtek: fix right sounds and mute/micmute LEDs for HP machines
Jerome Brunet (2):
ASoC: meson: axg-tdm-interface: fix loopback
ASoC: meson: axg-tdmin: fix axg skew offset
Jesper Dangaard Brouer (1):
netfilter: conntrack: fix reading nf_conntrack_buckets
Jiawei Gu (1):
drm/amdgpu: fix potential memory leak during navi12 deinitialization
John Garry (1):
blk-mq-debugfs: Add decode for BLK_MQ_F_TAG_HCTX_SHARED
John Millikin (1):
lib/raid6: Let $(UNROLL) rules work with macOS userland
Jonathan Lemon (1):
bpf: Save correct stopping point in file seq iteration
Jonathan Neuschäfer (1):
ALSA: doc: Fix reference to mixart.rst
Kefeng Wang (1):
riscv: Drop a duplicated PAGE_KERNEL_EXEC
Kevin Wang (1):
drm/amd/display: fix sysfs amdgpu_current_backlight_pwm NULL pointer issue
Lalithambika Krishnakumar (1):
nvme: avoid possible double fetch in handling CQE
Leon Romanovsky (1):
RDMA/restrack: Don't treat as an error allocation ID wrapping
Leon Schuermann (1):
r8152: Add Lenovo Powered USB-C Travel Hub
Linus Torvalds (4):
poll: fix performance regression due to out-of-line __put_user()
mm: fix clear_refs_write locking
mm: don't play games with pinned pages in clear_page_refs
mm: don't put pinned pages into the swap cache
Linus Walleij (1):
ARM: dts: ux500/golden: Set display max brightness
Lu Baolu (3):
iommu/vt-d: Fix lockdep splat in sva bind()/unbind() iommu/vt-d: Update domain geometry in iommu_ops.at(de)tach_dev iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev()
Mark Bloch (1):
RDMA/mlx5: Fix wrong free of blue flame register on error
Masahiro Yamada (5):
ARC: build: remove non-existing bootpImage from KBUILD_IMAGE
ARC: build: add uImage.lzma to the top-level target
ARC: build: add boot_targets to PHONY
ARC: build: move symlink creation to arch/arc/Makefile to avoid race
kconfig: remove 'kvmconfig' and 'xenconfig' shorthands
Masami Hiramatsu (2):
tracing/kprobes: Do the notrace functions check without kprobes on ftrace tools/bootconfig: Add tracing_on support to helper scripts
Miaohe Lin (2):
mm/vmalloc.c: fix potential memory leak mm/hugetlb: fix potential missing huge page size info
Michael Chan (1):
bnxt_en: Improve stats context resource accounting with RDMA driver loaded.
Michael Ellerman (1):
net: ethernet: fs_enet: Add missing MODULE_LICENSE
Mike Snitzer (2):
dm raid: fix discard limits for raid1
dm: eliminate potential source of excessive kernel log noise
Mikulas Patocka (2):
dm integrity: fix flush with external metadata device dm integrity: fix the maximum number of arguments
Nick Hu (1):
riscv: Fix KASAN memory mapping.
Oded Gabbay (3):
habanalabs: adjust pci controller init to new firmware habanalabs/gaudi: retry loading TPC f/w on -EINTR
habanalabs: register to pci shutdown callback
Oz Shlomo (1):
net/mlx5e: CT: Use per flow counter when CT flow accounting is enabled
Parav Pandit (1):
IB/mlx5: Fix error unwinding when set_has_smi_cap fails
Paul Cercueil (1):
MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB
Paulo Alcantara (1):
cifs: fix interrupted close commands
Pavel Begunkov (5):
io_uring: don't take files/mm for a dead task
io_uring: drop mm and files after task_work_run
btrfs: fix async discard stall
btrfs: merge critical sections of discard lock in workfn
io_uring: drop file refs after task cancel
Peter Gonda (1):
x86/sev-es: Fix SEV-ES OUT/IN immediate opcode vc handling
Peter Robinson (1):
usb: typec: Fix copy paste error for NVIDIA alt-mode description
Po-Hsu Lin (1):
selftests: fix the return value for UDP GRO test
Prike Liang (1):
drm/amdgpu: add green_sardine device id (v2)
Qu Wenruo (1):
btrfs: reloc: fix wrong file extent type check to avoid false ENOENT
Randy Dunlap (1):
arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC
Rasmus Villemoes (1):
ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram
Rodrigo Siqueira (1):
Revert "drm/amd/display: Fixed Intermittent blue screen on OLED panel"
Roger Pau Monne (1):
xen/privcmd: allow fetching resource sizes
Sagi Grimberg (3):
nvme: don't intialize hwmon for discovery controllers
nvme-tcp: fix possible data corruption with bio merges
nvme-tcp: Fix warning with CONFIG_DEBUG_PREEMPT
Scott Mayhew (1):
NFS: Adjust fs_context error logging
Shawn Guo (1):
ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI
Song Liu (1):
bpf: Simplify task_file_seq_get_next()
Stanley Chu (1):
scsi: ufs: Fix possible power drain during system suspend
Su Yue (2):
btrfs: prevent NULL pointer dereference in extent_io_tree_panic
btrfs: tree-checker: check if chunk item end overflows
Theodore Ts'o (1):
ext4: don't leak old mountpoint samples
Thomas Hebb (1):
ASoC: dapm: remove widget from dirty list on free
Tom Rix (2):
cifs: check pointer before freeing
RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd()
Trond Myklebust (8):
pNFS: We want return-on-close to complete when evicting the inode
pNFS: Mark layout for return if return-on-close was not sent
pNFS: Stricter ordering of layoutget and layoutreturn NFS/pNFS: Don't call pnfs_free_bucket_lseg() before removing the request NFS/pNFS: Don't leak DS commits in pnfs_generic_retry_commit() NFS/pNFS: Fix a leak of the layout 'plh_outstanding' counter
NFS: nfs_delegation_find_inode_server must first reference the superblock
NFS: nfs_igrab_and_active must first reference the superblock
Uladzislau Rezki (Sony) (1):
rcu-tasks: Move RCU-tasks initialization to before early_initcall()
Uwe Kleine-König (1):
hwmon: (pwm-fan) Ensure that calculation doesn't discard big period values
Vasily Averin (1):
netfilter: ipset: fixes possible oops in mtype_resize
Voon Weifeng (1):
stmmac: intel: change all EHL/TGL to auto detect phy addr
Wei Liu (1):
x86/hyperv: check cpu mask after interrupt has been disabled
Will Deacon (1):
compiler.h: Raise minimum version of GCC to 5.1 for arm64
Xiaojian Du (1):
drm/amd/pm: fix the failure when change power profile for renoir
Xu Yilun (2):
spi: altera: fix return value for altera_spi_txrx()
spi: fix the divide by 0 error when calculating xfer waiting time
Yi Li (1):
ext4: use IS_ERR instead of IS_ERR_OR_NULL and set inode null when IS_ERR
YueHaibing (1):
net/mlx5: Fix passing zero to 'PTR_ERR'
[email protected] (1):
net: sunrpc: interpret the return value of kstrtou32 correctly
mengwang (1):
drm/amdgpu: add new device id for Renior
yangerkun (1):
ext4: fix bug for rename with RENAME_WHITEOUT
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/display/bridge/sii902x.txt +4 -0
@@ -8,6 +8,8 @@ Optional properties: - interrupts: describe the interrupt line used to inform the host about hotplug events. - reset-gpios: OF device-tree gpio specification for RST_N pin. + - iovcc-supply: I/O Supply Voltage (1.8V or 3.3V) + - cvcc12-supply: Digital Core Supply Voltage (1.2V) HDMI audio properties: - #sound-dai-cells: <0> or <1>. <0> if only i2s or spdif pin
@@ -54,6 +56,8 @@ Example: compatible = "sil,sii9022"; reg = <0x39>; reset-gpios = <&pioA 1 0>; + iovcc-supply = <&v3v3_hdmi>; + cvcc12-supply = <&v1v2_hdmi>; #sound-dai-cells = <0>; sil,i2s-data-lanes = < 0 1 2 >;
Documentation/sound/alsa-configuration.rst +1 -1
@@ -1501,7 +1501,7 @@ Module for Digigram miXart8 sound cards. This module supports multiple cards. Note: One miXart8 board will be represented as 4 alsa cards. -See MIXART.txt for details. +See Documentation/sound/cards/mixart.rst for details. When the driver is compiled as a module and the hotplug firmware is supported, the firmware data is loaded via hotplug automatically.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arc/Makefile +13 -7
@@ -102,16 +102,22 @@ libs-y += arch/arc/lib/ $(LIBGCC) boot := arch/arc/boot -#default target for make without any arguments. -KBUILD_IMAGE := $(boot)/bootpImage - -all: bootpImage -bootpImage: vmlinux - -boot_targets += uImage uImage.bin uImage.gz +boot_targets := uImage.bin uImage.gz uImage.lzma +PHONY += $(boot_targets) $(boot_targets): vmlinux $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ +uimage-default-y := uImage.bin +uimage-default-$(CONFIG_KERNEL_GZIP) := uImage.gz +uimage-default-$(CONFIG_KERNEL_LZMA) := uImage.lzma + +PHONY += uImage +uImage: $(uimage-default-y) + @ln -sf $< $(boot)/uImage + @$(kecho) ' Image $(boot)/uImage is ready' + +CLEAN_FILES += $(boot)/uImage + archclean: $(Q)$(MAKE) $(clean)=$(boot)
arch/arc/boot/Makefile +1 -10
@@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 -targets := vmlinux.bin vmlinux.bin.gz uImage +targets := vmlinux.bin vmlinux.bin.gz # uImage build relies on mkimage being availble on your host for ARC target # You will need to build u-boot for ARC, rename mkimage to arc-elf32-mkimage
@@ -13,11 +13,6 @@ LINUX_START_TEXT = $$(readelf -h vmlinux | \ UIMAGE_LOADADDR = $(CONFIG_LINUX_LINK_BASE) UIMAGE_ENTRYADDR = $(LINUX_START_TEXT) -suffix-y := bin -suffix-$(CONFIG_KERNEL_GZIP) := gz -suffix-$(CONFIG_KERNEL_LZMA) := lzma - -targets += uImage targets += uImage.bin targets += uImage.gz targets += uImage.lzma
@@ -42,7 +37,3 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE $(call if_changed,uimage,lzma) - -$(obj)/uImage: $(obj)/uImage.$(suffix-y) - @ln -sf $(notdir $<) $@ - @echo ' Image $@ is ready'
arch/arc/include/asm/page.h +1 -0
@@ -10,6 +10,7 @@#ifndef __ASSEMBLY__#define clear_page (paddr) memset((paddr), 0, PAGE_SIZE) +#define copy_user_page (to, from, vaddr, pg) copy_page(to, from)#define copy_page (to, from) memcpy((to), (from), PAGE_SIZE)struct vm_area_struct ;
arch/arm/boot/dts/picoxcell-pc3x2.dtsi +4 -0
@@ -45,18 +45,21 @@ paxi { emac: gem@30000 { compatible = "cadence,gem"; reg = <0x30000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <31>; }; dmac1: dmac@40000 { compatible = "snps,dw-dmac"; reg = <0x40000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <25>; }; dmac2: dmac@50000 { compatible = "snps,dw-dmac"; reg = <0x50000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <26>; };
@@ -233,6 +236,7 @@ ebi@50000000 { axi2pico@c0000000 { compatible = "picochip,axi2pico-pc3x2"; reg = <0xc0000000 0x10000>; + interrupt-parent = <&vic0>; interrupts = <13 14 15 16 17 18 19 20 21>; }; };
arch/arm/boot/dts/ste-ux500-samsung-golden.dts +1 -0
@@ -326,6 +326,7 @@ dsi-controller@a0351000 { panel@0 { compatible = "samsung,s6e63m0"; reg = <0>; + max-brightness = <15>; vdd3-supply = <&panel_reg_3v0>; vci-supply = <&panel_reg_1v8>; reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
arch/arm/mach-omap2/pmic-cpcap.c +1 -1
@@ -71,7 +71,7 @@ static struct omap_voltdm_pmic omap_cpcap_iva = { .vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN, .vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX, .vddmin = 900000, - .vddmax = 1350000, + .vddmax = 1375000, .vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US, .i2c_slave_addr = 0x44, .volt_reg_addr = 0x0,
arch/mips/boot/compressed/decompress.c +2 -1
@@ -13,6 +13,7 @@#include <linux/libfdt.h> #include <asm/addrspace.h> +#include <asm/unaligned.h> /* * These two variables specify the free mem region
@@ -117,7 +118,7 @@ void decompress_kernel(unsigned long boot_heap_start) dtb_size =fdt_totalsize ((void *)&__appended_dtb);/* last four bytes is always image size in little endian */ - image_size =le32_to_cpup ((void *)&__image_end -4 ); + image_size =get_unaligned_le32 ((void *)&__image_end -4 );/* copy dtb to where the booted kernel will expect it */ memcpy((void *)VMLINUX_LOAD_ADDRESS_ULL + image_size,
arch/mips/kernel/binfmt_elfn32.c +7 -0
@@ -103,4 +103,11 @@ jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value)#undef ns_to_kernel_old_timeval#define ns_to_kernel_old_timeval ns_to_old_timeval32 +/* +* Some data types as stored in coredump. +*/ +#define user_long_t compat_long_t +#define user_siginfo_t compat_siginfo_t +#define copy_siginfo_to_external copy_siginfo_to_external32 +#include "../../../fs/binfmt_elf.c"
arch/mips/kernel/binfmt_elfo32.c +7 -0
@@ -106,4 +106,11 @@ jiffies_to_old_timeval32(unsigned long jiffies, struct old_timeval32 *value)#undef ns_to_kernel_old_timeval#define ns_to_kernel_old_timeval ns_to_old_timeval32 +/* +* Some data types as stored in coredump. +*/ +#define user_long_t compat_long_t +#define user_siginfo_t compat_siginfo_t +#define copy_siginfo_to_external copy_siginfo_to_external32 +#include "../../../fs/binfmt_elf.c"
arch/mips/kernel/relocate.c +8 -2
@@ -187,8 +187,14 @@ static int __init relocate_exception_table(long offset)static inline __init unsigned long rotate_xor (unsigned long hash,const void *area,size_t size) { -size_t i; -unsigned long *ptr = (unsigned long *)area; +const typeof (hash) *ptr =PTR_ALIGN (area,sizeof (hash)); +size_t diff, i; + + diff = (void *)ptr - area; +if (unlikely (size < diff +sizeof (hash))) +return hash; + + size =ALIGN_DOWN (size - diff,sizeof (hash));for (i =0 ; i < size /sizeof (hash); i++) {/* Rotate by odd number of bits and XOR. */
arch/mips/lib/uncached.c +3 -1
@@ -37,10 +37,12 @@*/ unsigned long run_uncached (void *func) { - registerlong sp __asm__("$sp" ); registerlong ret __asm__("$2" );long lfunc = (long )func, ufunc;long usp; +long sp; + + __asm__("move %0, $sp" :"=r" (sp));if (sp >= (long )CKSEG0 && sp < (long )CKSEG2 ) usp =CKSEG1ADDR (sp);
arch/mips/mm/c-r4k.c +1 -1
@@ -1609,7 +1609,7 @@ static void __init loongson2_sc_init(void) c->options |=MIPS_CPU_INCLUSIVE_CACHES ; } -static void __init loongson3_sc_init (void ) +static void loongson3_sc_init (void ) {struct cpuinfo_mips *c = ¤t_cpu_data;unsigned int config2, lsize;
arch/mips/mm/sc-mips.c +2 -2
@@ -146,7 +146,7 @@ static inline int mips_sc_is_activated(struct cpuinfo_mips *c)return 1 ; } -static int __init mips_sc_probe_cm3 (void ) +static int mips_sc_probe_cm3 (void ) {struct cpuinfo_mips *c = ¤t_cpu_data;unsigned long cfg =read_gcr_l2_config ();
@@ -180,7 +180,7 @@ static int __init mips_sc_probe_cm3(void)return 0 ; } -static inline int __init mips_sc_probe (void ) +static inline int mips_sc_probe (void ) {struct cpuinfo_mips *c = ¤t_cpu_data;unsigned int config1, config2;
arch/riscv/include/asm/pgtable.h +0 -1
@@ -99,7 +99,6 @@ | _PAGE_DIRTY)#define PAGE_KERNEL __pgprot(_PAGE_KERNEL) -#define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL | _PAGE_EXEC)#define PAGE_KERNEL_READ __pgprot(_PAGE_KERNEL & ~_PAGE_WRITE)#define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL | _PAGE_EXEC)#define PAGE_KERNEL_READ_EXEC __pgprot((_PAGE_KERNEL & ~_PAGE_WRITE) \
arch/riscv/include/asm/vdso.h +1 -1
@@ -10,7 +10,7 @@#include <linux/types.h> -#ifndef GENERIC_TIME_VSYSCALL +#ifndef CONFIG_GENERIC_TIME_VSYSCALL struct vdso_data { };#endif
arch/riscv/kernel/entry.S +4 -11
@@ -124,15 +124,15 @@ skip_context_tracking: REG_L a1, (a1) jr a1 1: -#ifdef CONFIG_TRACE_IRQFLAGS - call trace_hardirqs_on -#endif /* * Exceptions run with interrupts enabled or disabled depending on the * state of SR_PIE in m/sstatus. */ andi t0, s1, SR_PIE beqz t0, 1f +#ifdef CONFIG_TRACE_IRQFLAGS + call trace_hardirqs_on +#endif csrs CSR_STATUS, SR_IE 1:
@@ -186,14 +186,7 @@ check_syscall_nr: * Syscall number held in a7. * If syscall number is above allowed value, redirect to ni_syscall. */ - bge a7, t0, 1f - /* - * Check if syscall is rejected by tracer, i.e., a7 == -1. - * If yes, we pretend it was executed. - */ - li t1, -1 - beq a7, t1, ret_from_syscall_rejected - blt a7, t1, 1f + bgeu a7, t0, 1f /* Call syscall */ la s0, sys_call_table slli t0, a7, RISCV_LGPTR
arch/riscv/kernel/vdso.c +1 -1
@@ -12,7 +12,7 @@#include <linux/binfmts.h> #include <linux/err.h> #include <asm/page.h> -#ifdef GENERIC_TIME_VSYSCALL +#ifdef CONFIG_GENERIC_TIME_VSYSCALL #include <vdso/datapage.h> #else #include <asm/vdso.h>
arch/riscv/mm/kasan_init.c +2 -2
@@ -93,8 +93,8 @@ void __init kasan_init(void) VMALLOC_END));for_each_mem_range (i, &_start, &_end) { -void *start = (void *)_start; -void *end = (void *)_end; +void *start = (void *)__va (_start); +void *end = (void *)__va (_end);if (start >= end)break ;
arch/x86/hyperv/mmu.c +9 -3
@@ -66,11 +66,17 @@ static void hyperv_flush_tlb_others(const struct cpumask *cpus,if (!hv_hypercall_pg) goto do_native; -if (cpumask_empty (cpus)) -return ; -local_irq_save (flags); +/* +* Only check the mask _after_ interrupt has been disabled to avoid the +* mask changing under our feet. +*/ +if (cpumask_empty (cpus)) { +local_irq_restore (flags); +return ; + } + flush_pcpu = (struct hv_tlb_flush **)this_cpu_ptr (hyperv_pcpu_input_arg);
arch/x86/kernel/sev-es-shared.c +2 -2
@@ -305,14 +305,14 @@ static enum es_result vc_ioio_exitinfo(struct es_em_ctxt *ctxt, u64 *exitinfo)case 0xe4 :case 0xe5 : *exitinfo |=IOIO_TYPE_IN ; - *exitinfo |= (u64 )insn->immediate.value <<16 ; + *exitinfo |= (u8 )insn->immediate.value <<16 ;break ;/* OUT immediate opcodes */ case 0xe6 :case 0xe7 : *exitinfo |=IOIO_TYPE_OUT ; - *exitinfo |= (u64 )insn->immediate.value <<16 ; + *exitinfo |= (u8 )insn->immediate.value <<16 ;break ;/* IN register opcodes */
block/bfq-iosched.c +4 -4
@@ -6332,13 +6332,13 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,* limit 'something'. */ /* no more than 50% of tags for async I/O */ - bfqd->word_depths[0 ][0 ] =max ((1U << bt->sb.shift) >>1 ,1U ); + bfqd->word_depths[0 ][0 ] =max (bt->sb.depth >>1 ,1U );/* * no more than 75% of tags for sync writes (25% extra tags * w.r.t. async I/O, to prevent async I/O from starving sync * writes) */ - bfqd->word_depths[0 ][1 ] =max (((1U << bt->sb.shift) *3 ) >>2 ,1U ); + bfqd->word_depths[0 ][1 ] =max ((bt->sb.depth *3 ) >>2 ,1U );/* * In-word depths in case some bfq_queue is being weight-
@@ -6348,9 +6348,9 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,* shortage. */ /* no more than ~18% of tags for async I/O */ - bfqd->word_depths[1 ][0 ] =max (((1U << bt->sb.shift) *3 ) >>4 ,1U ); + bfqd->word_depths[1 ][0 ] =max ((bt->sb.depth *3 ) >>4 ,1U );/* no more than ~37% of tags for sync writes (~20% extra tags) */ - bfqd->word_depths[1 ][1 ] =max (((1U << bt->sb.shift) *6 ) >>4 ,1U ); + bfqd->word_depths[1 ][1 ] =max ((bt->sb.depth *6 ) >>4 ,1U );for (i =0 ; i <2 ; i++)for (j =0 ; j <2 ; j++)
block/blk-mq-debugfs.c +1 -0
@@ -246,6 +246,7 @@ static const char *const hctx_flag_name[] = {HCTX_FLAG_NAME (BLOCKING ),HCTX_FLAG_NAME (NO_SCHED ),HCTX_FLAG_NAME (STACKING ), + HCTX_FLAG_NAME(TAG_HCTX_SHARED), };#undef HCTX_FLAG_NAME
drivers/acpi/internal.h +1 -1
@@ -97,7 +97,7 @@ void acpi_scan_table_handler(u32 event, void *table, void *context);extern struct list_head acpi_bus_id_list;struct acpi_device_bus_id { -char bus_id[15 ]; +const char *bus_id;unsigned int instance_no;struct list_head node; };
drivers/acpi/scan.c +14 -1
@@ -486,6 +486,7 @@ static void acpi_device_del(struct acpi_device *device) acpi_device_bus_id->instance_no--; else {list_del (&acpi_device_bus_id->node); +kfree_const (acpi_device_bus_id->bus_id);kfree (acpi_device_bus_id); }break ;
@@ -674,7 +675,14 @@ int acpi_device_add(struct acpi_device *device, }if (!found) { acpi_device_bus_id = new_bus_id; -strcpy (acpi_device_bus_id->bus_id,acpi_device_hid (device)); + acpi_device_bus_id->bus_id = +kstrdup_const (acpi_device_hid (device),GFP_KERNEL ); +if (!acpi_device_bus_id->bus_id) { +pr_err (PREFIX "Memory allocation error for bus id\n" ); + result = -ENOMEM ; + goto err_free_new_bus_id; + } + acpi_device_bus_id->instance_no =0 ;list_add_tail (&acpi_device_bus_id->node, &acpi_bus_id_list); }
@@ -709,6 +717,11 @@ int acpi_device_add(struct acpi_device *device,if (device->parent)list_del (&device->node);list_del (&device->wakeup_list); + + err_free_new_bus_id: +if (!found) +kfree (new_bus_id); +mutex_unlock (&acpi_device_lock); err_detach:
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +3 -3
@@ -2524,11 +2524,11 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)if (adev->gmc.xgmi.num_physical_nodes >1 )amdgpu_xgmi_remove_device (adev); -amdgpu_amdkfd_device_fini (adev); -amdgpu_device_set_pg_state (adev,AMD_PG_STATE_UNGATE );amdgpu_device_set_cg_state (adev,AMD_CG_STATE_UNGATE ); +amdgpu_amdkfd_device_fini (adev); +/* need to disable SMC first */ for (i =0 ; i < adev->num_ip_blocks; i++) {if (!adev->ip_blocks[i].status.hw)
@@ -3008,7 +3008,7 @@ bool amdgpu_device_asic_has_dc_support(enum amd_asic_type asic_type)#endif default :if (amdgpu_dc >0 ) -DRM_INFO ("Display Core has been requested via kernel parameter " +DRM_INFO_ONCE ("Display Core has been requested via kernel parameter " "but isn't supported by ASIC, ignoring\n" );return false; }
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +2 -0
@@ -1076,6 +1076,8 @@ static const struct pci_device_id pciidlist[] = {/* Renoir */ {0x1002, 0x1636, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, + {0x1002, 0x1638, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU}, + {0x1002, 0x164C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RENOIR|AMD_IS_APU},/* Navi12 */ {0x1002, 0x7360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI12},
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +14 -4
@@ -1283,8 +1283,12 @@ static int psp_hdcp_terminate(struct psp_context *psp)if (amdgpu_sriov_vf (psp->adev))return 0 ; -if (!psp->hdcp_context.hdcp_initialized) -return 0 ; +if (!psp->hdcp_context.hdcp_initialized) { +if (psp->hdcp_context.hdcp_shared_buf) + goto out; +else +return 0 ; + } ret =psp_hdcp_unload (psp);if (ret)
@@ -1292,6 +1296,7 @@ static int psp_hdcp_terminate(struct psp_context *psp) psp->hdcp_context.hdcp_initialized = false; +out:/* free hdcp shared memory */ amdgpu_bo_free_kernel(&psp->hdcp_context.hdcp_shared_bo, &psp->hdcp_context.hdcp_shared_mc_addr,
@@ -1430,8 +1435,12 @@ static int psp_dtm_terminate(struct psp_context *psp)if (amdgpu_sriov_vf (psp->adev))return 0 ; -if (!psp->dtm_context.dtm_initialized) -return 0 ; +if (!psp->dtm_context.dtm_initialized) { +if (psp->dtm_context.dtm_shared_buf) + goto out; +else +return 0 ; + } ret =psp_dtm_unload (psp);if (ret)
@@ -1439,6 +1448,7 @@ static int psp_dtm_terminate(struct psp_context *psp) psp->dtm_context.dtm_initialized = false; +out:/* free hdcp shared memory */ amdgpu_bo_free_kernel(&psp->dtm_context.dtm_shared_bo, &psp->dtm_context.dtm_shared_mc_addr,
drivers/gpu/drm/amd/amdgpu/soc15.c +2 -1
@@ -1242,7 +1242,8 @@ static int soc15_common_early_init(void *handle)break ;case CHIP_RENOIR : adev->asic_funcs = &soc15_asic_funcs; -if (adev->pdev->device ==0x1636 ) +if ((adev->pdev->device ==0x1636 ) || + (adev->pdev->device ==0x164c )) adev->apu_flags |=AMD_APU_IS_RENOIR ;else adev->apu_flags |=AMD_APU_IS_GREEN_SARDINE ;
drivers/gpu/drm/amd/display/dc/core/dc_link.c +6 -1
@@ -2471,9 +2471,14 @@ enum dc_status dc_link_validate_mode_timing(static struct abm *get_abm_from_stream_res (const struct dc_link *link) {int i; -struct dc *dc = link->ctx->dc; +struct dc *dc =NULL ;struct abm *abm =NULL ; +if (!link || !link->ctx) +return NULL ; + + dc = link->ctx->dc; +for (i =0 ; i <MAX_PIPES ; i++) {struct pipe_ctx pipe_ctx = dc->current_state->res_ctx.pipe_ctx[i];struct dc_stream_state *stream = pipe_ctx.stream;
drivers/gpu/drm/amd/display/dc/dml/dcn20/display_mode_vba_20v2.c +6 -5
@@ -2635,14 +2635,15 @@ static void dml20v2_DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndP }if (mode_lib->vba.DRAMClockChangeSupportsVActive && - mode_lib->vba.MinActiveDRAMClockChangeMargin >60 && - mode_lib->vba.PrefetchMode[mode_lib->vba.VoltageLevel][mode_lib->vba.maxMpcComb] ==0 ) { + mode_lib->vba.MinActiveDRAMClockChangeMargin >60 ) { mode_lib->vba.DRAMClockChangeWatermark +=25 ;for (k =0 ; k < mode_lib->vba.NumberOfActivePlanes; ++k) { -if (mode_lib->vba.DRAMClockChangeWatermark > -dml_max (mode_lib->vba.StutterEnterPlusExitWatermark, mode_lib->vba.UrgentWatermark)) - mode_lib->vba.MinTTUVBlank[k] +=25 ; +if (mode_lib->vba.PrefetchMode[mode_lib->vba.VoltageLevel][mode_lib->vba.maxMpcComb] ==0 ) { +if (mode_lib->vba.DRAMClockChangeWatermark > +dml_max (mode_lib->vba.StutterEnterPlusExitWatermark, mode_lib->vba.UrgentWatermark)) + mode_lib->vba.MinTTUVBlank[k] +=25 ; + } } mode_lib->vba.DRAMClockChangeSupport[0 ][0 ] = dm_dram_clock_change_vactive;
drivers/gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c +1 -0
@@ -188,6 +188,7 @@ static int renoir_get_dpm_clk_limited(struct smu_context *smu, enum smu_clk_typereturn -EINVAL ; *freq = clk_table->SocClocks[dpm_level].Freq;break ; +case SMU_UCLK :case SMU_MCLK :if (dpm_level >=NUM_FCLK_DPM_LEVELS )return -EINVAL ;
drivers/gpu/drm/amd/pm/swsmu/smu12/smu_v12_0.c +1 -0
@@ -222,6 +222,7 @@ int smu_v12_0_set_soft_freq_limited_range(struct smu_context *smu, enum smu_clk_break ;case SMU_FCLK :case SMU_MCLK : +case SMU_UCLK : ret =smu_cmn_send_smc_msg_with_param (smu, SMU_MSG_SetHardMinFclkByFreq, min,NULL );if (ret)return ret;
drivers/gpu/drm/bridge/sii902x.c +66 -34
151 lines not on this page · raw message
drivers/gpu/drm/i915/Makefile +1 -0
@@ -38,6 +38,7 @@ i915-y += i915_drv.o \ i915_config.o \ i915_irq.o \ i915_getparam.o \ + i915_mitigations.o \ i915_params.o \ i915_pci.o \ i915_scatterlist.o \
drivers/gpu/drm/i915/display/icl_dsi.c +0 -4
@@ -1585,10 +1585,6 @@ static void gen11_dsi_get_power_domains(struct intel_encoder *encoder,get_dsi_io_power_domains (i915,enc_to_intel_dsi (encoder)); - -if (crtc_state->dsc.compression_enable) -intel_display_power_get (i915, -intel_dsc_power_domain (crtc_state)); } static bool gen11_dsi_get_hw_state(struct intel_encoder *encoder,
drivers/gpu/drm/i915/display/intel_panel.c +5 -4
@@ -1650,16 +1650,13 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus val =pch_get_backlight (connector); else val =lpt_get_backlight (connector); - val =intel_panel_compute_brightness (connector, val); - panel->backlight.level =clamp (val, panel->backlight.min, - panel->backlight.max);if (cpu_mode) {drm_dbg_kms (&dev_priv->drm,"CPU backlight register was enabled, switching to PCH override\n" );/* Write converted CPU PWM value to PCH override register */ -lpt_set_backlight (connector->base.state, panel->backlight.level); +lpt_set_backlight (connector->base.state, val);intel_de_write (dev_priv,BLC_PWM_PCH_CTL1 , pch_ctl1 |BLM_PCH_OVERRIDE_ENABLE );
@@ -1667,6 +1664,10 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus cpu_ctl2 & ~BLM_PWM_ENABLE); } + val =intel_panel_compute_brightness (connector, val); + panel->backlight.level =clamp (val, panel->backlight.min, + panel->backlight.max); +return 0 ; }
drivers/gpu/drm/i915/display/vlv_dsi.c +13 -3
@@ -812,10 +812,20 @@ static void intel_dsi_pre_enable(struct intel_atomic_state *state,intel_dsi_prepare (encoder, pipe_config);intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_POWER_ON ); -intel_dsi_msleep (intel_dsi, intel_dsi->panel_on_delay); -/* Deassert reset */ -intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_DEASSERT_RESET ); +/* +* Give the panel time to power-on and then deassert its reset. +* Depending on the VBT MIPI sequences version the deassert-seq +* may contain the necessary delay, intel_dsi_msleep() will skip +* the delay in that case. If there is no deassert-seq, then an +* unconditional msleep is used to give the panel time to power-on. +*/ +if (dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET ]) { +intel_dsi_msleep (intel_dsi, intel_dsi->panel_on_delay); +intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_DEASSERT_RESET ); + }else { +msleep (intel_dsi->panel_on_delay); + }if (IS_GEMINILAKE (dev_priv)) { glk_cold_boot =glk_dsi_enable_io (encoder);
drivers/gpu/drm/i915/gt/gen7_renderclear.c +94 -63
270 lines not on this page · raw message
drivers/gpu/drm/i915/gt/intel_ring_submission.c +4 -2
@@ -32,6 +32,7 @@#include "gen6_ppgtt.h" #include "gen7_renderclear.h" #include "i915_drv.h" +#include "i915_mitigations.h" #include "intel_breadcrumbs.h" #include "intel_context.h" #include "intel_gt.h"
@@ -885,7 +886,8 @@ static int switch_context(struct i915_request *rq)GEM_BUG_ON (HAS_EXECLISTS (engine->i915));if (engine->wa_ctx.vma && ce != engine->kernel_context) { -if (engine->wa_ctx.vma->private != ce) { +if (engine->wa_ctx.vma->private != ce && +i915_mitigate_clear_residuals ()) { ret =clear_residuals (rq);if (ret)return ret;
@@ -1289,7 +1291,7 @@ int intel_ring_submission_setup(struct intel_engine_cs *engine)GEM_BUG_ON (timeline->hwsp_ggtt != engine->status_page.vma); -if (IS_HASWELL (engine->i915) && engine->class ==RENDER_CLASS ) { +if (IS_GEN (engine->i915,7 ) && engine->class ==RENDER_CLASS ) { err =gen7_ctx_switch_bb_init (engine);if (err) goto err_ring_unpin;
drivers/gpu/drm/i915/i915_mitigations.c new file +146 -0
146 lines not on this page · raw message
drivers/gpu/drm/i915/i915_mitigations.h new file +13 -0
@@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: MIT */ +/* +* Copyright © 2021 Intel Corporation +*/ + +#ifndef __I915_MITIGATIONS_H__ +#define __I915_MITIGATIONS_H__ + +#include <linux/types.h> + +bool i915_mitigate_clear_residuals (void ); + +#endif /* __I915_MITIGATIONS_H__ */
drivers/gpu/drm/msm/msm_drv.c +4 -4
@@ -444,14 +444,14 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)drm_mode_config_init (ddev); -/* Bind all our sub-components: */ - ret =component_bind_all (dev, ddev); + ret =msm_init_vram (ddev);if (ret) goto err_destroy_mdss; - ret =msm_init_vram (ddev); +/* Bind all our sub-components: */ + ret =component_bind_all (dev, ddev);if (ret) - goto err_msm_uninit; + goto err_destroy_mdss;dma_set_max_seg_size (dev,UINT_MAX );
drivers/hwmon/pwm-fan.c +11 -1
@@ -324,8 +324,18 @@ static int pwm_fan_probe(struct platform_device *pdev) ctx->pwm_value =MAX_PWM ; -/* Set duty cycle to maximum allowed and enable PWM output */ pwm_init_state (ctx->pwm, &state); +/* +* __set_pwm assumes that MAX_PWM * (period - 1) fits into an unsigned +* long. Check this here to prevent the fan running at a too low +* frequency. +*/ +if (state.period >ULONG_MAX /MAX_PWM +1 ) { +dev_err (dev,"Configured period too big\n" ); +return -EINVAL ; + } + +/* Set duty cycle to maximum allowed and enable PWM output */ state.duty_cycle = ctx->pwm->args.period -1 ; state.enabled = true;
drivers/infiniband/core/restrack.c +1 -0
@@ -244,6 +244,7 @@ void rdma_restrack_add(struct rdma_restrack_entry *res) }else { ret =xa_alloc_cyclic (&rt->xa, &res->id, res, xa_limit_32b, &rt->next_id,GFP_KERNEL ); + ret = (ret <0 ) ? ret :0 ; }if (!ret)
drivers/infiniband/hw/mlx5/main.c +2 -2
@@ -3950,7 +3950,7 @@ static int mlx5_ib_stage_init_init(struct mlx5_ib_dev *dev) err =set_has_smi_cap (dev);if (err) -return err; + goto err_mp;if (!mlx5_core_mp_enabled (mdev)) {for (i =1 ; i <= dev->num_ports; i++) {
@@ -4362,7 +4362,7 @@ static int mlx5_ib_stage_bfrag_init(struct mlx5_ib_dev *dev) err =mlx5_alloc_bfreg (dev->mdev, &dev->fp_bfreg, false, true);if (err) -mlx5_free_bfreg (dev->mdev, &dev->fp_bfreg); +mlx5_free_bfreg (dev->mdev, &dev->bfreg);return err; }
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +1 -1
@@ -434,9 +434,9 @@ static void ocrdma_dealloc_ucontext_pd(struct ocrdma_ucontext *uctx)pr_err ("%s(%d) Freeing in use pdid=0x%x.\n" , __func__, dev->id, pd->id); } -kfree (uctx->cntxt_pd); uctx->cntxt_pd =NULL ;_ocrdma_dealloc_pd (dev, pd); +kfree (pd); }static struct ocrdma_pd *ocrdma_get_ucontext_pd (struct ocrdma_ucontext *uctx)
drivers/infiniband/hw/usnic/usnic_ib_verbs.c +3 -0
@@ -214,6 +214,7 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev, }usnic_uiom_free_dev_list (dev_list); + dev_list =NULL ; }/* Try to find resources on an unused vf */
@@ -239,6 +240,8 @@ find_free_vf_and_create_qp_grp(struct usnic_ib_dev *us_ibdev, qp_grp_check:if (IS_ERR_OR_NULL (qp_grp)) {usnic_err ("Failed to allocate qp_grp\n" ); +if (usnic_ib_share_vf) +usnic_uiom_free_dev_list (dev_list);return ERR_PTR (qp_grp ?PTR_ERR (qp_grp) : -ENOMEM ); }return qp_grp;
drivers/iommu/intel/iommu.c +14 -2
@@ -67,8 +67,8 @@#define MAX_AGAW_WIDTH 64#define MAX_AGAW_PFN_WIDTH (MAX_AGAW_WIDTH - VTD_PAGE_SHIFT) -#define __DOMAIN_MAX_PFN (gaw) ((((uint64_t)1) << (gaw-VTD_PAGE_SHIFT)) - 1) -#define __DOMAIN_MAX_ADDR (gaw) ((((uint64_t)1) << gaw) - 1) +#define __DOMAIN_MAX_PFN (gaw) ((((uint64_t)1) << ((gaw) - VTD_PAGE_SHIFT)) - 1) +#define __DOMAIN_MAX_ADDR (gaw) ((((uint64_t)1) << (gaw)) - 1)/* We limit DOMAIN_MAX_PFN to fit in an unsigned long, and DOMAIN_MAX_ADDR to match. That way, we can use 'unsigned long' for PFNs with impunity. */
@@ -739,6 +739,18 @@ static void domain_update_iommu_cap(struct dmar_domain *domain)*/ if (domain->nid ==NUMA_NO_NODE ) domain->nid =domain_update_device_node (domain); + +/* +* First-level translation restricts the input-address to a +* canonical address (i.e., address bits 63:N have the same +* value as address bit [N-1], where N is 48-bits with 4-level +* paging and 57-bits with 5-level paging). Hence, skip bit +* [N-1]. +*/ +if (domain_use_first_level (domain)) + domain->domain.geometry.aperture_end =__DOMAIN_MAX_ADDR (domain->gaw -1 ); +else + domain->domain.geometry.aperture_end =__DOMAIN_MAX_ADDR (domain->gaw); } struct context_entry *iommu_context_addr(struct intel_iommu *iommu, u8 bus,
drivers/iommu/intel/svm.c +28 -8
@@ -118,8 +118,10 @@ void intel_svm_check(struct intel_iommu *iommu) iommu->flags |=VTD_FLAG_SVM_CAPABLE ; } -static void intel_flush_svm_range_dev (struct intel_svm *svm,struct intel_svm_dev *sdev, -unsigned long address,unsigned long pages,int ih) +static void __flush_svm_range_dev (struct intel_svm *svm, +struct intel_svm_dev *sdev, +unsigned long address, +unsigned long pages,int ih) {struct qi_desc desc;
@@ -170,6 +172,22 @@ static void intel_flush_svm_range_dev (struct intel_svm *svm, struct intel_svm_d } } +static void intel_flush_svm_range_dev (struct intel_svm *svm, +struct intel_svm_dev *sdev, +unsigned long address, +unsigned long pages,int ih) +{ +unsigned long shift =ilog2 (__roundup_pow_of_two (pages)); +unsigned long align = (1ULL << (VTD_PAGE_SHIFT + shift)); +unsigned long start =ALIGN_DOWN (address, align); +unsigned long end =ALIGN (address + (pages <<VTD_PAGE_SHIFT ), align); + +while (start < end) { +__flush_svm_range_dev (svm, sdev, start, align >>VTD_PAGE_SHIFT , ih); + start += align; + } +} +static void intel_flush_svm_range (struct intel_svm *svm,unsigned long address,unsigned long pages,int ih) {
@@ -281,6 +299,7 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,struct dmar_domain *dmar_domain;struct device_domain_info *info;struct intel_svm *svm =NULL ; +unsigned long iflags;int ret =0 ;if (WARN_ON (!iommu) || !data)
@@ -382,12 +401,12 @@ int intel_svm_bind_gpasid(struct iommu_domain *domain, struct device *dev,* each bind of a new device even with an existing PASID, we need to * call the nested mode setup function here. */ -spin_lock (&iommu->lock); +spin_lock_irqsave (&iommu->lock, iflags); ret =intel_pasid_setup_nested (iommu, dev, (pgd_t *)(uintptr_t )data->gpgd, data->hpasid, &data->vendor.vtd, dmar_domain, data->addr_width); -spin_unlock (&iommu->lock); +spin_unlock_irqrestore (&iommu->lock, iflags);if (ret) {dev_err_ratelimited (dev,"Failed to set up PASID %llu in nested mode, Err %d\n" , data->hpasid, ret);
@@ -487,6 +506,7 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags,struct device_domain_info *info;struct intel_svm_dev *sdev;struct intel_svm *svm =NULL ; +unsigned long iflags;int pasid_max;int ret;
@@ -606,14 +626,14 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags, } } -spin_lock (&iommu->lock); +spin_lock_irqsave (&iommu->lock, iflags); ret =intel_pasid_setup_first_level (iommu, dev, mm ? mm->pgd : init_mm.pgd, svm->pasid,FLPT_DEFAULT_DID , (mm ?0 :PASID_FLAG_SUPERVISOR_MODE ) | (cpu_feature_enabled (X86_FEATURE_LA57 ) ?PASID_FLAG_FL5LP :0 )); -spin_unlock (&iommu->lock); +spin_unlock_irqrestore (&iommu->lock, iflags);if (ret) {if (mm)mmu_notifier_unregister (&svm->notifier, mm);
@@ -633,14 +653,14 @@ intel_svm_bind_mm(struct device *dev, unsigned int flags,* Binding a new device with existing PASID, need to setup * the PASID entry. */ -spin_lock (&iommu->lock); +spin_lock_irqsave (&iommu->lock, iflags); ret =intel_pasid_setup_first_level (iommu, dev, mm ? mm->pgd : init_mm.pgd, svm->pasid,FLPT_DEFAULT_DID , (mm ?0 :PASID_FLAG_SUPERVISOR_MODE ) | (cpu_feature_enabled (X86_FEATURE_LA57 ) ?PASID_FLAG_FL5LP :0 )); -spin_unlock (&iommu->lock); +spin_unlock_irqrestore (&iommu->lock, iflags);if (ret) {kfree (sdev); goto out;
drivers/isdn/mISDN/Kconfig +1 -0
@@ -13,6 +13,7 @@ if MISDN != n config MISDN_DSP tristate "Digital Audio Processing of transparent data" depends on MISDN + select BITREVERSE help Enable support for digital audio processing capability.
drivers/md/Kconfig +1 -0
@@ -602,6 +602,7 @@ config DM_ZONED tristate "Drive-managed zoned block device target support" depends on BLK_DEV_DM depends on BLK_DEV_ZONED + select CRC32 help This device-mapper target takes a host-managed or host-aware zoned block device and exposes most of its capacity as a regular block
drivers/md/dm-bufio.c +6 -0
@@ -1534,6 +1534,12 @@ sector_t dm_bufio_get_device_size(struct dm_bufio_client *c) }EXPORT_SYMBOL_GPL (dm_bufio_get_device_size); +struct dm_io_client *dm_bufio_get_dm_io_client (struct dm_bufio_client *c) +{ +return c->dm_io; +} +EXPORT_SYMBOL_GPL (dm_bufio_get_dm_io_client); +sector_t dm_bufio_get_block_number (struct dm_buffer *b) {return b->block;
drivers/md/dm-crypt.c +152 -18
264 lines not on this page · raw message
drivers/md/dm-integrity.c +50 -12
124 lines not on this page · raw message
drivers/md/dm-raid.c +3 -3
@@ -3730,10 +3730,10 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)blk_limits_io_opt (limits, chunk_size_bytes *mddev_data_stripes (rs));/* -* RAID1 and RAID10 personalities require bio splitting, -* RAID0/4/5/6 don't and process large discard bios properly. +* RAID0 and RAID10 personalities require bio splitting, +* RAID1/4/5/6 don't and process large discard bios properly. */ -if (rs_is_raid1 (rs) ||rs_is_raid10 (rs)) { +if (rs_is_raid0 (rs) ||rs_is_raid10 (rs)) { limits->discard_granularity = chunk_size_bytes; limits->max_discard_sectors = rs->md.chunk_sectors; }
drivers/md/dm-snap.c +24 -0
@@ -141,6 +141,11 @@ struct dm_snapshot {* for them to be committed. */ struct bio_list bios_queued_during_merge; + +/* +* Flush data after merge. +*/ +struct bio flush_bio; };/*
@@ -1121,6 +1126,17 @@ static void snapshot_merge_next_chunks(struct dm_snapshot *s)static void error_bios (struct bio *bio); +static int flush_data (struct dm_snapshot *s) +{ +struct bio *flush_bio = &s->flush_bio; + +bio_reset (flush_bio); +bio_set_dev (flush_bio, s->origin->bdev); + flush_bio->bi_opf =REQ_OP_WRITE |REQ_PREFLUSH ; + +return submit_bio_wait (flush_bio); +} +static void merge_callback (int read_err,unsigned long write_err,void *context) {struct dm_snapshot *s = context;
@@ -1134,6 +1150,11 @@ static void merge_callback(int read_err, unsigned long write_err, void *context) goto shut; } +if (flush_data (s) <0 ) { +DMERR ("Flush after merge failed: shutting down merge" ); + goto shut; + } +if (s->store->type->commit_merge (s->store, s->num_merging_chunks) <0 ) {DMERR ("Write error in exception store: shutting down merge" );
@@ -1318,6 +1339,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) s->first_merging_chunk =0 ; s->num_merging_chunks =0 ;bio_list_init (&s->bios_queued_during_merge); +bio_init (&s->flush_bio,NULL ,0 );/* Allocate hash table for COW data */ if (init_hash_tables (s)) {
@@ -1504,6 +1526,8 @@ static void snapshot_dtr(struct dm_target *ti)dm_exception_store_destroy (s->store); +bio_uninit (&s->flush_bio); +dm_put_device (ti, s->cow);dm_put_device (ti, s->origin);
drivers/md/dm.c +1 -1
@@ -562,7 +562,7 @@ static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,* subset of the parent bdev; require extra privileges. */ if (!capable (CAP_SYS_RAWIO )) { -DMWARN_LIMIT ( +DMDEBUG_LIMIT ("%s: sending ioctl %x to DM device without required privilege." , current->comm, cmd); r = -ENOIOCTLCMD ;
drivers/misc/habanalabs/common/device.c +2 -0
@@ -1027,6 +1027,7 @@ int hl_device_reset(struct hl_device *hdev, bool hard_reset, GFP_KERNEL);if (!hdev->kernel_ctx) { rc = -ENOMEM ; +hl_mmu_fini (hdev); goto out_err; }
@@ -1038,6 +1039,7 @@ int hl_device_reset(struct hl_device *hdev, bool hard_reset, "failed to init kernel ctx in hard reset\n");kfree (hdev->kernel_ctx); hdev->kernel_ctx =NULL ; +hl_mmu_fini (hdev); goto out_err; } }
drivers/misc/habanalabs/common/habanalabs_drv.c +1 -0
@@ -528,6 +528,7 @@ static struct pci_driver hl_pci_driver = { .id_table = ids, .probe = hl_pci_probe, .remove = hl_pci_remove, + .shutdown = hl_pci_remove, .driver.pm = &hl_pm_ops, .err_handler = &hl_pci_err_handler, };
drivers/misc/habanalabs/common/pci.c +17 -11
@@ -130,10 +130,8 @@ static int hl_pci_elbi_write(struct hl_device *hdev, u64 addr, u32 data)if ((val &PCI_CONFIG_ELBI_STS_MASK ) ==PCI_CONFIG_ELBI_STS_DONE )return 0 ; -if (val &PCI_CONFIG_ELBI_STS_ERR ) { -dev_err (hdev->dev,"Error writing to ELBI\n" ); +if (val &PCI_CONFIG_ELBI_STS_ERR )return -EIO ; - }if (!(val &PCI_CONFIG_ELBI_STS_MASK )) {dev_err (hdev->dev,"ELBI write didn't finish in time\n" );
@@ -160,8 +158,12 @@ int hl_pci_iatu_write(struct hl_device *hdev, u32 addr, u32 data) dbi_offset = addr &0xFFF ; - rc =hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0x00300000 ); - rc |=hl_pci_elbi_write (hdev, prop->pcie_dbi_base_address + dbi_offset, +/* Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail +* in case the firmware security is enabled +*/ +hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0x00300000 ); + + rc =hl_pci_elbi_write (hdev, prop->pcie_dbi_base_address + dbi_offset, data);if (rc)
@@ -244,9 +246,11 @@ int hl_pci_set_inbound_region(struct hl_device *hdev, u8 region, rc |=hl_pci_iatu_write (hdev, offset +0x4 , ctrl_reg_val); -/* Return the DBI window to the default location */ - rc |=hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0 ); - rc |=hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr +4 ,0 ); +/* Return the DBI window to the default location +* Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail +* in case the firmware security is enabled +*/ +hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0 );if (rc) dev_err(hdev->dev, "failed to map bar %u to 0x%08llx\n",
@@ -294,9 +298,11 @@ int hl_pci_set_outbound_region(struct hl_device *hdev,/* Enable */ rc |=hl_pci_iatu_write (hdev,0x004 ,0x80000000 ); -/* Return the DBI window to the default location */ - rc |=hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0 ); - rc |=hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr +4 ,0 ); +/* Return the DBI window to the default location +* Ignore result of writing to pcie_aux_dbi_reg_addr as it could fail +* in case the firmware security is enabled +*/ +hl_pci_elbi_write (hdev, prop->pcie_aux_dbi_reg_addr,0 );return rc; }
drivers/misc/habanalabs/gaudi/gaudi.c +10 -4
@@ -754,11 +754,17 @@ static int gaudi_init_tpc_mem(struct hl_device *hdev)size_t fw_size;void *cpu_addr;dma_addr_t dma_handle; -int rc; +int rc, count =5 ; +again: rc =request_firmware (&fw,GAUDI_TPC_FW_FILE , hdev->dev); +if (rc == -EINTR && count-- >0 ) { +msleep (50 ); + goto again; + } +if (rc) { -dev_err (hdev->dev,"Firmware file %s is not found!\n" , +dev_err (hdev->dev,"Failed to load firmware file %s\n" ,GAUDI_TPC_FW_FILE ); goto out; }
@@ -2893,7 +2899,7 @@ static int gaudi_init_cpu_queues(struct hl_device *hdev, u32 cpu_timeout)static void gaudi_pre_hw_init (struct hl_device *hdev) {/* Perform read from the device to make sure device is up */ -RREG32 (mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG); +RREG32 (mmHW_STATE);/* Set the access through PCI bars (Linux driver only) as * secured
@@ -2996,7 +3002,7 @@ static int gaudi_hw_init(struct hl_device *hdev) }/* Perform read from the device to flush all configuration */ -RREG32 (mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG); +RREG32 (mmHW_STATE);return 0 ;
drivers/misc/habanalabs/gaudi/gaudi_coresight.c +2 -1
@@ -9,6 +9,7 @@#include "../include/gaudi/gaudi_coresight.h" #include "../include/gaudi/asic_reg/gaudi_regs.h" #include "../include/gaudi/gaudi_masks.h" +#include "../include/gaudi/gaudi_reg_map.h" #include <uapi/misc/habanalabs.h> #include <linux/coresight.h>
@@ -876,7 +877,7 @@ int gaudi_debug_coresight(struct hl_device *hdev, void *data) }/* Perform read from the device to flush all configuration */ -RREG32 (mmPCIE_DBI_DEVICE_ID_VENDOR_ID_REG); +RREG32 (mmHW_STATE);return rc; }
drivers/net/ethernet/broadcom/bnxt/bnxt_ulp.c +6 -2
@@ -222,8 +222,12 @@ int bnxt_get_ulp_msix_base(struct bnxt *bp)int bnxt_get_ulp_stat_ctxs (struct bnxt *bp) { -if (bnxt_ulp_registered (bp->edev,BNXT_ROCE_ULP )) -return BNXT_MIN_ROCE_STAT_CTXS ; +if (bnxt_ulp_registered (bp->edev,BNXT_ROCE_ULP )) { +struct bnxt_en_dev *edev = bp->edev; + +if (edev->ulp_tbl[BNXT_ROCE_ULP ].msix_requested) +return BNXT_MIN_ROCE_STAT_CTXS ; + }return 0 ; }
drivers/net/ethernet/freescale/fs_enet/mii-bitbang.c +1 -0
@@ -223,3 +223,4 @@ static struct platform_driver fs_enet_bb_mdio_driver = { };module_platform_driver (fs_enet_bb_mdio_driver); +MODULE_LICENSE ("GPL" );
drivers/net/ethernet/freescale/fs_enet/mii-fec.c +1 -0
@@ -224,3 +224,4 @@ static struct platform_driver fs_enet_fec_mdio_driver = { };module_platform_driver (fs_enet_fec_mdio_driver); +MODULE_LICENSE ("GPL" );
drivers/net/ethernet/freescale/ucc_geth.h +8 -1
@@ -575,7 +575,14 @@ struct ucc_geth_tx_global_pram {u32 vtagtable[0x8 ];/* 8 4-byte VLAN tags */ u32 tqptr;/* a base pointer to the Tx Queues Memory Region */ -u8 res2[0x80 -0x74 ]; +u8 res2[0x78 -0x74 ]; +u64 snums_en; +u32 l2l3baseptr;/* top byte consists of a few other bit fields */ + +u16 mtu[8 ]; +u8 res3[0xa8 -0x94 ]; +u32 wrrtablebase;/* top byte is reserved */ +u8 res4[0xc0 -0xac ]; } __packed;/* structure representing Extended Filtering Global Parameters in PRAM */
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +49 -28
154 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +13 -14
@@ -95,22 +95,21 @@ int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw,return 0 ; } -if (!IS_ERR_OR_NULL (vport->egress.acl)) -return 0 ; - - vport->egress.acl =esw_acl_table_create (esw, vport->vport, -MLX5_FLOW_NAMESPACE_ESW_EGRESS , - table_size); -if (IS_ERR_OR_NULL (vport->egress.acl)) { - err =PTR_ERR (vport->egress.acl); - vport->egress.acl =NULL ; - goto out; +if (!vport->egress.acl) { + vport->egress.acl =esw_acl_table_create (esw, vport->vport, +MLX5_FLOW_NAMESPACE_ESW_EGRESS , + table_size); +if (IS_ERR (vport->egress.acl)) { + err =PTR_ERR (vport->egress.acl); + vport->egress.acl =NULL ; + goto out; + } + + err =esw_acl_egress_lgcy_groups_create (esw, vport); +if (err) + goto out; } - err =esw_acl_egress_lgcy_groups_create (esw, vport); -if (err) - goto out; -esw_debug (esw->dev,"vport[%d] configure egress rules, vlan(%d) qos(%d)\n" , vport->vport, vport->info.vlan, vport->info.qos);
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_ofld.c +1 -1
@@ -173,7 +173,7 @@ int esw_acl_egress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport table_size++; vport->egress.acl =esw_acl_table_create (esw, vport->vport,MLX5_FLOW_NAMESPACE_ESW_EGRESS , table_size); -if (IS_ERR_OR_NULL (vport->egress.acl)) { +if (IS_ERR (vport->egress.acl)) { err =PTR_ERR (vport->egress.acl); vport->egress.acl =NULL ;return err;
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +1 -1
@@ -180,7 +180,7 @@ int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw, vport->ingress.acl =esw_acl_table_create (esw, vport->vport,MLX5_FLOW_NAMESPACE_ESW_INGRESS , table_size); -if (IS_ERR_OR_NULL (vport->ingress.acl)) { +if (IS_ERR (vport->ingress.acl)) { err =PTR_ERR (vport->ingress.acl); vport->ingress.acl =NULL ;return err;
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_ofld.c +1 -1
@@ -258,7 +258,7 @@ int esw_acl_ingress_ofld_setup(struct mlx5_eswitch *esw, vport->ingress.acl =esw_acl_table_create (esw, vport->vport,MLX5_FLOW_NAMESPACE_ESW_INGRESS , num_ftes); -if (IS_ERR_OR_NULL (vport->ingress.acl)) { +if (IS_ERR (vport->ingress.acl)) { err =PTR_ERR (vport->ingress.acl); vport->ingress.acl =NULL ;return err;
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -5
@@ -236,6 +236,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,int ret;int i; + plat->phy_addr =-1 ; plat->clk_csr =5 ; plat->has_gmac =0 ; plat->has_gmac4 =1 ;
@@ -345,7 +346,6 @@ static int ehl_sgmii_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { plat->bus_id =1 ; - plat->phy_addr =0 ; plat->phy_interface =PHY_INTERFACE_MODE_SGMII ; plat->serdes_powerup = intel_serdes_powerup;
@@ -362,7 +362,6 @@ static int ehl_rgmii_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { plat->bus_id =1 ; - plat->phy_addr =0 ; plat->phy_interface =PHY_INTERFACE_MODE_RGMII ;return ehl_common_data (pdev, plat);
@@ -376,7 +375,6 @@ static int ehl_pse0_common_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { plat->bus_id =2 ; - plat->phy_addr =1 ;return ehl_common_data (pdev, plat); }
@@ -408,7 +406,6 @@ static int ehl_pse1_common_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { plat->bus_id =3 ; - plat->phy_addr =1 ;return ehl_common_data (pdev, plat); }
@@ -450,7 +447,6 @@ static int tgl_sgmii_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat) { plat->bus_id =1 ; - plat->phy_addr =0 ; plat->phy_interface =PHY_INTERFACE_MODE_SGMII ; plat->serdes_powerup = intel_serdes_powerup; plat->serdes_powerdown = intel_serdes_powerdown;
drivers/net/usb/cdc_ether.c +7 -0
@@ -793,6 +793,13 @@ static const struct usb_device_id products[] = { .driver_info = 0, }, +/* Lenovo Powered USB-C Travel Hub (4X90S92381, based on Realtek RTL8153) */ +{ +USB_DEVICE_AND_INTERFACE_INFO (LENOVO_VENDOR_ID ,0x721e ,USB_CLASS_COMM , + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info =0 , +}, + /* ThinkPad USB-C Dock Gen 2 (based on Realtek RTL8153) */ { USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0xa387, USB_CLASS_COMM,
drivers/net/usb/r8152.c +1 -0
@@ -6893,6 +6893,7 @@ static const struct usb_device_id rtl8152_table[] = { {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7205)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x720c)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x7214)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x721e)}, {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0xa387)}, {REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)}, {REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA, 0x09ff)},
drivers/net/wireless/ath/ath11k/dp_rx.c +7 -3
@@ -2272,6 +2272,7 @@ static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, struct hal_rx_desc *rx_desc, {u8 channel_num;u32 center_freq; +struct ieee80211_channel *channel; rx_status->freq =0 ; rx_status->rate_idx =0 ;
@@ -2292,9 +2293,12 @@ static void ath11k_dp_rx_h_ppdu(struct ath11k *ar, struct hal_rx_desc *rx_desc, rx_status->band =NL80211_BAND_5GHZ ; }else {spin_lock_bh (&ar->data_lock); - rx_status->band = ar->rx_channel->band; - channel_num = -ieee80211_frequency_to_channel (ar->rx_channel->center_freq); + channel = ar->rx_channel; +if (channel) { + rx_status->band = channel->band; + channel_num = +ieee80211_frequency_to_channel (channel->center_freq); + }spin_unlock_bh (&ar->data_lock);ath11k_dbg_dump (ar->ab,ATH11K_DBG_DATA ,NULL ,"rx_desc: " , rx_desc,sizeof (struct hal_rx_desc ));
drivers/net/wireless/ath/ath11k/qmi.c +22 -2
@@ -1654,6 +1654,7 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab)struct qmi_wlanfw_respond_mem_resp_msg_v01 resp;struct qmi_txn txn = {};int ret =0 , i; +bool delayed; req =kzalloc (sizeof (*req),GFP_KERNEL );if (!req)
@@ -1666,11 +1667,13 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab)* failure to FW and FW will then request mulitple blocks of small * chunk size memory. */ -if (!ab->bus_params.fixed_mem_region && ab->qmi.mem_seg_count <=2 ) { +if (!ab->bus_params.fixed_mem_region && ab->qmi.target_mem_delayed) { + delayed = true;ath11k_dbg (ab,ATH11K_DBG_QMI ,"qmi delays mem_request %d\n" , ab->qmi.mem_seg_count);memset (req,0 ,sizeof (*req)); }else { + delayed = false; req->mem_seg_len = ab->qmi.mem_seg_count;for (i =0 ; i < req->mem_seg_len ; i++) {
@@ -1702,6 +1705,12 @@ static int ath11k_qmi_respond_fw_mem_request(struct ath11k_base *ab) }if (resp.resp.result !=QMI_RESULT_SUCCESS_V01 ) { +/* the error response is expected when +* target_mem_delayed is true. +*/ +if (delayed && resp.resp.error ==0 ) + goto out; +ath11k_warn (ab,"Respond mem req failed, result: %d, err: %d\n" , resp.resp.result, resp.resp.error); ret = -EINVAL ;
@@ -1736,6 +1745,8 @@ static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab)int i;struct target_mem_chunk *chunk; + ab->qmi.target_mem_delayed = false; +for (i =0 ; i < ab->qmi.mem_seg_count; i++) { chunk = &ab->qmi.target_mem[i]; chunk->vaddr = dma_alloc_coherent(ab->dev,
@@ -1743,6 +1754,15 @@ static int ath11k_qmi_alloc_target_mem_chunk(struct ath11k_base *ab) &chunk->paddr, GFP_KERNEL);if (!chunk->vaddr) { +if (ab->qmi.mem_seg_count <=2 ) { +ath11k_dbg (ab,ATH11K_DBG_QMI , +"qmi dma allocation failed (%d B type %u), will try later with small size\n" , + chunk->size, + chunk->type); +ath11k_qmi_free_target_mem_chunk (ab); + ab->qmi.target_mem_delayed = true; +return 0 ; + }ath11k_err (ab,"failed to alloc memory, size: 0x%x, type: %u\n" , chunk->size, chunk->type);
@@ -2467,7 +2487,7 @@ static void ath11k_qmi_msg_mem_request_cb(struct qmi_handle *qmi_hdl, ret);return ; } - }else if (msg->mem_seg_len >2 ) { + }else { ret =ath11k_qmi_alloc_target_mem_chunk (ab);if (ret) { ath11k_warn(ab, "qmi failed to alloc target memory: %d\n",
drivers/net/wireless/ath/ath11k/qmi.h +1 -0
@@ -121,6 +121,7 @@ struct ath11k_qmi {struct target_mem_chunk target_mem[ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 ];u32 mem_seg_count;u32 target_mem_mode; +bool target_mem_delayed;u8 cal_done;struct target_info target;struct m3_mem_region m3_mem;
drivers/nvme/host/core.c +8 -3
@@ -2802,6 +2802,11 @@ static const struct attribute_group *nvme_subsys_attrs_groups[] = { NULL, }; +static inline bool nvme_discovery_ctrl (struct nvme_ctrl *ctrl) +{ +return ctrl->opts && ctrl->opts->discovery_nqn; +} +static bool nvme_validate_cntlid (struct nvme_subsystem *subsys,struct nvme_ctrl *ctrl,struct nvme_id_ctrl *id) {
@@ -2821,7 +2826,7 @@ static bool nvme_validate_cntlid(struct nvme_subsystem *subsys, }if ((id->cmic &NVME_CTRL_CMIC_MULTI_CTRL ) || - (ctrl->opts && ctrl->opts->discovery_nqn)) +nvme_discovery_ctrl (ctrl))continue ; dev_err(ctrl->device,
@@ -3090,7 +3095,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) goto out_free; } -if (!ctrl->opts->discovery_nqn && !ctrl->kas) { +if (!nvme_discovery_ctrl (ctrl) && !ctrl->kas) {dev_err (ctrl->device,"keep-alive support is mandatory for fabrics\n" ); ret = -EINVAL ;
@@ -3130,7 +3135,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)if (ret <0 )return ret; -if (!ctrl->identified) { +if (!ctrl->identified && !nvme_discovery_ctrl (ctrl)) { ret =nvme_hwmon_init (ctrl);if (ret <0 )return ret;
drivers/nvme/host/fc.c +14 -1
@@ -166,6 +166,7 @@ struct nvme_fc_ctrl {struct blk_mq_tag_set admin_tag_set;struct blk_mq_tag_set tag_set; +struct work_struct ioerr_work;struct delayed_work connect_work;struct kref ref;
@@ -1888,6 +1889,15 @@ __nvme_fc_fcpop_chk_teardowns(struct nvme_fc_ctrl *ctrl, } } +static void +nvme_fc_ctrl_ioerr_work (struct work_struct *work) +{ +struct nvme_fc_ctrl *ctrl = + container_of(work, struct nvme_fc_ctrl, ioerr_work); + +nvme_fc_error_recovery (ctrl,"transport detected io error" ); +} +static void nvme_fc_fcpio_done (struct nvmefc_fcp_req *req) {
@@ -2046,7 +2056,7 @@ nvme_fc_fcpio_done(struct nvmefc_fcp_req *req) check_error:if (terminate_assoc) -nvme_fc_error_recovery (ctrl,"transport detected io error" ); +queue_work (nvme_reset_wq, &ctrl->ioerr_work); } static int
@@ -3233,6 +3243,7 @@ nvme_fc_delete_ctrl(struct nvme_ctrl *nctrl) {struct nvme_fc_ctrl *ctrl =to_fc_ctrl (nctrl); +cancel_work_sync (&ctrl->ioerr_work);cancel_delayed_work_sync (&ctrl->connect_work);/* * kill the association on the link side. this will block
@@ -3449,6 +3460,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,INIT_WORK (&ctrl->ctrl.reset_work, nvme_fc_reset_ctrl_work);INIT_DELAYED_WORK (&ctrl->connect_work, nvme_fc_connect_ctrl_work); +INIT_WORK (&ctrl->ioerr_work, nvme_fc_ctrl_ioerr_work);spin_lock_init (&ctrl->lock);/* io queue count */
@@ -3540,6 +3552,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts, fail_ctrl:nvme_change_ctrl_state (&ctrl->ctrl,NVME_CTRL_DELETING ); +cancel_work_sync (&ctrl->ioerr_work);cancel_work_sync (&ctrl->ctrl.reset_work);cancel_delayed_work_sync (&ctrl->connect_work);
drivers/nvme/host/pci.c +6 -4
@@ -967,6 +967,7 @@ static inline struct blk_mq_tags *nvme_queue_tagset(struct nvme_queue *nvmeq)static inline void nvme_handle_cqe (struct nvme_queue *nvmeq,u16 idx) {struct nvme_completion *cqe = &nvmeq->cqes[idx]; +__u16 command_id =READ_ONCE (cqe->command_id);struct request *req;/*
@@ -975,17 +976,17 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx)* aborts. We don't even bother to allocate a struct request * for them but rather special case them here. */ -if (unlikely (nvme_is_aen_req (nvmeq->qid, cqe->command_id))) { +if (unlikely (nvme_is_aen_req (nvmeq->qid, command_id))) {nvme_complete_async_event (&nvmeq->dev->ctrl, cqe->status, &cqe->result);return ; } - req =blk_mq_tag_to_rq (nvme_queue_tagset (nvmeq), cqe->command_id); + req =blk_mq_tag_to_rq (nvme_queue_tagset (nvmeq), command_id);if (unlikely (!req)) {dev_warn (nvmeq->dev->ctrl.device,"invalid id %d completed on queue %d\n" , - cqe->command_id,le16_to_cpu (cqe->sq_id)); + command_id,le16_to_cpu (cqe->sq_id));return ; }
@@ -3201,7 +3202,8 @@ static const struct pci_device_id nvme_id_table[] = { { PCI_DEVICE(0x144d, 0xa821), /* Samsung PM1725 */ .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, { PCI_DEVICE(0x144d, 0xa822), /* Samsung PM1725a */ - .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY, }, + .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY | + NVME_QUIRK_IGNORE_DEV_SUBNQN, }, { PCI_DEVICE(0x1d1d, 0x1f1f), /* LighNVM qemu device */ .driver_data = NVME_QUIRK_LIGHTNVM, }, { PCI_DEVICE(0x1d1d, 0x2807), /* CNEX WL */
drivers/nvme/host/tcp.c +2 -2
@@ -201,7 +201,7 @@ static inline size_t nvme_tcp_req_cur_offset(struct nvme_tcp_request *req)static inline size_t nvme_tcp_req_cur_length (struct nvme_tcp_request *req) { -return min_t (size_t, req->iter.bvec->bv_len - req->iter.iov_offset, +return min_t (size_t,iov_iter_single_seg_count (&req->iter), req->pdu_len - req->pdu_sent); }
@@ -286,7 +286,7 @@ static inline void nvme_tcp_queue_request(struct nvme_tcp_request *req,* directly, otherwise queue io_work. Also, only do that if we * are on the same cpu, so we don't introduce contention. */ -if (queue->io_cpu ==smp_processor_id () && +if (queue->io_cpu ==__smp_processor_id () && sync && empty &&mutex_trylock (&queue->send_mutex)) { queue->more_requests = !last;nvme_tcp_send_all (queue);
drivers/nvme/target/rdma.c +18 -8
@@ -1220,6 +1220,14 @@ nvmet_rdma_find_get_device(struct rdma_cm_id *cm_id) } ndev->inline_data_size = nport->inline_data_size; ndev->inline_page_count = inline_page_count; + +if (nport->pi_enable && !(cm_id->device->attrs.device_cap_flags & +IB_DEVICE_INTEGRITY_HANDOVER )) { +pr_warn ("T10-PI is not supported by device %s. Disabling it\n" , + cm_id->device->name); + nport->pi_enable = false; + } + ndev->device = cm_id->device;kref_init (&ndev->ref);
@@ -1641,6 +1649,16 @@ static void __nvmet_rdma_queue_disconnect(struct nvmet_rdma_queue *queue)spin_lock_irqsave (&queue->state_lock, flags);switch (queue->state) {case NVMET_RDMA_Q_CONNECTING : +while (!list_empty (&queue->rsp_wait_list)) { +struct nvmet_rdma_rsp *rsp; + + rsp =list_first_entry (&queue->rsp_wait_list, + struct nvmet_rdma_rsp, + wait_list); +list_del (&rsp->wait_list); +nvmet_rdma_put_rsp (rsp); + } + fallthrough;case NVMET_RDMA_Q_LIVE : queue->state =NVMET_RDMA_Q_DISCONNECTING ; disconnect = true;
@@ -1845,14 +1863,6 @@ static int nvmet_rdma_enable_port(struct nvmet_rdma_port *port) goto out_destroy_id; } -if (port->nport->pi_enable && - !(cm_id->device->attrs.device_cap_flags & -IB_DEVICE_INTEGRITY_HANDOVER )) { -pr_err ("T10-PI is not supported for %pISpcs\n" , addr); - ret = -EINVAL ; - goto out_destroy_id; - } - port->cm_id = cm_id;return 0 ;
drivers/regulator/bd718x7-regulator.c +57 -0
225 lines not on this page · raw message
drivers/scsi/ufs/ufshcd.c +2 -1
@@ -8818,7 +8818,8 @@ int ufshcd_system_suspend(struct ufs_hba *hba)if ((ufs_get_pm_lvl_to_dev_pwr_mode (hba->spm_lvl) == hba->curr_dev_pwr_mode) && (ufs_get_pm_lvl_to_link_pwr_state (hba->spm_lvl) == - hba->uic_link_state)) + hba->uic_link_state) && + !hba->dev_info.b_rpm_dev_flush_capable) goto out;if (pm_runtime_suspended (hba->dev)) {
drivers/spi/spi-altera.c +14 -12
@@ -189,24 +189,26 @@ static int altera_spi_txrx(struct spi_master *master,/* send the first byte */ altera_spi_tx_word (hw); - }else { -while (hw->count < hw->len) { -altera_spi_tx_word (hw); -for (;;) { -altr_spi_readl (hw,ALTERA_SPI_STATUS , &val); -if (val &ALTERA_SPI_STATUS_RRDY_MSK ) -break ; +return 1 ; + } + +while (hw->count < hw->len) { +altera_spi_tx_word (hw); -cpu_relax (); - } +for (;;) { +altr_spi_readl (hw,ALTERA_SPI_STATUS , &val); +if (val &ALTERA_SPI_STATUS_RRDY_MSK ) +break ; -altera_spi_rx_word (hw); +cpu_relax (); } -spi_finalize_current_transfer (master); + +altera_spi_rx_word (hw); } +spi_finalize_current_transfer (master); -return t->len; +return 0 ; }static irqreturn_t altera_spi_irq (int irq,void *dev)
drivers/spi/spi.c +5 -1
@@ -1100,6 +1100,7 @@ static int spi_transfer_wait(struct spi_controller *ctlr, {struct spi_statistics *statm = &ctlr->statistics;struct spi_statistics *stats = &msg->spi->statistics; +u32 speed_hz = xfer->speed_hz;unsigned long long ms;if (spi_controller_is_slave (ctlr)) {
@@ -1108,8 +1109,11 @@ static int spi_transfer_wait(struct spi_controller *ctlr,return -EINTR ; } }else { +if (!speed_hz) + speed_hz =100000 ; + ms =8LL *1000LL * xfer->len; -do_div (ms, xfer->speed_hz); +do_div (ms, speed_hz); ms += ms +200 ;/* some tolerance */ if (ms >UINT_MAX )
drivers/staging/hikey9xx/hisi-spmi-controller.c +15 -6
@@ -278,21 +278,24 @@ static int spmi_controller_probe(struct platform_device *pdev) iores =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (!iores) {dev_err (&pdev->dev,"can not get resource!\n" ); -return -EINVAL ; + ret = -EINVAL ; + goto err_put_controller; } spmi_controller->base =devm_ioremap (&pdev->dev, iores->start,resource_size (iores));if (!spmi_controller->base) {dev_err (&pdev->dev,"can not remap base addr!\n" ); -return -EADDRNOTAVAIL ; + ret = -EADDRNOTAVAIL ; + goto err_put_controller; } ret =of_property_read_u32 (pdev->dev.of_node,"spmi-channel" , &spmi_controller->channel);if (ret) {dev_err (&pdev->dev,"can not get channel\n" ); -return -ENODEV ; + ret = -ENODEV ; + goto err_put_controller; }platform_set_drvdata (pdev, spmi_controller);
@@ -309,9 +312,15 @@ static int spmi_controller_probe(struct platform_device *pdev) ctrl->write_cmd = spmi_write_cmd; ret =spmi_controller_add (ctrl); -if (ret) -dev_err (&pdev->dev,"spmi_add_controller failed with error %d!\n" , ret); +if (ret) { +dev_err (&pdev->dev,"spmi_controller_add failed with error %d!\n" , ret); + goto err_put_controller; + } + +return 0 ; +err_put_controller: +spmi_controller_put (ctrl);return ret; }
@@ -320,7 +329,7 @@ static int spmi_del_controller(struct platform_device *pdev)struct spmi_controller *ctrl =platform_get_drvdata (pdev);spmi_controller_remove (ctrl); -kfree (ctrl); +spmi_controller_put (ctrl);return 0 ; }
drivers/usb/typec/altmodes/Kconfig +1 -1
@@ -20,6 +20,6 @@ config TYPEC_NVIDIA_ALTMODE to enable support for VirtualLink devices with NVIDIA GPUs. To compile this driver as a module, choose M here: the - module will be called typec_displayport. + module will be called typec_nvidia. endmenu
drivers/xen/privcmd.c +19 -6
@@ -717,14 +717,15 @@ static long privcmd_ioctl_restrict(struct file *file, void __user *udata)return 0 ; } -static long privcmd_ioctl_mmap_resource (struct file *file,void __user *udata) +static long privcmd_ioctl_mmap_resource (struct file *file, +struct privcmd_mmap_resource __user *udata) {struct privcmd_data *data = file->private_data;struct mm_struct *mm = current->mm;struct vm_area_struct *vma;struct privcmd_mmap_resource kdata;xen_pfn_t *pfns =NULL ; -struct xen_mem_acquire_resource xdata; +struct xen_mem_acquire_resource xdata = { };int rc;if (copy_from_user (&kdata, udata,sizeof (kdata)))
@@ -734,6 +735,22 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata)if (data->domid !=DOMID_INVALID && data->domid != kdata.dom)return -EPERM ; +/* Both fields must be set or unset */ +if (!!kdata.addr != !!kdata.num) +return -EINVAL ; + + xdata.domid = kdata.dom; + xdata.type = kdata.type; + xdata.id = kdata.id; + +if (!kdata.addr && !kdata.num) { +/* Query the size of the resource. */ + rc =HYPERVISOR_memory_op (XENMEM_acquire_resource, &xdata); +if (rc) +return rc; +return __put_user (xdata.nr_frames, &udata->num); + } +mmap_write_lock (mm); vma =find_vma (mm, kdata.addr);
@@ -768,10 +785,6 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata) }else vma->vm_private_data =PRIV_VMA_LOCKED ;
Lines of this file are not shown. View the raw message.
fs/btrfs/discard.c +33 -27
60 lines not on this page · raw message
fs/nfs/pnfs.c +31 -27
58 lines not on this page · raw message
fs/proc/task_mmu.c +30 -23
53 lines not on this page · raw message
kernel/bpf/task_iter.c +19 -38
57 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +3 -0
Lines of this file are not shown. View the raw message.
sound/firewire/fireface/ff-transaction.c +1 -1
Lines of this file are not shown. View the raw message.
sound/firewire/tascam/tascam-transaction.c +1 -1
Lines of this file are not shown. View the raw message.
tools/bootconfig/scripts/bconf2ftrace.sh +1 -0
Lines of this file are not shown. View the raw message.
tools/bootconfig/scripts/ftrace2bconf.sh +4 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/nft_conntrack_helper.sh +9 -3
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.