Linux 5.4.75
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.75 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/kernel-parameters.txt | 8 Documentation/media/uapi/v4l/colorspaces-defs.rst | 9 Documentation/media/uapi/v4l/colorspaces-details.rst | 5 Makefile | 2 arch/Kconfig | 7 arch/arc/boot/dts/axc001.dtsi | 2 arch/arc/boot/dts/axc003.dtsi | 2 arch/arc/boot/dts/axc003_idu.dtsi | 2 arch/arc/boot/dts/vdk_axc003.dtsi | 2 arch/arc/boot/dts/vdk_axc003_idu.dtsi | 2 arch/arc/kernel/perf_event.c | 27 arch/arm/Kconfig | 2 arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | 1 arch/arm/boot/dts/omap4.dtsi | 2 arch/arm/boot/dts/omap443x.dtsi | 10 arch/arm/boot/dts/s5pv210.dtsi | 163 +--- arch/arm/kernel/hw_breakpoint.c | 100 ++ arch/arm/plat-samsung/Kconfig | 1 arch/arm64/Kconfig.platforms | 1 arch/arm64/boot/dts/renesas/ulcb.dtsi | 1 arch/arm64/include/asm/kvm_host.h | 1 arch/arm64/include/asm/numa.h | 3 arch/arm64/kernel/topology.c | 32 arch/arm64/kvm/sys_regs.c | 6 arch/arm64/mm/numa.c | 6 arch/ia64/kernel/Makefile | 2 arch/ia64/kernel/kprobes.c | 77 -- arch/mips/dec/setup.c | 9 arch/powerpc/Kconfig | 14 arch/powerpc/include/asm/drmem.h | 4 arch/powerpc/include/asm/mmu_context.h | 2 arch/powerpc/kernel/head_32.S | 2 arch/powerpc/kernel/rtas.c | 153 ++++ arch/powerpc/kernel/sysfs.c | 42 - arch/powerpc/kernel/traps.c | 2 arch/powerpc/kvm/book3s_hv.c | 6 arch/powerpc/platforms/powermac/sleep.S | 9 arch/powerpc/platforms/powernv/opal-elog.c | 33 arch/powerpc/platforms/powernv/smp.c | 2 arch/powerpc/platforms/pseries/hotplug-memory.c | 43 - arch/riscv/include/uapi/asm/auxvec.h | 3 arch/s390/boot/head.S | 21 arch/s390/kernel/time.c | 118 ++- arch/sparc/kernel/smp_64.c | 65 - arch/um/kernel/sigio.c | 6 arch/x86/events/amd/ibs.c | 38 - arch/x86/events/intel/core.c | 2 arch/x86/include/asm/msr-index.h | 1 arch/x86/kernel/unwind_orc.c | 9 drivers/acpi/acpi_dbg.c | 3 drivers/acpi/acpi_extlog.c | 6 drivers/acpi/button.c | 13 drivers/acpi/ec.c | 10 drivers/acpi/hmat/hmat.c | 3 drivers/acpi/numa.c | 2 drivers/acpi/video_detect.c | 9 drivers/ata/sata_nv.c | 2 drivers/base/core.c | 4 drivers/base/power/runtime.c | 5 drivers/block/nbd.c | 2 drivers/block/xen-blkback/blkback.c | 22 drivers/block/xen-blkback/xenbus.c | 5 drivers/bus/fsl-mc/mc-io.c | 7 drivers/clk/ti/clockdomain.c | 2 drivers/cpufreq/acpi-cpufreq.c | 3 drivers/cpufreq/sti-cpufreq.c | 6 drivers/dma/dma-jz4780.c | 7 drivers/extcon/extcon-ptn5150.c | 8 drivers/firmware/arm_scmi/base.c | 2 drivers/firmware/arm_scmi/clock.c | 2 drivers/firmware/arm_scmi/common.h | 2 drivers/firmware/arm_scmi/driver.c | 8 drivers/firmware/arm_scmi/perf.c | 2 drivers/firmware/arm_scmi/reset.c | 4 drivers/firmware/arm_scmi/sensors.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 10 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 4 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v10.c | 5 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 2 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c | 4 drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c | 4 drivers/gpu/drm/amd/display/dc/os_types.h | 2 drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c | 2 drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 12 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 9 drivers/gpu/drm/i915/i915_drv.h | 6 drivers/gpu/drm/ttm/ttm_bo.c | 2 drivers/hid/wacom_wac.c | 4 drivers/hwtracing/coresight/coresight-priv.h | 3 drivers/hwtracing/coresight/coresight.c | 62 - drivers/i2c/busses/i2c-imx.c | 24 drivers/iio/adc/rcar-gyroadc.c | 21 drivers/iio/adc/ti-adc0832.c | 11 drivers/iio/adc/ti-adc12138.c | 13 drivers/iio/gyro/itg3200_buffer.c | 15 drivers/iio/light/si1145.c | 19 drivers/infiniband/hw/qedr/qedr_iw_cm.c | 1 drivers/input/serio/hil_mlc.c | 21 drivers/input/serio/hp_sdc_mlc.c | 8 drivers/leds/leds-bcm6328.c | 2 drivers/leds/leds-bcm6358.c | 2 drivers/md/md-bitmap.c | 2 drivers/md/raid5.c | 4 drivers/media/i2c/imx274.c | 8 drivers/media/pci/tw5864/tw5864-video.c | 6 drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c | 7 drivers/media/usb/uvc/uvc_ctrl.c | 27 drivers/memory/emif.c | 33 drivers/message/fusion/mptscsih.c | 13 drivers/mmc/host/sdhci-acpi.c | 37 + drivers/mmc/host/sdhci-of-esdhc.c | 11 drivers/mmc/host/sdhci-pci-core.c | 154 ++++ drivers/mmc/host/sdhci.c | 6 drivers/mmc/host/via-sdmmc.c | 3 drivers/mtd/ubi/wl.c | 13 drivers/net/can/flexcan.c | 30 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 drivers/net/ethernet/mellanox/mlxsw/core.c | 3 drivers/net/wan/hdlc_fr.c | 98 +- drivers/net/wireless/ath/ath10k/htt_rx.c | 8 drivers/net/wireless/ath/ath10k/sdio.c | 4 drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 10 drivers/net/xen-netback/common.h | 15 drivers/net/xen-netback/interface.c | 61 + drivers/net/xen-netback/netback.c | 11 drivers/net/xen-netback/rx.c | 13 drivers/nvme/host/rdma.c | 1 drivers/pci/pci-acpi.c | 10 drivers/power/supply/bq27xxx_battery.c | 6 drivers/power/supply/test_power.c | 6 drivers/rpmsg/qcom_glink_native.c | 6 drivers/rtc/rtc-rx8010.c | 24 drivers/scsi/qla2xxx/qla_target.c | 13 drivers/spi/spi-sprd.c | 2 drivers/staging/comedi/drivers/cb_pcidas.c | 1 drivers/staging/fieldbus/anybuss/arcx-anybus.c | 2 drivers/staging/octeon/ethernet-mdio.c | 6 drivers/staging/octeon/ethernet-rx.c | 34 drivers/staging/octeon/ethernet.c | 9 drivers/tty/vt/keyboard.c | 39 - drivers/tty/vt/vt_ioctl.c | 32 drivers/uio/uio.c | 4 drivers/usb/class/cdc-acm.c | 12 drivers/usb/class/cdc-acm.h | 3 drivers/usb/dwc3/core.c | 15 drivers/usb/dwc3/core.h | 1 drivers/usb/dwc3/dwc3-pci.c | 3 drivers/usb/dwc3/ep0.c | 27 drivers/usb/dwc3/gadget.c | 60 + drivers/usb/dwc3/gadget.h | 1 drivers/usb/host/fsl-mph-dr-of.c | 9 drivers/usb/host/xhci-pci.c | 17 drivers/usb/host/xhci.c | 7 drivers/usb/host/xhci.h | 1 drivers/usb/misc/adutux.c | 1 drivers/usb/typec/tcpm/tcpm.c | 8 drivers/vhost/vringh.c | 9 drivers/video/fbdev/pvr2fb.c | 2 drivers/w1/masters/mxc_w1.c | 14 drivers/watchdog/rdc321x_wdt.c | 5 drivers/xen/events/events_2l.c | 9 drivers/xen/events/events_base.c | 422 +++++++++++- drivers/xen/events/events_fifo.c | 83 +- drivers/xen/events/events_internal.h | 20 drivers/xen/evtchn.c | 7 drivers/xen/pvcalls-back.c | 76 +- drivers/xen/xen-pciback/pci_stub.c | 14 drivers/xen/xen-pciback/pciback.h | 12 drivers/xen/xen-pciback/pciback_ops.c | 48 + drivers/xen/xen-pciback/xenbus.c | 2 drivers/xen/xen-scsiback.c | 23 fs/9p/vfs_file.c | 4 fs/btrfs/ctree.c | 6 fs/btrfs/ctree.h | 2 fs/btrfs/delayed-inode.c | 3 fs/btrfs/dev-replace.c | 7 fs/btrfs/reada.c | 47 + fs/btrfs/send.c | 201 ++++- fs/btrfs/tree-checker.c | 35 fs/btrfs/tree-log.c | 8 fs/btrfs/volumes.c | 17 fs/btrfs/volumes.h | 1 fs/buffer.c | 16 fs/cachefiles/rdwr.c | 3 fs/ceph/addr.c | 2 fs/cifs/inode.c | 13 fs/exec.c | 17 fs/ext4/inode.c | 11 fs/ext4/resize.c | 4 fs/ext4/super.c | 6 fs/f2fs/checkpoint.c | 10 fs/f2fs/dir.c | 8 fs/f2fs/f2fs.h | 2 fs/f2fs/node.c | 2 fs/f2fs/segment.c | 12 fs/gfs2/incore.h | 1 fs/gfs2/ops_fstype.c | 40 - fs/gfs2/super.c | 1 fs/gfs2/sys.c | 5 fs/nfs/namespace.c | 12 fs/nfs/nfs4_fs.h | 8 fs/nfs/nfs4file.c | 3 fs/nfs/nfs4proc.c | 90 +- fs/nfs/nfs4trace.h | 1 fs/nfsd/nfsproc.c | 16 fs/ubifs/debug.c | 1 fs/ubifs/journal.c | 6 fs/ubifs/orphan.c | 2 fs/ubifs/super.c | 44 - fs/ubifs/tnc.c | 3 fs/ubifs/xattr.c | 2 fs/udf/super.c | 21 fs/xfs/libxfs/xfs_bmap.c | 19 fs/xfs/xfs_rtalloc.c | 10 include/linux/hil_mlc.h | 2 include/linux/usb/pd.h | 1 include/uapi/linux/btrfs_tree.h | 14 include/uapi/linux/nfs4.h | 3 include/uapi/linux/videodev2.h | 17 include/xen/events.h | 29 init/Kconfig | 3 kernel/bpf/verifier.c | 4 kernel/debug/debug_core.c | 22 kernel/futex.c | 4 kernel/seccomp.c | 38 - kernel/trace/ring_buffer.c | 8 lib/scatterlist.c | 2 net/9p/trans_fd.c | 2 net/ceph/messenger.c | 5 net/sunrpc/xprt.c | 6 samples/bpf/xdpsock_user.c | 1 tools/perf/util/print_binary.c | 2 tools/testing/selftests/bpf/progs/test_sysctl_prog.c | 4 tools/testing/selftests/x86/fsgsbase.c | 68 + 236 files changed, 2912 insertions(+), 1212 deletions(-)
Adrian Hunter (1):
mmc: sdhci: Add LTR support for some Intel BYT based controllers
Alain Volmat (1):
cpufreq: sti-cpufreq: add stih418 support
Alex Hung (1):
ACPI: video: use ACPI backlight for HP 635 Notebook
Alexander Sverdlin (2):
staging: octeon: repair "fixed-link" support
staging: octeon: Drop on uncorrectable alignment or FCS error
Alok Prasad (1):
RDMA/qedr: Fix memory leak in iWARP CM
Amit Cohen (1):
mlxsw: core: Fix use-after-free in mlxsw_emad_trans_finish()
Anand Jain (2):
btrfs: fix replace of seed device
btrfs: improve device scanning messages
Anant Thazhemadam (2):
net: 9p: initialize sun_server.sun_path to have addr's value only when addr is valid
gfs2: add validation checks for size of superblock
Andrew Donnellan (1):
powerpc/rtas: Restrict RTAS requests from userspace
Andrey Grodzovsky (1):
drm/amd/display: Avoid MST manager resource leak.
Andy Lutomirski (2):
selftests/x86/fsgsbase: Reap a forgotten child selftests/x86/fsgsbase: Test PTRACE_PEEKUSER for GSBASE with invalid LDT GS
Andy Shevchenko (2):
device property: Keep secondary firmware node secondary by type device property: Don't clear secondary pointer for shared primary firmware node
Aneesh Kumar K.V (2):
powerpc/drmem: Make lmb_size 64 bit
powerpc/memhotplug: Make lmb size 64bit
Antonio Borneo (1):
drm/bridge/synopsys: dsi: add support for non-continuous HS clock
Ashish Sangwan (1):
NFS: fix nfs_path in case of a rename retry
Badhri Jagan Sridharan (1):
usb: typec: tcpm: During PR_SWAP, source caps should be sent only after tSwapSourceStart
Bartosz Golaszewski (1):
rtc: rx8010: don't modify the global rtc ops
Ben Hutchings (1):
ACPI / extlog: Check for RDMSR failure
Benjamin Coddington (1):
NFSv4: Wait for stateid updates after CLOSE/OPEN_DOWNGRADE
Chao Leng (1):
nvme-rdma: fix crash when connect rejected
Chao Yu (2):
f2fs: fix uninit-value in f2fs_lookup
f2fs: fix to check segment boundary during SIT page readahead
Chris Lew (1):
rpmsg: glink: Use complete_all for open states
Chris Wilson (1):
drm/i915: Force VT'd workarounds when running as a guest OS
Christian König (1):
drm/amdgpu: increase the reserved VM size to 2MB
Christophe Leroy (1):
powerpc/powermac: Fix low_sleep_handler with KUAP and KUEP
Chuck Lever (2):
SUNRPC: Mitigate cond_resched() in xprt_transmit()
NFSD: Add missing NFSv2 .pc_func methods
Dan Carpenter (1):
memory: emif: Remove bogus debugfs error handling
Daniel W. S. Almeida (1):
media: uvcvideo: Fix dereference of out-of-bound list iterator
Daniel Xu (1):
btrfs: tree-checker: validate number of chunk stripes and parity
Darrick J. Wong (2):
xfs: fix realtime bitmap/summary file truncation when growing rt volume
xfs: don't free rt blocks when we're doing a REMAP bunmapi call
Dave Airlie (1):
drm/ttm: fix eviction valuable range check.
Dave Wysochanski (1):
NFS4: Fix oops when copy_file_range is attempted with NFS4.0 source
Denis Efremov (1):
btrfs: use kvzalloc() to allocate clone_roots in btrfs_ioctl_send()
Diana Craciun (1):
bus/fsl_mc: Do not rely on caller to provide non NULL mc_io
Dinghao Liu (1):
ext4: fix error handling code in add_new_gdb
Douglas Anderson (2):
ARM: 8997/2: hw_breakpoint: Handle inexact watchpoint addresses
kgdb: Make "kgdbcon" work properly with "kgdb_earlycon"
Douglas Gilbert (1):
sgl_alloc_order: fix memory leak
Eric Biggers (1):
ext4: fix leaking sysfs kobject after failed mount
Etienne Carriere (1):
firmware: arm_scmi: Fix ARCH_COLD_RESET
Evan Quan (2):
drm/amdgpu: correct the gpu reset handling for job != NULL case drm/amd/pm: increase mclk switch threshold to 200 us
Fabiano Rosas (1):
KVM: PPC: Book3S HV: Do not allocate HPT for a nested guest
Fangzhi Zuo (1):
drm/amd/display: HDMI remote sink need mode validation for Linux
Filipe Manana (5):
btrfs: reschedule if necessary when logging directory items
btrfs: send, orphanize first all conflicting inodes when processing references
btrfs: send, recompute reference path after orphanization of a directory
btrfs: fix use-after-free on readahead extent after failure to create it
btrfs: fix readahead hang and use-after-free after removing a device
Frank Wunderlich (1):
arm: dts: mt7623: add missing pause for switchport
Greg Kroah-Hartman (1):
Linux 5.4.75
Hans Verkuil (2):
media: videodev2.h: RGB BT2020 and HSV are always full range
media: imx274: fix frame interval handling
Hans de Goede (1):
media: uvcvideo: Fix uvc_ctrl_fixup_xu_info() not having any effect
Helge Deller (2):
scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() hil/parisc: Disable HIL driver when it gets stuck
Ian Abbott (1):
staging: comedi: cb_pcidas: Allow 2-channel commands for AO subdevice
Ilya Dryomov (1):
libceph: clear con->out_msg on Policy::stateful_server faults
Jaegeuk Kim (1):
f2fs: handle errors of f2fs_get_meta_page_nofail
Jamie Iles (2):
gfs2: use-after-free in sysfs deregistration
ACPI: debug: don't allow debugging when ACPI is disabled
Jan Kara (3):
ext4: Detect already used quota file early
fs: Don't invalidate page buffers in block_write_full_page()
udf: Fix memory leak when mounting
Jann Horn (1):
seccomp: Make duplicate listener detection non-racy
Jason Gerecke (1):
HID: wacom: Avoid entering wacom_wac_pen_report for pad / battery
Jay Cornwall (1):
drm/amdkfd: Use same SQ prefetch setting as amdgpu
Jerome Brunet (1):
usb: cdc-acm: fix cooldown mechanism
Jing Xiangfeng (1):
staging: fieldbus: anybuss: jump to correct label in an error path
Jiri Olsa (1):
perf python scripting: Fix printable strings in python3 scripts
Jiri Slaby (3):
x86/unwind/orc: Fix inactive tasks with stack pointer in %sp on GCC 10 compiled kernels
vt: keyboard, simplify vt_kdgkbsent
vt: keyboard, extend func_buf_lock to readers
Jisheng Zhang (2):
mmc: sdhci: Use Auto CMD Auto Select only when v4_mode is true
arm64: berlin: Select DW_APB_TIMER_OF
Joakim Zhang (1):
can: flexcan: disable clocks during stop mode
Joel Stanley (1):
powerpc: Warn about use of smt_snooze_delay
Johannes Berg (1):
um: change sigio_spinlock to a mutex
John Ogness (1):
printk: reduce LOG_BUF_SHIFT range for H8300
Jonathan Cameron (6):
ACPI: Add out of bounds and numa_off protections to pxm_to_node()
ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3 iio:light:si1145: Fix timestamp alignment and prevent data leak. iio:adc:ti-adc0832 Fix alignment issue with timestamp iio:adc:ti-adc12138 Fix alignment issue with timestamp iio:gyro:itg3200: Fix timestamp alignment and prevent data leak.
Josef Bacik (1):
btrfs: cleanup cow block on error
Juergen Gross (13):
xen/events: avoid removing an event channel while handling it xen/events: add a proper barrier to 2-level uevent unmasking xen/events: fix race in evtchn_fifo_unmask() xen/events: add a new "late EOI" evtchn framework xen/blkback: use lateeoi irq binding
xen/netback: use lateeoi irq binding
xen/scsiback: use lateeoi irq binding xen/pvcallsback: use lateeoi irq binding xen/pciback: use lateeoi irq binding
xen/events: switch user event channels to lateeoi model xen/events: use a common cpu hotplug hook for event channels xen/events: defer eoi in case of excessive number of events xen/events: block rogue events for some time
Kan Liang (1):
perf/x86/intel: Fix Ice Lake event constraint table
Kim Phillips (2):
perf/x86/amd/ibs: Don't include randomized bits in get_ibs_op_count() perf/x86/amd/ibs: Fix raw sample data accumulation
Krzysztof Kozlowski (11):
power: supply: bq27xxx: report "not charging" on all types
ARM: dts: s5pv210: remove DMA controller bus node name to fix dtschema warnings
ARM: dts: s5pv210: move fixed clocks under root node
ARM: dts: s5pv210: move PMU node out of clock controller
ARM: dts: s5pv210: remove dedicated 'audio-subsystem' node
spi: sprd: Release DMA channel also on probe deferral
extcon: ptn5150: Fix usage of atomic GPIO with sleeping GPIO chips
ia64: fix build error with !COREDUMP
i2c: imx: Fix external abort on interrupt in exit paths
ARM: samsung: fix PM debug build with DEBUG_LL but !MMU
ARM: s3c24xx: fix missing system reset
Lang Dai (1):
uio: free uio id after uio file node is freed
Li Jun (3):
usb: dwc3: core: add phy cleanup for probe error handling
usb: dwc3: core: don't trigger runtime pm when remove driver
usb: typec: tcpm: reset hard_reset_count for any disconnect
Linu Cherian (1):
coresight: Make sysfs functional on topologies with per core sink
Linus Torvalds (1):
tty: make FONTX ioctl use the tty pointer they were actually passed
Lukas Wunner (1):
PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI
Luo Meng (1):
ext4: fix invalid inode checksum
Maciej W. Rozycki (1):
MIPS: DEC: Restore bootmem reservation for firmware working memory area
Madhav Chauhan (1):
drm/amdgpu: don't map BO in reserved region
Madhuparna Bhowmik (2):
mmc: via-sdmmc: Fix data race bug
drivers: watchdog: rdc321x_wdt: Fix race condition bugs
Magnus Karlsson (1):
samples/bpf: Fix possible deadlock in xdpsock
Mahesh Salgaonkar (1):
powerpc/powernv/elog: Fix race while processing OPAL error log event.
Marc Zyngier (1):
KVM: arm64: Fix AArch32 handling of DBGD{CCINT,SCRext} and DBGVCR
Marek Behún (1):
leds: bcm6328, bcm6358: use devres LED registering function
Martin Fuzzey (1):
w1: mxc_w1: Fix timeout resolution problem leading to bus error
Masami Hiramatsu (1):
ia64: kprobes: Use generic kretprobe trampoline handler
Mateusz Nosek (1):
futex: Fix incorrect should_fail_futex() handling
Matthew Wilcox (Oracle) (3):
ceph: promote to unsigned long long before shifting 9P: Cast to loff_t before multiplying
cachefiles: Handle readpage error correctly
Michael Chan (1):
bnxt_en: Log unknown link speed appropriately.
Michael Neuling (1):
powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation
Michael Walle (1):
mmc: sdhci-of-esdhc: set timeout to max before tuning
Nadezda Lutovinova (1):
drm/brige/megachips: Add checking if ge_b850v3_lvds_init() is working correctly
Nicholas Piggin (3):
mm: fix exec activate_mm vs TLB shootdown and lazy tlb switching race
powerpc: select ARCH_WANT_IRQS_OFF_ACTIVATE_MM
sparc64: remove mm_cpumask clearing to fix kthread_use_mm race
Olga Kornievskaia (1):
NFSv4.2: support EXCHGID4_FLAG_SUPP_FENCE_OPS 4.2 EXCHANGE_ID flag
Oliver Neukum (1):
USB: adutux: fix debugging
Oliver O'Halloran (1):
powerpc/powernv/smp: Fix spurious DBG() warning
Paul Cercueil (1):
dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status
Peter Chen (1):
usb: xhci: omit duplicate actions when suspending a runtime suspended host.
Qiujun Huang (1):
ring-buffer: Return 0 on success from ring_buffer_resize()
Qu Wenruo (2):
btrfs: qgroup: fix wrong qgroup metadata reserve for delayed inode
btrfs: tree-checker: fix false alert caused by legacy btrfs root item
Quinn Tran (1):
scsi: qla2xxx: Fix crash on session cleanup with unload
Rafael J. Wysocki (2):
ACPI: EC: PM: Flush EC work unconditionally after wakeup
ACPI: EC: PM: Drop ec_no_wakeup check from acpi_ec_dispatch_gpe()
Ran Wang (1):
usb: host: fsl-mph-dr-of: check return of dma_set_mask()
Raul E Rangel (1):
mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN
Raymond Tan (1):
usb: dwc3: pci: Allow Elkhart Lake to utilize DSM method for PM functionality
Richard Weinberger (1):
ubifs: journal: Make sure to not dirty twice for auth nodes
Ronnie Sahlberg (1):
cifs: handle -EINTR in cifs_setattr
Sandeep Singh (1):
usb: xhci: Workaround for S3 issue on AMD SNPS 3.0 xHC
Sascha Hauer (1):
ata: sata_nv: Fix retrieving of active qcs
Sathishkumar Muruganandam (1):
ath10k: fix VHT NSS calculation when STBC is enabled
Song Liu (1):
md/raid5: fix oops during stripe resizing
Stefano Garzarella (1):
vringh: fix __vringh_iov() when riov and wiov are different
Sudeep Holla (1):
firmware: arm_scmi: Add missing Rx size re-initialisation
Sven Schnelle (1):
s390/stp: add locking to sysfs functions
Takashi Iwai (2):
drm/amd/display: Don't invoke kgdb_breakpoint() unconditionally drm/amd/display: Fix kernel panic by dal_gpio_open() error
Tero Kristo (1):
clk: ti: clockdomain: fix static checker warning
Thinh Nguyen (4):
usb: dwc3: ep0: Fix ZLP for OUT ep0 requests
usb: dwc3: gadget: Check MPS of the request length
usb: dwc3: gadget: Resume pending requests after CLEAR_STALL
usb: dwc3: gadget: END_TRANSFER before CLEAR_STALL command
Tobias Jordan (1):
iio: adc: gyroadc: fix leak of device node iterator
Tom Rix (2):
video: fbdev: pvr2fb: initialize variables
media: tw5864: check status of tw5864_frameinterval_get
Tony Lindgren (1):
ARM: dts: omap4: Fix sgx clock rate for 4430
Valentin Schneider (1):
arm64: topology: Stop using MPIDR for topology information
Vasily Gorbik (1):
s390/startup: avoid save_area_sync overflow
Vineet Gupta (1):
ARC: perf: redo the pct irq missing in device-tree handling
Wei Huang (1):
acpi-cpufreq: Honor _PSD table setting on new AMD CPUs
Wen Gong (1):
ath10k: start recovery process when payload length exceeds max htc length for sdio
Wesley Chalmers (1):
drm/amd/display: Increase timeout for DP Disable
Wright Feng (1):
brcmfmac: Fix warning message after dongle setup failed
Xia Jiang (1):
media: platform: Improve queue set up flow for bug fixing
Xiang Chen (1):
PM: runtime: Remove link state checks in rpm_get/put_supplier()
Xie He (1):
drivers/net/wan/hdlc_fr: Correctly handle special skb->protocol values
Xiongfeng Wang (1):
power: supply: test_power: add missing newlines when printing parameters by sysfs
Xiubo Li (1):
nbd: make the config put is called before the notifying the waiter
Yonghong Song (2):
bpf: Permit map_ptr arithmetic with opcode add and offset 0 selftests/bpf: Define string const as global for test_sysctl_prog.c
Yoshihiro Shimoda (1):
arm64: dts: renesas: ulcb: add full-pwr-cycle-in-suspend into eMMC nodes
Zhang Qilong (1):
f2fs: add trace exit in exception path
Zhao Heming (1):
md/bitmap: md_bitmap_get_counter returns wrong blocks
Zhen Lei (1):
ARC: [dts] fix the errors detected by dtbs_check
Zhengyuan Liu (1):
arm64/mm: return cpu_all_mask when node is NUMA_NO_NODE
Zhihao Cheng (6):
ubifs: dent: Fix some potential memory leaks while iterating entries
ubifs: xattr: Fix some potential memory leaks while iterating entries
ubifs: Fix a memleak after dumping authentication mount options
ubifs: Don't parse authentication mount options in remount process
ubifs: mount_ubifs: Release authentication resource in error handling path
ubi: check kthread_should_stop() after the setting of task state
Zong Li (1):
riscv: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO
[email protected] (1):
ACPI: button: fix handling lid state changes when input device closed
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +8 -0
@@ -5462,6 +5462,14 @@ as generic guest with no PV drivers. Currently support XEN HVM, KVM, HYPER_V and VMWARE guest. + xen.event_eoi_delay= [XEN] + How long to delay EOI handling in case of event + storms (jiffies). Default is 10. + + xen.event_loop_timeout= [XEN] + After which time (jiffies) the event handling loop + should start to delay EOI handling. Default is 2. + xirc2ps_cs= [NET,PCMCIA] Format: <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]]
Documentation/media/uapi/v4l/colorspaces-defs.rst +4 -5
@@ -36,8 +36,7 @@ whole range, 0-255, dividing the angular value by 1.41. The enum :c:type:`v4l2_hsv_encoding` specifies which encoding is used. .. note:: The default R'G'B' quantization is full range for all - colorspaces except for BT.2020 which uses limited range R'G'B' - quantization. + colorspaces. HSV formats are always full range. .. tabularcolumns:: |p{6.7cm}|p{10.8cm}|
@@ -169,8 +168,8 @@ whole range, 0-255, dividing the angular value by 1.41. The enum - Details * - ``V4L2_QUANTIZATION_DEFAULT`` - Use the default quantization encoding as defined by the - colorspace. This is always full range for R'G'B' (except for the - BT.2020 colorspace) and HSV. It is usually limited range for Y'CbCr. + colorspace. This is always full range for R'G'B' and HSV. + It is usually limited range for Y'CbCr. * - ``V4L2_QUANTIZATION_FULL_RANGE`` - Use the full range quantization encoding. I.e. the range [0…1] is mapped to [0…255] (with possible clipping to [1…254] to avoid the
@@ -180,4 +179,4 @@ whole range, 0-255, dividing the angular value by 1.41. The enum * - ``V4L2_QUANTIZATION_LIM_RANGE`` - Use the limited range quantization encoding. I.e. the range [0…1] is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to - [16…240]. + [16…240]. Limited Range cannot be used with HSV.
Documentation/media/uapi/v4l/colorspaces-details.rst +2 -3
@@ -377,9 +377,8 @@ Colorspace BT.2020 (V4L2_COLORSPACE_BT2020) The :ref:`itu2020` standard defines the colorspace used by Ultra-high definition television (UHDTV). The default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_BT2020``. The default R'G'B' quantization is limited -range (!), and so is the default Y'CbCr quantization. The chromaticities -of the primary colors and the white reference are: +``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range. +The chromaticities of the primary colors and the white reference are:
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 74 +SUBLEVEL = 75 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/Kconfig +7 -0
@@ -405,6 +405,13 @@ config MMU_GATHER_NO_RANGE config HAVE_MMU_GATHER_NO_GATHER bool +config ARCH_WANT_IRQS_OFF_ACTIVATE_MM + bool + help + Temporary select until all architectures can be converted to have + irqs disabled over activate_mm. Architectures that do IPI based TLB + shootdowns should enable this. + config ARCH_HAVE_NMI_SAFE_CMPXCHG bool
arch/arc/boot/dts/axc001.dtsi +1 -1
@@ -85,7 +85,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >;
arch/arc/boot/dts/axc003.dtsi +1 -1
@@ -129,7 +129,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >;
arch/arc/boot/dts/axc003_idu.dtsi +1 -1
@@ -135,7 +135,7 @@ * avoid duplicating the MB dtsi file given that IRQ from * this intc to cpu intc are different for axs101 and axs103 */ - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0x0 0xe0012000 0x0 0x200 >;
arch/arc/boot/dts/vdk_axc003.dtsi +1 -1
@@ -46,7 +46,7 @@ }; - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0xe0012000 0x200 >;
arch/arc/boot/dts/vdk_axc003_idu.dtsi +1 -1
@@ -54,7 +54,7 @@ }; - mb_intc: dw-apb-ictl@e0012000 { + mb_intc: interrupt-controller@e0012000 { #interrupt-cells = <1>; compatible = "snps,dw-apb-ictl"; reg = < 0xe0012000 0x200 >;
arch/arc/kernel/perf_event.c +18 -9
@@ -562,7 +562,7 @@ static int arc_pmu_device_probe(struct platform_device *pdev) {struct arc_reg_pct_build pct_bcr;struct arc_reg_cc_build cc_bcr; -int i, has_interrupts, irq; +int i, has_interrupts, irq =-1 ;int counter_size;/* in bits */ union cc_name {
@@ -637,19 +637,28 @@ static int arc_pmu_device_probe(struct platform_device *pdev) .attr_groups = arc_pmu->attr_groups, }; -if (has_interrupts && (irq =platform_get_irq (pdev,0 ) >=0 )) { +if (has_interrupts) { + irq =platform_get_irq (pdev,0 ); +if (irq >=0 ) { +int ret; - arc_pmu->irq = irq; + arc_pmu->irq = irq; -/* intc map function ensures irq_set_percpu_devid() called */ -request_percpu_irq (irq, arc_pmu_intr,"ARC perf counters" , -this_cpu_ptr (&arc_pmu_cpu)); +/* intc map function ensures irq_set_percpu_devid() called */ + ret =request_percpu_irq (irq, arc_pmu_intr,"ARC perf counters" , +this_cpu_ptr (&arc_pmu_cpu)); + +if (!ret) +on_each_cpu (arc_cpu_pmu_irq_init, &irq,1 ); +else + irq =-1 ; + } -on_each_cpu (arc_cpu_pmu_irq_init, &irq,1 ); - }else { - arc_pmu->pmu.capabilities |=PERF_PMU_CAP_NO_INTERRUPT ; } +if (irq ==-1 ) + arc_pmu->pmu.capabilities |=PERF_PMU_CAP_NO_INTERRUPT ; +/* * perf parser doesn't really like '-' symbol in events name, so let's * use '_' in arc pct name as it goes to kernel PMU event prefix.
arch/arm/Kconfig +2 -0
@@ -507,8 +507,10 @@ config ARCH_S3C24XX select HAVE_S3C2410_WATCHDOG if WATCHDOG select HAVE_S3C_RTC if RTC_CLASS select NEED_MACH_IO_H + select S3C2410_WATCHDOG select SAMSUNG_ATAGS select USE_OF + select WATCHDOG help Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443 and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts +1 -0
@@ -192,6 +192,7 @@ fixed-link { speed = <1000>; full-duplex; + pause; }; }; };
arch/arm/boot/dts/omap4.dtsi +1 -1
@@ -328,7 +328,7 @@ status = "disabled"; }; - target-module@56000000 { + sgx_module: target-module@56000000 { compatible = "ti,sysc-omap4", "ti,sysc"; reg = <0x5600fe00 0x4>, <0x5600fe10 0x4>;
arch/arm/boot/dts/omap443x.dtsi +10 -0
@@ -74,3 +74,13 @@ }; /include/ "omap443x-clocks.dtsi" + +/* + * Use dpll_per for sgx at 153.6MHz like droid4 stock v3.0.8 Android kernel + */ +&sgx_module { + assigned-clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 24>, + <&dpll_per_m7x2_ck>; + assigned-clock-rates = <0>, <153600000>; + assigned-clock-parents = <&dpll_per_m7x2_ck>; +};
arch/arm/boot/dts/s5pv210.dtsi +69 -94
200 lines not on this page · raw message
arch/arm/kernel/hw_breakpoint.c +72 -28
147 lines not on this page · raw message
arch/arm/plat-samsung/Kconfig +1 -0
@@ -241,6 +241,7 @@ config SAMSUNG_PM_DEBUG depends on PM && DEBUG_KERNEL depends on PLAT_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 depends on DEBUG_EXYNOS_UART || DEBUG_S3C24XX_UART || DEBUG_S3C2410_UART + depends on DEBUG_LL && MMU help Say Y here if you want verbose debugging from the PM Suspend and Resume code. See <file:Documentation/arm/samsung-s3c24xx/suspend.rst>
arch/arm64/Kconfig.platforms +1 -0
@@ -54,6 +54,7 @@ config ARCH_BCM_IPROC config ARCH_BERLIN bool "Marvell Berlin SoC Family" select DW_APB_ICTL + select DW_APB_TIMER_OF select GPIOLIB select PINCTRL help
arch/arm64/boot/dts/renesas/ulcb.dtsi +1 -0
@@ -470,6 +470,7 @@ mmc-hs200-1_8v; mmc-hs400-1_8v; non-removable; + full-pwr-cycle-in-suspend; status = "okay"; };
arch/arm64/include/asm/kvm_host.h +1 -0
@@ -209,6 +209,7 @@ enum vcpu_sysreg {#define cp14_DBGWCR0 (DBGWCR0_EL1 * 2)#define cp14_DBGWVR0 (DBGWVR0_EL1 * 2)#define cp14_DBGDCCINT (MDCCINT_EL1 * 2) +#define cp14_DBGVCR (DBGVCR32_EL2 * 2)#define NR_COPRO_REGS (NR_SYS_REGS * 2)
arch/arm64/include/asm/numa.h +3 -0
@@ -25,6 +25,9 @@ const struct cpumask *cpumask_of_node(int node);/* Returns a pointer to the cpumask of CPUs on Node 'node'. */ static inline const struct cpumask *cpumask_of_node (int node) { +if (node ==NUMA_NO_NODE ) +return cpu_all_mask; +return node_to_cpumask_map[node]; }#endif
arch/arm64/kernel/topology.c +17 -15
@@ -35,21 +35,23 @@ void store_cpu_topology(unsigned int cpuid)if (mpidr &MPIDR_UP_BITMASK )return ; -/* Create cpu topology mapping based on MPIDR. */ -if (mpidr &MPIDR_MT_BITMASK ) { -/* Multiprocessor system : Multi-threads per core */ - cpuid_topo->thread_id =MPIDR_AFFINITY_LEVEL (mpidr,0 ); - cpuid_topo->core_id =MPIDR_AFFINITY_LEVEL (mpidr,1 ); - cpuid_topo->package_id =MPIDR_AFFINITY_LEVEL (mpidr,2 ) | -MPIDR_AFFINITY_LEVEL (mpidr,3 ) <<8 ; - }else { -/* Multiprocessor system : Single-thread per core */ - cpuid_topo->thread_id =-1 ; - cpuid_topo->core_id =MPIDR_AFFINITY_LEVEL (mpidr,0 ); - cpuid_topo->package_id =MPIDR_AFFINITY_LEVEL (mpidr,1 ) | -MPIDR_AFFINITY_LEVEL (mpidr,2 ) <<8 | -MPIDR_AFFINITY_LEVEL (mpidr,3 ) <<16 ; - } +/* +* This would be the place to create cpu topology based on MPIDR. +* +* However, it cannot be trusted to depict the actual topology; some +* pieces of the architecture enforce an artificial cap on Aff0 values +* (e.g. GICv3's ICC_SGI1R_EL1 limits it to 15), leading to an +* artificial cycling of Aff1, Aff2 and Aff3 values. IOW, these end up +* having absolutely no relationship to the actual underlying system +* topology, and cannot be reasonably used as core / package ID. +* +* If the MT bit is set, Aff0 *could* be used to define a thread ID, but +* we still wouldn't be able to obtain a sane core ID. This means we +* need to entirely ignore MPIDR for any topology deduction. +*/ + cpuid_topo->thread_id =-1 ; + cpuid_topo->core_id = cpuid; + cpuid_topo->package_id =cpu_to_node (cpuid); pr_debug("CPU%u: cluster %d core %d thread %d mpidr %#016llx\n", cpuid, cpuid_topo->package_id, cpuid_topo->core_id,
arch/arm64/kvm/sys_regs.c +3 -3
@@ -1746,9 +1746,9 @@ static const struct sys_reg_desc cp14_regs[] = { { Op1( 0), CRn( 0), CRm( 1), Op2( 0), trap_raz_wi },DBG_BCR_BVR_WCR_WVR (1 ),/* DBGDCCINT */ - { Op1( 0), CRn( 0), CRm( 2), Op2( 0), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 2), Op2( 0), trap_debug32, NULL, cp14_DBGDCCINT },/* DBGDSCRext */ - { Op1( 0), CRn( 0), CRm( 2), Op2( 2), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 2), Op2( 2), trap_debug32, NULL, cp14_DBGDSCRext },DBG_BCR_BVR_WCR_WVR (2 ),/* DBGDTR[RT]Xint */ { Op1( 0), CRn( 0), CRm( 3), Op2( 0), trap_raz_wi },
@@ -1763,7 +1763,7 @@ static const struct sys_reg_desc cp14_regs[] = { { Op1( 0), CRn( 0), CRm( 6), Op2( 2), trap_raz_wi },DBG_BCR_BVR_WCR_WVR (6 ),/* DBGVCR */ - { Op1( 0), CRn( 0), CRm( 7), Op2( 0), trap_debug32 }, + { Op1( 0), CRn( 0), CRm( 7), Op2( 0), trap_debug32, NULL, cp14_DBGVCR },DBG_BCR_BVR_WCR_WVR (7 ),DBG_BCR_BVR_WCR_WVR (8 ), DBG_BCR_BVR_WCR_WVR(9),
arch/arm64/mm/numa.c +5 -1
@@ -46,7 +46,11 @@ EXPORT_SYMBOL(node_to_cpumask_map);*/ const struct cpumask *cpumask_of_node (int node) { -if (WARN_ON (node >= nr_node_ids)) + +if (node ==NUMA_NO_NODE ) +return cpu_all_mask; + +if (WARN_ON (node <0 || node >= nr_node_ids))return cpu_none_mask;if (WARN_ON (node_to_cpumask_map[node] ==NULL ))
arch/ia64/kernel/Makefile +1 -1
@@ -41,7 +41,7 @@ obj-y += esi_stub.o # must be in kernel proper endif obj-$(CONFIG_INTEL_IOMMU) += pci-dma.o -obj-$(CONFIG_BINFMT_ELF) += elfcore.o +obj-$(CONFIG_ELF_CORE) += elfcore.o # fp_emulate() expects f2-f5,f16-f31 to contain the user-level state. CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31
arch/ia64/kernel/kprobes.c +2 -75
91 lines not on this page · raw message
arch/mips/dec/setup.c +8 -1
@@ -6,7 +6,7 @@* for more details. * * Copyright (C) 1998 Harald Koerfgen -* Copyright (C) 2000, 2001, 2002, 2003, 2005 Maciej W. Rozycki +* Copyright (C) 2000, 2001, 2002, 2003, 2005, 2020 Maciej W. Rozycki */ #include <linux/console.h> #include <linux/export.h>
@@ -15,6 +15,7 @@#include <linux/ioport.h> #include <linux/irq.h> #include <linux/irqnr.h> +#include <linux/memblock.h> #include <linux/param.h> #include <linux/percpu-defs.h> #include <linux/sched.h>
@@ -22,6 +23,7 @@#include <linux/types.h> #include <linux/pm.h> +#include <asm/addrspace.h> #include <asm/bootinfo.h> #include <asm/cpu.h> #include <asm/cpu-features.h>
@@ -29,7 +31,9 @@#include <asm/irq.h> #include <asm/irq_cpu.h> #include <asm/mipsregs.h> +#include <asm/page.h> #include <asm/reboot.h> +#include <asm/sections.h> #include <asm/time.h> #include <asm/traps.h> #include <asm/wbflush.h>
@@ -166,6 +170,9 @@ void __init plat_mem_setup(void) ioport_resource.start = ~0UL ; ioport_resource.end =0UL ; + +/* Stay away from the firmware working memory area for now. */ +memblock_reserve (PHYS_OFFSET ,__pa_symbol (&_text) -PHYS_OFFSET ); }/*
arch/powerpc/Kconfig +14 -0
@@ -147,6 +147,7 @@ config PPC select ARCH_USE_BUILTIN_BSWAP select ARCH_USE_CMPXCHG_LOCKREF if PPC64 select ARCH_WANT_IPC_PARSE_VERSION + select ARCH_WANT_IRQS_OFF_ACTIVATE_MM select ARCH_WEAK_RELEASE_ACQUIRE select BINFMT_ELF select BUILDTIME_EXTABLE_SORT
@@ -1023,6 +1024,19 @@ config FSL_RIO Include support for RapidIO controller on Freescale embedded processors (MPC8548, MPC8641, etc). +config PPC_RTAS_FILTER + bool "Enable filtering of RTAS syscalls" + default y + depends on PPC_RTAS + help + The RTAS syscall API has security issues that could be used to + compromise system integrity. This option enforces restrictions on the + RTAS calls and arguments passed by userspace programs to mitigate + these issues. + + Say Y unless you know what you are doing and the filter is causing + problems for you. + endmenu config NONSTATIC_KERNEL
arch/powerpc/include/asm/drmem.h +2 -2
@@ -20,7 +20,7 @@ struct drmem_lmb {struct drmem_lmb_info {struct drmem_lmb *lmbs;int n_lmbs; -u32 lmb_size; +u64 lmb_size; };extern struct drmem_lmb_info *drmem_info;
@@ -79,7 +79,7 @@ struct of_drconf_cell_v2 {#define DRCONF_MEM_AI_INVALID 0x00000040#define DRCONF_MEM_RESERVED 0x00000080 -static inline u32 drmem_lmb_size (void ) +static inline u64 drmem_lmb_size (void ) {return drmem_info->lmb_size; }
arch/powerpc/include/asm/mmu_context.h +1 -1
@@ -216,7 +216,7 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,*/ static inline void activate_mm (struct mm_struct *prev,struct mm_struct *next) { -switch_mm (prev, next, current); +switch_mm_irqs_off (prev, next, current); }/* We don't currently use enter_lazy_tlb() for anything */
arch/powerpc/kernel/head_32.S +1 -1
@@ -843,7 +843,7 @@ BEGIN_MMU_FTR_SECTION END_MMU_FTR_SECTION_IFSET(MMU_FTR_USE_HIGH_BATS) blr -load_segment_registers: +_GLOBAL(load_segment_registers) li r0, NUM_USER_SEGMENTS /* load up user segment register values */ mtctr r0 /* for context 0 */ li r3, 0 /* Kp = 0, Ks = 0, VSID = 0 */
arch/powerpc/kernel/rtas.c +153 -0
177 lines not on this page · raw message
arch/powerpc/kernel/sysfs.c +17 -25
71 lines not on this page · raw message
arch/powerpc/kernel/traps.c +1 -1
@@ -877,7 +877,7 @@ static void p9_hmi_special_emu(struct pt_regs *regs) {unsigned int ra, rb, t, i, sel, instr, rc;const void __user *addr; -u8 vbuf[16 ], *vdst; +u8 vbuf[16 ]__aligned(16) , *vdst;unsigned long ea, msr, msr_mask;bool swap;
arch/powerpc/kvm/book3s_hv.c +6 -0
@@ -5191,6 +5191,12 @@ static long kvm_arch_vm_ioctl_hv(struct file *filp,case KVM_PPC_ALLOCATE_HTAB : {u32 htab_order; +/* If we're a nested hypervisor, we currently only support radix */ +if (kvmhv_on_pseries ()) { + r = -EOPNOTSUPP ; +break ; + } + r = -EFAULT ;if (get_user (htab_order, (u32 __user *)argp))break ;
arch/powerpc/platforms/powermac/sleep.S +1 -8
@@ -293,14 +293,7 @@ grackle_wake_up: * we do any r1 memory access as we are not sure they * are in a sane state above the first 256Mb region */ - li r0,16 /* load up segment register values */ - mtctr r0 /* for context 0 */ - lis r3,0x2000 /* Ku = 1, VSID = 0 */ - li r4,0 -3: mtsrin r3,r4 - addi r3,r3,0x111 /* increment VSID */ - addis r4,r4,0x1000 /* address of next segment */ - bdnz 3b + bl load_segment_registers sync isync
arch/powerpc/platforms/powernv/opal-elog.c +26 -7
@@ -179,14 +179,14 @@ static ssize_t raw_attr_read(struct file *filep, struct kobject *kobj,return count; } -static struct elog_obj *create_elog_obj (uint64_t id,size_t size,uint64_t type) +static void create_elog_obj (uint64_t id,size_t size,uint64_t type) {struct elog_obj *elog;int rc; elog =kzalloc (sizeof (*elog),GFP_KERNEL );if (!elog) -return NULL ; +return ; elog->kobj.kset = elog_kset;
@@ -219,18 +219,37 @@ static struct elog_obj *create_elog_obj(uint64_t id, size_t size, uint64_t type) rc =kobject_add (&elog->kobj,NULL ,"0x%llx" , id);if (rc) {kobject_put (&elog->kobj); -return NULL ; +return ; } +/* +* As soon as the sysfs file for this elog is created/activated there is +* a chance the opal_errd daemon (or any userspace) might read and +* acknowledge the elog before kobject_uevent() is called. If that +* happens then there is a potential race between +* elog_ack_store->kobject_put() and kobject_uevent() which leads to a +* use-after-free of a kernfs object resulting in a kernel crash. +* +* To avoid that, we need to take a reference on behalf of the bin file, +* so that our reference remains valid while we call kobject_uevent(). +* We then drop our reference before exiting the function, leaving the +* bin file to drop the last reference (if it hasn't already). +*/ + +/* Take a reference for the bin file */ +kobject_get (&elog->kobj); rc =sysfs_create_bin_file (&elog->kobj, &elog->raw_attr); -if (rc) { +if (rc ==0 ) { +kobject_uevent (&elog->kobj,KOBJ_ADD ); + }else { +/* Drop the reference taken for the bin file */ kobject_put (&elog->kobj); -return NULL ; } -kobject_uevent (&elog->kobj,KOBJ_ADD ); +/* Drop our reference */ +kobject_put (&elog->kobj); -return elog; +return ; }static irqreturn_t elog_event (int irq,void *data)
arch/powerpc/platforms/powernv/smp.c +1 -1
@@ -43,7 +43,7 @@#include <asm/udbg.h> #define DBG(fmt...) udbg_printf(fmt)#else -#define DBG(fmt...) +#define DBG(fmt...) do { } while (0)#endif static void pnv_smp_setup_cpu (int cpu)
arch/powerpc/platforms/pseries/hotplug-memory.c +29 -14
87 lines not on this page · raw message
arch/riscv/include/uapi/asm/auxvec.h +3 -0
@@ -10,4 +10,7 @@/* vDSO location */ #define AT_SYSINFO_EHDR 33 +/* entries in ARCH_DLINFO */ +#define AT_VECTOR_SIZE_ARCH 1 +#endif /* _UAPI_ASM_RISCV_AUXVEC_H */
arch/s390/boot/head.S +11 -10
@@ -360,22 +360,23 @@ ENTRY(startup_kdump) # the save area and does disabled wait with a faulty address. # ENTRY(startup_pgm_check_handler) - stmg %r0,%r15,__LC_SAVE_AREA_SYNC - la %r1,4095 - stctg %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r1) - mvc __LC_GPREGS_SAVE_AREA-4095(128,%r1),__LC_SAVE_AREA_SYNC - mvc __LC_PSW_SAVE_AREA-4095(16,%r1),__LC_PGM_OLD_PSW + stmg %r8,%r15,__LC_SAVE_AREA_SYNC + la %r8,4095 + stctg %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r8) + stmg %r0,%r7,__LC_GPREGS_SAVE_AREA-4095(%r8) + mvc __LC_GPREGS_SAVE_AREA-4095+64(64,%r8),__LC_SAVE_AREA_SYNC + mvc __LC_PSW_SAVE_AREA-4095(16,%r8),__LC_PGM_OLD_PSW mvc __LC_RETURN_PSW(16),__LC_PGM_OLD_PSW ni __LC_RETURN_PSW,0xfc # remove IO and EX bits ni __LC_RETURN_PSW+1,0xfb # remove MCHK bit oi __LC_RETURN_PSW+1,0x2 # set wait state bit - larl %r2,.Lold_psw_disabled_wait - stg %r2,__LC_PGM_NEW_PSW+8 - l %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r2) + larl %r9,.Lold_psw_disabled_wait + stg %r9,__LC_PGM_NEW_PSW+8 + l %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r9) brasl %r14,print_pgm_check_info .Lold_psw_disabled_wait: - la %r1,4095 - lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1) + la %r8,4095 + lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r8) lpswe __LC_RETURN_PSW # disabled wait .Ldump_info_stack: .long 0x5000 + PAGE_SIZE - STACK_FRAME_OVERHEAD
arch/s390/kernel/time.c +85 -33
196 lines not on this page · raw message
arch/sparc/kernel/smp_64.c +14 -51
101 lines not on this page · raw message
arch/um/kernel/sigio.c +3 -3
@@ -35,14 +35,14 @@ int write_sigio_irq(int fd) }/* These are called from os-Linux/sigio.c to protect its pollfds arrays. */ -static DEFINE_SPINLOCK (sigio_spinlock); +static DEFINE_MUTEX (sigio_mutex);void sigio_lock (void ) { -spin_lock (&sigio_spinlock); +mutex_lock (&sigio_mutex); }void sigio_unlock (void ) { -spin_unlock (&sigio_spinlock); +mutex_unlock (&sigio_mutex); }
arch/x86/events/amd/ibs.c +24 -14
@@ -335,11 +335,15 @@ static u64 get_ibs_op_count(u64 config) {u64 count =0 ; +/* +* If the internal 27-bit counter rolled over, the count is MaxCnt +* and the lower 7 bits of CurCnt are randomized. +* Otherwise CurCnt has the full 27-bit current counter value. +*/ if (config &IBS_OP_VAL ) - count += (config &IBS_OP_MAX_CNT ) <<4 ;/* cnt rolled over */ - -if (ibs_caps &IBS_CAPS_RDWROPCNT ) - count += (config &IBS_OP_CUR_CNT ) >>32 ; + count = (config &IBS_OP_MAX_CNT ) <<4 ; +else if (ibs_caps &IBS_CAPS_RDWROPCNT ) + count = (config &IBS_OP_CUR_CNT ) >>32 ;return count; }
@@ -632,18 +636,24 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs) perf_ibs->offset_max, offset + 1); }while (offset < offset_max); +/* +* Read IbsBrTarget, IbsOpData4, and IbsExtdCtl separately +* depending on their availability. +* Can't add to offset_max as they are staggered +*/ if (event->attr.sample_type &PERF_SAMPLE_RAW ) { -/* -* Read IbsBrTarget and IbsOpData4 separately -* depending on their availability. -* Can't add to offset_max as they are staggered -*/ -if (ibs_caps &IBS_CAPS_BRNTRGT ) { -rdmsrl (MSR_AMD64_IBSBRTARGET , *buf++); - size++; +if (perf_ibs == &perf_ibs_op) { +if (ibs_caps &IBS_CAPS_BRNTRGT ) { +rdmsrl (MSR_AMD64_IBSBRTARGET , *buf++); + size++; + } +if (ibs_caps &IBS_CAPS_OPDATA4 ) { +rdmsrl (MSR_AMD64_IBSOPDATA4 , *buf++); + size++; + } } -if (ibs_caps &IBS_CAPS_OPDATA4 ) { -rdmsrl (MSR_AMD64_IBSOPDATA4 , *buf++); +if (perf_ibs == &perf_ibs_fetch && (ibs_caps &IBS_CAPS_FETCHCTLEXTD )) { +rdmsrl (MSR_AMD64_ICIBSEXTDCTL , *buf++); size++; } }
arch/x86/events/intel/core.c +1 -1
@@ -243,7 +243,7 @@ static struct extra_reg intel_skl_extra_regs[] __read_mostly = {static struct event_constraint intel_icl_event_constraints[] = {FIXED_EVENT_CONSTRAINT (0x00c0 ,0 ),/* INST_RETIRED.ANY */ -INTEL_UEVENT_CONSTRAINT (0x1c0 ,0 ),/* INST_RETIRED.PREC_DIST */ +FIXED_EVENT_CONSTRAINT (0x01c0 ,0 ),/* INST_RETIRED.PREC_DIST */ FIXED_EVENT_CONSTRAINT (0x003c ,1 ),/* CPU_CLK_UNHALTED.CORE */ FIXED_EVENT_CONSTRAINT (0x0300 ,2 ),/* CPU_CLK_UNHALTED.REF */ FIXED_EVENT_CONSTRAINT (0x0400 ,3 ),/* SLOTS */
arch/x86/include/asm/msr-index.h +1 -0
@@ -432,6 +432,7 @@#define MSR_AMD64_IBSOP_REG_MASK ((1UL<<MSR_AMD64_IBSOP_REG_COUNT)-1)#define MSR_AMD64_IBSCTL 0xc001103a#define MSR_AMD64_IBSBRTARGET 0xc001103b +#define MSR_AMD64_ICIBSEXTDCTL 0xc001103c#define MSR_AMD64_IBSOPDATA4 0xc001103d#define MSR_AMD64_IBS_REG_COUNT_MAX 8/* includes MSR_AMD64_IBSBRTARGET */ #define MSR_AMD64_SEV 0xc0010131
arch/x86/kernel/unwind_orc.c +1 -8
@@ -311,19 +311,12 @@ EXPORT_SYMBOL_GPL(unwind_get_return_address);unsigned long *unwind_get_return_address_ptr (struct unwind_state *state) { -struct task_struct *task = state->task; -if (unwind_done (state))return NULL ;if (state->regs)return &state->regs->ip; -if (task != current && state->sp == task->thread.sp) { -struct inactive_task_frame *frame = (void *)task->thread.sp; -return &frame->ret_addr; - } -if (state->sp)return (unsigned long *)state->sp -1 ;
@@ -653,7 +646,7 @@ void __unwind_start(struct unwind_state *state, struct task_struct *task, }else {struct inactive_task_frame *frame = (void *)task->thread.sp; - state->sp = task->thread.sp; + state->sp = task->thread.sp +sizeof (*frame); state->bp =READ_ONCE_NOCHECK (frame->bp); state->ip =READ_ONCE_NOCHECK (frame->ret_addr); state->signal = (void *)state->ip == ret_from_fork;
drivers/acpi/acpi_dbg.c +3 -0
@@ -749,6 +749,9 @@ int __init acpi_aml_init(void) {int ret; +if (acpi_disabled) +return -ENODEV ; +/* Initialize AML IO interface */ mutex_init (&acpi_aml_io.lock);init_waitqueue_head (&acpi_aml_io.wait);
drivers/acpi/acpi_extlog.c +3 -3
@@ -223,9 +223,9 @@ static int __init extlog_init(void)u64 cap;int rc; -rdmsrl (MSR_IA32_MCG_CAP , cap); - -if (!(cap &MCG_ELOG_P ) || !extlog_get_l1addr ()) +if (rdmsrl_safe (MSR_IA32_MCG_CAP , &cap) || + !(cap &MCG_ELOG_P ) || + !extlog_get_l1addr ())return -ENODEV ;if (edac_get_report_status () ==EDAC_REPORTING_FORCE ) {
drivers/acpi/button.c +7 -6
@@ -136,6 +136,7 @@ struct acpi_button {int last_state;ktime_t last_time;bool suspended; +bool lid_state_initialized; };static BLOCKING_NOTIFIER_HEAD (acpi_lid_notifier);
@@ -391,6 +392,8 @@ static int acpi_lid_update_state(struct acpi_device *device,static void acpi_lid_initialize_state (struct acpi_device *device) { +struct acpi_button *button =acpi_driver_data (device); +switch (lid_init_state) {case ACPI_BUTTON_LID_INIT_OPEN : (void )acpi_lid_notify_state (device,1 );
@@ -402,13 +405,14 @@ static void acpi_lid_initialize_state(struct acpi_device *device)default :break ; } + + button->lid_state_initialized = true; }static void acpi_button_notify (struct acpi_device *device,u32 event) {struct acpi_button *button =acpi_driver_data (device);struct input_dev *input; -int users;switch (event) {case ACPI_FIXED_HARDWARE_EVENT :
@@ -417,10 +421,7 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)case ACPI_BUTTON_NOTIFY_STATUS : input = button->input;if (button->type ==ACPI_BUTTON_TYPE_LID ) { -mutex_lock (&button->input->mutex); - users = button->input->users; -mutex_unlock (&button->input->mutex); -if (users) +if (button->lid_state_initialized)acpi_lid_update_state (device, true); }else {int keycode;
@@ -465,7 +466,7 @@ static int acpi_button_resume(struct device *dev)struct acpi_button *button =acpi_driver_data (device); button->suspended = false; -if (button->type ==ACPI_BUTTON_TYPE_LID && button->input->users) { +if (button->type ==ACPI_BUTTON_TYPE_LID ) { button->last_state = !!acpi_lid_evaluate_state (device); button->last_time =ktime_get ();acpi_lid_initialize_state (device);
drivers/acpi/ec.c +3 -7
@@ -1968,20 +1968,16 @@ bool acpi_ec_dispatch_gpe(void)if (acpi_any_gpe_status_set (first_ec->gpe))return true; -if (ec_no_wakeup) -return false; -/* * Dispatch the EC GPE in-band, but do not report wakeup in any case * to allow the caller to process events properly after that. */ ret =acpi_dispatch_gpe (NULL , first_ec->gpe); -if (ret ==ACPI_INTERRUPT_HANDLED ) { +if (ret ==ACPI_INTERRUPT_HANDLED )pm_pr_dbg ("EC GPE dispatched\n" ); -/* Flush the event and query workqueues. */ -acpi_ec_flush_work (); - } +/* Flush the event and query workqueues. */ +acpi_ec_flush_work ();return false; }
drivers/acpi/hmat/hmat.c +2 -1
@@ -403,7 +403,8 @@ static int __init hmat_parse_proximity_domain(union acpi_subtable_headers *headepr_info ("HMAT: Memory Flags:%04x Processor Domain:%d Memory Domain:%d\n" , p->flags, p->processor_PD, p->memory_PD); -if (p->flags &ACPI_HMAT_MEMORY_PD_VALID && hmat_revision ==1 ) { +if ((hmat_revision ==1 && p->flags &ACPI_HMAT_MEMORY_PD_VALID ) || + hmat_revision >1 ) { target =find_mem_target (p->memory_PD);if (!target) {pr_debug ("HMAT: Memory Domain missing from SRAT\n" );
drivers/acpi/numa.c +1 -1
@@ -31,7 +31,7 @@ int acpi_numa __initdata;int pxm_to_node (int pxm) { -if (pxm <0 ) +if (pxm <0 || pxm >=MAX_PXM_DOMAINS || numa_off)return NUMA_NO_NODE ;return pxm_to_node_map[pxm]; }
drivers/acpi/video_detect.c +9 -0
@@ -282,6 +282,15 @@ static const struct dmi_system_id video_detect_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "530U4E/540U4E"), }, }, +/* https://bugs.launchpad.net/bugs/1894667 */ + { + .callback = video_detect_force_video, + .ident = "HP 635 Notebook", + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Hewlett-Packard" ), + DMI_MATCH(DMI_PRODUCT_NAME, "HP 635 Notebook PC"), + }, + }, /* Non win8 machines which need native backlight nevertheless */ {
drivers/ata/sata_nv.c +1 -1
@@ -2100,7 +2100,7 @@ static int nv_swncq_sdbfis(struct ata_port *ap) pp->dhfis_bits &= ~done_mask; pp->dmafis_bits &= ~done_mask; pp->sdbfis_bits |= done_mask; -ata_qc_complete_multiple (ap, ap->qc_active ^ done_mask); +ata_qc_complete_multiple (ap,ata_qc_get_active (ap) ^ done_mask);if (!ap->qc_active) {DPRINTK ("over\n" );
drivers/base/core.c +3 -1
@@ -3400,6 +3400,7 @@ static inline bool fwnode_is_primary(struct fwnode_handle *fwnode)*/ void set_primary_fwnode (struct device *dev,struct fwnode_handle *fwnode) { +struct device *parent = dev->parent;struct fwnode_handle *fn = dev->fwnode;if (fwnode) {
@@ -3414,7 +3415,8 @@ void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) }else {if (fwnode_is_primary (fn)) { dev->fwnode = fn->secondary; - fn->secondary =NULL ; +if (!(parent && fn == parent->fwnode)) + fn->secondary =ERR_PTR (-ENODEV ); }else { dev->fwnode =NULL ; }
drivers/base/power/runtime.c +1 -4
@@ -291,8 +291,7 @@ static int rpm_get_suppliers(struct device *dev) device_links_read_lock_held()) {int retval; -if (!(link->flags &DL_FLAG_PM_RUNTIME ) || -READ_ONCE (link->status) ==DL_STATE_SUPPLIER_UNBIND ) +if (!(link->flags &DL_FLAG_PM_RUNTIME ))continue ; retval =pm_runtime_get_sync (link->supplier);
@@ -312,8 +311,6 @@ static void rpm_put_suppliers(struct device *dev)list_for_each_entry_rcu (link, &dev->links.suppliers, c_node,device_links_read_lock_held ()) { -if (READ_ONCE (link->status) ==DL_STATE_SUPPLIER_UNBIND ) -continue ;while (refcount_dec_not_one (&link->rpm_active))pm_runtime_put (link->supplier);
drivers/block/nbd.c +1 -1
@@ -787,9 +787,9 @@ static void recv_work(struct work_struct *work)blk_mq_complete_request (blk_mq_rq_from_pdu (cmd)); } +nbd_config_put (nbd);atomic_dec (&config->recv_threads);wake_up (&config->recv_wq); -nbd_config_put (nbd);kfree (args); }
drivers/block/xen-blkback/blkback.c +17 -5
@@ -202,7 +202,7 @@ static inline void shrink_free_pagepool(struct xen_blkif_ring *ring, int num)#define vaddr (page) ((unsigned long)pfn_to_kaddr(page_to_pfn(page))) -static int do_block_io_op (struct xen_blkif_ring *ring); +static int do_block_io_op (struct xen_blkif_ring *ring,unsigned int *eoi_flags);static int dispatch_rw_block_io (struct xen_blkif_ring *ring,struct blkif_request *req,struct pending_req *pending_req);
@@ -615,6 +615,8 @@ int xen_blkif_schedule(void *arg)struct xen_vbd *vbd = &blkif->vbd;unsigned long timeout;int ret; +bool do_eoi; +unsigned int eoi_flags =XEN_EOI_FLAG_SPURIOUS ;set_freezable ();while (!kthread_should_stop ()) {
@@ -639,16 +641,23 @@ int xen_blkif_schedule(void *arg)if (timeout ==0 ) goto purge_gnt_list; + do_eoi = ring->waiting_reqs; + ring->waiting_reqs =0 ;smp_mb ();/* clear flag *before* checking for work */ - ret =do_block_io_op (ring); + ret =do_block_io_op (ring, &eoi_flags);if (ret >0 ) ring->waiting_reqs =1 ;if (ret == -EACCES )wait_event_interruptible (ring->shutdown_wq,kthread_should_stop ()); +if (do_eoi && !ring->waiting_reqs) { +xen_irq_lateeoi (ring->irq, eoi_flags); + eoi_flags |=XEN_EOI_FLAG_SPURIOUS ; + } + purge_gnt_list:if (blkif->vbd.feature_gnt_persistent &&time_after (jiffies, ring->next_lru)) {
@@ -1121,7 +1130,7 @@ static void end_block_io_op(struct bio *bio)* and transmute it to the block API to hand it over to the proper block disk. */ static int -__do_block_io_op (struct xen_blkif_ring *ring) +__do_block_io_op (struct xen_blkif_ring *ring,unsigned int *eoi_flags) {union blkif_back_rings *blk_rings = &ring->blk_rings;struct blkif_request req;
@@ -1144,6 +1153,9 @@ __do_block_io_op(struct xen_blkif_ring *ring)if (RING_REQUEST_CONS_OVERFLOW (&blk_rings->common, rc))break ; +/* We've seen a request, so clear spurious eoi flag. */ + *eoi_flags &= ~XEN_EOI_FLAG_SPURIOUS ; +if (kthread_should_stop ()) { more_to_do =1 ;break ;
@@ -1202,13 +1214,13 @@ __do_block_io_op(struct xen_blkif_ring *ring) }static int -do_block_io_op (struct xen_blkif_ring *ring) +do_block_io_op (struct xen_blkif_ring *ring,unsigned int *eoi_flags) {union blkif_back_rings *blk_rings = &ring->blk_rings;int more_to_do; do { - more_to_do = __do_block_io_op(ring); + more_to_do = __do_block_io_op(ring, eoi_flags); if (more_to_do) break;
drivers/block/xen-blkback/xenbus.c +2 -3
@@ -229,9 +229,8 @@ static int xen_blkif_map(struct xen_blkif_ring *ring, grant_ref_t *gref,BUG (); } - err =bind_interdomain_evtchn_to_irqhandler (blkif->domid, evtchn, - xen_blkif_be_int,0 , -"blkif-backend" , ring); + err =bind_interdomain_evtchn_to_irqhandler_lateeoi (blkif->domid, + evtchn, xen_blkif_be_int,0 ,"blkif-backend" , ring);if (err <0 ) {xenbus_unmap_ring_vfree (blkif->be->dev, ring->blk_ring); ring->blk_rings.common.sring =NULL ;
drivers/bus/fsl-mc/mc-io.c +6 -1
@@ -129,7 +129,12 @@ int __must_check fsl_create_mc_io(struct device *dev,*/ void fsl_destroy_mc_io (struct fsl_mc_io *mc_io) { -struct fsl_mc_device *dpmcp_dev = mc_io->dpmcp_dev; +struct fsl_mc_device *dpmcp_dev; + +if (!mc_io) +return ; + + dpmcp_dev = mc_io->dpmcp_dev;if (dpmcp_dev)fsl_mc_io_unset_dpmcp (mc_io);
drivers/clk/ti/clockdomain.c +2 -0
@@ -146,10 +146,12 @@ static void __init of_ti_clockdomain_setup(struct device_node *node)if (!omap2_clk_is_hw_omap (clk_hw)) {pr_warn ("can't setup clkdm for basic clk %s\n" ,__clk_get_name (clk)); +clk_put (clk);continue ; }to_clk_hw_omap (clk_hw)->clkdm_name = clkdm_name;omap2_init_clk_clkdm (clk_hw); +clk_put (clk); } }
drivers/cpufreq/acpi-cpufreq.c +2 -1
@@ -688,7 +688,8 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)cpumask_copy (policy->cpus,topology_core_cpumask (cpu)); } -if (check_amd_hwpstate_cpu (cpu) && !acpi_pstate_strict) { +if (check_amd_hwpstate_cpu (cpu) && boot_cpu_data.x86 <0x19 && + !acpi_pstate_strict) {cpumask_clear (policy->cpus);cpumask_set_cpu (cpu, policy->cpus); cpumask_copy(data->freqdomain_cpus,
drivers/cpufreq/sti-cpufreq.c +4 -2
@@ -141,7 +141,8 @@ static const struct reg_field sti_stih407_dvfs_regfields[DVFS_MAX_REGFIELDS] = {static const struct reg_field *sti_cpufreq_match (void ) {if (of_machine_is_compatible ("st,stih407" ) || -of_machine_is_compatible ("st,stih410" )) +of_machine_is_compatible ("st,stih410" ) || +of_machine_is_compatible ("st,stih418" ))return sti_stih407_dvfs_regfields;return NULL ;
@@ -258,7 +259,8 @@ static int sti_cpufreq_init(void)int ret;if ((!of_machine_is_compatible ("st,stih407" )) && - (!of_machine_is_compatible ("st,stih410" ))) + (!of_machine_is_compatible ("st,stih410" )) && + (!of_machine_is_compatible ("st,stih418" )))return -ENODEV ; ddata.cpu =get_cpu_device (0 );
drivers/dma/dma-jz4780.c +4 -3
@@ -639,11 +639,11 @@ static enum dma_status jz4780_dma_tx_status(struct dma_chan *chan,unsigned long flags;unsigned long residue =0 ; +spin_lock_irqsave (&jzchan->vchan.lock, flags); + status =dma_cookie_status (chan, cookie, txstate);if ((status ==DMA_COMPLETE ) || (txstate ==NULL )) -return status; - -spin_lock_irqsave (&jzchan->vchan.lock, flags); + goto out_unlock_irqrestore; vdesc =vchan_find_desc (&jzchan->vchan, cookie);if (vdesc) {
@@ -660,6 +660,7 @@ static enum dma_status jz4780_dma_tx_status(struct dma_chan *chan, && jzchan->desc->status & (JZ_DMA_DCS_AR | JZ_DMA_DCS_HLT)) status =DMA_ERROR ; +out_unlock_irqrestore:spin_unlock_irqrestore (&jzchan->vchan.lock, flags);return status; }
drivers/extcon/extcon-ptn5150.c +4 -4
@@ -127,7 +127,7 @@ static void ptn5150_irq_work(struct work_struct *work)case PTN5150_DFP_ATTACHED :extcon_set_state_sync (info->edev,EXTCON_USB_HOST , false); -gpiod_set_value (info->vbus_gpiod,0 ); +gpiod_set_value_cansleep (info->vbus_gpiod,0 );extcon_set_state_sync (info->edev,EXTCON_USB , true);break ;
@@ -138,9 +138,9 @@ static void ptn5150_irq_work(struct work_struct *work) PTN5150_REG_CC_VBUS_DETECTION_MASK) >> PTN5150_REG_CC_VBUS_DETECTION_SHIFT);if (vbus) -gpiod_set_value (info->vbus_gpiod,0 ); +gpiod_set_value_cansleep (info->vbus_gpiod,0 );else -gpiod_set_value (info->vbus_gpiod,1 ); +gpiod_set_value_cansleep (info->vbus_gpiod,1 );extcon_set_state_sync (info->edev,EXTCON_USB_HOST , true);
@@ -156,7 +156,7 @@ static void ptn5150_irq_work(struct work_struct *work) EXTCON_USB_HOST, false);extcon_set_state_sync (info->edev,EXTCON_USB , false); -gpiod_set_value (info->vbus_gpiod,0 ); +gpiod_set_value_cansleep (info->vbus_gpiod,0 ); } }
drivers/firmware/arm_scmi/base.c +2 -0
@@ -173,6 +173,8 @@ static int scmi_base_implementation_list_get(const struct scmi_handle *handle, protocols_imp[tot_num_ret + loop] = *(list + loop); tot_num_ret += loop_num_ret; + +scmi_reset_rx_to_maxsz (handle, t); }while (loop_num_ret);scmi_xfer_put (handle, t);
drivers/firmware/arm_scmi/clock.c +2 -0
@@ -177,6 +177,8 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id, } tot_rate_cnt += num_returned; + +scmi_reset_rx_to_maxsz (handle, t);/* * check for both returned and remaining to avoid infinite * loop due to buggy firmware
drivers/firmware/arm_scmi/common.h +2 -0
@@ -103,6 +103,8 @@ int scmi_do_xfer_with_response(const struct scmi_handle *h, struct scmi_xfer *xfer);int scmi_xfer_get_init (const struct scmi_handle *h,u8 msg_id,u8 prot_id,size_t tx_size,size_t rx_size,struct scmi_xfer **p); +void scmi_reset_rx_to_maxsz (const struct scmi_handle *handle, +struct scmi_xfer *xfer);int scmi_handle_put (const struct scmi_handle *handle);struct scmi_handle *scmi_handle_get (struct device *dev);void scmi_set_handle (struct scmi_device *scmi_dev);
drivers/firmware/arm_scmi/driver.c +8 -0
@@ -481,6 +481,14 @@ int scmi_do_xfer(const struct scmi_handle *handle, struct scmi_xfer *xfer)return ret; } +void scmi_reset_rx_to_maxsz (const struct scmi_handle *handle, +struct scmi_xfer *xfer) +{ +struct scmi_info *info =handle_to_scmi_info (handle); + + xfer->rx.len = info->desc->max_msg_size; +} +#define SCMI_MAX_RESPONSE_TIMEOUT (2 * MSEC_PER_SEC)/**
drivers/firmware/arm_scmi/perf.c +2 -0
@@ -281,6 +281,8 @@ scmi_perf_describe_levels_get(const struct scmi_handle *handle, u32 domain, } tot_opp_cnt += num_returned; + +scmi_reset_rx_to_maxsz (handle, t);/* * check for both returned and remaining to avoid infinite * loop due to buggy firmware
drivers/firmware/arm_scmi/reset.c +1 -3
@@ -35,9 +35,7 @@ struct scmi_msg_reset_domain_reset {#define EXPLICIT_RESET_ASSERT BIT(1)#define ASYNCHRONOUS_RESET BIT(2)__le32 reset_state; -#define ARCH_RESET_TYPE BIT(31) -#define COLD_RESET_STATE BIT(0) -#define ARCH_COLD_RESET (ARCH_RESET_TYPE | COLD_RESET_STATE) +#define ARCH_COLD_RESET 0 };struct reset_dom_info {
drivers/firmware/arm_scmi/sensors.c +2 -0
@@ -154,6 +154,8 @@ static int scmi_sensor_description_get(const struct scmi_handle *handle, } desc_index += num_returned; + +scmi_reset_rx_to_maxsz (handle, t);/* * check for both returned and remaining to avoid infinite * loop due to buggy firmware
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +1 -1
@@ -3890,7 +3890,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,amdgpu_device_lock_adev (tmp_adev, false); r =amdgpu_device_pre_asic_reset (tmp_adev, -NULL , + (tmp_adev == adev) ? job :NULL , &need_full_reset);/*TODO Should we stop ?*/ if (r) {
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +10 -0
@@ -561,6 +561,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,struct ww_acquire_ctx ticket;struct list_head list, duplicates;uint64_t va_flags; +uint64_t vm_size;int r =0 ;if (args->va_address <AMDGPU_VA_RESERVED_SIZE ) {
@@ -581,6 +582,15 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data, args->va_address &=AMDGPU_GMC_HOLE_MASK ; + vm_size = adev->vm_manager.max_pfn *AMDGPU_GPU_PAGE_SIZE ; + vm_size -=AMDGPU_VA_RESERVED_SIZE ; +if (args->va_address + args->map_size > vm_size) { +dev_dbg (&dev->pdev->dev, +"va_address 0x%llx is in top reserved area 0x%llx\n" , + args->va_address + args->map_size, vm_size); +return -EINVAL ; + } +if ((args->flags & ~valid_flags) && (args->flags & ~prt_flags)) {dev_dbg (&dev->pdev->dev,"invalid flags combination 0x%08X\n" , args->flags);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +2 -2
@@ -105,8 +105,8 @@ struct amdgpu_bo_list_entry;#define AMDGPU_MMHUB_0 1#define AMDGPU_MMHUB_1 2 -/* hardcode that limit for now */ -#define AMDGPU_VA_RESERVED_SIZE (1ULL << 20) +/* Reserve 2MB at top/bottom of address space for kernel use */ +#define AMDGPU_VA_RESERVED_SIZE (2ULL << 20)/* max vmids dedicated for process */ #define AMDGPU_VM_MAX_RESERVED_VMID 1
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager_v10.c +3 -2
@@ -58,8 +58,9 @@ static int update_qpd_v10(struct device_queue_manager *dqm,/* check if sh_mem_config register already configured */ if (qpd->sh_mem_config ==0 ) { qpd->sh_mem_config = -SH_MEM_ALIGNMENT_MODE_UNALIGNED << -SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT ; + (SH_MEM_ALIGNMENT_MODE_UNALIGNED << +SH_MEM_CONFIG__ALIGNMENT_MODE__SHIFT ) | + (3 <<SH_MEM_CONFIG__INITIAL_INST_PREFETCH__SHIFT );#if 0 /* TODO: * This shouldn't be an issue with Navi10. Verify.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +7 -0
@@ -3956,6 +3956,13 @@ static void amdgpu_dm_connector_destroy(struct drm_connector *connector)struct amdgpu_device *adev = connector->dev->dev_private;struct amdgpu_display_manager *dm = &adev->dm; +/* +* Call only if mst_mgr was iniitalized before since it's not done +* for all connector types. +*/ +if (aconnector->mst_mgr.dev) +drm_dp_mst_topology_mgr_destroy (&aconnector->mst_mgr); +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE ) ||\ defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE )
drivers/gpu/drm/amd/display/dc/core/dc_link.c +1 -1
@@ -2268,7 +2268,7 @@ enum dc_status dc_link_validate_mode_timing(/* A hack to avoid failing any modes for EDID override feature on * topology change such as lower quality cable for DP or different dongle */ -if (link->remote_sinks[0 ]) +if (link->remote_sinks[0 ] && link->remote_sinks[0 ]->sink_signal ==SIGNAL_TYPE_VIRTUAL )return DC_OK ;/* Passive Dongle */
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_stream_encoder.c +2 -2
@@ -898,10 +898,10 @@ void enc1_stream_encoder_dp_blank(*/ REG_UPDATE (DP_VID_STREAM_CNTL ,DP_VID_STREAM_DIS_DEFER ,2 );/* Larger delay to wait until VBLANK - use max retry of -* 10us*5000=50ms. This covers 41.7ms of minimum 24 Hz mode + +* 10us*10200=102ms. This covers 100.0ms of minimum 10 Hz mode + * a little more because we may not trust delay accuracy. */ - max_retries =DP_BLANK_MAX_RETRY *250 ; + max_retries =DP_BLANK_MAX_RETRY *501 ;/* disable DP stream */ REG_UPDATE (DP_VID_STREAM_CNTL ,DP_VID_STREAM_ENABLE ,0 );
drivers/gpu/drm/amd/display/dc/gpio/gpio_base.c +2 -2
@@ -63,13 +63,13 @@ enum gpio_result dal_gpio_open_ex( enum gpio_mode mode) {if (gpio->pin) { -ASSERT_CRITICAL (false); +BREAK_TO_DEBUGGER ();return GPIO_RESULT_ALREADY_OPENED ; }// No action if allocation failed during gpio construct if (!gpio->hw_container.ddc) { -ASSERT_CRITICAL (false); +BREAK_TO_DEBUGGER ();return GPIO_RESULT_NON_SPECIFIC_ERROR ; } gpio->mode = mode;
drivers/gpu/drm/amd/display/dc/os_types.h +1 -1
@@ -57,7 +57,7 @@* general debug capabilities * */ -#if defined(CONFIG_HAVE_KGDB ) || defined(CONFIG_KGDB ) +#if defined(CONFIG_DEBUG_KERNEL_DC ) && (defined(CONFIG_HAVE_KGDB ) || defined(CONFIG_KGDB ))#define ASSERT_CRITICAL (expr) do { \ if (WARN_ON(!(expr))) { \ kgdb_breakpoint(); \
drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c +1 -1
@@ -2864,7 +2864,7 @@ static int smu7_vblank_too_short(struct pp_hwmgr *hwmgr,if (hwmgr->is_kicker) switch_limit_us = data->is_memory_gddr5 ?450 :150 ;else - switch_limit_us = data->is_memory_gddr5 ?190 :150 ; + switch_limit_us = data->is_memory_gddr5 ?200 :150 ;break ;case CHIP_VEGAM : switch_limit_us =30 ;
drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c +10 -2
@@ -295,8 +295,12 @@ static int stdp4028_ge_b850v3_fw_probe(struct i2c_client *stdp4028_i2c, const struct i2c_device_id *id) {struct device *dev = &stdp4028_i2c->dev; +int ret; + + ret =ge_b850v3_lvds_init (dev); -ge_b850v3_lvds_init (dev); +if (ret) +return ret; ge_b850v3_lvds_ptr->stdp4028_i2c = stdp4028_i2c;i2c_set_clientdata (stdp4028_i2c, ge_b850v3_lvds_ptr);
@@ -354,8 +358,12 @@ static int stdp2690_ge_b850v3_fw_probe(struct i2c_client *stdp2690_i2c, const struct i2c_device_id *id) {struct device *dev = &stdp2690_i2c->dev; +int ret; + + ret =ge_b850v3_lvds_init (dev); -ge_b850v3_lvds_init (dev); +if (ret) +return ret; ge_b850v3_lvds_ptr->stdp2690_i2c = stdp2690_i2c;i2c_set_clientdata (stdp2690_i2c, ge_b850v3_lvds_ptr);
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +7 -2
@@ -365,7 +365,6 @@ static void dw_mipi_message_config(struct dw_mipi_dsi *dsi,if (lpm) val |=CMD_MODE_ALL_LP ; -dsi_write (dsi,DSI_LPCLK_CTRL , lpm ?0 :PHY_TXREQUESTCLKHS );dsi_write (dsi,DSI_CMD_MODE_CFG , val); }
@@ -541,16 +540,22 @@ static void dw_mipi_dsi_video_mode_config(struct dw_mipi_dsi *dsi)static void dw_mipi_dsi_set_mode (struct dw_mipi_dsi *dsi,unsigned long mode_flags) { +u32 val; +dsi_write (dsi,DSI_PWR_UP ,RESET );if (mode_flags &MIPI_DSI_MODE_VIDEO ) {dsi_write (dsi,DSI_MODE_CFG ,ENABLE_VIDEO_MODE );dw_mipi_dsi_video_mode_config (dsi); -dsi_write (dsi,DSI_LPCLK_CTRL ,PHY_TXREQUESTCLKHS ); }else {dsi_write (dsi,DSI_MODE_CFG ,ENABLE_CMD_MODE ); } + val =PHY_TXREQUESTCLKHS ; +if (dsi->mode_flags &MIPI_DSI_CLOCK_NON_CONTINUOUS ) + val |=AUTO_CLKLANE_CTRL ; +dsi_write (dsi,DSI_LPCLK_CTRL , val); +dsi_write (dsi,DSI_PWR_UP ,POWERUP ); }
drivers/gpu/drm/i915/i915_drv.h +5 -1
@@ -33,6 +33,8 @@#include <uapi/drm/i915_drm.h> #include <uapi/drm/drm_fourcc.h> +#include <asm/hypervisor.h> +#include <linux/io-mapping.h> #include <linux/i2c.h> #include <linux/i2c-algo-bit.h>
@@ -2197,7 +2199,9 @@ static inline bool intel_vtd_active(void)if (intel_iommu_gfx_mapped)return true;#endif -return false; + +/* Running as a guest, we assume the host is enforcing VT'd */ +return !hypervisor_is_type (X86_HYPER_NATIVE ); }static inline bool intel_scanout_needs_vtd_wa (struct drm_i915_private *dev_priv)
drivers/gpu/drm/ttm/ttm_bo.c +1 -1
@@ -761,7 +761,7 @@ bool ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,/* Don't evict this BO if it's outside of the * requested placement range */ -if (place->fpfn >= (bo->mem.start + bo->mem.size) || +if (place->fpfn >= (bo->mem.start + bo->mem.num_pages) || (place->lpfn && place->lpfn <= bo->mem.start))return false;
drivers/hid/wacom_wac.c +3 -1
@@ -2773,7 +2773,9 @@ static int wacom_wac_collection(struct hid_device *hdev, struct hid_report *repoif (report->type !=HID_INPUT_REPORT )return -1 ; -if (WACOM_PEN_FIELD (field) && wacom->wacom_wac.pen_input) +if (WACOM_PAD_FIELD (field)) +return 0 ; +else if (WACOM_PEN_FIELD (field) && wacom->wacom_wac.pen_input)wacom_wac_pen_report (hdev, report);else if (WACOM_FINGER_FIELD (field) && wacom->wacom_wac.touch_input)wacom_wac_finger_report (hdev, report);
drivers/hwtracing/coresight/coresight-priv.h +2 -1
@@ -147,7 +147,8 @@ static inline void coresight_write_reg_pair(void __iomem *addr, u64 val,void coresight_disable_path (struct list_head *path);int coresight_enable_path (struct list_head *path,u32 mode,void *sink_data);struct coresight_device *coresight_get_sink (struct list_head *path); -struct coresight_device *coresight_get_enabled_sink (bool reset); +struct coresight_device * +coresight_get_enabled_sink (struct coresight_device *source);struct coresight_device *coresight_get_sink_by_id (u32 id);struct list_head *coresight_build_path (struct coresight_device *csdev,struct coresight_device *sink);
drivers/hwtracing/coresight/coresight.c +27 -35
88 lines not on this page · raw message
drivers/i2c/busses/i2c-imx.c +13 -11
@@ -1112,14 +1112,6 @@ static int i2c_imx_probe(struct platform_device *pdev)return ret; } -/* Request IRQ */ - ret =devm_request_irq (&pdev->dev, irq, i2c_imx_isr,IRQF_SHARED , - pdev->name, i2c_imx); -if (ret) { -dev_err (&pdev->dev,"can't claim irq %d\n" , irq); - goto clk_disable; - } -/* Init queue */ init_waitqueue_head (&i2c_imx->queue);
@@ -1138,6 +1130,14 @@ static int i2c_imx_probe(struct platform_device *pdev)if (ret <0 ) goto rpm_disable; +/* Request IRQ */ + ret =request_threaded_irq (irq, i2c_imx_isr,NULL ,IRQF_SHARED , + pdev->name, i2c_imx); +if (ret) { +dev_err (&pdev->dev,"can't claim irq %d\n" , irq); + goto rpm_disable; + } +/* Set up clock divider */ i2c_imx->bitrate =IMX_I2C_BIT_RATE ; ret = of_property_read_u32(pdev->dev.of_node,
@@ -1180,13 +1180,12 @@ static int i2c_imx_probe(struct platform_device *pdev) clk_notifier_unregister:clk_notifier_unregister (i2c_imx->clk, &i2c_imx->clk_change_nb); +free_irq (irq, i2c_imx); rpm_disable:pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev);pm_runtime_set_suspended (&pdev->dev);pm_runtime_dont_use_autosuspend (&pdev->dev); - -clk_disable:clk_disable_unprepare (i2c_imx->clk);return ret; }
@@ -1194,7 +1193,7 @@ static int i2c_imx_probe(struct platform_device *pdev)static int i2c_imx_remove (struct platform_device *pdev) {struct imx_i2c_struct *i2c_imx =platform_get_drvdata (pdev); -int ret; +int irq, ret; ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 )
@@ -1214,6 +1213,9 @@ static int i2c_imx_remove(struct platform_device *pdev)imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_I2SR );clk_notifier_unregister (i2c_imx->clk, &i2c_imx->clk_change_nb); + irq =platform_get_irq (pdev,0 ); +if (irq >=0 ) +free_irq (irq, i2c_imx);clk_disable_unprepare (i2c_imx->clk);pm_runtime_put_noidle (&pdev->dev);
drivers/iio/adc/rcar-gyroadc.c +15 -6
@@ -357,7 +357,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev) num_channels =ARRAY_SIZE (rcar_gyroadc_iio_channels_3);break ;default : -return -EINVAL ; + goto err_e_inval; }/*
@@ -374,7 +374,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)dev_err (dev,"Failed to get child reg property of ADC \"%pOFn\".\n" , child); -return ret; + goto err_of_node_put; }/* Channel number is too high. */
@@ -382,7 +382,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)dev_err (dev,"Only %i channels supported with %pOFn, but reg = <%i>.\n" , num_channels, child, reg); -return -EINVAL ; + goto err_e_inval; } }
@@ -391,7 +391,7 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)dev_err (dev,"Channel %i uses different ADC mode than the rest.\n" , reg); -return -EINVAL ; + goto err_e_inval; }/* Channel is valid, grab the regulator. */
@@ -401,7 +401,8 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)if (IS_ERR (vref)) {dev_dbg (dev,"Channel %i 'vref' supply not connected.\n" , reg); -return PTR_ERR (vref); + ret =PTR_ERR (vref); + goto err_of_node_put; } priv->vref[reg] = vref;
@@ -425,8 +426,10 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev)* attached to the GyroADC at a time, so if we found it, * we can stop parsing here. */ -if (childmode ==RCAR_GYROADC_MODE_SELECT_1_MB88101A ) +if (childmode ==RCAR_GYROADC_MODE_SELECT_1_MB88101A ) { +of_node_put (child);break ; + } }if (first) {
@@ -435,6 +438,12 @@ static int rcar_gyroadc_parse_subdevs(struct iio_dev *indio_dev) }return 0 ; + +err_e_inval: + ret = -EINVAL ; +err_of_node_put: +of_node_put (child); +return ret; }static void rcar_gyroadc_deinit_supplies (struct iio_dev *indio_dev)
drivers/iio/adc/ti-adc0832.c +8 -3
@@ -28,6 +28,12 @@ struct adc0832 {struct regulator *reg;struct mutex lock;u8 mux_bits; +/* +* Max size needed: 16x 1 byte ADC data + 8 bytes timestamp +* May be shorter if not all channels are enabled subject +* to the timestamp remaining 8 byte aligned. +*/ +u8 data[24 ]__aligned(8) ;u8 tx_buf[2 ]____cacheline_aligned ;u8 rx_buf[2 ];
@@ -199,7 +205,6 @@ static irqreturn_t adc0832_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct adc0832 *adc =iio_priv (indio_dev); -u8 data[24 ] = { };/* 16x 1 byte ADC data + 8 bytes timestamp */ int scan_index;int i =0 ;
@@ -217,10 +222,10 @@ static irqreturn_t adc0832_trigger_handler(int irq, void *p) goto out; } - data[i] = ret; + adc->data[i] = ret; i++; } -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, adc->data,iio_get_time_ns (indio_dev)); out:mutex_unlock (&adc->lock);
drivers/iio/adc/ti-adc12138.c +9 -4
@@ -47,6 +47,12 @@ struct adc12138 {struct completion complete;/* The number of cclk periods for the S/H's acquisition time */ unsigned int acquisition_time; +/* +* Maximum size needed: 16x 2 bytes ADC data + 8 bytes timestamp. +* Less may be need if not all channels are enabled, as long as +* the 8 byte alignment of the timestamp is maintained. +*/ +__be16 data[20 ]__aligned(8) ;u8 tx_buf[2 ]____cacheline_aligned ;u8 rx_buf[2 ];
@@ -329,7 +335,6 @@ static irqreturn_t adc12138_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct adc12138 *adc =iio_priv (indio_dev); -__be16 data[20 ] = { };/* 16x 2 bytes ADC data + 8 bytes timestamp */ __be16 trash;int ret;int scan_index;
@@ -345,7 +350,7 @@ static irqreturn_t adc12138_trigger_handler(int irq, void *p)reinit_completion (&adc->complete); ret =adc12138_start_and_read_conv (adc, scan_chan, - i ? &data[i -1 ] : &trash); + i ? &adc->data[i -1 ] : &trash);if (ret) {dev_warn (&adc->spi->dev,"failed to start conversion\n" );
@@ -362,7 +367,7 @@ static irqreturn_t adc12138_trigger_handler(int irq, void *p) }if (i) { - ret =adc12138_read_conv_data (adc, &data[i -1 ]); + ret =adc12138_read_conv_data (adc, &adc->data[i -1 ]);if (ret) {dev_warn (&adc->spi->dev,"failed to get conversion data\n" );
@@ -370,7 +375,7 @@ static irqreturn_t adc12138_trigger_handler(int irq, void *p) } } -iio_push_to_buffers_with_timestamp (indio_dev, data, +iio_push_to_buffers_with_timestamp (indio_dev, adc->data,iio_get_time_ns (indio_dev)); out:mutex_unlock (&adc->lock);
drivers/iio/gyro/itg3200_buffer.c +11 -4
@@ -46,13 +46,20 @@ static irqreturn_t itg3200_trigger_handler(int irq, void *p)struct iio_poll_func *pf = p;struct iio_dev *indio_dev = pf->indio_dev;struct itg3200 *st =iio_priv (indio_dev); -__be16 buf[ITG3200_SCAN_ELEMENTS +sizeof (s64)/sizeof (u16)]; - -int ret =itg3200_read_all_channels (st->i2c, buf); +/* +* Ensure correct alignment and padding including for the +* timestamp that may be inserted. +*/ +struct { +__be16 buf[ITG3200_SCAN_ELEMENTS ]; +s64 ts__aligned(8) ; + } scan; + +int ret =itg3200_read_all_channels (st->i2c, scan.buf);if (ret <0 ) goto error_ret; -iio_push_to_buffers_with_timestamp (indio_dev, buf, pf->timestamp); +iio_push_to_buffers_with_timestamp (indio_dev, &scan, pf->timestamp);iio_trigger_notify_done (indio_dev->trig);
drivers/iio/light/si1145.c +11 -8
@@ -169,6 +169,7 @@ struct si1145_part_info {* @part_info: Part information * @trig: Pointer to iio trigger * @meas_rate: Value of MEAS_RATE register. Only set in HW in auto mode +* @buffer: Used to pack data read from sensor. */ struct si1145_data {struct i2c_client *client;
@@ -180,6 +181,14 @@ struct si1145_data {bool autonomous;struct iio_trigger *trig;int meas_rate; +/* +* Ensure timestamp will be naturally aligned if present. +* Maximum buffer size (may be only partly used if not all +* channels are enabled): +* 6*2 bytes channels data + 4 bytes alignment + +* 8 bytes timestamp +*/ +u8 buffer[24 ]__aligned(8) ; };/**
@@ -441,12 +450,6 @@ static irqreturn_t si1145_trigger_handler(int irq, void *private)struct iio_poll_func *pf = private;struct iio_dev *indio_dev = pf->indio_dev;struct si1145_data *data =iio_priv (indio_dev); -/* -* Maximum buffer size: -* 6*2 bytes channels data + 4 bytes alignment + -* 8 bytes timestamp -*/ -u8 buffer[24 ];int i, j =0 ;int ret;u8 irq_status =0 ;
@@ -479,7 +482,7 @@ static irqreturn_t si1145_trigger_handler(int irq, void *private) ret =i2c_smbus_read_i2c_block_data_or_emulated ( data->client, indio_dev->channels[i].address, -sizeof (u16) * run, &buffer[j]); +sizeof (u16) * run, &data->buffer[j]);if (ret <0 ) goto done; j += run *sizeof (u16);
@@ -494,7 +497,7 @@ static irqreturn_t si1145_trigger_handler(int irq, void *private) goto done; } -iio_push_to_buffers_with_timestamp (indio_dev, buffer, +iio_push_to_buffers_with_timestamp (indio_dev, data->buffer,iio_get_time_ns (indio_dev)); done:
drivers/infiniband/hw/qedr/qedr_iw_cm.c +1 -0
@@ -727,6 +727,7 @@ int qedr_iw_destroy_listen(struct iw_cm_id *cm_id) listener->qed_handle); cm_id->rem_ref (cm_id); +kfree (listener);return rc; }
drivers/input/serio/hil_mlc.c +18 -3
@@ -74,7 +74,7 @@ EXPORT_SYMBOL(hil_mlc_unregister);static LIST_HEAD (hil_mlcs);static DEFINE_RWLOCK (hil_mlcs_lock);static struct timer_list hil_mlcs_kicker; -static int hil_mlcs_probe; +static int hil_mlcs_probe, hil_mlc_stop;static void hil_mlcs_process (unsigned long unused); static DECLARE_TASKLET_DISABLED(hil_mlcs_tasklet, hil_mlcs_process, 0);
@@ -702,9 +702,13 @@ static int hilse_donode(hil_mlc *mlc)if (!mlc->ostarted) { mlc->ostarted =1 ; mlc->opacket = pack; - mlc->out (mlc); + rc = mlc->out (mlc); nextidx =HILSEN_DOZE ;write_unlock_irqrestore (&mlc->lock, flags); +if (rc) { + hil_mlc_stop =1 ; +return 1 ; + }break ; } mlc->ostarted =0 ;
@@ -715,8 +719,13 @@ static int hilse_donode(hil_mlc *mlc)case HILSE_CTS :write_lock_irqsave (&mlc->lock, flags); - nextidx = mlc->cts (mlc) ? node->bad : node->good; + rc = mlc->cts (mlc); + nextidx = rc ? node->bad : node->good;write_unlock_irqrestore (&mlc->lock, flags); +if (rc) { + hil_mlc_stop =1 ; +return 1 ; + }break ;default :
@@ -780,6 +789,12 @@ static void hil_mlcs_process(unsigned long unused)static void hil_mlcs_timer (struct timer_list *unused) { +if (hil_mlc_stop) { +/* could not send packet - stop immediately. */ +pr_warn (PREFIX "HIL seems stuck - Disabling HIL MLC.\n" ); +return ; + } + hil_mlcs_probe =1 ;tasklet_schedule (&hil_mlcs_tasklet);/* Re-insert the periodic task. */
drivers/input/serio/hp_sdc_mlc.c +4 -4
@@ -210,7 +210,7 @@ static int hp_sdc_mlc_cts(hil_mlc *mlc) priv->tseq[2 ] =1 ; priv->tseq[3 ] =0 ; priv->tseq[4 ] =0 ; -__hp_sdc_enqueue_transaction (&priv->trans); +return __hp_sdc_enqueue_transaction (&priv->trans); busy:return 1 ; done:
@@ -219,7 +219,7 @@ static int hp_sdc_mlc_cts(hil_mlc *mlc)return 0 ; } -static void hp_sdc_mlc_out (hil_mlc *mlc) +static int hp_sdc_mlc_out (hil_mlc *mlc) {struct hp_sdc_mlc_priv_s *priv;
@@ -234,7 +234,7 @@ static void hp_sdc_mlc_out(hil_mlc *mlc) do_data:if (priv->emtestmode) {up (&mlc->osem); -return ; +return 0 ; }/* Shouldn't be sending commands when loop may be busy */ BUG_ON (down_trylock (&mlc->csem));
@@ -296,7 +296,7 @@ static void hp_sdc_mlc_out(hil_mlc *mlc)BUG_ON (down_trylock (&mlc->csem)); } enqueue: -hp_sdc_enqueue_transaction (&priv->trans); +return hp_sdc_enqueue_transaction (&priv->trans); }static int __init hp_sdc_mlc_init (void )
drivers/leds/leds-bcm6328.c +1 -1
@@ -332,7 +332,7 @@ static int bcm6328_led(struct device *dev, struct device_node *nc, u32 reg, led->cdev.brightness_set = bcm6328_led_set; led->cdev.blink_set = bcm6328_blink_set; - rc =led_classdev_register (dev, &led->cdev); + rc =devm_led_classdev_register (dev, &led->cdev);if (rc <0 )return rc;
drivers/leds/leds-bcm6358.c +1 -1
@@ -137,7 +137,7 @@ static int bcm6358_led(struct device *dev, struct device_node *nc, u32 reg, led->cdev.brightness_set = bcm6358_led_set; - rc =led_classdev_register (dev, &led->cdev); + rc =devm_led_classdev_register (dev, &led->cdev);if (rc <0 )return rc;
drivers/md/md-bitmap.c +1 -1
@@ -1372,7 +1372,7 @@ __acquires(bitmap->lock)if (bitmap->bp[page].hijacked || bitmap->bp[page].map ==NULL ) csize = ((sector_t )1 ) << (bitmap->chunkshift + -PAGE_COUNTER_SHIFT -1 ); +PAGE_COUNTER_SHIFT );else csize = ((sector_t )1 ) << bitmap->chunkshift; *blocks = csize - (offset & (csize -1 ));
drivers/md/raid5.c +2 -2
@@ -2407,8 +2407,6 @@ static int resize_stripes(struct r5conf *conf, int newsize) }else err = -ENOMEM ; -mutex_unlock (&conf->cache_size_mutex); - conf->slab_cache = sc; conf->active_name =1 -conf->active_name;
@@ -2431,6 +2429,8 @@ static int resize_stripes(struct r5conf *conf, int newsize)if (!err) conf->pool_size = newsize; +mutex_unlock (&conf->cache_size_mutex); +return err; }
drivers/media/i2c/imx274.c +5 -3
@@ -1235,6 +1235,8 @@ static int imx274_s_frame_interval(struct v4l2_subdev *sd, ret =imx274_set_frame_interval (imx274, fi->interval);if (!ret) { + fi->interval = imx274->frame_interval; +/* * exposure time range is decided by frame interval * need to update it after frame interval changes
@@ -1730,9 +1732,9 @@ static int imx274_set_frame_interval(struct stimx274 *priv, __func__, frame_interval.numerator, frame_interval.denominator); -if (frame_interval.numerator ==0 ) { - err = -EINVAL ; - goto fail; +if (frame_interval.numerator ==0 || frame_interval.denominator ==0 ) { + frame_interval.denominator =IMX274_DEF_FRAME_RATE ; + frame_interval.numerator =1 ; } req_frame_rate = (u32)(frame_interval.denominator
drivers/media/pci/tw5864/tw5864-video.c +6 -0
@@ -767,6 +767,9 @@ static int tw5864_enum_frameintervals(struct file *file, void *priv, fintv->type =V4L2_FRMIVAL_TYPE_STEPWISE ; ret =tw5864_frameinterval_get (input, &frameinterval); +if (ret) +return ret; + fintv->stepwise.step = frameinterval; fintv->stepwise.min = frameinterval; fintv->stepwise.max = frameinterval;
@@ -785,6 +788,9 @@ static int tw5864_g_parm(struct file *file, void *priv, cp->capability =V4L2_CAP_TIMEPERFRAME ; ret =tw5864_frameinterval_get (input, &cp->timeperframe); +if (ret) +return ret; + cp->timeperframe.numerator *= input->frame_interval; cp->capturemode =0 ; cp->readbuffers =2 ;
drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c +7 -0
@@ -571,6 +571,13 @@ static int mtk_jpeg_queue_setup(struct vb2_queue *q,if (!q_data)return -EINVAL ; +if (*num_planes) { +for (i =0 ; i < *num_planes; i++) +if (sizes[i] < q_data->sizeimage[i]) +return -EINVAL ; +return 0 ; + } + *num_planes = q_data->fmt->colplanes;for (i =0 ; i < q_data->fmt->colplanes; i++) { sizes[i] = q_data->sizeimage[i];
drivers/media/usb/uvc/uvc_ctrl.c +16 -11
@@ -1848,30 +1848,35 @@ int uvc_xu_ctrl_query(struct uvc_video_chain *chain, {struct uvc_entity *entity;struct uvc_control *ctrl; -unsigned int i, found =0 ; +unsigned int i; +bool found;u32 reqflags;u16 size;u8 *data =NULL ;int ret;/* Find the extension unit. */ + found = false;list_for_each_entry (entity, &chain->entities, chain) {if (UVC_ENTITY_TYPE (entity) ==UVC_VC_EXTENSION_UNIT && - entity->id == xqry->unit) + entity->id == xqry->unit) { + found = true;break ; + } } -if (entity->id != xqry->unit) { +if (!found) {uvc_trace (UVC_TRACE_CONTROL ,"Extension unit %u not found.\n" , xqry->unit);return -ENOENT ; }/* Find the control and perform delayed initialization if needed. */ + found = false;for (i =0 ; i < entity->ncontrols; ++i) { ctrl = &entity->controls[i];if (ctrl->index == xqry->selector -1 ) { - found =1 ; + found = true;break ; } }
@@ -2028,13 +2033,6 @@ static int uvc_ctrl_add_info(struct uvc_device *dev, struct uvc_control *ctrl, goto done; } -/* -* Retrieve control flags from the device. Ignore errors and work with -* default flag values from the uvc_ctrl array when the device doesn't -* properly implement GET_INFO on standard controls. -*/ -uvc_ctrl_get_flags (dev, ctrl, &ctrl->info); - ctrl->initialized =1 ; uvc_trace(UVC_TRACE_CONTROL, "Added control %pUl/%u to device %s "
@@ -2257,6 +2255,13 @@ static void uvc_ctrl_init_ctrl(struct uvc_device *dev, struct uvc_control *ctrl)if (uvc_entity_match_guid (ctrl->entity, info->entity) && ctrl->index == info->index) {uvc_ctrl_add_info (dev, ctrl, info); +/* +* Retrieve control flags from the device. Ignore errors +* and work with default flag values from the uvc_ctrl +* array when the device doesn't properly implement +* GET_INFO on standard controls. +*/ +uvc_ctrl_get_flags (dev, ctrl, &ctrl->info);break ; } }
drivers/memory/emif.c +5 -28
@@ -163,35 +163,12 @@ static const struct file_operations emif_mr4_fops = { static int __init_or_module emif_debugfs_init(struct emif_data *emif) { -struct dentry *dentry; -int ret; - - dentry =debugfs_create_dir (dev_name (emif->dev),NULL ); -if (!dentry) { - ret = -ENOMEM ; - goto err0; - } - emif->debugfs_root = dentry; - - dentry =debugfs_create_file ("regcache_dump" ,S_IRUGO , - emif->debugfs_root, emif, &emif_regdump_fops); -if (!dentry) { - ret = -ENOMEM ; - goto err1; - } - - dentry =debugfs_create_file ("mr4" ,S_IRUGO , - emif->debugfs_root, emif, &emif_mr4_fops); -if (!dentry) { - ret = -ENOMEM ; - goto err1; - } - + emif->debugfs_root =debugfs_create_dir (dev_name (emif->dev),NULL ); +debugfs_create_file ("regcache_dump" ,S_IRUGO , emif->debugfs_root, emif, + &emif_regdump_fops); +debugfs_create_file ("mr4" ,S_IRUGO , emif->debugfs_root, emif, + &emif_mr4_fops);return 0 ;
Lines of this file are not shown. View the raw message.
drivers/mmc/host/sdhci-pci-core.c +154 -0
154 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/core.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wan/hdlc_fr.c +51 -47
98 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/htt_rx.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/xen-netback/interface.c +52 -9
61 lines not on this page · raw message
drivers/staging/comedi/drivers/cb_pcidas.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/staging/fieldbus/anybuss/arcx-anybus.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/dwc3/gadget.c +45 -15
60 lines not on this page · raw message
drivers/xen/events/events_base.c +395 -27
422 lines not on this page · raw message
drivers/xen/events/events_fifo.c +39 -44
83 lines not on this page · raw message
drivers/xen/pvcalls-back.c +46 -30
76 lines not on this page · raw message
drivers/xen/xen-pciback/pciback_ops.c +38 -10
48 lines not on this page · raw message
fs/btrfs/reada.c +47 -0
47 lines not on this page · raw message
fs/btrfs/send.c +160 -41
201 lines not on this page · raw message
fs/nfs/nfs4proc.c +53 -37
90 lines not on this page · raw message
fs/ubifs/super.c +32 -12
44 lines not on this page · raw message
tools/testing/selftests/bpf/progs/test_sysctl_prog.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/x86/fsgsbase.c +68 -0
68 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.