5.10.4-rc1 review
Subsystems (8)
Greg Kroah-Hartman
maintainercover 5.10.4-rc1 review
This is the start of the stable review cycle for the 5.10.4 release. There are 717 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Wed, 30 Dec 2020 12:48:23 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.4-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.10.4-rc1
Damien Le Moal <[email protected]>
null_blk: Fail zone append to conventional zones
Damien Le Moal <[email protected]>
null_blk: Fix zone size initialization
Steven Rostedt (VMware) <[email protected]>
Revert: "ring-buffer: Remove HAVE_64BIT_ALIGNED_ACCESS"
Nikita Shubin <[email protected]>
rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time
Zhuguangqing <[email protected]>
thermal/drivers/cpufreq_cooling: Update cpufreq_state only if state has changed
Bjorn Andersson <[email protected]>
remoteproc: sysmon: Ensure remote notification ordering
DingHua Ma <[email protected]>
regulator: axp20x: Fix DLDO2 voltage control register mask for AXP22x
Jubin Zhong <[email protected]>
PCI: Fix pci_slot_release() NULL pointer dereference
Johan Hovold <[email protected]>
of: fix linker-section match-table corruption
Felix Fietkau <[email protected]>
mt76: add back the SUPPORTS_REORDERING_BUFFER flag
Masami Hiramatsu <[email protected]>
tracing: Disable ftrace selftests when any tracer is running
Carlos Garnacho <[email protected]>
platform/x86: intel-vbtn: Allow switch events on Acer Switch Alpha 12
Dan Williams <[email protected]>
libnvdimm/namespace: Fix reaping of invalidated block-window-namespace labels
Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Fix unbalanced pm_runtime_enable in rpcif_{enable,disable}_rpm
Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Return correct value to the caller of rpcif_manual_xfer()
Lad Prabhakar <[email protected]>
memory: renesas-rpc-if: Fix a node reference leak in rpcif_probe()
Dan Carpenter <[email protected]>
memory: jz4780_nemc: Fix an error pointer vs NULL check in probe()
SeongJae Park <[email protected]>
xenbus/xenbus_backend: Disallow pending watch messages
SeongJae Park <[email protected]>
xen/xenbus: Count pending messages for each watch
SeongJae Park <[email protected]>
xen/xenbus/xen_bus_type: Support will_handle watch callback
SeongJae Park <[email protected]>
xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path()
SeongJae Park <[email protected]>
xen/xenbus: Allow watches discard events before queueing
Pawel Wieczorkiewicz <[email protected]>
xen-blkback: set ring->xenblkd to NULL after kthread_stop()
Takashi Iwai <[email protected]>
driver: core: Fix list corruption after device_del()
Maarten Lankhorst <[email protected]>
dma-buf/dma-resv: Respect num_fences when initializing the shared fence list.
Wang Hai <[email protected]>
device-dax/core: Fix memory leak when rmmod dax.ko
William Breathitt Gray <[email protected]>
counter: microchip-tcb-capture: Fix CMR value check
Nicolin Chen <[email protected]>
clk: tegra: Do not return 0 on failure
Terry Zhou <[email protected]>
clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9
Paul Cercueil <[email protected]>
clk: ingenic: Fix divider calculation with div tables
Yangtao Li <[email protected]>
pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler
Zhao Heming <[email protected]>
md/cluster: fix deadlock when node is doing resync job
Zhao Heming <[email protected]>
md/cluster: block reshape with remote resync job
Jonathan Cameron <[email protected]>
iio:adc:ti-ads124s08: Fix alignment and data leak issues.
Jonathan Cameron <[email protected]>
iio:adc:ti-ads124s08: Fix buffer being too long.
Jonathan Cameron <[email protected]>
iio:imu:bmi160: Fix alignment and data leak issues
Jonathan Cameron <[email protected]>
iio:imu:bmi160: Fix too large a buffer.
Jonathan Cameron <[email protected]>
iio:pressure:mpl3115: Force alignment of buffer
Jonathan Cameron <[email protected]>
iio:magnetometer:mag3110: Fix alignment and data leak issues.
Jonathan Cameron <[email protected]>
iio:light:st_uvis25: Fix timestamp alignment and prevent data leak.
Jonathan Cameron <[email protected]>
iio:light:rpr0521: Fix timestamp alignment and prevent data leak.
Lorenzo Bianconi <[email protected]>
iio: imu: st_lsm6dsx: fix edge-trigger interrupts
Qinglang Miao <[email protected]>
iio: adc: rockchip_saradc: fix missing clk_disable_unprepare() on error in rockchip_saradc_resume
Nuno Sá <[email protected]>
iio: buffer: Fix demux update
Aleksa Sarai <[email protected]>
openat2: reject RESOLVE_BENEATH|RESOLVE_IN_ROOT
James Smart <[email protected]>
scsi: lpfc: Re-fix use after free in lpfc_rq_buf_free()
James Smart <[email protected]>
scsi: lpfc: Fix scheduling call while in softirq context in lpfc_unreg_rpi
James Smart <[email protected]>
scsi: lpfc: Fix invalid sleeping context in lpfc_sli4_nvmet_alloc()
Arun Easi <[email protected]>
scsi: qla2xxx: Fix crash during driver load on big endian machines
Sergei Antonov <[email protected]>
mtd: rawnand: meson: fix meson_nfc_dma_buffer_release() arguments
Praveenkumar I <[email protected]>
mtd: rawnand: qcom: Fix DMA sync on FLASH_STATUS register read
Richard Weinberger <[email protected]>
mtd: core: Fix refcounting for unpartitioned MTDs
Sven Eckelmann <[email protected]>
mtd: parser: cmdline: Fix parsing of part-names with colons
Miquel Raynal <[email protected]>
mtd: spinand: Fix OOB read
Evan Green <[email protected]>
soc: qcom: smp2p: Safely acquire spinlock without IRQs
Tudor Ambarus <[email protected]>
spi: atmel-quadspi: Fix AHB memory accesses
Lukas Wunner <[email protected]>
spi: atmel-quadspi: Disable clock in probe error path
Lukas Wunner <[email protected]>
spi: mt7621: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: mt7621: Disable clock in probe error path
Lukas Wunner <[email protected]>
spi: synquacer: Disable clock in probe error path
Lukas Wunner <[email protected]>
spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path
Lukas Wunner <[email protected]>
spi: spi-qcom-qspi: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: spi-geni-qcom: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: sc18is602: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: rpc-if: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: rb4xx: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: pic32: Don't leak DMA channels in probe error path
Lukas Wunner <[email protected]>
spi: npcm-fiu: Disable clock in probe error path
Lukas Wunner <[email protected]>
spi: mxic: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: gpio: Don't leak SPI master in probe error path
Rasmus Villemoes <[email protected]>
spi: fsl: fix use of spisel_boot signal on MPC8309
Lukas Wunner <[email protected]>
spi: davinci: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: ar934x: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: spi-mtk-nor: Don't leak SPI master in probe error path
Lukas Wunner <[email protected]>
spi: atmel-quadspi: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: spi-sh: Fix use-after-free on unbind
Lukas Wunner <[email protected]>
spi: pxa2xx: Fix use-after-free on unbind
Lars-Peter Clausen <[email protected]>
iio: ad_sigma_delta: Don't put SPI transfer buffer on the stack
Chris Wilson <[email protected]>
drm/i915: Fix mismatch between misplaced vma check and vma insert
Zwane Mwaikambo <[email protected]>
drm/dp_aux_dev: check aux_dev before use in drm_dp_aux_dev_get_by_minor()
Stylon Wang <[email protected]>
drm/amd/display: Fix memory leaks in S3 resume
Alex Deucher <[email protected]>
drm/amdgpu: only set DP subconnector type on DP and eDP connectors
Bas Nieuwenhuizen <[email protected]>
drm/amd/display: Honor the offset for plane 0.
Boris Brezillon <[email protected]>
drm/panfrost: Move the GPU reset bits outside the timeout handler
Boris Brezillon <[email protected]>
drm/panfrost: Fix job timeout handling
Dave Kleikamp <[email protected]>
jfs: Fix array index bounds check in dbAdjTree
Amir Goldstein <[email protected]>
fsnotify: fix events reported to watching parent and child
Amir Goldstein <[email protected]>
inotify: convert to handle_inode_event() interface
Amir Goldstein <[email protected]>
fsnotify: generalize handle_inode_event()
lizhe <[email protected]>
jffs2: Fix ignoring mounting options problem during remounting
Zhe Li <[email protected]>
jffs2: Fix GC exit abnormally
Richard Weinberger <[email protected]>
ubifs: wbuf: Don't leak kernel memory to flash
Steve French <[email protected]>
SMB3.1.1: do not log warning message if server doesn't populate salt
Steve French <[email protected]>
SMB3.1.1: remove confusing mount warning when no SPNEGO info on negprot rsp
Steve French <[email protected]>
SMB3: avoid confusing warning message on mount to Azure
Luis Henriques <[email protected]>
ceph: fix race in concurrent __ceph_remove_cap invocations
Johannes Berg <[email protected]>
um: Fix time-travel mode
Anton Ivanov <[email protected]>
um: Remove use of asprinf in umid.c
Roberto Sassu <[email protected]>
ima: Don't modify file descriptor mode on the fly
Miklos Szeredi <[email protected]>
ovl: make ioctl() safe
David Hildenbrand <[email protected]>
powerpc/powernv/memtrace: Fix crashing the kernel when enabling concurrently
David Hildenbrand <[email protected]>
powerpc/powernv/memtrace: Don't leak kernel memory to user space
Alexey Kardashevskiy <[email protected]>
powerpc/powernv/npu: Do not attempt NPU2 setup on POWER8NVL NPU
Christophe Leroy <[email protected]>
powerpc/mm: Fix verification of MMU_FTR_TYPE_44x
Christophe Leroy <[email protected]>
powerpc/8xx: Fix early debug when SMC1 is relocated
Christophe Leroy <[email protected]>
powerpc/xmon: Change printk() to pr_cont()
Christophe Leroy <[email protected]>
powerpc/feature: Add CPU_FTR_NOEXECUTE to G2_LE
Christophe Leroy <[email protected]>
powerpc/bitops: Fix possible undefined behaviour with fls() and fls64()
Tyrel Datwyler <[email protected]>
powerpc/rtas: Fix typo of ibm,open-errinjct in RTAS filter
Mathieu Desnoyers <[email protected]>
powerpc: Fix incorrect stw{, ux, u, x} instructions in __set_pte_at
Christophe Leroy <[email protected]>
powerpc/32: Fix vmap stack - Properly set r1 before activating MMU on syscall too
Chuck Lever <[email protected]>
xprtrdma: Fix XDRBUF_SPARSE_PAGES support
Jon Hunter <[email protected]>
ARM: tegra: Populate OPP table for Tegra20 Ventana
Nicolas Ferre <[email protected]>
ARM: dts: at91: sama5d2: fix CAN message ram offset and size
H. Nikolaus Schaller <[email protected]>
ARM: dts: pandaboard: fix pinmux for gpio user button of Pandaboard ES
Bjorn Andersson <[email protected]>
iommu/arm-smmu-qcom: Implement S2CR quirk
Bjorn Andersson <[email protected]>
iommu/arm-smmu-qcom: Read back stream mappings
Bjorn Andersson <[email protected]>
iommu/arm-smmu: Allow implementation specific write_s2cr
Tom Lendacky <[email protected]>
KVM: SVM: Remove the call to sev_platform_status() during setup
Paolo Bonzini <[email protected]>
KVM: x86: reinstate vendor-agnostic check on SPEC_CTRL cpuid bits
Marc Zyngier <[email protected]>
KVM: arm64: Introduce handling of AArch32 TTBCR2 traps
Tomasz Nowicki <[email protected]>
arm64: dts: marvell: keep SMMU disabled by default for Armada 7040 and 8040
Tomi Valkeinen <[email protected]>
arm64: dts: ti: k3-am65: mark dss as dma-coherent
Atish Patra <[email protected]>
RISC-V: Fix usage of memblock_enforce_memory_limit
Jan Kara <[email protected]>
ext4: don't remount read-only with errors=continue on reboot
Jan Kara <[email protected]>
ext4: fix deadlock with fs freezing and EA inodes
Chunguang Xu <[email protected]>
ext4: fix a memory leak of ext4_free_data
Dan Carpenter <[email protected]>
ext4: fix an IS_ERR() vs NULL check
Filipe Manana <[email protected]>
btrfs: fix race when defragmenting leads to unnecessary IO
Josef Bacik <[email protected]>
btrfs: update last_byte_to_unpin in switch_commit_roots
Josef Bacik <[email protected]>
btrfs: do not shorten unpin len for caching block groups
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write unthrottling
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix tx-unthrottle use-after-free
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write-wakeup use-after-free
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix stalled writes
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix write deadlock
Johan Hovold <[email protected]>
USB: serial: keyspan_pda: fix dropped unthrottle interrupts
Johan Hovold <[email protected]>
USB: serial: digi_acceleport: fix write-wakeup deadlocks
Johan Hovold <[email protected]>
USB: serial: mos7720: fix parallel-port state restore
Jim Cromie <[email protected]>
dyndbg: fix use before null check
Daniel Jordan <[email protected]>
cpuset: fix race between hotplug work and later CPU offline
Borislav Petkov <[email protected]>
EDAC/amd64: Fix PCI component registration
Qiuxu Zhuo <[email protected]>
EDAC/i10nm: Use readl() to access MMIO registers
Ahmed S. Darwish <[email protected]>
Documentation: seqlock: s/LOCKTYPE/LOCKNAME/g
Finn Thain <[email protected]>
m68k: Fix WARNING splat in pmac_zilog driver
Ard Biesheuvel <[email protected]>
crypto: arm/aes-ce - work around Cortex-A57/A72 silion errata
Ard Biesheuvel <[email protected]>
crypto: ecdh - avoid unaligned accesses in ecdh_set_secret()
Rafael J. Wysocki <[email protected]>
cpufreq: intel_pstate: Use most recent guaranteed performance values
Athira Rajeev <[email protected]>
powerpc/perf: Exclude kernel samples while counting events in user space.
Kan Liang <[email protected]>
perf/x86/intel/lbr: Fix the return type of get_lbr_cycles()
Kan Liang <[email protected]>
perf/x86/intel: Fix rtm_abort_event encoding on Ice Lake
Kan Liang <[email protected]>
perf/x86/intel: Add event constraint for CYCLE_ACTIVITY.STALLS_MEM_ANY
Vitaly Wool <[email protected]>
z3fold: stricter locking and more careful reclaim
Vitaly Wool <[email protected]>
z3fold: simplify freeing slots
Ian Abbott <[email protected]>
staging: comedi: mf6x4: Fix AI end-of-conversion detection
Jaroslav Kysela <[email protected]>
ASoC: AMD Raven/Renoir - fix the PCI probe (PCI revision)
Jaroslav Kysela <[email protected]>
ASoC: AMD Renoir - add DMI table to avoid the ACP mic probe (broken BIOS)
Takashi Iwai <[email protected]>
ASoC: cx2072x: Fix doubly definitions of Playback and Capture streams
Todd Kjos <[email protected]>
binder: add flag to clear buffer on txn complete
Stefan Haberland <[email protected]>
s390/dasd: fix list corruption of lcu list
Stefan Haberland <[email protected]>
s390/dasd: fix list corruption of pavgroup group list
Stefan Haberland <[email protected]>
s390/dasd: prevent inconsistent LCU device data
Stefan Haberland <[email protected]>
s390/dasd: fix hanging device offline processing
Sven Schnelle <[email protected]>
s390/idle: fix accounting with machine checks
Sven Schnelle <[email protected]>
s390/idle: add missing mt_cycles calculation
Philipp Rudo <[email protected]>
s390/kexec_file: fix diag308 subcode when loading crash kernel
Sven Schnelle <[email protected]>
s390/smp: perform initial CPU reset also for SMT siblings
Robin Gong <[email protected]>
ALSA: core: memalloc: add page alignment for iram
Takashi Iwai <[email protected]>
ALSA: usb-audio: Add alias entry for ASUS PRIME TRX40 PRO-S
Takashi Iwai <[email protected]>
ALSA: usb-audio: Disable sample read check if firmware doesn't give back
Amadej Kastelic <[email protected]>
ALSA: usb-audio: Add VID to support native DSD reproduction on FiiO devices
Kailang Yang <[email protected]>
ALSA: hda/realtek - Supported Dell fixed type headset
Chris Chiu <[email protected]>
ALSA: hda/realtek: Remove dummy lineout on Acer TravelMate P648/P658
Chris Chiu <[email protected]>
ALSA: hda/realtek: Apply jack fixup for Quanta NL3
Takashi Iwai <[email protected]>
ALSA: hda/realtek: Add quirk for MSI-GP73
Chris Chiu <[email protected]>
ALSA/hda: apply jack fixup for the Acer Veriton N4640G/N6640G/N2510G
Takashi Iwai <[email protected]>
ALSA: pcm: oss: Fix a few more UBSAN fixes
Kailang Yang <[email protected]>
ALSA: hda/realtek - Add supported for more Lenovo ALC285 Headset Button
Chris Chiu <[email protected]>
ALSA: hda/realtek - Enable headset mic of ASUS Q524UQK with ALC255
Chris Chiu <[email protected]>
ALSA: hda/realtek - Enable headset mic of ASUS X430UN with ALC256
Hui Wang <[email protected]>
ALSA: hda/realtek: make bass spk volume adjustable on a yoga laptop
Connor McAdams <[email protected]>
ALSA: hda/ca0132 - Fix AE-5 rear headphone pincfg.
Takashi Iwai <[email protected]>
ALSA: hda: Fix regressions on clear and reconfig sysfs
Hui Wang <[email protected]>
ACPI: PNP: compare the string length in the matching_id()
Daniel Scally <[email protected]>
Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources walks"
Rafael J. Wysocki <[email protected]>
PM: ACPI: PCI: Drop acpi_pm_set_bridge_wakeup()
Dan Williams <[email protected]>
ACPI: NFIT: Fix input validation of bus-family
Connor McAdams <[email protected]>
ALSA: hda/ca0132 - Change Input Source enum strings.
Arnd Bergmann <[email protected]>
Input: cyapa_gen6 - fix out-of-bounds stack access
Sakari Ailus <[email protected]>
media: ipu3-cio2: Make the field on subdev format V4L2_FIELD_NONE
Sakari Ailus <[email protected]>
media: ipu3-cio2: Validate mbus format in setting subdev format
Sakari Ailus <[email protected]>
media: ipu3-cio2: Serialise access to pad format
Sakari Ailus <[email protected]>
media: ipu3-cio2: Return actual subdev format
Sakari Ailus <[email protected]>
media: ipu3-cio2: Remove traces of returned buffers
Lukas Wunner <[email protected]>
media: netup_unidvb: Don't leak SPI master in probe error path
Sean Young <[email protected]>
media: sunxi-cir: ensure IR is handled when it is continuous
Jens Axboe <[email protected]>
io_uring: make ctx cancel on exit targeted to actual ctx
Pavel Begunkov <[email protected]>
io_uring: fix double io_uring free
Pavel Begunkov <[email protected]>
io_uring: fix ignoring xa_store errors
Xiaoguang Wang <[email protected]>
io_uring: hold uring_lock while completing failed polled io in io_wq_submit_work()
Pavel Begunkov <[email protected]>
io_uring: fix 0-iov read buffer select
Xiaoguang Wang <[email protected]>
io_uring: fix io_wqe->work_list corruption
Alan Stern <[email protected]>
media: gspca: Fix memory leak in probe
Alexey Kardashevskiy <[email protected]>
vfio/pci/nvlink2: Do not attempt NPU2 setup on POWER8NVL NPU
Eric Auger <[email protected]>
vfio/pci: Move dummy_resources_list init in vfio_pci_probe()
Xiaoguang Wang <[email protected]>
io_uring: always let io_iopoll_complete() complete polled io
Pavel Begunkov <[email protected]>
io_uring: fix racy IOPOLL completions
Pavel Begunkov <[email protected]>
io_uring: fix io_cqring_events()'s noflush
Linus Torvalds <[email protected]>
proc mountinfo: make splice available again
Casey Schaufler <[email protected]>
Smack: Handle io_uring kernel thread privileges
Pavel Begunkov <[email protected]>
io_uring: cancel reqs shouldn't kill overflow list
Pavel Begunkov <[email protected]>
io_uring: fix racy IOPOLL flush overflow
Arnaldo Carvalho de Melo <[email protected]>
perf probe: Fix memory leak when synthesizing SDT probes
Geert Uytterhoeven <[email protected]>
ARM: 9036/1: uncompress: Fix dbgadtb size parameter name
Ard Biesheuvel <[email protected]>
ARM: 9044/1: vfp: use undef hook for VFP support detection
Cédric Le Goater <[email protected]>
powerpc/smp: Add __init to init_big_cores()
Michael Ellerman <[email protected]>
powerpc/boot: Fix build of dts/fsl
Masahiro Yamada <[email protected]>
kconfig: fix return value of do_error_if()
Geert Uytterhoeven <[email protected]>
clk: vc5: Use "idt,voltage-microvolt" instead of "idt,voltage-microvolts"
Jernej Skrabec <[email protected]>
clk: sunxi-ng: Make sure divider tables have sentinel
Christophe JAILLET <[email protected]>
clk: s2mps11: Fix a resource leak in error handling paths in the probe function
Alexandre Belloni <[email protected]>
clk: at91: sam9x60: remove atmel,osc-bypass support
Claudiu Beznea <[email protected]>
clk: at91: sama7g5: fix compilation error
Nicolas Saenz Julienne <[email protected]>
clk: bcm: dvp: Add MODULE_DEVICE_TABLE()
Soheil Hassas Yeganeh <[email protected]>
epoll: check for events when removing a timed out thread from the wait queue
Zhang Changzhong <[email protected]>
vhost scsi: fix error return code in vhost_scsi_set_endpoint()
Dan Carpenter <[email protected]>
virtio_ring: Fix two use after free bugs
Dan Carpenter <[email protected]>
virtio_net: Fix error code in probe()
Dan Carpenter <[email protected]>
virtio_ring: Cut and paste bugs in vring_create_virtqueue_packed()
Eli Cohen <[email protected]>
vdpa/mlx5: Use write memory barrier after updating CQ index
Simon Horman <[email protected]>
nfp: move indirect block cleanup to flower app stop callback
Dan Carpenter <[email protected]>
qlcnic: Fix error code in probe
Zheng Zengkai <[email protected]>
perf record: Fix memory leak when using '--user-regs=?' to list registers
Jiri Olsa <[email protected]>
tools build: Add missing libcap to test-all.bin target
Pavel Begunkov <[email protected]>
io_uring: cancel only requests of current task
Thierry Reding <[email protected]>
pwm: sun4i: Remove erroneous else branch
Uwe Kleine-König <[email protected]>
pwm: imx27: Fix overflow for bigger periods
Lokesh Vutla <[email protected]>
pwm: lp3943: Dynamically allocate PWM chip base
Uwe Kleine-König <[email protected]>
pwm: zx: Add missing cleanup in error path
Zhang Qilong <[email protected]>
clk: ti: Fix memleak in ti_fapll_synth_setup
Arnd Bergmann <[email protected]>
watchdog: coh901327: add COMMON_CLK dependency
Manivannan Sadhasivam <[email protected]>
watchdog: qcom: Avoid context switch in restart handler
Michael Ellerman <[email protected]>
powerpc/32s: Fix cleanup_cpu_mmu_context() compile bug
Zhang Qilong <[email protected]>
libnvdimm/label: Return -ENXIO for no slot in __blk_label_update
Tobias Klauser <[email protected]>
devlink: use _BITUL() macro instead of BIT() in the UAPI header
Vincent Stehlé <[email protected]>
net: korina: fix return value
Trond Myklebust <[email protected]>
NFS/pNFS: Fix a typo in ff_layout_resend_pnfs_read()
Jack Wang <[email protected]>
block/rnbd-clt: Fix possible memleak
Md Haris Iqbal <[email protected]>
block/rnbd-clt: Get rid of warning regarding size argument in strlcpy
Christophe JAILLET <[email protected]>
net: allwinner: Fix some resources leak in the error handling path of the probe and in the remove function
Christophe JAILLET <[email protected]>
net: mscc: ocelot: Fix a resource leak in the error handling path of the probe function
Christophe JAILLET <[email protected]>
net: bcmgenet: Fix a resource leak in an error handling path in the probe functin
Ioana Ciornei <[email protected]>
dpaa2-eth: fix the size of the mapped SGT buffer
Oleksij Rempel <[email protected]>
net: dsa: qca: ar9331: fix sleeping function called from invalid context bug
Björn Töpel <[email protected]>
i40e, xsk: clear the status bits for the next_to_use descriptor
Björn Töpel <[email protected]>
ice, xsk: clear the status bits for the next_to_use descriptor
Sven Van Asbroeck <[email protected]>
lan743x: fix rx_napi_poll/interrupt ping-pong
Heiko Carstens <[email protected]>
s390/test_unwind: fix CALL_ON_STACK tests
Dwaipayan Ray <[email protected]>
checkpatch: fix unescaped left brace
Alexey Dobriyan <[email protected]>
proc: fix lookup in /proc/net subdirectories after setns(2)
Johannes Weiner <[email protected]>
mm: don't wake kswapd prematurely when watermark boosting is disabled
Dan Carpenter <[email protected]>
hugetlb: fix an error code in hugetlb_reserve_pages()
Oscar Salvador <[email protected]>
mm,memory_failure: always pin the page in madvise_inject_error
Vincenzo Frascino <[email protected]>
mm/vmalloc.c: fix kasan shadow poisoning size
Waiman Long <[email protected]>
mm/vmalloc: Fix unlock order in s_stop()
Matthew Wilcox (Oracle) <[email protected]>
sparc: fix handling of page table constructor failure
Shakeel Butt <[email protected]>
mm/rmap: always do TTU_IGNORE_ACCESS
Muchun Song <[email protected]>
mm: memcg/slab: fix use after free in obj_cgroup_charge
Muchun Song <[email protected]>
mm: memcg/slab: fix return of child memcg objcg for root memcg
Jason Gunthorpe <[email protected]>
mm/gup: combine put_compound_head() and unpin_user_page()
Jason Gunthorpe <[email protected]>
mm/gup: prevent gup_fast from racing with COW during fork
Jason Gunthorpe <[email protected]>
mm/gup: reorganize internal_get_user_pages_fast()
Alex Deucher <[email protected]>
drm/amdgpu: fix regression in vbios reservation handling on headless
Kajol Jain <[email protected]>
perf test: Fix metric parsing test
Vincent Stehlé <[email protected]>
powerpc/ps3: use dma_mapping_error()
Madhavan Srinivasan <[email protected]>
powerpc/perf: Fix Threshold Event Counter Multiplier width for P10
Guido Günther <[email protected]>
drm: mxsfb: Silence -EPROBE_DEFER while waiting for bridge
Bongsu Jeon <[email protected]>
nfc: s3fwrn5: Release the nfc firmware
Leon Romanovsky <[email protected]>
RDMA/cma: Don't overwrite sgid_attr after device is released
Maor Gottlieb <[email protected]>
RDMA/mlx5: Fix MR cache memory leak
Dan Aloni <[email protected]>
sunrpc: fix xs_read_xdr_buf for partial pages receive
Anton Ivanov <[email protected]>
um: chan_xterm: Fix fd leak
Anton Ivanov <[email protected]>
um: tty: Fix handling of close in tty lines
Anton Ivanov <[email protected]>
um: Monitor error events in IRQ controller
Wang ShaoBo <[email protected]>
ubifs: Fix error return code in ubifs_init_authentication()
Wang Wensheng <[email protected]>
watchdog: Fix potential dereferencing of null pointer
Lingling Xu <[email protected]>
watchdog: sprd: check busy bit before new loading rather than after that
Lingling Xu <[email protected]>
watchdog: sprd: remove watchdog disable from resume fail path
Guenter Roeck <[email protected]>
watchdog: sirfsoc: Add missing dependency on HAS_IOMEM
Guenter Roeck <[email protected]>
watchdog: armada_37xx: Add missing dependency on HAS_IOMEM
Douglas Anderson <[email protected]>
irqchip/qcom-pdc: Fix phantom irq when changing between rising/falling
Pradeep Kumar Chitrapu <[email protected]>
ath11k: Fix incorrect tlvs in scan start command
Nikita Shubin <[email protected]>
gpiolib: irq hooks: fix recursion in gpiochip_irq_unmask
Weihang Li <[email protected]>
RDMA/hns: Do shift on traffic class when using RoCEv2
Wenpeng Liang <[email protected]>
RDMA/hns: Normalization the judgment of some features
Wenpeng Liang <[email protected]>
RDMA/hns: Limit the length of data copied between kernel and userspace
Peter Ujfalusi <[email protected]>
dmaengine: ti: k3-udma: Correct normal channel offset when uchan_cnt is not 0
Lokesh Vutla <[email protected]>
irqchip/ti-sci-intr: Fix freeing of irqs
Lokesh Vutla <[email protected]>
irqchip/ti-sci-inta: Fix printing of inta id on probe success
Marc Zyngier <[email protected]>
irqchip/alpine-msi: Fix freeing of interrupts on allocation error path
Dan Carpenter <[email protected]>
ASoC: wm_adsp: remove "ctl" from list on error in wm_adsp_create_control()
Wen Gong <[email protected]>
mac80211: fix a mistake check for rx_stats update
Johannes Berg <[email protected]>
mac80211: don't set set TDLS STA bandwidth wider than possible
Arnd Bergmann <[email protected]>
crypto: atmel-i2c - select CONFIG_BITREVERSE
Marek Szyprowski <[email protected]>
extcon: max77693: Fix modalias string
Hao Li <[email protected]>
fs: Handle I_DONTCACHE in iput_final() instead of generic_drop_inode()
Magnus Karlsson <[email protected]>
samples/bpf: Fix possible hang in xdpsock with multiple threads
Han Xu <[email protected]>
mtd: rawnand: gpmi: Fix the random DMA timeout issue
Dan Carpenter <[email protected]>
mtd: rawnand: meson: Fix a resource leak in init
Zhang Qilong <[email protected]>
mtd: rawnand: gpmi: fix reference count leak in gpmi ops
Dmitry Osipenko <[email protected]>
clk: tegra: Fix duplicated SE clock entry
Douglas Anderson <[email protected]>
clk: qcom: gcc-sc7180: Use floor ops for sdcc clks
Tzung-Bi Shih <[email protected]>
remoteproc/mediatek: unprepare clk if scp_before_load fails
Zhang Changzhong <[email protected]>
remoteproc: qcom: Fix potential NULL dereference in adsp_init_mmio()
YueHaibing <[email protected]>
remoteproc: k3-dsp: Fix return value check in k3_dsp_rproc_of_get_memories()
Zhang Qilong <[email protected]>
remoteproc: qcom: pas: fix error handling in adsp_pds_enable
Zhang Qilong <[email protected]>
remoteproc: qcom: fix reference leak in adsp_start
Zhang Qilong <[email protected]>
remoteproc: q6v5-mss: fix error handling in q6v5_pds_enable
Alexandre Courbot <[email protected]>
remoteproc/mtk_scp: surround DT device IDs with CONFIG_OF
Tzung-Bi Shih <[email protected]>
remoteproc/mediatek: change MT8192 CFG register base
Avihai Horon <[email protected]>
RDMA/uverbs: Fix incorrect variable type
Jack Morgenstein <[email protected]>
RDMA/core: Do not indicate device ready when device enablement fails
Kai Vehmanen <[email protected]>
ALSA: hda/hdmi: fix silent stream for first playback to DP
Zhang Changzhong <[email protected]>
slimbus: qcom: fix potential NULL dereference in qcom_slim_prg_slew()
Ravi Bangoria <[email protected]>
powerpc/sstep: Cover new VSX instructions under CONFIG_VSX
Balamuruhan S <[email protected]>
powerpc/sstep: Emulate prefixed instructions only when CPU_FTR_ARCH_31 is set
Sean Nyekjaer <[email protected]>
can: m_can: m_can_config_endisable(): remove double clearing of clock stop request bit
Geert Uytterhoeven <[email protected]>
clk: renesas: r8a779a0: Fix R and OSC clocks
Huang Jianan <[email protected]>
erofs: avoid using generic_block_bmap
Johannes Berg <[email protected]>
iwlwifi: mvm: hook up missing RX handlers
Johannes Berg <[email protected]>
iwlwifi: dbg-tlv: fix old length in is_trig_data_contained()
Qinglang Miao <[email protected]>
s390/cio: fix use-after-free in ccw_device_destroy_console
Eddie James <[email protected]>
fsi: Aspeed: Add mutex to protect HW access
Zhang Changzhong <[email protected]>
bus: fsl-mc: fix error return code in fsl_mc_object_allocate()
Laurentiu Tudor <[email protected]>
bus: fsl-mc: add back accidentally dropped error check
Xiongfeng Wang <[email protected]>
misc: pci_endpoint_test: fix return value of error branch
Stephen Boyd <[email protected]>
platform/chrome: cros_ec_spi: Don't overwrite spi::mode
Quinn Tran <[email protected]>
scsi: qla2xxx: Fix N2N and NVMe connect retry failure
Arun Easi <[email protected]>
scsi: qla2xxx: Fix FW initialization error on big endian machines
Masami Hiramatsu <[email protected]>
x86/kprobes: Restore BTF if the single-stepping is cancelled
Cheng Lin <[email protected]>
nfs_common: need lock during iterate through the list
Dai Ngo <[email protected]>
NFSD: Fix 5 seconds delay when doing inter server copy
kazuo ito <[email protected]>
nfsd: Fix message level for normal termination
Yang Yingliang <[email protected]>
speakup: fix uninitialized flush_lock
Zhang Qilong <[email protected]>
usb: oxu210hp-hcd: Fix memory leak in oxu_create
Zhang Qilong <[email protected]>
usb: ehci-omap: Fix PM disable depth umbalance in ehci_hcd_omap_probe
Christophe Leroy <[email protected]>
powerpc/mm: sanity_check_fault() should work for all, not only BOOK3S
Dan Carpenter <[email protected]>
ASoC: max98390: Fix error codes in max98390_dsm_init()
Arnd Bergmann <[email protected]>
coresight: remove broken __exit annotations
Chuhong Yuan <[email protected]>
ASoC: amd: change clk_get() to devm_clk_get() and add missed checks
Colin Ian King <[email protected]>
drm/mediatek: avoid dereferencing a null hdmi_phy on an error message
Christophe Leroy <[email protected]>
powerpc/powermac: Fix low_sleep_handler with CONFIG_VMAP_STACK
Nathan Lynch <[email protected]>
powerpc/pseries/hibernation: remove redundant cacheinfo update
Nathan Lynch <[email protected]>
powerpc/pseries/hibernation: drop pseries_suspend_begin() from suspend ops
Ard Biesheuvel <[email protected]>
ARM: 9030/1: entry: omit FP emulation for UND exceptions taken in kernel mode
Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Fix item counter assignment for MSN2700/ComEx system
Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Fix item counter assignment for MSN2700, MSN24xx systems
Zhang Changzhong <[email protected]>
scsi: fnic: Fix error return code in fnic_probe()
Arnd Bergmann <[email protected]>
seq_buf: Avoid type mismatch for seq_buf_init
Qinglang Miao <[email protected]>
scsi: iscsi: Fix inappropriate use of put_device()
Zhang Qilong <[email protected]>
scsi: pm80xx: Fix error return in pm8001_pci_probe()
Qinglang Miao <[email protected]>
scsi: qedi: Fix missing destroy_workqueue() on error in __qedi_probe
Michael Walle <[email protected]>
clk: fsl-sai: fix memory leak
Stefan Agner <[email protected]>
arm64: dts: meson: g12b: w400: fix PHY deassert timing requirements
Stefan Agner <[email protected]>
arm64: dts: meson: g12a: x96-max: fix PHY deassert timing requirements
Stefan Agner <[email protected]>
ARM: dts: meson: fix PHY deassert timing requirements
Stefan Agner <[email protected]>
arm64: dts: meson: fix PHY deassert timing requirements
Stefan Agner <[email protected]>
arm64: dts: meson: g12b: odroid-n2: fix PHY deassert timing requirements
Michael Walle <[email protected]>
mtd: spi-nor: atmel: fix unlock_all() for AT25FS010/040
Michael Walle <[email protected]>
mtd: spi-nor: atmel: remove global protection flag
Michael Walle <[email protected]>
mtd: spi-nor: ignore errors in spi_nor_unlock_all()
Michael Walle <[email protected]>
mtd: spi-nor: sst: fix BPn bits for the SST25VF064C
Zhang Changzhong <[email protected]>
adm8211: fix error return code in adm8211_probe()
Hans de Goede <[email protected]>
platform/x86: intel-vbtn: Fix SW_TABLET_MODE always reporting 1 on some HP x360 models
Hans de Goede <[email protected]>
Bluetooth: btusb: Fix detection of some fake CSR controllers with a bcdDevice val of 0x0134
Colin Ian King <[email protected]>
block/rnbd: fix a null pointer dereference on dev->blk_symlink_name
Md Haris Iqbal <[email protected]>
block/rnbd-clt: Dynamically alloc buffer for pathname & blk_symlink_name
Wei Yongjun <[email protected]>
Bluetooth: sco: Fix crash when using BT_SNDMTU/BT_RCVMTU option
Jing Xiangfeng <[email protected]>
Bluetooth: btmtksdio: Add the missed release_firmware() in mtk_setup_firmware()
Jing Xiangfeng <[email protected]>
Bluetooth: btusb: Add the missed release_firmware() in btusb_mtk_setup_firmware()
Zhang Changzhong <[email protected]>
spi: dw: Fix error return code in dw_spi_bt1_probe()
Wang Hai <[email protected]>
staging: greybus: audio: Fix possible leak free widgets in gbaudio_dapm_free_controls
Arnd Bergmann <[email protected]>
staging: bcm2835: fix vchiq_mmal dependencies
Finn Thain <[email protected]>
macintosh/adb-iop: Send correct poll command
Finn Thain <[email protected]>
macintosh/adb-iop: Always wait for reply message from IOP
Arnd Bergmann <[email protected]>
cpufreq: imx: fix NVMEM_IMX_OCOTP dependency
Pali Rohár <[email protected]>
cpufreq: vexpress-spc: Add missing MODULE_ALIAS
Pali Rohár <[email protected]>
cpufreq: scpi: Add missing MODULE_ALIAS
Pali Rohár <[email protected]>
cpufreq: loongson1: Add missing MODULE_ALIAS
Pali Rohár <[email protected]>
cpufreq: sun50i: Add missing MODULE_DEVICE_TABLE
Pali Rohár <[email protected]>
cpufreq: st: Add missing MODULE_DEVICE_TABLE
Pali Rohár <[email protected]>
cpufreq: qcom: Add missing MODULE_DEVICE_TABLE
Pali Rohár <[email protected]>
cpufreq: mediatek: Add missing MODULE_DEVICE_TABLE
Pali Rohár <[email protected]>
cpufreq: highbank: Add missing MODULE_DEVICE_TABLE
Pali Rohár <[email protected]>
cpufreq: ap806: Add missing MODULE_DEVICE_TABLE
Keqian Zhu <[email protected]>
clocksource/drivers/arm_arch_timer: Correct fault programming of CNTKCTL_EL1.EVNTI
Keqian Zhu <[email protected]>
clocksource/drivers/arm_arch_timer: Use stable count reader in erratum sne
Arnd Bergmann <[email protected]>
drm/msm: add IOMMU_SUPPORT dependency
Marijn Suijten <[email protected]>
drm/msm: a5xx: Make preemption reset case reentrant
Zhang Changzhong <[email protected]>
memory: jz4780_nemc: Fix potential NULL dereference in jz4780_nemc_probe()
Arnd Bergmann <[email protected]>
memory: ti-emif-sram: only build for ARMv7
Wang Li <[email protected]>
phy: renesas: rcar-gen3-usb2: disable runtime pm in case of failure
Arnd Bergmann <[email protected]>
phy: mediatek: allow compile-testing the hdmi phy
Arnd Bergmann <[email protected]>
ASoC: qcom: fix QDSP6 dependencies, attempt #3
Arnd Bergmann <[email protected]>
ASoC: atmel: mchp-spdifrx needs COMMON_CLK
Arnd Bergmann <[email protected]>
ASoC: cros_ec_codec: fix uninitialized memory read
Qinglang Miao <[email protected]>
dm ioctl: fix error return code in target_message
Srinivas Kandagatla <[email protected]>
ASoC: q6afe-clocks: Add missing parent clock rate
Chuhong Yuan <[email protected]>
ASoC: jz4740-i2s: add missed checks for clk_get()
Lorenzo Bianconi <[email protected]>
mt76: fix tkip configuration for mt7615/7663 devices
Lorenzo Bianconi <[email protected]>
mt76: fix memory leak if device probing fails
Leon Romanovsky <[email protected]>
net/mlx5: Properly convey driver version to firmware
Lorenzo Bianconi <[email protected]>
mt76: dma: fix possible deadlock running mt76_dma_cleanup
Taehee Yoo <[email protected]>
mt76: set fops_tx_stats.owner to THIS_MODULE
Taehee Yoo <[email protected]>
mt76: mt7915: set fops_sta_stats.owner to THIS_MODULE
Lorenzo Bianconi <[email protected]>
mt76: mt7663s: fix a possible ple quota underflow
Alexander Sverdlin <[email protected]>
MIPS: Don't round up kernel sections size for memblock_add()
Jing Xiangfeng <[email protected]>
memstick: r592: Fix error return in r592_probe()
Chen-Yu Tsai <[email protected]>
arm64: dts: rockchip: Fix UART pull-ups on rk3328
Zhang Changzhong <[email protected]>
soc: rockchip: io-domain: Fix error return code in rockchip_iodomain_probe()
Yu Kuai <[email protected]>
pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe()
Andrii Nakryiko <[email protected]>
selftests/bpf: Fix invalid use of strncat in test_sockmap
Andrii Nakryiko <[email protected]>
bpf: Fix bpf_put_raw_tracepoint()'s use of __module_address()
Mauro Carvalho Chehab <[email protected]>
scripts: kernel-doc: fix parsing function-like typedefs
Claudiu Beznea <[email protected]>
ARM: dts: at91: sama5d2: map securam as device
Claudiu Beznea <[email protected]>
ARM: dts: at91: sam9x60ek: remove bypass property
Toke Høiland-Jørgensen <[email protected]>
libbpf: Sanitise map names before pinning
Lars-Peter Clausen <[email protected]>
iio: hrtimer-trigger: Mark hrtimer to expire in hard interrupt context
Peter Collingbourne <[email protected]>
arm64: mte: fix prctl(PR_GET_TAGGED_ADDR_CTRL) if TCF0=NONE
Kefeng Wang <[email protected]>
clocksource/drivers/riscv: Make RISCV_TIMER depends on RISCV_SBI
Daniel Lezcano <[email protected]>
clocksource/drivers/ingenic: Fix section mismatch
Yu Kuai <[email protected]>
clocksource/drivers/cadence_ttc: Fix memory leak in ttc_setup_clockevent()
Yang Yingliang <[email protected]>
clocksource/drivers/orion: Add missing clk_disable_unprepare() on error path
Athira Rajeev <[email protected]>
powerpc/perf: Fix the PMU group constraints for threshold events in power10
Athira Rajeev <[email protected]>
powerpc/perf: Update the PMU group constraints for l2l3 events in power10
Athira Rajeev <[email protected]>
powerpc/perf: Fix to update radix_scope_qual in power10
Ravi Bangoria <[email protected]>
powerpc/xmon: Fix build failure for 8xx
Jordan Niethe <[email protected]>
powerpc/64: Fix an EMIT_BUG_ENTRY in head_64.S
Athira Rajeev <[email protected]>
powerpc/perf: Fix crash with is_sier_available when pmu is not set
Dan Carpenter <[email protected]>
media: saa7146: fix array overflow in vidioc_s_audio()
Zhang Xiaoxu <[email protected]>
media: tvp5150: Fix wrong return value of tvp5150_parse_dt()
Hyeongseok Kim <[email protected]>
f2fs: fix double free of unicode map
Zhang Qilong <[email protected]>
hwmon: (ina3221) Fix PM usage counter unbalance in ina3221_write_enable
Jason Gunthorpe <[email protected]>
vfio-pci: Use io_remap_pfn_range() for PCI IO memory
Mickaël Salaün <[email protected]>
selftests/seccomp: Update kernel config
NeilBrown <[email protected]>
NFS: switch nfsiod to be an UNBOUND workqueue.
Calum Mackay <[email protected]>
lockd: don't use interval-based rebinding over TCP
Fedor Tokarev <[email protected]>
net: sunrpc: Fix 'snprintf' return value check in 'do_xprt_debugfs'
Trond Myklebust <[email protected]>
NFSv4: Fix the alignment of page data in the getdeviceinfo reply
Trond Myklebust <[email protected]>
SUNRPC: xprt_load_transport() needs to support the netid "rdma6"
Olga Kornievskaia <[email protected]>
NFSv4.2: condition READDIR's mask for security label based on LSM state
Trond Myklebust <[email protected]>
SUNRPC: rpc_wake_up() should wake up tasks in the correct order
Christophe JAILLET <[email protected]>
ath10k: Release some resources in an error handling path
Christophe JAILLET <[email protected]>
ath10k: Fix an error handling path
Rakesh Pillai <[email protected]>
ath10k: Fix the parsing error in service available event
Christophe JAILLET <[email protected]>
ath11k: Fix an error handling path
Sven Eckelmann <[email protected]>
ath11k: Reset ath11k_skb_cb before setting new flags
Sven Eckelmann <[email protected]>
ath11k: Don't cast ath11k_skb_cb to ieee80211_tx_info.control
Hans Verkuil <[email protected]>
media: i2c: imx219: Selection compliance fixes
Jacopo Mondi <[email protected]>
media: rdacm20: Enable GPIO1 explicitly
Jacopo Mondi <[email protected]>
media: max9271: Fix GPIO enable/disable
Sathyanarayana Nujella <[email protected]>
ASoC: Intel: Boards: tgl_max98373: update TDM slot_width
Qinglang Miao <[email protected]>
platform/x86: dell-smbios-base: Fix error return code in dell_smbios_init
Pierre-Louis Bossart <[email protected]>
soundwire: master: use pm_runtime_set_active() on add
Sudeep Holla <[email protected]>
mailbox: arm_mhu_db: Fix mhu_db_shutdown by replacing kfree with devm_kfree
Yangyang Li <[email protected]>
RDMA/hns: Bugfix for calculation of extended sge
Lang Cheng <[email protected]>
RDMA/hns: Fix 0-length sge calculation error
Alexandre Belloni <[email protected]>
ARM: dts: at91: at91sam9rl: fix ADC triggers
Maxim Kochetkov <[email protected]>
spi: spi-fsl-dspi: Use max_native_cs instead of num_chipselect to set SPI_MCR
Ahmed S. Darwish <[email protected]>
scsi: pm80xx: Do not sleep in atomic context
Xiang Chen <[email protected]>
scsi: hisi_sas: Fix up probe error handling for v3 hw
Yu Kuai <[email protected]>
soc: amlogic: canvas: add missing put_device() call in meson_canvas_get()
Dongjin Kim <[email protected]>
arm64: dts: meson-sm1: fix typo in opp table
Artem Lapkin <[email protected]>
arm64: dts: meson: fix spi-max-frequency on Khadas VIM2
Roman Bacik <[email protected]>
PCI: iproc: Invalidate correct PAXB inbound windows
Bharat Gooty <[email protected]>
PCI: iproc: Fix out-of-bound array accesses
Colin Ian King <[email protected]>
PCI: Fix overflow in command-line resource alignment requests
Bjorn Helgaas <[email protected]>
PCI: Bounds-check command-line resource alignment requests
Bjorn Andersson <[email protected]>
arm64: dts: qcom: c630: Fix pinctrl pins properties
Bjorn Andersson <[email protected]>
arm64: dts: qcom: c630: Polish i2c-hid devices
JC Kuo <[email protected]>
phy: tegra: xusb: Fix usb_phy device driver field
Michael Walle <[email protected]>
arm64: dts: freescale: sl28: combine SPI MTD partitions
Michael Walle <[email protected]>
arm64: dts: ls1028a: fix FlexSPI clock input
Michael Walle <[email protected]>
arm64: dts: ls1028a: fix ENETC PTP clock input
Marc Zyngier <[email protected]>
genirq/irqdomain: Don't try to free an interrupt that has no mapping
Zhang Qilong <[email protected]>
power: supply: bq24190_charger: fix reference leak
Hans de Goede <[email protected]>
power: supply: axp288_charger: Fix HP Pavilion x2 10 DMI matching
Sebastian Krzyszkowiak <[email protected]>
power: supply: max17042_battery: Fix current_{avg,now} hiding with no current sense
Chen-Yu Tsai <[email protected]>
arm64: dts: rockchip: Set dr_mode to "host" for OTG on rk3328-roc-cc
Sebastian Krzyszkowiak <[email protected]>
power: supply: bq25890: Use the correct range for IILIM register
Marek Behún <[email protected]>
arm64: dts: armada-3720-turris-mox: update ethernet-phy handle name
Chris Packham <[email protected]>
ARM: dts: Remove non-existent i2c1 from 98dx3236
Jing Xiangfeng <[email protected]>
HSI: omap_ssi: Don't jump to free ID in ssi_add_controller()
Enric Balletbo i Serra <[email protected]>
drm/mediatek: Use correct aliases name for ovl
Leon Romanovsky <[email protected]>
RDMA/core: Track device memory MRs
Bjorn Andersson <[email protected]>
slimbus: qcom-ngd-ctrl: Avoid sending power requests without QMI
Dan Carpenter <[email protected]>
media: max2175: fix max2175_set_csm_mode() error code
Qinglang Miao <[email protected]>
mips: cdmm: fix use-after-free in mips_cdmm_bus_discover
Daniel Gomez <[email protected]>
media: imx214: Fix stop streaming
Daniel T. Lee <[email protected]>
samples: bpf: Fix lwt_len_hist reusing previous BPF map
Zhang Qilong <[email protected]>
serial: 8250-mtk: Fix reference leak in mtk8250_probe
Weihang Li <[email protected]>
RDMA/hns: Avoid setting loopback indicator when smac is same as dmac
Weihang Li <[email protected]>
RDMA/hns: Fix missing fields in address vector
Weihang Li <[email protected]>
RDMA/hns: Only record vlan info for HIP08
Alex Elder <[email protected]>
arm64: dts: qcom: sc7180: limit IPA iommu streams
Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform configuration
Vadim Pasternak <[email protected]>
platform/x86: mlx-platform: Remove PSU EEPROM from default platform configuration
Keita Suzuki <[email protected]>
media: siano: fix memory leak of debugfs members in smsdvb_hotplug
Laurentiu Palcu <[email protected]>
drm/imx/dcss: fix rotations for Vivante tiled formats
Vinod Koul <[email protected]>
soundwire: qcom: Fix build failure when slimbus is module
Jason Gunthorpe <[email protected]>
RDMA/cma: Fix deadlock on &lock in rdma_cma_listen_on_all() error unwind
Vidya Sagar <[email protected]>
arm64: tegra: Fix DT binding for IO High Voltage entry
Marek Behún <[email protected]>
leds: turris-omnia: check for LED_COLOR_ID_RGB instead LED_COLOR_ID_MULTI
Christophe JAILLET <[email protected]>
leds: lp50xx: Fix an error handling path in 'lp50xx_probe_dt()'
Yu Kuai <[email protected]>
leds: netxbig: add missing put_device() call in netxbig_leds_get_of_pdata()
Bjorn Andersson <[email protected]>
arm64: dts: qcom: sdm845: Limit ipa iommu streams
Zhihao Cheng <[email protected]>
dmaengine: mv_xor_v2: Fix error return code in mv_xor_v2_probe()
Qinglang Miao <[email protected]>
cw1200: fix missing destroy_workqueue() on error in cw1200_init_common
Zhang Changzhong <[email protected]>
rsi: fix error return code in rsi_reset_card()
Wang Hai <[email protected]>
qtnfmac: fix error return code in qtnf_pcie_probe()
Sebastian Andrzej Siewior <[email protected]>
orinoco: Move context allocation after processing the skb
Zhang Changzhong <[email protected]>
brcmfmac: fix error return code in brcmf_cfg80211_connect()
Zhihao Cheng <[email protected]>
mmc: pxamci: Fix error return code in pxamci_probe
Cristian Birsan <[email protected]>
ARM: dts: at91: sama5d3_xplained: add pincontrol for USB Host
Cristian Birsan <[email protected]>
ARM: dts: at91: sama5d4_xplained: add pincontrol for USB Host
Cristian Birsan <[email protected]>
ARM: dts: at91: sam9x60: add pincontrol for USB Host
Qinglang Miao <[email protected]>
memstick: fix a double-free bug in memstick_check
Yangtao Li <[email protected]>
pinctrl: sunxi: fix irq bank map for the Allwinner A100 pin controller
Srinivas Kandagatla <[email protected]>
soundwire: Fix DEBUG_LOCKS_WARN_ON for uninitialized attribute
Kamal Heib <[email protected]>
RDMA/cxgb4: Validate the number of CQEs
Maharaja Kennadyrajan <[email protected]>
ath11k: Fix the rx_filter flag setting for peer rssi stats
Wang Hai <[email protected]>
staging: mfd: hi6421-spmi-pmic: fix error return code in hi6421_spmi_pmic_probe()
Kevin Hilman <[email protected]>
clk: meson: Kconfig: fix dependency for G12A
Zhang Qilong <[email protected]>
Input: omap4-keypad - fix runtime PM error handling
Nikita Travkin <[email protected]>
arm64: dts: qcom: msm8916-samsung-a2015: Disable muic i2c pin bias
Dmitry Baryshkov <[email protected]>
arm64: dts: qcom: sm8250: correct compatible for sm8250-mtp
Tom Rix <[email protected]>
soc: qcom: initialize local variable
Zhihao Cheng <[email protected]>
drivers: soc: ti: knav_qmss_queue: Fix error return code in knav_queue_probe
Zhang Qilong <[email protected]>
soc: ti: Fix reference imbalance in knav_dma_probe
Zhang Qilong <[email protected]>
soc: ti: knav_qmss: fix reference leak in knav_queue_probe
Jim Quinlan <[email protected]>
PCI: brcmstb: Initialize "tmp" before use
Andy Shevchenko <[email protected]>
PCI: Disable MSI for Pericom PCIe-USB adapter
Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Enable the iahb clock early enough
Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Disable clocks on driver teardown
Uwe Kleine-König <[email protected]>
spi: fix resource leak for drivers without .remove callback
Corentin Labbe <[email protected]>
crypto: sun8i-ce - fix two error path's memory leak
Zhang Qilong <[email protected]>
crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe
Nathan Chancellor <[email protected]>
crypto: crypto4xx - Replace bitwise OR with logical OR in crypto4xx_build_pd
Uladzislau Rezki (Sony) <[email protected]>
rcu/tree: Defer kvfree_rcu() allocation to a clean context
Peter Zijlstra <[email protected]>
rcu,ftrace: Fix ftrace recursion
Peter Zijlstra <[email protected]>
rcu: Allow rcu_irq_enter_check_tick() from NMI
Jaegeuk Kim <[email protected]>
scsi: ufs: Fix clkgating on/off
Jaegeuk Kim <[email protected]>
scsi: ufs: Avoid to call REQ_CLKS_OFF to CLKS_OFF
Yazen Ghannam <[email protected]>
EDAC/mce_amd: Use struct cpuinfo_x86.cpu_die_id for AMD NodeId
Tony Lindgren <[email protected]>
mfd: cpcap: Fix interrupt regression with regmap clear_ack
Amelie Delaunay <[email protected]>
mfd: stmfx: Fix dev_err_probe() call in stmfx_chip_init()
Geert Uytterhoeven <[email protected]>
mfd: MFD_SL28CPLD should depend on ARCH_LAYERSCAPE
Jing Xiangfeng <[email protected]>
mfd: htc-i2cpld: Add the missed i2c_put_adapter() in htcpld_register_chip_i2c()
Kaixu Xia <[email protected]>
powerpc/powernv/sriov: fix unsigned int win compared to less than zero
Zhang Xiaoxu <[email protected]>
Revert "powerpc/pseries/hotplug-cpu: Remove double free in error path"
Andrew Jeffery <[email protected]>
ARM: dts: tacoma: Fix node vs reg mismatch for flash memory
Christophe Leroy <[email protected]>
powerpc/feature: Fix CPU_FTRS_ALWAYS by removing CPU_FTRS_GENERIC_32
Ard Biesheuvel <[email protected]>
powerpc: Avoid broken GCC __attribute__((optimize))
Björn Töpel <[email protected]>
selftests/bpf: Fix broken riscv build
Zhang Qilong <[email protected]>
spi: mxs: fix reference leak in mxs_spi_probe
Yang Yingliang <[email protected]>
usb/max3421: fix return error code in max3421_probe()
Carl Yin <[email protected]>
bus: mhi: core: Fix null pointer access when parsing MHI configuration
Bhaumik Bhatt <[email protected]>
bus: mhi: core: Remove double locking from mhi_driver_remove()
Dmitry Torokhov <[email protected]>
Input: ads7846 - fix unaligned access on 7845
Oleksij Rempel <[email protected]>
Input: ads7846 - fix integer overflow on Rt calculation
David Jander <[email protected]>
Input: ads7846 - fix race that causes missing releases
Lukas Bulwahn <[email protected]>
iommu/vt-d: include conditionally on CONFIG_INTEL_IOMMU_SVM
Geert Uytterhoeven <[email protected]>
ASoC: intel: SND_SOC_INTEL_KEEMBAY should depend on ARCH_KEEMBAY
Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Ensure that clocks are enabled before touching the TOP registers
Marc Zyngier <[email protected]>
drm/meson: dw-hdmi: Register a callback to disable the regulator
Marc Zyngier <[email protected]>
drm/meson: Unbind all connectors on module removal
Marc Zyngier <[email protected]>
drm/meson: Free RDMA resources after tearing down DRM
Yang Yingliang <[email protected]>
drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()
Wolfram Sang <[email protected]>
mmc: sdhci: tegra: fix wrong unit with busy_timeout
Yang Yingliang <[email protected]>
video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init()
Qinglang Miao <[email protected]>
media: solo6x10: fix missing snd_card_free in error handling case
Mansur Alisha Shaik <[email protected]>
media: venus: put dummy vote on video-mem path after last session release
Martin Wilck <[email protected]>
scsi: core: Fix VPD LUN ID designator priorities
Randy Dunlap <[email protected]>
spi: dw: fix build error by selecting MULTIPLEXER
Jerome Brunet <[email protected]>
ASoC: meson: fix COMPILE_TEST error
Leon Romanovsky <[email protected]>
RDMA/cma: Add missing error handling of listen_id
Mansur Alisha Shaik <[email protected]>
media: venus: core: vote with average bandwidth and peak bandwidth as zero
Mansur Alisha Shaik <[email protected]>
media: venus: core: vote for video-mem path
Mansur Alisha Shaik <[email protected]>
media: venus: core: change clk enable and disable order in resume and suspend
Yu Kuai <[email protected]>
media: platform: add missing put_device() call in mtk_jpeg_probe() and mtk_jpeg_remove()
Zhang Qilong <[email protected]>
media: cedrus: fix reference leak in cedrus_start_streaming
Zhang Qilong <[email protected]>
media: staging: rkisp1: cap: fix runtime PM imbalance on error
Hugues Fruchet <[email protected]>
media: ov5640: fix support of BT656 bus mode
Sakari Ailus <[email protected]>
media: v4l2-fwnode: v4l2_fwnode_endpoint_parse caller must init vep argument
Lad Prabhakar <[email protected]>
media: v4l2-fwnode: Return -EINVAL for invalid bus-type
Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm()
Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_release_dec_pm()
Yu Kuai <[email protected]>
media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm()
Yu Kuai <[email protected]>
media: platform: add missing put_device() call in mtk_jpeg_clk_init()
Colin Ian King <[email protected]>
media: tm6000: Fix sizeof() mismatches
Shannon Nelson <[email protected]>
ionic: change set_rx_mode from_ndo to can_sleep
Shannon Nelson <[email protected]>
ionic: flatten calls to ionic_lif_rx_mode
Shannon Nelson <[email protected]>
ionic: use mc sync for multicast filters
Hanjun Guo <[email protected]>
drm/amdkfd: Put ACPI table after using it
Andy Shevchenko <[email protected]>
scripts: kernel-doc: Restore anonymous enum parsing
Jing Xiangfeng <[email protected]>
staging: gasket: interrupt: fix the missed eventfd_ctx_put() in gasket_interrupt.c
Zhang Qilong <[email protected]>
staging: greybus: codecs: Fix reference counter leak in error handling
Dan Carpenter <[email protected]>
drm/udl: Fix missing error code in udl_handle_damage()
Qinglang Miao <[email protected]>
firmware: arm_scmi: Fix missing destroy_workqueue()
Jack Xu <[email protected]>
crypto: qat - fix status check in qat_hal_put_rel_rd_xfer()
Jason A. Donenfeld <[email protected]>
crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager
Tony Lindgren <[email protected]>
soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted
Nirmoy Das <[email protected]>
drm/amdgpu: fix compute queue priority if num_kcq is less than 4
Necip Fazil Yildiran <[email protected]>
MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA
Nishanth Menon <[email protected]>
arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node
Pierre-Louis Bossart <[email protected]>
ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG
Arnd Bergmann <[email protected]>
RDMa/mthca: Work around -Wenum-conversion warning
Zhang Qilong <[email protected]>
ASoC: arizona: Fix a wrong free in wm8997_probe
Vincent Bernat <[email protected]>
net: evaluate net.ipv4.conf.all.proxy_arp_pvlan
Vincent Bernat <[email protected]>
net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown
Miklos Szeredi <[email protected]>
virtiofs fix leak in setup
Zhang Qilong <[email protected]>
spi: sprd: fix reference leak in sprd_spi_remove
Zhang Qilong <[email protected]>
ASoC: wm8998: Fix PM disable depth imbalance on error
Zhang Qilong <[email protected]>
ASoC: wm8994: Fix PM disable depth imbalance on error
Hangbin Liu <[email protected]>
selftest/bpf: Add missed ip6ip6 test back
Hangbin Liu <[email protected]>
selftests/run_kselftest.sh: fix dry-run typo
Abhinav Kumar <[email protected]>
drm/msm/dp: do not notify audio subsystem if sink doesn't support audio
Kuogee Hsieh <[email protected]>
drm/msm/dp: skip checking LINK_STATUS_UPDATED bit
Kuogee Hsieh <[email protected]>
drm/msm/dp: return correct connection status after suspend
Arnd Bergmann <[email protected]>
firmware: tegra: fix strncpy()/strncat() confusion
Rob Clark <[email protected]>
drm/msm/a5xx: Clear shadow on suspend
Rob Clark <[email protected]>
drm/msm/a6xx: Clear shadow on suspend
Tsuchiya Yuto <[email protected]>
mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
Alex Dewar <[email protected]>
ath11k: Handle errors if peer creation fails
Dan Carpenter <[email protected]>
ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()
Zhang Qilong <[email protected]>
spi: imx: fix reference leak in two imx operations
Qinglang Miao <[email protected]>
spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume
Zhang Qilong <[email protected]>
spi: tegra114: fix reference leak in tegra spi ops
Zhang Qilong <[email protected]>
spi: tegra20-sflash: fix reference leak in tegra_sflash_resume
Zhang Qilong <[email protected]>
spi: tegra20-slink: fix reference leak in slink ops of tegra20
Qinglang Miao <[email protected]>
spi: mt7621: fix missing clk_disable_unprepare() on error in mt7621_spi_probe
Zhang Qilong <[email protected]>
spi: spi-ti-qspi: fix reference leak in ti_qspi_setup
Zhang Qilong <[email protected]>
spi: stm32-qspi: fix reference leak in stm32 qspi operations
Anant Thazhemadam <[email protected]>
Bluetooth: hci_h5: fix memory leak in h5_close
Sathish Narasimman <[email protected]>
Bluetooth: Fix: LL PRivacy BLE device fails to connect
Anmol Karn <[email protected]>
Bluetooth: Fix null pointer dereference in hci_event_packet()
Stephen Boyd <[email protected]>
drm/panel: simple: Add flags to boe_nv133fhm_n61
Paweł Chmiel <[email protected]>
arm64: dts: exynos: Correct psci compatible used on Exynos7
Paweł Chmiel <[email protected]>
arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7
Seung-Woo Kim <[email protected]>
brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free}Karthikeyan Periyasamy <[email protected]>
ath11k: fix wmi init configuration
Sven Eckelmann <[email protected]>
ath11k: Fix number of rules in filtered ETSI regdomain
Sven Eckelmann <[email protected]>
ath11k: Initialize complete alpha2 for regulatory change
Lyude Paul <[email protected]>
drm/edid: Fix uninitialized variable in drm_cvt_modes()
Zhen Lei <[email protected]>
x86/mce: Correct the detection of invalid notifier priorities
KP Singh <[email protected]>
bpf: Fix tests for local_storage
Zhang Qilong <[email protected]>
spi: stm32: fix reference leak in stm32_spi_resume
Colin Ian King <[email protected]>
nl80211/cfg80211: fix potential infinite loop
Paul Moore <[email protected]>
selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling
Horia Geantă <[email protected]>
crypto: caam - fix printing on xts fallback allocation error path
Horia Geantă <[email protected]>
crypto: arm/aes-neonbs - fix usage of cbc(aes) fallback
Ard Biesheuvel <[email protected]>
crypto: arm64/poly1305-neon - reorder PAC authentication with SP update
Andrii Nakryiko <[email protected]>
libbpf: Fix BTF data layout checks and allow empty BTF
YueHaibing <[email protected]>
drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe
Cezary Rojewski <[email protected]>
ASoC: pcm: DRAIN support reactivation
He Zhe <[email protected]>
pinctrl: core: Add missing #ifdef CONFIG_GPIOLIB
Arnd Bergmann <[email protected]>
scsi: aacraid: Improve compat_ioctl handlers
Zhang Qilong <[email protected]>
spi: spi-mem: fix reference leak in spi_mem_access_start
Dmitry Baryshkov <[email protected]>
drm/msm/dpu: fix clock scaling on non-sc7180 board
Dmitry Baryshkov <[email protected]>
drm/msm/dsi_pll_10nm: restore VCO rate during restore_state
Dmitry Baryshkov <[email protected]>
drm/msm/dsi_pll_7nm: restore VCO rate during restore_state
Tanmay Shah <[email protected]>
drm/msm/dp: DisplayPort PHY compliance tests fixup
Namhyung Kim <[email protected]>
perf test: Use generic event for expand_libpfm_events()
Jason Gunthorpe <[email protected]>
RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr()
Jaegeuk Kim <[email protected]>
f2fs: call f2fs_get_meta_page_retry for nat page
Zhang Qilong <[email protected]>
spi: img-spfi: fix reference leak in img_spfi_resume
Jordan Niethe <[email protected]>
powerpc/64: Set up a kernel stack for secondaries before cpu_restore()
Arnd Bergmann <[email protected]>
drm/amdgpu: fix build_coefficients() argument
Vijay Khemka <[email protected]>
ARM: dts: aspeed: tiogapass: Remove vuart
Robin Murphy <[email protected]>
drm/msm: Add missing stub definition
Clément Péron <[email protected]>
ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode
Colin Ian King <[email protected]>
crypto: inside-secure - Fix sizeof() mismatch
Christophe Leroy <[email protected]>
crypto: talitos - Fix return type of current_desc_hdr()
Christophe Leroy <[email protected]>
crypto: talitos - Endianess in current_desc_hdr()
Arnd Bergmann <[email protected]>
drm/amdgpu: fix incorrect enum type
Thomas Gleixner <[email protected]>
sched: Reenable interrupts in do_sched_yield()
Peng Liu <[email protected]>
sched/deadline: Fix sched_dl_global_validate()
Colin Ian King <[email protected]>
ASoC: qcom: fix unsigned int bitwidth compared to less than zero
David Woodhouse <[email protected]>
x86/apic: Fix x2apic enablement without interrupt remapping
Guoqing Jiang <[email protected]>
RDMA/rtrs-srv: Don't guard the whole __alloc_srv with srv_mutex
Gioh Kim <[email protected]>
RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established
Danil Kipnis <[email protected]>
RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed
Ard Biesheuvel <[email protected]>
ARM: p2v: fix handling of LPAE translation in BE mode
Arvind Sankar <[email protected]>
x86/mm/ident_map: Check for errors from ident_pud_init()
Bob Pearson <[email protected]>
RDMA/rxe: Compute PSN windows correctly
Jing Xiangfeng <[email protected]>
RDMA/core: Fix error return in _ib_modify_qp()
Joel Stanley <[email protected]>
ARM: dts: aspeed: s2600wf: Fix VGA memory region location
Billy Tsai <[email protected]>
ARM: dts: aspeed-g6: Fix the GPIO memory size
Tianyue Ren <[email protected]>
selinux: fix error initialization in inode_doinit_with_dentry()
Selvin Xavier <[email protected]>
RDMA/bnxt_re: Fix entry size during SRQ create
Dan Carpenter <[email protected]>
rtc: pcf2127: fix pcf2127_nvmem_read/write() returns
Kamal Heib <[email protected]>
RDMA/bnxt_re: Set queue pair state when being queried
Douglas Anderson <[email protected]>
Revert "i2c: i2c-qcom-geni: Fix DMA transfer race"
Douglas Anderson <[email protected]>
soc: qcom: geni: More properly switch to DMA mode
Douglas Anderson <[email protected]>
arm64: dts: qcom: sc7180: Fix one forgotten interconnect reference
Kathiravan T <[email protected]>
arm64: dts: ipq6018: update the reserved-memory node
Fabien Parent <[email protected]>
arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value
Nicolas Boichat <[email protected]>
soc: mediatek: Check if power domains can be powered on at boot time
Dan Carpenter <[email protected]>
soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains()
Biju Das <[email protected]>
arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node
Biju Das <[email protected]>
arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node
Krzysztof Kozlowski <[email protected]>
drm/tve200: Fix handling of platform_get_irq() error
Krzysztof Kozlowski <[email protected]>
drm/mcde: Fix handling of platform_get_irq() error
Randy Dunlap <[email protected]>
drm/aspeed: Fix Kconfig warning & subsequent build errors
Alexandru Ardelean <[email protected]>
iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()
Tom Rix <[email protected]>
drm/gma500: fix double free of gma_connector
Guenter Roeck <[email protected]>
hwmon: (k10temp) Remove support for displaying voltage and current on Zen CPUs
-------------
Diffstat:
Documentation/locking/seqlock.rst | 21 +- Documentation/networking/ip-sysctl.rst | 3 + Makefile | 4 +- arch/Kconfig | 16 ++ arch/arm/boot/compressed/head.S | 4 +- arch/arm/boot/dts/armada-xp-98dx3236.dtsi | 5 - .../arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts | 5 - arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts | 4 +- arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts | 2 +- arch/arm/boot/dts/aspeed-g6.dtsi | 2 +- arch/arm/boot/dts/at91-sam9x60ek.dts | 13 +- arch/arm/boot/dts/at91-sama5d3_xplained.dts | 7 + arch/arm/boot/dts/at91-sama5d4_xplained.dts | 7 + arch/arm/boot/dts/at91sam9rl.dtsi | 19 +- arch/arm/boot/dts/meson8b-odroidc1.dts | 2 +- arch/arm/boot/dts/meson8m2-mxiii-plus.dts | 2 +- arch/arm/boot/dts/omap4-panda-es.dts | 2 +- arch/arm/boot/dts/sama5d2.dtsi | 7 +- arch/arm/boot/dts/tegra20-ventana.dts | 11 ++ arch/arm/crypto/aes-ce-core.S | 32 ++- arch/arm/crypto/aes-neonbs-glue.c | 8 +- arch/arm/kernel/entry-armv.S | 25 +-- arch/arm/kernel/head.S | 6 +- arch/arm/vfp/entry.S | 17 -- arch/arm/vfp/vfphw.S | 5 - arch/arm/vfp/vfpmodule.c | 72 ++++++- arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts | 2 +- .../boot/dts/amlogic/meson-g12b-odroid-n2.dtsi | 2 +- arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi | 2 +- .../boot/dts/amlogic/meson-gxbb-nanopi-k2.dts | 2 +- .../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 2 +- .../boot/dts/amlogic/meson-gxbb-vega-s95.dtsi | 2 +- arch/arm64/boot/dts/amlogic/meson-gxbb-wetek.dtsi | 2 +- .../boot/dts/amlogic/meson-gxl-s905d-p230.dts | 2 +- .../boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 4 +- .../arm64/boot/dts/amlogic/meson-gxm-nexbox-a1.dts | 2 +- arch/arm64/boot/dts/amlogic/meson-gxm-q200.dts | 2 +- arch/arm64/boot/dts/amlogic/meson-gxm-rbox-pro.dts | 2 +- arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 2 +- arch/arm64/boot/dts/exynos/exynos7.dtsi | 12 +- .../dts/freescale/fsl-ls1028a-kontron-sl28.dts | 12 +- arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 4 +- .../boot/dts/marvell/armada-3720-turris-mox.dts | 2 +- arch/arm64/boot/dts/marvell/armada-7040.dtsi | 4 - arch/arm64/boot/dts/marvell/armada-8040.dtsi | 4 - arch/arm64/boot/dts/mediatek/mt8183.dtsi | 2 +- arch/arm64/boot/dts/nvidia/tegra194.dtsi | 4 +- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 6 +- .../dts/qcom/msm8916-samsung-a2015-common.dtsi | 11 ++ arch/arm64/boot/dts/qcom/sc7180.dtsi | 5 +- arch/arm64/boot/dts/qcom/sdm845.dtsi | 3 +- .../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 39 ++-- arch/arm64/boot/dts/qcom/sm8250-mtp.dts | 2 +- arch/arm64/boot/dts/renesas/cat875.dtsi | 1 - arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi | 1 - arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts | 1 + arch/arm64/boot/dts/rockchip/rk3328.dtsi | 16 +- arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 4 +- arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 2 +- arch/arm64/crypto/poly1305-armv8.pl | 2 +- arch/arm64/crypto/poly1305-core.S_shipped | 2 +- arch/arm64/include/asm/kvm_host.h | 1 + arch/arm64/kernel/mte.c | 3 +- arch/arm64/kvm/sys_regs.c | 1 + arch/m68k/mac/config.c | 17 +- arch/mips/bcm47xx/Kconfig | 1 + arch/mips/kernel/setup.c | 4 +- arch/powerpc/boot/Makefile | 2 + arch/powerpc/include/asm/bitops.h | 23 ++- arch/powerpc/include/asm/book3s/32/mmu-hash.h | 1 + arch/powerpc/include/asm/book3s/32/pgtable.h | 4 +- arch/powerpc/include/asm/cpm1.h | 1 + arch/powerpc/include/asm/cputable.h | 7 +- arch/powerpc/include/asm/nohash/pgtable.h | 4 +- arch/powerpc/kernel/Makefile | 3 + arch/powerpc/kernel/head_32.h | 25 ++- arch/powerpc/kernel/head_64.S | 10 +- arch/powerpc/kernel/paca.c | 4 +- arch/powerpc/kernel/rtas.c | 2 +- arch/powerpc/kernel/setup-common.c | 4 +- arch/powerpc/kernel/setup.h | 6 - arch/powerpc/kernel/setup_64.c | 2 +- arch/powerpc/kernel/smp.c | 2 +- arch/powerpc/lib/sstep.c | 10 +- arch/powerpc/mm/fault.c | 8 +- arch/powerpc/mm/mem.c | 2 +- arch/powerpc/perf/core-book3s.c | 13 ++ arch/powerpc/perf/isa207-common.c | 30 ++- arch/powerpc/perf/isa207-common.h | 20 +- arch/powerpc/perf/power10-pmu.c | 11 +- arch/powerpc/platforms/8xx/micropatch.c | 11 ++ arch/powerpc/platforms/Kconfig.cputype | 2 +- arch/powerpc/platforms/powermac/sleep.S | 132 ++++++------- arch/powerpc/platforms/powernv/memtrace.c | 44 ++++- arch/powerpc/platforms/powernv/npu-dma.c | 16 +- arch/powerpc/platforms/powernv/pci-sriov.c | 2 +- arch/powerpc/platforms/pseries/hotplug-cpu.c | 1 + arch/powerpc/platforms/pseries/suspend.c | 4 - arch/powerpc/xmon/nonstdio.c | 2 +- arch/powerpc/xmon/xmon.c | 2 + arch/riscv/mm/init.c | 2 +- arch/s390/kernel/entry.S | 44 +++-- arch/s390/kernel/smp.c | 18 +- arch/s390/lib/test_unwind.c | 7 +- arch/s390/purgatory/head.S | 9 +- arch/sparc/mm/init_64.c | 2 +- arch/um/drivers/chan_user.c | 4 +- arch/um/drivers/xterm.c | 5 + arch/um/kernel/time.c | 5 - arch/um/os-Linux/irq.c | 2 +- arch/um/os-Linux/umid.c | 17 +- arch/x86/events/intel/core.c | 5 +- arch/x86/events/intel/lbr.c | 2 +- arch/x86/include/asm/apic.h | 1 + arch/x86/include/asm/mce.h | 3 +- arch/x86/kernel/apic/apic.c | 14 +- arch/x86/kernel/apic/x2apic_phys.c | 9 + arch/x86/kernel/cpu/mce/core.c | 3 +- arch/x86/kernel/kprobes/core.c | 5 + arch/x86/kernel/tboot.c | 1 + arch/x86/kvm/cpuid.h | 14 ++ arch/x86/kvm/svm/sev.c | 22 +-- arch/x86/kvm/svm/svm.c | 14 +- arch/x86/kvm/vmx/vmx.c | 8 +- arch/x86/mm/ident_map.c | 12 +- crypto/Kconfig | 2 +- crypto/ecdh.c | 9 +- drivers/accessibility/speakup/speakup_dectlk.c | 2 +- drivers/acpi/acpi_pnp.c | 3 + drivers/acpi/device_pm.c | 41 ++-- drivers/acpi/nfit/core.c | 6 +- drivers/acpi/resource.c | 2 +- drivers/android/binder.c | 1 + drivers/android/binder_alloc.c | 48 +++++ drivers/android/binder_alloc.h | 4 +- drivers/base/core.c | 2 +- drivers/block/null_blk_zoned.c | 28 ++- drivers/block/rnbd/rnbd-clt-sysfs.c | 17 +- drivers/block/rnbd/rnbd-clt.c | 13 +- drivers/block/rnbd/rnbd-clt.h | 4 +- drivers/block/xen-blkback/xenbus.c | 4 +- drivers/bluetooth/btmtksdio.c | 2 +- drivers/bluetooth/btusb.c | 10 +- drivers/bluetooth/hci_h5.c | 3 + drivers/bus/fsl-mc/fsl-mc-allocator.c | 4 +- drivers/bus/fsl-mc/fsl-mc-bus.c | 5 +- drivers/bus/mhi/core/init.c | 6 +- drivers/bus/mips_cdmm.c | 4 +- drivers/clk/at91/sam9x60.c | 6 +- drivers/clk/at91/sama7g5.c | 6 +- drivers/clk/bcm/clk-bcm2711-dvp.c | 1 + drivers/clk/clk-fsl-sai.c | 12 ++ drivers/clk/clk-s2mps11.c | 1 + drivers/clk/clk-versaclock5.c | 4 +- drivers/clk/ingenic/cgu.c | 14 +- drivers/clk/meson/Kconfig | 1 + drivers/clk/mvebu/armada-37xx-xtal.c | 4 +- drivers/clk/qcom/gcc-sc7180.c | 4 +- drivers/clk/renesas/r8a779a0-cpg-mssr.c | 13 +- drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 1 + drivers/clk/sunxi-ng/ccu-sun8i-h3.c | 1 + drivers/clk/tegra/clk-dfll.c | 4 +- drivers/clk/tegra/clk-id.h | 1 + drivers/clk/tegra/clk-tegra-periph.c | 2 +- drivers/clk/ti/fapll.c | 11 +- drivers/clocksource/Kconfig | 2 +- drivers/clocksource/arm_arch_timer.c | 27 ++- drivers/clocksource/ingenic-timer.c | 2 +- drivers/clocksource/timer-cadence-ttc.c | 18 +- drivers/clocksource/timer-orion.c | 11 +- drivers/counter/microchip-tcb-capture.c | 16 +- drivers/cpufreq/Kconfig.arm | 2 +- drivers/cpufreq/armada-8k-cpufreq.c | 6 + drivers/cpufreq/highbank-cpufreq.c | 7 + drivers/cpufreq/intel_pstate.c | 16 +- drivers/cpufreq/loongson1-cpufreq.c | 1 + drivers/cpufreq/mediatek-cpufreq.c | 1 + drivers/cpufreq/qcom-cpufreq-nvmem.c | 1 + drivers/cpufreq/scpi-cpufreq.c | 1 + drivers/cpufreq/sti-cpufreq.c | 7 + drivers/cpufreq/sun50i-cpufreq-nvmem.c | 1 + drivers/cpufreq/vexpress-spc-cpufreq.c | 1 + drivers/crypto/Kconfig | 1 + drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 20 +- drivers/crypto/amcc/crypto4xx_core.c | 2 +- drivers/crypto/caam/caamalg.c | 4 +- drivers/crypto/caam/caamalg_qi.c | 4 +- drivers/crypto/caam/caamalg_qi2.c | 3 +- drivers/crypto/inside-secure/safexcel.c | 2 +- drivers/crypto/omap-aes.c | 3 +- drivers/crypto/qat/qat_common/qat_hal.c | 2 +- drivers/crypto/talitos.c | 10 +- drivers/dax/super.c | 1 + drivers/dma-buf/dma-resv.c | 2 +- drivers/dma/mv_xor_v2.c | 4 +- drivers/dma/ti/k3-udma.c | 3 +- drivers/edac/amd64_edac.c | 26 +-- drivers/edac/i10nm_base.c | 11 +- drivers/edac/mce_amd.c | 2 +- drivers/extcon/extcon-max77693.c | 2 +- drivers/firmware/arm_scmi/notify.c | 10 +- drivers/firmware/efi/efi.c | 1 + drivers/firmware/tegra/bpmp-debugfs.c | 6 +- drivers/fsi/fsi-master-aspeed.c | 45 +++-- drivers/gpio/gpiolib.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 10 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 9 +- drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 6 +- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 6 +- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 7 +- drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 13 +- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 17 +- drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 4 +- .../drm/amd/display/modules/color/color_gamma.c | 2 +- drivers/gpu/drm/aspeed/Kconfig | 1 + drivers/gpu/drm/bridge/ti-tpd12s015.c | 2 +- drivers/gpu/drm/drm_dp_aux_dev.c | 2 +- drivers/gpu/drm/drm_edid.c | 2 + drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- drivers/gpu/drm/imx/dcss/dcss-plane.c | 11 +- drivers/gpu/drm/mcde/mcde_drv.c | 4 +- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 2 +- drivers/gpu/drm/meson/meson_drv.c | 12 +- drivers/gpu/drm/meson/meson_dw_hdmi.c | 60 ++++-- drivers/gpu/drm/msm/Kconfig | 2 +- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 24 ++- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 +- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 6 +- drivers/gpu/drm/msm/dp/dp_catalog.c | 13 ++ drivers/gpu/drm/msm/dp/dp_catalog.h | 1 + drivers/gpu/drm/msm/dp/dp_ctrl.c | 28 ++- drivers/gpu/drm/msm/dp/dp_display.c | 154 ++++++++------- drivers/gpu/drm/msm/dp/dp_link.c | 41 ++-- drivers/gpu/drm/msm/dp/dp_link.h | 1 + drivers/gpu/drm/msm/dp/dp_reg.h | 2 + drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c | 8 + drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c | 8 + drivers/gpu/drm/msm/msm_drv.h | 5 + drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 +- drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 1 + drivers/gpu/drm/panel/panel-simple.c | 1 + drivers/gpu/drm/panfrost/panfrost_device.c | 1 - drivers/gpu/drm/panfrost/panfrost_device.h | 6 +- drivers/gpu/drm/panfrost/panfrost_job.c | 183 +++++++++++++---- drivers/gpu/drm/tve200/tve200_drv.c | 4 +- drivers/gpu/drm/udl/udl_modeset.c | 4 +- drivers/hsi/controllers/omap_ssi_core.c | 2 +- drivers/hwmon/ina3221.c | 2 +- drivers/hwmon/k10temp.c | 98 --------- drivers/hwtracing/coresight/coresight-catu.c | 2 +- drivers/hwtracing/coresight/coresight-cti-core.c | 2 +- drivers/hwtracing/coresight/coresight-etb10.c | 2 +- drivers/hwtracing/coresight/coresight-etm3x-core.c | 4 +- drivers/hwtracing/coresight/coresight-etm4x-core.c | 4 +- drivers/hwtracing/coresight/coresight-funnel.c | 6 +- drivers/hwtracing/coresight/coresight-replicator.c | 6 +- drivers/hwtracing/coresight/coresight-stm.c | 2 +- drivers/hwtracing/coresight/coresight-tmc-core.c | 2 +- drivers/hwtracing/coresight/coresight-tpiu.c | 2 +- drivers/i2c/busses/i2c-qcom-geni.c | 6 +- drivers/iio/adc/Kconfig | 2 +- drivers/iio/adc/ad_sigma_delta.c | 18 +- drivers/iio/adc/at91_adc.c | 2 +- drivers/iio/adc/rockchip_saradc.c | 2 +- drivers/iio/adc/ti-ads124s08.c | 13 +- drivers/iio/imu/bmi160/bmi160.h | 7 + drivers/iio/imu/bmi160/bmi160_core.c | 6 +- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 26 ++- drivers/iio/industrialio-buffer.c | 6 +- drivers/iio/light/rpr0521.c | 17 +- drivers/iio/light/st_uvis25.h | 5 + drivers/iio/light/st_uvis25_core.c | 8 +- drivers/iio/magnetometer/mag3110.c | 13 +- drivers/iio/pressure/mpl3115.c | 9 +- drivers/iio/trigger/iio-trig-hrtimer.c | 4 +- drivers/infiniband/core/cma.c | 195 ++++++++++-------- drivers/infiniband/core/device.c | 7 +- drivers/infiniband/core/uverbs_std_types_device.c | 14 +- drivers/infiniband/core/uverbs_std_types_mr.c | 4 + drivers/infiniband/core/verbs.c | 4 +- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 5 +- drivers/infiniband/hw/cxgb4/cq.c | 3 + drivers/infiniband/hw/hns/hns_roce_ah.c | 61 +++--- drivers/infiniband/hw/hns/hns_roce_cq.c | 5 +- drivers/infiniband/hw/hns/hns_roce_device.h | 10 +- drivers/infiniband/hw/hns/hns_roce_hem.c | 4 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 56 +++--- drivers/infiniband/hw/hns/hns_roce_main.c | 11 +- drivers/infiniband/hw/hns/hns_roce_pd.c | 11 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 18 +- drivers/infiniband/hw/hns/hns_roce_srq.c | 10 +- drivers/infiniband/hw/mlx5/mr.c | 21 +- drivers/infiniband/hw/mthca/mthca_cq.c | 2 +- drivers/infiniband/hw/mthca/mthca_dev.h | 1 - drivers/infiniband/sw/rxe/rxe_req.c | 3 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 +- drivers/infiniband/ulp/rtrs/rtrs-srv.c | 86 ++++---- drivers/input/keyboard/omap4-keypad.c | 89 +++++---- drivers/input/mouse/cyapa_gen6.c | 2 +- drivers/input/touchscreen/ads7846.c | 52 +++-- drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 90 +++++++++ drivers/iommu/arm/arm-smmu/arm-smmu.c | 13 +- drivers/iommu/arm/arm-smmu/arm-smmu.h | 1 + drivers/iommu/intel/iommu.c | 2 +- drivers/irqchip/irq-alpine-msi.c | 3 +- drivers/irqchip/irq-ti-sci-inta.c | 2 +- drivers/irqchip/irq-ti-sci-intr.c | 14 +- drivers/irqchip/qcom-pdc.c | 21 +- drivers/leds/leds-lp50xx.c | 6 +- drivers/leds/leds-netxbig.c | 35 ++-- drivers/leds/leds-turris-omnia.c | 4 +- drivers/macintosh/adb-iop.c | 56 ++++-- drivers/mailbox/arm_mhu_db.c | 2 +- drivers/md/dm-ioctl.c | 1 + drivers/md/md-cluster.c | 67 ++++--- drivers/md/md.c | 14 +- drivers/media/common/siano/smsdvb-main.c | 5 +- drivers/media/i2c/imx214.c | 2 +- drivers/media/i2c/imx219.c | 17 +- drivers/media/i2c/max2175.c | 2 +- drivers/media/i2c/max9271.c | 8 +- drivers/media/i2c/ov5640.c | 82 ++++---- drivers/media/i2c/rdacm20.c | 13 +- drivers/media/i2c/tvp5150.c | 1 + drivers/media/pci/intel/ipu3/ipu3-cio2.c | 62 +++--- drivers/media/pci/intel/ipu3/ipu3-cio2.h | 1 + drivers/media/pci/netup_unidvb/netup_unidvb_spi.c | 5 +- drivers/media/pci/saa7146/mxb.c | 19 +- drivers/media/pci/solo6x10/solo6x10-g723.c | 2 +- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 9 + .../media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 19 +- .../media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c | 26 ++- drivers/media/platform/qcom/venus/core.c | 32 ++- drivers/media/platform/qcom/venus/pm_helpers.c | 10 + drivers/media/rc/sunxi-cir.c | 2 + drivers/media/usb/gspca/gspca.c | 1 + drivers/media/usb/tm6000/tm6000-video.c | 5 +- drivers/media/v4l2-core/v4l2-fwnode.c | 6 +- drivers/memory/Kconfig | 2 +- drivers/memory/jz4780-nemc.c | 6 +- drivers/memory/renesas-rpc-if.c | 7 +- drivers/memstick/core/memstick.c | 1 - drivers/memstick/host/r592.c | 12 +- drivers/mfd/Kconfig | 1 + drivers/mfd/htc-i2cpld.c | 2 + drivers/mfd/motorola-cpcap.c | 6 +- drivers/mfd/stmfx.c | 10 +- drivers/misc/pci_endpoint_test.c | 8 +- drivers/mmc/host/pxamci.c | 1 + drivers/mmc/host/sdhci-tegra.c | 2 +- drivers/mtd/mtdcore.c | 4 + drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 38 ++-- drivers/mtd/nand/raw/meson_nand.c | 7 +- drivers/mtd/nand/raw/qcom_nandc.c | 2 + drivers/mtd/nand/spi/core.c | 4 + drivers/mtd/parsers/cmdlinepart.c | 14 +- drivers/mtd/spi-nor/atmel.c | 77 ++++++-- drivers/mtd/spi-nor/core.c | 25 +-- drivers/mtd/spi-nor/core.h | 1 + drivers/mtd/spi-nor/sst.c | 3 +- drivers/net/can/m_can/m_can.c | 4 - drivers/net/dsa/qca/ar9331.c | 33 +++- drivers/net/ethernet/allwinner/sun4i-emac.c | 7 +- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 +- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_xsk.c | 5 +- drivers/net/ethernet/intel/ice/ice_xsk.c | 5 +- drivers/net/ethernet/korina.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/main.c | 6 +- drivers/net/ethernet/microchip/lan743x_main.c | 43 ++-- drivers/net/ethernet/mscc/ocelot_vsc7514.c | 8 +- drivers/net/ethernet/netronome/nfp/flower/main.c | 6 +- drivers/net/ethernet/pensando/ionic/ionic_lif.c | 63 +++--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 1 + drivers/net/virtio_net.c | 1 + drivers/net/wireless/admtek/adm8211.c | 6 +- drivers/net/wireless/ath/ath10k/usb.c | 7 +- drivers/net/wireless/ath/ath10k/wmi-tlv.c | 4 +- drivers/net/wireless/ath/ath10k/wmi.c | 9 +- drivers/net/wireless/ath/ath10k/wmi.h | 1 + drivers/net/wireless/ath/ath11k/core.h | 2 + drivers/net/wireless/ath/ath11k/dp_tx.c | 5 +- drivers/net/wireless/ath/ath11k/hw.c | 4 +- drivers/net/wireless/ath/ath11k/mac.c | 54 +++-- drivers/net/wireless/ath/ath11k/qmi.c | 6 +- drivers/net/wireless/ath/ath11k/reg.c | 6 +- drivers/net/wireless/ath/ath11k/wmi.c | 31 --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 3 +- .../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 +- .../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 2 +- drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 6 + .../net/wireless/intersil/orinoco/orinoco_usb.c | 14 +- drivers/net/wireless/marvell/mwifiex/main.c | 2 + drivers/net/wireless/mediatek/mt76/dma.c | 2 + drivers/net/wireless/mediatek/mt76/mac80211.c | 1 + drivers/net/wireless/mediatek/mt76/mt7603/pci.c | 3 +- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 14 +- drivers/net/wireless/mediatek/mt76/mt7615/mmio.c | 3 +- .../net/wireless/mediatek/mt76/mt7615/sdio_txrx.c | 2 +- drivers/net/wireless/mediatek/mt76/mt76x0/pci.c | 3 +- drivers/net/wireless/mediatek/mt76/mt76x2/pci.c | 3 +- .../net/wireless/mediatek/mt76/mt7915/debugfs.c | 2 + drivers/net/wireless/mediatek/mt76/mt7915/pci.c | 5 +- drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 6 +- drivers/net/wireless/rsi/rsi_91x_usb.c | 30 +-- drivers/net/wireless/st/cw1200/main.c | 2 + drivers/net/xen-netback/xenbus.c | 6 +- drivers/nfc/s3fwrn5/firmware.c | 4 +- drivers/nvdimm/label.c | 13 +- drivers/pci/controller/pcie-brcmstb.c | 1 + drivers/pci/controller/pcie-iproc.c | 23 ++- drivers/pci/pci-acpi.c | 4 +- drivers/pci/pci.c | 14 +- drivers/pci/quirks.c | 17 +- drivers/pci/slot.c | 6 +- drivers/phy/mediatek/Kconfig | 4 +- drivers/phy/mediatek/phy-mtk-hdmi.c | 5 +- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 6 +- drivers/phy/tegra/xusb.c | 2 +- drivers/pinctrl/core.c | 2 + drivers/pinctrl/pinctrl-falcon.c | 14 +- drivers/pinctrl/sunxi/pinctrl-sun50i-a100.c | 2 +- drivers/pinctrl/sunxi/pinctrl-sunxi.c | 6 +- drivers/platform/chrome/cros_ec_spi.c | 1 - drivers/platform/x86/dell-smbios-base.c | 1 + drivers/platform/x86/intel-vbtn.c | 18 +- drivers/platform/x86/mlx-platform.c | 20 +- drivers/power/supply/axp288_charger.c | 28 +-- drivers/power/supply/bq24190_charger.c | 20 +- drivers/power/supply/bq25890_charger.c | 2 +- drivers/power/supply/max17042_battery.c | 3 +- drivers/ps3/ps3stor_lib.c | 2 +- drivers/pwm/pwm-imx27.c | 3 +- drivers/pwm/pwm-lp3943.c | 1 + drivers/pwm/pwm-sun4i.c | 6 +- drivers/pwm/pwm-zx.c | 1 + drivers/regulator/axp20x-regulator.c | 2 +- drivers/remoteproc/mtk_common.h | 26 +-- drivers/remoteproc/mtk_scp.c | 5 +- drivers/remoteproc/qcom_q6v5_adsp.c | 13 +- drivers/remoteproc/qcom_q6v5_mss.c | 5 +- drivers/remoteproc/qcom_q6v5_pas.c | 5 +- drivers/remoteproc/qcom_sysmon.c | 25 ++- drivers/remoteproc/ti_k3_dsp_remoteproc.c | 4 +- drivers/rtc/rtc-ep93xx.c | 6 +- drivers/rtc/rtc-pcf2127.c | 12 +- drivers/s390/block/dasd_alias.c | 22 ++- drivers/s390/cio/device.c | 4 +- drivers/scsi/aacraid/commctrl.c | 22 ++- drivers/scsi/aacraid/linit.c | 61 +----- drivers/scsi/fnic/fnic_main.c | 1 + drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 26 ++- drivers/scsi/lpfc/lpfc.h | 2 +- drivers/scsi/lpfc/lpfc_disc.h | 2 + drivers/scsi/lpfc/lpfc_hbadisc.c | 35 ++++ drivers/scsi/lpfc/lpfc_init.c | 46 +++-- drivers/scsi/lpfc/lpfc_mem.c | 11 +- drivers/scsi/lpfc/lpfc_nvme.c | 18 +- drivers/scsi/lpfc/lpfc_sli.c | 74 +++++-- drivers/scsi/lpfc/lpfc_sli4.h | 6 +- drivers/scsi/pm8001/pm8001_init.c | 3 +- drivers/scsi/pm8001/pm80xx_hwi.c | 2 +- drivers/scsi/qedi/qedi_main.c | 4 +- drivers/scsi/qla2xxx/qla_init.c | 71 +++++-- drivers/scsi/qla2xxx/qla_mbx.c | 9 +- drivers/scsi/qla2xxx/qla_tmpl.c | 9 +- drivers/scsi/qla2xxx/qla_tmpl.h | 2 +- drivers/scsi/scsi_lib.c | 126 ++++++++---- drivers/scsi/scsi_transport_iscsi.c | 4 +- drivers/scsi/ufs/ufshcd.c | 5 +- drivers/slimbus/qcom-ctrl.c | 9 +- drivers/slimbus/qcom-ngd-ctrl.c | 6 + drivers/soc/amlogic/meson-canvas.c | 4 +- drivers/soc/mediatek/mtk-scpsys.c | 5 +- drivers/soc/qcom/pdr_interface.c | 2 +- drivers/soc/qcom/qcom-geni-se.c | 17 +- drivers/soc/qcom/smp2p.c | 5 +- drivers/soc/renesas/rmobile-sysc.c | 1 + drivers/soc/rockchip/io-domain.c | 1 + drivers/soc/ti/knav_dma.c | 13 +- drivers/soc/ti/knav_qmss_queue.c | 4 +- drivers/soc/ti/omap_prm.c | 4 + drivers/soundwire/master.c | 14 ++ drivers/soundwire/qcom.c | 2 +- drivers/soundwire/sysfs_slave_dpn.c | 1 + drivers/spi/Kconfig | 1 + drivers/spi/atmel-quadspi.c | 27 ++- drivers/spi/spi-ar934x.c | 14 +- drivers/spi/spi-bcm63xx-hsspi.c | 4 +- drivers/spi/spi-davinci.c | 2 +- drivers/spi/spi-dw-bt1.c | 4 +- drivers/spi/spi-fsl-dspi.c | 6 +- drivers/spi/spi-fsl-spi.c | 11 +- drivers/spi/spi-geni-qcom.c | 3 +- drivers/spi/spi-gpio.c | 15 +- drivers/spi/spi-img-spfi.c | 4 +- drivers/spi/spi-imx.c | 2 + drivers/spi/spi-mem.c | 1 + drivers/spi/spi-mt7621.c | 11 +- drivers/spi/spi-mtk-nor.c | 2 +- drivers/spi/spi-mxic.c | 10 +- drivers/spi/spi-mxs.c | 1 + drivers/spi/spi-npcm-fiu.c | 8 +- drivers/spi/spi-pic32.c | 1 + drivers/spi/spi-pxa2xx.c | 5 +- drivers/spi/spi-qcom-qspi.c | 42 ++-- drivers/spi/spi-rb4xx.c | 2 +- drivers/spi/spi-rpc-if.c | 9 +- drivers/spi/spi-sc18is602.c | 13 +- drivers/spi/spi-sh.c | 13 +- drivers/spi/spi-sprd.c | 1 + drivers/spi/spi-st-ssc4.c | 5 +- drivers/spi/spi-stm32-qspi.c | 8 +- drivers/spi/spi-stm32.c | 1 + drivers/spi/spi-synquacer.c | 15 +- drivers/spi/spi-tegra114.c | 2 + drivers/spi/spi-tegra20-sflash.c | 1 + drivers/spi/spi-tegra20-slink.c | 2 + drivers/spi/spi-ti-qspi.c | 1 + drivers/spi/spi.c | 19 +- drivers/staging/comedi/drivers/mf6x4.c | 3 +- drivers/staging/gasket/gasket_interrupt.c | 15 +- drivers/staging/greybus/audio_codec.c | 2 + drivers/staging/greybus/audio_helper.c | 3 +- drivers/staging/hikey9xx/hi6421-spmi-pmic.c | 4 +- drivers/staging/media/rkisp1/rkisp1-capture.c | 1 + drivers/staging/media/sunxi/cedrus/cedrus_video.c | 4 +- drivers/staging/vc04_services/vchiq-mmal/Kconfig | 2 +- drivers/thermal/cpufreq_cooling.c | 4 +- drivers/tty/serial/8250/8250_mtk.c | 13 +- drivers/tty/serial/pmac_zilog.c | 14 +- drivers/usb/host/ehci-omap.c | 1 + drivers/usb/host/max3421-hcd.c | 3 +- drivers/usb/host/oxu210hp-hcd.c | 4 +- drivers/usb/serial/digi_acceleport.c | 45 ++--- drivers/usb/serial/keyspan_pda.c | 63 +++--- drivers/usb/serial/mos7720.c | 2 + drivers/vdpa/mlx5/net/mlx5_vnet.c | 5 + drivers/vfio/pci/vfio_pci.c | 7 +- drivers/vfio/pci/vfio_pci_nvlink2.c | 7 +- drivers/vhost/scsi.c | 3 +- drivers/video/fbdev/atmel_lcdfb.c | 2 +- drivers/virtio/virtio_ring.c | 8 +- drivers/watchdog/Kconfig | 4 +- drivers/watchdog/qcom-wdt.c | 2 +- drivers/watchdog/sprd_wdt.c | 34 ++-- drivers/watchdog/watchdog_core.c | 22 ++- drivers/xen/xen-pciback/xenbus.c | 2 +- drivers/xen/xenbus/xenbus.h | 2 + drivers/xen/xenbus/xenbus_client.c | 8 +- drivers/xen/xenbus/xenbus_probe.c | 1 + drivers/xen/xenbus/xenbus_probe_backend.c | 7 + drivers/xen/xenbus/xenbus_xs.c | 34 ++-- fs/btrfs/ctree.h | 1 - fs/btrfs/extent-tree.c | 33 +--- fs/btrfs/ioctl.c | 39 ++++ fs/btrfs/transaction.c | 42 +++- fs/ceph/caps.c | 11 +- fs/cifs/smb2misc.c | 16 +- fs/cifs/smb2ops.c | 3 +- fs/cifs/smb2pdu.c | 7 +- fs/cifs/smb2pdu.h | 14 +- fs/erofs/data.c | 26 +-- fs/eventpoll.c | 25 ++- fs/ext4/extents.c | 4 +- fs/ext4/inode.c | 19 +- fs/ext4/mballoc.c | 1 + fs/ext4/super.c | 14 +- fs/f2fs/node.c | 2 +- fs/f2fs/super.c | 1 + fs/fuse/virtio_fs.c | 2 + fs/inode.c | 4 +- fs/io-wq.h | 1 + fs/io_uring.c | 178 ++++++++++------- fs/jffs2/readinode.c | 16 ++ fs/jffs2/super.c | 17 ++ fs/jfs/jfs_dmap.h | 2 +- fs/lockd/host.c | 20 +- fs/nfs/flexfilelayout/flexfilelayout.c | 2 +- fs/nfs/inode.c | 2 +- fs/nfs/nfs4proc.c | 10 +- fs/nfs/nfs4xdr.c | 10 +- fs/nfs_common/grace.c | 6 +- fs/nfsd/filecache.c | 2 +- fs/nfsd/nfs4state.c | 1 + fs/nfsd/nfssvc.c | 3 +- fs/notify/dnotify/dnotify.c | 2 +- fs/notify/fanotify/fanotify.c | 7 +- fs/notify/fsnotify.c | 107 ++++++---- fs/notify/inotify/inotify.h | 9 +- fs/notify/inotify/inotify_fsnotify.c | 51 +---- fs/notify/inotify/inotify_user.c | 8 +- fs/open.c | 4 + fs/overlayfs/file.c | 87 ++------ fs/proc/generic.c | 24 ++- fs/proc/internal.h | 7 + fs/proc/proc_net.c | 16 -- fs/proc_namespace.c | 9 +- fs/ubifs/auth.c | 4 +- fs/ubifs/io.c | 13 +- include/acpi/acpi_bus.h | 5 - include/linux/fs.h | 3 +- include/linux/fsnotify_backend.h | 9 +- include/linux/iio/adc/ad_sigma_delta.h | 6 +- include/linux/inetdevice.h | 4 +- include/linux/mm_types.h | 8 + include/linux/of.h | 1 + include/linux/proc_fs.h | 8 +- include/linux/rmap.h | 1 - include/linux/seq_buf.h | 2 +- include/linux/sunrpc/xprt.h | 1 + include/linux/trace_seq.h | 4 +- include/media/v4l2-fwnode.h | 6 + include/media/v4l2-mediabus.h | 2 + include/rdma/uverbs_ioctl.h | 10 + include/uapi/linux/android/binder.h | 1 + include/uapi/linux/devlink.h | 2 +- include/xen/xenbus.h | 15 +- kernel/audit_fsnotify.c | 2 +- kernel/audit_tree.c | 2 +- kernel/audit_watch.c | 2 +- kernel/cgroup/cpuset.c | 33 +++- kernel/fork.c | 1 + kernel/irq/irqdomain.c | 11 +- kernel/rcu/tree.c | 118 ++++++----- kernel/sched/core.c | 6 +- kernel/sched/deadline.c | 5 +- kernel/sched/sched.h | 42 ++-- kernel/trace/bpf_trace.c | 8 +- kernel/trace/ring_buffer.c | 17 +- kernel/trace/trace.c | 19 +- kernel/trace/trace.h | 5 + kernel/trace/trace_boot.c | 2 + kernel/trace/trace_events.c | 2 +- kernel/trace/trace_kprobe.c | 9 +- kernel/trace/trace_selftest.c | 2 +- lib/dynamic_debug.c | 9 +- mm/gup.c | 220 +++++++++------------ mm/huge_memory.c | 2 +- mm/hugetlb.c | 1 + mm/init-mm.c | 1 + mm/madvise.c | 9 +- mm/memcontrol.c | 5 +- mm/memory-failure.c | 8 +- mm/memory.c | 13 +- mm/memory_hotplug.c | 2 +- mm/migrate.c | 8 +- mm/page_alloc.c | 13 +- mm/rmap.c | 9 - mm/vmalloc.c | 6 +- mm/vmscan.c | 14 +- mm/z3fold.c | 174 ++++++++-------- net/bluetooth/hci_event.c | 5 + net/bluetooth/hci_request.c | 12 +- net/bluetooth/sco.c | 5 + net/mac80211/rx.c | 2 +- net/mac80211/vht.c | 14 +- net/sunrpc/debugfs.c | 4 +- net/sunrpc/sched.c | 65 +++--- net/sunrpc/xprt.c | 65 ++++-- net/sunrpc/xprtrdma/module.c | 1 + net/sunrpc/xprtrdma/rpc_rdma.c | 40 +++- net/sunrpc/xprtrdma/transport.c | 1 + net/sunrpc/xprtsock.c | 7 +- net/wireless/scan.c | 2 +- samples/bpf/lwt_len_hist.sh | 2 + samples/bpf/test_lwt_bpf.sh | 0 samples/bpf/xdpsock_user.c | 2 + scripts/checkpatch.pl | 2 +- scripts/kconfig/preprocess.c | 2 +- scripts/kernel-doc | 4 +- security/integrity/ima/ima_crypto.c | 20 +- security/selinux/hooks.c | 16 +- security/smack/smack_access.c | 5 +- sound/core/memalloc.c | 3 +- sound/core/oss/pcm_oss.c | 22 ++- sound/pci/hda/hda_codec.c | 2 +- sound/pci/hda/hda_sysfs.c | 2 +- sound/pci/hda/patch_ca0132.c | 4 +- sound/pci/hda/patch_hdmi.c | 98 +++++++-- sound/pci/hda/patch_realtek.c | 46 +++++ sound/soc/amd/acp-da7219-max98357a.c | 9 +- sound/soc/amd/raven/pci-acp3x.c | 4 + sound/soc/amd/renoir/rn-pci-acp3x.c | 32 ++- sound/soc/atmel/Kconfig | 1 + sound/soc/codecs/cros_ec_codec.c | 2 +- sound/soc/codecs/cx2072x.c | 4 +- sound/soc/codecs/max98390.c | 2 + sound/soc/codecs/wm8994.c | 6 +- sound/soc/codecs/wm8997.c | 2 + sound/soc/codecs/wm8998.c | 4 +- sound/soc/codecs/wm_adsp.c | 5 +- sound/soc/intel/Kconfig | 2 +- sound/soc/intel/boards/sof_maxim_common.c | 4 +- sound/soc/jz4740/jz4740-i2s.c | 4 + sound/soc/meson/Kconfig | 2 +- sound/soc/qcom/Kconfig | 1 + sound/soc/qcom/common.c | 13 +- sound/soc/qcom/lpass-hdmi.c | 2 +- sound/soc/qcom/qdsp6/q6afe-clocks.c | 1 + sound/soc/soc-pcm.c | 2 + sound/soc/sof/intel/Kconfig | 2 +- sound/soc/sunxi/sun4i-i2s.c | 4 +- sound/usb/card.c | 3 + sound/usb/clock.c | 6 + sound/usb/quirks.c | 1 + tools/build/feature/Makefile | 2 +- tools/lib/bpf/btf.c | 16 +- tools/lib/bpf/libbpf.c | 12 ++ tools/perf/tests/expand-cgroup.c | 2 +- tools/perf/tests/pmu-events.c | 2 +- tools/perf/util/parse-regs-options.c | 2 +- tools/perf/util/probe-file.c | 13 +- tools/testing/selftests/bpf/Makefile | 3 +- tools/testing/selftests/bpf/progs/local_storage.c | 24 ++- .../testing/selftests/bpf/progs/test_tunnel_kern.c | 42 +--- tools/testing/selftests/bpf/test_sockmap.c | 36 ++-- tools/testing/selftests/bpf/test_tunnel.sh | 43 +++- tools/testing/selftests/run_kselftest.sh | 2 +- tools/testing/selftests/seccomp/config | 1 + 724 files changed, 5412 insertions(+), 3411 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/717 hwmon: (k10temp) Remove support for displaying voltage and current on Zen CPUs
From: Guenter Roeck <[email protected]>
commit 0a4e668b5d52eed8026f5d717196b02b55fb2dc6 upstream.
Voltages and current are reported by Zen CPUs. However, the means to do so is undocumented, changes from CPU to CPU, and the raw data is not calibrated. Calibration information is available, but again not documented. This results in less than perfect user experience, up to concerns that loading the driver might possibly damage the hardware (by reporting out-of range voltages). Effectively support for reporting voltages and current is not maintainable. Drop it.
--- drivers/hwmon/k10temp.c | 98 ------------------------------------------------ 1 file changed, 98 deletions(-)
drivers/hwmon/k10temp.c +0 -98
@@ -11,13 +11,6 @@* convert raw register values is from https://github.com/ocerman/zenpower. * The information is not confirmed from chip datasheets, but experiments * suggest that it provides reasonable temperature values. -* - Register addresses to read chip voltage and current are also from -* https://github.com/ocerman/zenpower, and not confirmed from chip -* datasheets. Current calibration is board specific and not typically -* shared by board vendors. For this reason, current values are -* normalized to report 1A/LSB for core current and and 0.25A/LSB for SoC -* current. Reported values can be adjusted using the sensors configuration -* file. */ #include <linux/bitops.h>
@@ -109,10 +102,7 @@ struct k10temp_data {int temp_offset;u32 temp_adjust_mask;u32 show_temp; -u32 svi_addr[2 ];bool is_zen; -bool show_current; -int cfactor[2 ]; };#define TCTL_BIT 0
@@ -137,16 +127,6 @@ static const struct tctl_offset tctl_off { 0x17, "AMD Ryzen Threadripper 29", 27000 }, /* 29{20,50,70,90}[W]X */ }; -static bool is_threadripper (void ) -{ -return strstr (boot_cpu_data.x86_model_id,"Threadripper" ); -} - -static bool is_epyc (void ) -{ -return strstr (boot_cpu_data.x86_model_id,"EPYC" ); -} -static void read_htcreg_pci (struct pci_dev *pdev,u32 *regval) {pci_read_config_dword (pdev,REG_HARDWARE_THERMAL_CONTROL , regval);
@@ -211,16 +191,6 @@ static const char *k10temp_temp_label[] "Tccd8", }; -static const char *k10temp_in_label[] = { -"Vcore" , -"Vsoc" , -}; - -static const char *k10temp_curr_label[] = { -"Icore" , -"Isoc" , -}; -static int k10temp_read_labels (struct device *dev,enum hwmon_sensor_types type,u32 attr,int channel,const char **str)
@@ -229,50 +199,6 @@ static int k10temp_read_labels(struct decase hwmon_temp: *str = k10temp_temp_label[channel];break ; -case hwmon_in: - *str = k10temp_in_label[channel]; -break ; -case hwmon_curr: - *str = k10temp_curr_label[channel]; -break ; -default : -return -EOPNOTSUPP ; - } -return 0 ; -} - -static int k10temp_read_curr (struct device *dev,u32 attr,int channel, -long *val) -{ -struct k10temp_data *data =dev_get_drvdata (dev); -u32 regval; - -switch (attr) { -case hwmon_curr_input: -amd_smn_read (amd_pci_dev_to_node_id (data->pdev), - data->svi_addr[channel], ®val); - *val =DIV_ROUND_CLOSEST (data->cfactor[channel] * - (regval &0xff ), -1000 ); -break ; -default : -return -EOPNOTSUPP ; - } -return 0 ; -} - -static int k10temp_read_in (struct device *dev,u32 attr,int channel,long *val) -{ -struct k10temp_data *data =dev_get_drvdata (dev); -u32 regval; - -switch (attr) { -case hwmon_in_input: -amd_smn_read (amd_pci_dev_to_node_id (data->pdev), - data->svi_addr[channel], ®val); - regval = (regval >>16 ) &0xff ; - *val =DIV_ROUND_CLOSEST (155000 - regval *625 ,100 ); -break ;default :return -EOPNOTSUPP ; }
@@ -331,10 +257,6 @@ static int k10temp_read(struct device *dswitch (type) {case hwmon_temp:return k10temp_read_temp (dev, attr, channel, val); -case hwmon_in: -return k10temp_read_in (dev, attr, channel, val); -case hwmon_curr: -return k10temp_read_curr (dev, attr, channel, val);default :return -EOPNOTSUPP ; }
@@ -383,11 +305,6 @@ static umode_t k10temp_is_visible(constreturn 0 ; }break ; -case hwmon_in: -case hwmon_curr: -if (!data->show_current) -return 0 ; -break ;default :return 0 ; }
@@ -517,20 +434,10 @@ static int k10temp_probe(struct pci_devcase 0x8 :/* Zen+ */ case 0x11 :/* Zen APU */ case 0x18 :/* Zen+ APU */ - data->show_current = !is_threadripper () && !is_epyc (); - data->svi_addr[0 ] =F17H_M01H_SVI_TEL_PLANE0 ; - data->svi_addr[1 ] =F17H_M01H_SVI_TEL_PLANE1 ; - data->cfactor[0 ] =F17H_M01H_CFACTOR_ICORE ; - data->cfactor[1 ] =F17H_M01H_CFACTOR_ISOC ;k10temp_get_ccd_support (pdev, data,4 );break ;case 0x31 :/* Zen2 Threadripper */ case 0x71 :/* Zen2 */ - data->show_current = !is_threadripper () && !is_epyc (); - data->cfactor[0 ] =F17H_M31H_CFACTOR_ICORE ; - data->cfactor[1 ] =F17H_M31H_CFACTOR_ISOC ; - data->svi_addr[0 ] =F17H_M31H_SVI_TEL_PLANE0 ; - data->svi_addr[1 ] =F17H_M31H_SVI_TEL_PLANE1 ;k10temp_get_ccd_support (pdev, data,8 );break ; }
@@ -542,11 +449,6 @@ static int k10temp_probe(struct pci_devswitch (boot_cpu_data.x86_model) { case 0x0 ... 0x1: /* Zen3 */ - data->show_current = true; - data->svi_addr[0 ] =F19H_M01_SVI_TEL_PLANE0 ; - data->svi_addr[1 ] =F19H_M01_SVI_TEL_PLANE1 ; - data->cfactor[0 ] =F19H_M01H_CFACTOR_ICORE ; - data->cfactor[1 ] =F19H_M01H_CFACTOR_ISOC ;k10temp_get_ccd_support (pdev, data,8 );break ; }
Greg Kroah-Hartman
maintainerPATCH 2/717 drm/gma500: fix double free of gma_connector
In reply to Greg Kroah-HartmanFrom: Tom Rix <[email protected]>
[ Upstream commit 4e19d51ca5b28a1d435a844c7b2a8e1b1b6fa237 ]
clang static analysis reports this problem:
cdv_intel_dp.c:2101:2: warning: Attempt to free released memory
kfree(gma_connector);
^~~~~~~~~~~~~~~~~~~~In cdv_intel_dp_init() when the call to cdv_intel_edp_panel_vdd_off() fails, the handler calls cdv_intel_dp_destroy(connector) which does the first free of gma_connector. So adjust the goto label and skip the second free.
--- drivers/gpu/drm/gma500/cdv_intel_dp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/gma500/cdv_intel_dp.c +1 -1
@@ -2083,7 +2083,7 @@ cdv_intel_dp_init(struct drm_device *dev, struct psb_intel_mode_device *mode_devDRM_INFO ("failed to retrieve link info, disabling eDP\n" );drm_encoder_cleanup (encoder);cdv_intel_dp_destroy (connector); - goto err_priv; + goto err_connector; }else { DRM_DEBUG_KMS("DPCD: Rev=%x LN_Rate=%x LN_CNT=%x LN_DOWNSP=%x\n", intel_dp->dpcd[0], intel_dp->dpcd[1],
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 3/717 iio: adc: at91_adc: add Kconfig dep on the OF symbol and remove of_match_ptr()
In reply to Greg Kroah-HartmanFrom: Alexandru Ardelean <[email protected]>
[ Upstream commit f091d7c5fe6cc39e916b50f90e3cac67a032d0be ]
This tries to solve a warning reported by the lkp bot:
Quoted 2 lines
Quoted 2 lines
drivers/iio/adc/at91_adc.c:1439:34: warning: unused variable 'at91_adc_dt_ids' [-Wunused-const-variable]
static const struct of_device_id at91_adc_dt_ids[] = {
^1 warning generated.
This warning has appeared after the AT91_ADC driver compilation has been enabled via the COMPILE_TEST symbol dependency.
The warning is caused by the 'of_match_ptr()' helper which returns NULL if OF is undefined. This driver should build only for device-tree context, so a dependency on the OF Kconfig symbol has been added.
Also, the usage of of_match_ptr() helper has been removed since it shouldn't ever return NULL (because the driver should not be built for the non-OF context).
--- drivers/iio/adc/Kconfig | 2 +- drivers/iio/adc/at91_adc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/iio/adc/Kconfig +1 -1
@@ -295,7 +295,7 @@ config ASPEED_ADC config AT91_ADC tristate "Atmel AT91 ADC" depends on ARCH_AT91 || COMPILE_TEST - depends on INPUT && SYSFS + depends on INPUT && SYSFS && OF select IIO_BUFFER select IIO_TRIGGERED_BUFFER help
drivers/iio/adc/at91_adc.c +1 -1
@@ -1469,7 +1469,7 @@ static struct platform_driver at91_adc_driver = { .id_table = at91_adc_ids, .driver = { .name = DRIVER_NAME, - .of_match_table = of_match_ptr(at91_adc_dt_ids), + .of_match_table = at91_adc_dt_ids, .pm = &at91_adc_pm_ops, }, };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 4/717 drm/aspeed: Fix Kconfig warning & subsequent build errors
In reply to Greg Kroah-HartmanFrom: Randy Dunlap <[email protected]>
[ Upstream commit bf296b35489b46780b73b74ad984d06750ed5479 ]
Kernel test robot reported build errors (undefined references) that didn't make much sense. After reproducing them, there is also a Kconfig warning that is the root cause of the build errors, so fix that Kconfig problem.
Fixes this Kconfig warning:
WARNING: unmet direct dependencies detected for CMA
Depends on [n]: MMU [=n]
Selected by [m]:
- DRM_ASPEED_GFX [=m] && HAS_IOMEM [=y] && DRM [=m] && OF [=y] && (COMPILE_TEST [=y] || ARCH_ASPEED) && HAVE_DMA_CONTIGUOUS [=y]
and these dependent build errors:
(.text+0x10c8c): undefined reference to `start_isolate_page_range'
microblaze-linux-ld: (.text+0x10f14): undefined reference to `test_pages_isolated'
microblaze-linux-ld: (.text+0x10fd0): undefined reference to `undo_isolate_page_range'
--- drivers/gpu/drm/aspeed/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/aspeed/Kconfig +1 -0
@@ -3,6 +3,7 @@ config DRM_ASPEED_GFX tristate "ASPEED BMC Display Controller" depends on DRM && OF depends on (COMPILE_TEST || ARCH_ASPEED) + depends on MMU select DRM_KMS_HELPER select DRM_KMS_CMA_HELPER select DMA_CMA if HAVE_DMA_CONTIGUOUS
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 5/717 drm/mcde: Fix handling of platform_get_irq() error
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit e2dae672a9d5e11856fe30ede63467c65f999a81 ]
platform_get_irq() returns -ERRNO on error. In such case comparison to 0 would pass the check.
--- drivers/gpu/drm/mcde/mcde_drv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/mcde/mcde_drv.c +2 -2
@@ -331,8 +331,8 @@ static int mcde_probe(struct platform_device *pdev) } irq =platform_get_irq (pdev,0 ); -if (!irq) { - ret = -EINVAL ; +if (irq <0 ) { + ret = irq; goto clk_disable; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 6/717 drm/tve200: Fix handling of platform_get_irq() error
In reply to Greg Kroah-HartmanFrom: Krzysztof Kozlowski <[email protected]>
[ Upstream commit 77bb5aaf2bb8180e7d1bb70b4df306f511707a7d ]
platform_get_irq() returns -ERRNO on error. In such case comparison to 0 would pass the check.
--- drivers/gpu/drm/tve200/tve200_drv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/tve200/tve200_drv.c +2 -2
@@ -200,8 +200,8 @@ static int tve200_probe(struct platform_device *pdev) } irq =platform_get_irq (pdev,0 ); -if (!irq) { - ret = -EINVAL ; +if (irq <0 ) { + ret = irq; goto clk_disable; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 7/717 arm64: dts: renesas: hihope-rzg2-ex: Drop rxc-skew-ps from ethernet-phy node
In reply to Greg Kroah-HartmanFrom: Biju Das <[email protected]>
[ Upstream commit 67d3dcf12a3d245b6fd6ca5672893f7ae4e137ed ]
HiHope RZG2[HMN] boards uses Realtek phy and the driver does not support rxc-skew-ps property. So remove rxc-skew-ps from ethernet-phy node.
--- arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi | 1 - 1 file changed, 1 deletion(-)
arch/arm64/boot/dts/renesas/hihope-rzg2-ex.dtsi +0 -1
@@ -23,7 +23,6 @@ status = "okay"; phy0: ethernet-phy@0 { - rxc-skew-ps = <1500>; reg = <0>; interrupt-parent = <&gpio2>; interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 8/717 arm64: dts: renesas: cat875: Remove rxc-skew-ps from ethernet-phy node
In reply to Greg Kroah-HartmanFrom: Biju Das <[email protected]>
[ Upstream commit 53e573dc39fba1834f3e4fa002cb754b61a30701 ]
The CAT875 sub board from Silicon Linux uses Realtek phy and the driver does not support rxc-skew-ps property.
--- arch/arm64/boot/dts/renesas/cat875.dtsi | 1 - 1 file changed, 1 deletion(-)
arch/arm64/boot/dts/renesas/cat875.dtsi +0 -1
@@ -21,7 +21,6 @@ status = "okay"; phy0: ethernet-phy@0 { - rxc-skew-ps = <1500>; reg = <0>; interrupt-parent = <&gpio2>; interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 9/717 soc: renesas: rmobile-sysc: Fix some leaks in rmobile_init_pm_domains()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit cf25d802e029c31efac8bdc979236927f37183bd ]
This code needs to call iounmap() on one error path.
--- drivers/soc/renesas/rmobile-sysc.c | 1 + 1 file changed, 1 insertion(+)
drivers/soc/renesas/rmobile-sysc.c +1 -0
@@ -327,6 +327,7 @@ static int __init rmobile_init_pm_domains(void) pmd =of_get_child_by_name (np,"pm-domains" );if (!pmd) { +iounmap (base);pr_warn ("%pOF lacks pm-domains node\n" , np);continue ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 10/717 soc: mediatek: Check if power domains can be powered on at boot time
In reply to Greg Kroah-HartmanFrom: Nicolas Boichat <[email protected]>
[ Upstream commit 4007844b05815717f522c7ea9914e24ad0ff6c79 ]
In the error case, where a power domain cannot be powered on successfully at boot time (in mtk_register_power_domains), pm_genpd_init would still be called with is_off=false, and the system would later try to disable the power domain again, triggering warnings as disabled clocks are disabled again (and other potential issues).
Also print a warning splat in that case, as this should never happen.
--- drivers/soc/mediatek/mtk-scpsys.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/soc/mediatek/mtk-scpsys.c +3 -2
@@ -524,6 +524,7 @@ static void mtk_register_power_domains(struct platform_device *pdev,for (i =0 ; i < num; i++) {struct scp_domain *scpd = &scp->domains[i];struct generic_pm_domain *genpd = &scpd->genpd; +bool on;/* * Initially turn on all domains to make the domains usable
@@ -531,9 +532,9 @@ static void mtk_register_power_domains(struct platform_device *pdev,* software. The unused domains will be switched off during * late_init time. */ - genpd->power_on (genpd); + on = !WARN_ON (genpd->power_on (genpd) <0 ); -pm_genpd_init (genpd,NULL , false); +pm_genpd_init (genpd,NULL , !on); }/*
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 11/717 arm64: dts: mediatek: mt8183: fix gce incorrect mbox-cells value
In reply to Greg Kroah-HartmanFrom: Fabien Parent <[email protected]>
[ Upstream commit e55c56df43dd11de4a6c08e3ea52ca45b51c8800 ]
The binding documentation says:
- #mbox-cells: Should be 2.
<&phandle channel priority>
phandle: Label name of a gce node.
channel: Channel of mailbox. Be equal to the thread id of GCE.
priority: Priority of GCE thread.
Fix the value of #mbox-cells.
--- arch/arm64/boot/dts/mediatek/mt8183.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/mediatek/mt8183.dtsi +1 -1
@@ -363,7 +363,7 @@ compatible = "mediatek,mt8183-gce"; reg = <0 0x10238000 0 0x4000>; interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_LOW>; - #mbox-cells = <3>; + #mbox-cells = <2>; clocks = <&infracfg CLK_INFRA_GCE>; clock-names = "gce"; };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 12/717 arm64: dts: ipq6018: update the reserved-memory node
In reply to Greg Kroah-HartmanFrom: Kathiravan T <[email protected]>
[ Upstream commit 4af5c6dc255ca64e5263a5254bb7553f05bb682c ]
Memory region reserved for the TZ is changed long back. Let's update the same to align with the corret region. Its size also increased to 4MB from 2MB.
Along with that, bump the Q6 region size to 85MB.
--- arch/arm64/boot/dts/qcom/ipq6018.dtsi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/arm64/boot/dts/qcom/ipq6018.dtsi +3 -3
@@ -156,8 +156,8 @@ no-map; }; - tz: tz@48500000 { - reg = <0x0 0x48500000 0x0 0x00200000>; + tz: memory@4a600000 { + reg = <0x0 0x4a600000 0x0 0x00400000>; no-map; };
@@ -167,7 +167,7 @@ }; q6_region: memory@4ab00000 { - reg = <0x0 0x4ab00000 0x0 0x02800000>; + reg = <0x0 0x4ab00000 0x0 0x05500000>; no-map; }; };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 13/717 arm64: dts: qcom: sc7180: Fix one forgotten interconnect reference
In reply to Greg Kroah-HartmanFrom: Douglas Anderson <[email protected]>
[ Upstream commit 228813aaa71113d7a12313b87c4905a9d3f9df37 ]
In commit e23b1220a246 ("arm64: dts: qcom: sc7180: Increase the number of interconnect cells") we missed increasing the cells on one interconnect. That's no bueno. Fix it.
NOTE: it appears that things aren't totally broken without this fix, but clearly something isn't going to be working right. If nothing else, without this fix I see this in the logs:
OF: /soc@0/mdss@ae00000: could not get #interconnect-cells for /soc@0/interrupt-controller@17a00000
--- arch/arm64/boot/dts/qcom/sc7180.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/qcom/sc7180.dtsi +1 -1
@@ -2811,7 +2811,7 @@ interrupt-controller; #interrupt-cells = <1>; - interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>; + interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>; interconnect-names = "mdp0-mem"; iommus = <&apps_smmu 0x800 0x2>;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 14/717 soc: qcom: geni: More properly switch to DMA mode
In reply to Greg Kroah-HartmanFrom: Douglas Anderson <[email protected]>
[ Upstream commit 4b6ea87be44ef34732846fc71e44c41125f0c4fa ]
On geni-i2c transfers using DMA, it was seen that if you program the command (I2C_READ) before calling geni_se_rx_dma_prep() that it could cause interrupts to fire. If we get unlucky, these interrupts can just keep firing (and not be handled) blocking further progress and hanging the system.
In commit 02b9aec59243 ("i2c: i2c-qcom-geni: Fix DMA transfer race") we avoided that by making sure we didn't program the command until after geni_se_rx_dma_prep() was called. While that avoided the problems, it also turns out to be invalid. At least in the TX case we started seeing sporadic corrupted transfers. This is easily seen by adding an msleep() between the DMA prep and the writing of the command, which makes the problem worse. That means we need to revert that commit and find another way to fix the bogus IRQs.
Specifically, after reverting commit 02b9aec59243 ("i2c:
i2c-qcom-geni: Fix DMA transfer race"), I put some traces in. I found that the when the interrupts were firing like crazy:
- "m_stat" had bits for M_RX_IRQ_EN, M_RX_FIFO_WATERMARK_EN set.
- "dma" was set.
Further debugging showed that I could make the problem happen more reliably by adding an "msleep(1)" any time after geni_se_setup_m_cmd() ran up until geni_se_rx_dma_prep() programmed the length.
A rather simple fix is to change geni_se_select_dma_mode() so it's a true inverse of geni_se_select_fifo_mode() and disables all the FIFO related interrupts. Now the problematic interrupts can't fire and we can program things in the correct order without worrying.
As part of this, let's also change the writel_relaxed() in the prepare function to a writel() so that our DMA is guaranteed to be prepared now that we can't rely on geni_se_setup_m_cmd()'s writel().
NOTE: the only current user of GENI_SE_DMA in mainline is i2c.
--- drivers/soc/qcom/qcom-geni-se.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-)
drivers/soc/qcom/qcom-geni-se.c +15 -2
@@ -289,10 +289,23 @@ static void geni_se_select_fifo_mode(struct geni_se *se)static void geni_se_select_dma_mode (struct geni_se *se) { +u32 proto =geni_se_read_proto (se);u32 val;geni_se_irq_clear (se); + val =readl_relaxed (se->base +SE_GENI_M_IRQ_EN ); +if (proto !=GENI_SE_UART ) { + val &= ~(M_CMD_DONE_EN |M_TX_FIFO_WATERMARK_EN ); + val &= ~(M_RX_FIFO_WATERMARK_EN |M_RX_FIFO_LAST_EN ); + } +writel_relaxed (val, se->base +SE_GENI_M_IRQ_EN ); + + val =readl_relaxed (se->base +SE_GENI_S_IRQ_EN ); +if (proto !=GENI_SE_UART ) + val &= ~S_CMD_DONE_EN ; +writel_relaxed (val, se->base +SE_GENI_S_IRQ_EN ); + val =readl_relaxed (se->base +SE_GENI_DMA_MODE_EN ); val |=GENI_DMA_MODE_EN ;writel_relaxed (val, se->base +SE_GENI_DMA_MODE_EN );
@@ -651,7 +664,7 @@ int geni_se_tx_dma_prep(struct geni_se *se, void *buf, size_t len,writel_relaxed (lower_32_bits (*iova), se->base +SE_DMA_TX_PTR_L );writel_relaxed (upper_32_bits (*iova), se->base +SE_DMA_TX_PTR_H );writel_relaxed (GENI_SE_DMA_EOT_BUF , se->base +SE_DMA_TX_ATTR ); -writel_relaxed (len, se->base +SE_DMA_TX_LEN ); +writel (len, se->base +SE_DMA_TX_LEN );return 0 ; }EXPORT_SYMBOL (geni_se_tx_dma_prep);
@@ -688,7 +701,7 @@ int geni_se_rx_dma_prep(struct geni_se *se, void *buf, size_t len,writel_relaxed (upper_32_bits (*iova), se->base +SE_DMA_RX_PTR_H );/* RX does not have EOT buffer type bit. So just reset RX_ATTR */ writel_relaxed (0 , se->base +SE_DMA_RX_ATTR ); -writel_relaxed (len, se->base +SE_DMA_RX_LEN ); +writel (len, se->base +SE_DMA_RX_LEN );return 0 ; }EXPORT_SYMBOL (geni_se_rx_dma_prep);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 15/717 Revert "i2c: i2c-qcom-geni: Fix DMA transfer race"
In reply to Greg Kroah-HartmanFrom: Douglas Anderson <[email protected]>
[ Upstream commit 9cb4c67d7717135d6f4600a49ab07b470ea4ee2f ]
This reverts commit 02b9aec59243c6240fc42884acc958602146ddf6.
As talked about in the patch ("soc: qcom: geni: More properly switch to DMA mode"), swapping the order of geni_se_setup_m_cmd() and geni_se_xx_dma_prep() can sometimes cause corrupted transfers. Thus we traded one problem for another. Now that we've debugged the problem further and fixed the geni helper functions to more disable FIFO interrupts when we move to DMA mode we can revert it and end up with (hopefully) zero problems!
To be explicit, the patch ("soc: qcom: geni: More properly switch to DMA mode") is a prerequisite for this one.
--- drivers/i2c/busses/i2c-qcom-geni.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/i2c/busses/i2c-qcom-geni.c +2 -4
@@ -366,6 +366,7 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,geni_se_select_mode (se,GENI_SE_FIFO );writel_relaxed (len, se->base +SE_I2C_RX_TRANS_LEN ); +geni_se_setup_m_cmd (se,I2C_READ , m_param);if (dma_buf &&geni_se_rx_dma_prep (se, dma_buf, len, &rx_dma)) {geni_se_select_mode (se,GENI_SE_FIFO );
@@ -373,8 +374,6 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, dma_buf =NULL ; } -geni_se_setup_m_cmd (se,I2C_READ , m_param); - time_left =wait_for_completion_timeout (&gi2c->done,XFER_TIMEOUT );if (!time_left)geni_i2c_abort_xfer (gi2c);
@@ -408,6 +407,7 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,geni_se_select_mode (se,GENI_SE_FIFO );writel_relaxed (len, se->base +SE_I2C_TX_TRANS_LEN ); +geni_se_setup_m_cmd (se,I2C_WRITE , m_param);if (dma_buf &&geni_se_tx_dma_prep (se, dma_buf, len, &tx_dma)) {geni_se_select_mode (se,GENI_SE_FIFO );
@@ -415,8 +415,6 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg, dma_buf =NULL ; } -geni_se_setup_m_cmd (se,I2C_WRITE , m_param); -if (!dma_buf)/* Get FIFO IRQ */ writel_relaxed (1 , se->base +SE_GENI_TX_WATERMARK_REG );
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 16/717 RDMA/bnxt_re: Set queue pair state when being queried
In reply to Greg Kroah-HartmanFrom: Kamal Heib <[email protected]>
[ Upstream commit 53839b51a7671eeb3fb44d479d541cf3a0f2dd45 ]
The API for ib_query_qp requires the driver to set cur_qp_state on return, add the missing set.
--- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 1 + 1 file changed, 1 insertion(+)
drivers/infiniband/hw/bnxt_re/ib_verbs.c +1 -0
@@ -2078,6 +2078,7 @@ int bnxt_re_query_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr, goto out; } qp_attr->qp_state =__to_ib_qp_state (qplib_qp->state); + qp_attr->cur_qp_state =__to_ib_qp_state (qplib_qp->cur_qp_state); qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ?1 :0 ; qp_attr->qp_access_flags =__to_ib_access_flags (qplib_qp->access); qp_attr->pkey_index = qplib_qp->pkey_index;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 17/717 rtc: pcf2127: fix pcf2127_nvmem_read/write() returns
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit ba1c30bf3f2536f248d262c6f257b5a787305991 ]
These functions should return zero on success. Non-zero returns are treated as error. On some paths, this doesn't matter but in nvmem_cell_read() a non-zero return would be passed to ERR_PTR() and lead to an Oops.
--- drivers/rtc/rtc-pcf2127.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
drivers/rtc/rtc-pcf2127.c +4 -8
@@ -243,10 +243,8 @@ static int pcf2127_nvmem_read(void *priv, unsigned int offset,if (ret)return ret; - ret =regmap_bulk_read (pcf2127->regmap,PCF2127_REG_RAM_RD_CMD , - val, bytes); - -return ret ?: bytes; +return regmap_bulk_read (pcf2127->regmap,PCF2127_REG_RAM_RD_CMD , + val, bytes); } static int pcf2127_nvmem_write(void *priv, unsigned int offset,
@@ -261,10 +259,8 @@ static int pcf2127_nvmem_write(void *priv, unsigned int offset,if (ret)return ret; - ret =regmap_bulk_write (pcf2127->regmap,PCF2127_REG_RAM_WRT_CMD , - val, bytes); - -return ret ?: bytes; +return regmap_bulk_write (pcf2127->regmap,PCF2127_REG_RAM_WRT_CMD , + val, bytes); }/* watchdog driver */
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 18/717 RDMA/bnxt_re: Fix entry size during SRQ create
In reply to Greg Kroah-HartmanFrom: Selvin Xavier <[email protected]>
[ Upstream commit b898d5c50cab1f985e77d053eb5c4d2c4a7694ae ]
Only static WQE is supported for SRQ. So always use the max supported SGEs while calculating SRQ entry size.
--- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/hw/bnxt_re/ib_verbs.c +2 -2
@@ -1657,8 +1657,8 @@ int bnxt_re_create_srq(struct ib_srq *ib_srq, srq->qplib_srq.max_wqe = entries; srq->qplib_srq.max_sge = srq_init_attr->attr.max_sge; - srq->qplib_srq.wqe_size = -bnxt_re_get_rwqe_size (srq->qplib_srq.max_sge); +/* 128 byte wqe size for SRQ . So use max sges */ + srq->qplib_srq.wqe_size =bnxt_re_get_rwqe_size (dev_attr->max_srq_sges); srq->qplib_srq.threshold = srq_init_attr->attr.srq_limit; srq->srq_limit = srq_init_attr->attr.srq_limit; srq->qplib_srq.eventq_hw_ring_id = rdev->nq[0 ].ring_id;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 19/717 selinux: fix error initialization in inode_doinit_with_dentry()
In reply to Greg Kroah-HartmanFrom: Tianyue Ren <[email protected]>
[ Upstream commit 83370b31a915493231e5b9addc72e4bef69f8d31 ]
Mark the inode security label as invalid if we cannot find a dentry so that we will retry later rather than marking it initialized with the unlabeled SID.
--- security/selinux/hooks.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
security/selinux/hooks.c +16 -3
@@ -1451,7 +1451,13 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent* inode_doinit with a dentry, before these inodes could * be used again by userspace. */ - goto out; + isec->initialized =LABEL_INVALID ; +/* +* There is nothing useful to jump to the "out" +* label, except a needless spin lock/unlock +* cycle. +*/ +return 0 ; } rc = inode_doinit_use_xattr(inode, dentry, sbsec->def_sid,
@@ -1507,8 +1513,15 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent* inode_doinit() with a dentry, before these inodes * could be used again by userspace. */ -if (!dentry) - goto out; +if (!dentry) { + isec->initialized =LABEL_INVALID ; +/* +* There is nothing useful to jump to the "out" +* label, except a needless spin lock/unlock +* cycle. +*/ +return 0 ; + } rc =selinux_genfs_get_sid (dentry, sclass, sbsec->flags, &sid);if (rc) {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 20/717 ARM: dts: aspeed-g6: Fix the GPIO memory size
In reply to Greg Kroah-HartmanFrom: Billy Tsai <[email protected]>
[ Upstream commit 886f82ce9f1f4559c139fdb2d79d158999ca38cd ]
The GPIO controller is a GPIO controller followed by some SGPIO controllers, which are a different type of device with their own binding and drivers.
Make the gpio node cover the only conventional GPIO controller.
--- arch/arm/boot/dts/aspeed-g6.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/boot/dts/aspeed-g6.dtsi +1 -1
@@ -357,7 +357,7 @@ #gpio-cells = <2>; gpio-controller; compatible = "aspeed,ast2600-gpio"; - reg = <0x1e780000 0x800>; + reg = <0x1e780000 0x400>; interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; gpio-ranges = <&pinctrl 0 0 208>; ngpios = <208>;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 21/717 ARM: dts: aspeed: s2600wf: Fix VGA memory region location
In reply to Greg Kroah-HartmanFrom: Joel Stanley <[email protected]>
[ Upstream commit 9e1cc9679776f5b9e42481d392b1550753ebd084 ]
The VGA memory region is always from the top of RAM. On this board, that is 0x80000000 + 0x20000000 - 0x01000000 = 0x9f000000.
This was not an issue in practice as the region is "reserved" by the vendor's u-boot reducing the amount of available RAM, and the only user is the host VGA device poking at RAM over PCIe. That is, nothing from the ARM touches it.
It is worth fixing as developers copy existing device trees when building their machines, and the XDMA driver does use the memory region from the ARM side.
--- arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/boot/dts/aspeed-bmc-intel-s2600wf.dts +2 -2
@@ -22,9 +22,9 @@ #size-cells = <1>; ranges; - vga_memory: framebuffer@7f000000 { + vga_memory: framebuffer@9f000000 { no-map; - reg = <0x7f000000 0x01000000>; + reg = <0x9f000000 0x01000000>; /* 16M */ }; };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 22/717 RDMA/core: Fix error return in _ib_modify_qp()
In reply to Greg Kroah-HartmanFrom: Jing Xiangfeng <[email protected]>
[ Upstream commit 5333499c6014224756e97fa1a1047dfa592d76d3 ]
Fix to return error code PTR_ERR() from the error handling case instead of 0.
--- drivers/infiniband/core/verbs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/infiniband/core/verbs.c +3 -1
@@ -1698,8 +1698,10 @@ static int _ib_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr, slave =rdma_lag_get_ah_roce_slave (qp->device, &attr->ah_attr,GFP_KERNEL ); -if (IS_ERR (slave)) +if (IS_ERR (slave)) { + ret =PTR_ERR (slave); goto out_av; + } attr->xmit_slave = slave; } }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 23/717 RDMA/rxe: Compute PSN windows correctly
In reply to Greg Kroah-HartmanFrom: Bob Pearson <[email protected]>
[ Upstream commit bb3ab2979fd69db23328691cb10067861df89037 ]
The code which limited the number of unacknowledged PSNs was incorrect. The PSNs are limited to 24 bits and wrap back to zero from 0x00ffffff. The test was computing a 32 bit value which wraps at 32 bits so that qp->req.psn can appear smaller than the limit when it is actually larger.
Replace '>' test with psn_compare which is used for other PSN comparisons and correctly handles the 24 bit size.
--- drivers/infiniband/sw/rxe/rxe_req.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/infiniband/sw/rxe/rxe_req.c +2 -1
@@ -634,7 +634,8 @@ next_wqe: }if (unlikely (qp_type (qp) ==IB_QPT_RC && - qp->req.psn > (qp->comp.psn +RXE_MAX_UNACKED_PSNS ))) { +psn_compare (qp->req.psn, (qp->comp.psn + +RXE_MAX_UNACKED_PSNS )) >0 )) { qp->req.wait_psn =1 ; goto exit; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 24/717 x86/mm/ident_map: Check for errors from ident_pud_init()
In reply to Greg Kroah-HartmanFrom: Arvind Sankar <[email protected]>
[ Upstream commit 1fcd009102ee02e217f2e7635ab65517d785da8e ]
Commit
ea3b5e60ce80 ("x86/mm/ident_map: Add 5-level paging support")
added ident_p4d_init() to support 5-level paging, but this function doesn't check and return errors from ident_pud_init().
For example, the decompressor stub uses this code to create an identity mapping. If it runs out of pages while trying to allocate a PMD pagetable, the error will be currently ignored.
Fix this to propagate errors.
[ bp: Space out statements for better readability. ]
--- arch/x86/mm/ident_map.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
arch/x86/mm/ident_map.c +10 -2
@@ -62,6 +62,7 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page, unsigned long addr, unsigned long end) {unsigned long next; +int result;for (; addr < end; addr = next) {p4d_t *p4d = p4d_page +p4d_index (addr);
@@ -73,13 +74,20 @@ static int ident_p4d_init(struct x86_mapping_info *info, p4d_t *p4d_page,if (p4d_present (*p4d)) { pud =pud_offset (p4d,0 ); -ident_pud_init (info, pud, addr, next); + result =ident_pud_init (info, pud, addr, next); +if (result) +return result; +continue ; } pud = (pud_t *)info->alloc_pgt_page (info->context);if (!pud)return -ENOMEM ; -ident_pud_init (info, pud, addr, next); + + result =ident_pud_init (info, pud, addr, next); +if (result) +return result; +set_p4d (p4d,__p4d (__pa (pud) | info->kernpg_flag)); }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 25/717 ARM: p2v: fix handling of LPAE translation in BE mode
In reply to Greg Kroah-HartmanFrom: Ard Biesheuvel <[email protected]>
[ Upstream commit 4e79f0211b473f8e1eab8211a9fd50cc41a3a061 ]
When running in BE mode on LPAE hardware with a PA-to-VA translation that exceeds 4 GB, we patch bits 39:32 of the offset into the wrong byte of the opcode. So fix that, by rotating the offset in r0 to the right by 8 bits, which will put the 8-bit immediate in bits 31:24.
Note that this will also move bit #22 in its correct place when applying the rotation to the constant #0x400000.
--- arch/arm/kernel/head.S | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
arch/arm/kernel/head.S +1 -5
@@ -671,12 +671,8 @@ ARM_BE8(rev16 ip, ip) ldrcc r7, [r4], #4 @ use branch for delay slot bcc 1b bx lr -#else -#ifdef CONFIG_CPU_ENDIAN_BE8 - moveq r0, #0x00004000 @ set bit 22, mov to mvn instruction #else moveq r0, #0x400000 @ set bit 22, mov to mvn instruction -#endif b 2f 1: ldr ip, [r7, r3] #ifdef CONFIG_CPU_ENDIAN_BE8
@@ -685,7 +681,7 @@ ARM_BE8(rev16 ip, ip) tst ip, #0x000f0000 @ check the rotation field orrne ip, ip, r6, lsl #24 @ mask in offset bits 31-24 biceq ip, ip, #0x00004000 @ clear bit 22 - orreq ip, ip, r0 @ mask in offset bits 7-0 + orreq ip, ip, r0, ror #8 @ mask in offset bits 7-0 #else bic ip, ip, #0x000000ff tst ip, #0xf00 @ check the rotation field
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 26/717 RDMA/rtrs-clt: Remove destroy_con_cq_qp in case route resolving failed
In reply to Greg Kroah-HartmanFrom: Danil Kipnis <[email protected]>
[ Upstream commit 2b3062e4d997f201c1ad2bbde88b7271dd9ef35f ]
We call destroy_con_cq_qp(con) in rtrs_rdma_addr_resolved() in case route couldn't be resolved and then again in create_cm() because nothing happens.
Don't call destroy_con_cq_qp from rtrs_rdma_addr_resolved, create_cm() does the clean up already.
--- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-clt.c +1 -3
@@ -1640,10 +1640,8 @@ static int rtrs_rdma_addr_resolved(struct rtrs_clt_con *con)return err; } err =rdma_resolve_route (con->c.cm_id,RTRS_CONNECT_TIMEOUT_MS ); -if (err) { +if (err)rtrs_err (s,"Resolving route failed, err: %d\n" , err); -destroy_con_cq_qp (con); - }return err; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 27/717 RDMA/rtrs-clt: Missing error from rtrs_rdma_conn_established
In reply to Greg Kroah-HartmanFrom: Gioh Kim <[email protected]>
[ Upstream commit f553e7601df9566ba7644541fc09152a3a81f793 ]
When rtrs_rdma_conn_established returns error (non-zero value), the error value is stored in con->cm_err and it cannot trigger rtrs_rdma_error_recovery. Finally the error of rtrs_rdma_con_established will be forgot.
--- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-clt.c +2 -2
@@ -1835,8 +1835,8 @@ static int rtrs_clt_rdma_cm_handler(struct rdma_cm_id *cm_id, cm_err =rtrs_rdma_route_resolved (con);break ;case RDMA_CM_EVENT_ESTABLISHED : - con->cm_err =rtrs_rdma_conn_established (con, ev); -if (likely (!con->cm_err)) { + cm_err =rtrs_rdma_conn_established (con, ev); +if (likely (!cm_err)) {/* * Report success and wake up. Here we abuse state_wq, * i.e. wake up without state change, but we set cm_err.
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 28/717 RDMA/rtrs-srv: Dont guard the whole __alloc_srv with srv_mutex
In reply to Greg Kroah-HartmanFrom: Guoqing Jiang <[email protected]>
[ Upstream commit d715ff8acbd5876549ef2b21b755ed919f40dcc1 ]
The purpose of srv_mutex is to protect srv_list as in put_srv, so no need to hold it when allocate memory for srv since it could be time consuming.
Otherwise if one machine has limited memory, rsrv_close_work could be blocked for a longer time due to the mutex is held by get_or_create_srv since it can't get memory in time.
INFO: task kworker/1:1:27478 blocked for more than 120 seconds.
Tainted: G O 4.14.171-1-storage #4.14.171-1.3~deb9
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kworker/1:1 D 0 27478 2 0x80000000
Workqueue: rtrs_server_wq rtrs_srv_close_work [rtrs_server]
Call Trace:
? __schedule+0x38c/0x7e0
schedule+0x32/0x80
schedule_preempt_disabled+0xa/0x10
__mutex_lock.isra.2+0x25e/0x4d0
? put_srv+0x44/0x100 [rtrs_server]
put_srv+0x44/0x100 [rtrs_server]
rtrs_srv_close_work+0x16c/0x280 [rtrs_server]
process_one_work+0x1c5/0x3c0
worker_thread+0x47/0x3e0
kthread+0xfc/0x130
? trace_event_raw_event_workqueue_execute_start+0xa0/0xa0
? kthread_create_on_node+0x70/0x70
ret_from_fork+0x1f/0x30Let's move all the logics from __find_srv_and_get and __alloc_srv to get_or_create_srv, and remove the two functions. Then it should be safe for multiple processes to access the same srv since it is protected with srv_mutex.
And since we don't want to allocate chunks with srv_mutex held, let's check the srv->refcount after get srv because the chunks could not be allocated yet.
--- drivers/infiniband/ulp/rtrs/rtrs-srv.c | 86 +++++++++++--------------- 1 file changed, 37 insertions(+), 49 deletions(-)
drivers/infiniband/ulp/rtrs/rtrs-srv.c +37 -49
@@ -1328,17 +1328,42 @@ static void rtrs_srv_dev_release(struct device *dev)kfree (srv); } -static struct rtrs_srv *__alloc_srv (struct rtrs_srv_ctx *ctx, -const uuid_t *paths_uuid) +static void free_srv (struct rtrs_srv *srv) +{ +int i; + +WARN_ON (refcount_read (&srv->refcount)); +for (i =0 ; i < srv->queue_depth; i++) +mempool_free (srv->chunks[i], chunk_pool); +kfree (srv->chunks); +mutex_destroy (&srv->paths_mutex); +mutex_destroy (&srv->paths_ev_mutex); +/* last put to release the srv structure */ +put_device (&srv->dev); +} + +static struct rtrs_srv *get_or_create_srv (struct rtrs_srv_ctx *ctx, +const uuid_t *paths_uuid) {struct rtrs_srv *srv;int i; +mutex_lock (&ctx->srv_mutex); +list_for_each_entry (srv, &ctx->srv_list, ctx_list) { +if (uuid_equal (&srv->paths_uuid, paths_uuid) && +refcount_inc_not_zero (&srv->refcount)) { +mutex_unlock (&ctx->srv_mutex); +return srv; + } + } + +/* need to allocate a new srv */ srv =kzalloc (sizeof (*srv),GFP_KERNEL ); -if (!srv) +if (!srv) { +mutex_unlock (&ctx->srv_mutex);return NULL ; + } -refcount_set (&srv->refcount,1 );INIT_LIST_HEAD (&srv->paths_list);mutex_init (&srv->paths_mutex);mutex_init (&srv->paths_ev_mutex);
@@ -1347,6 +1372,8 @@ static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx, srv->ctx = ctx;device_initialize (&srv->dev); srv->dev.release = rtrs_srv_dev_release; +list_add (&srv->ctx_list, &ctx->srv_list); +mutex_unlock (&ctx->srv_mutex); srv->chunks =kcalloc (srv->queue_depth,sizeof (*srv->chunks),GFP_KERNEL );
@@ -1358,7 +1385,7 @@ static struct rtrs_srv *__alloc_srv(struct rtrs_srv_ctx *ctx,if (!srv->chunks[i]) goto err_free_chunks; } -list_add (&srv->ctx_list, &ctx->srv_list); +refcount_set (&srv->refcount,1 );return srv;
@@ -1369,52 +1396,9 @@ err_free_chunks: err_free_srv:kfree (srv); -return NULL ; } -static void free_srv (struct rtrs_srv *srv) -{ -int i; - -WARN_ON (refcount_read (&srv->refcount)); -for (i =0 ; i < srv->queue_depth; i++) -mempool_free (srv->chunks[i], chunk_pool); -kfree (srv->chunks); -mutex_destroy (&srv->paths_mutex); -mutex_destroy (&srv->paths_ev_mutex); -/* last put to release the srv structure */ -put_device (&srv->dev); -} - -static inline struct rtrs_srv *__find_srv_and_get (struct rtrs_srv_ctx *ctx, -const uuid_t *paths_uuid) -{ -struct rtrs_srv *srv; - -list_for_each_entry (srv, &ctx->srv_list, ctx_list) { -if (uuid_equal (&srv->paths_uuid, paths_uuid) && -refcount_inc_not_zero (&srv->refcount)) -return srv; - } - -return NULL ; -} - -static struct rtrs_srv *get_or_create_srv (struct rtrs_srv_ctx *ctx, -const uuid_t *paths_uuid) -{ -struct rtrs_srv *srv; - -mutex_lock (&ctx->srv_mutex); - srv =__find_srv_and_get (ctx, paths_uuid); -if (!srv) - srv =__alloc_srv (ctx, paths_uuid); -mutex_unlock (&ctx->srv_mutex); - -return srv; -} -static void put_srv (struct rtrs_srv *srv) {if (refcount_dec_and_test (&srv->refcount)) {
@@ -1813,7 +1797,11 @@ static int rtrs_rdma_connect(struct rdma_cm_id *cm_id, } recon_cnt =le16_to_cpu (msg->recon_cnt); srv =get_or_create_srv (ctx, &msg->paths_uuid); -if (!srv) { +/* +* "refcount == 0" happens if a previous thread calls get_or_create_srv +* allocate srv, but chunks of srv are not allocated yet. +*/ +if (!srv ||refcount_read (&srv->refcount) ==0 ) { err = -ENOMEM ; goto reject_w_err; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 29/717 x86/apic: Fix x2apic enablement without interrupt remapping
In reply to Greg Kroah-HartmanFrom: David Woodhouse <[email protected]>
[ Upstream commit 26573a97746c7a99f394f9d398ce91a8853b3b89 ]
Currently, Linux as a hypervisor guest will enable x2apic only if there are no CPUs present at boot time with an APIC ID above 255.
Hotplugging a CPU later with a higher APIC ID would result in a CPU which cannot be targeted by external interrupts.
Add a filter in x2apic_apic_id_valid() which can be used to prevent such CPUs from coming online, and allow x2apic to be enabled even if they are present at boot time.
--- arch/x86/include/asm/apic.h | 1 + arch/x86/kernel/apic/apic.c | 14 ++++++++------ arch/x86/kernel/apic/x2apic_phys.c | 9 +++++++++ 3 files changed, 18 insertions(+), 6 deletions(-)
arch/x86/include/asm/apic.h +1 -0
@@ -259,6 +259,7 @@ static inline u64 native_x2apic_icr_read(void)extern int x2apic_mode;extern int x2apic_phys; +extern void __init x2apic_set_max_apicid (u32 apicid);extern void __init check_x2apic (void );extern void x2apic_setup (void );static inline int x2apic_enabled (void )
arch/x86/kernel/apic/apic.c +8 -6
@@ -1841,20 +1841,22 @@ static __init void try_to_enable_x2apic(int remap_mode)return ;if (remap_mode !=IRQ_REMAP_X2APIC_MODE ) { -/* IR is required if there is APIC ID > 255 even when running -* under KVM +/* +* Using X2APIC without IR is not architecturally supported +* on bare metal but may be supported in guests. */ -if (max_physical_apicid >255 || - !x86_init.hyper.x2apic_available ()) { +if (!x86_init.hyper.x2apic_available ()) {pr_info ("x2apic: IRQ remapping doesn't support X2APIC mode\n" );x2apic_disable ();return ; }/* -* without IR all CPUs can be addressed by IOAPIC/MSI -* only in physical mode +* Without IR, all CPUs can be addressed by IOAPIC/MSI only +* in physical mode, and CPUs with an APIC ID that cannnot +* be addressed must not be brought online. */ +x2apic_set_max_apicid (255 ); x2apic_phys =1 ; }x2apic_enable ();
arch/x86/kernel/apic/x2apic_phys.c +9 -0
@@ -8,6 +8,12 @@int x2apic_phys;static struct apic apic_x2apic_phys; +static u32 x2apic_max_apicid__ro_after_init ; + +void __init x2apic_set_max_apicid (u32 apicid) +{ + x2apic_max_apicid = apicid; +}static int __init set_x2apic_phys_mode (char *arg) {
@@ -98,6 +104,9 @@ static int x2apic_phys_probe(void)/* Common x2apic functions, also used by x2apic_cluster */ int x2apic_apic_id_valid (u32 apicid) { +if (x2apic_max_apicid && apicid > x2apic_max_apicid) +return 0 ; +return 1 ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 30/717 ASoC: qcom: fix unsigned int bitwidth compared to less than zero
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
[ Upstream commit bcc96dc3cf8048c80af7c487af17e19be27ac57d ]
The check for an error return from the call to snd_pcm_format_width is never true as the unsigned int bitwidth can never be less than zero. Fix this by making bitwidth an int.
--- sound/soc/qcom/lpass-hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/qcom/lpass-hdmi.c +1 -1
@@ -24,7 +24,7 @@ static int lpass_hdmi_daiops_hw_params(struct snd_pcm_substream *substream,unsigned int rate =params_rate (params);unsigned int channels =params_channels (params);unsigned int ret; -unsigned int bitwidth; +int bitwidth;unsigned int word_length;unsigned int ch_sts_buf0;unsigned int ch_sts_buf1;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 31/717 sched/deadline: Fix sched_dl_global_validate()
In reply to Greg Kroah-HartmanFrom: Peng Liu <[email protected]>
[ Upstream commit a57415f5d1e43c3a5c5d412cd85e2792d7ed9b11 ]
When change sched_rt_{runtime, period}_us, we validate that the new settings should at least accommodate the currently allocated -dl bandwidth:
sched_rt_handler()
--> sched_dl_bandwidth_validate()
{
new_bw = global_rt_runtime()/global_rt_period();
for_each_possible_cpu(cpu) {
dl_b = dl_bw_of(cpu);
if (new_bw < dl_b->total_bw) <-------
ret = -EBUSY;
}
}But under CONFIG_SMP, dl_bw is per root domain , but not per CPU, dl_b->total_bw is the allocated bandwidth of the whole root domain. Instead, we should compare dl_b->total_bw against "cpus*new_bw", where 'cpus' is the number of CPUs of the root domain.
Also, below annotation(in kernel/sched/sched.h) implied implementation only appeared in SCHED_DEADLINE v2[1], then deadline scheduler kept evolving till got merged(v9), but the annotation remains unchanged, meaningless and misleading, update it.
* With respect to SMP, the bandwidth is given on a per-CPU basis,
* meaning that:
* - dl_bw (< 100%) is the bandwidth of the system (group) on each CPU;
* - dl_total_bw array contains, in the i-eth element, the currently
* allocated bandwidth on the i-eth CPU.
[1]: https://lore.kernel.org/lkml/1267385230.13676.101.camel@Palantir/
--- kernel/sched/deadline.c | 5 +++-- kernel/sched/sched.h | 42 ++++++++++++++++++----------------------- 2 files changed, 21 insertions(+), 26 deletions(-)
kernel/sched/deadline.c +3 -2
@@ -2547,7 +2547,7 @@ int sched_dl_global_validate(void)u64 period =global_rt_period ();u64 new_bw =to_ratio (period, runtime);struct dl_bw *dl_b; -int cpu, ret =0 ; +int cpu, cpus, ret =0 ;unsigned long flags;/*
@@ -2562,9 +2562,10 @@ int sched_dl_global_validate(void)for_each_possible_cpu (cpu) {rcu_read_lock_sched (); dl_b =dl_bw_of (cpu); + cpus =dl_bw_cpus (cpu);raw_spin_lock_irqsave (&dl_b->lock, flags); -if (new_bw < dl_b->total_bw) +if (new_bw * cpus < dl_b->total_bw) ret = -EBUSY ;raw_spin_unlock_irqrestore (&dl_b->lock, flags);
kernel/sched/sched.h +18 -24
54 lines not on this page · raw message
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 32/717 sched: Reenable interrupts in do_sched_yield()
In reply to Greg Kroah-HartmanFrom: Thomas Gleixner <[email protected]>
[ Upstream commit 345a957fcc95630bf5535d7668a59ed983eb49a7 ]
do_sched_yield() invokes schedule() with interrupts disabled which is not allowed. This goes back to the pre git era to commit a6efb709806c ("[PATCH] irqlock patch 2.5.27-H6") in the history tree.
Reenable interrupts and remove the misleading comment which "explains" it.
--- kernel/sched/core.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
kernel/sched/core.c +1 -5
@@ -6100,12 +6100,8 @@ static void do_sched_yield(void)schedstat_inc (rq->yld_count); current->sched_class->yield_task (rq); -/* -* Since we are going to call schedule() anyway, there's -* no need to preempt or enable interrupts: -*/ preempt_disable (); -rq_unlock (rq, &rf); +rq_unlock_irq (rq, &rf);sched_preempt_enable_no_resched ();schedule ();
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 33/717 drm/amdgpu: fix incorrect enum type
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit a110f3750bf8b93764f13bd1402c7cba03d15d61 ]
core_link_write_dpcd() returns enum dc_status, not ddc_result:
display/dc/core/dc_link_dp.c: In function 'dp_set_panel_mode':display/dc/core/dc_link_dp.c:4237:11: warning: implicit conversion from 'enum dc_status' to 'enum ddc_result' [-Wenum-conversion]
Avoid the warning by using the correct enum in the caller.
--- drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +2 -2
@@ -4230,7 +4230,7 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode)if (edp_config_set.bits.PANEL_MODE_EDP != panel_mode_edp) { -enum ddc_result result =DDC_RESULT_UNKNOWN ; +enum dc_status result =DC_ERROR_UNEXPECTED ; edp_config_set.bits.PANEL_MODE_EDP = panel_mode_edp;
@@ -4240,7 +4240,7 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode) &edp_config_set.raw, sizeof(edp_config_set.raw)); -ASSERT (result ==DDC_RESULT_SUCESSFULL ); +ASSERT (result ==DC_OK ); } } DC_LOG_DETECTION_DP_CAPS("Link: %d eDP panel mode supported: %d "
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 34/717 crypto: talitos - Endianess in current_desc_hdr()
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
[ Upstream commit 195404db27f9533c71fdcb78d32a77075c2cb4a2 ]
current_desc_hdr() compares the value of the current descriptor with the next_desc member of the talitos_desc struct.
While the current descriptor is obtained from in_be32() which return CPU ordered bytes, next_desc member is in big endian order.
Convert the current descriptor into big endian before comparing it with next_desc.
This fixes a sparse warning.
--- drivers/crypto/talitos.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/crypto/talitos.c +2 -2
@@ -478,7 +478,7 @@ static u32 current_desc_hdr(struct device *dev, int ch) iter = tail;while (priv->chan[ch].fifo[iter].dma_desc != cur_desc && - priv->chan[ch].fifo[iter].desc->next_desc != cur_desc) { + priv->chan[ch].fifo[iter].desc->next_desc !=cpu_to_be32 (cur_desc)) { iter = (iter +1 ) & (priv->fifo_len -1 );if (iter == tail) {dev_err (dev,"couldn't locate current descriptor\n" );
@@ -486,7 +486,7 @@ static u32 current_desc_hdr(struct device *dev, int ch) } } -if (priv->chan[ch].fifo[iter].desc->next_desc == cur_desc) { +if (priv->chan[ch].fifo[iter].desc->next_desc ==cpu_to_be32 (cur_desc)) {struct talitos_edesc *edesc; edesc = container_of(priv->chan[ch].fifo[iter].desc,
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 35/717 crypto: talitos - Fix return type of current_desc_hdr()
In reply to Greg Kroah-HartmanFrom: Christophe Leroy <[email protected]>
[ Upstream commit 0237616173fd363a54bd272aa3bd376faa1d7caa ]
current_desc_hdr() returns a u32 but in fact this is a __be32, leading to a lot of sparse warnings.
Change the return type to __be32 and ensure it is handled as sure by the caller.
--- drivers/crypto/talitos.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/crypto/talitos.c +3 -3
@@ -460,7 +460,7 @@ DEF_TALITOS2_DONE(ch1_3, TALITOS2_ISR_CH_1_3_DONE)/* * locate current (offending) descriptor */ -static u32 current_desc_hdr (struct device *dev,int ch) +static __be32 current_desc_hdr (struct device *dev,int ch) {struct talitos_private *priv =dev_get_drvdata (dev);int tail, iter;
@@ -501,13 +501,13 @@ static u32 current_desc_hdr(struct device *dev, int ch)/* * user diagnostics; report root cause of error based on execution unit status */ -static void report_eu_error (struct device *dev,int ch,u32 desc_hdr) +static void report_eu_error (struct device *dev,int ch,__be32 desc_hdr) {struct talitos_private *priv =dev_get_drvdata (dev);int i;if (!desc_hdr) - desc_hdr =in_be32 (priv->chan[ch].reg +TALITOS_DESCBUF ); + desc_hdr =cpu_to_be32 (in_be32 (priv->chan[ch].reg +TALITOS_DESCBUF ));switch (desc_hdr &DESC_HDR_SEL0_MASK ) {case DESC_HDR_SEL0_AFEU :
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 36/717 crypto: inside-secure - Fix sizeof() mismatch
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
[ Upstream commit c98e233062cd9d0e2f10e445a671f0799daaef67 ]
An incorrect sizeof() is being used, sizeof(priv->ring[i].rdr_req) is not correct, it should be sizeof(*priv->ring[i].rdr_req). Note that since the size of ** is the same size as * this is not causing any issues.
Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
--- drivers/crypto/inside-secure/safexcel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/inside-secure/safexcel.c +1 -1
@@ -1639,7 +1639,7 @@ static int safexcel_probe_generic(void *pdev, priv->ring[i].rdr_req =devm_kcalloc (dev,EIP197_DEFAULT_RING_SIZE , -sizeof (priv->ring[i].rdr_req), +sizeof (*priv->ring[i].rdr_req),GFP_KERNEL );if (!priv->ring[i].rdr_req)return -ENOMEM ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 37/717 ASoC: sun4i-i2s: Fix lrck_period computation for I2S justified mode
In reply to Greg Kroah-HartmanFrom: Clément Péron <[email protected]>
[ Upstream commit 93c0210671d8f3ec2262da703fab93a1497158a8 ]
Left and Right justified mode are computed using the same formula as DSP_A and DSP_B mode.
Which is wrong and the user manual explicitly says:
LRCK_PERDIOD:
PCM Mode: Number of BCLKs within (Left + Right) channel width. I2S/Left-Justified/Right-Justified Mode: Number of BCLKs within each individual channel width(Left or Right)
Fix this by using the same formula as the I2S mode.
--- sound/soc/sunxi/sun4i-i2s.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
sound/soc/sunxi/sun4i-i2s.c +2 -2
@@ -450,11 +450,11 @@ static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s,switch (i2s->format &SND_SOC_DAIFMT_FORMAT_MASK ) {case SND_SOC_DAIFMT_DSP_A :case SND_SOC_DAIFMT_DSP_B : -case SND_SOC_DAIFMT_LEFT_J : -case SND_SOC_DAIFMT_RIGHT_J : lrck_period =params_physical_width (params) * slots;break ; +case SND_SOC_DAIFMT_LEFT_J : +case SND_SOC_DAIFMT_RIGHT_J :case SND_SOC_DAIFMT_I2S : lrck_period =params_physical_width (params);break ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 38/717 drm/msm: Add missing stub definition
In reply to Greg Kroah-HartmanFrom: Robin Murphy <[email protected]>
[ Upstream commit a0b21e0ad29420b04911a98d360b9586168eeae5 ]
DRM_MSM fails to build with DRM_MSM_DP=n; add the missing stub.
--- drivers/gpu/drm/msm/msm_drv.h | 5 +++++ 1 file changed, 5 insertions(+)
drivers/gpu/drm/msm/msm_drv.h +5 -0
@@ -423,6 +423,11 @@ static inline int msm_dp_display_disable(struct msm_dp *dp, {return -EINVAL ; } +static inline int msm_dp_display_pre_disable (struct msm_dp *dp, +struct drm_encoder *encoder) +{ +return -EINVAL ; +} static inline void msm_dp_display_mode_set(struct msm_dp *dp, struct drm_encoder *encoder, struct drm_display_mode *mode,
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 39/717 ARM: dts: aspeed: tiogapass: Remove vuart
In reply to Greg Kroah-HartmanFrom: Vijay Khemka <[email protected]>
[ Upstream commit 14f100c00f1e35e5890340d4c6a64bda5dff4320 ]
Removed vuart for facebook tiogapass platform as it uses uart2 and uart3 pin with aspeed uart routing feature.
--- arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts | 5 ----- 1 file changed, 5 deletions(-)
arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts +0 -5
@@ -82,11 +82,6 @@ status = "okay"; }; -&vuart { - // VUART Host Console - status = "okay"; -}; - &uart1 { // Host Console status = "okay";
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 40/717 drm/amdgpu: fix build_coefficients() argument
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit dbb60031dd0c2b85f10ce4c12ae604c28d3aaca4 ]
gcc -Wextra warns about a function taking an enum argument being called with a bool:
drivers/gpu/drm/amd/amdgpu/../display/modules/color/color_gamma.c: In function 'apply_degamma_for_user_regamma':drivers/gpu/drm/amd/amdgpu/../display/modules/color/color_gamma.c:1617:29: warning: implicit conversion from 'enum <anonymous>' to 'enum dc_transfer_func_predefined' [-Wenum-conversion]
1617 | build_coefficients(&coeff, true);
It appears that a patch was added using the old calling conventions after the type was changed, and the value should actually be 0 (TRANSFER_FUNCTION_SRGB) here instead of 1 (true).
--- drivers/gpu/drm/amd/display/modules/color/color_gamma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/amd/display/modules/color/color_gamma.c +1 -1
@@ -1614,7 +1614,7 @@ static void apply_degamma_for_user_regamma(struct pwl_float_data_ex *rgb_regammastruct pwl_float_data_ex *rgb = rgb_regamma;const struct hw_x_point *coord_x = coordinates_x; -build_coefficients (&coeff, true); +build_coefficients (&coeff,TRANSFER_FUNCTION_SRGB ); i =0 ;while (i != hw_points_num +1 ) {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 41/717 powerpc/64: Set up a kernel stack for secondaries before cpu_restore()
In reply to Greg Kroah-HartmanFrom: Jordan Niethe <[email protected]>
[ Upstream commit 3c0b976bf20d236c57adcefa80f86a0a1d737727 ]
Currently in generic_secondary_smp_init(), cur_cpu_spec->cpu_restore() is called before a stack has been set up in r1. This was previously fine as the cpu_restore() functions were implemented in assembly and did not use a stack. However commit 5a61ef74f269 ("powerpc/64s: Support new device tree binding for discovering CPU features") used __restore_cpu_cpufeatures() as the cpu_restore() function for a device-tree features based cputable entry. This is a C function and hence uses a stack in r1.
generic_secondary_smp_init() is entered on the secondary cpus via the primary cpu using the OPAL call opal_start_cpu(). In OPAL, each hardware thread has its own stack. The OPAL call is ran in the primary's hardware thread. During the call, a job is scheduled on a secondary cpu that will start executing at the address of generic_secondary_smp_init(). Hence the value that will be left in r1 when the secondary cpu enters the kernel is part of that secondary cpu's individual OPAL stack. This means that __restore_cpu_cpufeatures() will write to that OPAL stack. This is not horribly bad as each hardware thread has its own stack and the call that enters the kernel from OPAL never returns, but it is still wrong and should be corrected.
Create the temp kernel stack before calling cpu_restore().
As noted by mpe, for a kexec boot, the secondary CPUs are released from the spin loop at address 0x60 by smp_release_cpus() and then jump to generic_secondary_smp_init(). The call to smp_release_cpus() is in setup_arch(), and it comes before the call to emergency_stack_init(). emergency_stack_init() allocates an emergency stack in the PACA for each CPU. This address in the PACA is what is used to set up the temp kernel stack in generic_secondary_smp_init(). Move releasing the secondary CPUs to after the PACAs have been allocated an emergency stack, otherwise the PACA stack pointer will contain garbage and hence the temp kernel stack created from it will be broken.
--- arch/powerpc/kernel/head_64.S | 8 ++++---- arch/powerpc/kernel/setup-common.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-)
arch/powerpc/kernel/head_64.S +4 -4
@@ -417,6 +417,10 @@ generic_secondary_common_init: /* From now on, r24 is expected to be logical cpuid */ mr r24,r5 + /* Create a temp kernel stack for use before relocation is on. */ + ld r1,PACAEMERGSP(r13) + subi r1,r1,STACK_FRAME_OVERHEAD + /* See if we need to call a cpu state restore handler */ LOAD_REG_ADDR(r23, cur_cpu_spec) ld r23,0(r23)
@@ -445,10 +449,6 @@ generic_secondary_common_init: sync /* order paca.run and cur_cpu_spec */ isync /* In case code patching happened */ - /* Create a temp kernel stack for use before relocation is on. */ - ld r1,PACAEMERGSP(r13) - subi r1,r1,STACK_FRAME_OVERHEAD - b __secondary_start #endif /* SMP */
arch/powerpc/kernel/setup-common.c +2 -2
@@ -919,8 +919,6 @@ void __init setup_arch(char **cmdline_p)/* On BookE, setup per-core TLB data structures. */ setup_tlb_core_data (); - -smp_release_cpus ();#endif /* Print various info about the machine that has been gathered so far. */
@@ -944,6 +942,8 @@ void __init setup_arch(char **cmdline_p)exc_lvl_early_init ();emergency_stack_init (); +smp_release_cpus (); +initmem_init ();early_memtest (min_low_pfn <<PAGE_SHIFT , max_low_pfn <<PAGE_SHIFT );
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 42/717 spi: img-spfi: fix reference leak in img_spfi_resume
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit ee5558a9084584015c8754ffd029ce14a5827fa8 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in img_spfi_resume, so we should fix it.
--- drivers/spi/spi-img-spfi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/spi/spi-img-spfi.c +3 -1
@@ -731,8 +731,10 @@ static int img_spfi_resume(struct device *dev)int ret; ret =pm_runtime_get_sync (dev); -if (ret) +if (ret) { +pm_runtime_put_noidle (dev);return ret; + }spfi_reset (spfi);pm_runtime_put (dev);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 43/717 f2fs: call f2fs_get_meta_page_retry for nat page
In reply to Greg Kroah-HartmanFrom: Jaegeuk Kim <[email protected]>
[ Upstream commit 3acc4522d89e0a326db69e9d0afaad8cf763a54c ]
When running fault injection test, if we don't stop checkpoint, some stale NAT entries were flushed which breaks consistency.
--- fs/f2fs/node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/f2fs/node.c +1 -1
@@ -109,7 +109,7 @@ static void clear_node_page_dirty(struct page *page)static struct page *get_current_nat_page (struct f2fs_sb_info *sbi,nid_t nid) { -return f2fs_get_meta_page (sbi,current_nat_addr (sbi, nid)); +return f2fs_get_meta_page_retry (sbi,current_nat_addr (sbi, nid)); }static struct page *get_next_nat_page (struct f2fs_sb_info *sbi,nid_t nid)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 44/717 RDMA/mlx5: Fix corruption of reg_pages in mlx5_ib_rereg_user_mr()
In reply to Greg Kroah-HartmanFrom: Jason Gunthorpe <[email protected]>
[ Upstream commit fc3325701a6353594083f08e297d4c1965c601aa ]
reg_pages should always contain mr->npage since when the mr is finally de-reg'd it is always subtracted out.
If there were any error exits then mlx5_ib_rereg_user_mr() would leave the reg_pages adjusted and this will cause it to be double subtracted eventually.
The manipulation of reg_pages is inherently connected to the umem, so lift it out of set_mr_fields() and only adjust it around creating/destroying a umem.
reg_pages is only used for diagnostics in sysfs.
--- drivers/infiniband/hw/mlx5/mr.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
drivers/infiniband/hw/mlx5/mr.c +11 -9
@@ -1247,10 +1247,8 @@ err_1: }static void set_mr_fields (struct mlx5_ib_dev *dev,struct mlx5_ib_mr *mr, -int npages,u64 length,int access_flags) +u64 length,int access_flags) { - mr->npages = npages; -atomic_add (npages, &dev->mdev->priv.reg_pages); mr->ibmr.lkey = mr->mmkey.key; mr->ibmr.rkey = mr->mmkey.key; mr->ibmr.length = length;
@@ -1290,8 +1288,7 @@ static struct ib_mr *mlx5_ib_get_dm_mr(struct ib_pd *pd, u64 start_addr,kfree (in); - mr->umem =NULL ; -set_mr_fields (dev, mr,0 , length, acc); +set_mr_fields (dev, mr, length, acc);return &mr->ibmr;
@@ -1419,7 +1416,9 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,mlx5_ib_dbg (dev,"mkey 0x%x\n" , mr->mmkey.key); mr->umem = umem; -set_mr_fields (dev, mr, npages, length, access_flags); + mr->npages = npages; +atomic_add (mr->npages, &dev->mdev->priv.reg_pages); +set_mr_fields (dev, mr, length, access_flags);if (xlt_with_umr && !(access_flags &IB_ACCESS_ON_DEMAND )) {/*
@@ -1531,8 +1530,6 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,mlx5_ib_dbg (dev,"start 0x%llx, virt_addr 0x%llx, length 0x%llx, access_flags 0x%x\n" , start, virt_addr, length, access_flags); -atomic_sub (mr->npages, &dev->mdev->priv.reg_pages); -if (!mr->umem)return -EINVAL ;
@@ -1553,12 +1550,17 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,* used. */ flags |=IB_MR_REREG_TRANS ; +atomic_sub (mr->npages, &dev->mdev->priv.reg_pages); + mr->npages =0 ;ib_umem_release (mr->umem); mr->umem =NULL ; + err =mr_umem_get (dev, addr, len, access_flags, &mr->umem, &npages, &page_shift, &ncont, &order);if (err) goto err; + mr->npages = ncont; +atomic_add (mr->npages, &dev->mdev->priv.reg_pages); } if (!mlx5_ib_can_reconfig_with_umr(dev, mr->access_flags,
@@ -1609,7 +1611,7 @@ int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start, goto err; } -set_mr_fields (dev, mr, npages, len, access_flags); +set_mr_fields (dev, mr, len, access_flags);return 0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 45/717 perf test: Use generic event for expand_libpfm_events()
In reply to Greg Kroah-HartmanFrom: Namhyung Kim <[email protected]>
[ Upstream commit 9b0a7836359443227c9af101f7aea8412e739458 ]
I found that the UNHALTED_CORE_CYCLES event is only available in the Intel machines and it makes other vendors/archs fail on the test. As libpfm4 can parse the generic events like cycles, let's use them.
--- tools/perf/tests/expand-cgroup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/tests/expand-cgroup.c +1 -1
@@ -145,7 +145,7 @@ static int expand_libpfm_events(void)int ret;struct evlist *evlist;struct rblist metric_events; -const char event_str[] ="UNHALTED_CORE_CYCLES" ; +const char event_str[] ="CYCLES" ;struct option opt = { .value = &evlist, };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 46/717 drm/msm/dp: DisplayPort PHY compliance tests fixup
In reply to Greg Kroah-HartmanFrom: Tanmay Shah <[email protected]>
[ Upstream commit 6625e2637d93d2f52ef0d17656f21bfa2cb4983a ]
Bandwidth code was being used as test link rate. Fix this by converting bandwidth code to test link rate
Do not reset voltage and pre-emphasis level during IRQ HPD attention interrupt. Also fix pre-emphasis parsing during test link status process
--- drivers/gpu/drm/msm/dp/dp_ctrl.c | 3 --- drivers/gpu/drm/msm/dp/dp_display.c | 1 + drivers/gpu/drm/msm/dp/dp_link.c | 12 +++++++++++- drivers/gpu/drm/msm/dp/dp_link.h | 1 + 4 files changed, 13 insertions(+), 4 deletions(-)
drivers/gpu/drm/msm/dp/dp_ctrl.c +0 -3
@@ -1643,9 +1643,6 @@ int dp_ctrl_on_link(struct dp_ctrl *dp_ctrl)if (rc)return rc; - ctrl->link->phy_params.p_level =0 ; - ctrl->link->phy_params.v_level =0 ; -while (--link_train_max_retries && !atomic_read (&ctrl->dp_ctrl.aborted)) { rc =dp_ctrl_reinitialize_mainlink (ctrl);
drivers/gpu/drm/msm/dp/dp_display.c +1 -0
@@ -335,6 +335,7 @@ static int dp_display_process_hpd_high(struct dp_display_private *dp) dp->dp_display.max_pclk_khz =DP_MAX_PIXEL_CLK_KHZ ; dp->dp_display.max_dp_lanes = dp->parser->max_dp_lanes; +dp_link_reset_phy_params_vx_px (dp->link); rc =dp_ctrl_on_link (dp->ctrl);if (rc) {DRM_ERROR ("failed to complete DP link training\n" );
drivers/gpu/drm/msm/dp/dp_link.c +11 -1
@@ -869,6 +869,9 @@ static int dp_link_parse_vx_px(struct dp_link_private *link)drm_dp_get_adjust_request_voltage (link->link_status,0 ); link->dp_link.phy_params.p_level =drm_dp_get_adjust_request_pre_emphasis (link->link_status,0 ); + + link->dp_link.phy_params.p_level >>=DP_TRAIN_PRE_EMPHASIS_SHIFT ; +DRM_DEBUG_DP ("Requested: v_level = 0x%x, p_level = 0x%x\n" , link->dp_link.phy_params.v_level, link->dp_link.phy_params.p_level);
@@ -911,7 +914,8 @@ static int dp_link_process_phy_test_pattern_request( link->request.test_lane_count); link->dp_link.link_params.num_lanes = link->request.test_lane_count; - link->dp_link.link_params.rate = link->request.test_link_rate; + link->dp_link.link_params.rate = +drm_dp_bw_code_to_link_rate (link->request.test_link_rate); ret =dp_link_parse_vx_px (link);
@@ -1156,6 +1160,12 @@ int dp_link_adjust_levels(struct dp_link *dp_link, u8 *link_status)return 0 ; } +void dp_link_reset_phy_params_vx_px (struct dp_link *dp_link) +{ + dp_link->phy_params.v_level =0 ; + dp_link->phy_params.p_level =0 ; +} +u32 dp_link_get_test_bits_depth (struct dp_link *dp_link,u32 bpp) {u32 tbd;
drivers/gpu/drm/msm/dp/dp_link.h +1 -0
@@ -135,6 +135,7 @@ static inline u32 dp_link_bit_depth_to_bpc(u32 tbd) } } +void dp_link_reset_phy_params_vx_px (struct dp_link *dp_link);u32 dp_link_get_test_bits_depth (struct dp_link *dp_link,u32 bpp);int dp_link_process_request (struct dp_link *dp_link);int dp_link_get_colorimetry_config (struct dp_link *dp_link);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 47/717 drm/msm/dsi_pll_7nm: restore VCO rate during restore_state
In reply to Greg Kroah-HartmanFrom: Dmitry Baryshkov <[email protected]>
[ Upstream commit 5047ab95bb7db0e7b2ecfd5e9bcafc7fd822c652 ]
PHY disable/enable resets PLL registers to default values. Thus in addition to restoring several registers we also need to restore VCO rate settings.
--- drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/msm/dsi/pll/dsi_pll_7nm.c +8 -0
@@ -585,6 +585,7 @@ static int dsi_pll_7nm_restore_state(struct msm_dsi_pll *pll)struct pll_7nm_cached_state *cached = &pll_7nm->cached_state;void __iomem *phy_base = pll_7nm->phy_cmn_mmio;u32 val; +int ret; val =pll_read (pll_7nm->mmio + REG_DSI_7nm_PHY_PLL_PLL_OUTDIV_RATE); val &= ~0x3 ;
@@ -599,6 +600,13 @@ static int dsi_pll_7nm_restore_state(struct msm_dsi_pll *pll) val |= cached->pll_mux;pll_write (phy_base + REG_DSI_7nm_PHY_CMN_CLK_CFG1, val); + ret =dsi_pll_7nm_vco_set_rate (&pll->clk_hw, pll_7nm->vco_current_rate, pll_7nm->vco_ref_clk_rate); +if (ret) { +DRM_DEV_ERROR (&pll_7nm->pdev->dev, +"restore vco rate failed. ret=%d\n" , ret); +return ret; + } +DBG ("DSI PLL%d" , pll_7nm->id);return 0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 48/717 drm/msm/dsi_pll_10nm: restore VCO rate during restore_state
In reply to Greg Kroah-HartmanFrom: Dmitry Baryshkov <[email protected]>
[ Upstream commit a4ccc37693a271330a46208afbeaed939d54fdbb ]
PHY disable/enable resets PLL registers to default values. Thus in addition to restoring several registers we also need to restore VCO rate settings.
--- drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/msm/dsi/pll/dsi_pll_10nm.c +8 -0
@@ -559,6 +559,7 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll)struct pll_10nm_cached_state *cached = &pll_10nm->cached_state;void __iomem *phy_base = pll_10nm->phy_cmn_mmio;u32 val; +int ret; val =pll_read (pll_10nm->mmio + REG_DSI_10nm_PHY_PLL_PLL_OUTDIV_RATE); val &= ~0x3 ;
@@ -573,6 +574,13 @@ static int dsi_pll_10nm_restore_state(struct msm_dsi_pll *pll) val |= cached->pll_mux;pll_write (phy_base + REG_DSI_10nm_PHY_CMN_CLK_CFG1, val); + ret =dsi_pll_10nm_vco_set_rate (&pll->clk_hw, pll_10nm->vco_current_rate, pll_10nm->vco_ref_clk_rate); +if (ret) { +DRM_DEV_ERROR (&pll_10nm->pdev->dev, +"restore vco rate failed. ret=%d\n" , ret); +return ret; + } +DBG ("DSI PLL%d" , pll_10nm->id);return 0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 49/717 drm/msm/dpu: fix clock scaling on non-sc7180 board
In reply to Greg Kroah-HartmanFrom: Dmitry Baryshkov <[email protected]>
[ Upstream commit cccdeda362fafd0613b571affe7199eb7d8f3fba ]
c33b7c0389e1 ("drm/msm/dpu: add support for clk and bw scaling for display") has added support for handling bandwidth voting in kms path in addition to old mdss path. However this broke all other platforms since _dpu_core_perf_crtc_update_bus() will now error out instead of properly calculating bandwidth and core clocks. Fix _dpu_core_perf_crtc_update_bus() to just skip bandwidth setting instead of returning an error in case kms->num_paths == 0 (MDSS is used for bandwidth management).
--- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +3 -3
@@ -219,9 +219,6 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,int i, ret =0 ;u64 avg_bw; -if (!kms->num_paths) -return -EINVAL ; - drm_for_each_crtc(tmp_crtc, crtc->dev) { if (tmp_crtc->enabled && curr_client_type ==
@@ -239,6 +236,9 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms, } } +if (!kms->num_paths) +return 0 ; + avg_bw = perf.bw_ctl;do_div (avg_bw, (kms->num_paths *1000 ));/*Bps_to_icc*/
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 50/717 spi: spi-mem: fix reference leak in spi_mem_access_start
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit c02bb16b0e826bf0e19aa42c3ae60ea339f32cf5 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in spi_mem_access_start, so we should fix it.
--- drivers/spi/spi-mem.c | 1 + 1 file changed, 1 insertion(+)
drivers/spi/spi-mem.c +1 -0
@@ -243,6 +243,7 @@ static int spi_mem_access_start(struct spi_mem *mem) ret =pm_runtime_get_sync (ctlr->dev.parent);if (ret <0 ) { +pm_runtime_put_noidle (ctlr->dev.parent);dev_err (&ctlr->dev,"Failed to power device: %d\n" , ret);return ret;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 51/717 scsi: aacraid: Improve compat_ioctl handlers
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit 077054215a7f787e389a807ece8a39247abbbc1e ]
The use of compat_alloc_user_space() can be easily replaced by handling compat arguments in the regular handler, and this will make it work for big-endian kernels as well, which at the moment get an invalid indirect pointer argument.
Calling aac_ioctl() instead of aac_compat_do_ioctl() means the compat and native code paths behave the same way again, which they stopped when the adapter health check was added only in the native function.
--- drivers/scsi/aacraid/commctrl.c | 22 ++++++++++-- drivers/scsi/aacraid/linit.c | 61 ++------------------------------- 2 files changed, 22 insertions(+), 61 deletions(-)
drivers/scsi/aacraid/commctrl.c +20 -2
@@ -25,6 +25,7 @@#include <linux/completion.h> #include <linux/dma-mapping.h> #include <linux/blkdev.h> +#include <linux/compat.h> #include <linux/delay.h> /* ssleep prototype */ #include <linux/kthread.h> #include <linux/uaccess.h>
@@ -226,6 +227,12 @@ static int open_getadapter_fib(struct aac_dev * dev, void __user *arg)return status; } +struct compat_fib_ioctl { +u32 fibctx; +s32 wait; +compat_uptr_t fib; +}; +/** * next_getadapter_fib - get the next fib * @dev: adapter to use
@@ -243,8 +250,19 @@ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg)struct list_head * entry;unsigned long flags; -if (copy_from_user ((void *)&f, arg,sizeof (struct fib_ioctl ))) -return -EFAULT ; +if (in_compat_syscall ()) { +struct compat_fib_ioctl cf; + +if (copy_from_user (&cf, arg,sizeof (struct compat_fib_ioctl ))) +return -EFAULT ; + + f.fibctx = cf.fibctx; + f.wait = cf.wait; + f.fib =compat_ptr (cf.fib); + }else { +if (copy_from_user (&f, arg,sizeof (struct fib_ioctl ))) +return -EFAULT ; + }/* * Verify that the HANDLE passed in was a valid AdapterFibContext *
drivers/scsi/aacraid/linit.c +2 -59
79 lines not on this page · raw message
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 52/717 pinctrl: core: Add missing #ifdef CONFIG_GPIOLIB
In reply to Greg Kroah-HartmanFrom: He Zhe <[email protected]>
[ Upstream commit b507cb92477ad85902783a183c5ce01d16296687 ]
To fix the following build warnings when CONFIG_GPIOLIB=n.
drivers/pinctrl/core.c:1607:20: warning: unused variable 'chip' [-Wunused-variable]
1608 | struct gpio_chip *chip;
| ^~~~drivers/pinctrl/core.c:1606:15: warning: unused variable 'gpio_num' [-Wunused-variable]
1607 | unsigned int gpio_num;
| ^~~~~~~~drivers/pinctrl/core.c:1605:29: warning: unused variable 'range' [-Wunused-variable]
1606 | struct pinctrl_gpio_range *range;
| ^~~~~
--- drivers/pinctrl/core.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/pinctrl/core.c +2 -0
@@ -1602,9 +1602,11 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)struct pinctrl_dev *pctldev = s->private;const struct pinctrl_ops *ops = pctldev->desc->pctlops;unsigned i, pin; +#ifdef CONFIG_GPIOLIB struct pinctrl_gpio_range *range;unsigned int gpio_num;struct gpio_chip *chip; +#endif seq_printf (s,"registered pins: %d\n" , pctldev->desc->npins);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 53/717 ASoC: pcm: DRAIN support reactivation
In reply to Greg Kroah-HartmanFrom: Cezary Rojewski <[email protected]>
[ Upstream commit 4c22b80f61540ea99d9b4af0127315338755f05b ]
soc-pcm's dpcm_fe_dai_do_trigger() supported DRAIN commnad up to kernel v5.4 where explicit switch(cmd) has been introduced which takes into account all SNDRV_PCM_TRIGGER_xxx but SNDRV_PCM_TRIGGER_DRAIN. Update switch statement to reactive support for it.
As DRAIN is somewhat unique by lacking negative/stop counterpart, bring behaviour of dpcm_fe_dai_do_trigger() for said command back to its pre-v5.4 state by adding it to START/RESUME/PAUSE_RELEASE group.
--- sound/soc/soc-pcm.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/soc-pcm.c +2 -0
@@ -2231,6 +2231,7 @@ static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd)case SNDRV_PCM_TRIGGER_START :case SNDRV_PCM_TRIGGER_RESUME :case SNDRV_PCM_TRIGGER_PAUSE_RELEASE : +case SNDRV_PCM_TRIGGER_DRAIN : ret =dpcm_dai_trigger_fe_be (substream, cmd, true);break ;case SNDRV_PCM_TRIGGER_STOP :
@@ -2248,6 +2249,7 @@ static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd)case SNDRV_PCM_TRIGGER_START :case SNDRV_PCM_TRIGGER_RESUME :case SNDRV_PCM_TRIGGER_PAUSE_RELEASE : +case SNDRV_PCM_TRIGGER_DRAIN : ret =dpcm_dai_trigger_fe_be (substream, cmd, false);break ;case SNDRV_PCM_TRIGGER_STOP :
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 54/717 drm/bridge: tpd12s015: Fix irq registering in tpd12s015_probe
In reply to Greg Kroah-HartmanFrom: YueHaibing <[email protected]>
[ Upstream commit c2530cc9610d84a5a0118ba40d0f09309605047f ]
gpiod_to_irq() return negative value in case of error, the existing code doesn't handle negative error codes. If the HPD gpio supports IRQs (gpiod_to_irq returns a valid number), we use the IRQ. If it doesn't (gpiod_to_irq returns an error), it gets polled via detect().
--- drivers/gpu/drm/bridge/ti-tpd12s015.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/bridge/ti-tpd12s015.c +1 -1
@@ -160,7 +160,7 @@ static int tpd12s015_probe(struct platform_device *pdev)/* Register the IRQ if the HPD GPIO is IRQ-capable. */ tpd->hpd_irq =gpiod_to_irq (tpd->hpd_gpio); -if (tpd->hpd_irq) { +if (tpd->hpd_irq >=0 ) { ret = devm_request_threaded_irq(&pdev->dev, tpd->hpd_irq, NULL, tpd12s015_hpd_isr, IRQF_TRIGGER_RISING |
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 55/717 libbpf: Fix BTF data layout checks and allow empty BTF
In reply to Greg Kroah-HartmanFrom: Andrii Nakryiko <[email protected]>
[ Upstream commit d8123624506cd62730c9cd9c7672c698e462703d ]
Make data section layout checks stricter, disallowing overlap of types and strings data.
Additionally, allow BTFs with no type data. There is nothing inherently wrong with having BTF with no types (put potentially with some strings). This could be a situation with kernel module BTFs, if module doesn't introduce any new type information.
Also fix invalid offset alignment check for btf->hdr->type_off.
--- tools/lib/bpf/btf.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
tools/lib/bpf/btf.c +6 -10
@@ -215,22 +215,18 @@ static int btf_parse_hdr(struct btf *btf)return -EINVAL ; } -if (meta_left < hdr->type_off) { -pr_debug ("Invalid BTF type section offset:%u\n" , hdr->type_off); +if (meta_left < hdr->str_off + hdr->str_len) { +pr_debug ("Invalid BTF total size:%u\n" , btf->raw_size);return -EINVAL ; } -if (meta_left < hdr->str_off) { -pr_debug ("Invalid BTF string section offset:%u\n" , hdr->str_off); +if (hdr->type_off + hdr->type_len > hdr->str_off) { +pr_debug ("Invalid BTF data sections layout: type data at %u + %u, strings data at %u + %u\n" , + hdr->type_off, hdr->type_len, hdr->str_off, hdr->str_len);return -EINVAL ; } -if (hdr->type_off >= hdr->str_off) { -pr_debug ("BTF type section offset >= string section offset. No type?\n" ); -return -EINVAL ; - } - -if (hdr->type_off &0x02 ) { +if (hdr->type_off %4 ) {pr_debug ("BTF type section is not aligned to 4 bytes\n" );return -EINVAL ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 56/717 crypto: arm64/poly1305-neon - reorder PAC authentication with SP update
In reply to Greg Kroah-HartmanFrom: Ard Biesheuvel <[email protected]>
[ Upstream commit 519a0d7e495a6d3ce62594e485aea2a3a4a2ca0a ]
PAC pointer authentication signs the return address against the value of the stack pointer, to prevent stack overrun exploits from corrupting the control flow. However, this requires that the AUTIASP is issued with SP holding the same value as it held when the PAC value was generated. The Poly1305 NEON code got this wrong, resulting in crashes on PAC capable hardware.
--- arch/arm64/crypto/poly1305-armv8.pl | 2 +- arch/arm64/crypto/poly1305-core.S_shipped | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/crypto/poly1305-armv8.pl +1 -1
@@ -840,7 +840,6 @@ poly1305_blocks_neon: ldp d14,d15,[sp,#64] addp $ACC2,$ACC2,$ACC2 ldr x30,[sp,#8] - .inst 0xd50323bf // autiasp //////////////////////////////////////////////////////////////// // lazy reduction, but without narrowing
@@ -882,6 +881,7 @@ poly1305_blocks_neon: str x4,[$ctx,#8] // set is_base2_26 ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size poly1305_blocks_neon,.-poly1305_blocks_neon
arch/arm64/crypto/poly1305-core.S_shipped +1 -1
@@ -779,7 +779,6 @@ poly1305_blocks_neon: ldp d14,d15,[sp,#64] addp v21.2d,v21.2d,v21.2d ldr x30,[sp,#8] - .inst 0xd50323bf // autiasp //////////////////////////////////////////////////////////////// // lazy reduction, but without narrowing
@@ -821,6 +820,7 @@ poly1305_blocks_neon: str x4,[x0,#8] // set is_base2_26 ldr x29,[sp],#80 + .inst 0xd50323bf // autiasp ret .size poly1305_blocks_neon,.-poly1305_blocks_neon
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 57/717 crypto: arm/aes-neonbs - fix usage of cbc(aes) fallback
In reply to Greg Kroah-HartmanFrom: Horia Geantă <[email protected]>
[ Upstream commit a2715fbdc6fc387e85211df917a4778761ec693d ]
Loading the module deadlocks since:
-local cbc(aes) implementation needs a fallback and
-crypto API tries to find one but the request_module() resolves back to the same module
Fix this by changing the module alias for cbc(aes) and using the NEED_FALLBACK flag when requesting for a fallback algorithm.
--- arch/arm/crypto/aes-neonbs-glue.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
arch/arm/crypto/aes-neonbs-glue.c +5 -3
@@ -19,7 +19,7 @@ MODULE_AUTHOR("Ard Biesheuvel <[email protected]>");MODULE_LICENSE ("GPL v2" );MODULE_ALIAS_CRYPTO ("ecb(aes)" ); -MODULE_ALIAS_CRYPTO ("cbc(aes)" ); +MODULE_ALIAS_CRYPTO ("cbc(aes)-all" );MODULE_ALIAS_CRYPTO ("ctr(aes)" );MODULE_ALIAS_CRYPTO ("xts(aes)" );
@@ -191,7 +191,8 @@ static int cbc_init(struct crypto_skcipher *tfm)struct aesbs_cbc_ctx *ctx =crypto_skcipher_ctx (tfm);unsigned int reqsize; - ctx->enc_tfm =crypto_alloc_skcipher ("cbc(aes)" ,0 ,CRYPTO_ALG_ASYNC ); + ctx->enc_tfm =crypto_alloc_skcipher ("cbc(aes)" ,0 ,CRYPTO_ALG_ASYNC | +CRYPTO_ALG_NEED_FALLBACK );if (IS_ERR (ctx->enc_tfm))return PTR_ERR (ctx->enc_tfm);
@@ -441,7 +442,8 @@ static struct skcipher_alg aes_algs[] = { { .base.cra_blocksize = AES_BLOCK_SIZE, .base.cra_ctxsize = sizeof(struct aesbs_cbc_ctx), .base.cra_module = THIS_MODULE, - .base.cra_flags = CRYPTO_ALG_INTERNAL, + .base.cra_flags =CRYPTO_ALG_INTERNAL | + CRYPTO_ALG_NEED_FALLBACK, .min_keysize = AES_MIN_KEY_SIZE, .max_keysize = AES_MAX_KEY_SIZE,
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 58/717 crypto: caam - fix printing on xts fallback allocation error path
In reply to Greg Kroah-HartmanFrom: Horia Geantă <[email protected]>
[ Upstream commit ab95bd2aa904e4f53b7358efeea1d57693fb7889 ]
At the time xts fallback tfm allocation fails the device struct hasn't been enabled yet in the caam xts tfm's private context.
Fix this by using the device struct from xts algorithm's private context or, when not available, by replacing dev_err with pr_err.
--- drivers/crypto/caam/caamalg.c | 4 ++-- drivers/crypto/caam/caamalg_qi.c | 4 ++-- drivers/crypto/caam/caamalg_qi2.c | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-)
drivers/crypto/caam/caamalg.c +2 -2
@@ -3404,8 +3404,8 @@ static int caam_cra_init(struct crypto_skcipher *tfm) fallback =crypto_alloc_skcipher (tfm_name,0 ,CRYPTO_ALG_NEED_FALLBACK );if (IS_ERR (fallback)) { -dev_err (ctx->jrdev,"Failed to allocate %s fallback: %ld\n" , - tfm_name,PTR_ERR (fallback)); +pr_err ("Failed to allocate %s fallback: %ld\n" , + tfm_name,PTR_ERR (fallback));return PTR_ERR (fallback); }
drivers/crypto/caam/caamalg_qi.c +2 -2
@@ -2502,8 +2502,8 @@ static int caam_cra_init(struct crypto_skcipher *tfm) fallback =crypto_alloc_skcipher (tfm_name,0 ,CRYPTO_ALG_NEED_FALLBACK );if (IS_ERR (fallback)) { -dev_err (ctx->jrdev,"Failed to allocate %s fallback: %ld\n" , - tfm_name,PTR_ERR (fallback)); +pr_err ("Failed to allocate %s fallback: %ld\n" , + tfm_name,PTR_ERR (fallback));return PTR_ERR (fallback); }
drivers/crypto/caam/caamalg_qi2.c +2 -1
@@ -1611,7 +1611,8 @@ static int caam_cra_init_skcipher(struct crypto_skcipher *tfm) fallback =crypto_alloc_skcipher (tfm_name,0 ,CRYPTO_ALG_NEED_FALLBACK );if (IS_ERR (fallback)) { -dev_err (ctx->dev,"Failed to allocate %s fallback: %ld\n" , +dev_err (caam_alg->caam.dev, +"Failed to allocate %s fallback: %ld\n" , tfm_name,PTR_ERR (fallback));return PTR_ERR (fallback); }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 59/717 selinux: fix inode_doinit_with_dentry() LABEL_INVALID error handling
In reply to Greg Kroah-HartmanFrom: Paul Moore <[email protected]>
[ Upstream commit 200ea5a2292dc444a818b096ae6a32ba3caa51b9 ]
A previous fix, commit 83370b31a915 ("selinux: fix error initialization in inode_doinit_with_dentry()"), changed how failures were handled before a SELinux policy was loaded. Unfortunately that patch was potentially problematic for two reasons: it set the isec->initialized state without holding a lock, and it didn't set the inode's SELinux label to the "default" for the particular filesystem. The later can be a problem if/when a later attempt to revalidate the inode fails and SELinux reverts to the existing inode label.
This patch should restore the default inode labeling that existed before the original fix, without affecting the LABEL_INVALID marking such that revalidation will still be attempted in the future.
--- security/selinux/hooks.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-)
security/selinux/hooks.c +13 -18
@@ -1451,13 +1451,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent* inode_doinit with a dentry, before these inodes could * be used again by userspace. */ - isec->initialized =LABEL_INVALID ; -/* -* There is nothing useful to jump to the "out" -* label, except a needless spin lock/unlock -* cycle. -*/ -return 0 ; + goto out_invalid; } rc = inode_doinit_use_xattr(inode, dentry, sbsec->def_sid,
@@ -1513,15 +1507,8 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent* inode_doinit() with a dentry, before these inodes * could be used again by userspace. */ -if (!dentry) { - isec->initialized =LABEL_INVALID ; -/* -* There is nothing useful to jump to the "out" -* label, except a needless spin lock/unlock -* cycle. -*/ -return 0 ; - } +if (!dentry) + goto out_invalid; rc =selinux_genfs_get_sid (dentry, sclass, sbsec->flags, &sid);if (rc) {
@@ -1546,11 +1533,10 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent out:spin_lock (&isec->lock);if (isec->initialized ==LABEL_PENDING ) { -if (!sid || rc) { +if (rc) { isec->initialized =LABEL_INVALID ; goto out_unlock; } - isec->initialized =LABEL_INITIALIZED ; isec->sid = sid; }
@@ -1558,6 +1544,15 @@ out: out_unlock:spin_unlock (&isec->lock);return rc; + +out_invalid: +spin_lock (&isec->lock); +if (isec->initialized ==LABEL_PENDING ) { + isec->initialized =LABEL_INVALID ; + isec->sid = sid; + } +spin_unlock (&isec->lock); +return 0 ; }/* Convert a Linux signal to an access vector. */
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 60/717 nl80211/cfg80211: fix potential infinite loop
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
[ Upstream commit ba5c25236bc3d399df82ebe923490ea8d2d35cf2 ]
The for-loop iterates with a u8 loop counter and compares this with the loop upper limit of request->n_ssids which is an int type. There is a potential infinite loop if n_ssids is larger than the u8 loop counter, so fix this by making the loop counter an int.
Addresses-Coverity: ("Infinite loop")
--- net/wireless/scan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/wireless/scan.c +1 -1
@@ -694,7 +694,7 @@ static void cfg80211_scan_req_add_chan(struct cfg80211_scan_request *request,static bool cfg80211_find_ssid_match (struct cfg80211_colocated_ap *ap,struct cfg80211_scan_request *request) { -u8 i; +int i;u32 s_ssid;for (i =0 ; i < request->n_ssids; i++) {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 61/717 spi: stm32: fix reference leak in stm32_spi_resume
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 900ccdcb79bb61471df1566a70b2b39687a628d5 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in stm32_spi_resume, so we should fix it.
--- drivers/spi/spi-stm32.c | 1 + 1 file changed, 1 insertion(+)
drivers/spi/spi-stm32.c +1 -0
@@ -2062,6 +2062,7 @@ static int stm32_spi_resume(struct device *dev) ret =pm_runtime_get_sync (dev);if (ret <0 ) { +pm_runtime_put_noidle (dev);dev_err (dev,"Unable to power device:%d\n" , ret);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 62/717 bpf: Fix tests for local_storage
In reply to Greg Kroah-HartmanFrom: KP Singh <[email protected]>
[ Upstream commit f0e5ba0bc481df77cf0afac2b33e420b33eeb463 ]
The {inode,sk}_storage_result checking if the correct value was retrieved was being clobbered unconditionally by the return value of the bpf_{inode,sk}_storage_delete call.
Also, consistently use the newly added BPF_LOCAL_STORAGE_GET_F_CREATE flag.
--- .../selftests/bpf/progs/local_storage.c | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-)
tools/testing/selftests/bpf/progs/local_storage.c +15 -9
@@ -58,20 +58,22 @@ int BPF_PROG(unlink_hook, struct inode *dir, struct dentry *victim) {__u32 pid =bpf_get_current_pid_tgid () >>32 ;struct dummy_storage *storage; +int err;if (pid != monitored_pid)return 0 ; storage =bpf_inode_storage_get (&inode_storage_map, victim->d_inode,0 , -BPF_SK_STORAGE_GET_F_CREATE ); +BPF_LOCAL_STORAGE_GET_F_CREATE );if (!storage)return 0 ; -if (storage->value ==DUMMY_STORAGE_VALUE ) +if (storage->value !=DUMMY_STORAGE_VALUE ) inode_storage_result =-1 ; - inode_storage_result = -bpf_inode_storage_delete (&inode_storage_map, victim->d_inode); + err =bpf_inode_storage_delete (&inode_storage_map, victim->d_inode); +if (!err) + inode_storage_result = err;return 0 ; }
@@ -82,19 +84,23 @@ int BPF_PROG(socket_bind, struct socket *sock, struct sockaddr *address, {__u32 pid =bpf_get_current_pid_tgid () >>32 ;struct dummy_storage *storage; +int err;if (pid != monitored_pid)return 0 ; storage =bpf_sk_storage_get (&sk_storage_map, sock->sk,0 , -BPF_SK_STORAGE_GET_F_CREATE ); +BPF_LOCAL_STORAGE_GET_F_CREATE );if (!storage)return 0 ; -if (storage->value ==DUMMY_STORAGE_VALUE ) +if (storage->value !=DUMMY_STORAGE_VALUE ) sk_storage_result =-1 ; - sk_storage_result =bpf_sk_storage_delete (&sk_storage_map, sock->sk); + err =bpf_sk_storage_delete (&sk_storage_map, sock->sk); +if (!err) + sk_storage_result = err; +return 0 ; }
@@ -109,7 +115,7 @@ int BPF_PROG(socket_post_create, struct socket *sock, int family, int type,return 0 ; storage =bpf_sk_storage_get (&sk_storage_map, sock->sk,0 , -BPF_SK_STORAGE_GET_F_CREATE ); +BPF_LOCAL_STORAGE_GET_F_CREATE );if (!storage)return 0 ;
@@ -131,7 +137,7 @@ int BPF_PROG(file_open, struct file *file)return 0 ; storage =bpf_inode_storage_get (&inode_storage_map, file->f_inode,0 , -BPF_LOCAL_STORAGE_GET_F_CREATE ); +BPF_LOCAL_STORAGE_GET_F_CREATE );if (!storage)return 0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 63/717 x86/mce: Correct the detection of invalid notifier priorities
In reply to Greg Kroah-HartmanFrom: Zhen Lei <[email protected]>
[ Upstream commit 15af36596ae305aefc8c502c2d3e8c58221709eb ]
Commit
c9c6d216ed28 ("x86/mce: Rename "first" function as "early"")
changed the enumeration of MCE notifier priorities. Correct the check for notifier priorities to cover the new range.
[ bp: Rewrite commit message, remove superfluous brackets in
conditional. ]
--- arch/x86/include/asm/mce.h | 3 ++- arch/x86/kernel/cpu/mce/core.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-)
arch/x86/include/asm/mce.h +2 -1
@@ -177,7 +177,8 @@ enum mce_notifier_prios {MCE_PRIO_EXTLOG ,MCE_PRIO_UC ,MCE_PRIO_EARLY , - MCE_PRIO_CEC +MCE_PRIO_CEC , + MCE_PRIO_HIGHEST = MCE_PRIO_CEC };struct notifier_block ;
arch/x86/kernel/cpu/mce/core.c +2 -1
@@ -162,7 +162,8 @@ EXPORT_SYMBOL_GPL(mce_log);void mce_register_decode_chain (struct notifier_block *nb) { -if (WARN_ON (nb->priority >MCE_PRIO_MCELOG && nb->priority <MCE_PRIO_EDAC )) +if (WARN_ON (nb->priority <MCE_PRIO_LOWEST || + nb->priority >MCE_PRIO_HIGHEST ))return ;blocking_notifier_chain_register (&x86_mce_decoder_chain, nb);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 64/717 drm/edid: Fix uninitialized variable in drm_cvt_modes()
In reply to Greg Kroah-HartmanFrom: Lyude Paul <[email protected]>
[ Upstream commit 991fcb77f490390bcad89fa67d95763c58cdc04c ]
Noticed this when trying to compile with -Wall on a kernel fork. We potentially don't set width here, which causes the compiler to complain about width potentially being uninitialized in drm_cvt_modes(). So, let's fix that.
Changes since v1:
* Don't emit an error as this code isn't reachable, just mark it as such Changes since v2:
* Remove now unused variable
--- drivers/gpu/drm/drm_edid.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/drm_edid.c +2 -0
@@ -3114,6 +3114,8 @@ static int drm_cvt_modes(struct drm_connector *connector,case 0x0c : width = height *15 /9 ;break ; +default : +unreachable (); }for (j =1 ; j <5 ; j++) {
Signature · 1 line
2.27.0
Re: [PATCH 5.10 064/717] drm/edid: Fix uninitialized variable in drm_cvt_modes()
Hi Greg,
Linus had to apply a fixup for this patch. Please ensure that it's in your patch list:
commit d652d5f1eeeb06046009f4fcb9b4542249526916
Author: Linus Torvalds <[email protected]> Date: Thu Dec 17 09:27:57 2020 -0800
drm/edid: fix objtool warning in drm_cvt_modes()
It does not appear to have a Fixes tag, so may not have been picked up by your automated tooling.
Cheers,
-ilia
Quoted 42 lines · Greg Kroah-Hartman
From: Lyude Paul <[email protected]>
[ Upstream commit
991fcb77f490390bcad89fa67d95763c58cdc04c]Noticed this when trying to compile with -Wall on a kernel fork. We potentially don't set width here, which causes the compiler to complain about width potentially being uninitialized in
drm_cvt_modes(). So, let's fix that.Changes since v1:
* Don't emit an error as this code isn't reachable, just mark it as such Changes since v2:
* Remove now unused variableFixes 3f649ab728cd ("treewide: Remove uninitialized_var() usage")Signed-off-by Lyude Paul <[email protected]>Reviewed-by Ilia Mirkin <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- drivers/gpu/drm/drm_edid.c | 2 ++ 1 file changed, 2 insertions(+)drivers/gpu/drm/drm_edid.c +2
-1@@ -3114,6 +3114,8 @@ static int drm_cvt_modes(struct drm_connector *connector,case 0x0c : width = height *15 /9 ;break ; +default : +unreachable (); }for (j =1 ; j <5 ; j++) { --2.27.0
Greg Kroah-Hartman
maintainerRe: [PATCH 5.10 064/717] drm/edid: Fix uninitialized variable in drm_cvt_modes()
Quoted 5 lines · Ilia Mirkin
Hi Greg,
Linus had to apply a fixup for this patch. Please ensure that it's in your patch list:
Quoted 8 lines
commit
d652d5f1eeeb06046009f4fcb9b4542249526916Author: Linus Torvalds <[email protected]> Date: Thu Dec 17 09:27:57 2020 -0800drm/edid: fix objtool warning in
drm_cvt_modes()It does not appear to have a Fixes tag, so may not have been picked up by your automated tooling.
It was not, thanks, now queued up!
greg k-h
Greg Kroah-Hartman
maintainerPATCH 65/717 ath11k: Initialize complete alpha2 for regulatory change
In reply to Greg Kroah-HartmanFrom: Sven Eckelmann <[email protected]>
[ Upstream commit 383a32cde4172db19d4743d4c782c00af39ff275 ]
The function ath11k_wmi_send_init_country_cmd is taking 3 byte from alpha2 of the structure wmi_init_country_params. But the function ath11k_reg_notifier is only initializing 2 bytes. The third byte is therefore always an uninitialized value.
The command can happen to look like
0c 00 87 02 01 00 00 00 00 00 00 00 43 41 f8 00
instead of
0c 00 87 02 01 00 00 00 00 00 00 00 43 41 00 00
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01161-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.4.0.1.r1-00019-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 WLAN.HK.2.4.0.1.r1-00026-QCAHKSWPL_SILICONZ-2
--- drivers/net/wireless/ath/ath11k/reg.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/wireless/ath/ath11k/reg.c +1 -0
@@ -80,6 +80,7 @@ ath11k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)*/ init_country_param.flags =ALPHA_IS_SET ;memcpy (&init_country_param.cc_info.alpha2, request->alpha2,2 ); + init_country_param.cc_info.alpha2[2 ] =0 ; ret =ath11k_wmi_send_init_country_cmd (ar, init_country_param);if (ret)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 66/717 ath11k: Fix number of rules in filtered ETSI regdomain
In reply to Greg Kroah-HartmanFrom: Sven Eckelmann <[email protected]>
[ Upstream commit 6189be7d145c3a2d48514eb8755483602ff5a4b4 ]
The ath11k code will try to insert wheather rader related limits when the DFS region is set to ETSI. For this reason, it will add two more entries in the array of reg_rules. But the 2.4.0.1 firmware is prefiltering the list of reg rules it returns for 2.4GHz PHYs. They will then not contain the list of 5GHz rules and thus no wheather radar band rules were inserted by this code.
But the code didn't fix the n_reg_rules for this regulatory domain and PHY when this happened. This resulted in a rejection by is_valid_rd because it found rules which start and end at 0khz. This resulted in a splat like:
Invalid regulatory domain detected
------------[ cut here ]------------ WARNING: at backports-20200628-4.4.60-9a94b73e75/net/wireless/reg.c:3721 [...] ath11k c000000.wifi1: failed to perform regd update : -22
The number of rules must therefore be saved after they were converted from the ath11k format to the ieee80211_regdomain format and not before.
Tested with IPQ8074 WLAN.HK.2.4.0.1.r1-00019-QCAHKSWPL_SILICONZ-1
--- drivers/net/wireless/ath/ath11k/reg.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/wireless/ath/ath11k/reg.c +3 -2
@@ -585,7 +585,6 @@ ath11k_reg_build_regd(struct ath11k_base *ab,if (!tmp_regd) goto ret; - tmp_regd->n_reg_rules = num_rules;memcpy (tmp_regd->alpha2, reg_info->alpha2,REG_ALPHA2_LEN +1 );memcpy (alpha2, reg_info->alpha2,REG_ALPHA2_LEN +1 ); alpha2[2 ] ='\0' ;
@@ -598,7 +597,7 @@ ath11k_reg_build_regd(struct ath11k_base *ab,/* Update reg_rules[] below. Firmware is expected to * send these rules in order(2G rules first and then 5G) */ -for (; i < tmp_regd->n_reg_rules; i++) { +for (; i < num_rules; i++) {if (reg_info->num_2g_reg_rules && (i < reg_info->num_2g_reg_rules)) { reg_rule = reg_info->reg_rules_2g_ptr + i;
@@ -653,6 +652,8 @@ ath11k_reg_build_regd(struct ath11k_base *ab, flags); } + tmp_regd->n_reg_rules = i; +if (intersect) { default_regd = ab->default_regd[reg_info->phy_id];
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 67/717 ath11k: fix wmi init configuration
In reply to Greg Kroah-HartmanFrom: Karthikeyan Periyasamy <[email protected]>
[ Upstream commit 36c7c640ffeb87168e5ff79b7a36ae3a020bd378 ]
Assign the correct hw_op ath11k_init_wmi_config_ipq8074 to the hw IPQ8074. Also update the correct TWT radio count. Incorrect TWT radio count cause TWT feature fails on radio2 because physical device count is hardcoded to 2. so set the value dynamically.
Found this during code review.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2
--- drivers/net/wireless/ath/ath11k/hw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/wireless/ath/ath11k/hw.c +2 -2
@@ -127,7 +127,7 @@ static void ath11k_init_wmi_config_ipq8074(struct ath11k_base *ab, config->beacon_tx_offload_max_vdev = ab->num_radios *TARGET_MAX_BCN_OFFLD ; config->rx_batchmode =TARGET_RX_BATCHMODE ; config->peer_map_unmap_v2_support =1 ; - config->twt_ap_pdev_count =2 ; + config->twt_ap_pdev_count = ab->num_radios; config->twt_ap_sta_count =1000 ; }
@@ -157,7 +157,7 @@ static int ath11k_hw_mac_id_to_srng_id_qca6390(struct ath11k_hw_params *hw,const struct ath11k_hw_ops ipq8074_ops = { .get_hw_mac_from_pdev_id = ath11k_hw_ipq8074_mac_from_pdev_id, - .wmi_init_config = ath11k_init_wmi_config_qca6390, + .wmi_init_config = ath11k_init_wmi_config_ipq8074, .mac_id_to_pdev_id = ath11k_hw_mac_id_to_pdev_id_ipq8074, .mac_id_to_srng_id = ath11k_hw_mac_id_to_srng_id_ipq8074, };
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 68/717 brcmfmac: Fix memory leak for unpaired brcmf_{alloc/free}
In reply to Greg Kroah-HartmanFrom: Seung-Woo Kim <[email protected]>
[ Upstream commit 9db946284e07bb27309dd546b7fee528664ba82a ]
There are missig brcmf_free() for brcmf_alloc(). Fix memory leak by adding missed brcmf_free().
--- drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 6 ++++-- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + 2 files changed, 5 insertions(+), 2 deletions(-)
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +4 -2
@@ -1936,16 +1936,18 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id) fwreq =brcmf_pcie_prepare_fw_request (devinfo);if (!fwreq) { ret = -ENOMEM ; - goto fail_bus; + goto fail_brcmf; } ret =brcmf_fw_get_firmwares (bus->dev, fwreq, brcmf_pcie_setup);if (ret <0 ) {kfree (fwreq); - goto fail_bus; + goto fail_brcmf; }return 0 ; +fail_brcmf: +brcmf_free (&devinfo->pdev->dev); fail_bus:kfree (bus->msgbuf);kfree (bus);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +1 -0
@@ -4541,6 +4541,7 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)brcmf_sdiod_intr_unregister (bus->sdiodev);brcmf_detach (bus->sdiodev->dev); +brcmf_free (bus->sdiodev->dev);cancel_work_sync (&bus->datawork);if (bus->brcmf_wq)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 69/717 arm64: dts: exynos: Include common syscon restart/poweroff for Exynos7
In reply to Greg Kroah-HartmanFrom: Paweł Chmiel <[email protected]>
[ Upstream commit 73bc7510ea0dafb4ff1ae6808759627a8ec51f5a ]
Exynos7 uses the same syscon reboot and poweroff nodes as other Exynos SoCs, so instead of duplicating code we can just include common dtsi file, which already contains definitions of them. After this change, poweroff node will be also available, previously this dts file did contain only reboot node.
--- arch/arm64/boot/dts/exynos/exynos7.dtsi | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-)
arch/arm64/boot/dts/exynos/exynos7.dtsi +1 -7
@@ -481,13 +481,6 @@ pmu_system_controller: system-controller@105c0000 { compatible = "samsung,exynos7-pmu", "syscon"; reg = <0x105c0000 0x5000>; - - reboot: syscon-reboot { - compatible = "syscon-reboot"; - regmap = <&pmu_system_controller>; - offset = <0x0400>; - mask = <0x1>; - }; }; rtc: rtc@10590000 {
@@ -687,3 +680,4 @@ }; #include "exynos7-pinctrl.dtsi" +#include "arm/exynos-syscon-restart.dtsi"
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 70/717 arm64: dts: exynos: Correct psci compatible used on Exynos7
In reply to Greg Kroah-HartmanFrom: Paweł Chmiel <[email protected]>
[ Upstream commit e1e47fbca668507a81bb388fcae044b89d112ecc ]
It's not possible to reboot or poweroff Exynos7420 using PSCI. Instead we need to use syscon reboot/poweroff drivers, like it's done for other Exynos SoCs. This was confirmed by checking vendor source and testing it on Samsung Galaxy S6 device based on this SoC.
To be able to use custom restart/poweroff handlers instead of PSCI functions, we need to correct psci compatible. This also requires us to provide function ids for CPU_ON and CPU_OFF.
--- arch/arm64/boot/dts/exynos/exynos7.dtsi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/exynos/exynos7.dtsi +3 -1
@@ -79,8 +79,10 @@ }; psci { - compatible = "arm,psci-0.2"; + compatible = "arm,psci"; method = "smc"; + cpu_off = <0x84000002>; + cpu_on = <0xC4000003>; }; soc: soc@0 {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 71/717 drm/panel: simple: Add flags to boe_nv133fhm_n61
In reply to Greg Kroah-HartmanFrom: Stephen Boyd <[email protected]>
[ Upstream commit ab6fd5d44aa21ede9e566f89132f7bdda7f33093 ]
Reading the EDID of this panel shows that these flags should be set. Set them so that we match what is in the EDID.
--- drivers/gpu/drm/panel/panel-simple.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/panel/panel-simple.c +1 -0
@@ -1327,6 +1327,7 @@ static const struct drm_display_mode boe_nv133fhm_n61_modes = { .vsync_start = 1080 + 3, .vsync_end = 1080 + 3 + 6, .vtotal = 1080 + 3 + 6 + 31, + .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, };/* Also used for boe_nv133fhm_n62 */
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 72/717 Bluetooth: Fix null pointer dereference in hci_event_packet()
In reply to Greg Kroah-HartmanFrom: Anmol Karn <[email protected]>
[ Upstream commit 6dfccd13db2ff2b709ef60a50163925d477549aa ]
AMP_MGR is getting derefernced in hci_phy_link_complete_evt(), when called from hci_event_packet() and there is a possibility, that hcon->amp_mgr may not be found when accessing after initialization of hcon.
- net/bluetooth/hci_event.c:4945
The bug seems to get triggered in this line:
bredr_hcon = hcon->amp_mgr->l2cap_conn->hcon;
Fix it by adding a NULL check for the hcon->amp_mgr before checking the ev-status.
--- net/bluetooth/hci_event.c | 5 +++++ 1 file changed, 5 insertions(+)
net/bluetooth/hci_event.c +5 -0
@@ -4941,6 +4941,11 @@ static void hci_phy_link_complete_evt(struct hci_dev *hdev,return ; } +if (!hcon->amp_mgr) { +hci_dev_unlock (hdev); +return ; + } +if (ev->status) {hci_conn_del (hcon);hci_dev_unlock (hdev);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 73/717 Bluetooth: Fix: LL PRivacy BLE device fails to connect
In reply to Greg Kroah-HartmanFrom: Sathish Narasimman <[email protected]>
[ Upstream commit 1fb17dfc258ff6208f7873cc7b8e40e27515d2d5 ]
When adding device to white list the device is added to resolving list also. It has to be added only when HCI_ENABLE_LL_PRIVACY flag is set. HCI_ENABLE_LL_PRIVACY flag has to be tested before adding/deleting devices to resolving list. use_ll_privacy macro is used only to check if controller supports LL_Privacy.
https://bugzilla.kernel.org/show_bug.cgi?id=209745
--- net/bluetooth/hci_request.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
net/bluetooth/hci_request.c +8 -4
@@ -698,7 +698,8 @@ static void del_from_white_list(struct hci_request *req, bdaddr_t *bdaddr, cp.bdaddr_type);hci_req_add (req,HCI_OP_LE_DEL_FROM_WHITE_LIST ,sizeof (cp), &cp); -if (use_ll_privacy (req->hdev)) { +if (use_ll_privacy (req->hdev) && +hci_dev_test_flag (req->hdev,HCI_ENABLE_LL_PRIVACY )) {struct smp_irk *irk; irk =hci_find_irk_by_addr (req->hdev, bdaddr, bdaddr_type);
@@ -732,7 +733,8 @@ static int add_to_white_list(struct hci_request *req,return -1 ;/* White list can not be used with RPAs */ -if (!allow_rpa && !use_ll_privacy (hdev) && +if (!allow_rpa && + !hci_dev_test_flag (hdev,HCI_ENABLE_LL_PRIVACY ) &&hci_find_irk_by_addr (hdev, ¶ms->addr, params->addr_type)) {return -1 ; }
@@ -750,7 +752,8 @@ static int add_to_white_list(struct hci_request *req, cp.bdaddr_type);hci_req_add (req,HCI_OP_LE_ADD_TO_WHITE_LIST ,sizeof (cp), &cp); -if (use_ll_privacy (hdev)) { +if (use_ll_privacy (hdev) && +hci_dev_test_flag (hdev,HCI_ENABLE_LL_PRIVACY )) {struct smp_irk *irk; irk = hci_find_irk_by_addr(hdev, ¶ms->addr,
@@ -812,7 +815,8 @@ static u8 update_white_list(struct hci_request *req) }/* White list can not be used with RPAs */ -if (!allow_rpa && !use_ll_privacy (hdev) && +if (!allow_rpa && + !hci_dev_test_flag (hdev,HCI_ENABLE_LL_PRIVACY ) &&hci_find_irk_by_addr (hdev, &b->bdaddr, b->bdaddr_type)) {return 0x00 ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 74/717 Bluetooth: hci_h5: fix memory leak in h5_close
In reply to Greg Kroah-HartmanFrom: Anant Thazhemadam <[email protected]>
[ Upstream commit 855af2d74c870d747bf53509f8b2d7b9dc9ee2c3 ]
When h5_close() is called, h5 is directly freed when !hu->serdev. However, h5->rx_skb is not freed, which causes a memory leak.
Freeing h5->rx_skb and setting it to NULL, fixes this memory leak.
--- drivers/bluetooth/hci_h5.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/bluetooth/hci_h5.c +3 -0
@@ -245,6 +245,9 @@ static int h5_close(struct hci_uart *hu)skb_queue_purge (&h5->rel);skb_queue_purge (&h5->unrel); +kfree_skb (h5->rx_skb); + h5->rx_skb =NULL ; +if (h5->vnd && h5->vnd->close) h5->vnd->close (h5);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 75/717 spi: stm32-qspi: fix reference leak in stm32 qspi operations
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 88e1419b5ee30cc50e0c4d5265bdee1ba04af539 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(stm32_qspi_exec_op and stm32_qspi_setup), so we should fix it.
--- drivers/spi/spi-stm32-qspi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
drivers/spi/spi-stm32-qspi.c +6 -2
@@ -434,8 +434,10 @@ static int stm32_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)int ret; ret =pm_runtime_get_sync (qspi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (qspi->dev);return ret; + }mutex_lock (&qspi->lock); ret =stm32_qspi_send (mem, op);
@@ -462,8 +464,10 @@ static int stm32_qspi_setup(struct spi_device *spi)return -EINVAL ; ret =pm_runtime_get_sync (qspi->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (qspi->dev);return ret; + } presc =DIV_ROUND_UP (qspi->clk_rate, spi->max_speed_hz) -1 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 76/717 spi: spi-ti-qspi: fix reference leak in ti_qspi_setup
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 45c0cba753641e5d7c3207f04241bd0e7a021698 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in ti_qspi_setup, so we should fix it.
--- drivers/spi/spi-ti-qspi.c | 1 + 1 file changed, 1 insertion(+)
drivers/spi/spi-ti-qspi.c +1 -0
@@ -174,6 +174,7 @@ static int ti_qspi_setup(struct spi_device *spi) ret =pm_runtime_get_sync (qspi->dev);if (ret <0 ) { +pm_runtime_put_noidle (qspi->dev);dev_err (qspi->dev,"pm_runtime_get_sync() failed\n" );return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 77/717 spi: mt7621: fix missing clk_disable_unprepare() on error in mt7621_spi_probe
In reply to Greg Kroah-HartmanFrom: Qinglang Miao <[email protected]>
[ Upstream commit 702b15cb97123cedcec56a39d9a21c5288eb9ae1 ]
Fix the missing clk_disable_unprepare() before return from mt7621_spi_probe in the error handling case.
--- drivers/spi/spi-mt7621.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/spi/spi-mt7621.c +2 -0
@@ -353,6 +353,7 @@ static int mt7621_spi_probe(struct platform_device *pdev) master =spi_alloc_master (&pdev->dev,sizeof (*rs));if (!master) {dev_info (&pdev->dev,"master allocation failed\n" ); +clk_disable_unprepare (clk);return -ENOMEM ; }
@@ -377,6 +378,7 @@ static int mt7621_spi_probe(struct platform_device *pdev) ret =device_reset (&pdev->dev);if (ret) {dev_err (&pdev->dev,"SPI reset failed!\n" ); +clk_disable_unprepare (clk);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 78/717 spi: tegra20-slink: fix reference leak in slink ops of tegra20
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 763eab7074f6e71babd85d796156f05a675f9510 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(tegra_slink_setup and tegra_slink_resume), so we should fix it.
--- drivers/spi/spi-tegra20-slink.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/spi/spi-tegra20-slink.c +2 -0
@@ -751,6 +751,7 @@ static int tegra_slink_setup(struct spi_device *spi) ret =pm_runtime_get_sync (tspi->dev);if (ret <0 ) { +pm_runtime_put_noidle (tspi->dev);dev_err (tspi->dev,"pm runtime failed, e = %d\n" , ret);return ret; }
@@ -1188,6 +1189,7 @@ static int tegra_slink_resume(struct device *dev) ret =pm_runtime_get_sync (dev);if (ret <0 ) { +pm_runtime_put_noidle (dev);dev_err (dev,"pm runtime failed, e = %d\n" , ret);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 79/717 spi: tegra20-sflash: fix reference leak in tegra_sflash_resume
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 3482e797ab688da6703fe18d8bad52f94199f4f2 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in tegra_sflash_resume, so we should fix it.
--- drivers/spi/spi-tegra20-sflash.c | 1 + 1 file changed, 1 insertion(+)
drivers/spi/spi-tegra20-sflash.c +1 -0
@@ -552,6 +552,7 @@ static int tegra_sflash_resume(struct device *dev) ret =pm_runtime_get_sync (dev);if (ret <0 ) { +pm_runtime_put_noidle (dev);dev_err (dev,"pm runtime failed, e = %d\n" , ret);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 80/717 spi: tegra114: fix reference leak in tegra spi ops
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit a042184c7fb99961ea083d4ec192614bec671969 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in two callers(tegra_spi_setup and tegra_spi_resume), so we should fix it.
--- drivers/spi/spi-tegra114.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/spi/spi-tegra114.c +2 -0
@@ -966,6 +966,7 @@ static int tegra_spi_setup(struct spi_device *spi) ret =pm_runtime_get_sync (tspi->dev);if (ret <0 ) { +pm_runtime_put_noidle (tspi->dev);dev_err (tspi->dev,"pm runtime failed, e = %d\n" , ret);if (cdata)tegra_spi_cleanup (spi);
@@ -1474,6 +1475,7 @@ static int tegra_spi_resume(struct device *dev) ret =pm_runtime_get_sync (dev);if (ret <0 ) { +pm_runtime_put_noidle (dev);dev_err (dev,"pm runtime failed, e = %d\n" , ret);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 81/717 spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume
In reply to Greg Kroah-HartmanFrom: Qinglang Miao <[email protected]>
[ Upstream commit 9bb9ef2b3e5d9d012876e7e2d7757eb30e865bee ]
Fix the missing clk_disable_unprepare() before return from bcm63xx_hsspi_resume in the error handling case when fails to prepare and enable bs->pll_clk.
--- drivers/spi/spi-bcm63xx-hsspi.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/spi/spi-bcm63xx-hsspi.c +3 -1
@@ -494,8 +494,10 @@ static int bcm63xx_hsspi_resume(struct device *dev)if (bs->pll_clk) { ret =clk_prepare_enable (bs->pll_clk); -if (ret) +if (ret) { +clk_disable_unprepare (bs->clk);return ret; + } }spi_master_resume (master);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 82/717 spi: imx: fix reference leak in two imx operations
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 1dcbdd944824369d4569959f8130336fe6fe5f39 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in callers(spi_imx_prepare_message and spi_imx_remove), so we should fix it.
--- drivers/spi/spi-imx.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/spi/spi-imx.c +2 -0
@@ -1538,6 +1538,7 @@ spi_imx_prepare_message(struct spi_master *master, struct spi_message *msg) ret =pm_runtime_get_sync (spi_imx->dev);if (ret <0 ) { +pm_runtime_put_noidle (spi_imx->dev);dev_err (spi_imx->dev,"failed to enable clock\n" );return ret; }
@@ -1748,6 +1749,7 @@ static int spi_imx_remove(struct platform_device *pdev) ret =pm_runtime_get_sync (spi_imx->dev);if (ret <0 ) { +pm_runtime_put_noidle (spi_imx->dev);dev_err (spi_imx->dev,"failed to enable clock\n" );return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 83/717 ASoC: qcom: common: Fix refcounting in qcom_snd_parse_of()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit 4e59dd249cd513a211e2ecce2cb31f4e29a5ce5b ]
There are two issues in this function.
1) We can't drop the refrences on "cpu", "codec" and "platform" before we take the reference. This doesn't cause a problem on the first iteration because those pointers start as NULL so the of_node_put() is a no-op. But on the subsequent iterations, it will lead to a use after free.
2) If the devm_kzalloc() allocation failed then the code returned directly instead of cleaning up.
--- sound/soc/qcom/common.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
sound/soc/qcom/common.c +8 -5
@@ -58,7 +58,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card) dlc =devm_kzalloc (dev,2 *sizeof (*dlc),GFP_KERNEL );if (!dlc) { ret = -ENOMEM ; - goto err; + goto err_put_np; } link->cpus = &dlc[0 ];
@@ -70,7 +70,7 @@ int qcom_snd_parse_of(struct snd_soc_card *card) ret =of_property_read_string (np,"link-name" , &link->name);if (ret) {dev_err (card->dev,"error getting codec dai_link name\n" ); - goto err; + goto err_put_np; } cpu =of_get_child_by_name (np,"cpu" );
@@ -130,8 +130,10 @@ int qcom_snd_parse_of(struct snd_soc_card *card) }else {/* DPCM frontend */ dlc =devm_kzalloc (dev,sizeof (*dlc),GFP_KERNEL ); -if (!dlc) -return -ENOMEM ; +if (!dlc) { + ret = -ENOMEM ; + goto err; + } link->codecs = dlc; link->num_codecs =1 ;
@@ -158,10 +160,11 @@ int qcom_snd_parse_of(struct snd_soc_card *card)return 0 ; err: -of_node_put (np);of_node_put (cpu);of_node_put (codec);of_node_put (platform); +err_put_np: +of_node_put (np);return ret; }EXPORT_SYMBOL (qcom_snd_parse_of);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 84/717 ath11k: Handle errors if peer creation fails
In reply to Greg Kroah-HartmanFrom: Alex Dewar <[email protected]>
[ Upstream commit c134d1f8c436d96b3f62896c630278e3ec001280 ]
ath11k_peer_create() is called without its return value being checked, meaning errors will be unhandled. Add missing check and, as the mutex is unconditionally unlocked on leaving this function, simplify the exit path.
Addresses-Coverity-ID: 1497531 ("Code maintainability issues")
--- drivers/net/wireless/ath/ath11k/mac.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-)
drivers/net/wireless/ath/ath11k/mac.c +14 -10
@@ -5225,20 +5225,26 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw, arvif->vdev_type != WMI_VDEV_TYPE_AP && arvif->vdev_type != WMI_VDEV_TYPE_MONITOR) {memcpy (&arvif->chanctx, ctx,sizeof (*ctx)); -mutex_unlock (&ar->conf_mutex); -return 0 ; + ret =0 ; + goto out; }if (WARN_ON (arvif->is_started)) { -mutex_unlock (&ar->conf_mutex); -return -EBUSY ; + ret = -EBUSY ; + goto out; }if (ab->hw_params.vdev_start_delay) { param.vdev_id = arvif->vdev_id; param.peer_type =WMI_PEER_TYPE_DEFAULT ; param.peer_addr = ar->mac_addr; + ret =ath11k_peer_create (ar, arvif,NULL , ¶m); +if (ret) { +ath11k_warn (ab,"failed to create peer after vdev start delay: %d" , + ret); + goto out; + } } ret =ath11k_mac_vdev_start (arvif, &ctx->def);
@@ -5246,23 +5252,21 @@ ath11k_mac_op_assign_vif_chanctx(struct ieee80211_hw *hw,ath11k_warn (ab,"failed to start vdev %i addr %pM on freq %d: %d\n" , arvif->vdev_id, vif->addr, ctx->def.chan->center_freq, ret); - goto err; + goto out; }if (arvif->vdev_type ==WMI_VDEV_TYPE_MONITOR ) { ret =ath11k_monitor_vdev_up (ar, arvif->vdev_id);if (ret) - goto err; + goto out; } arvif->is_started = true;/* TODO: Setup ps and cts/rts protection */ -mutex_unlock (&ar->conf_mutex); - -return 0 ; + ret =0 ; -err: +out:mutex_unlock (&ar->conf_mutex);return ret;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 85/717 mwifiex: fix mwifiex_shutdown_sw() causing sw reset failure
In reply to Greg Kroah-HartmanFrom: Tsuchiya Yuto <[email protected]>
[ Upstream commit fa74cb1dc0f4da46c441b735ca865ac52de42c0e ]
When a PCIe function level reset (FLR) is performed but without fw reset for some reasons (e.g., on Microsoft Surface devices, fw reset requires other quirks), it fails to reset wifi properly. You can trigger the issue on such devices via debugfs entry for reset:
$ echo 1 | sudo tee /sys/kernel/debug/mwifiex/mlan0/reset
and the resulting dmesg log:
[ 45.740508] mwifiex_pcie 0000:03:00.0: Resetting per request
[ 45.742937] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 3
[ 45.744666] mwifiex_pcie 0000:03:00.0: info: shutdown mwifiex...
[ 45.751530] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.751539] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771691] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771695] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 45.771697] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771698] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 45.771699] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771701] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 45.771702] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771703] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 45.771704] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771705] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 45.771707] mwifiex_pcie 0000:03:00.0: PREP_CMD: card is removed
[ 45.771708] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 53.099343] mwifiex_pcie 0000:03:00.0: info: trying to associate to '[SSID]' bssid [BSSID]
[ 53.241870] mwifiex_pcie 0000:03:00.0: info: associated to bssid [BSSID] successfully
[ 75.377942] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
[ 85.385491] mwifiex_pcie 0000:03:00.0: info: successfully disconnected from [BSSID]: reason code 15
[ 87.539408] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
[ 87.539412] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 99.699917] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
[ 99.699925] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[ 111.859802] mwifiex_pcie 0000:03:00.0: cmd_wait_q terminated: -110
[ 111.859808] mwifiex_pcie 0000:03:00.0: deleting the crypto keys
[...]When comparing mwifiex_shutdown_sw() with mwifiex_pcie_remove(), it lacks mwifiex_init_shutdown_fw().
This commit fixes mwifiex_shutdown_sw() by adding the missing mwifiex_init_shutdown_fw().
--- drivers/net/wireless/marvell/mwifiex/main.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/wireless/marvell/mwifiex/main.c +2 -0
@@ -1471,6 +1471,8 @@ int mwifiex_shutdown_sw(struct mwifiex_adapter *adapter) priv =mwifiex_get_priv (adapter,MWIFIEX_BSS_ROLE_ANY );mwifiex_deauthenticate (priv,NULL ); +mwifiex_init_shutdown_fw (priv,MWIFIEX_FUNC_SHUTDOWN ); +mwifiex_uninit_sw (adapter); adapter->is_up = false;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 86/717 drm/msm/a6xx: Clear shadow on suspend
In reply to Greg Kroah-HartmanFrom: Rob Clark <[email protected]>
[ Upstream commit e8b0b994c3a5881f0648d53f90435120089c56ad ]
Clear the shadow rptr on suspend. Otherwise, when we resume, we can have a stale value until CP_WHERE_AM_I executes. If we suspend near the ringbuffer wraparound point, this can lead to a chicken/egg situation where we are waiting for ringbuffer space to write the CP_WHERE_AM_I (or CP_INIT) packet, because we mistakenly believe that the ringbuffer is full (due to stale rptr value in the shadow).
Fixes errors like:
[drm:adreno_wait_ring [msm]] *ERROR* timeout waiting for space in ringbuffer 0
in the resume path.
--- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/adreno/a6xx_gpu.c +10 -1
@@ -1045,12 +1045,21 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu) {struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu);struct a6xx_gpu *a6xx_gpu =to_a6xx_gpu (adreno_gpu); +int i, ret;trace_msm_gpu_suspend (0 );devfreq_suspend_device (gpu->devfreq.devfreq); -return a6xx_gmu_stop (a6xx_gpu); + ret =a6xx_gmu_stop (a6xx_gpu); +if (ret) +return ret; + +if (adreno_gpu->base.hw_apriv || a6xx_gpu->has_whereami) +for (i =0 ; i < gpu->nr_rings; i++) + a6xx_gpu->shadow[i] =0 ; + +return 0 ; }static int a6xx_get_timestamp (struct msm_gpu *gpu,uint64_t *value)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 87/717 drm/msm/a5xx: Clear shadow on suspend
In reply to Greg Kroah-HartmanFrom: Rob Clark <[email protected]>
[ Upstream commit 5771de5d5b3bfaf279e5c262a113d4b6fbe54355 ]
Similar to the previous patch, clear shadow on suspend to avoid timeouts waiting for ringbuffer space.
--- drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/adreno/a5xx_gpu.c +11 -1
@@ -1207,7 +1207,9 @@ static int a5xx_pm_resume(struct msm_gpu *gpu)static int a5xx_pm_suspend (struct msm_gpu *gpu) {struct adreno_gpu *adreno_gpu =to_adreno_gpu (gpu); +struct a5xx_gpu *a5xx_gpu =to_a5xx_gpu (adreno_gpu);u32 mask =0xf ; +int i, ret;/* A510 has 3 XIN ports in VBIF */ if (adreno_is_a510 (adreno_gpu))
@@ -1227,7 +1229,15 @@ static int a5xx_pm_suspend(struct msm_gpu *gpu)gpu_write (gpu,REG_A5XX_RBBM_BLOCK_SW_RESET_CMD ,0x003C0000 );gpu_write (gpu,REG_A5XX_RBBM_BLOCK_SW_RESET_CMD ,0x00000000 ); -return msm_gpu_pm_suspend (gpu); + ret =msm_gpu_pm_suspend (gpu); +if (ret) +return ret; + +if (a5xx_gpu->has_whereami) +for (i =0 ; i < gpu->nr_rings; i++) + a5xx_gpu->shadow[i] =0 ; + +return 0 ; }static int a5xx_get_timestamp (struct msm_gpu *gpu,uint64_t *value)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 88/717 firmware: tegra: fix strncpy()/strncat() confusion
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit 9294996f0be40e9da818ed891c82397ab63c00d0 ]
The way that bpmp_populate_debugfs_inband() uses strncpy() and strncat() makes no sense since the size argument for the first is insufficient to contain the trailing '/' and the second passes the length of the input rather than the output, which triggers a warning:
In function 'strncat',
inlined from 'bpmp_populate_debugfs_inband' at ../drivers/firmware/tegra/bpmp-debugfs.c:422:4:include/linux/string.h:289:30: warning: '__builtin_strncat' specified bound depends on the length of the source argument [-Wstringop-overflow=]
289 | #define __underlying_strncat __builtin_strncat
| ^include/linux/string.h:367:10: note: in expansion of macro '__underlying_strncat'
367 | return __underlying_strncat(p, q, count);
| ^~~~~~~~~~~~~~~~~~~~drivers/firmware/tegra/bpmp-debugfs.c: In function 'bpmp_populate_debugfs_inband':include/linux/string.h:288:29: note: length computed here
288 | #define __underlying_strlen __builtin_strlen
| ^include/linux/string.h:321:10: note: in expansion of macro '__underlying_strlen'
321 | return __underlying_strlen(p);
Simplify this to use an snprintf() instead.
--- drivers/firmware/tegra/bpmp-debugfs.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
drivers/firmware/tegra/bpmp-debugfs.c +1 -5
@@ -412,16 +412,12 @@ static int bpmp_populate_debugfs_inband(struct tegra_bpmp *bpmp, goto out; } - len =strlen (ppath) +strlen (name) +1 ; + len =snprintf (pathbuf, pathlen,"%s%s/" , ppath, name);if (len >= pathlen) { err = -EINVAL ; goto out; } -strncpy (pathbuf, ppath, pathlen); -strncat (pathbuf, name,strlen (name)); -strcat (pathbuf,"/" ); - err =bpmp_populate_debugfs_inband (bpmp, dentry, pathbuf);if (err <0 )
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 89/717 drm/msm/dp: return correct connection status after suspend
In reply to Greg Kroah-HartmanFrom: Kuogee Hsieh <[email protected]>
[ Upstream commit 19e52bcb27c2ba140699d2230d722366d7d048a1 ]
During suspend, dp host controller and hpd block are disabled due to both ahb and aux clock are disabled. Therefore hpd plug/unplug interrupts will not be generated. At dp_pm_resume(), reinitialize both dp host controller and hpd block so that hpd plug/unplug interrupts will be generated and handled by driver so that hpd connection state is updated correctly. This patch will fix link training flaky issues.
Changes in v2:
-- use container_of to cast correct dp_display_private pointer
at both dp_pm_suspend() and dp_pm_resume().
Changes in v3:
-- replace hpd_state atomic_t with u32
Changes in v4
-- call dp_display_host_deinit() at dp_pm_suspend()
-- call dp_display_host_init() at msm_dp_display_enable() -- fix phy->init_count unbalance which causes link training failed
Changes in v5
-- add Fixes tag
--- drivers/gpu/drm/msm/dp/dp_catalog.c | 13 +++ drivers/gpu/drm/msm/dp/dp_catalog.h | 1 + drivers/gpu/drm/msm/dp/dp_ctrl.c | 5 + drivers/gpu/drm/msm/dp/dp_display.c | 144 +++++++++++++++------------- drivers/gpu/drm/msm/dp/dp_reg.h | 2 + 5 files changed, 97 insertions(+), 68 deletions(-)
drivers/gpu/drm/msm/dp/dp_catalog.c +13 -0
@@ -572,6 +572,19 @@ void dp_catalog_ctrl_hpd_config(struct dp_catalog *dp_catalog)dp_write_aux (catalog,REG_DP_DP_HPD_CTRL ,DP_DP_HPD_CTRL_HPD_EN ); } +u32 dp_catalog_hpd_get_state_status (struct dp_catalog *dp_catalog) +{ +struct dp_catalog_private *catalog =container_of (dp_catalog, + struct dp_catalog_private, dp_catalog); +u32 status; + + status =dp_read_aux (catalog,REG_DP_DP_HPD_INT_STATUS ); + status >>=DP_DP_HPD_STATE_STATUS_BITS_SHIFT ; + status &=DP_DP_HPD_STATE_STATUS_BITS_MASK ; + +return status; +} +u32 dp_catalog_hpd_get_intr_status (struct dp_catalog *dp_catalog) { struct dp_catalog_private *catalog = container_of(dp_catalog,
drivers/gpu/drm/msm/dp/dp_catalog.h +1 -0
@@ -97,6 +97,7 @@ void dp_catalog_ctrl_enable_irq(struct dp_catalog *dp_catalog, bool enable);void dp_catalog_hpd_config_intr (struct dp_catalog *dp_catalog,u32 intr_mask,bool en);void dp_catalog_ctrl_hpd_config (struct dp_catalog *dp_catalog); +u32 dp_catalog_hpd_get_state_status (struct dp_catalog *dp_catalog);u32 dp_catalog_hpd_get_intr_status (struct dp_catalog *dp_catalog);void dp_catalog_ctrl_phy_reset (struct dp_catalog *dp_catalog); int dp_catalog_ctrl_update_vx_px(struct dp_catalog *dp_catalog, u8 v_level,
drivers/gpu/drm/msm/dp/dp_ctrl.c +5 -0
@@ -1400,6 +1400,8 @@ int dp_ctrl_host_init(struct dp_ctrl *dp_ctrl, bool flip)void dp_ctrl_host_deinit (struct dp_ctrl *dp_ctrl) {struct dp_ctrl_private *ctrl; +struct dp_io *dp_io; +struct phy *phy;if (!dp_ctrl) {DRM_ERROR ("Invalid input data\n" );
@@ -1407,8 +1409,11 @@ void dp_ctrl_host_deinit(struct dp_ctrl *dp_ctrl) } ctrl = container_of(dp_ctrl, struct dp_ctrl_private, dp_ctrl); + dp_io = &ctrl->parser->io; + phy = dp_io->phy;dp_catalog_ctrl_enable_irq (ctrl->catalog, false); +phy_exit (phy);DRM_DEBUG_DP ("Host deinitialized successfully\n" ); }
drivers/gpu/drm/msm/dp/dp_display.c +76 -68
297 lines not on this page · raw message
drivers/gpu/drm/msm/dp/dp_reg.h +2 -0
@@ -32,6 +32,8 @@#define DP_DP_IRQ_HPD_INT_ACK (0x00000002)#define DP_DP_HPD_REPLUG_INT_ACK (0x00000004)#define DP_DP_HPD_UNPLUG_INT_ACK (0x00000008) +#define DP_DP_HPD_STATE_STATUS_BITS_MASK (0x0000000F) +#define DP_DP_HPD_STATE_STATUS_BITS_SHIFT (0x1C)#define REG_DP_DP_HPD_INT_MASK (0x0000000C)#define DP_DP_HPD_PLUG_INT_MASK (0x00000001)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 90/717 drm/msm/dp: skip checking LINK_STATUS_UPDATED bit
In reply to Greg Kroah-HartmanFrom: Kuogee Hsieh <[email protected]>
[ Upstream commit ea530388e64bd584645f2d89e40ca7dffade8eff ]
Some dongle will not clear LINK_STATUS_UPDATED bit after DPCD read which cause link training failed. This patch just read 6 bytes of DPCD link status from sink and return without checking LINK_STATUS_UPDATED bit.
Only 8 bits are used to represent link rate at sinker DPCD. The really link rate is 2.7Mb times the 8 bits value. For example, 0x0A at DPCD is equal to 2.7Gb (10 * 2.7Mb). This patch also convert 8 bits value of DPCD to really link rate to fix worng link rate error during phy compliance test.
--- drivers/gpu/drm/msm/dp/dp_ctrl.c | 20 ++++++-------------- drivers/gpu/drm/msm/dp/dp_link.c | 29 ++++++++++++++--------------- 2 files changed, 20 insertions(+), 29 deletions(-)
drivers/gpu/drm/msm/dp/dp_ctrl.c +6 -14
@@ -1061,23 +1061,15 @@ static bool dp_ctrl_train_pattern_set(struct dp_ctrl_private *ctrl,static int dp_ctrl_read_link_status (struct dp_ctrl_private *ctrl,u8 *link_status) { -int len =0 ; -u32 const offset =DP_LANE_ALIGN_STATUS_UPDATED -DP_LANE0_1_STATUS ; -u32 link_status_read_max_retries =100 ; - -while (--link_status_read_max_retries) { - len =drm_dp_dpcd_read_link_status (ctrl->aux, - link_status); -if (len !=DP_LINK_STATUS_SIZE ) { -DRM_ERROR ("DP link status read failed, err: %d\n" , len); -return len; - } +int ret =0 , len; -if (!(link_status[offset] &DP_LINK_STATUS_UPDATED )) -return 0 ; + len =drm_dp_dpcd_read_link_status (ctrl->aux, link_status); +if (len !=DP_LINK_STATUS_SIZE ) { +DRM_ERROR ("DP link status read failed, err: %d\n" , len); + ret = -EINVAL ; } -return -ETIMEDOUT ; +return ret; } static int dp_ctrl_link_train_1(struct dp_ctrl_private *ctrl,
drivers/gpu/drm/msm/dp/dp_link.c +14 -15
@@ -773,7 +773,8 @@ static int dp_link_process_link_training_request(struct dp_link_private *link) link->request.test_lane_count); link->dp_link.link_params.num_lanes = link->request.test_lane_count; - link->dp_link.link_params.rate = link->request.test_link_rate; + link->dp_link.link_params.rate = +drm_dp_bw_code_to_link_rate (link->request.test_link_rate);return 0 ; }
@@ -943,22 +944,20 @@ static u8 get_link_status(const u8 link_status[DP_LINK_STATUS_SIZE], int r)*/ static int dp_link_process_link_status_update (struct dp_link_private *link) { -if (!(get_link_status (link->link_status, -DP_LANE_ALIGN_STATUS_UPDATED ) & -DP_LINK_STATUS_UPDATED ) || - (drm_dp_clock_recovery_ok (link->link_status, - link->dp_link.link_params.num_lanes) && -drm_dp_channel_eq_ok (link->link_status, - link->dp_link.link_params.num_lanes))) -return -EINVAL ; +bool channel_eq_done =drm_dp_channel_eq_ok (link->link_status, + link->dp_link.link_params.num_lanes); -DRM_DEBUG_DP ("channel_eq_done = %d, clock_recovery_done = %d\n" , -drm_dp_clock_recovery_ok (link->link_status, - link->dp_link.link_params.num_lanes), -drm_dp_clock_recovery_ok (link->link_status, - link->dp_link.link_params.num_lanes)); +bool clock_recovery_done =drm_dp_clock_recovery_ok (link->link_status, + link->dp_link.link_params.num_lanes); -return 0 ; +DRM_DEBUG_DP ("channel_eq_done = %d, clock_recovery_done = %d\n" , + channel_eq_done, clock_recovery_done); + +if (channel_eq_done && clock_recovery_done) +return -EINVAL ; + + +return 0 ; }/**
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 91/717 drm/msm/dp: do not notify audio subsystem if sink doesnt support audio
In reply to Greg Kroah-HartmanFrom: Abhinav Kumar <[email protected]>
[ Upstream commit e8c765811b1064c200829eacf237ac8c25e79cd0 ]
For sinks that do not support audio, there is no need to notify audio subsystem of the connection event.
This will make sure that audio routes only to the primary display when connected to such sinks.
changes in v2:
- Added fixes tag
- Removed nested if condition and removed usage of global pointer
--- drivers/gpu/drm/msm/dp/dp_display.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/gpu/drm/msm/dp/dp_display.c +8 -1
@@ -563,7 +563,14 @@ static int dp_connect_pending_timeout(struct dp_display_private *dp, u32 data)static void dp_display_handle_plugged_change (struct msm_dp *dp_display,bool plugged) { -if (dp_display->plugged_cb && dp_display->codec_dev) +struct dp_display_private *dp; + + dp =container_of (dp_display, + struct dp_display_private, dp_display); + +/* notify audio subsystem only if sink supports audio */ +if (dp_display->plugged_cb && dp_display->codec_dev && + dp->audio_supported) dp_display->plugged_cb (dp_display->codec_dev, plugged); }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 92/717 selftests/run_kselftest.sh: fix dry-run typo
In reply to Greg Kroah-HartmanFrom: Hangbin Liu <[email protected]>
[ Upstream commit 93f20eff0cca972d74cb554a2e8b47730228be16 ]
Should be -d instead of -n for dry-run.
--- tools/testing/selftests/run_kselftest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/testing/selftests/run_kselftest.sh +1 -1
@@ -48,7 +48,7 @@ while true; do -l | --list) echo "$available" exit 0 ;; - -n | --dry-run) + -d | --dry-run) dryrun="echo" shift ;; -h | --help)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 93/717 selftest/bpf: Add missed ip6ip6 test back
In reply to Greg Kroah-HartmanFrom: Hangbin Liu <[email protected]>
[ Upstream commit 58cfa49c2ba7f815adccc27a775e7cf8a8f7f539 ]
In comment 173ca26e9b51 ("samples/bpf: add comprehensive ipip, ipip6, ip6ip6 test") we added ip6ip6 test for bpf tunnel testing. But in commit 933a741e3b82 ("selftests/bpf: bpf tunnel test.") when we moved it to the current folder, we didn't add it.
This patch add the ip6ip6 test back to bpf tunnel test. Update the ipip6's topology for both IPv4 and IPv6 testing. Since iperf test is removed as currect framework simplified it in purpose, I also removed unused tcp checkings in test_tunnel_kern.c.
--- .../selftests/bpf/progs/test_tunnel_kern.c | 42 +++--------------- tools/testing/selftests/bpf/test_tunnel.sh | 43 +++++++++++++++++-- 2 files changed, 46 insertions(+), 39 deletions(-)
tools/testing/selftests/bpf/progs/test_tunnel_kern.c +7 -35
@@ -15,7 +15,6 @@#include <linux/ip.h> #include <linux/ipv6.h> #include <linux/types.h> -#include <linux/tcp.h> #include <linux/socket.h> #include <linux/pkt_cls.h> #include <linux/erspan.h>
@@ -528,12 +527,11 @@ int _ipip_set_tunnel(struct __sk_buff *skb)struct bpf_tunnel_key key = {};void *data = (void *)(long )skb->data;struct iphdr *iph = data; -struct tcphdr *tcp = data +sizeof (*iph);void *data_end = (void *)(long )skb->data_end;int ret;/* single length check */ -if (data +sizeof (*iph) +sizeof (*tcp) > data_end) { +if (data +sizeof (*iph) > data_end) {ERROR (1 );return TC_ACT_SHOT ; }
@@ -541,16 +539,6 @@ int _ipip_set_tunnel(struct __sk_buff *skb) key.tunnel_ttl =64 ;if (iph->protocol ==IPPROTO_ICMP ) { key.remote_ipv4 =0xac100164 ;/* 172.16.1.100 */ - }else { -if (iph->protocol !=IPPROTO_TCP || iph->ihl !=5 ) -return TC_ACT_SHOT ; - -if (tcp->dest ==bpf_htons (5200 )) - key.remote_ipv4 =0xac100164 ;/* 172.16.1.100 */ -else if (tcp->dest ==bpf_htons (5201 )) - key.remote_ipv4 =0xac100165 ;/* 172.16.1.101 */ -else -return TC_ACT_SHOT ; } ret =bpf_skb_set_tunnel_key (skb, &key,sizeof (key),0 );
@@ -585,19 +573,20 @@ int _ipip6_set_tunnel(struct __sk_buff *skb)struct bpf_tunnel_key key = {};void *data = (void *)(long )skb->data;struct iphdr *iph = data; -struct tcphdr *tcp = data +sizeof (*iph);void *data_end = (void *)(long )skb->data_end;int ret;/* single length check */ -if (data +sizeof (*iph) +sizeof (*tcp) > data_end) { +if (data +sizeof (*iph) > data_end) {ERROR (1 );return TC_ACT_SHOT ; }__builtin_memset (&key,0x0 ,sizeof (key)); - key.remote_ipv6[3 ] =bpf_htonl (0x11 );/* ::11 */ key.tunnel_ttl =64 ; +if (iph->protocol ==IPPROTO_ICMP ) { + key.remote_ipv6[3 ] =bpf_htonl (0x11 );/* ::11 */ + } ret =bpf_skb_set_tunnel_key (skb, &key,sizeof (key),BPF_F_TUNINFO_IPV6 );
@@ -634,35 +623,18 @@ int _ip6ip6_set_tunnel(struct __sk_buff *skb)struct bpf_tunnel_key key = {};void *data = (void *)(long )skb->data;struct ipv6hdr *iph = data; -struct tcphdr *tcp = data +sizeof (*iph);void *data_end = (void *)(long )skb->data_end;int ret;/* single length check */ -if (data +sizeof (*iph) +sizeof (*tcp) > data_end) { +if (data +sizeof (*iph) > data_end) {ERROR (1 );return TC_ACT_SHOT ; } - key.remote_ipv6[0 ] =bpf_htonl (0x2401db00 ); key.tunnel_ttl =64 ; -if (iph->nexthdr ==58 /* NEXTHDR_ICMP */ ) { - key.remote_ipv6[3 ] =bpf_htonl (1 ); - }else { -if (iph->nexthdr !=6 /* NEXTHDR_TCP */ ) { -ERROR (iph->nexthdr); -return TC_ACT_SHOT ; - } - -if (tcp->dest ==bpf_htons (5200 )) { - key.remote_ipv6[3 ] =bpf_htonl (1 ); - }else if (tcp->dest ==bpf_htons (5201 )) { - key.remote_ipv6[3 ] =bpf_htonl (2 ); - }else { -ERROR (tcp->dest); -return TC_ACT_SHOT ; - } + key.remote_ipv6[3 ] =bpf_htonl (0x11 );/* ::11 */ } ret = bpf_skb_set_tunnel_key(skb, &key, sizeof(key),
tools/testing/selftests/bpf/test_tunnel.sh +39 -4
94 lines not on this page · raw message
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 94/717 ASoC: wm8994: Fix PM disable depth imbalance on error
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit b8161cbe55a1892a19a318eaebbda92438fa708c ]
The pm_runtime_enable will increase power disable depth. Thus a pairing decrement is needed on the error handling path to keep it balanced according to context.
--- sound/soc/codecs/wm8994.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
sound/soc/codecs/wm8994.c +5 -1
@@ -4645,8 +4645,12 @@ static int wm8994_probe(struct platform_device *pdev)pm_runtime_enable (&pdev->dev);pm_runtime_idle (&pdev->dev); -return devm_snd_soc_register_component (&pdev->dev, &soc_component_dev_wm8994, + ret =devm_snd_soc_register_component (&pdev->dev, &soc_component_dev_wm8994, wm8994_dai,ARRAY_SIZE (wm8994_dai)); +if (ret <0 ) +pm_runtime_disable (&pdev->dev); + +return ret; }static int wm8994_remove (struct platform_device *pdev)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 95/717 ASoC: wm8998: Fix PM disable depth imbalance on error
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 193aa0a043645220d2a2f783ba06ae13d4601078 ]
The pm_runtime_enable will increase power disable depth. Thus a pairing decrement is needed on the error handling path to keep it balanced according to context.
--- sound/soc/codecs/wm8998.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
sound/soc/codecs/wm8998.c +3 -1
@@ -1375,7 +1375,7 @@ static int wm8998_probe(struct platform_device *pdev) ret =arizona_init_spk_irqs (arizona);if (ret <0 ) -return ret; + goto err_pm_disable; ret = devm_snd_soc_register_component(&pdev->dev, &soc_component_dev_wm8998,
@@ -1390,6 +1390,8 @@ static int wm8998_probe(struct platform_device *pdev) err_spk_irqs:arizona_free_spk_irqs (arizona); +err_pm_disable: +pm_runtime_disable (&pdev->dev);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 96/717 spi: sprd: fix reference leak in sprd_spi_remove
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit e4062765bc2a41e025e29dd56bad798505036427 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in sprd_spi_remove, so we should fix it.
--- drivers/spi/spi-sprd.c | 1 + 1 file changed, 1 insertion(+)
drivers/spi/spi-sprd.c +1 -0
@@ -1010,6 +1010,7 @@ static int sprd_spi_remove(struct platform_device *pdev) ret =pm_runtime_get_sync (ss->dev);if (ret <0 ) { +pm_runtime_put_noidle (ss->dev);dev_err (ss->dev,"failed to resume SPI controller\n" );return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 97/717 virtiofs fix leak in setup
In reply to Greg Kroah-HartmanFrom: Miklos Szeredi <[email protected]>
[ Upstream commit 66ab33bf6d4341574f88b511e856a73f6f2a921e ]
This can be triggered for example by adding the "-omand" mount option, which will be rejected and virtio_fs_fill_super() will return an error.
In such a case the allocations for fuse_conn and fuse_mount will leak due to s_root not yet being set and so ->put_super() not being called.
--- fs/fuse/virtio_fs.c | 2 ++ 1 file changed, 2 insertions(+)
fs/fuse/virtio_fs.c +2 -0
@@ -1464,6 +1464,8 @@ static int virtio_fs_get_tree(struct fs_context *fsc)if (!sb->s_root) { err =virtio_fs_fill_super (sb, fsc);if (err) { +fuse_mount_put (fm); + sb->s_fs_info =NULL ;deactivate_locked_super (sb);return err; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 98/717 net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown
In reply to Greg Kroah-HartmanFrom: Vincent Bernat <[email protected]>
[ Upstream commit c0c5a60f0f1311bcf08bbe735122096d6326fb5b ]
Introduced in 0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.
Tested with:
ip link add type veth # veth0 + veth1
ip link add type veth # veth1 + veth2
ip link set up dev veth0
ip link set up dev veth1 # link-status paired with veth0
ip link set up dev veth2
ip link set up dev veth3 # link-status paired with veth2
# First available path
ip -4 addr add 203.0.113.${uts#H}/24 dev veth0
ip -6 addr add 2001:db8:1::${uts#H}/64 dev veth0
# Second available path
ip -4 addr add 192.0.2.${uts#H}/24 dev veth2
ip -6 addr add 2001:db8:2::${uts#H}/64 dev veth2
# More specific route through first path
ip -4 route add 198.51.100.0/25 via 203.0.113.254 # via veth0
ip -6 route add 2001:db8:3::/56 via 2001:db8:1::ff # via veth0
# Less specific route through second path
ip -4 route add 198.51.100.0/24 via 192.0.2.254 # via veth2
ip -6 route add 2001:db8:3::/48 via 2001:db8:2::ff # via veth2
# H1: enable on "all"
# H2: enable on "veth0"
for v in ipv4 ipv6; do
case $uts in
H1)
sysctl -qw net.${v}.conf.all.ignore_routes_with_linkdown=1
;;
H2)
sysctl -qw net.${v}.conf.veth0.ignore_routes_with_linkdown=1
;;
esac
done
set -xe
# When veth0 is up, best route is through veth0
ip -o route get 198.51.100.1 | grep -Fw veth0
ip -o route get 2001:db8:3::1 | grep -Fw veth0
# When veth0 is down, best route should be through veth2 on H1/H2,
# but on veth0 on H2
ip link set down dev veth1 # down veth0
ip route show
[ $uts != H3 ] || ip -o route get 198.51.100.1 | grep -Fw veth0
[ $uts != H3 ] || ip -o route get 2001:db8:3::1 | grep -Fw veth0
[ $uts = H3 ] || ip -o route get 198.51.100.1 | grep -Fw veth2
[ $uts = H3 ] || ip -o route get 2001:db8:3::1 | grep -Fw veth2Without this patch, the two last lines would fail on H1 (the one using the "all" sysctl). With the patch, everything succeeds as expected.
Also document the sysctl in ip-sysctl.rst.
--- Documentation/networking/ip-sysctl.rst | 3 +++ include/linux/inetdevice.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-)
Documentation/networking/ip-sysctl.rst +3 -0
@@ -1554,6 +1554,9 @@ igmpv3_unsolicited_report_interval - INTEGER Default: 1000 (1 seconds) +ignore_routes_with_linkdown - BOOLEAN + Ignore routes whose link is down when performing a FIB lookup. + promote_secondaries - BOOLEAN When a primary IP address is removed from this interface promote a corresponding secondary IP address instead of
include/linux/inetdevice.h +1 -1
@@ -126,7 +126,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev) IN_DEV_ORCONF((in_dev), ACCEPT_REDIRECTS)))#define IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN (in_dev) \ - IN_DEV_CONF_GET((in_dev), IGNORE_ROUTES_WITH_LINKDOWN) + IN_DEV_ORCONF((in_dev), IGNORE_ROUTES_WITH_LINKDOWN)#define IN_DEV_ARPFILTER (in_dev) IN_DEV_ORCONF((in_dev), ARPFILTER)#define IN_DEV_ARP_ACCEPT (in_dev) IN_DEV_ORCONF((in_dev), ARP_ACCEPT)
Signature · 1 line
2.27.0
Re: [PATCH 5.10 098/717] net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown
Quoted 9 lines · On Mon, 28 Dec 2020 13:41:36 +0100 Greg Kroah-Hartman wrote:
From: Vincent Bernat <[email protected]>
[ Upstream commit
c0c5a60f0f1311bcf08bbe735122096d6326fb5b]Introduced in
0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.
I'd recommend to drop 98 and 99, at least for now.
The kernel always behaved this way, and it remains to be seen if anyone depended on that (mis) behavior.
This needs to hit a real release.
Sasha Levin
maintainerRe: [PATCH 5.10 098/717] net: evaluate net.ipvX.conf.all.ignore_routes_with_linkdown
Quoted 11 lines · Jakub Kicinski
Quoted 9 lines · On Mon, 28 Dec 2020 13:41:36 +0100 Greg Kroah-Hartman wrote:
From: Vincent Bernat <[email protected]>
[ Upstream commit
c0c5a60f0f1311bcf08bbe735122096d6326fb5b]Introduced in
0eeb075fad73, the "ignore_routes_with_linkdown" sysctl ignores a route whose interface is down. It is provided as a per-interface sysctl. However, while a "all" variant is exposed, it was a noop since it was never evaluated. We use the usual "or" logic for this kind of sysctls.
Quoted 6 lines
I'd recommend to drop 98 and 99, at least for now.
The kernel always behaved this way, and it remains to be seen if anyone depended on that (mis) behavior.
This needs to hit a real release.
I'll drop it.
Signature · 2 lines
Thanks, Sasha
Greg Kroah-Hartman
maintainerPATCH 99/717 net: evaluate net.ipv4.conf.all.proxy_arp_pvlan
In reply to Greg Kroah-HartmanFrom: Vincent Bernat <[email protected]>
[ Upstream commit 1af5318c00a8acc33a90537af49b3f23f72a2c4b ]
Introduced in 65324144b50b, the "proxy_arp_vlan" sysctl is a per-interface sysctl to tune proxy ARP support for private VLANs. While the "all" variant is exposed, it was a noop and never evaluated. We use the usual "or" logic for this kind of sysctls.
--- include/linux/inetdevice.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/linux/inetdevice.h +1 -1
@@ -105,7 +105,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)#define IN_DEV_LOG_MARTIANS (in_dev) IN_DEV_ORCONF((in_dev), LOG_MARTIANS)#define IN_DEV_PROXY_ARP (in_dev) IN_DEV_ORCONF((in_dev), PROXY_ARP) -#define IN_DEV_PROXY_ARP_PVLAN (in_dev) IN_DEV_CONF_GET(in_dev, PROXY_ARP_PVLAN) +#define IN_DEV_PROXY_ARP_PVLAN (in_dev) IN_DEV_ORCONF((in_dev), PROXY_ARP_PVLAN)#define IN_DEV_SHARED_MEDIA (in_dev) IN_DEV_ORCONF((in_dev), SHARED_MEDIA)#define IN_DEV_TX_REDIRECTS (in_dev) IN_DEV_ORCONF((in_dev), SEND_REDIRECTS)#define IN_DEV_SEC_REDIRECTS (in_dev) IN_DEV_ORCONF((in_dev), \
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 100/717 ASoC: arizona: Fix a wrong free in wm8997_probe
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 5e7aace13df24ff72511f29c14ebbfe638ef733c ]
In the normal path, we should not free the arizona, we should return immediately. It will be free when call remove operation.
--- sound/soc/codecs/wm8997.c | 2 ++ 1 file changed, 2 insertions(+)
sound/soc/codecs/wm8997.c +2 -0
@@ -1177,6 +1177,8 @@ static int wm8997_probe(struct platform_device *pdev) goto err_spk_irqs; } +return ret; + err_spk_irqs:arizona_free_spk_irqs (arizona);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 101/717 RDMa/mthca: Work around -Wenum-conversion warning
In reply to Greg Kroah-HartmanFrom: Arnd Bergmann <[email protected]>
[ Upstream commit fbb7dc5db6dee553b5a07c27e86364a5223e244c ]
gcc points out a suspicious mixing of enum types in a function that converts from MTHCA_OPCODE_* values to IB_WC_* values:
drivers/infiniband/hw/mthca/mthca_cq.c: In function 'mthca_poll_one':drivers/infiniband/hw/mthca/mthca_cq.c:607:21: warning: implicit conversion from 'enum <anonymous>' to 'enum ib_wc_opcode' [-Wenum-conversion]
607 | entry->opcode = MTHCA_OPCODE_INVALID;
Nothing seems to ever check for MTHCA_OPCODE_INVALID again, no idea if this is meaningful, but it seems harmless as it deals with an invalid input.
Remove MTHCA_OPCODE_INVALID and set the ib_wc_opcode to 0xFF, which is still bogus, but at least doesn't make compiler warnings.
--- drivers/infiniband/hw/mthca/mthca_cq.c | 2 +- drivers/infiniband/hw/mthca/mthca_dev.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-)
drivers/infiniband/hw/mthca/mthca_cq.c +1 -1
@@ -604,7 +604,7 @@ static inline int mthca_poll_one(struct mthca_dev *dev, entry->byte_len =MTHCA_ATOMIC_BYTE_LEN ;break ;default : - entry->opcode =MTHCA_OPCODE_INVALID ; + entry->opcode =0xFF ;break ; } }else {
drivers/infiniband/hw/mthca/mthca_dev.h +0 -1
@@ -105,7 +105,6 @@ enum {MTHCA_OPCODE_ATOMIC_CS =0x11 ,MTHCA_OPCODE_ATOMIC_FA =0x12 , MTHCA_OPCODE_BIND_MW = 0x18, -MTHCA_OPCODE_INVALID =0xff }; enum {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 102/717 ASoC: SOF: Intel: fix Kconfig dependency for SND_INTEL_DSP_CONFIG
In reply to Greg Kroah-HartmanFrom: Pierre-Louis Bossart <[email protected]>
[ Upstream commit 358f0ac1f2791c80c19cc26706cf34664c9fd756 ]
SND_INTEL_DSP_CONFIG is selected by the HDaudio, Skylake and SOF drivers. When the HDaudio link is not selected as a option, this Kconfig option is not touched and will default to whatever other drivers selected. In the case e.g. where HDaudio is compiled as built-in, the linker will complain:
ld: sound/soc/sof/sof-pci-dev.o: in function `sof_pci_probe':
sof-pci-dev.c:(.text+0x5c): undefined reference to `snd_intel_dsp_driver_probe'
Adding the select for all HDaudio platforms, regardless of whether they rely on the HDaudio link or not, solves the problem.
--- sound/soc/sof/intel/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/sof/intel/Kconfig +1 -1
@@ -271,6 +271,7 @@ config SND_SOC_SOF_JASPERLAKE config SND_SOC_SOF_HDA_COMMON tristate + select SND_INTEL_DSP_CONFIG select SND_SOC_SOF_INTEL_COMMON select SND_SOC_SOF_HDA_LINK_BASELINE help
@@ -330,7 +331,6 @@ config SND_SOC_SOF_HDA tristate select SND_HDA_EXT_CORE if SND_SOC_SOF_HDA_LINK select SND_SOC_HDAC_HDA if SND_SOC_SOF_HDA_AUDIO_CODEC - select SND_INTEL_DSP_CONFIG help This option is not user-selectable but automagically handled by 'select' statements at a higher level
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 103/717 arm64: dts: ti: k3-am65*/j721e*: Fix unit address format error for dss node
In reply to Greg Kroah-HartmanFrom: Nishanth Menon <[email protected]>
[ Upstream commit cfbf17e69ae82f647c287366b7573e532fc281ee ]
Fix the node address to follow the device tree convention.
This fixes the dtc warning:
<stdout>: Warning (simple_bus_reg): /bus@100000/dss@04a00000: simple-bus unit address format error, expected "4a00000"
--- arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 2 +- arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/ti/k3-am65-main.dtsi +1 -1
@@ -834,7 +834,7 @@ }; }; - dss: dss@04a00000 { + dss: dss@4a00000 { compatible = "ti,am65x-dss"; reg = <0x0 0x04a00000 0x0 0x1000>, /* common */ <0x0 0x04a02000 0x0 0x1000>, /* vidl1 */
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi +1 -1
@@ -1278,7 +1278,7 @@ }; }; - dss: dss@04a00000 { + dss: dss@4a00000 { compatible = "ti,j721e-dss"; reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 104/717 MIPS: BCM47XX: fix kconfig dependency bug for BCM47XX_BCMA
In reply to Greg Kroah-HartmanFrom: Necip Fazil Yildiran <[email protected]>
[ Upstream commit 3a5fe2fb9635c43359c9729352f45044f3c8df6b ]
When BCM47XX_BCMA is enabled and BCMA_DRIVER_PCI is disabled, it results in the following Kbuild warning:
WARNING: unmet direct dependencies detected for BCMA_DRIVER_PCI_HOSTMODE
Depends on [n]: MIPS [=y] && BCMA_DRIVER_PCI [=n] && PCI_DRIVERS_LEGACY [=y] && BCMA [=y]=y Selected by [y]:
- BCM47XX_BCMA [=y] && BCM47XX [=y] && PCI [=y]
The reason is that BCM47XX_BCMA selects BCMA_DRIVER_PCI_HOSTMODE without depending on or selecting BCMA_DRIVER_PCI while BCMA_DRIVER_PCI_HOSTMODE depends on BCMA_DRIVER_PCI. This can also fail building the kernel.
Honor the kconfig dependency to remove unmet direct dependency warnings and avoid any potential build failures.
--- arch/mips/bcm47xx/Kconfig | 1 + 1 file changed, 1 insertion(+)
arch/mips/bcm47xx/Kconfig +1 -0
@@ -27,6 +27,7 @@ config BCM47XX_BCMA select BCMA select BCMA_HOST_SOC select BCMA_DRIVER_MIPS + select BCMA_DRIVER_PCI if PCI select BCMA_DRIVER_PCI_HOSTMODE if PCI select BCMA_DRIVER_GPIO default y
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 105/717 drm/amdgpu: fix compute queue priority if num_kcq is less than 4
In reply to Greg Kroah-HartmanFrom: Nirmoy Das <[email protected]>
[ Upstream commit 3f66bf401e9fde1c35bb8b02dd7975659c40411d ]
Compute queues are configurable with module param, num_kcq. amdgpu_gfx_is_high_priority_compute_queue was setting 1st 4 queues to high priority queue leaving a null drm scheduler in adev->gpu_sched[hw_ip]["normal_prio"].sched if num_kcq < 5.
This patch tries to fix it by alternating compute queue priority between normal and high priority.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 +++++++--- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 6 ++++-- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 6 ++++-- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 7 +++++-- 5 files changed, 21 insertions(+), 10 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +7 -3
@@ -193,10 +193,14 @@ static bool amdgpu_gfx_is_multipipe_capable(struct amdgpu_device *adev) }bool amdgpu_gfx_is_high_priority_compute_queue (struct amdgpu_device *adev, -int queue) +int pipe,int queue) { -/* Policy: make queue 0 of each pipe as high priority compute queue */ -return (queue ==0 ); +bool multipipe_policy =amdgpu_gfx_is_multipipe_capable (adev); +int cond; +/* Policy: alternate between normal and high priority */ + cond = multipipe_policy ? pipe : queue; + +return ((cond %2 ) !=0 ); }
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +1 -1
@@ -373,7 +373,7 @@ void amdgpu_queue_mask_bit_to_mec_queue(struct amdgpu_device *adev, int bit,bool amdgpu_gfx_is_mec_queue_enabled (struct amdgpu_device *adev,int mec,int pipe,int queue);bool amdgpu_gfx_is_high_priority_compute_queue (struct amdgpu_device *adev, -int queue); +int pipe,int queue);int amdgpu_gfx_me_queue_to_bit (struct amdgpu_device *adev,int me,int pipe,int queue); void amdgpu_gfx_bit_to_me_queue(struct amdgpu_device *adev, int bit,
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +4 -2
@@ -4334,7 +4334,8 @@ static int gfx_v10_0_compute_ring_init(struct amdgpu_device *adev, int ring_id, irq_type =AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me -1 ) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue) ? + hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->pipe, + ring->queue) ?AMDGPU_GFX_PIPE_PRIO_HIGH :AMDGPU_GFX_PIPE_PRIO_NORMAL ;/* type-2 packets are deprecated on MEC, use type-3 instead */ r = amdgpu_ring_init(adev, ring, 1024,
@@ -6360,7 +6361,8 @@ static void gfx_v10_0_compute_mqd_set_priority(struct amdgpu_ring *ring, structstruct amdgpu_device *adev = ring->adev;if (ring->funcs->type ==AMDGPU_RING_TYPE_COMPUTE ) { -if (amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue)) { +if (amdgpu_gfx_is_high_priority_compute_queue (adev, ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority =AMDGPU_GFX_PIPE_PRIO_HIGH ; mqd->cp_hqd_queue_priority =AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM ;
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +4 -2
@@ -1915,7 +1915,8 @@ static int gfx_v8_0_compute_ring_init(struct amdgpu_device *adev, int ring_id, + ((ring->me -1 ) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue) ? + hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->pipe, + ring->queue) ?AMDGPU_GFX_PIPE_PRIO_HIGH :AMDGPU_RING_PRIO_DEFAULT ;/* type-2 packets are deprecated on MEC, use type-3 instead */ r = amdgpu_ring_init(adev, ring, 1024,
@@ -4433,7 +4434,8 @@ static void gfx_v8_0_mqd_set_priority(struct amdgpu_ring *ring, struct vi_mqd *mstruct amdgpu_device *adev = ring->adev;if (ring->funcs->type ==AMDGPU_RING_TYPE_COMPUTE ) { -if (amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue)) { +if (amdgpu_gfx_is_high_priority_compute_queue (adev, ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority =AMDGPU_GFX_PIPE_PRIO_HIGH ; mqd->cp_hqd_queue_priority =AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM ;
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +5 -2
@@ -2228,7 +2228,8 @@ static int gfx_v9_0_compute_ring_init(struct amdgpu_device *adev, int ring_id, irq_type =AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me -1 ) * adev->gfx.mec.num_pipe_per_mec) + ring->pipe; - hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue) ? + hw_prio =amdgpu_gfx_is_high_priority_compute_queue (adev, ring->pipe, + ring->queue) ?AMDGPU_GFX_PIPE_PRIO_HIGH :AMDGPU_GFX_PIPE_PRIO_NORMAL ;/* type-2 packets are deprecated on MEC, use type-3 instead */ return amdgpu_ring_init(adev, ring, 1024,
@@ -3383,7 +3384,9 @@ static void gfx_v9_0_mqd_set_priority(struct amdgpu_ring *ring, struct v9_mqd *mstruct amdgpu_device *adev = ring->adev;if (ring->funcs->type ==AMDGPU_RING_TYPE_COMPUTE ) { -if (amdgpu_gfx_is_high_priority_compute_queue (adev, ring->queue)) { +if (amdgpu_gfx_is_high_priority_compute_queue (adev, + ring->pipe, + ring->queue)) { mqd->cp_hqd_pipe_priority =AMDGPU_GFX_PIPE_PRIO_HIGH ; mqd->cp_hqd_queue_priority =AMDGPU_GFX_QUEUE_PRIORITY_MAXIMUM ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 106/717 soc: ti: omap-prm: Do not check rstst bit on deassert if already deasserted
In reply to Greg Kroah-HartmanFrom: Tony Lindgren <[email protected]>
[ Upstream commit c1995e5afaf6abf3922b5395ad1f4096951e3276 ]
If a rstctrl reset bit is already deasserted, we can just bail out early not wait for rstst to clear. Otherwise we can have deassert fail for already deasserted resets.
--- drivers/soc/ti/omap_prm.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/soc/ti/omap_prm.c +4 -0
@@ -484,6 +484,10 @@ static int omap_reset_deassert(struct reset_controller_dev *rcdev,struct ti_prm_platform_data *pdata =dev_get_platdata (reset->dev);int ret =0 ; +/* Nothing to do if the reset is already deasserted */ +if (!omap_reset_status (rcdev, id)) +return 0 ; + has_rstst = reset->prm->data->rstst || (reset->prm->data->flags &OMAP_PRM_HAS_RSTST );
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 107/717 crypto: Kconfig - CRYPTO_MANAGER_EXTRA_TESTS requires the manager
In reply to Greg Kroah-HartmanFrom: Jason A. Donenfeld <[email protected]>
[ Upstream commit 6569e3097f1c4a490bdf2b23d326855e04942dfd ]
The extra tests in the manager actually require the manager to be selected too. Otherwise the linker gives errors like:
ld: arch/x86/crypto/chacha_glue.o: in function `chacha_simd_stream_xor':
chacha_glue.c:(.text+0x422): undefined reference to `crypto_simd_disabled_for_test'
--- crypto/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
crypto/Kconfig +1 -1
@@ -145,7 +145,7 @@ config CRYPTO_MANAGER_DISABLE_TESTS config CRYPTO_MANAGER_EXTRA_TESTS bool "Enable extra run-time crypto self tests" - depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS + depends on DEBUG_KERNEL && !CRYPTO_MANAGER_DISABLE_TESTS && CRYPTO_MANAGER help Enable extra run-time self tests of registered crypto algorithms, including randomized fuzz tests.
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 108/717 crypto: qat - fix status check in qat_hal_put_rel_rd_xfer()
In reply to Greg Kroah-HartmanFrom: Jack Xu <[email protected]>
[ Upstream commit 3b5c130fb2e4c045369791c33c83b59f6e84f7d6 ]
The return value of qat_hal_rd_ae_csr() is always a CSR value and never a status and should not be stored in the status variable of qat_hal_put_rel_rd_xfer().
This removes the assignment as qat_hal_rd_ae_csr() is not expected to fail.
A more comprehensive handling of the theoretical corner case which could result in a fail will be submitted in a separate patch.
--- drivers/crypto/qat/qat_common/qat_hal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/crypto/qat/qat_common/qat_hal.c +1 -1
@@ -1146,7 +1146,7 @@ static int qat_hal_put_rel_rd_xfer(struct icp_qat_fw_loader_handle *handle,unsigned short mask;unsigned short dr_offset =0x10 ; - status = ctx_enables =qat_hal_rd_ae_csr (handle, ae,CTX_ENABLES ); + ctx_enables =qat_hal_rd_ae_csr (handle, ae,CTX_ENABLES );if (CE_INUSE_CONTEXTS & ctx_enables) {if (ctx &0x1 ) {pr_err ("QAT: bad 4-ctx mode,ctx=0x%x\n" , ctx);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 109/717 firmware: arm_scmi: Fix missing destroy_workqueue()
In reply to Greg Kroah-HartmanFrom: Qinglang Miao <[email protected]>
[ Upstream commit 6bbdb46c4b1bd57839c9c0a110bd81b0be0a4046 ]
destroy_workqueue is required before the return from scmi_notification_init in case devm_kcalloc fails to allocate registered_protocols. Fix this by simply moving registered_protocols allocation before alloc_workqueue.
--- drivers/firmware/arm_scmi/notify.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/firmware/arm_scmi/notify.c +5 -5
@@ -1474,17 +1474,17 @@ int scmi_notification_init(struct scmi_handle *handle) ni->gid = gid; ni->handle = handle; + ni->registered_protocols =devm_kcalloc (handle->dev,SCMI_MAX_PROTO , +sizeof (char *),GFP_KERNEL ); +if (!ni->registered_protocols) + goto err; + ni->notify_wq =alloc_workqueue (dev_name (handle->dev),WQ_UNBOUND |WQ_FREEZABLE |WQ_SYSFS ,0 );if (!ni->notify_wq) goto err; - ni->registered_protocols =devm_kcalloc (handle->dev,SCMI_MAX_PROTO , -sizeof (char *),GFP_KERNEL ); -if (!ni->registered_protocols) - goto err; -mutex_init (&ni->pending_mtx);hash_init (ni->pending_events_handlers);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 110/717 drm/udl: Fix missing error code in udl_handle_damage()
In reply to Greg Kroah-HartmanFrom: Dan Carpenter <[email protected]>
[ Upstream commit a7319c8f50c5e93a12997e2d0821a2f7946fb734 ]
If udl_get_urb() fails then this should return a negative error code but currently it returns success.
--- drivers/gpu/drm/udl/udl_modeset.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/gpu/drm/udl/udl_modeset.c +3 -1
@@ -303,8 +303,10 @@ static int udl_handle_damage(struct drm_framebuffer *fb, int x, int y, } urb =udl_get_urb (dev); -if (!urb) +if (!urb) { + ret = -ENOMEM ; goto out_drm_gem_shmem_vunmap; + } cmd = urb->transfer_buffer;for (i = clip.y1; i < clip.y2; i++) {
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 111/717 staging: greybus: codecs: Fix reference counter leak in error handling
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 3952659a6108f77a0d062d8e8487bdbdaf52a66c ]
gb_pm_runtime_get_sync has increased the usage counter of the device here. Forgetting to call gb_pm_runtime_put_noidle will result in usage counter leak in the error branch of (gbcodec_hw_params and gbcodec_prepare). We fixed it by adding it.
--- drivers/staging/greybus/audio_codec.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/staging/greybus/audio_codec.c +2 -0
@@ -490,6 +490,7 @@ static int gbcodec_hw_params(struct snd_pcm_substream *substream,if (ret) {dev_err_ratelimited (dai->dev,"%d: Error during set_config\n" , ret); +gb_pm_runtime_put_noidle (bundle);mutex_unlock (&codec->lock);return ret; }
@@ -566,6 +567,7 @@ static int gbcodec_prepare(struct snd_pcm_substream *substream,break ; }if (ret) { +gb_pm_runtime_put_noidle (bundle);mutex_unlock (&codec->lock);dev_err_ratelimited (dai->dev,"set_data_size failed:%d\n" , ret);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 112/717 staging: gasket: interrupt: fix the missed eventfd_ctx_put() in gasket_interrupt.c
In reply to Greg Kroah-HartmanFrom: Jing Xiangfeng <[email protected]>
[ Upstream commit ab5b769a23af12a675b9f3d7dd529250c527f5ac ]
gasket_interrupt_set_eventfd() misses to call eventfd_ctx_put() in an error path. We check interrupt is valid before calling eventfd_ctx_fdget() to fix it.
There is the same issue in gasket_interrupt_clear_eventfd(), Add the missed function call to fix it.
--- drivers/staging/gasket/gasket_interrupt.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
drivers/staging/gasket/gasket_interrupt.c +10 -5
@@ -487,14 +487,16 @@ int gasket_interrupt_system_status(struct gasket_dev *gasket_dev)int gasket_interrupt_set_eventfd (struct gasket_interrupt_data *interrupt_data,int interrupt,int event_fd) { -struct eventfd_ctx *ctx =eventfd_ctx_fdget (event_fd); - -if (IS_ERR (ctx)) -return PTR_ERR (ctx); +struct eventfd_ctx *ctx;if (interrupt <0 || interrupt >= interrupt_data->num_interrupts)return -EINVAL ; + ctx =eventfd_ctx_fdget (event_fd); + +if (IS_ERR (ctx)) +return PTR_ERR (ctx); + interrupt_data->eventfd_ctxs[interrupt] = ctx;return 0 ; }
@@ -505,6 +507,9 @@ int gasket_interrupt_clear_eventfd(struct gasket_interrupt_data *interrupt_data,if (interrupt <0 || interrupt >= interrupt_data->num_interrupts)return -EINVAL ; - interrupt_data->eventfd_ctxs[interrupt] =NULL ; +if (interrupt_data->eventfd_ctxs[interrupt]) { +eventfd_ctx_put (interrupt_data->eventfd_ctxs[interrupt]); + interrupt_data->eventfd_ctxs[interrupt] =NULL ; + }return 0 ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 113/717 scripts: kernel-doc: Restore anonymous enum parsing
In reply to Greg Kroah-HartmanFrom: Andy Shevchenko <[email protected]>
[ Upstream commit ae5b17e464146ddb8fee744fa2150922d6072916 ]
The commit d38c8cfb0571 ("scripts: kernel-doc: add support for typedef enum") broke anonymous enum parsing. Restore it by relying on members rather than its name.
--- scripts/kernel-doc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/kernel-doc +1 -1
@@ -1390,7 +1390,7 @@ sub dump_enum($$) { $members = $2; } - if ($declaration_name) { + if ($members) { my %_members; $members =~ s/\s+$//;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 114/717 drm/amdkfd: Put ACPI table after using it
In reply to Greg Kroah-HartmanFrom: Hanjun Guo <[email protected]>
[ Upstream commit c4cb773c702be5519442c8375a6476d08fe2cb46 ]
The acpi_get_table() should be coupled with acpi_put_table() if the mapped table is not used at runtime to release the table mapping which can prevent the memory leak.
In kfd_create_crat_image_acpi(), crat_table is copied to pcrat_image, and in kfd_create_vcrat_image_cpu(), the acpi_table is only used to get the OEM information, so those two table mappings need to be released after using it.
--- drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +9 -4
@@ -774,6 +774,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)struct acpi_table_header *crat_table;acpi_status status;void *pcrat_image; +int rc =0 ;if (!crat_image)return -EINVAL ;
@@ -798,14 +799,17 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size) } pcrat_image =kvmalloc (crat_table->length,GFP_KERNEL ); -if (!pcrat_image) -return -ENOMEM ; +if (!pcrat_image) { + rc = -ENOMEM ; + goto out; + }memcpy (pcrat_image, crat_table, crat_table->length); *crat_image = pcrat_image; *size = crat_table->length; - -return 0 ; +out: +acpi_put_table (crat_table); +return rc; }/* Memory required to create Virtual CRAT.
@@ -988,6 +992,7 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size) CRAT_OEMID_LENGTH);memcpy (crat_table->oem_table_id, acpi_table->oem_table_id,CRAT_OEMTABLEID_LENGTH ); +acpi_put_table (acpi_table); } crat_table->total_entries =0 ; crat_table->num_domains =0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 115/717 ionic: use mc sync for multicast filters
In reply to Greg Kroah-HartmanFrom: Shannon Nelson <[email protected]>
[ Upstream commit e0243e1966592859da4c6ffe6d43e1576ec3c457 ]
We should be using the multicast sync routines for the multicast filters. Also, let's just flatten the logic a bit and pull the small unicast routine back into ionic_set_rx_mode().
--- .../net/ethernet/pensando/ionic/ionic_lif.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +8 -11
@@ -1149,15 +1149,6 @@ static void _ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode, } } -static void ionic_dev_uc_sync (struct net_device *netdev,bool from_ndo) -{ -if (from_ndo) -__dev_uc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); -else -__dev_uc_sync (netdev, ionic_addr_add, ionic_addr_del); - -} -static void ionic_set_rx_mode (struct net_device *netdev,bool from_ndo) {struct ionic_lif *lif =netdev_priv (netdev);
@@ -1177,7 +1168,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)* we remove our overflow flag and check the netdev flags * to see if we can disable NIC PROMISC */ -ionic_dev_uc_sync (netdev, from_ndo); +if (from_ndo) +__dev_uc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); +else +__dev_uc_sync (netdev, ionic_addr_add, ionic_addr_del); nfilters =le32_to_cpu (lif->identity->eth.max_ucast_filters);if (netdev_uc_count (netdev) +1 > nfilters) { rx_mode |=IONIC_RX_MODE_F_PROMISC ;
@@ -1189,7 +1183,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo) }/* same for multicast */ -ionic_dev_uc_sync (netdev, from_ndo); +if (from_ndo) +__dev_mc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); +else +__dev_mc_sync (netdev, ionic_addr_add, ionic_addr_del); nfilters =le32_to_cpu (lif->identity->eth.max_mcast_filters);if (netdev_mc_count (netdev) > nfilters) { rx_mode |=IONIC_RX_MODE_F_ALLMULTI ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 116/717 ionic: flatten calls to ionic_lif_rx_mode
In reply to Greg Kroah-HartmanFrom: Shannon Nelson <[email protected]>
[ Upstream commit e94f76bb206333efcd0c02da5dbb142518c941a2 ]
The _ionic_lif_rx_mode() is only used once and really doesn't need to be broken out.
--- .../net/ethernet/pensando/ionic/ionic_lif.c | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +16 -22
@@ -1129,29 +1129,10 @@ static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode) lif->rx_mode = rx_mode; } -static void _ionic_lif_rx_mode (struct ionic_lif *lif,unsigned int rx_mode, -bool from_ndo) -{ -struct ionic_deferred_work *work; - -if (from_ndo) { - work =kzalloc (sizeof (*work),GFP_ATOMIC ); -if (!work) { -netdev_err (lif->netdev,"%s OOM\n" , __func__); -return ; - } - work->type =IONIC_DW_TYPE_RX_MODE ; - work->rx_mode = rx_mode; -netdev_dbg (lif->netdev,"deferred: rx_mode\n" ); -ionic_lif_deferred_enqueue (&lif->deferred, work); - }else { -ionic_lif_rx_mode (lif, rx_mode); - } -} -static void ionic_set_rx_mode (struct net_device *netdev,bool from_ndo) {struct ionic_lif *lif =netdev_priv (netdev); +struct ionic_deferred_work *work;unsigned int nfilters;unsigned int rx_mode;
@@ -1197,8 +1178,21 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo) rx_mode &= ~IONIC_RX_MODE_F_ALLMULTI ; } -if (lif->rx_mode != rx_mode) -_ionic_lif_rx_mode (lif, rx_mode, from_ndo); +if (lif->rx_mode != rx_mode) { +if (from_ndo) { + work =kzalloc (sizeof (*work),GFP_ATOMIC ); +if (!work) { +netdev_err (lif->netdev,"%s OOM\n" , __func__); +return ; + } + work->type =IONIC_DW_TYPE_RX_MODE ; + work->rx_mode = rx_mode; +netdev_dbg (lif->netdev,"deferred: rx_mode\n" ); +ionic_lif_deferred_enqueue (&lif->deferred, work); + }else { +ionic_lif_rx_mode (lif, rx_mode); + } + } }static void ionic_ndo_set_rx_mode (struct net_device *netdev)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 117/717 ionic: change set_rx_mode from_ndo to can_sleep
In reply to Greg Kroah-HartmanFrom: Shannon Nelson <[email protected]>
[ Upstream commit 81dbc24147f9250c186ae5875b3ed3136e9e293b ]
Instead of having two different ways of expressing the same sleepability concept, using opposite logic, we can rework the from_ndo to can_sleep for a more consistent usage.
--- .../net/ethernet/pensando/ionic/ionic_lif.c | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/net/ethernet/pensando/ionic/ionic_lif.c +10 -10
@@ -1129,7 +1129,7 @@ static void ionic_lif_rx_mode(struct ionic_lif *lif, unsigned int rx_mode) lif->rx_mode = rx_mode; } -static void ionic_set_rx_mode (struct net_device *netdev,bool from_ndo) +static void ionic_set_rx_mode (struct net_device *netdev,bool can_sleep) {struct ionic_lif *lif =netdev_priv (netdev);struct ionic_deferred_work *work;
@@ -1149,10 +1149,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)* we remove our overflow flag and check the netdev flags * to see if we can disable NIC PROMISC */ -if (from_ndo) -__dev_uc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); -else +if (can_sleep)__dev_uc_sync (netdev, ionic_addr_add, ionic_addr_del); +else +__dev_uc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); nfilters =le32_to_cpu (lif->identity->eth.max_ucast_filters);if (netdev_uc_count (netdev) +1 > nfilters) { rx_mode |=IONIC_RX_MODE_F_PROMISC ;
@@ -1164,10 +1164,10 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo) }/* same for multicast */ -if (from_ndo) -__dev_mc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); -else +if (can_sleep)__dev_mc_sync (netdev, ionic_addr_add, ionic_addr_del); +else +__dev_mc_sync (netdev, ionic_ndo_addr_add, ionic_ndo_addr_del); nfilters =le32_to_cpu (lif->identity->eth.max_mcast_filters);if (netdev_mc_count (netdev) > nfilters) { rx_mode |=IONIC_RX_MODE_F_ALLMULTI ;
@@ -1179,7 +1179,7 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo) }if (lif->rx_mode != rx_mode) { -if (from_ndo) { +if (!can_sleep) { work =kzalloc (sizeof (*work),GFP_ATOMIC );if (!work) {netdev_err (lif->netdev,"%s OOM\n" , __func__);
@@ -1197,7 +1197,7 @@ static void ionic_set_rx_mode(struct net_device *netdev, bool from_ndo)static void ionic_ndo_set_rx_mode (struct net_device *netdev) { -ionic_set_rx_mode (netdev, true); +ionic_set_rx_mode (netdev, false); }static __le64 ionic_netdev_features_to_nic (netdev_features_t features)
@@ -1764,7 +1764,7 @@ static int ionic_txrx_init(struct ionic_lif *lif)if (lif->netdev->features &NETIF_F_RXHASH )ionic_lif_rss_init (lif); -ionic_set_rx_mode (lif->netdev, false); +ionic_set_rx_mode (lif->netdev, true);return 0 ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 118/717 media: tm6000: Fix sizeof() mismatches
In reply to Greg Kroah-HartmanFrom: Colin Ian King <[email protected]>
[ Upstream commit a08ad6339e0441ca12533969ed94a87e3655426e ]
The are two instances of sizeof() being used incorrectly. The sizeof(void *) is incorrect because urb_buffer is a char ** pointer, fix this by using sizeof(*dev->urb_buffer). The sizeof(dma_addr_t *) is incorrect, it should be sizeof(*dev->urb_dma), which is a dma_addr_t and not a dma_addr_t *. This errors did not cause any issues because it just so happens the sizes are the same.
Addresses-Coverity: ("Sizeof not portable (SIZEOF_MISMATCH)")
--- drivers/media/usb/tm6000/tm6000-video.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/media/usb/tm6000/tm6000-video.c +3 -2
@@ -461,11 +461,12 @@ static int tm6000_alloc_urb_buffers(struct tm6000_core *dev)if (dev->urb_buffer)return 0 ; - dev->urb_buffer =kmalloc_array (num_bufs,sizeof (void *),GFP_KERNEL ); + dev->urb_buffer =kmalloc_array (num_bufs,sizeof (*dev->urb_buffer), +GFP_KERNEL );if (!dev->urb_buffer)return -ENOMEM ; - dev->urb_dma =kmalloc_array (num_bufs,sizeof (dma_addr_t *), + dev->urb_dma =kmalloc_array (num_bufs,sizeof (*dev->urb_dma),GFP_KERNEL );if (!dev->urb_dma)return -ENOMEM ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 119/717 media: platform: add missing put_device() call in mtk_jpeg_clk_init()
In reply to Greg Kroah-HartmanFrom: Yu Kuai <[email protected]>
[ Upstream commit f28a81a3b64270da3588174feff4628c36e0ff4e ]
if of_find_device_by_node() succeeds, mtk_jpeg_clk_init() doesn't have a corresponding put_device(). Thus add put_device() to fix the exception handling for this function implementation.
--- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 1 + 1 file changed, 1 insertion(+)
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +1 -0
@@ -1306,6 +1306,7 @@ static int mtk_jpeg_clk_init(struct mtk_jpeg_dev *jpeg) jpeg->variant->clks);if (ret) {dev_err (&pdev->dev,"failed to get jpeg clock:%d\n" , ret); +put_device (&pdev->dev);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 120/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_dec_pm()
In reply to Greg Kroah-HartmanFrom: Yu Kuai <[email protected]>
[ Upstream commit 5d4fa2c50125c9cda9e380d89268757cc5fa743d ]
if of_find_device_by_node() succeed, mtk_vcodec_init_dec_pm() doesn't have a corresponding put_device(). Thus add jump target to fix the exception handling for this function implementation.
--- .../platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +12 -6
@@ -47,11 +47,14 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev) dec_clk->clk_info =devm_kcalloc (&pdev->dev, dec_clk->clk_num,sizeof (*clk_info),GFP_KERNEL ); -if (!dec_clk->clk_info) -return -ENOMEM ; +if (!dec_clk->clk_info) { + ret = -ENOMEM ; + goto put_device; + } }else {mtk_v4l2_err ("Failed to get vdec clock count" ); -return -EINVAL ; + ret = -EINVAL ; + goto put_device; }for (i =0 ; i < dec_clk->clk_num; i++) {
@@ -60,19 +63,22 @@ int mtk_vcodec_init_dec_pm(struct mtk_vcodec_dev *mtkdev) "clock-names", i, &clk_info->clk_name);if (ret) {mtk_v4l2_err ("Failed to get clock name id = %d" , i); -return ret; + goto put_device; } clk_info->vcodec_clk =devm_clk_get (&pdev->dev, clk_info->clk_name);if (IS_ERR (clk_info->vcodec_clk)) {mtk_v4l2_err ("devm_clk_get (%d)%s fail" , i, clk_info->clk_name); -return PTR_ERR (clk_info->vcodec_clk); + ret =PTR_ERR (clk_info->vcodec_clk); + goto put_device; } }pm_runtime_enable (&pdev->dev); - +return 0 ; +put_device: +put_device (pm->larbvdec);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 121/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_release_dec_pm()
In reply to Greg Kroah-HartmanFrom: Yu Kuai <[email protected]>
[ Upstream commit 27c3943683f74e35e1d390ceb2e3639eff616ad6 ]
mtk_vcodec_release_dec_pm() will be called in two places:
a. mtk_vcodec_init_dec_pm() succeed while mtk_vcodec_probe() return error. b. mtk_vcodec_dec_remove().
In both cases put_device() call is needed, since of_find_device_by_node() was called in mtk_vcodec_init_dec_pm() previously.
Thus add put_devices() call in mtk_vcodec_release_dec_pm()
--- drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c | 1 + 1 file changed, 1 insertion(+)
drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c +1 -0
@@ -85,6 +85,7 @@ put_device:void mtk_vcodec_release_dec_pm (struct mtk_vcodec_dev *dev) {pm_runtime_disable (dev->pm.dev); +put_device (dev->pm.larbvdec); }void mtk_vcodec_dec_pw_on (struct mtk_vcodec_pm *pm)
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 122/717 media: mtk-vcodec: add missing put_device() call in mtk_vcodec_init_enc_pm()
In reply to Greg Kroah-HartmanFrom: Yu Kuai <[email protected]>
[ Upstream commit 4affafd7bec7c65da31777f18bd20420f1aeb5f8 ]
if of_find_device_by_node() succeed, mtk_vcodec_init_enc_pm() doesn't have a corresponding put_device(). Thus add jump target to fix the exception handling for this function implementation.
--- .../platform/mtk-vcodec/mtk_vcodec_enc_pm.c | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-)
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc_pm.c +19 -7
@@ -47,14 +47,16 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev) node =of_parse_phandle (dev->of_node,"mediatek,larb" ,1 );if (!node) {mtk_v4l2_err ("no mediatek,larb found" ); -return -ENODEV ; + ret = -ENODEV ; + goto put_larbvenc; } pdev =of_find_device_by_node (node);of_node_put (node);if (!pdev) {mtk_v4l2_err ("no mediatek,larb device found" ); -return -ENODEV ; + ret = -ENODEV ; + goto put_larbvenc; } pm->larbvenclt = &pdev->dev;
@@ -67,11 +69,14 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev) enc_clk->clk_info =devm_kcalloc (&pdev->dev, enc_clk->clk_num,sizeof (*clk_info),GFP_KERNEL ); -if (!enc_clk->clk_info) -return -ENOMEM ; +if (!enc_clk->clk_info) { + ret = -ENOMEM ; + goto put_larbvenclt; + } }else {mtk_v4l2_err ("Failed to get venc clock count" ); -return -EINVAL ; + ret = -EINVAL ; + goto put_larbvenclt; }for (i =0 ; i < enc_clk->clk_num; i++) {
@@ -80,17 +85,24 @@ int mtk_vcodec_init_enc_pm(struct mtk_vcodec_dev *mtkdev) "clock-names", i, &clk_info->clk_name);if (ret) {mtk_v4l2_err ("venc failed to get clk name %d" , i); -return ret; + goto put_larbvenclt; } clk_info->vcodec_clk =devm_clk_get (&pdev->dev, clk_info->clk_name);if (IS_ERR (clk_info->vcodec_clk)) {mtk_v4l2_err ("venc devm_clk_get (%d)%s fail" , i, clk_info->clk_name); -return PTR_ERR (clk_info->vcodec_clk); + ret =PTR_ERR (clk_info->vcodec_clk); + goto put_larbvenclt; } } +return 0 ; + +put_larbvenclt: +put_device (pm->larbvenclt); +put_larbvenc: +put_device (pm->larbvenc);return ret; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 123/717 media: v4l2-fwnode: Return -EINVAL for invalid bus-type
In reply to Greg Kroah-HartmanFrom: Lad Prabhakar <[email protected]>
[ Upstream commit 69baf338fc16a4d55c78da8874ce3f06feb38c78 ]
Return -EINVAL if invalid bus-type is detected while parsing endpoints.
--- drivers/media/v4l2-core/v4l2-fwnode.c | 6 +++++- include/media/v4l2-mediabus.h | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-)
drivers/media/v4l2-core/v4l2-fwnode.c +5 -1
@@ -93,7 +93,7 @@ v4l2_fwnode_bus_type_to_mbus(enum v4l2_fwnode_bus_type type)const struct v4l2_fwnode_bus_conv *conv =get_v4l2_fwnode_bus_conv_by_fwnode_bus (type); -return conv ? conv->mbus_type :V4L2_MBUS_UNKNOWN ; +return conv ? conv->mbus_type :V4L2_MBUS_INVALID ; } static const char *
@@ -436,6 +436,10 @@ static int __v4l2_fwnode_endpoint_parse(struct fwnode_handle *fwnode,v4l2_fwnode_mbus_type_to_string (vep->bus_type), vep->bus_type); mbus_type =v4l2_fwnode_bus_type_to_mbus (bus_type); +if (mbus_type ==V4L2_MBUS_INVALID ) { +pr_debug ("unsupported bus type %u\n" , bus_type); +return -EINVAL ; + }if (vep->bus_type !=V4L2_MBUS_UNKNOWN ) { if (mbus_type != V4L2_MBUS_UNKNOWN &&
include/media/v4l2-mediabus.h +2 -0
@@ -103,6 +103,7 @@* @V4L2_MBUS_CCP2: CCP2 (Compact Camera Port 2) * @V4L2_MBUS_CSI2_DPHY: MIPI CSI-2 serial interface, with D-PHY * @V4L2_MBUS_CSI2_CPHY: MIPI CSI-2 serial interface, with C-PHY +* @V4L2_MBUS_INVALID: invalid bus type (keep as last) */ enum v4l2_mbus_type {V4L2_MBUS_UNKNOWN ,
@@ -112,6 +113,7 @@ enum v4l2_mbus_type {V4L2_MBUS_CCP2 ,V4L2_MBUS_CSI2_DPHY ,V4L2_MBUS_CSI2_CPHY , + V4L2_MBUS_INVALID, };/**
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 124/717 media: v4l2-fwnode: v4l2_fwnode_endpoint_parse caller must init vep argument
In reply to Greg Kroah-HartmanFrom: Sakari Ailus <[email protected]>
[ Upstream commit b3cc73d2bf14e7c6e0376fa9433e708349e9ddfc ]
Document that the caller of v4l2_fwnode_endpoint_parse() must init the fields of struct v4l2_fwnode_endpoint (vep argument) fields.
It used to be that the fields were zeroed by v4l2_fwnode_endpoint_parse when bus type was set to V4L2_MBUS_UNKNOWN but with recent changes (Fixes:
line below) that no longer makes sense.
--- include/media/v4l2-fwnode.h | 6 ++++++ 1 file changed, 6 insertions(+)
include/media/v4l2-fwnode.h +6 -0
@@ -231,6 +231,9 @@ struct v4l2_fwnode_connector {* guessing @vep.bus_type between CSI-2 D-PHY, parallel and BT.656 busses is * supported. NEVER RELY ON GUESSING @vep.bus_type IN NEW DRIVERS! * +* The caller is required to initialise all fields of @vep, either with +* explicitly values, or by zeroing them. +* * The function does not change the V4L2 fwnode endpoint state if it fails. * * NOTE: This function does not parse properties the size of which is variable
@@ -273,6 +276,9 @@ void v4l2_fwnode_endpoint_free(struct v4l2_fwnode_endpoint *vep);* guessing @vep.bus_type between CSI-2 D-PHY, parallel and BT.656 busses is * supported. NEVER RELY ON GUESSING @vep.bus_type IN NEW DRIVERS! * +* The caller is required to initialise all fields of @vep, either with +* explicitly values, or by zeroing them. +* * The function does not change the V4L2 fwnode endpoint state if it fails. * * v4l2_fwnode_endpoint_alloc_parse() has two important differences to
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 125/717 media: ov5640: fix support of BT656 bus mode
In reply to Greg Kroah-HartmanFrom: Hugues Fruchet <[email protected]>
[ Upstream commit 68579b32e786f9680e7c6b6c7d17e26943bb02b3 ]
Fix PCLK polarity not being taken into account. Add comments about BT656 register control. Remove useless ov5640_set_stream_bt656() function. Refine comments about MIPI IO register control.
--- drivers/media/i2c/ov5640.c | 82 +++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 37 deletions(-)
drivers/media/i2c/ov5640.c +45 -37
@@ -1216,20 +1216,6 @@ static int ov5640_set_autogain(struct ov5640_dev *sensor, bool on) BIT(1), on ? 0 : BIT(1)); } -static int ov5640_set_stream_bt656 (struct ov5640_dev *sensor,bool on) -{ -int ret; - - ret =ov5640_write_reg (sensor,OV5640_REG_CCIR656_CTRL00 , - on ?0x1 :0x00 ); -if (ret) -return ret; - -return ov5640_write_reg (sensor,OV5640_REG_SYS_CTRL0 , on ? -OV5640_REG_SYS_CTRL0_SW_PWUP : -OV5640_REG_SYS_CTRL0_SW_PWDN ); -} -static int ov5640_set_stream_dvp (struct ov5640_dev *sensor,bool on) { return ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0, on ?
@@ -1994,13 +1980,13 @@ static int ov5640_set_power_mipi(struct ov5640_dev *sensor, bool on)static int ov5640_set_power_dvp (struct ov5640_dev *sensor,bool on) {unsigned int flags = sensor->ep.bus.parallel.flags; -u8 pclk_pol =0 ; -u8 hsync_pol =0 ; -u8 vsync_pol =0 ; +bool bt656 = sensor->ep.bus_type ==V4L2_MBUS_BT656 ; +u8 polarities =0 ;int ret;if (!on) {/* Reset settings to their default values. */ +ov5640_write_reg (sensor,OV5640_REG_CCIR656_CTRL00 ,0x00 );ov5640_write_reg (sensor,OV5640_REG_IO_MIPI_CTRL00 ,0x58 );ov5640_write_reg (sensor,OV5640_REG_POLARITY_CTRL00 ,0x20 );ov5640_write_reg (sensor,OV5640_REG_PAD_OUTPUT_ENABLE01 ,0x00 );
@@ -2024,7 +2010,35 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)* - VSYNC: active high * - HREF: active low * - PCLK: active low +* +* VSYNC & HREF are not configured if BT656 bus mode is selected */ + +/* +* BT656 embedded synchronization configuration +* +* CCIR656 CTRL00 +* - [7]: SYNC code selection (0: auto generate sync code, +* 1: sync code from regs 0x4732-0x4735) +* - [6]: f value in CCIR656 SYNC code when fixed f value +* - [5]: Fixed f value +* - [4:3]: Blank toggle data options (00: data=1'h040/1'h200, +* 01: data from regs 0x4736-0x4738, 10: always keep 0) +* - [1]: Clip data disable +* - [0]: CCIR656 mode enable +* +* Default CCIR656 SAV/EAV mode with default codes +* SAV=0xff000080 & EAV=0xff00009d is enabled here with settings: +* - CCIR656 mode enable +* - auto generation of sync codes +* - blank toggle data 1'h040/1'h200 +* - clip reserved data (0x00 & 0xff changed to 0x01 & 0xfe) +*/ + ret =ov5640_write_reg (sensor,OV5640_REG_CCIR656_CTRL00 , + bt656 ?0x01 :0x00 ); +if (ret) +return ret; +/* * configure parallel port control lines polarity *
@@ -2035,29 +2049,26 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)* datasheet and hardware, 0 is active high * and 1 is active low...) */ -if (sensor->ep.bus_type ==V4L2_MBUS_PARALLEL ) { -if (flags &V4L2_MBUS_PCLK_SAMPLE_RISING ) - pclk_pol =1 ; +if (!bt656) {if (flags &V4L2_MBUS_HSYNC_ACTIVE_HIGH ) - hsync_pol =1 ; + polarities |=BIT (1 );if (flags &V4L2_MBUS_VSYNC_ACTIVE_LOW ) - vsync_pol =1 ; - - ret =ov5640_write_reg (sensor,OV5640_REG_POLARITY_CTRL00 , - (pclk_pol <<5 ) | (hsync_pol <<1 ) | - vsync_pol); - -if (ret) -return ret; + polarities |=BIT (0 ); } +if (flags &V4L2_MBUS_PCLK_SAMPLE_RISING ) + polarities |=BIT (5 ); + + ret =ov5640_write_reg (sensor,OV5640_REG_POLARITY_CTRL00 , polarities); +if (ret) +return ret;/* -* powerdown MIPI TX/RX PHY & disable MIPI +* powerdown MIPI TX/RX PHY & enable DVP * * MIPI CONTROL 00 -* 4: PWDN PHY TX -* 3: PWDN PHY RX -* 2: MIPI enable +* [4] = 1 : Power down MIPI HS Tx +* [3] = 1 : Power down MIPI LS Rx +* [2] = 0 : DVP enable (MIPI disable) */ ret =ov5640_write_reg (sensor,OV5640_REG_IO_MIPI_CTRL00 ,0x18 );if (ret)
@@ -2074,8 +2085,7 @@ static int ov5640_set_power_dvp(struct ov5640_dev *sensor, bool on)* - [3:0]: D[9:6] output enable */ ret =ov5640_write_reg (sensor,OV5640_REG_PAD_OUTPUT_ENABLE01 , - sensor->ep.bus_type ==V4L2_MBUS_PARALLEL ? -0x7f :0x1f ); + bt656 ?0x1f :0x7f );if (ret)return ret;
@@ -2925,8 +2935,6 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)if (sensor->ep.bus_type ==V4L2_MBUS_CSI2_DPHY ) ret =ov5640_set_stream_mipi (sensor, enable); -else if (sensor->ep.bus_type ==V4L2_MBUS_BT656 ) - ret =ov5640_set_stream_bt656 (sensor, enable);else ret =ov5640_set_stream_dvp (sensor, enable);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 126/717 media: staging: rkisp1: cap: fix runtime PM imbalance on error
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 4cbbe2aaa0536b0e7b3dfbd7febc3bc2ec300559 ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference imbalance in rkisp1_vb2_start_streaming, so we should fix it.
--- drivers/staging/media/rkisp1/rkisp1-capture.c | 1 + 1 file changed, 1 insertion(+)
drivers/staging/media/rkisp1/rkisp1-capture.c +1 -0
@@ -992,6 +992,7 @@ rkisp1_vb2_start_streaming(struct vb2_queue *queue, unsigned int count) ret =pm_runtime_get_sync (cap->rkisp1->dev);if (ret <0 ) { +pm_runtime_put_noidle (cap->rkisp1->dev);dev_err (cap->rkisp1->dev,"power up failed %d\n" , ret); goto err_destroy_dummy; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 127/717 media: cedrus: fix reference leak in cedrus_start_streaming
In reply to Greg Kroah-HartmanFrom: Zhang Qilong <[email protected]>
[ Upstream commit 940727bf22f74cbdef8de327de34c4ae565c89ea ]
pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to pm_runtime_put_noidle will result in reference leak in cedrus_start_streaming. We should fix it.
--- drivers/staging/media/sunxi/cedrus/cedrus_video.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/staging/media/sunxi/cedrus/cedrus_video.c +3 -1
@@ -479,8 +479,10 @@ static int cedrus_start_streaming(struct vb2_queue *vq, unsigned int count)if (V4L2_TYPE_IS_OUTPUT (vq->type)) { ret =pm_runtime_get_sync (dev->dev); -if (ret <0 ) +if (ret <0 ) { +pm_runtime_put_noidle (dev->dev); goto err_cleanup; + }if (dev->dec_ops[ctx->current_codec]->start) { ret = dev->dec_ops[ctx->current_codec]->start (ctx);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 128/717 media: platform: add missing put_device() call in mtk_jpeg_probe() and mtk_jpeg_remove()
In reply to Greg Kroah-HartmanFrom: Yu Kuai <[email protected]>
[ Upstream commit 0d72f489995bb8565f6fe30539d4504c88356a9e ]
if mtk_jpeg_clk_init() succeed, mtk_jpeg_probe() and mtk_jpeg_remove() doesn't have a corresponding put_device(). Thus add a new helper mtk_jpeg_clk_release() to fix it.
--- drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +8 -0
@@ -1332,6 +1332,12 @@ static void mtk_jpeg_job_timeout_work(struct work_struct *work)v4l2_m2m_buf_done (dst_buf,VB2_BUF_STATE_ERROR );v4l2_m2m_job_finish (jpeg->m2m_dev, ctx->fh.m2m_ctx); } + +static inline void mtk_jpeg_clk_release (struct mtk_jpeg_dev *jpeg) +{ +put_device (jpeg->larb); +} +static int mtk_jpeg_probe (struct platform_device *pdev) {struct mtk_jpeg_dev *jpeg;
@@ -1436,6 +1442,7 @@ err_m2m_init:v4l2_device_unregister (&jpeg->v4l2_dev); err_dev_register: +mtk_jpeg_clk_release (jpeg); err_clk_init:
@@ -1453,6 +1460,7 @@ static int mtk_jpeg_remove(struct platform_device *pdev)video_device_release (jpeg->vdev);v4l2_m2m_release (jpeg->m2m_dev);v4l2_device_unregister (&jpeg->v4l2_dev); +mtk_jpeg_clk_release (jpeg);return 0 ; }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 129/717 media: venus: core: change clk enable and disable order in resume and suspend
In reply to Greg Kroah-HartmanFrom: Mansur Alisha Shaik <[email protected]>
[ Upstream commit 21926d466e3a4f35c2536244d1d56512cc81a0a9 ]
Currently video driver is voting after clk enable and un voting before clk disable. This is incorrect, video driver should vote before clk enable and unvote after clk disable.
Corrected this by changing the order of clk enable and clk disable.
suspend")
--- drivers/media/platform/qcom/venus/core.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
drivers/media/platform/qcom/venus/core.c +10 -7
@@ -355,13 +355,16 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev)if (ret)return ret; +if (pm_ops->core_power) { + ret = pm_ops->core_power (dev,POWER_OFF ); +if (ret) +return ret; + } + ret =icc_set_bw (core->cpucfg_path,0 ,0 );if (ret)return ret; -if (pm_ops->core_power) - ret = pm_ops->core_power (dev,POWER_OFF ); -return ret; }
@@ -371,16 +374,16 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)const struct venus_pm_ops *pm_ops = core->pm_ops;int ret; + ret =icc_set_bw (core->cpucfg_path,0 ,kbps_to_icc (1000 )); +if (ret) +return ret; +if (pm_ops->core_power) { ret = pm_ops->core_power (dev,POWER_ON );if (ret)return ret; } - ret =icc_set_bw (core->cpucfg_path,0 ,kbps_to_icc (1000 )); -if (ret) -return ret; -return hfi_core_resume (core, false); }
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 130/717 media: venus: core: vote for video-mem path
In reply to Greg Kroah-HartmanFrom: Mansur Alisha Shaik <[email protected]>
[ Upstream commit 9e8efdb5787986cc0d0134925cf5c4f001bb3f2e ]
Currently video driver is voting for venus0-ebi path during buffer processing with an average bandwidth of all the instances and unvoting during session release.
While video streaming when we try to do XO-SD using the command "echo mem > /sys/power/state command" , device is not entering to suspend state and from interconnect summary seeing votes for venus0-ebi
Corrected this by voting for venus0-ebi path in venus_runtime_resume() and unvote during venus_runtime_suspend().
suspend")
--- drivers/media/platform/qcom/venus/core.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
drivers/media/platform/qcom/venus/core.c +16 -1
@@ -363,7 +363,18 @@ static __maybe_unused int venus_runtime_suspend(struct device *dev) ret =icc_set_bw (core->cpucfg_path,0 ,0 );if (ret) -return ret; + goto err_cpucfg_path; + + ret =icc_set_bw (core->video_path,0 ,0 ); +if (ret) + goto err_video_path; + +return ret; + +err_video_path: +icc_set_bw (core->cpucfg_path,kbps_to_icc (1000 ),0 ); +err_cpucfg_path: + pm_ops->core_power (dev,POWER_ON );return ret; }
@@ -374,6 +385,10 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)const struct venus_pm_ops *pm_ops = core->pm_ops;int ret; + ret =icc_set_bw (core->video_path,0 ,kbps_to_icc (1000 )); +if (ret) +return ret; + ret =icc_set_bw (core->cpucfg_path,0 ,kbps_to_icc (1000 ));if (ret)return ret;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 131/717 media: venus: core: vote with average bandwidth and peak bandwidth as zero
In reply to Greg Kroah-HartmanFrom: Mansur Alisha Shaik <[email protected]>
[ Upstream commit e44fb034b03231cd117d6db73fb8048deab6ea41 ]
As per bandwidth table video driver is voting with average bandwidth for "video-mem" and "cpu-cfg" paths as peak bandwidth is zero in bandwidth table.
suspend")
--- drivers/media/platform/qcom/venus/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/media/platform/qcom/venus/core.c +2 -2
@@ -385,11 +385,11 @@ static __maybe_unused int venus_runtime_resume(struct device *dev)const struct venus_pm_ops *pm_ops = core->pm_ops;int ret; - ret =icc_set_bw (core->video_path,0 ,kbps_to_icc (1000 )); + ret =icc_set_bw (core->video_path,kbps_to_icc (20000 ),0 );if (ret)return ret; - ret =icc_set_bw (core->cpucfg_path,0 ,kbps_to_icc (1000 )); + ret =icc_set_bw (core->cpucfg_path,kbps_to_icc (1000 ),0 );if (ret)return ret;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 132/717 RDMA/cma: Add missing error handling of listen_id
In reply to Greg Kroah-HartmanFrom: Leon Romanovsky <[email protected]>
[ Upstream commit c80a0c52d85c49a910d0dc0e342e8d8898677dc0 ]
Don't silently continue if rdma_listen() fails but destroy previously created CM_ID and return an error to the caller.
--- drivers/infiniband/core/cma.c | 175 ++++++++++++++++++++-------------- 1 file changed, 101 insertions(+), 74 deletions(-)
drivers/infiniband/core/cma.c +101 -74
@@ -2495,8 +2495,8 @@ static int cma_listen_handler(struct rdma_cm_id *id,return id_priv->id.event_handler (id, event); } -static void cma_listen_on_dev (struct rdma_id_private *id_priv, -struct cma_device *cma_dev) +static int cma_listen_on_dev (struct rdma_id_private *id_priv, +struct cma_device *cma_dev) {struct rdma_id_private *dev_id_priv;struct net *net = id_priv->id.route.addr.dev_addr.net;
@@ -2505,13 +2505,13 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv,lockdep_assert_held (&lock);if (cma_family (id_priv) ==AF_IB && !rdma_cap_ib_cm (cma_dev->device,1 )) -return ; +return 0 ; dev_id_priv =__rdma_create_id (net, cma_listen_handler, id_priv, id_priv->id.ps, id_priv->id.qp_type, id_priv);if (IS_ERR (dev_id_priv)) -return ; +return PTR_ERR (dev_id_priv); dev_id_priv->state =RDMA_CM_ADDR_BOUND ; memcpy(cma_src_addr(dev_id_priv), cma_src_addr(id_priv),
@@ -2527,19 +2527,34 @@ static void cma_listen_on_dev(struct rdma_id_private *id_priv, ret =rdma_listen (&dev_id_priv->id, id_priv->backlog);if (ret) -dev_warn (&cma_dev->device->dev, -"RDMA CMA: cma_listen_on_dev, error %d\n" , ret); + goto err_listen; +return 0 ; +err_listen: +list_del (&id_priv->listen_list); +dev_warn (&cma_dev->device->dev,"RDMA CMA: %s, error %d\n" , __func__, ret); +rdma_destroy_id (&dev_id_priv->id); +return ret; } -static void cma_listen_on_all (struct rdma_id_private *id_priv) +static int cma_listen_on_all (struct rdma_id_private *id_priv) {struct cma_device *cma_dev; +int ret;mutex_lock (&lock);list_add_tail (&id_priv->list, &listen_any_list); -list_for_each_entry (cma_dev, &dev_list, list) -cma_listen_on_dev (id_priv, cma_dev); +list_for_each_entry (cma_dev, &dev_list, list) { + ret =cma_listen_on_dev (id_priv, cma_dev); +if (ret) + goto err_listen; + } +mutex_unlock (&lock); +return 0 ; + +err_listen: +list_del (&id_priv->list);mutex_unlock (&lock); +return ret; }void rdma_set_service_type (struct rdma_cm_id *id,int tos)
@@ -3692,8 +3707,11 @@ int rdma_listen(struct rdma_cm_id *id, int backlog) ret = -ENOSYS ; goto err; } - }else -cma_listen_on_all (id_priv); + }else { + ret =cma_listen_on_all (id_priv); +if (ret) + goto err; + }return 0 ; err:
@@ -4773,69 +4791,6 @@ static struct notifier_block cma_nb = { .notifier_call = cma_netdev_callback }; -static int cma_add_one (struct ib_device *device) -{ -struct cma_device *cma_dev; -struct rdma_id_private *id_priv; -unsigned int i; -unsigned long supported_gids =0 ; -int ret; - - cma_dev =kmalloc (sizeof *cma_dev,GFP_KERNEL ); -if (!cma_dev) -return -ENOMEM ; - - cma_dev->device = device; - cma_dev->default_gid_type =kcalloc (device->phys_port_cnt, -sizeof (*cma_dev->default_gid_type), -GFP_KERNEL ); -if (!cma_dev->default_gid_type) { - ret = -ENOMEM ; - goto free_cma_dev; - } - - cma_dev->default_roce_tos =kcalloc (device->phys_port_cnt, -sizeof (*cma_dev->default_roce_tos), -GFP_KERNEL ); -if (!cma_dev->default_roce_tos) { - ret = -ENOMEM ; - goto free_gid_type; - } - - rdma_for_each_port (device, i) { - supported_gids =roce_gid_type_mask_support (device, i); -WARN_ON (!supported_gids); -if (supported_gids & (1 <<CMA_PREFERRED_ROCE_GID_TYPE )) - cma_dev->default_gid_type[i -rdma_start_port (device)] = -CMA_PREFERRED_ROCE_GID_TYPE ; -else - cma_dev->default_gid_type[i -rdma_start_port (device)] = -find_first_bit (&supported_gids,BITS_PER_LONG ); - cma_dev->default_roce_tos[i -rdma_start_port (device)] =0 ; - } - -init_completion (&cma_dev->comp); -refcount_set (&cma_dev->refcount,1 ); -INIT_LIST_HEAD (&cma_dev->id_list); -ib_set_client_data (device, &cma_client, cma_dev); - -mutex_lock (&lock); -list_add_tail (&cma_dev->list, &dev_list); -list_for_each_entry (id_priv, &listen_any_list, list) -cma_listen_on_dev (id_priv, cma_dev); -mutex_unlock (&lock); - -trace_cm_add_one (device); -return 0 ; - -free_gid_type: -kfree (cma_dev->default_gid_type); - -free_cma_dev: -kfree (cma_dev); -return ret; -} -static void cma_send_device_removal_put (struct rdma_id_private *id_priv) {struct rdma_cm_event event = { .event =RDMA_CM_EVENT_DEVICE_REMOVAL };
@@ -4898,6 +4853,78 @@ static void cma_process_remove(struct cma_device *cma_dev)wait_for_completion (&cma_dev->comp); } +static int cma_add_one (struct ib_device *device) +{ +struct cma_device *cma_dev; +struct rdma_id_private *id_priv; +unsigned int i; +unsigned long supported_gids =0 ; +int ret; + + cma_dev =kmalloc (sizeof (*cma_dev),GFP_KERNEL ); +if (!cma_dev) +return -ENOMEM ; + + cma_dev->device = device; + cma_dev->default_gid_type =kcalloc (device->phys_port_cnt, +sizeof (*cma_dev->default_gid_type), +GFP_KERNEL ); +if (!cma_dev->default_gid_type) { + ret = -ENOMEM ; + goto free_cma_dev; + } + + cma_dev->default_roce_tos =kcalloc (device->phys_port_cnt, +sizeof (*cma_dev->default_roce_tos), +GFP_KERNEL ); +if (!cma_dev->default_roce_tos) { + ret = -ENOMEM ; + goto free_gid_type; + } + + rdma_for_each_port (device, i) { + supported_gids =roce_gid_type_mask_support (device, i); +WARN_ON (!supported_gids); +if (supported_gids & (1 <<CMA_PREFERRED_ROCE_GID_TYPE )) + cma_dev->default_gid_type[i -rdma_start_port (device)] = +CMA_PREFERRED_ROCE_GID_TYPE ; +else + cma_dev->default_gid_type[i -rdma_start_port (device)] = +find_first_bit (&supported_gids,BITS_PER_LONG ); + cma_dev->default_roce_tos[i -rdma_start_port (device)] =0 ; + } + +init_completion (&cma_dev->comp); +refcount_set (&cma_dev->refcount,1 ); +INIT_LIST_HEAD (&cma_dev->id_list); +ib_set_client_data (device, &cma_client, cma_dev); + +mutex_lock (&lock); +list_add_tail (&cma_dev->list, &dev_list); +list_for_each_entry (id_priv, &listen_any_list, list) { + ret =cma_listen_on_dev (id_priv, cma_dev); +if (ret) + goto free_listen; + } +mutex_unlock (&lock); + +trace_cm_add_one (device); +return 0 ; + +free_listen: +list_del (&cma_dev->list); +mutex_unlock (&lock); + +cma_process_remove (cma_dev); +kfree (cma_dev->default_roce_tos); +free_gid_type: +kfree (cma_dev->default_gid_type); + +free_cma_dev: +kfree (cma_dev); +return ret; +} +static void cma_remove_one (struct ib_device *device,void *client_data) {struct cma_device *cma_dev = client_data;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 133/717 ASoC: meson: fix COMPILE_TEST error
In reply to Greg Kroah-HartmanFrom: Jerome Brunet <[email protected]>
[ Upstream commit 299fe9937dbd1a4d9a1da6a2b6f222298534ca57 ]
When compiled with CONFIG_HAVE_CLK, the kernel need to get provider for the clock API. This is usually selected by the platform and the sound drivers should not really care about this. However COMPILE_TEST is special and the platform required may not have been selected, leading to this type of error:
Quoted 1 line
aiu-encoder-spdif.c:(.text+0x3a0): undefined reference to `clk_set_parent'
Since we need a sane provider of the API with COMPILE_TEST, depends on COMMON_CLK.
--- sound/soc/meson/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/soc/meson/Kconfig +1 -1
@@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only menu "ASoC support for Amlogic platforms" - depends on ARCH_MESON || COMPILE_TEST + depends on ARCH_MESON || (COMPILE_TEST && COMMON_CLK) config SND_MESON_AIU tristate "Amlogic AIU"
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 134/717 spi: dw: fix build error by selecting MULTIPLEXER
In reply to Greg Kroah-HartmanFrom: Randy Dunlap <[email protected]>
[ Upstream commit 1241f0787578136ab58f49adc52f2dcd2bbc4bf2 ]
Fix build error for spi-dw-bt1.o by selecting MULTIPLEXER.
hppa-linux-ld: drivers/spi/spi-dw-bt1.o: in function `dw_spi_bt1_sys_init':
(.text+0x1ac): undefined reference to `devm_mux_control_get'
--- drivers/spi/Kconfig | 1 + 1 file changed, 1 insertion(+)
drivers/spi/Kconfig +1 -0
@@ -255,6 +255,7 @@ config SPI_DW_MMIO config SPI_DW_BT1 tristate "Baikal-T1 SPI driver for DW SPI core" depends on MIPS_BAIKAL_T1 || COMPILE_TEST + select MULTIPLEXER help Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI controllers. Two of them are pretty much normal: with IRQ, DMA,
Signature · 1 line
2.27.0
Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER
Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.
-Sergey
Quoted 41 lines · Greg Kroah-Hartman
From: Randy Dunlap <[email protected]>
[ Upstream commit
1241f0787578136ab58f49adc52f2dcd2bbc4bf2]Fix build error for spi-dw-bt1.o by selecting MULTIPLEXER.
hppa-linux-ld:
drivers/spi/spi-dw-bt1.o: in function `dw_spi_bt1_sys_init':
(.text+0x1ac): undefined reference to `devm_mux_control_get'Fixes abf00907538e ("spi: dw: Add Baikal-T1 SPI Controller glue driver")Reported-by kernel test robot <[email protected]>Signed-off-by Randy Dunlap <[email protected]>Cc Serge Semin <[email protected]>Cc Ramil Zaripov <[email protected]>Cc Mark Brown <[email protected]>Acked-by Serge Semin <[email protected]>Signed-off-by Mark Brown <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- drivers/spi/Kconfig | 1 + 1 file changed, 1 insertion(+)drivers/spi/Kconfig +1
-0@@ -255,6 +255,7 @@ config SPI_DW_MMIO config SPI_DW_BT1 tristate "Baikal-T1 SPI driver for DW SPI core" depends on MIPS_BAIKAL_T1 || COMPILE_TEST + select MULTIPLEXER help Baikal-T1 SoC is equipped with three DW APB SSI-based MMIO SPI controllers. Two of them are pretty much normal: with IRQ, DMA,Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerRe: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER
Quoted 4 lines · Serge Semin
Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.
Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.
thanks,
greg k-h
Re: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER
Quoted 9 lines · Greg Kroah-Hartman
Quoted 4 lines · Serge Semin
Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.
I believe it is already there:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7218838109fef61cdec988ff728e902d434c9cc5
Yeah, it's better to queue that patch up too, otherwise the build error will be indeed fixed by the commit you've merged in, but the probe procedure will still always fail.
-Sergey
Quoted 4 lines
thanks,
greg k-h
Greg Kroah-Hartman
maintainerRe: [PATCH 5.10 134/717] spi: dw: fix build error by selecting MULTIPLEXER
Quoted 8 lines · Serge Semin
Quoted 6 lines · Greg Kroah-Hartman
Quoted 4 lines · Serge Semin
Hello Greg,
The next patch has been created to supersede the one you've applied:
https://lore.kernel.org/linux-spi/[email protected]/
Mark has already merged it in his repo.
Quoted 8 lines
Quoted 2 lines
Ok, so should that one be queued up as well? Let us know the git commit id of it when it reaches Linus's kernel and we will be glad to take it.
I believe it is already there:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7218838109fef61cdec988ff728e902d434c9cc5
Yeah, it's better to queue that patch up too, otherwise the build error will be indeed fixed by the commit you've merged in, but the probe procedure will still always fail.
Ok, now queued up, thanks for letting us know.
greg k-h
Greg Kroah-Hartman
maintainerPATCH 135/717 scsi: core: Fix VPD LUN ID designator priorities
In reply to Greg Kroah-HartmanFrom: Martin Wilck <[email protected]>
[ Upstream commit 2e4209b3806cda9b89c30fd5e7bfecb7044ec78b ]
The current implementation of scsi_vpd_lun_id() uses the designator length as an implicit measure of priority. This works most of the time, but not always. For example, some Hitachi storage arrays return this in VPD 0x83:
VPD INQUIRY: Device Identification page
Designation descriptor number 1, descriptor length: 24
designator_type: T10 vendor identification, code_set: ASCII associated with the Addressed logical unit
vendor id: HITACHI
vendor specific: 5030C3502025
Designation descriptor number 2, descriptor length: 6
designator_type: vendor specific [0x0], code_set: Binary associated with the Target port
vendor specific: 08 03
Designation descriptor number 3, descriptor length: 20
designator_type: NAA, code_set: Binary
associated with the Addressed logical unit
NAA 6, IEEE Company_id: 0x60e8
Vendor Specific Identifier: 0x7c35000
Vendor Specific Identifier Extension: 0x30c35000002025
[0x60060e8007c350000030c35000002025]The current code would use the first descriptor because it's longer than the NAA descriptor. But this is wrong, the kernel is supposed to prefer NAA descriptors over T10 vendor ID. Designator length should only be used to compare designators of the same type.
This patch addresses the issue by separating designator priority and length.
--- drivers/scsi/scsi_lib.c | 126 +++++++++++++++++++++++++++------------- 1 file changed, 86 insertions(+), 40 deletions(-)
drivers/scsi/scsi_lib.c +86 -40
@@ -2948,6 +2948,78 @@ void sdev_enable_disk_events(struct scsi_device *sdev) }EXPORT_SYMBOL (sdev_enable_disk_events); +static unsigned char designator_prio (const unsigned char *d) +{ +if (d[1 ] &0x30 ) +/* not associated with LUN */ +return 0 ; + +if (d[3 ] ==0 ) +/* invalid length */ +return 0 ; + +/* +* Order of preference for lun descriptor: +* - SCSI name string +* - NAA IEEE Registered Extended +* - EUI-64 based 16-byte +* - EUI-64 based 12-byte +* - NAA IEEE Registered +* - NAA IEEE Extended +* - EUI-64 based 8-byte +* - SCSI name string (truncated) +* - T10 Vendor ID +* as longer descriptors reduce the likelyhood +* of identification clashes. +*/ + +switch (d[1 ] &0xf ) { +case 8 : +/* SCSI name string, variable-length UTF-8 */ +return 9 ; +case 3 : +switch (d[4 ] >>4 ) { +case 6 : +/* NAA registered extended */ +return 8 ; +case 5 : +/* NAA registered */ +return 5 ; +case 4 : +/* NAA extended */ +return 4 ; +case 3 : +/* NAA locally assigned */ +return 1 ; +default : +break ; + } +break ; +case 2 : +switch (d[3 ]) { +case 16 : +/* EUI64-based, 16 byte */ +return 7 ; +case 12 : +/* EUI64-based, 12 byte */ +return 6 ; +case 8 : +/* EUI64-based, 8 byte */ +return 3 ; +default : +break ; + } +break ; +case 1 : +/* T10 vendor ID */ +return 1 ; +default : +break ; + } + +return 0 ; +} +/** * scsi_vpd_lun_id - return a unique device identification * @sdev: SCSI device
@@ -2964,7 +3036,7 @@ EXPORT_SYMBOL(sdev_enable_disk_events);*/ int scsi_vpd_lun_id (struct scsi_device *sdev,char *id,size_t id_len) { -u8 cur_id_type =0xff ; +u8 cur_id_prio =0 ;u8 cur_id_size =0 ;const unsigned char *d, *cur_id_str;const struct scsi_vpd *vpd_pg83;
@@ -2977,20 +3049,6 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)return -ENXIO ; } -/* -* Look for the correct descriptor. -* Order of preference for lun descriptor: -* - SCSI name string -* - NAA IEEE Registered Extended -* - EUI-64 based 16-byte -* - EUI-64 based 12-byte -* - NAA IEEE Registered -* - NAA IEEE Extended -* - T10 Vendor ID -* as longer descriptors reduce the likelyhood -* of identification clashes. -*/ -/* The id string must be at least 20 bytes + terminating NULL byte */ if (id_len <21 ) {rcu_read_unlock ();
@@ -3000,8 +3058,9 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)memset (id,0 , id_len); d = vpd_pg83->data +4 ;while (d < vpd_pg83->data + vpd_pg83->len) { -/* Skip designators not referring to the LUN */ -if ((d[1 ] &0x30 ) !=0x00 ) +u8 prio =designator_prio (d); + +if (prio ==0 || cur_id_prio > prio) goto next_desig;switch (d[1 ] &0xf ) {
@@ -3009,28 +3068,19 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len)/* T10 Vendor ID */ if (cur_id_size > d[3 ])break ; -/* Prefer anything */ -if (cur_id_type >0x01 && cur_id_type !=0xff ) -break ; + cur_id_prio = prio; cur_id_size = d[3 ];if (cur_id_size +4 > id_len) cur_id_size = id_len -4 ; cur_id_str = d +4 ; - cur_id_type = d[1 ] &0xf ; id_size =snprintf (id, id_len,"t10.%*pE" , cur_id_size, cur_id_str);break ;case 0x2 :/* EUI-64 */ -if (cur_id_size > d[3 ]) -break ; -/* Prefer NAA IEEE Registered Extended */ -if (cur_id_type ==0x3 && - cur_id_size == d[3 ]) -break ; + cur_id_prio = prio; cur_id_size = d[3 ]; cur_id_str = d +4 ; - cur_id_type = d[1 ] &0xf ;switch (cur_id_size) {case 8 : id_size = snprintf(id, id_len,
@@ -3048,17 +3098,14 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len) cur_id_str);break ;default : - cur_id_size =0 ;break ; }break ;case 0x3 :/* NAA */ -if (cur_id_size > d[3 ]) -break ; + cur_id_prio = prio; cur_id_size = d[3 ]; cur_id_str = d +4 ; - cur_id_type = d[1 ] &0xf ;switch (cur_id_size) {case 8 : id_size = snprintf(id, id_len,
@@ -3071,26 +3118,25 @@ int scsi_vpd_lun_id(struct scsi_device *sdev, char *id, size_t id_len) cur_id_str);break ;default : - cur_id_size =0 ;break ; }break ;case 0x8 :/* SCSI name string */ -if (cur_id_size +4 > d[3 ]) +if (cur_id_size > d[3 ])break ;/* Prefer others for truncated descriptor */ -if (cur_id_size && d[3 ] > id_len) -break ; +if (d[3 ] > id_len) { + prio =2 ; +if (cur_id_prio > prio) +break ; + } + cur_id_prio = prio; cur_id_size = id_size = d[3 ]; cur_id_str = d +4 ; - cur_id_type = d[1 ] &0xf ;if (cur_id_size >= id_len) cur_id_size = id_len -1 ;memcpy (id, cur_id_str, cur_id_size); -/* Decrease priority for truncated descriptor */ -if (cur_id_size != id_size) - cur_id_size =6 ;break ;default :break ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 136/717 media: venus: put dummy vote on video-mem path after last session release
In reply to Greg Kroah-HartmanFrom: Mansur Alisha Shaik <[email protected]>
[ Upstream commit eff5ce02e170125936c43ca96c7dc701a86681ed ]
As per current implementation, video driver is unvoting "videom-mem" path for last video session during vdec_session_release().
While video playback when we try to suspend device, we see video clock warnings since votes are already removed during vdec_session_release().
corrected this by putting dummy vote on "video-mem" after last video session release and unvoting it during suspend.
suspend")
--- drivers/media/platform/qcom/venus/pm_helpers.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/media/platform/qcom/venus/pm_helpers.c +10 -0
@@ -212,6 +212,16 @@ static int load_scale_bw(struct venus_core *core) }mutex_unlock (&core->lock); +/* +* keep minimum bandwidth vote for "video-mem" path, +* so that clks can be disabled during vdec_session_release(). +* Actual bandwidth drop will be done during device supend +* so that device can power down without any warnings. +*/ + +if (!total_avg && !total_peak) + total_avg =kbps_to_icc (1000 ); +dev_dbg (core->dev,VDBGL "total: avg_bw: %u, peak_bw: %u\n" , total_avg, total_peak);
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 137/717 media: solo6x10: fix missing snd_card_free in error handling case
In reply to Greg Kroah-HartmanFrom: Qinglang Miao <[email protected]>
[ Upstream commit dcdff74fa6bc00c32079d0bebd620764c26f2d89 ]
Fix to goto snd_error in error handling case when fails to do snd_ctl_add, as done elsewhere in this function.
--- drivers/media/pci/solo6x10/solo6x10-g723.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/media/pci/solo6x10/solo6x10-g723.c +1 -1
@@ -385,7 +385,7 @@ int solo_g723_init(struct solo_dev *solo_dev) ret =snd_ctl_add (card,snd_ctl_new1 (&kctl, solo_dev));if (ret <0 ) -return ret; + goto snd_error; ret =solo_snd_pcm_init (solo_dev);if (ret <0 )
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 138/717 video: fbdev: atmel_lcdfb: fix return error code in atmel_lcdfb_of_init()
In reply to Greg Kroah-HartmanFrom: Yang Yingliang <[email protected]>
[ Upstream commit ba236455ee750270f33998df57f982433cea4d8e ]
If devm_kzalloc() failed after the first time, atmel_lcdfb_of_init() can't return -ENOMEM, fix this by putting the error code in loop.
--- drivers/video/fbdev/atmel_lcdfb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/video/fbdev/atmel_lcdfb.c +1 -1
@@ -987,8 +987,8 @@ static int atmel_lcdfb_of_init(struct atmel_lcdfb_info *sinfo) }INIT_LIST_HEAD (&pdata->pwr_gpios); - ret = -ENOMEM ;for (i =0 ; i <gpiod_count (dev,"atmel,power-control" ); i++) { + ret = -ENOMEM ; gpiod =devm_gpiod_get_index (dev,"atmel,power-control" , i,GPIOD_ASIS );if (IS_ERR (gpiod))
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 139/717 mmc: sdhci: tegra: fix wrong unit with busy_timeout
In reply to Greg Kroah-HartmanFrom: Wolfram Sang <[email protected]>
[ Upstream commit fcc541fea394d67ad607ee41acfa891e79fe17a2 ]
'busy_timeout' is in msecs, not in jiffies. Use the correct factor.
--- drivers/mmc/host/sdhci-tegra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/mmc/host/sdhci-tegra.c +1 -1
@@ -1272,7 +1272,7 @@ static void tegra_sdhci_set_timeout(struct sdhci_host *host,* busy wait mode. */ val =sdhci_readl (host,SDHCI_TEGRA_VENDOR_MISC_CTRL ); -if (cmd && cmd->busy_timeout >=11 *HZ ) +if (cmd && cmd->busy_timeout >=11 *MSEC_PER_SEC ) val |=SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT ;else val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT ;
Signature · 1 line
2.27.0
Greg Kroah-Hartman
maintainerPATCH 140/717 drm/omap: dmm_tiler: fix return error code in omap_dmm_probe()
In reply to Greg Kroah-HartmanFrom: Yang Yingliang <[email protected]>
[ Upstream commit 723ae803218da993143387bf966042eccefac077 ]
Return -ENOMEM when allocating refill memory failed.
--- drivers/gpu/drm/omapdrm/omap_dmm_tiler.c | 1 + 1 file changed, 1 insertion(+)
drivers/gpu/drm/omapdrm/omap_dmm_tiler.c +1 -0
@@ -889,6 +889,7 @@ static int omap_dmm_probe(struct platform_device *dev) &omap_dmm->refill_pa, GFP_KERNEL);if (!omap_dmm->refill_va) {dev_err (&dev->dev,"could not allocate refill memory\n" ); + ret = -ENOMEM ; goto fail; }
Signature · 1 line
2.27.0