Linux 5.12.7
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.12.7 kernel.
All users of the 5.12 kernel series must upgrade.
The updated 5.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.12.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/powerpc/syscall64-abi.rst | 10 Makefile | 2 arch/openrisc/kernel/setup.c | 2 arch/openrisc/mm/init.c | 3 arch/powerpc/include/asm/hvcall.h | 3 arch/powerpc/include/asm/paravirt.h | 22 + arch/powerpc/include/asm/ptrace.h | 45 +- arch/powerpc/include/asm/syscall.h | 42 +- arch/powerpc/kernel/setup_64.c | 4 arch/powerpc/platforms/pseries/hvCall.S | 10 arch/powerpc/platforms/pseries/lpar.c | 3 arch/x86/Makefile | 12 arch/x86/boot/compressed/head_64.S | 85 +++++ arch/x86/events/intel/core.c | 2 arch/x86/kernel/sev-es-shared.c | 1 arch/x86/kernel/sev-es.c | 136 +++++--- arch/x86/xen/enlighten_pv.c | 8 drivers/cdrom/gdrom.c | 13 drivers/dma-buf/dma-buf.c | 10 drivers/firmware/arm_scpi.c | 4 drivers/gpio/gpio-tegra186.c | 11 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 6 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 10 drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 4 drivers/gpu/drm/amd/amdgpu/soc15.c | 2 drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c | 7 drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c | 7 drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c | 7 drivers/gpu/drm/i915/gem/i915_gem_pages.c | 2 drivers/gpu/drm/i915/gt/gen7_renderclear.c | 5 drivers/gpu/drm/i915/i915_gem.c | 11 drivers/gpu/drm/radeon/radeon_gart.c | 3 drivers/gpu/drm/ttm/ttm_bo.c | 2 drivers/hwmon/lm80.c | 11 drivers/infiniband/core/cma.c | 5 drivers/infiniband/core/uverbs_std_types_device.c | 7 drivers/infiniband/hw/mlx5/devx.c | 6 drivers/infiniband/hw/mlx5/main.c | 1 drivers/infiniband/sw/rxe/rxe_comp.c | 20 - drivers/infiniband/sw/rxe/rxe_loc.h | 29 - drivers/infiniband/sw/rxe/rxe_mr.c | 271 +++++++--------- drivers/infiniband/sw/rxe/rxe_pool.c | 14 drivers/infiniband/sw/rxe/rxe_qp.c | 7 drivers/infiniband/sw/rxe/rxe_req.c | 10 drivers/infiniband/sw/rxe/rxe_resp.c | 34 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 22 - drivers/infiniband/sw/rxe/rxe_verbs.h | 60 ++- drivers/infiniband/sw/siw/siw_verbs.c | 11 drivers/leds/leds-lp5523.c | 2 drivers/md/dm-snap.c | 1 drivers/media/platform/rcar_drif.c | 1 drivers/misc/eeprom/at24.c | 6 drivers/misc/habanalabs/gaudi/gaudi.c | 4 drivers/misc/ics932s401.c | 2 drivers/mmc/host/meson-gx-mmc.c | 7 drivers/mmc/host/sdhci-pci-gli.c | 7 drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c | 3 drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c | 8 drivers/net/ethernet/sun/niu.c | 32 + drivers/net/wireless/realtek/rtlwifi/base.c | 18 - drivers/nvme/host/core.c | 3 drivers/nvme/host/fc.c | 12 drivers/nvme/host/multipath.c | 55 +-- drivers/nvme/host/nvme.h | 8 drivers/nvme/host/tcp.c | 5 drivers/nvme/target/core.c | 2 drivers/nvme/target/io-cmd-file.c | 8 drivers/nvme/target/loop.c | 4 drivers/platform/mellanox/mlxbf-tmfifo.c | 11 drivers/platform/x86/Kconfig | 2 drivers/platform/x86/dell/dell-smbios-wmi.c | 3 drivers/platform/x86/ideapad-laptop.c | 13 drivers/platform/x86/intel_int0002_vgpio.c | 80 +++- drivers/rapidio/rio_cm.c | 17 - drivers/rtc/rtc-pcf85063.c | 7 drivers/scsi/qedf/qedf_main.c | 4 drivers/scsi/qla2xxx/qla_nx.c | 3 drivers/scsi/ufs/ufs-hisi.c | 15 drivers/scsi/ufs/ufshcd.c | 5 drivers/tee/amdtee/amdtee_private.h | 13 drivers/tee/amdtee/call.c | 94 ++++- drivers/tee/amdtee/core.c | 15 drivers/tty/serial/mvebu-uart.c | 3 drivers/tty/vt/vt.c | 2 drivers/tty/vt/vt_ioctl.c | 57 ++- drivers/uio/uio_hv_generic.c | 12 drivers/uio/uio_pci_generic.c | 2 drivers/video/console/vgacon.c | 56 +-- drivers/video/fbdev/core/fbcon.c | 2 drivers/video/fbdev/hgafb.c | 21 - drivers/video/fbdev/imsttfb.c | 5 drivers/xen/xen-pciback/vpci.c | 14 drivers/xen/xen-pciback/xenbus.c | 22 + fs/btrfs/inode.c | 1 fs/btrfs/tree-log.c | 18 + fs/cifs/smb2ops.c | 2 fs/ecryptfs/crypto.c | 6 fs/hugetlbfs/inode.c | 2 fs/namespace.c | 6 include/linux/console_struct.h | 1 ipc/mqueue.c | 6 ipc/msg.c | 6 ipc/sem.c | 6 kernel/kcsan/debugfs.c | 3 kernel/locking/lockdep.c | 4 kernel/locking/mutex-debug.c | 4 kernel/locking/mutex-debug.h | 2 kernel/locking/mutex.c | 18 - kernel/locking/mutex.h | 4 kernel/ptrace.c | 18 + mm/gup.c | 4 mm/internal.h | 20 - mm/userfaultfd.c | 28 - net/bluetooth/smp.c | 9 sound/firewire/Kconfig | 4 sound/firewire/amdtp-stream-trace.h | 6 sound/firewire/amdtp-stream.c | 42 +- sound/firewire/bebob/bebob.c | 2 sound/firewire/dice/dice-alesis.c | 2 sound/firewire/dice/dice-tcelectronic.c | 4 sound/firewire/oxfw/oxfw.c | 1 sound/isa/sb/sb8.c | 4 sound/pci/hda/patch_realtek.c | 135 +++++++ sound/pci/intel8x0.c | 7 sound/usb/line6/driver.c | 4 sound/usb/line6/pod.c | 5 sound/usb/line6/variax.c | 6 sound/usb/midi.c | 4 sound/usb/quirks.c | 4 tools/testing/selftests/exec/Makefile | 6 tools/testing/selftests/seccomp/seccomp_bpf.c | 27 + 132 files changed, 1363 insertions(+), 738 deletions(-)
Alexey Kardashevskiy (1):
powerpc: Fix early setup to make early_ioremap() work
Anirudh Rayabharam (3):
rapidio: handle create_workqueue() failure
net: stmicro: handle clk_prepare() failure during init
video: hgafb: correctly handle card detect failure during probe
Arnd Bergmann (1):
kcsan: Fix debugfs initcall return type
Atul Gopinathan (1):
cdrom: gdrom: deallocate struct gdrom_unit fields in remove_gdrom
Barnabás Pőcze (1):
platform/x86: ideapad-laptop: fix method name typo
Bart Van Assche (1):
scsi: ufs: core: Increase the usable queue depth
Bob Pearson (1):
RDMA/rxe: Split MEM into MR and MW
Changfeng (1):
drm/amdgpu: disable 3DCGCG on picasso/raven1 to avoid compute hang
Chris Wilson (1):
drm/i915/gem: Pin the L-shape quirked object as unshrinkable
Christian Brauner (1):
fs/mount_setattr: tighten permission checks
Christian König (2):
drm/radeon: use the dummy page for GART if needed
dma-buf: fix unintended pin/unpin warnings
Christoph Hellwig (1):
nvme-multipath: fix double initialization of ANA state
Christophe JAILLET (3):
openrisc: Fix a memory leak
uio_hv_generic: Fix a memory leak in error handling paths
uio_hv_generic: Fix another memory leak in error handling paths
Dan Carpenter (2):
firmware: arm_scpi: Prevent the ternary sign expansion bug RDMA/uverbs: Fix a NULL vs IS_ERR() bug
Daniel Beer (1):
mmc: sdhci-pci-gli: increase 1.8V regulator wait
Daniel Cordova A (1):
ALSA: hda: fixup headset for ASUS GU502 laptop
Daniel Wagner (1):
nvmet: seset ns->file when open fails
Darrick J. Wong (1):
ics932s401: fix broken handling of errors when word reading fails
Du Cheng (1):
ethernet: sun: niu: fix missing checks of niu_pci_eeprom_read()
Elia Devito (1):
ALSA: hda/realtek: Add fixup for HP Spectre x360 15-df0xxx
Filipe Manana (1):
btrfs: fix removed dentries still existing after log is synced
Francois Gervais (1):
rtc: pcf85063: fallback to parent of_node
Greg Kroah-Hartman (18):
Revert "ALSA: sb8: add a check for request_region"
Revert "rapidio: fix a NULL pointer dereference when create_workqueue() fails" Revert "serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference" Revert "video: hgafb: fix potential NULL pointer dereference" Revert "net: stmicro: fix a missing check of clk_prepare"
Revert "leds: lp5523: fix a missing check of return value of lp55xx_read" Revert "hwmon: (lm80) fix a missing check of bus read in lm80 probe" Revert "video: imsttfb: fix potential NULL pointer dereferences" Revert "ecryptfs: replace BUG_ON with error handling code" Revert "scsi: ufs: fix a missing check of devm_reset_control_get" Revert "gdrom: fix a memory leak bug"
cdrom: gdrom: initialize global variable at init time
Revert "media: rcar_drif: fix a memory disclosure"
Revert "rtlwifi: fix a potential NULL pointer dereference" Revert "qlcnic: Avoid potential NULL pointer dereference"
Revert "niu: fix missing checks of niu_pci_eeprom_read"
net: rtlwifi: properly check for alloc_workqueue() failure
Linux 5.12.7
Guchun Chen (2):
drm/amdgpu: update gc golden setting for Navi12 drm/amdgpu: update sdma golden setting for Navi12
Hans de Goede (2):
platform/x86: intel_int0002_vgpio: Only call enable_irq_wake() when using s2idle platform/x86: dell-smbios-wmi: Fix oops on rmmod dell_smbios
Hou Pu (1):
nvmet: use new ana_log_size instead the old one
Hsin-Yi Wang (1):
misc: eeprom: at24: check suspend status before disable regulator
Hui Wang (1):
ALSA: hda/realtek: reset eapd coeff to default value for alc287
Igor Matheus Andrade Torrente (1):
video: hgafb: fix potential NULL pointer dereference
James Smart (1):
nvme-fc: clear q_live at beginning of association teardown
Jan Beulich (3):
xen-pciback: redo VF placement in the virtual topology
xen-pciback: reconfigure also from backend watch handler x86/Xen: swap NX determination and GDT setup on BSP
Javed Hasan (1):
scsi: qedf: Add pointer checks in qedf_update_link_speed()
Joerg Roedel (4):
x86/sev-es: Don't return NULL from sev_es_get_ghcb() x86/sev-es: Use __put_user()/__get_user() for data accesses x86/sev-es: Forward page-faults which happen during emulation x86/boot/compressed/64: Check SEV encryption in the 32-bit boot-path
Jon Hunter (1):
gpio: tegra186: Don't set parent IRQ affinity
Josef Bacik (1):
btrfs: avoid RCU stalls while running delayed iputs
Keith Busch (1):
nvme-tcp: rerun io_work if req_list is not empty
Leo Yan (1):
locking/lockdep: Correct calling tracepoints
Leon Romanovsky (5):
RDMA/siw: Properly check send and receive CQ pointers RDMA/siw: Release xarray entry
RDMA/core: Prevent divide-by-zero error triggered by the user RDMA/rxe: Clear all QP fields if creation failed RDMA/rxe: Return CQE error if invalid lkey was supplied
Like Xu (1):
perf/x86: Avoid touching LBR_TOS MSR for Arch LBR
Liming Sun (1):
platform/mellanox: mlxbf-tmfifo: Fix a memory barrier issue
Luiz Augusto von Dentz (1):
Bluetooth: SMP: Fail if remote and local public keys are identical
Lv Yunlong (1):
habanalabs/gaudi: Fix a potential use after free in gaudi_memset_device_memory
Maciej W. Rozycki (3):
vgacon: Record video mode changes with VT_RESIZEX
vt_ioctl: Revert VT_RESIZEX parameter handling removal
vt: Fix character height handling with VT_RESIZEX
Maor Gottlieb (2):
RDMA/mlx5: Recover from fatal event in dual port mode RDMA/mlx5: Fix query DCT via DEVX
Martin Ågren (1):
uio/uio_pci_generic: fix return value changed in refactoring
Michal Hocko (1):
Revert "mm/gup: check page posion status for coredump."
Mike Kravetz (1):
userfaultfd: hugetlbfs: fix new flag usage in error path
Mike Rapoport (1):
openrisc: mm/init.c: remove unused memblock_region variable in map_ram()
Mikulas Patocka (1):
dm snapshot: fix crash with transient storage and zero chunk size
Nathan Chancellor (1):
x86/build: Fix location of '-plugin-opt=' flags
Neil Armstrong (2):
mmc: meson-gx: make replace WARN_ONCE with dev_warn_once about scatterlist offset alignment
mmc: meson-gx: also check SD_IO_RW_EXTENDED for scatterlist size alignment
Nicholas Piggin (3):
powerpc/pseries: Fix hcall tracing recursion in pv queued spinlocks powerpc/64s/syscall: Use pt_regs.trap to distinguish syscall ABI difference between sc and scv syscalls powerpc/64s/syscall: Fix ptrace syscall info with scv syscalls
Nicolas MURE (1):
ALSA: usb-audio: Configure Pioneer DJM-850 samplerate
Nikola Cornij (1):
drm/amd/display: Use the correct max downscaling value for DCN3.x family
Oleg Nesterov (1):
ptrace: make ptrace() fail if the tracee changed its pid unexpectedly
Olivia Mackintosh (1):
ALSA: usb-audio: DJM-750: ensure format is set
PeiSen Hou (1):
ALSA: hda/realtek: Add some CLOVE SSIDs of ALC293
Phillip Potter (2):
scsi: ufs: handle cleanup correctly on devm_reset_control_get error
leds: lp5523: check return value of lp5xx_read and jump to cleanup code
Qiu Wenbo (1):
platform/x86: ideapad-laptop: fix a NULL pointer dereference
Rijo Thomas (1):
tee: amdtee: unload TA only when its refcount becomes 0
Ronnie Sahlberg (1):
cifs: fix memory leak in smb2_copychunk_range
Sagi Grimberg (1):
nvme-tcp: fix possible use-after-completion
Shay Drory (1):
RDMA/core: Don't access cm_id after its destruction
Simon Rettberg (1):
drm/i915/gt: Disable HiZ Raw Stall Optimization on broken gen7
Takashi Iwai (5):
ALSA: intel8x0: Don't update period unless prepared
ALSA: line6: Fix racy initialization of LINE6 MIDI
ALSA: usb-audio: Validate MS endpoint descriptors
ALSA: hda/realtek: Fix silent headphone output on ASUS UX430UA
ALSA: hda/realtek: Add fixup for HP OMEN laptop
Takashi Sakamoto (6):
ALSA: dice: fix stream format for TC Electronic Konnekt Live at high sampling transfer frequency
ALSA: firewire-lib: fix amdtp_packet tracepoints event for packet_index field
ALSA: dice: fix stream format at middle sampling rate for Alesis iO 26
ALSA: firewire-lib: fix calculation for size of IR context payload
ALSA: bebob/oxfw: fix Kconfig entry for Mackie d.2 Pro
ALSA: firewire-lib: fix check for the size of isochronous packet payload
Tetsuo Handa (1):
tty: vt: always invoke vc->vc_sw->con_resize callback
Tom Lendacky (2):
x86/sev-es: Move sev_es_put_ghcb() in prep for follow on patch x86/sev-es: Invalidate the GHCB after completing VMGEXIT
Tom Seewald (1):
qlcnic: Add null check after calling netdev_alloc_skb
Varad Gautam (1):
ipc/mqueue, msg, sem: avoid relying on a stack reference past its expiry
Wu Bo (2):
nvmet: fix memory leak in nvmet_alloc_ctrl()
nvme-loop: fix memory leak in nvme_loop_create_ctrl()
Yang Yingliang (1):
tools/testing/selftests/exec: fix link error
Yi Li (1):
drm/amdgpu: Fix GPU TLB update error when PAGE_SIZE > AMDGPU_PAGE_SIZE
Zhen Lei (1):
scsi: qla2xxx: Fix error return code in qla82xx_write_flash_dword()
Zqiang (1):
locking/mutex: clear MUTEX_FLAGS if wait_list is empty due to signal
xinhui pan (1):
drm/ttm: Do not add non-system domain BO into swap list
Greg Kroah-Hartman
maintainerDocumentation/powerpc/syscall64-abi.rst +10 -0
@@ -109,6 +109,16 @@ auxiliary vector. scv 0 syscalls will always behave as PPC_FEATURE2_HTM_NOSC. +ptrace +------ +When ptracing system calls (PTRACE_SYSCALL), the pt_regs.trap value contains +the system call type that can be used to distinguish between sc and scv 0 +system calls, and the different register conventions can be accounted for. + +If the value of (pt_regs.trap & 0xfff0) is 0xc00 then the system call was +performed with the sc instruction, if it is 0x3000 then the system call was +performed with the scv 0 instruction. + vsyscall ========
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 12 -SUBLEVEL = 6 +SUBLEVEL = 7 EXTRAVERSION = NAME = Frozen Wasteland
arch/openrisc/kernel/setup.c +2 -0
@@ -278,6 +278,8 @@ void calibrate_delay(void)pr_cont ("%lu.%02lu BogoMIPS (lpj=%lu)\n" , loops_per_jiffy / (500000 /HZ ), (loops_per_jiffy / (5000 /HZ )) %100 , loops_per_jiffy); + +of_node_put (cpu); }void __init setup_arch (char **cmdline_p)
arch/openrisc/mm/init.c +1 -2
@@ -75,7 +75,6 @@ static void __init map_ram(void)/* These mark extents of read-only kernel pages... * ...from vmlinux.lds.S */ -struct memblock_region *region; v =PAGE_OFFSET ;
@@ -121,7 +120,7 @@ static void __init map_ram(void) }printk (KERN_INFO "%s: Memory: 0x%x-0x%x\n" , __func__, - region->base, region->base + region->size); + start, end); } }
arch/powerpc/include/asm/hvcall.h +3 -0
@@ -446,6 +446,9 @@*/ long plpar_hcall_norets (unsigned long opcode, ...); +/* Variant which does not do hcall tracing */ +long plpar_hcall_norets_notrace (unsigned long opcode, ...); +/** * plpar_hcall: - Make a pseries hypervisor call * @opcode: The hypervisor call to make.
arch/powerpc/include/asm/paravirt.h +19 -3
@@ -28,19 +28,35 @@ static inline u32 yield_count_of(int cpu) return be32_to_cpu(yield_count); } +/* +* Spinlock code confers and prods, so don't trace the hcalls because the +* tracing code takes spinlocks which can cause recursion deadlocks. +* +* These calls are made while the lock is not held: the lock slowpath yields if +* it can not acquire the lock, and unlock slow path might prod if a waiter has +* yielded). So this may not be a problem for simple spin locks because the +* tracing does not technically recurse on the lock, but we avoid it anyway. +* +* However the queued spin lock contended path is more strictly ordered: the +* H_CONFER hcall is made after the task has queued itself on the lock, so then +* recursing on that lock will cause the task to then queue up again behind the +* first instance (or worse: queued spinlocks use tricks that assume a context +* never waits on more than one spinlock, so such recursion may cause random +* corruption in the lock code). +*/ static inline void yield_to_preempted (int cpu,u32 yield_count) { -plpar_hcall_norets (H_CONFER ,get_hard_smp_processor_id (cpu), yield_count); +plpar_hcall_norets_notrace (H_CONFER ,get_hard_smp_processor_id (cpu), yield_count); }static inline void prod_cpu (int cpu) { -plpar_hcall_norets (H_PROD ,get_hard_smp_processor_id (cpu)); +plpar_hcall_norets_notrace (H_PROD ,get_hard_smp_processor_id (cpu)); }static inline void yield_to_any (void ) { -plpar_hcall_norets (H_CONFER ,-1 ,0 ); +plpar_hcall_norets_notrace (H_CONFER ,-1 ,0 ); }#else static inline bool is_shared_processor (void )
arch/powerpc/include/asm/ptrace.h +26 -19
63 lines not on this page · raw message
arch/powerpc/include/asm/syscall.h +26 -16
55 lines not on this page · raw message
arch/powerpc/kernel/setup_64.c +2 -2
@@ -369,11 +369,11 @@ void __init early_setup(unsigned long dt_ptr)apply_feature_fixups ();setup_feature_keys (); -early_ioremap_setup (); -/* Initialize the hash table or TLB handling */ early_init_mmu (); +early_ioremap_setup (); +/* * After firmware and early platform setup code has set things up, * we note the SPR values for configurable control/performance
arch/powerpc/platforms/pseries/hvCall.S +10 -0
@@ -102,6 +102,16 @@ END_FTR_SECTION(0, 1); \ #define HCALL_BRANCH(LABEL) #endif +_GLOBAL_TOC(plpar_hcall_norets_notrace) + HMT_MEDIUM + + mfcr r0 + stw r0,8(r1) + HVSC /* invoke the hypervisor */ + lwz r0,8(r1) + mtcrf 0xff,r0 + blr /* return r3 = status */ + _GLOBAL_TOC(plpar_hcall_norets) HMT_MEDIUM
arch/powerpc/platforms/pseries/lpar.c +1 -2
@@ -1830,8 +1830,7 @@ void hcall_tracepoint_unregfunc(void)/* * Since the tracing code might execute hcalls we need to guard against -* recursion. One example of this are spinlocks calling H_YIELD on -* shared processor partitions. +* recursion. */ static DEFINE_PER_CPU(unsigned int, hcall_trace_depth);
arch/x86/Makefile +6 -6
@@ -170,11 +170,6 @@ ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) KBUILD_CFLAGS += $(call cc-option,-maccumulate-outgoing-args,) endif -ifdef CONFIG_LTO_CLANG -KBUILD_LDFLAGS += -plugin-opt=-code-model=kernel \ - -plugin-opt=-stack-alignment=$(if $(CONFIG_X86_32),4,8) -endif - # Workaround for a gcc prelease that unfortunately was shipped in a suse release KBUILD_CFLAGS += -Wno-sign-compare #
@@ -194,7 +189,12 @@ ifdef CONFIG_RETPOLINE endif endif -KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE) +KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE) + +ifdef CONFIG_LTO_CLANG +KBUILD_LDFLAGS += -plugin-opt=-code-model=kernel \ + -plugin-opt=-stack-alignment=$(if $(CONFIG_X86_32),4,8) +endif ifdef CONFIG_X86_NEED_RELOCS LDFLAGS_vmlinux := --emit-relocs --discard-none
arch/x86/boot/compressed/head_64.S +85 -0
108 lines not on this page · raw message
arch/x86/events/intel/core.c +1 -1
@@ -5741,7 +5741,7 @@ __init int intel_pmu_init(void)* Check all LBT MSR here. * Disable LBR access if any LBR MSRs can not be accessed. */ -if (x86_pmu.lbr_nr && !check_msr (x86_pmu.lbr_tos,0x3UL )) +if (x86_pmu.lbr_tos && !check_msr (x86_pmu.lbr_tos,0x3UL )) x86_pmu.lbr_nr =0 ;for (i =0 ; i < x86_pmu.lbr_nr; i++) { if (!(check_msr(x86_pmu.lbr_from + i, 0xffffUL) &&
arch/x86/kernel/sev-es-shared.c +1 -0
@@ -63,6 +63,7 @@ static bool sev_es_negotiate_protocol(void) static __always_inline void vc_ghcb_invalidate(struct ghcb *ghcb) { + ghcb->save.sw_exit_code =0 ;memset (ghcb->save.valid_bitmap,0 ,sizeof (ghcb->save.valid_bitmap)); }
arch/x86/kernel/sev-es.c +85 -51
213 lines not on this page · raw message
arch/x86/xen/enlighten_pv.c +4 -4
@@ -1276,16 +1276,16 @@ asmlinkage __visible void __init xen_start_kernel(void)/* Get mfn list */ xen_build_dynamic_phys_to_machine (); +/* Work out if we support NX */ +get_cpu_cap (&boot_cpu_data); +x86_configure_nx (); +/* * Set up kernel GDT and segment registers, mainly so that * -fstack-protector code can be executed. */ xen_setup_gdt (0 ); -/* Work out if we support NX */ -get_cpu_cap (&boot_cpu_data); -x86_configure_nx (); -/* Determine virtual and physical address sizes */ get_cpu_address_sizes (&boot_cpu_data);
drivers/cdrom/gdrom.c +10 -3
@@ -743,6 +743,13 @@ static const struct blk_mq_ops gdrom_mq_ops = {static int probe_gdrom (struct platform_device *devptr) {int err; + +/* +* Ensure our "one" device is initialized properly in case of previous +* usages of it +*/ +memset (&gd,0 ,sizeof (gd)); +/* Start the device */ if (gdrom_execute_diagnostic () !=1 ) {pr_warn ("ATA Probe for GDROM failed\n" );
@@ -831,6 +838,8 @@ static int remove_gdrom(struct platform_device *devptr)if (gdrom_major)unregister_blkdev (gdrom_major,GDROM_DEV_NAME );unregister_cdrom (gd.cd_info); +kfree (gd.cd_info); +kfree (gd.toc);return 0 ; }
@@ -846,7 +855,7 @@ static struct platform_driver gdrom_driver = {static int __init init_gdrom (void ) {int rc; - gd.toc =NULL ; + rc =platform_driver_register (&gdrom_driver);if (rc)return rc;
@@ -862,8 +871,6 @@ static void __exit exit_gdrom(void) {platform_device_unregister (pd);platform_driver_unregister (&gdrom_driver); -kfree (gd.toc); -kfree (gd.cd_info); }module_init (init_gdrom);
drivers/dma-buf/dma-buf.c +5 -5
@@ -760,7 +760,7 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev,if (dma_buf_is_dynamic (attach->dmabuf)) {dma_resv_lock (attach->dmabuf->resv,NULL ); - ret =dma_buf_pin (attach); + ret = dmabuf->ops->pin (attach);if (ret) goto err_unlock; }
@@ -786,7 +786,7 @@ dma_buf_dynamic_attach(struct dma_buf *dmabuf, struct device *dev, err_unpin:if (dma_buf_is_dynamic (attach->dmabuf)) -dma_buf_unpin (attach); + dmabuf->ops->unpin (attach); err_unlock:if (dma_buf_is_dynamic (attach->dmabuf))
@@ -843,7 +843,7 @@ void dma_buf_detach(struct dma_buf *dmabuf, struct dma_buf_attachment *attach)__unmap_dma_buf (attach, attach->sgt, attach->dir);if (dma_buf_is_dynamic (attach->dmabuf)) { -dma_buf_unpin (attach); + dmabuf->ops->unpin (attach);dma_resv_unlock (attach->dmabuf->resv); } }
@@ -956,7 +956,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach,if (dma_buf_is_dynamic (attach->dmabuf)) {dma_resv_assert_held (attach->dmabuf->resv);if (!IS_ENABLED (CONFIG_DMABUF_MOVE_NOTIFY )) { - r =dma_buf_pin (attach); + r = attach->dmabuf->ops->pin (attach);if (r)return ERR_PTR (r); }
@@ -968,7 +968,7 @@ struct sg_table *dma_buf_map_attachment(struct dma_buf_attachment *attach,if (IS_ERR (sg_table) &&dma_buf_is_dynamic (attach->dmabuf) && !IS_ENABLED (CONFIG_DMABUF_MOVE_NOTIFY )) -dma_buf_unpin (attach); + attach->dmabuf->ops->unpin (attach);if (!IS_ERR (sg_table) && attach->dmabuf->ops->cache_sgt_mapping) { attach->sgt = sg_table;
drivers/firmware/arm_scpi.c +3 -1
@@ -552,8 +552,10 @@ static unsigned long scpi_clk_get_val(u16 clk_id) ret =scpi_send_message (CMD_GET_CLOCK_VALUE , &le_clk_id,sizeof (le_clk_id), &rate,sizeof (rate)); +if (ret) +return 0 ; -return ret ? ret :le32_to_cpu (rate); +return le32_to_cpu (rate); }static int scpi_clk_set_val (u16 clk_id,unsigned long rate)
drivers/gpio/gpio-tegra186.c +0 -11
@@ -444,16 +444,6 @@ static int tegra186_irq_set_wake(struct irq_data *data, unsigned int on)return 0 ; } -static int tegra186_irq_set_affinity (struct irq_data *data, -const struct cpumask *dest, -bool force) -{ -if (data->parent_data) -return irq_chip_set_affinity_parent (data, dest, force); - -return -EINVAL ; -} -static void tegra186_gpio_irq (struct irq_desc *desc) {struct tegra_gpio *gpio =irq_desc_get_handler_data (desc);
@@ -700,7 +690,6 @@ static int tegra186_gpio_probe(struct platform_device *pdev) gpio->intc.irq_unmask = tegra186_irq_unmask; gpio->intc.irq_set_type = tegra186_irq_set_type; gpio->intc.irq_set_wake = tegra186_irq_set_wake; - gpio->intc.irq_set_affinity = tegra186_irq_set_affinity; irq = &gpio->gpio.irq; irq->chip = &gpio->intc;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +1 -1
@@ -267,7 +267,7 @@ static int amdgpu_ttm_map_buffer(struct ttm_buffer_object *bo, *addr += offset & ~PAGE_MASK ; num_dw =ALIGN (adev->mman.buffer_funcs->copy_num_dw,8 ); - num_bytes = num_pages *8 ; + num_bytes = num_pages *8 *AMDGPU_GPU_PAGES_IN_CPU_PAGE ; r =amdgpu_job_alloc_with_ib (adev, num_dw *4 + num_bytes,AMDGPU_IB_POOL_DELAYED , &job);
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +4 -2
@@ -1391,9 +1391,10 @@ static const struct soc15_reg_golden golden_settings_gc_10_1_2[] =SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DEBUG,0xffffffff ,0x20000000 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DEBUG2,0xffffffff ,0x00000420 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DEBUG3,0xffffffff ,0x00000200 ), -SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DEBUG4,0xffffffff ,0x04800000 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DEBUG4,0xffffffff ,0x04900000 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_DFSM_TILES_IN_FLIGHT,0x0000ffff ,0x0000003f ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmDB_LAST_OF_BURST_CONFIG,0xffffffff ,0x03860204 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmGB_ADDR_CONFIG,0x0c1800ff ,0x00000044 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmGCR_GENERAL_CNTL,0x1ff0ffff ,0x00000500 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmGE_PRIV_CONTROL,0x00007fff ,0x000001fe ), SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL1_PIPE_STEER, 0xffffffff, 0xe4e4e4e4),
@@ -1411,12 +1412,13 @@ static const struct soc15_reg_golden golden_settings_gc_10_1_2[] =SOC15_REG_GOLDEN_VALUE (GC ,0 , mmPA_SC_ENHANCE_2,0x00000820 ,0x00000820 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmPA_SC_LINE_STIPPLE_STATE,0x0000ff0f ,0x00000000 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmRMI_SPARE,0xffffffff ,0xffff3101 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSPI_CONFIG_CNTL_1,0x001f0000 ,0x00070104 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSQ_ALU_CLK_CTRL,0xffffffff ,0xffffffff ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSQ_ARB_CONFIG,0x00000133 ,0x00000130 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSQ_LDS_CLK_CTRL,0xffffffff ,0xffffffff ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmTA_CNTL_AUX,0xfff7ffff ,0x01030000 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmTCP_CNTL,0xffdf80ff ,0x479c0010 ), -SOC15_REG_GOLDEN_VALUE (GC ,0 , mmUTCL1_CTRL,0xffffffff ,0x00800000 ) +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmUTCL1_CTRL,0xffffffff ,0x00c00000 ) };static void gfx_v10_rlcg_wreg (struct amdgpu_device *adev,u32 offset,u32 v)
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +7 -3
@@ -4864,7 +4864,7 @@ static void gfx_v9_0_update_3d_clock_gating(struct amdgpu_device *adev,amdgpu_gfx_rlc_enter_safe_mode (adev);/* Enable 3D CGCG/CGLS */ -if (enable && (adev->cg_flags &AMD_CG_SUPPORT_GFX_3D_CGCG )) { +if (enable) {/* write cmd to clear cgcg/cgls ov */ def = data =RREG32_SOC15 (GC ,0 , mmRLC_CGTT_MGCG_OVERRIDE);/* unset CGCG override */
@@ -4876,8 +4876,12 @@ static void gfx_v9_0_update_3d_clock_gating(struct amdgpu_device *adev,/* enable 3Dcgcg FSM(0x0000363f) */ def =RREG32_SOC15 (GC ,0 , mmRLC_CGCG_CGLS_CTRL_3D); - data = (0x36 <<RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT ) | -RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK ; +if (adev->cg_flags &AMD_CG_SUPPORT_GFX_3D_CGCG ) + data = (0x36 <<RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT ) | +RLC_CGCG_CGLS_CTRL_3D__CGCG_EN_MASK ; +else + data =0x0 <<RLC_CGCG_CGLS_CTRL_3D__CGCG_GFX_IDLE_THRESHOLD__SHIFT ; +if (adev->cg_flags &AMD_CG_SUPPORT_GFX_3D_CGLS ) data |= (0x000F <<RLC_CGCG_CGLS_CTRL_3D__CGLS_REP_COMPANSAT_DELAY__SHIFT ) |RLC_CGCG_CGLS_CTRL_3D__CGLS_EN_MASK ;
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c +4 -0
@@ -123,6 +123,10 @@ static const struct soc15_reg_golden golden_settings_sdma_nv14[] = {static const struct soc15_reg_golden golden_settings_sdma_nv12[] = {SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA0_RLC3_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA0_GB_ADDR_CONFIG,0x001877ff ,0x00000044 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA0_GB_ADDR_CONFIG_READ,0x001877ff ,0x00000044 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA1_GB_ADDR_CONFIG,0x001877ff ,0x00000044 ), +SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA1_GB_ADDR_CONFIG_READ,0x001877ff ,0x00000044 ),SOC15_REG_GOLDEN_VALUE (GC ,0 , mmSDMA1_RLC3_RB_WPTR_POLL_CNTL,0xfffffff7 ,0x00403000 ), };
drivers/gpu/drm/amd/amdgpu/soc15.c +0 -2
@@ -1151,7 +1151,6 @@ static int soc15_common_early_init(void *handle) adev->cg_flags =AMD_CG_SUPPORT_GFX_MGCG |AMD_CG_SUPPORT_GFX_MGLS |AMD_CG_SUPPORT_GFX_CP_LS | -AMD_CG_SUPPORT_GFX_3D_CGCG |AMD_CG_SUPPORT_GFX_3D_CGLS |AMD_CG_SUPPORT_GFX_CGCG | AMD_CG_SUPPORT_GFX_CGLS |
@@ -1170,7 +1169,6 @@ static int soc15_common_early_init(void *handle)AMD_CG_SUPPORT_GFX_MGLS |AMD_CG_SUPPORT_GFX_RLC_LS |AMD_CG_SUPPORT_GFX_CP_LS | -AMD_CG_SUPPORT_GFX_3D_CGCG |AMD_CG_SUPPORT_GFX_3D_CGLS |AMD_CG_SUPPORT_GFX_CGCG | AMD_CG_SUPPORT_GFX_CGLS |
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_resource.c +4 -3
@@ -826,10 +826,11 @@ static const struct dc_plane_cap plane_cap = { .fp16 = 16000 }, +/* 6:1 downscaling ratio: 1000/6 = 166.666 */ .max_downscale_factor = { - .argb8888 = 600, - .nv12 = 600, - .fp16 = 600 + .argb8888 = 167, + .nv12 = 167, + .fp16 =167 } };
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c +4 -3
@@ -843,10 +843,11 @@ static const struct dc_plane_cap plane_cap = { .fp16 = 16000 }, +/* 6:1 downscaling ratio: 1000/6 = 166.666 */ .max_downscale_factor = { - .argb8888 = 600, - .nv12 = 600, - .fp16 =600 + .argb8888 = 167, + .nv12 = 167, + .fp16 =167 },64 ,64
drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c +4 -3
@@ -282,10 +282,11 @@ static const struct dc_plane_cap plane_cap = { .nv12 = 16000, .fp16 =16000 }, +/* 6:1 downscaling ratio: 1000/6 = 166.666 */ .max_downscale_factor = { - .argb8888 = 600, - .nv12 = 600, - .fp16 =600 + .argb8888 = 167, + .nv12 = 167, + .fp16 =167 },16 ,16
drivers/gpu/drm/i915/gem/i915_gem_pages.c +2 -0
@@ -63,6 +63,8 @@ void __i915_gem_object_set_pages(struct drm_i915_gem_object *obj, i915->quirks & QUIRK_PIN_SWIZZLED_PAGES) {GEM_BUG_ON (i915_gem_object_has_tiling_quirk (obj));i915_gem_object_set_tiling_quirk (obj); +GEM_BUG_ON (!list_empty (&obj->mm.link)); +atomic_inc (&obj->mm.shrink_pin); shrinkable = false; }
drivers/gpu/drm/i915/gt/gen7_renderclear.c +4 -1
@@ -397,7 +397,10 @@ static void emit_batch(struct i915_vma * const vma,gen7_emit_pipeline_invalidate (&cmds);batch_add (&cmds,MI_LOAD_REGISTER_IMM (2 ));batch_add (&cmds,i915_mmio_reg_offset (CACHE_MODE_0_GEN7 )); -batch_add (&cmds,0xffff0000 ); +batch_add (&cmds,0xffff0000 | + ((IS_IVB_GT1 (i915) ||IS_VALLEYVIEW (i915)) ? +HIZ_RAW_STALL_OPT_DISABLE : +0 ));batch_add (&cmds,i915_mmio_reg_offset (CACHE_MODE_1 ));batch_add (&cmds,0xffff0000 |PIXEL_SUBSPAN_COLLECT_OPT_DISABLE );gen7_emit_pipeline_invalidate (&cmds);
drivers/gpu/drm/i915/i915_gem.c +5 -6
@@ -972,12 +972,11 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data, obj->mm.madv = args->madv;if (i915_gem_object_has_pages (obj)) { -struct list_head *list; +unsigned long flags; -if (i915_gem_object_is_shrinkable (obj)) { -unsigned long flags; - -spin_lock_irqsave (&i915->mm.obj_lock, flags); +spin_lock_irqsave (&i915->mm.obj_lock, flags); +if (!list_empty (&obj->mm.link)) { +struct list_head *list;if (obj->mm.madv !=I915_MADV_WILLNEED ) list = &i915->mm.purge_list;
@@ -985,8 +984,8 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data, list = &i915->mm.shrink_list;list_move_tail (&obj->mm.link, list); -spin_unlock_irqrestore (&i915->mm.obj_lock, flags); } +spin_unlock_irqrestore (&i915->mm.obj_lock, flags); }/* if the object is no longer attached, discard its backing storage */
drivers/gpu/drm/radeon/radeon_gart.c +2 -1
@@ -301,7 +301,8 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, p = t / (PAGE_SIZE /RADEON_GPU_PAGE_SIZE );for (i =0 ; i < pages; i++, p++) { - rdev->gart.pages[p] = pagelist[i]; + rdev->gart.pages[p] = pagelist ? pagelist[i] : + rdev->dummy_page.page; page_base = dma_addr[i];for (j =0 ; j < (PAGE_SIZE /RADEON_GPU_PAGE_SIZE ); j++, t++) { page_entry =radeon_gart_get_page_entry (page_base, flags);
drivers/gpu/drm/ttm/ttm_bo.c +2 -0
@@ -153,6 +153,8 @@ void ttm_bo_move_to_lru_tail(struct ttm_buffer_object *bo, swap = &ttm_bo_glob.swap_lru[bo->priority];list_move_tail (&bo->swap, swap); + }else { +list_del_init (&bo->swap); }if (bdev->driver->del_from_lru_notify)
drivers/hwmon/lm80.c +2 -9
@@ -596,7 +596,6 @@ static int lm80_probe(struct i2c_client *client)struct device *dev = &client->dev;struct device *hwmon_dev;struct lm80_data *data; -int rv; data =devm_kzalloc (dev,sizeof (struct lm80_data ),GFP_KERNEL );if (!data)
@@ -609,14 +608,8 @@ static int lm80_probe(struct i2c_client *client)lm80_init_client (client);/* A few vars need to be filled upon startup */ - rv =lm80_read_value (client,LM80_REG_FAN_MIN (1 )); -if (rv <0 ) -return rv; - data->fan[f_min][0 ] = rv; - rv =lm80_read_value (client,LM80_REG_FAN_MIN (2 )); -if (rv <0 ) -return rv; - data->fan[f_min][1 ] = rv; + data->fan[f_min][0 ] =lm80_read_value (client,LM80_REG_FAN_MIN (1 )); + data->fan[f_min][1 ] =lm80_read_value (client,LM80_REG_FAN_MIN (2 )); hwmon_dev =devm_hwmon_device_register_with_groups (dev, client->name, data, lm80_groups);
drivers/infiniband/core/cma.c +3 -2
@@ -482,6 +482,7 @@ static void cma_release_dev(struct rdma_id_private *id_priv)list_del (&id_priv->list);cma_dev_put (id_priv->cma_dev); id_priv->cma_dev =NULL ; + id_priv->id.device =NULL ;if (id_priv->id.route.addr.dev_addr.sgid_attr) {rdma_put_gid_attr (id_priv->id.route.addr.dev_addr.sgid_attr); id_priv->id.route.addr.dev_addr.sgid_attr =NULL ;
@@ -1864,6 +1865,7 @@ static void _destroy_id(struct rdma_id_private *id_priv,iw_destroy_cm_id (id_priv->cm_id.iw); }cma_leave_mc_groups (id_priv); +rdma_restrack_del (&id_priv->res);cma_release_dev (id_priv); }
@@ -1877,7 +1879,6 @@ static void _destroy_id(struct rdma_id_private *id_priv,kfree (id_priv->id.route.path_rec);put_net (id_priv->id.route.addr.dev_addr.net); -rdma_restrack_del (&id_priv->res);kfree (id_priv); }
@@ -3740,7 +3741,7 @@ int rdma_listen(struct rdma_cm_id *id, int backlog) } id_priv->backlog = backlog; -if (id->device) { +if (id_priv->cma_dev) {if (rdma_cap_ib_cm (id->device,1 )) { ret =cma_ib_listen (id_priv);if (ret)
drivers/infiniband/core/uverbs_std_types_device.c +5 -2
@@ -117,8 +117,8 @@ static int UVERBS_HANDLER(UVERBS_METHOD_INFO_HANDLES)(return ret; uapi_object =uapi_get_object (attrs->ufile->device->uapi, object_id); -if (!uapi_object) -return -EINVAL ; +if (IS_ERR (uapi_object)) +return PTR_ERR (uapi_object); handles =gather_objects_handle (attrs->ufile, uapi_object, attrs, out_len, &total);
@@ -331,6 +331,9 @@ static int UVERBS_HANDLER(UVERBS_METHOD_QUERY_GID_TABLE)(if (ret)return ret; +if (!user_entry_size) +return -EINVAL ; + max_entries =uverbs_attr_ptr_get_array_size ( attrs,UVERBS_ATTR_QUERY_GID_TABLE_RESP_ENTRIES , user_entry_size);
drivers/infiniband/hw/mlx5/devx.c +2 -4
@@ -630,9 +630,8 @@ static bool devx_is_valid_obj_id(struct uverbs_attr_bundle *attrs,case UVERBS_OBJECT_QP : {struct mlx5_ib_qp *qp =to_mqp (uobj->object); -enum ib_qp_type qp_type = qp->ibqp.qp_type; -if (qp_type ==IB_QPT_RAW_PACKET || +if (qp->type ==IB_QPT_RAW_PACKET || (qp->flags &IB_QP_CREATE_SOURCE_QPN )) {struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
@@ -649,10 +648,9 @@ static bool devx_is_valid_obj_id(struct uverbs_attr_bundle *attrs, sq->tisn) == obj_id); } -if (qp_type ==MLX5_IB_QPT_DCT ) +if (qp->type ==MLX5_IB_QPT_DCT )return get_enc_obj_id (MLX5_CMD_OP_CREATE_DCT , qp->dct.mdct.mqp.qpn) == obj_id; -return get_enc_obj_id (MLX5_CMD_OP_CREATE_QP , qp->ibqp.qp_num) == obj_id; }
drivers/infiniband/hw/mlx5/main.c +1 -0
@@ -4655,6 +4655,7 @@ static int mlx5r_mp_probe(struct auxiliary_device *adev,if (bound) {rdma_roce_rescan_device (&dev->ib_dev); + mpi->ibdev->ib_active = true;break ; } }
drivers/infiniband/sw/rxe/rxe_comp.c +12 -8
@@ -345,14 +345,16 @@ static inline enum comp_state do_read(struct rxe_qp *qp, ret =copy_data (qp->pd,IB_ACCESS_LOCAL_WRITE , &wqe->dma,payload_addr (pkt), -payload_size (pkt), to_mem_obj,NULL ); -if (ret) +payload_size (pkt), to_mr_obj,NULL ); +if (ret) { + wqe->status =IB_WC_LOC_PROT_ERR ;return COMPST_ERROR ; + }if (wqe->dma.resid ==0 && (pkt->mask &RXE_END_MASK ))return COMPST_COMP_ACK ; -else -return COMPST_UPDATE_COMP ; + +return COMPST_UPDATE_COMP ; } static inline enum comp_state do_atomic(struct rxe_qp *qp,
@@ -365,11 +367,13 @@ static inline enum comp_state do_atomic(struct rxe_qp *qp, ret =copy_data (qp->pd,IB_ACCESS_LOCAL_WRITE , &wqe->dma, &atomic_orig, -sizeof (u64), to_mem_obj,NULL ); -if (ret) +sizeof (u64), to_mr_obj,NULL ); +if (ret) { + wqe->status =IB_WC_LOC_PROT_ERR ;return COMPST_ERROR ; -else -return COMPST_COMP_ACK ; + } + +return COMPST_COMP_ACK ; } static void make_send_cqe(struct rxe_qp *qp, struct rxe_send_wqe *wqe,
drivers/infiniband/sw/rxe/rxe_loc.h +13 -16
@@ -72,40 +72,37 @@ int rxe_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);/* rxe_mr.c */ enum copy_direction { - to_mem_obj, - from_mem_obj, + to_mr_obj, + from_mr_obj, }; -void rxe_mem_init_dma (struct rxe_pd *pd, -int access,struct rxe_mem *mem); +void rxe_mr_init_dma (struct rxe_pd *pd,int access,struct rxe_mr *mr); -int rxe_mem_init_user (struct rxe_pd *pd,u64 start, -u64 length,u64 iova,int access,struct ib_udata *udata, -struct rxe_mem *mr); +int rxe_mr_init_user (struct rxe_pd *pd,u64 start,u64 length,u64 iova, +int access,struct ib_udata *udata,struct rxe_mr *mr); -int rxe_mem_init_fast (struct rxe_pd *pd, -int max_pages,struct rxe_mem *mem); +int rxe_mr_init_fast (struct rxe_pd *pd,int max_pages,struct rxe_mr *mr); -int rxe_mem_copy (struct rxe_mem *mem,u64 iova,void *addr, -int length,enum copy_direction dir,u32 *crcp); +int rxe_mr_copy (struct rxe_mr *mr,u64 iova,void *addr,int length, +enum copy_direction dir,u32 *crcp);int copy_data (struct rxe_pd *pd,int access,struct rxe_dma_info *dma,void *addr,int length,enum copy_direction dir,u32 *crcp); -void *iova_to_vaddr (struct rxe_mem *mem,u64 iova,int length); +void *iova_to_vaddr (struct rxe_mr *mr,u64 iova,int length);enum lookup_type { lookup_local, lookup_remote, }; -struct rxe_mem *lookup_mem (struct rxe_pd *pd,int access,u32 key, -enum lookup_type type); +struct rxe_mr *lookup_mr (struct rxe_pd *pd,int access,u32 key, +enum lookup_type type); -int mem_check_range (struct rxe_mem *mem,u64 iova,size_t length); +int mr_check_range (struct rxe_mr *mr,u64 iova,size_t length); -void rxe_mem_cleanup (struct rxe_pool_entry *arg); +void rxe_mr_cleanup (struct rxe_pool_entry *arg);int advance_dma_data (struct rxe_dma_info *dma,unsigned int length);
drivers/infiniband/sw/rxe/rxe_mr.c +130 -141
513 lines not on this page · raw message
drivers/infiniband/sw/rxe/rxe_pool.c +6 -8
@@ -8,8 +8,6 @@#include "rxe_loc.h" /* info about object pools -* note that mr and mw share a single index space -* so that one can map an lkey to the correct type of object */ struct rxe_type_info rxe_type_info[RXE_NUM_TYPES ] = { [RXE_TYPE_UC ] = {
@@ -56,18 +54,18 @@ struct rxe_type_info rxe_type_info[RXE_NUM_TYPES] = { }, [RXE_TYPE_MR] = { .name = "rxe-mr", - .size = sizeof(struct rxe_mem), - .elem_offset = offsetof(struct rxe_mem, pelem), - .cleanup = rxe_mem_cleanup, + .size = sizeof(struct rxe_mr), + .elem_offset = offsetof(struct rxe_mr, pelem), + .cleanup = rxe_mr_cleanup, .flags = RXE_POOL_INDEX, .max_index = RXE_MAX_MR_INDEX, .min_index = RXE_MIN_MR_INDEX, }, [RXE_TYPE_MW] = { .name = "rxe-mw", - .size = sizeof(struct rxe_mem), - .elem_offset = offsetof(struct rxe_mem, pelem), - .flags = RXE_POOL_INDEX, + .size = sizeof(struct rxe_mw), + .elem_offset = offsetof(struct rxe_mw, pelem), + .flags = RXE_POOL_INDEX | RXE_POOL_NO_ALLOC, .max_index = RXE_MAX_MW_INDEX, .min_index = RXE_MIN_MW_INDEX, },
drivers/infiniband/sw/rxe/rxe_qp.c +7 -0
@@ -242,6 +242,7 @@ static int rxe_qp_init_req(struct rxe_dev *rxe, struct rxe_qp *qp,if (err) {vfree (qp->sq.queue->buf);kfree (qp->sq.queue); + qp->sq.queue =NULL ;return err; }
@@ -295,6 +296,7 @@ static int rxe_qp_init_resp(struct rxe_dev *rxe, struct rxe_qp *qp,if (err) {vfree (qp->rq.queue->buf);kfree (qp->rq.queue); + qp->rq.queue =NULL ;return err; } }
@@ -355,6 +357,11 @@ int rxe_qp_from_init(struct rxe_dev *rxe, struct rxe_qp *qp, struct rxe_pd *pd, err2:rxe_queue_cleanup (qp->sq.queue); err1: + qp->pd =NULL ; + qp->rcq =NULL ; + qp->scq =NULL ; + qp->srq =NULL ; +if (srq)rxe_drop_ref (srq);rxe_drop_ref (scq);
drivers/infiniband/sw/rxe/rxe_req.c +5 -5
@@ -464,7 +464,7 @@ static int fill_packet(struct rxe_qp *qp, struct rxe_send_wqe *wqe, }else { err =copy_data (qp->pd,0 , &wqe->dma,payload_addr (pkt), paylen, - from_mem_obj, + from_mr_obj, &crc);if (err)return err;
@@ -596,7 +596,7 @@ int rxe_requester(void *arg)if (wqe->mask &WR_REG_MASK ) {if (wqe->wr.opcode ==IB_WR_LOCAL_INV ) {struct rxe_dev *rxe =to_rdev (qp->ibqp.device); -struct rxe_mem *rmr; +struct rxe_mr *rmr; rmr =rxe_pool_get_index (&rxe->mr_pool, wqe->wr.ex.invalidate_rkey >>8 );
@@ -607,14 +607,14 @@ int rxe_requester(void *arg) wqe->status =IB_WC_MW_BIND_ERR ; goto exit; } - rmr->state =RXE_MEM_STATE_FREE ; + rmr->state =RXE_MR_STATE_FREE ;rxe_drop_ref (rmr); wqe->state = wqe_state_done; wqe->status =IB_WC_SUCCESS ; }else if (wqe->wr.opcode ==IB_WR_REG_MR ) { -struct rxe_mem *rmr =to_rmr (wqe->wr.wr.reg.mr); +struct rxe_mr *rmr =to_rmr (wqe->wr.wr.reg.mr); - rmr->state =RXE_MEM_STATE_VALID ; + rmr->state =RXE_MR_STATE_VALID ; rmr->access = wqe->wr.wr.reg.access; rmr->ibmr.lkey = wqe->wr.wr.reg.key; rmr->ibmr.rkey = wqe->wr.wr.reg.key;
drivers/infiniband/sw/rxe/rxe_resp.c +17 -17
@@ -391,7 +391,7 @@ static enum resp_states check_length(struct rxe_qp *qp,static enum resp_states check_rkey (struct rxe_qp *qp,struct rxe_pkt_info *pkt) { -struct rxe_mem *mem =NULL ; +struct rxe_mr *mr =NULL ;u64 va;u32 rkey;u32 resid;
@@ -430,18 +430,18 @@ static enum resp_states check_rkey(struct rxe_qp *qp, resid = qp->resp.resid; pktlen =payload_size (pkt); - mem =lookup_mem (qp->pd, access, rkey, lookup_remote); -if (!mem) { + mr =lookup_mr (qp->pd, access, rkey, lookup_remote); +if (!mr) { state =RESPST_ERR_RKEY_VIOLATION ; goto err; } -if (unlikely (mem->state ==RXE_MEM_STATE_FREE )) { +if (unlikely (mr->state ==RXE_MR_STATE_FREE )) { state =RESPST_ERR_RKEY_VIOLATION ; goto err; } -if (mem_check_range (mem, va, resid)) { +if (mr_check_range (mr, va, resid)) { state =RESPST_ERR_RKEY_VIOLATION ; goto err; }
@@ -469,12 +469,12 @@ static enum resp_states check_rkey(struct rxe_qp *qp,WARN_ON_ONCE (qp->resp.mr); - qp->resp.mr = mem; + qp->resp.mr = mr;return RESPST_EXECUTE ; err: -if (mem) -rxe_drop_ref (mem); +if (mr) +rxe_drop_ref (mr);return state; }
@@ -484,7 +484,7 @@ static enum resp_states send_data_in(struct rxe_qp *qp, void *data_addr,int err; err =copy_data (qp->pd,IB_ACCESS_LOCAL_WRITE , &qp->resp.wqe->dma, - data_addr, data_len, to_mem_obj,NULL ); + data_addr, data_len, to_mr_obj,NULL );if (unlikely (err))return (err == -ENOSPC ) ?RESPST_ERR_LENGTH :RESPST_ERR_MALFORMED_WQE ;
@@ -499,8 +499,8 @@ static enum resp_states write_data_in(struct rxe_qp *qp,int err;int data_len =payload_size (pkt); - err =rxe_mem_copy (qp->resp.mr, qp->resp.va,payload_addr (pkt), - data_len, to_mem_obj,NULL ); + err =rxe_mr_copy (qp->resp.mr, qp->resp.va,payload_addr (pkt), data_len, + to_mr_obj,NULL );if (err) { rc =RESPST_ERR_RKEY_VIOLATION ; goto out;
@@ -522,9 +522,9 @@ static enum resp_states process_atomic(struct rxe_qp *qp,u64 iova =atmeth_va (pkt);u64 *vaddr;enum resp_states ret; -struct rxe_mem *mr = qp->resp.mr; +struct rxe_mr *mr = qp->resp.mr; -if (mr->state !=RXE_MEM_STATE_VALID ) { +if (mr->state !=RXE_MR_STATE_VALID ) { ret =RESPST_ERR_RKEY_VIOLATION ; goto out; }
@@ -700,8 +700,8 @@ static enum resp_states read_reply(struct rxe_qp *qp,if (!skb)return RESPST_ERR_RNR ; - err =rxe_mem_copy (res->read.mr, res->read.va,payload_addr (&ack_pkt), - payload, from_mem_obj, &icrc); + err =rxe_mr_copy (res->read.mr, res->read.va,payload_addr (&ack_pkt), + payload, from_mr_obj, &icrc);if (err)pr_err ("Failed copying memory\n" );
@@ -883,7 +883,7 @@ static enum resp_states do_complete(struct rxe_qp *qp, }if (pkt->mask &RXE_IETH_MASK ) { -struct rxe_mem *rmr; +struct rxe_mr *rmr; wc->wc_flags |=IB_WC_WITH_INVALIDATE ; wc->ex.invalidate_rkey =ieth_rkey (pkt);
@@ -895,7 +895,7 @@ static enum resp_states do_complete(struct rxe_qp *qp, wc->ex.invalidate_rkey);return RESPST_ERROR ; } - rmr->state =RXE_MEM_STATE_FREE ; + rmr->state =RXE_MR_STATE_FREE ;rxe_drop_ref (rmr); }
drivers/infiniband/sw/rxe/rxe_verbs.c +11 -11
@@ -865,7 +865,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access) {struct rxe_dev *rxe =to_rdev (ibpd->device);struct rxe_pd *pd =to_rpd (ibpd); -struct rxe_mem *mr; +struct rxe_mr *mr; mr =rxe_alloc (&rxe->mr_pool);if (!mr)
@@ -873,7 +873,7 @@ static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)rxe_add_index (mr);rxe_add_ref (pd); -rxe_mem_init_dma (pd, access, mr); +rxe_mr_init_dma (pd, access, mr);return &mr->ibmr; }
@@ -887,7 +887,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd,int err;struct rxe_dev *rxe =to_rdev (ibpd->device);struct rxe_pd *pd =to_rpd (ibpd); -struct rxe_mem *mr; +struct rxe_mr *mr; mr =rxe_alloc (&rxe->mr_pool);if (!mr) {
@@ -899,8 +899,7 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd,rxe_add_ref (pd); - err =rxe_mem_init_user (pd, start, length, iova, - access, udata, mr); + err =rxe_mr_init_user (pd, start, length, iova, access, udata, mr);if (err) goto err3;
@@ -916,9 +915,9 @@ static struct ib_mr *rxe_reg_user_mr(struct ib_pd *ibpd,static int rxe_dereg_mr (struct ib_mr *ibmr,struct ib_udata *udata) { -struct rxe_mem *mr =to_rmr (ibmr); +struct rxe_mr *mr =to_rmr (ibmr); - mr->state =RXE_MEM_STATE_ZOMBIE ; + mr->state =RXE_MR_STATE_ZOMBIE ;rxe_drop_ref (mr_pd (mr));rxe_drop_index (mr);rxe_drop_ref (mr);
@@ -930,7 +929,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type, {struct rxe_dev *rxe =to_rdev (ibpd->device);struct rxe_pd *pd =to_rpd (ibpd); -struct rxe_mem *mr; +struct rxe_mr *mr;int err;if (mr_type !=IB_MR_TYPE_MEM_REG )
@@ -946,7 +945,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,rxe_add_ref (pd); - err =rxe_mem_init_fast (pd, max_num_sg, mr); + err =rxe_mr_init_fast (pd, max_num_sg, mr);if (err) goto err2;
@@ -962,7 +961,7 @@ static struct ib_mr *rxe_alloc_mr(struct ib_pd *ibpd, enum ib_mr_type mr_type,static int rxe_set_page (struct ib_mr *ibmr,u64 addr) { -struct rxe_mem *mr =to_rmr (ibmr); +struct rxe_mr *mr =to_rmr (ibmr);struct rxe_map *map;struct rxe_phys_buf *buf;
@@ -982,7 +981,7 @@ static int rxe_set_page(struct ib_mr *ibmr, u64 addr)static int rxe_map_mr_sg (struct ib_mr *ibmr,struct scatterlist *sg,int sg_nents,unsigned int *sg_offset) { -struct rxe_mem *mr =to_rmr (ibmr); +struct rxe_mr *mr =to_rmr (ibmr);int n; mr->nbuf =0 ;
@@ -1110,6 +1109,7 @@ static const struct ib_device_ops rxe_dev_ops = {INIT_RDMA_OBJ_SIZE (ib_pd, rxe_pd, ibpd),INIT_RDMA_OBJ_SIZE (ib_srq, rxe_srq, ibsrq),INIT_RDMA_OBJ_SIZE (ib_ucontext, rxe_ucontext, ibuc), + INIT_RDMA_OBJ_SIZE(ib_mw, rxe_mw, ibmw), };int rxe_register_device (struct rxe_dev *rxe,const char *ibdev_name)
drivers/infiniband/sw/rxe/rxe_verbs.h +34 -26
116 lines not on this page · raw message
drivers/infiniband/sw/siw/siw_verbs.c +4 -7
@@ -300,7 +300,6 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,struct siw_ucontext *uctx = rdma_udata_to_drv_context(udata, struct siw_ucontext, base_ucontext); -struct siw_cq *scq =NULL , *rcq =NULL ;unsigned long flags;int num_sqe, num_rqe, rv =0 ;size_t length;
@@ -343,10 +342,8 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd, rv = -EINVAL ; goto err_out; } - scq =to_siw_cq (attrs->send_cq); - rcq =to_siw_cq (attrs->recv_cq); -if (!scq || (!rcq && !attrs->srq)) { +if (!attrs->send_cq || (!attrs->recv_cq && !attrs->srq)) {siw_dbg (base_dev,"send CQ or receive CQ invalid\n" ); rv = -EINVAL ; goto err_out;
@@ -378,7 +375,7 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,else {/* Zero sized SQ is not supported */ rv = -EINVAL ; - goto err_out; + goto err_out_xa; }if (num_rqe) num_rqe =roundup_pow_of_two (num_rqe);
@@ -401,8 +398,8 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd, } } qp->pd = pd; - qp->scq = scq; - qp->rcq = rcq; + qp->scq =to_siw_cq (attrs->send_cq); + qp->rcq =to_siw_cq (attrs->recv_cq);if (attrs->srq) {/*
drivers/leds/leds-lp5523.c +1 -1
@@ -307,7 +307,7 @@ static int lp5523_init_program_engine(struct lp55xx_chip *chip)usleep_range (3000 ,6000 ); ret =lp55xx_read (chip,LP5523_REG_STATUS , &status);if (ret) -return ret; + goto out; status &=LP5523_ENG_STATUS_MASK ;if (status !=LP5523_ENG_STATUS_MASK ) {
drivers/md/dm-snap.c +1 -0
@@ -1408,6 +1408,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)if (!s->store->chunk_size) { ti->error ="Chunk size not set" ; + r = -EINVAL ; goto bad_read_metadata; }
drivers/media/platform/rcar_drif.c +0 -1
@@ -915,7 +915,6 @@ static int rcar_drif_g_fmt_sdr_cap(struct file *file, void *priv, {struct rcar_drif_sdr *sdr =video_drvdata (file); -memset (f->fmt.sdr.reserved,0 ,sizeof (f->fmt.sdr.reserved)); f->fmt.sdr.pixelformat = sdr->fmt->pixelformat; f->fmt.sdr.buffersize = sdr->fmt->buffersize;
drivers/misc/eeprom/at24.c +4 -2
@@ -763,7 +763,8 @@ static int at24_probe(struct i2c_client *client) at24->nvmem =devm_nvmem_register (dev, &nvmem_config);if (IS_ERR (at24->nvmem)) {pm_runtime_disable (dev); -regulator_disable (at24->vcc_reg); +if (!pm_runtime_status_suspended (dev)) +regulator_disable (at24->vcc_reg);return PTR_ERR (at24->nvmem); }
@@ -774,7 +775,8 @@ static int at24_probe(struct i2c_client *client) err =at24_read (at24,0 , &test_byte,1 );if (err) {pm_runtime_disable (dev); -regulator_disable (at24->vcc_reg); +if (!pm_runtime_status_suspended (dev)) +regulator_disable (at24->vcc_reg);return -ENODEV ; }
drivers/misc/habanalabs/gaudi/gaudi.c +3 -1
@@ -5546,6 +5546,7 @@ static int gaudi_memset_device_memory(struct hl_device *hdev, u64 addr,struct hl_cs_job *job;u32 cb_size, ctl, err_cause;struct hl_cb *cb; +u64 id;int rc; cb =hl_cb_kernel_create (hdev,PAGE_SIZE , false);
@@ -5612,8 +5613,9 @@ static int gaudi_memset_device_memory(struct hl_device *hdev, u64 addr, } release_cb: + id = cb->id;hl_cb_put (cb); -hl_cb_destroy (hdev, &hdev->kernel_cb_mgr, cb->id <<PAGE_SHIFT ); +hl_cb_destroy (hdev, &hdev->kernel_cb_mgr, id <<PAGE_SHIFT );return rc; }
drivers/misc/ics932s401.c +1 -1
@@ -134,7 +134,7 @@ static struct ics932s401_data *ics932s401_update_device(struct device *dev)for (i =0 ; i <NUM_MIRRORED_REGS ; i++) { temp =i2c_smbus_read_word_data (client, regs_to_copy[i]);if (temp <0 ) - data->regs[regs_to_copy[i]] =0 ; + temp =0 ; data->regs[regs_to_copy[i]] = temp >>8 ; }
drivers/mmc/host/meson-gx-mmc.c +5 -2
@@ -236,7 +236,8 @@ static void meson_mmc_get_transfer_mode(struct mmc_host *mmc,if (host->dram_access_quirk)return ; -if (data->blocks >1 ) { +/* SD_IO_RW_EXTENDED (CMD53) can also use block mode under the hood */ +if (data->blocks >1 || mrq->cmd->opcode ==SD_IO_RW_EXTENDED ) {/* * In block mode DMA descriptor format, "length" field indicates * number of blocks and there is no way to pass DMA size that
@@ -258,7 +259,9 @@ static void meson_mmc_get_transfer_mode(struct mmc_host *mmc,for_each_sg (data->sg, sg, data->sg_len, i) {/* check for 8 byte alignment */ if (sg->offset %8 ) { -WARN_ONCE (1 ,"unaligned scatterlist buffer\n" ); +dev_warn_once (mmc_dev (mmc), +"unaligned sg offset %u, disabling descriptor DMA for transfer\n" , + sg->offset);return ; } }
drivers/mmc/host/sdhci-pci-gli.c +6 -1
@@ -587,8 +587,13 @@ static void sdhci_gli_voltage_switch(struct sdhci_host *host)* * Wait 5ms after set 1.8V signal enable in Host Control 2 register * to ensure 1.8V signal enable bit is set by GL9750/GL9755. +* +* ...however, the controller in the NUC10i3FNK4 (a 9755) requires +* slightly longer than 5ms before the control register reports that +* 1.8V is ready, and far longer still before the card will actually +* work reliably. */ -usleep_range (5000 ,5500 ); +usleep_range (100000 ,110000 ); }static void sdhci_gl9750_reset (struct sdhci_host *host,u8 mask)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c +2 -1
@@ -1048,7 +1048,7 @@ int qlcnic_do_lb_test(struct qlcnic_adapter *adapter, u8 mode)for (i =0 ; i <QLCNIC_NUM_ILB_PKT ; i++) { skb =netdev_alloc_skb (adapter->netdev,QLCNIC_ILB_PKT_SIZE );if (!skb) -break ; + goto error;qlcnic_create_loopback_buff (skb->data, adapter->mac_addr);skb_put (skb,QLCNIC_ILB_PKT_SIZE ); adapter->ahw->diag_cnt =0 ;
@@ -1072,6 +1072,7 @@ int qlcnic_do_lb_test(struct qlcnic_adapter *adapter, u8 mode) cnt++; }if (cnt != i) { +error:dev_err (&adapter->pdev->dev,"LB Test: failed, TX[%d], RX[%d]\n" , i, cnt);if (mode !=QLCNIC_ILB_MODE )
drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c +4 -4
@@ -30,7 +30,7 @@ struct sunxi_priv_data {static int sun7i_gmac_init (struct platform_device *pdev,void *priv) {struct sunxi_priv_data *gmac = priv; -int ret; +int ret =0 ;if (gmac->regulator) { ret =regulator_enable (gmac->regulator);
@@ -51,11 +51,11 @@ static int sun7i_gmac_init(struct platform_device *pdev, void *priv) }else {clk_set_rate (gmac->tx_clk,SUN7I_GMAC_MII_RATE ); ret =clk_prepare (gmac->tx_clk); -if (ret) -return ret; +if (ret && gmac->regulator) +regulator_disable (gmac->regulator); } -return 0 ; +return ret; }static void sun7i_gmac_exit (struct platform_device *pdev,void *priv)
drivers/net/ethernet/sun/niu.c +20 -12
@@ -8144,10 +8144,10 @@ static int niu_pci_vpd_scan_props(struct niu *np, u32 start, u32 end)"VPD_SCAN: Reading in property [%s] len[%d]\n" , namebuf, prop_len);for (i =0 ; i < prop_len; i++) { - err =niu_pci_eeprom_read (np, off + i); -if (err >=0 ) - *prop_buf = err; - ++prop_buf; + err =niu_pci_eeprom_read (np, off + i); +if (err <0 ) +return err; + *prop_buf++ = err; } }
@@ -8158,14 +8158,14 @@ static int niu_pci_vpd_scan_props(struct niu *np, u32 start, u32 end) }/* ESPC_PIO_EN_ENABLE must be set */ -static void niu_pci_vpd_fetch (struct niu *np,u32 start) +static int niu_pci_vpd_fetch (struct niu *np,u32 start) {u32 offset;int err; err =niu_pci_eeprom_read16_swp (np, start +1 );if (err <0 ) -return ; +return err; offset = err +3 ;
@@ -8174,12 +8174,14 @@ static void niu_pci_vpd_fetch(struct niu *np, u32 start)u32 end; err =niu_pci_eeprom_read (np, here); +if (err <0 ) +return err;if (err !=0x90 ) -return ; +return -EINVAL ; err =niu_pci_eeprom_read16_swp (np, here +1 );if (err <0 ) -return ; +return err; here = start + offset +3 ; end = start + offset + err;
@@ -8187,9 +8189,12 @@ static void niu_pci_vpd_fetch(struct niu *np, u32 start) offset += err; err =niu_pci_vpd_scan_props (np, here, end); -if (err <0 || err ==1 ) -return ; +if (err <0 ) +return err; +if (err ==1 ) +return -EINVAL ; } +return 0 ; }/* ESPC_PIO_EN_ENABLE must be set */
@@ -9280,8 +9285,11 @@ static int niu_get_invariants(struct niu *np) offset =niu_pci_vpd_offset (np);netif_printk (np, probe,KERN_DEBUG , np->dev,"%s() VPD offset [%08x]\n" , __func__, offset); -if (offset) -niu_pci_vpd_fetch (np, offset); +if (offset) { + err =niu_pci_vpd_fetch (np, offset); +if (err <0 ) +return err; + }nw64 (ESPC_PIO_EN ,0 );if (np->flags &NIU_FLAGS_VPD_VALID ) {
drivers/net/wireless/realtek/rtlwifi/base.c +9 -9
@@ -440,9 +440,14 @@ static void rtl_watchdog_wq_callback(struct work_struct *work);static void rtl_fwevt_wq_callback (struct work_struct *work);static void rtl_c2hcmd_wq_callback (struct work_struct *work); -static void _rtl_init_deferred_work (struct ieee80211_hw *hw) +static int _rtl_init_deferred_work (struct ieee80211_hw *hw) {struct rtl_priv *rtlpriv =rtl_priv (hw); +struct workqueue_struct *wq; + + wq =alloc_workqueue ("%s" ,0 ,0 , rtlpriv->cfg->name); +if (!wq) +return -ENOMEM ;/* <1> timer */ timer_setup(&rtlpriv->works.watchdog_timer,
@@ -451,11 +456,7 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw) rtl_easy_concurrent_retrytimer_callback, 0);/* <2> work queue */ rtlpriv->works.hw = hw; - rtlpriv->works.rtl_wq =alloc_workqueue ("%s" ,0 ,0 , rtlpriv->cfg->name); -if (unlikely (!rtlpriv->works.rtl_wq)) { -pr_err ("Failed to allocate work queue\n" ); -return ; - } + rtlpriv->works.rtl_wq = wq;INIT_DELAYED_WORK (&rtlpriv->works.watchdog_wq, rtl_watchdog_wq_callback);
@@ -466,6 +467,7 @@ static void _rtl_init_deferred_work(struct ieee80211_hw *hw) rtl_swlps_rfon_wq_callback);INIT_DELAYED_WORK (&rtlpriv->works.fwevt_wq, rtl_fwevt_wq_callback);INIT_DELAYED_WORK (&rtlpriv->works.c2hcmd_wq, rtl_c2hcmd_wq_callback); +return 0 ; }void rtl_deinit_deferred_work (struct ieee80211_hw *hw,bool ips_wq)
@@ -565,9 +567,7 @@ int rtl_init_core(struct ieee80211_hw *hw) rtlmac->link_state =MAC80211_NOLINK ;/* <6> init deferred work */ -_rtl_init_deferred_work (hw); - -return 0 ; +return _rtl_init_deferred_work (hw); }EXPORT_SYMBOL_GPL (rtl_init_core);
drivers/nvme/host/core.c +2 -1
@@ -3190,7 +3190,7 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) ctrl->hmmaxd =le16_to_cpu (id->hmmaxd); } - ret =nvme_mpath_init (ctrl, id); + ret =nvme_mpath_init_identify (ctrl, id);kfree (id);if (ret <0 )
@@ -4580,6 +4580,7 @@ int nvme_init_ctrl(struct nvme_ctrl *ctrl, struct device *dev, min(default_ps_max_latency_us, (unsigned long)S32_MAX));nvme_fault_inject_init (&ctrl->fault_inject,dev_name (ctrl->device)); +nvme_mpath_init_ctrl (ctrl);return 0 ; out_free_name:
drivers/nvme/host/fc.c +12 -0
@@ -2460,6 +2460,18 @@ nvme_fc_terminate_exchange(struct request *req, void *data, bool reserved)static void __nvme_fc_abort_outstanding_ios (struct nvme_fc_ctrl *ctrl,bool start_queues) { +int q; + +/* +* if aborting io, the queues are no longer good, mark them +* all as not live. +*/ +if (ctrl->ctrl.queue_count >1 ) { +for (q =1 ; q < ctrl->ctrl.queue_count; q++) +clear_bit (NVME_FC_Q_LIVE , &ctrl->queues[q].flags); + } +clear_bit (NVME_FC_Q_LIVE , &ctrl->queues[0 ].flags); +/* * If io queues are present, stop them and terminate all outstanding * ios on them. As FC allocates FC exchange for each io, the
drivers/nvme/host/multipath.c +29 -26
75 lines not on this page · raw message
drivers/nvme/host/nvme.h +6 -2
@@ -668,7 +668,8 @@ void nvme_kick_requeue_lists(struct nvme_ctrl *ctrl);int nvme_mpath_alloc_disk (struct nvme_ctrl *ctrl,struct nvme_ns_head *head);void nvme_mpath_add_disk (struct nvme_ns *ns,struct nvme_id_ns *id);void nvme_mpath_remove_disk (struct nvme_ns_head *head); -int nvme_mpath_init (struct nvme_ctrl *ctrl,struct nvme_id_ctrl *id); +int nvme_mpath_init_identify (struct nvme_ctrl *ctrl,struct nvme_id_ctrl *id); +void nvme_mpath_init_ctrl (struct nvme_ctrl *ctrl);void nvme_mpath_uninit (struct nvme_ctrl *ctrl);void nvme_mpath_stop (struct nvme_ctrl *ctrl);bool nvme_mpath_clear_current_path (struct nvme_ns *ns);
@@ -742,7 +743,10 @@ static inline void nvme_mpath_check_last_path(struct nvme_ns *ns)static inline void nvme_trace_bio_complete (struct request *req) { } -static inline int nvme_mpath_init (struct nvme_ctrl *ctrl, +static inline void nvme_mpath_init_ctrl (struct nvme_ctrl *ctrl) +{ +} +static inline int nvme_mpath_init_identify (struct nvme_ctrl *ctrl,struct nvme_id_ctrl *id) {if (ctrl->subsys->cmic & (1 <<3 ))
drivers/nvme/host/tcp.c +3 -2
@@ -940,7 +940,6 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req)if (ret <=0 )return ret; -nvme_tcp_advance_req (req, ret);if (queue->data_digest)nvme_tcp_ddgst_update (queue->snd_hash, page, offset, ret);
@@ -957,6 +956,7 @@ static int nvme_tcp_try_send_data(struct nvme_tcp_request *req) }return 1 ; } +nvme_tcp_advance_req (req, ret); }return -EAGAIN ; }
@@ -1137,7 +1137,8 @@ static void nvme_tcp_io_work(struct work_struct *w) pending = true; else if (unlikely(result < 0)) break; - } + }else + pending = !llist_empty (&queue->req_list); result =nvme_tcp_try_recv (queue);if (result >0 )
drivers/nvme/target/core.c +1 -1
@@ -1371,7 +1371,7 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn, goto out_free_changed_ns_list;if (subsys->cntlid_min > subsys->cntlid_max) - goto out_free_changed_ns_list; + goto out_free_sqs; ret = ida_simple_get(&cntlid_ida, subsys->cntlid_min, subsys->cntlid_max,
drivers/nvme/target/io-cmd-file.c +5 -3
@@ -49,9 +49,11 @@ int nvmet_file_ns_enable(struct nvmet_ns *ns) ns->file =filp_open (ns->device_path, flags,0 );if (IS_ERR (ns->file)) { -pr_err ("failed to open file %s: (%ld)\n" , - ns->device_path,PTR_ERR (ns->file)); -return PTR_ERR (ns->file); + ret =PTR_ERR (ns->file); +pr_err ("failed to open file %s: (%d)\n" , + ns->device_path, ret); + ns->file =NULL ; +return ret; } ret =nvmet_file_ns_revalidate (ns);
drivers/nvme/target/loop.c +3 -1
@@ -588,8 +588,10 @@ static struct nvme_ctrl *nvme_loop_create_ctrl(struct device *dev, ret =nvme_init_ctrl (&ctrl->ctrl, dev, &nvme_loop_ctrl_ops,0 /* no quirks, we're perfect! */ ); -if (ret) +if (ret) { +kfree (ctrl); goto out; + }if (!nvme_change_ctrl_state (&ctrl->ctrl,NVME_CTRL_CONNECTING ))WARN_ON_ONCE (1 );
drivers/platform/mellanox/mlxbf-tmfifo.c +10 -1
@@ -294,6 +294,9 @@ mlxbf_tmfifo_get_next_desc(struct mlxbf_tmfifo_vring *vring)if (vring->next_avail ==virtio16_to_cpu (vdev, vr->avail->idx))return NULL ; +/* Make sure 'avail->idx' is visible already. */ +virtio_rmb (false); + idx = vring->next_avail % vr->num; head =virtio16_to_cpu (vdev, vr->avail->ring[idx]);if (WARN_ON (head >= vr->num))
@@ -322,7 +325,7 @@ static void mlxbf_tmfifo_release_desc(struct mlxbf_tmfifo_vring *vring,* done or not. Add a memory barrier here to make sure the update above * completes before updating the idx. */ -mb (); +virtio_mb (false); vr->used->idx =cpu_to_virtio16 (vdev, vr_idx +1 ); }
@@ -733,6 +736,12 @@ static bool mlxbf_tmfifo_rxtx_one_desc(struct mlxbf_tmfifo_vring *vring, desc =NULL ; fifo->vring[is_rx] =NULL ; +/* +* Make sure the load/store are in order before +* returning back to virtio. +*/ +virtio_mb (false); +/* Notify upper layer that packet is done. */ spin_lock_irqsave (&fifo->spin_lock[is_rx], flags);vring_interrupt (0 , vring->vq);
drivers/platform/x86/Kconfig +1 -1
@@ -688,7 +688,7 @@ config INTEL_HID_EVENT config INTEL_INT0002_VGPIO tristate "Intel ACPI INT0002 Virtual GPIO driver" - depends on GPIOLIB && ACPI + depends on GPIOLIB && ACPI && PM_SLEEP select GPIOLIB_IRQCHIP help Some peripherals on Bay Trail and Cherry Trail platforms signal a
drivers/platform/x86/dell/dell-smbios-wmi.c +2 -1
@@ -271,7 +271,8 @@ int init_dell_smbios_wmi(void)void exit_dell_smbios_wmi (void ) { -wmi_driver_unregister (&dell_smbios_wmi_driver); +if (wmi_supported) +wmi_driver_unregister (&dell_smbios_wmi_driver); }MODULE_DEVICE_TABLE (wmi, dell_smbios_wmi_id_table);
drivers/platform/x86/ideapad-laptop.c +7 -6
@@ -57,8 +57,8 @@ enum { };enum { -SMBC_CONSERVATION_ON =3 , -SMBC_CONSERVATION_OFF =5 , +SBMC_CONSERVATION_ON =3 , +SBMC_CONSERVATION_OFF =5 , };enum {
@@ -182,9 +182,9 @@ static int eval_gbmd(acpi_handle handle, unsigned long *res)return eval_int (handle,"GBMD" , res); } -static int exec_smbc (acpi_handle handle,unsigned long arg) +static int exec_sbmc (acpi_handle handle,unsigned long arg) { -return exec_simple_method (handle,"SMBC" , arg); +return exec_simple_method (handle,"SBMC" , arg); }static int eval_hals (acpi_handle handle,unsigned long *res)
@@ -477,7 +477,7 @@ static ssize_t conservation_mode_store(struct device *dev,if (err)return err; - err =exec_smbc (priv->adev->handle, state ?SMBC_CONSERVATION_ON :SMBC_CONSERVATION_OFF ); + err =exec_sbmc (priv->adev->handle, state ?SBMC_CONSERVATION_ON :SBMC_CONSERVATION_OFF );if (err)return err;
@@ -809,6 +809,7 @@ static int dytc_profile_set(struct platform_profile_handler *pprof, { struct ideapad_dytc_priv *dytc = container_of(pprof, struct ideapad_dytc_priv, pprof);struct ideapad_private *priv = dytc->priv; +unsigned long output;int err; err =mutex_lock_interruptible (&dytc->mutex);
@@ -829,7 +830,7 @@ static int dytc_profile_set(struct platform_profile_handler *pprof,/* Determine if we are in CQL mode. This alters the commands we do */ err =dytc_cql_command (priv,DYTC_SET_COMMAND (DYTC_FUNCTION_MMC , perfmode,1 ), -NULL ); + &output);if (err) goto unlock; }
drivers/platform/x86/intel_int0002_vgpio.c +56 -24
147 lines not on this page · raw message
drivers/rapidio/rio_cm.c +8 -9
@@ -2127,6 +2127,14 @@ static int riocm_add_mport(struct device *dev,return -ENODEV ; } + cm->rx_wq =create_workqueue (DRV_NAME "/rxq" ); +if (!cm->rx_wq) { +rio_release_inb_mbox (mport, cmbox); +rio_release_outb_mbox (mport, cmbox); +kfree (cm); +return -ENOMEM ; + } +/* * Allocate and register inbound messaging buffers to be ready * to receive channel and system management requests
@@ -2137,15 +2145,6 @@ static int riocm_add_mport(struct device *dev, cm->rx_slots =RIOCM_RX_RING_SIZE ;mutex_init (&cm->rx_lock);riocm_rx_fill (cm,RIOCM_RX_RING_SIZE ); - cm->rx_wq =create_workqueue (DRV_NAME "/rxq" ); -if (!cm->rx_wq) { -riocm_error ("failed to allocate IBMBOX_%d on %s" , - cmbox, mport->name); -rio_release_outb_mbox (mport, cmbox); -kfree (cm); -return -ENOMEM ; - } -INIT_WORK (&cm->rx_work, rio_ibmsg_handler); cm->tx_slot =0 ;
drivers/rtc/rtc-pcf85063.c +3 -4
@@ -478,6 +478,7 @@ static struct clk *pcf85063_clkout_register_clk(struct pcf85063 *pcf85063) {struct clk *clk;struct clk_init_data init; +struct device_node *node = pcf85063->rtc->dev.parent->of_node; init.name ="pcf85063-clkout" ; init.ops = &pcf85063_clkout_ops;
@@ -487,15 +488,13 @@ static struct clk *pcf85063_clkout_register_clk(struct pcf85063 *pcf85063) pcf85063->clkout_hw.init = &init;/* optional override of the clockname */ -of_property_read_string (pcf85063->rtc->dev.of_node, -"clock-output-names" , &init.name); +of_property_read_string (node,"clock-output-names" , &init.name);/* register the clock */ clk =devm_clk_register (&pcf85063->rtc->dev, &pcf85063->clkout_hw);if (!IS_ERR (clk)) -of_clk_add_provider (pcf85063->rtc->dev.of_node, - of_clk_src_simple_get, clk); +of_clk_add_provider (node, of_clk_src_simple_get, clk);return clk; }
drivers/scsi/qedf/qedf_main.c +3 -1
@@ -536,7 +536,9 @@ static void qedf_update_link_speed(struct qedf_ctx *qedf,if (linkmode_intersects (link->supported_caps, sup_caps)) lport->link_supported_speeds |=FC_PORTSPEED_20GBIT ; -fc_host_supported_speeds (lport->host) = lport->link_supported_speeds; +if (lport->host && lport->host->shost_data) +fc_host_supported_speeds (lport->host) = + lport->link_supported_speeds; }static void qedf_bw_update (void *dev)
drivers/scsi/qla2xxx/qla_nx.c +2 -1
@@ -1063,7 +1063,8 @@ qla82xx_write_flash_dword(struct qla_hw_data *ha, uint32_t flashaddr,return ret; } -if (qla82xx_flash_set_write_enable (ha)) + ret =qla82xx_flash_set_write_enable (ha); +if (ret <0 ) goto done_write;qla82xx_wr_32 (ha,QLA82XX_ROMUSB_ROM_WDATA , data);
drivers/scsi/ufs/ufs-hisi.c +9 -6
@@ -467,21 +467,24 @@ static int ufs_hisi_init_common(struct ufs_hba *hba) host->hba = hba;ufshcd_set_variant (hba, host); - host->rst =devm_reset_control_get (dev,"rst" ); + host->rst =devm_reset_control_get (dev,"rst" );if (IS_ERR (host->rst)) {dev_err (dev,"%s: failed to get reset control\n" , __func__); -return PTR_ERR (host->rst); + err =PTR_ERR (host->rst); + goto error; }ufs_hisi_set_pm_lvl (hba); err =ufs_hisi_get_resource (host); -if (err) { -ufshcd_set_variant (hba,NULL ); -return err; - } +if (err) + goto error;return 0 ; + +error: +ufshcd_set_variant (hba,NULL ); +return err; }static int ufs_hi3660_init (struct ufs_hba *hba)
drivers/scsi/ufs/ufshcd.c +4 -1
@@ -2849,7 +2849,7 @@ static int ufshcd_wait_for_dev_cmd(struct ufs_hba *hba,* ufshcd_exec_dev_cmd - API for sending device management requests * @hba: UFS hba * @cmd_type: specifies the type (NOP, Query...) -* @timeout: time in seconds +* @timeout: timeout in milliseconds * * NOTE: Since there is only one available tag for device management commands, * it is expected you hold the hba->dev_cmd.lock mutex.
@@ -2879,6 +2879,9 @@ static int ufshcd_exec_dev_cmd(struct ufs_hba *hba, } tag = req->tag;WARN_ON_ONCE (!ufshcd_valid_tag (hba, tag)); +/* Set the timeout such that the SCSI error handler is not activated. */ + req->timeout =msecs_to_jiffies (2 * timeout); +blk_mq_start_request (req);init_completion (&wait); lrbp = &hba->lrb[tag];
drivers/tee/amdtee/amdtee_private.h +13 -0
@@ -21,6 +21,7 @@#define TEEC_SUCCESS 0x00000000#define TEEC_ERROR_GENERIC 0xFFFF0000#define TEEC_ERROR_BAD_PARAMETERS 0xFFFF0006 +#define TEEC_ERROR_OUT_OF_MEMORY 0xFFFF000C#define TEEC_ERROR_COMMUNICATION 0xFFFF000E#define TEEC_ORIGIN_COMMS 0x00000002
@@ -93,6 +94,18 @@ struct amdtee_shm_data {u32 buf_id; }; +/** +* struct amdtee_ta_data - Keeps track of all TAs loaded in AMD Secure +* Processor +* @ta_handle: Handle to TA loaded in TEE +* @refcount: Reference count for the loaded TA +*/ +struct amdtee_ta_data { +struct list_head list_node; +u32 ta_handle; +u32 refcount; +}; +#define LOWER_TWO_BYTE_MASK 0x0000FFFF/**
drivers/tee/amdtee/call.c +84 -10
133 lines not on this page · raw message
drivers/tty/vt/vt_ioctl.c +47 -10
57 lines not on this page · raw message
drivers/video/console/vgacon.c +32 -24
56 lines not on this page · raw message
sound/firewire/amdtp-stream.c +25 -17
42 lines not on this page · raw message
sound/firewire/dice/dice-tcelectronic.c +2 -2
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +134 -1
135 lines not on this page · raw message
tools/testing/selftests/seccomp/seccomp_bpf.c +18 -9
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.