Skip to contentSkip to conversation

Linux 5.10.11

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jan 27, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.11 kernel.

All users of the 5.10 kernel series must upgrade.

The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/ABI/testing/sysfs-class-devlink            |    4 
 Documentation/ABI/testing/sysfs-devices-consumer         |    5 
 Documentation/ABI/testing/sysfs-devices-supplier         |    5 
 Documentation/admin-guide/device-mapper/dm-integrity.rst |   12 -
 Documentation/admin-guide/kernel-parameters.txt          |    4 
 Makefile                                                 |    2 
 arch/arm/xen/enlighten.c                                 |    2 
 arch/arm64/include/asm/atomic.h                          |   10 -
 arch/arm64/kernel/signal.c                               |    7 
 arch/arm64/kernel/syscall.c                              |    9 
 arch/powerpc/include/asm/exception-64s.h                 |   13 +
 arch/powerpc/include/asm/feature-fixups.h                |   10 +
 arch/powerpc/kernel/entry_64.S                           |    2 
 arch/powerpc/kernel/exceptions-64s.S                     |   19 +
 arch/powerpc/kernel/vmlinux.lds.S                        |   32 +--
 arch/powerpc/lib/feature-fixups.c                        |   24 ++
 arch/riscv/Kconfig                                       |    6 
 arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts      |    2 
 arch/riscv/configs/defconfig                             |    2 
 arch/riscv/kernel/cacheinfo.c                            |   11 +
 arch/riscv/kernel/entry.S                                |    9 
 arch/riscv/kernel/time.c                                 |    3 
 arch/riscv/mm/init.c                                     |   16 +
 arch/sh/Kconfig                                          |    1 
 arch/sh/drivers/dma/Kconfig                              |    3 
 arch/x86/entry/common.c                                  |   10 -
 arch/x86/hyperv/hv_init.c                                |    4 
 arch/x86/include/asm/fpu/api.h                           |   15 +
 arch/x86/include/asm/mshyperv.h                          |    2 
 arch/x86/include/asm/topology.h                          |    4 
 arch/x86/kernel/cpu/amd.c                                |    4 
 arch/x86/kernel/cpu/mshyperv.c                           |   18 +
 arch/x86/kernel/cpu/topology.c                           |    2 
 arch/x86/kernel/fpu/core.c                               |    9 
 arch/x86/kernel/setup.c                                  |   20 --
 arch/x86/kernel/sev-es.c                                 |   14 +
 arch/x86/lib/mmx_32.c                                    |   20 +-
 arch/x86/xen/enlighten_hvm.c                             |   11 +
 arch/x86/xen/smp_hvm.c                                   |   29 +--
 crypto/xor.c                                             |    2 
 drivers/acpi/scan.c                                      |    2 
 drivers/base/core.c                                      |   44 +++-
 drivers/base/dd.c                                        |    2 
 drivers/clk/tegra/clk-tegra30.c                          |    2 
 drivers/counter/ti-eqep.c                                |   35 ---
 drivers/crypto/Kconfig                                   |    1 
 drivers/gpio/Kconfig                                     |    3 
 drivers/gpio/gpiolib-cdev.c                              |  145 +++++++--------
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c               |    1 
 drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h                  |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c                    |   11 -
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c    |    2 
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c    |    4 
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c    |    7 
 drivers/gpu/drm/drm_atomic_helper.c                      |    2 
 drivers/gpu/drm/drm_syncobj.c                            |    8 
 drivers/gpu/drm/i915/display/intel_ddi.c                 |    8 
 drivers/gpu/drm/i915/display/intel_dp.c                  |   33 +--
 drivers/gpu/drm/i915/display/intel_dp.h                  |    5 
 drivers/gpu/drm/i915/display/intel_dp_mst.c              |    2 
 drivers/gpu/drm/i915/display/intel_hdcp.c                |    9 
 drivers/gpu/drm/i915/gt/intel_breadcrumbs.c              |    9 
 drivers/gpu/drm/i915/gt/intel_lrc.c                      |    3 
 drivers/gpu/drm/i915/gt/intel_timeline.c                 |   10 -
 drivers/gpu/drm/i915/i915_request.h                      |   37 +++
 drivers/gpu/drm/nouveau/dispnv50/disp.c                  |    4 
 drivers/gpu/drm/nouveau/dispnv50/disp.h                  |    2 
 drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c              |    2 
 drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c        |    2 
 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c       |    8 
 drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gf100.c         |   10 -
 drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gk104.c         |   10 -
 drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c           |    6 
 drivers/gpu/drm/vc4/vc4_hdmi.c                           |    1 
 drivers/hid/Kconfig                                      |    1 
 drivers/hid/hid-ids.h                                    |    1 
 drivers/hid/hid-input.c                                  |    2 
 drivers/hid/hid-logitech-dj.c                            |    4 
 drivers/hid/hid-logitech-hidpp.c                         |    2 
 drivers/hid/hid-multitouch.c                             |    4 
 drivers/hv/vmbus_drv.c                                   |    2 
 drivers/hwtracing/intel_th/pci.c                         |    5 
 drivers/hwtracing/stm/heartbeat.c                        |    6 
 drivers/i2c/busses/Kconfig                               |    1 
 drivers/i2c/busses/i2c-octeon-core.c                     |    2 
 drivers/i2c/busses/i2c-tegra-bpmp.c                      |    2 
 drivers/i2c/busses/i2c-tegra.c                           |    2 
 drivers/iio/adc/ti_am335x_adc.c                          |    6 
 drivers/iio/common/st_sensors/st_sensors_trigger.c       |   31 +--
 drivers/iio/dac/ad5504.c                                 |    4 
 drivers/iio/temperature/mlx90632.c                       |    6 
 drivers/infiniband/core/cma_configfs.c                   |    4 
 drivers/infiniband/core/ucma.c                           |  135 +++++++------
 drivers/infiniband/core/umem.c                           |    2 
 drivers/interconnect/imx/imx8mq.c                        |    2 
 drivers/irqchip/irq-mips-cpu.c                           |    7 
 drivers/lightnvm/core.c                                  |    3 
 drivers/md/Kconfig                                       |    1 
 drivers/md/dm-crypt.c                                    |    6 
 drivers/md/dm-integrity.c                                |   32 +++
 drivers/md/dm-table.c                                    |   15 +
 drivers/mmc/core/queue.c                                 |    4 
 drivers/mmc/host/sdhci-brcmstb.c                         |    6 
 drivers/mmc/host/sdhci-of-dwcmshc.c                      |   27 ++
 drivers/mmc/host/sdhci-xenon.c                           |    7 
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c               |    2 
 drivers/mtd/nand/raw/nandsim.c                           |    7 
 drivers/net/can/dev.c                                    |    4 
 drivers/net/can/usb/peak_usb/pcan_usb_fd.c               |    8 
 drivers/net/can/vxcan.c                                  |    6 
 drivers/net/dsa/b53/b53_common.c                         |    2 
 drivers/net/dsa/mv88e6xxx/global1_vtu.c                  |    4 
 drivers/net/ethernet/broadcom/bcmsysport.c               |    6 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c      |    6 
 drivers/net/ethernet/mscc/ocelot.c                       |   23 +-
 drivers/net/ethernet/mscc/ocelot_net.c                   |    4 
 drivers/net/ethernet/renesas/sh_eth.c                    |    4 
 drivers/nvme/host/pci.c                                  |  105 ++++++----
 drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c               |    2 
 drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c         |    4 
 drivers/pinctrl/pinctrl-ingenic.c                        |   26 +-
 drivers/pinctrl/qcom/pinctrl-msm.c                       |   96 ++++++---
 drivers/pinctrl/qcom/pinctrl-msm.h                       |    2 
 drivers/platform/x86/hp-wmi.c                            |    3 
 drivers/platform/x86/i2c-multi-instantiate.c             |   31 ++-
 drivers/platform/x86/ideapad-laptop.c                    |   15 +
 drivers/platform/x86/intel-vbtn.c                        |    6 
 drivers/scsi/megaraid/megaraid_sas_base.c                |    6 
 drivers/scsi/qedi/qedi_main.c                            |    4 
 drivers/scsi/scsi_debug.c                                |    5 
 drivers/scsi/sd.c                                        |    4 
 drivers/scsi/ufs/Kconfig                                 |    1 
 drivers/scsi/ufs/ufshcd.c                                |   35 +--
 drivers/target/target_core_user.c                        |   11 -
 drivers/tty/n_tty.c                                      |    7 
 drivers/tty/serial/mvebu-uart.c                          |   10 -
 drivers/tty/serial/sifive.c                              |    1 
 drivers/tty/tty_io.c                                     |   51 ++---
 drivers/usb/cdns3/cdns3-imx.c                            |   17 -
 drivers/usb/gadget/udc/aspeed-vhub/epn.c                 |    5 
 drivers/usb/gadget/udc/bdc/Kconfig                       |    2 
 drivers/usb/gadget/udc/core.c                            |   13 +
 drivers/usb/gadget/udc/dummy_hcd.c                       |   10 -
 drivers/usb/host/ehci-hcd.c                              |   12 +
 drivers/usb/host/ehci-hub.c                              |    3 
 drivers/usb/host/xhci-ring.c                             |    2 
 drivers/usb/host/xhci-tegra.c                            |    7 
 drivers/xen/events/events_base.c                         |   10 -
 drivers/xen/platform-pci.c                               |    1 
 drivers/xen/xenbus/xenbus.h                              |    1 
 drivers/xen/xenbus/xenbus_comms.c                        |    8 
 drivers/xen/xenbus/xenbus_probe.c                        |   81 ++++++--
 fs/btrfs/backref.c                                       |    2 
 fs/btrfs/block-group.c                                   |    3 
 fs/btrfs/disk-io.c                                       |    2 
 fs/btrfs/extent-tree.c                                   |   10 -
 fs/btrfs/print-tree.c                                    |   10 -
 fs/btrfs/print-tree.h                                    |    2 
 fs/btrfs/send.c                                          |   15 +
 fs/btrfs/volumes.c                                       |    2 
 fs/cachefiles/rdwr.c                                     |    2 
 fs/cifs/transport.c                                      |    4 
 fs/fs-writeback.c                                        |   24 +-
 fs/io_uring.c                                            |   43 +++-
 fs/kernfs/file.c                                         |   65 ++----
 fs/nfsd/nfs4xdr.c                                        |   14 +
 fs/pipe.c                                                |    1 
 fs/proc/proc_sysctl.c                                    |    7 
 include/asm-generic/bitops/atomic.h                      |    6 
 include/linux/device.h                                   |   12 +
 include/linux/tty.h                                      |    1 
 include/net/inet_connection_sock.h                       |    3 
 include/net/sock.h                                       |   17 +
 include/xen/xenbus.h                                     |    2 
 kernel/bpf/bpf_inode_storage.c                           |    5 
 kernel/bpf/syscall.c                                     |    6 
 kernel/locking/lockdep.c                                 |    2 
 kernel/printk/printk.c                                   |    4 
 kernel/printk/printk_ringbuffer.c                        |    2 
 lib/iov_iter.c                                           |    2 
 mm/kasan/init.c                                          |   23 +-
 mm/memcontrol.c                                          |    4 
 mm/migrate.c                                             |   23 +-
 net/bpf/test_run.c                                       |    3 
 net/core/dev.c                                           |    5 
 net/core/devlink.c                                       |    4 
 net/core/gen_estimator.c                                 |   11 -
 net/core/skbuff.c                                        |    6 
 net/ipv4/inet_connection_sock.c                          |    1 
 net/ipv4/netfilter/ipt_rpfilter.c                        |    2 
 net/ipv4/tcp.c                                           |    1 
 net/ipv4/tcp_input.c                                     |    6 
 net/ipv4/tcp_ipv4.c                                      |   29 +--
 net/ipv4/tcp_output.c                                    |    1 
 net/ipv4/tcp_timer.c                                     |   36 +--
 net/ipv4/udp.c                                           |    3 
 net/ipv6/addrconf.c                                      |    3 
 net/sched/cls_flower.c                                   |   22 +-
 net/sched/cls_tcindex.c                                  |    8 
 net/sched/sch_api.c                                      |    3 
 net/sunrpc/svcsock.c                                     |   86 ++++++++
 net/xdp/xsk.c                                            |    4 
 sound/core/seq/oss/seq_oss_synth.c                       |    3 
 sound/pci/hda/hda_codec.c                                |   24 --
 sound/pci/hda/hda_tegra.c                                |    2 
 sound/pci/hda/patch_realtek.c                            |    8 
 sound/pci/hda/patch_via.c                                |    1 
 sound/soc/codecs/rt711.c                                 |    6 
 sound/soc/intel/boards/haswell.c                         |    1 
 sound/soc/sof/intel/hda-codec.c                          |   18 -
 sound/soc/sof/intel/hda-dsp.c                            |    6 
 tools/gpio/gpio-event-mon.c                              |    4 
 tools/gpio/gpio-watch.c                                  |    5 
 tools/lib/perf/evlist.c                                  |   17 -
 tools/lib/perf/tests/test-cpumap.c                       |    2 
 tools/lib/perf/tests/test-evlist.c                       |    3 
 tools/lib/perf/tests/test-evsel.c                        |    2 
 tools/lib/perf/tests/test-threadmap.c                    |    2 
 tools/testing/selftests/net/fib_tests.sh                 |    1 
 tools/testing/selftests/powerpc/mm/pkey_exec_prot.c      |    2 
 tools/testing/selftests/powerpc/mm/pkey_siginfo.c        |    2 
 221 files changed, 1591 insertions(+), 884 deletions(-)

Adrian Hunter (1):
perf evlist: Fix id index for heterogeneous systems

Aharon Landau (1):
RDMA/umem: Avoid undefined behavior of rounddown_pow_of_two()

Al Cooper (1):
mmc: sdhci-brcmstb: Fix mmc timeout errors on S5 suspend

Alan Stern (1):
USB: gadget: dummy-hcd: Fix errors in port-reset handling

Alban Bedel (1):
net: mscc: ocelot: Fix multicast to the CPU port

Alex Leibovich (1):
mmc: sdhci-xenon: fix 1.8v regulator stabilization

Alexander Lobakin (1):
skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too

Alexander Shishkin (1):
intel_th: pci: Add Alder Lake-P support

Alexandru Ardelean (1):
iio: adc: ti_am335x_adc: remove omitted iio_kfifo_free()

Andy Lutomirski (2):
x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state x86/mmx: Use KFPU_387 for MMX string operations

Anshuman Gupta (2):
drm/i915/hdcp: Update CP property in update_pipe drm/i915/hdcp: Get conn while content_type changed

Anthony Iliopoulos (1):
dm integrity: select CRYPTO_SKCIPHER

Ariel Marcovitch (1):
powerpc: Fix alignment bug within the init sections

Arnd Bergmann (4):
HID: sony: select CONFIG_CRC32
arm64: make atomic helpers __always_inline
scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression
crypto: omap-sham - Fix link error without crypto-engine

Atish Patra (2):
RISC-V: Set current memblock limit
RISC-V: Fix maximum allowed phsyical memory for RV32

Ben Skeggs (5):
drm/nouveau/bios: fix issue shadowing expansion ROMs drm/nouveau/privring: ack interrupts the same way as RM drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields drm/nouveau/mmu: fix vram heap sizing drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0

Billy Tsai (1):
pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting

Borislav Petkov (1):
x86/topology: Make __max_die_per_package available unconditionally

Can Guo (1):
scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback

Cezary Rojewski (1):
ASoC: Intel: haswell: Add missing pm_ops

Chris Chiu (1):
ALSA: hda/realtek - Limit int mic boost on Acer Aspire E5-575T

Chris Wilson (2):

      drm/i915/gt: Prevent use of engine->wa_ctx after error
      drm/i915: Check for rq->hwsp validity after acquiring RCU lock

Christoph Hellwig (6):
iov_iter: fix the uaccess area in copy_compat_iovec_from_user
nvme-pci: refactor nvme_unmap_data
nvme-pci: fix error unwind in nvme_map_data
kernfs: implement ->read_iter
kernfs: implement ->write_iter
kernfs: wire up ->splice_read and ->splice_write

Chuck Lever (1):
SUNRPC: Handle TCP socket sends with kernel_sendpage() again

Cong Wang (1):
cls_flower: call nla_ok() before nla_next()

Damien Le Moal (3):
riscv: Fix kernel time_init()
riscv: Fix sifive serial driver
riscv: Enable interrupts during syscalls with M-Mode

Dan Carpenter (1):

      net: dsa: b53: fix an off by one in checking "vlan->vid"

Daniel Vetter (1):
drm/syncobj: Fix use-after-free

David Lechner (1):
counter:ti-eqep: remove floor

David Woodhouse (3):
xen: Fix event channel callback via INTX/GSI
x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery x86/xen: Fix xen_hvm_smp_init() when vector callback not available

Dexuan Cui (1):
x86/hyperv: Fix kexec panic/hang issues

Dinghao Liu (1):
scsi: scsi_debug: Fix memleak in scsi_debug_init()

Douglas Anderson (4):
pinctrl: qcom: Allow SoCs to specify a GPIO function that's not 0
pinctrl: qcom: No need to read-modify-write the interrupt status
pinctrl: qcom: Properly clear "intr_ack_high" interrupts when unmasking
pinctrl: qcom: Don't clear pending interrupts when enabling

Enke Chen (1):
tcp: fix TCP_USER_TIMEOUT with zero window

Eric Biggers (1):
fs: fix lazytime expiration handling in __writeback_single_inode()

Eric Dumazet (4):
net_sched: gen_estimator: support large ewma log
net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
net_sched: reject silly cell_log in qdisc_get_rtab()
tcp: do not mess with cloned skbs in tcp_add_backlog()

Eugene Korenevsky (1):
ehci: fix EHCI host controller initialization sequence

Ewan D. Milne (1):
scsi: sd: Suppress spurious errors when WRITE SAME is being disabled

Filipe Laíns (1):
HID: logitech-dj: add the G602 receiver

Filipe Manana (1):
btrfs: send: fix invalid clone operations when cloning from the same file and root

Geert Uytterhoeven (1):
sh_eth: Fix power down vs. is_opened flag ordering

Greg Kroah-Hartman (1):

      Linux 5.10.11

Guillaume Nault (2):
netfilter: rpfilter: mask ecn bits before fib lookup
udp: mask TOS bits in udp_v4_early_demux()

Hangbin Liu (1):
selftests: net: fib_tests: remove duplicate log test

Hannes Reinecke (1):
dm: avoid filesystem lookup in dm_get_dev_t()

Hans de Goede (3):
ACPI: scan: Make acpi_bus_get_device() clear return pointer on error platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from allow-list platform/x86: hp-wmi: Don't log a warning on HPWMI_RET_UNKNOWN_COMMAND errors

Heikki Krogerus (1):
platform/x86: i2c-multi-instantiate: Don't create platform device for INT3515 ACPI nodes

Hsin-Yi Wang (1):
pinctrl: mediatek: Fix fallback call path

Huang Rui (1):
drm/amdgpu: remove gpu info firmware of green sardine

Hyunwook (Wooky) Baek (1):
x86/sev-es: Handle string port IO to kernel memory properly

Ian Rogers (2):
libperf tests: If a test fails return non-zero libperf tests: Fail when failing to get a tracepoint id

Ignat Korchagin (1):
dm crypt: fix copy and paste bug in crypt_alloc_req_aead

JC Kuo (1):
xhci: tegra: Delay for disabling LFPS detector

Jaegeuk Kim (1):
scsi: ufs: Fix tm request when non-fatal error happens

Jason Gunthorpe (1):
RDMA/ucma: Do not miss ctx destruction steps in some cases

Jens Axboe (2):
io_uring: iopoll requests should also wake task ->in_idle state
io_uring: fix SQPOLL IORING_OP_CLOSE cancelation state

Jeremy Cline (1):
drm/amdkfd: Fix out-of-bounds read in kdf_create_vcrat_image_cpu()

Jiaxun Yang (1):
platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634

Jinyang He (1):
sh: Remove unused HAVE_COPY_THREAD_TLS macro

Jiri Olsa (1):
bpf: Prevent double bpf_prog_put call from bpf_tracing_prog_attach

Jisheng Zhang (1):
mmc: sdhci-of-dwcmshc: fix rpmb access

Johannes Berg (1):
fs/pipe: allow sendfile() to pipe again

John Ogness (2):
printk: ringbuffer: fix line counting
printk: fix kmsg_dump_get_buffer length calulations

Josef Bacik (5):
btrfs: don't get an EINTR during drop_snapshot for reloc
btrfs: do not double free backref nodes on error
btrfs: fix lockdep splat in btrfs_recover_relocation
btrfs: don't clear ret in btrfs_start_dirty_block_groups
btrfs: print the actual offset in btrfs_root_name

KP Singh (1):
bpf: Local storage helpers should check nullness of owner ptr passed

Kai Vehmanen (1):
ASoC: SOF: Intel: fix page fault at probe if i915 init fails

Kai-Heng Feng (3):
HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad device
ALSA: hda: Balance runtime/system PM if direct-complete is disabled
ASoC: SOF: Intel: hda: Avoid checking jack on system suspend

Kefeng Wang (1):
riscv: cacheinfo: Fix using smp_processor_id() in preemptible

Kent Gibson (3):
gpiolib: cdev: fix frame size warning in gpio_ioctl()
tools: gpio: fix %llu warning in gpio-event-mon.c
tools: gpio: fix %llu warning in gpio-watch.c

Kirill Tkhai (1):
crypto: xor - Fix divide error in do_xor_speed()

Krzysztof Kozlowski (1):
i2c: sprd: depend on COMMON_CLK to fix compile tests

Kuniyuki Iwashima (1):
tcp: Fix potential use-after-free due to double kfree()

Lars-Peter Clausen (1):
iio: ad5504: Fix setting power-down state

Lecopzer Chen (2):
kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow
kasan: fix incorrect arguments passing in kasan_add_zero_shadow

Li, Roman (1):
drm/amd/display: disable dcn10 pipe split by default

Linus Torvalds (3):
tty: implement write_iter
tty: fix up hung_up_tty_write() conversion
Revert "mm: fix initialization of struct page for holes in memory layout"

Longfang Liu (1):
USB: ehci: fix an interrupt calltrace error

Lorenzo Bianconi (1):
iio: common: st_sensors: fix possible infinite loop in st_sensors_irq_thread

Marcelo Diop-Gonzalez (1):
io_uring: flush timeouts that should already have expired

Mark Rutland (1):
arm64: entry: remove redundant IRQ flag tracing

Martin Kepplinger (1):
interconnect: imx8mq: Use icc_sync_state

Mathias Kresin (1):
irqchip/mips-cpu: Set IPI domain parent chip

Mathias Nyman (1):
xhci: make sure TRB is fully written before giving it to the controller

Matteo Croce (2):
ipv6: create multicast route with RTPROT_KERNEL
ipv6: set multicast flag on the multicast route

Maxim Mikityanskiy (1):
xsk: Clear pool even for inactive queues

Meng Li (1):
drivers core: Free dma_range_map when driver probe failed

Mike Rapoport (2):
x86/setup: don't remove E820_TYPE_RAM for pfn 0
mm: fix initialization of struct page for holes in memory layout

Mikko Perttunen (2):
i2c: tegra: Wait for config load atomically while in ISR
i2c: bpmp-tegra: Ignore unknown I2C_M flags

Mikulas Patocka (2):
dm integrity: fix a crash if "recalculate" used without "internal_hash" dm integrity: conditionally disable "recalculate" feature

Miquel Raynal (1):
mtd: rawnand: nandsim: Fix the logic when selecting Hamming soft ECC engine

Necip Fazil Yildiran (1):
sh: dma: fix kconfig dependency for G2_DMA

Neta Ostrovsky (1):
RDMA/cma: Fix error flow in default_roce_mode_store

Nicholas Miell (1):
HID: logitech-hidpp: Add product ID for MX Ergo in Bluetooth mode

Nicholas Piggin (1):
powerpc/64s: fix scv entry fallback flush vs interrupt

Nicolas Saenz Julienne (1):
drm/vc4: Unify PCM card's driver_name

Nilesh Javali (1):
scsi: qedi: Correct max length of CHAP secret

Oleksandr Mazur (1):
net: core: devlink: use right genl user_ptr when handling port param get/set

Pali Rohár (1):
serial: mvebu-uart: fix tx lost characters at power off

Pan Bian (3):
drm/atomic: put state on error path
lightnvm: fix memory leak when submit fails
net: systemport: free dev before on error path

Patrik Jakobsson (1):
usb: bdc: Make bdc pci driver depend on BROKEN

Paul Cercueil (1):
pinctrl: ingenic: Fix JZ4760 support

Pavel Begunkov (1):
io_uring: fix short read retries for non-reg files

Peter Chen (2):
usb: cdns3: imx: fix writing read-only memory issue
usb: cdns3: imx: fix can't create core device the second time issue

Peter Collingbourne (1):
mmc: core: don't initialize block size from ext_csd if not present

Peter Geis (2):
clk: tegra30: Add hda clock default rates to clock driver
ALSA: hda/tegra: fix tegra-hda on tegra30 soc

Peter Zijlstra (3):
x86/entry: Fix noinstr fail
locking/lockdep: Cure noinstr fail
x86/sev: Fix nonistr violation

Rafael J. Wysocki (1):
driver core: Extend device_is_dependent()

Randy Dunlap (3):
x86/xen: fix 'nopvspin' build error
scsi: ufs: ufshcd-pltfrm depends on HAS_IOMEM
gpio: sifive: select IRQ_DOMAIN_HIERARCHY rather than depend on it

Rasmus Villemoes (1):
net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext

Roman Gushchin (1):
mm: memcg/slab: optimize objcg stock draining

Ronnie Sahlberg (1):
cifs: do not fail __smb_send_rqst if non-fatal signals are pending

Ryan Chen (1):
usb: gadget: aspeed: fix stop dma register setting.

Sagar Shrikant Kadam (3):
dts: phy: fix missing mdio device and probe failure of vsc8541-01 device
dts: phy: add GPIO number and active state used for phy reset
riscv: defconfig: enable gpio support for HiFive Unleashed

Sami Tolvanen (1):
Commit 9bb48c82aced ("tty: implement write_iter") converted the tty layer to use write_iter. Fix the redirected_tty_write declaration also in n_tty and change the comparisons to use write_iter instead of write. also in n_tty and change the comparisons to use write_iter instead of write.

Sandipan Das (1):
selftests/powerpc: Fix exit status of pkey tests

Saravana Kannan (1):
driver core: Fix device link device name collision

Sean Nyekjaer (1):
mtd: rawnand: gpmi: fix dst bit offset when extracting raw payload

Seth Miller (1):
HID: Ignore battery for Elan touchscreen on ASUS UX550

Shakeel Butt (2):
mm: memcg: fix memcg file_dirty numa stat
mm: fix numa stats for thp migration

Shin'ichiro Kawasaki (1):

      scsi: target: tcmu: Fix use-after-free of se_cmd->priv

Shuming Fan (1):
ASoC: rt711: mutex between calibration and power state changes

Slaveyko Slaveykov (1):
drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c

Song Liu (1):
bpf: Reject too big ctx_size_in for raw_tp test run

Stanley Chu (1):
scsi: ufs: Relax the condition of UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL

Sung Lee (1):
drm/amd/display: DCN2X Find Secondary Pipe properly in MPO + ODM Case

Takashi Iwai (3):
ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
ALSA: hda/via: Add minimum mute flag
cachefiles: Drop superfluous readpages aops NULL check

Tariq Toukan (1):
net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled

Thinh Nguyen (1):
usb: udc: core: Use lock when write to soft_connect

Trond Myklebust (2):
nfsd: Fixes for nfsd4_encode_read_plus_data()
nfsd: Don't set eof on a truncated READ_PLUS

Victor Zhao (1):
drm/amdgpu/psp: fix psp gfx ctrl cmds

Ville Syrjälä (2):

      drm/i915: s/intel_dp_sink_dpms/intel_dp_set_power/
      drm/i915: Only enable DFP 4:4:4->4:2:0 conversion when outputting YCbCr 4:4:4

Vincent Mailhol (3):
can: dev: can_restart: fix use after free bug
can: vxcan: vxcan_xmit: fix use after free bug
can: peak_usb: fix use after free bugs

Vladimir Oltean (1):
net: mscc: ocelot: allow offloading of bridge on top of LAG

Wang Hui (1):
stm class: Fix module init return on allocation failure

Wayne Lin (1):
drm/amd/display: Fix to be able to stop crc calculation

Wolfram Sang (1):
i2c: octeon: check correct size of maximum RECV_LEN packet

Xiaoming Ni (1):
proc_sysctl: fix oops caused by incorrect command parameters

Yazen Ghannam (1):
x86/cpu/amd: Set __max_die_per_package on AMD

Yingjie Wang (1):
octeontx2-af: Fix missing check bugs in rvu_cgx.c

Youling Tang (1):
powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S

Yuchung Cheng (1):
tcp: fix TCP socket rehash stats mis-accounting

author maintainer
#1 lore raw
Documentation/ABI/testing/sysfs-class-devlink +2 -2
index b662f747c83e..8a21ce515f61 100644
@@ -5,8 +5,8 @@ Description:
 		Provide a place in sysfs for the device link objects in the
 		kernel at any given time.  The name of a device link directory,
 		denoted as ... above, is of the form <supplier>--<consumer>
-		where <supplier> is the supplier device name and <consumer> is
-		the consumer device name.
+		where <supplier> is the supplier bus:device name and <consumer>
+		is the consumer bus:device name.
 
 What:		/sys/class/devlink/.../auto_remove_on
 Date:		May 2020
Documentation/ABI/testing/sysfs-devices-consumer +3 -2
index 1f06d74d1c3c..0809fda092e6 100644
@@ -4,5 +4,6 @@ Contact:	Saravana Kannan <[email protected]>
 Description:
 		The /sys/devices/.../consumer:<consumer> are symlinks to device
 		links where this device is the supplier. <consumer> denotes the
-		name of the consumer in that device link. There can be zero or
-		more of these symlinks for a given device.
+		name of the consumer in that device link and is of the form
+		bus:device name. There can be zero or more of these symlinks
+		for a given device.
Documentation/ABI/testing/sysfs-devices-supplier +3 -2
index a919e0db5e90..207f5972e98d 100644
@@ -4,5 +4,6 @@ Contact:	Saravana Kannan <[email protected]>
 Description:
 		The /sys/devices/.../supplier:<supplier> are symlinks to device
 		links where this device is the consumer. <supplier> denotes the
-		name of the supplier in that device link. There can be zero or
-		more of these symlinks for a given device.
+		name of the supplier in that device link and is of the form
+		bus:device name. There can be zero or more of these symlinks
+		for a given device.
Documentation/admin-guide/device-mapper/dm-integrity.rst +9 -3
index 3ab4f7756a6e..bf878c879afb 100644
@@ -177,14 +177,20 @@ bitmap_flush_interval:number
 	The bitmap flush interval in milliseconds. The metadata buffers
 	are synchronized when this interval expires.
 
+allow_discards
+	Allow block discard requests (a.k.a. TRIM) for the integrity device.
+	Discards are only allowed to devices using internal hash.
+
 fix_padding
 	Use a smaller padding of the tag area that is more
 	space-efficient. If this option is not present, large padding is
 	used - that is for compatibility with older kernels.
 
-allow_discards
-	Allow block discard requests (a.k.a. TRIM) for the integrity device.
-	Discards are only allowed to devices using internal hash.
+legacy_recalculate
+	Allow recalculating of volumes with HMAC keys. This is disabled by
+	default for security reasons - an attacker could modify the volume,
+	set recalc_sector to zero, and the kernel would not detect the
+	modification.
 
 The journal mode (D/J), buffer_sectors, journal_watermark, commit_time and
 allow_discards can be changed when reloading the target (load an inactive
Documentation/admin-guide/kernel-parameters.txt +4 -0
index f6a1513dfb76..26bfe7ae711b 100644
@@ -5965,6 +5965,10 @@
 			This option is obsoleted by the "nopv" option, which
 			has equivalent effect for XEN platform.
 
+	xen_no_vector_callback
+			[KNL,X86,XEN] Disable the vector callback for Xen
+			event channel interrupts.
+
 	xen_scrub_pages=	[XEN]
 			Boolean option to control scrubbing pages before giving them back
 			to Xen, for use by other domains. Can be also changed at runtime
Makefile +1 -1
index 7d86ad6ad36c..7a5d906f6ee3 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 10
+SUBLEVEL = 11
 EXTRAVERSION =
 NAME = Kleptomaniac Octopus
 
arch/arm/xen/enlighten.c +1 -1
index 60e901cd0de6..5a957a9a0984 100644
@@ -371,7 +371,7 @@ static int __init xen_guest_init(void)
 	}
 	gnttab_init();
 	if (!xen_initial_domain())
-		xenbus_probe(NULL);
+		xenbus_probe();
 
 	/*
 	 * Making sure board specific code will not set up ops for
arch/arm64/include/asm/atomic.h +5 -5
index 015ddffaf6ca..b56a4b2bc248 100644
@@ -17,7 +17,7 @@
 #include <asm/lse.h>
 
 #define ATOMIC_OP(op)							\
-static inline void arch_##op(int i, atomic_t *v)			\
+static __always_inline void arch_##op(int i, atomic_t *v)		\
 {									\
 	__lse_ll_sc_body(op, i, v);					\
 }
@@ -32,7 +32,7 @@ ATOMIC_OP(atomic_sub)
 #undef ATOMIC_OP
 
 #define ATOMIC_FETCH_OP(name, op)					\
-static inline int arch_##op##name(int i, atomic_t *v)			\
+static __always_inline int arch_##op##name(int i, atomic_t *v)		\
 {									\
 	return __lse_ll_sc_body(op##name, i, v);			\
 }
@@ -56,7 +56,7 @@ ATOMIC_FETCH_OPS(atomic_sub_return)
 #undef ATOMIC_FETCH_OPS
 
 #define ATOMIC64_OP(op)							\
-static inline void arch_##op(long i, atomic64_t *v)			\
+static __always_inline void arch_##op(long i, atomic64_t *v)		\
 {									\
 	__lse_ll_sc_body(op, i, v);					\
 }
@@ -71,7 +71,7 @@ ATOMIC64_OP(atomic64_sub)
 #undef ATOMIC64_OP
 
 #define ATOMIC64_FETCH_OP(name, op)					\
-static inline long arch_##op##name(long i, atomic64_t *v)		\
+static __always_inline long arch_##op##name(long i, atomic64_t *v)	\
 {									\
 	return __lse_ll_sc_body(op##name, i, v);			\
 }
@@ -94,7 +94,7 @@ ATOMIC64_FETCH_OPS(atomic64_sub_return)
 #undef ATOMIC64_FETCH_OP
 #undef ATOMIC64_FETCH_OPS
 
-static inline long arch_atomic64_dec_if_positive(atomic64_t *v)
+static __always_inline long arch_atomic64_dec_if_positive(atomic64_t *v)
 {
 	return __lse_ll_sc_body(atomic64_dec_if_positive, v);
 }
arch/arm64/kernel/signal.c +0 -7
index a8184cad8890..50852992752b 100644
@@ -914,13 +914,6 @@ static void do_signal(struct pt_regs *regs)
 asmlinkage void do_notify_resume(struct pt_regs *regs,
 				 unsigned long thread_flags)
 {
-	/*
-	 * The assembly code enters us with IRQs off, but it hasn't
-	 * informed the tracing code of that for efficiency reasons.
-	 * Update the trace code with the current status.
-	 */
-	trace_hardirqs_off();
-
 	do {
 		/* Check valid user FS if needed */
 		addr_limit_user_check();
arch/arm64/kernel/syscall.c +1 -8
index f8f758e4a306..6fa8cfb8232a 100644
@@ -165,15 +165,8 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 	if (!has_syscall_work(flags) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) {
 		local_daif_mask();
 		flags = current_thread_info()->flags;
-		if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP)) {
-			/*
-			 * We're off to userspace, where interrupts are
-			 * always enabled after we restore the flags from
-			 * the SPSR.
-			 */
-			trace_hardirqs_on();
+		if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP))
 			return;
-		}
 		local_daif_restore(DAIF_PROCCTX);
 	}
 
arch/powerpc/include/asm/exception-64s.h +13 -0
index 1d32b174ab6a..c1a8aac01cf9 100644
@@ -63,6 +63,12 @@
 	nop;								\
 	nop;
 
+#define SCV_ENTRY_FLUSH_SLOT						\
+	SCV_ENTRY_FLUSH_FIXUP_SECTION;					\
+	nop;								\
+	nop;								\
+	nop;
+
 /*
  * r10 must be free to use, r13 must be paca
  */
@@ -70,6 +76,13 @@
 	STF_ENTRY_BARRIER_SLOT;						\
 	ENTRY_FLUSH_SLOT
 
+/*
+ * r10, ctr must be free to use, r13 must be paca
+ */
+#define SCV_INTERRUPT_TO_KERNEL						\
+	STF_ENTRY_BARRIER_SLOT;						\
+	SCV_ENTRY_FLUSH_SLOT
+
 /*
  * Macros for annotating the expected destination of (h)rfid
  *
arch/powerpc/include/asm/feature-fixups.h +10 -0
index fbd406cd6916..8d100059e266 100644
@@ -221,6 +221,14 @@ label##3:					       	\
 	FTR_ENTRY_OFFSET 957b-958b;			\
 	.popsection;
 
+#define SCV_ENTRY_FLUSH_FIXUP_SECTION			\
+957:							\
+	.pushsection __scv_entry_flush_fixup,"a";	\
+	.align 2;					\
+958:							\
+	FTR_ENTRY_OFFSET 957b-958b;			\
+	.popsection;
+
 #define RFI_FLUSH_FIXUP_SECTION				\
 951:							\
 	.pushsection __rfi_flush_fixup,"a";		\
@@ -254,10 +262,12 @@ label##3:					       	\
 
 extern long stf_barrier_fallback;
 extern long entry_flush_fallback;
+extern long scv_entry_flush_fallback;
 extern long __start___stf_entry_barrier_fixup, __stop___stf_entry_barrier_fixup;
 extern long __start___stf_exit_barrier_fixup, __stop___stf_exit_barrier_fixup;
 extern long __start___uaccess_flush_fixup, __stop___uaccess_flush_fixup;
 extern long __start___entry_flush_fixup, __stop___entry_flush_fixup;
+extern long __start___scv_entry_flush_fixup, __stop___scv_entry_flush_fixup;
 extern long __start___rfi_flush_fixup, __stop___rfi_flush_fixup;
 extern long __start___barrier_nospec_fixup, __stop___barrier_nospec_fixup;
 extern long __start__btb_flush_fixup, __stop__btb_flush_fixup;
arch/powerpc/kernel/entry_64.S +1 -1
index 2f3846192ec7..2831b0aa92b1 100644
@@ -75,7 +75,7 @@ BEGIN_FTR_SECTION
 	bne	.Ltabort_syscall
 END_FTR_SECTION_IFSET(CPU_FTR_TM)
 #endif
-	INTERRUPT_TO_KERNEL
+	SCV_INTERRUPT_TO_KERNEL
 	mr	r10,r1
 	ld	r1,PACAKSAVE(r13)
 	std	r10,0(r1)
arch/powerpc/kernel/exceptions-64s.S +19 -0
index 4d01f09ecf80..3cde2fbd74fc 100644
@@ -2993,6 +2993,25 @@ TRAMP_REAL_BEGIN(entry_flush_fallback)
 	ld	r11,PACA_EXRFI+EX_R11(r13)
 	blr
 
+/*
+ * The SCV entry flush happens with interrupts enabled, so it must disable
+ * to prevent EXRFI being clobbered by NMIs (e.g., soft_nmi_common). r10
+ * (containing LR) does not need to be preserved here because scv entry
+ * puts 0 in the pt_regs, CTR can be clobbered for the same reason.
+ */
+TRAMP_REAL_BEGIN(scv_entry_flush_fallback)
+	li	r10,0
+	mtmsrd	r10,1
+	lbz	r10,PACAIRQHAPPENED(r13)
+	ori	r10,r10,PACA_IRQ_HARD_DIS
+	stb	r10,PACAIRQHAPPENED(r13)
+	std	r11,PACA_EXRFI+EX_R11(r13)
+	L1D_DISPLACEMENT_FLUSH
+	ld	r11,PACA_EXRFI+EX_R11(r13)
+	li	r10,MSR_RI
+	mtmsrd	r10,1
+	blr
+
 TRAMP_REAL_BEGIN(rfi_flush_fallback)
 	SET_SCRATCH0(r13);
 	GET_PACA(r13);
arch/powerpc/kernel/vmlinux.lds.S +15 -17
index f887f9d5b9e8..4a1f494ef03f 100644
@@ -145,6 +145,13 @@ SECTIONS
 		__stop___entry_flush_fixup = .;
 	}
 
+	. = ALIGN(8);
+	__scv_entry_flush_fixup : AT(ADDR(__scv_entry_flush_fixup) - LOAD_OFFSET) {
+		__start___scv_entry_flush_fixup = .;
+		*(__scv_entry_flush_fixup)
+		__stop___scv_entry_flush_fixup = .;
+	}
+
 	. = ALIGN(8);
 	__stf_exit_barrier_fixup : AT(ADDR(__stf_exit_barrier_fixup) - LOAD_OFFSET) {
 		__start___stf_exit_barrier_fixup = .;
@@ -187,6 +194,12 @@ SECTIONS
 	.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
 		_sinittext = .;
 		INIT_TEXT
+
+		/*
+		 *.init.text might be RO so we must ensure this section ends on
+		 * a page boundary.
+		 */
+		. = ALIGN(PAGE_SIZE);
 		_einittext = .;
 #ifdef CONFIG_PPC64
 		*(.tramp.ftrace.init);
@@ -200,21 +213,9 @@ SECTIONS
 		EXIT_TEXT
 	}
 
-	.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
-		INIT_DATA
-	}
-
-	.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
-		INIT_SETUP(16)
-	}
-
-	.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
-		INIT_CALLS
-	}
+	. = ALIGN(PAGE_SIZE);
 
-	.con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
-		CON_INITCALL
-	}
+	INIT_DATA_SECTION(16)
 
 	. = ALIGN(8);
 	__ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) {
@@ -242,9 +243,6 @@ SECTIONS
 		__stop___fw_ftr_fixup = .;
 	}
 #endif
-	.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
-		INIT_RAM_FS
-	}
 
 	PERCPU_SECTION(L1_CACHE_BYTES)
 
arch/powerpc/lib/feature-fixups.c +21 -3
index 321c12a9ef6b..92705d6dfb6e 100644
@@ -290,9 +290,6 @@ void do_entry_flush_fixups(enum l1d_flush_type types)
 	long *start, *end;
 	int i;
 
-	start = PTRRELOC(&__start___entry_flush_fixup);
-	end = PTRRELOC(&__stop___entry_flush_fixup);
-
 	instrs[0] = 0x60000000; /* nop */
 	instrs[1] = 0x60000000; /* nop */
 	instrs[2] = 0x60000000; /* nop */
@@ -312,6 +309,8 @@ void do_entry_flush_fixups(enum l1d_flush_type types)
 	if (types & L1D_FLUSH_MTTRIG)
 		instrs[i++] = 0x7c12dba6; /* mtspr TRIG2,r0 (SPR #882) */
 
+	start = PTRRELOC(&__start___entry_flush_fixup);
+	end = PTRRELOC(&__stop___entry_flush_fixup);
 	for (i = 0; start < end; start++, i++) {
 		dest = (void *)start + *start;
 
@@ -328,6 +327,25 @@ void do_entry_flush_fixups(enum l1d_flush_type types)
 		patch_instruction((struct ppc_inst *)(dest + 2), ppc_inst(instrs[2]));
 	}
 
+	start = PTRRELOC(&__start___scv_entry_flush_fixup);
+	end = PTRRELOC(&__stop___scv_entry_flush_fixup);
+	for (; start < end; start++, i++) {
+		dest = (void *)start + *start;
+
+		pr_devel("patching dest %lx\n", (unsigned long)dest);
+
+		patch_instruction((struct ppc_inst *)dest, ppc_inst(instrs[0]));
+
+		if (types == L1D_FLUSH_FALLBACK)
+			patch_branch((struct ppc_inst *)(dest + 1), (unsigned long)&scv_entry_flush_fallback,
+				     BRANCH_SET_LINK);
+		else
+			patch_instruction((struct ppc_inst *)(dest + 1), ppc_inst(instrs[1]));
+
+		patch_instruction((struct ppc_inst *)(dest + 2), ppc_inst(instrs[2]));
+	}
+
+
 	printk(KERN_DEBUG "entry-flush: patched %d locations (%s flush)\n", i,
 		(types == L1D_FLUSH_NONE)       ? "no" :
 		(types == L1D_FLUSH_FALLBACK)   ? "fallback displacement" :
arch/riscv/Kconfig +4 -2
index 44377fd7860e..234a21d26f67 100644
@@ -134,7 +134,7 @@ config PA_BITS
 
 config PAGE_OFFSET
 	hex
-	default 0xC0000000 if 32BIT && MAXPHYSMEM_2GB
+	default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
 	default 0x80000000 if 64BIT && !MMU
 	default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
 	default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
@@ -247,10 +247,12 @@ config MODULE_SECTIONS
 
 choice
 	prompt "Maximum Physical Memory"
-	default MAXPHYSMEM_2GB if 32BIT
+	default MAXPHYSMEM_1GB if 32BIT
 	default MAXPHYSMEM_2GB if 64BIT && CMODEL_MEDLOW
 	default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
 
+	config MAXPHYSMEM_1GB
+		bool "1GiB"
 	config MAXPHYSMEM_2GB
 		bool "2GiB"
 	config MAXPHYSMEM_128GB
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +2 -0
index 4a2729f5ca3f..24d75a146e02 100644
@@ -88,7 +88,9 @@ &eth0 {
 	phy-mode = "gmii";
 	phy-handle = <&phy0>;
 	phy0: ethernet-phy@0 {
+		compatible = "ethernet-phy-id0007.0771";
 		reg = <0>;
+		reset-gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
 	};
 };
 
arch/riscv/configs/defconfig +2 -0
index d222d353d86d..8c3d1e451703 100644
@@ -64,6 +64,8 @@ CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_VIRTIO=y
 CONFIG_SPI=y
 CONFIG_SPI_SIFIVE=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIO_SIFIVE=y
 # CONFIG_PTP_1588_CLOCK is not set
 CONFIG_POWER_RESET=y
 CONFIG_DRM=y
arch/riscv/kernel/cacheinfo.c +10 -1
index de59dd457b41..d86781357044 100644
@@ -26,7 +26,16 @@ cache_get_priv_group(struct cacheinfo *this_leaf)
 
 static struct cacheinfo *get_cacheinfo(u32 level, enum cache_type type)
 {
-	struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(smp_processor_id());
+	/*
+	 * Using raw_smp_processor_id() elides a preemptability check, but this
+	 * is really indicative of a larger problem: the cacheinfo UABI assumes
+	 * that cores have a homonogenous view of the cache hierarchy.  That
+	 * happens to be the case for the current set of RISC-V systems, but
+	 * likely won't be true in general.  Since there's no way to provide
+	 * correct information for these systems via the current UABI we're
+	 * just eliding the check for now.
+	 */
+	struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(raw_smp_processor_id());
 	struct cacheinfo *this_leaf;
 	int index;
 
arch/riscv/kernel/entry.S +9 -0
index 835e45bb59c4..744f3209c48d 100644
@@ -155,6 +155,15 @@ skip_context_tracking:
 	tail do_trap_unknown
 
 handle_syscall:
+#ifdef CONFIG_RISCV_M_MODE
+	/*
+	 * When running is M-Mode (no MMU config), MPIE does not get set.
+	 * As a result, we need to force enable interrupts here because
+	 * handle_exception did not do set SR_IE as it always sees SR_PIE
+	 * being cleared.
+	 */
+	csrs CSR_STATUS, SR_IE
+#endif
 #if defined(CONFIG_TRACE_IRQFLAGS) || defined(CONFIG_CONTEXT_TRACKING)
 	/* Recover a0 - a7 for system calls */
 	REG_L a0, PT_A0(sp)
arch/riscv/kernel/time.c +3 -0
index 4d3a1048ad8b..8a5cf99c0776 100644
@@ -4,6 +4,7 @@
  * Copyright (C) 2017 SiFive
  */
 
+#include <linux/of_clk.h>
 #include <linux/clocksource.h>
 #include <linux/delay.h>
 #include <asm/sbi.h>
@@ -24,6 +25,8 @@ void __init time_init(void)
 	riscv_timebase = prop;
 
 	lpj_fine = riscv_timebase / HZ;
+
+	of_clk_init(NULL);
 	timer_probe();
 }
 
arch/riscv/mm/init.c +14 -2
index e4133c20744c..608082fb9a6c 100644
@@ -155,9 +155,10 @@ static void __init setup_initrd(void)
 void __init setup_bootmem(void)
 {
 	phys_addr_t mem_start = 0;
-	phys_addr_t start, end = 0;
+	phys_addr_t start, dram_end, end = 0;
 	phys_addr_t vmlinux_end = __pa_symbol(&_end);
 	phys_addr_t vmlinux_start = __pa_symbol(&_start);
+	phys_addr_t max_mapped_addr = __pa(~(ulong)0);
 	u64 i;
 
 	/* Find the memory region containing the kernel */
@@ -179,7 +180,18 @@ void __init setup_bootmem(void)
 	/* Reserve from the start of the kernel to the end of the kernel */
 	memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);
 
-	max_pfn = PFN_DOWN(memblock_end_of_DRAM());
+	dram_end = memblock_end_of_DRAM();
+
+	/*
+	 * memblock allocator is not aware of the fact that last 4K bytes of
+	 * the addressable memory can not be mapped because of IS_ERR_VALUE
+	 * macro. Make sure that last 4k bytes are not usable by memblock
+	 * if end of dram is equal to maximum addressable memory.
+	 */
+	if (max_mapped_addr == (dram_end - 1))
+		memblock_set_current_limit(max_mapped_addr - 4096);
+
+	max_pfn = PFN_DOWN(dram_end);
 	max_low_pfn = max_pfn;
 	set_max_mapnr(max_low_pfn);
 
arch/sh/Kconfig +0 -1
index 159da4ed578f..b6f3d49991d3 100644
@@ -30,7 +30,6 @@ config SUPERH
 	select HAVE_ARCH_KGDB
 	select HAVE_ARCH_SECCOMP_FILTER
 	select HAVE_ARCH_TRACEHOOK
-	select HAVE_COPY_THREAD_TLS
 	select HAVE_DEBUG_BUGVERBOSE
 	select HAVE_DEBUG_KMEMLEAK
 	select HAVE_DYNAMIC_FTRACE
arch/sh/drivers/dma/Kconfig +1 -2
index d0de378beefe..7d54f284ce10 100644
@@ -63,8 +63,7 @@ config PVR2_DMA
 
 config G2_DMA
 	tristate "G2 Bus DMA support"
-	depends on SH_DREAMCAST
-	select SH_DMA_API
+	depends on SH_DREAMCAST && SH_DMA_API
 	help
 	  This enables support for the DMA controller for the Dreamcast's
 	  G2 bus. Drivers that want this will generally enable this on
arch/x86/entry/common.c +7 -3
index 870efeec8bda..94c6e6330e04 100644
@@ -73,10 +73,8 @@ static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs,
 						  unsigned int nr)
 {
 	if (likely(nr < IA32_NR_syscalls)) {
-		instrumentation_begin();
 		nr = array_index_nospec(nr, IA32_NR_syscalls);
 		regs->ax = ia32_sys_call_table[nr](regs);
-		instrumentation_end();
 	}
 }
 
@@ -91,8 +89,11 @@ __visible noinstr void do_int80_syscall_32(struct pt_regs *regs)
 	 * or may not be necessary, but it matches the old asm behavior.
 	 */
 	nr = (unsigned int)syscall_enter_from_user_mode(regs, nr);
+	instrumentation_begin();
 
 	do_syscall_32_irqs_on(regs, nr);
+
+	instrumentation_end();
 	syscall_exit_to_user_mode(regs);
 }
 
@@ -121,11 +122,12 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs)
 		res = get_user(*(u32 *)&regs->bp,
 		       (u32 __user __force *)(unsigned long)(u32)regs->sp);
 	}
-	instrumentation_end();
 
 	if (res) {
 		/* User code screwed up. */
 		regs->ax = -EFAULT;
+
+		instrumentation_end();
 		syscall_exit_to_user_mode(regs);
 		return false;
 	}
@@ -135,6 +137,8 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs)
 
 	/* Now this is just like a normal syscall. */
 	do_syscall_32_irqs_on(regs, nr);
+
+	instrumentation_end();
 	syscall_exit_to_user_mode(regs);
 	return true;
 }
arch/x86/hyperv/hv_init.c +4 -0
index 6fb8cb7b9bcc..6375967a8244 100644
@@ -16,6 +16,7 @@
 #include <asm/hyperv-tlfs.h>
 #include <asm/mshyperv.h>
 #include <asm/idtentry.h>
+#include <linux/kexec.h>
 #include <linux/version.h>
 #include <linux/vmalloc.h>
 #include <linux/mm.h>
@@ -26,6 +27,8 @@
 #include <linux/syscore_ops.h>
 #include <clocksource/hyperv_timer.h>
 
+int hyperv_init_cpuhp;
+
 void *hv_hypercall_pg;
 EXPORT_SYMBOL_GPL(hv_hypercall_pg);
 
@@ -424,6 +427,7 @@ void __init hyperv_init(void)
 
 	register_syscore_ops(&hv_syscore_ops);
 
+	hyperv_init_cpuhp = cpuhp;
 	return;
 
 remove_cpuhp_state:
arch/x86/include/asm/fpu/api.h +13 -2
index dcd9503b1098..38f4936045ab 100644
@@ -16,14 +16,25 @@
  * Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It
  * disables preemption so be careful if you intend to use it for long periods
  * of time.
- * If you intend to use the FPU in softirq you need to check first with
+ * If you intend to use the FPU in irq/softirq you need to check first with
  * irq_fpu_usable() if it is possible.
  */
-extern void kernel_fpu_begin(void);
+
+/* Kernel FPU states to initialize in kernel_fpu_begin_mask() */
+#define KFPU_387	_BITUL(0)	/* 387 state will be initialized */
+#define KFPU_MXCSR	_BITUL(1)	/* MXCSR will be initialized */
+
+extern void kernel_fpu_begin_mask(unsigned int kfpu_mask);
 extern void kernel_fpu_end(void);
 extern bool irq_fpu_usable(void);
 extern void fpregs_mark_activate(void);
 
+/* Code that is unaware of kernel_fpu_begin_mask() can use this */
+static inline void kernel_fpu_begin(void)
+{
+	kernel_fpu_begin_mask(KFPU_387 | KFPU_MXCSR);
+}
+
 /*
  * Use fpregs_lock() while editing CPU's FPU registers or fpu->state.
  * A context switch will (and softirq might) save CPU's FPU registers to
arch/x86/include/asm/mshyperv.h +2 -0
index ffc289992d1b..30f76b966857 100644
@@ -74,6 +74,8 @@ static inline void hv_disable_stimer0_percpu_irq(int irq) {}
 
 
 #if IS_ENABLED(CONFIG_HYPERV)
+extern int hyperv_init_cpuhp;
+
 extern void *hv_hypercall_pg;
 extern void  __percpu  **hyperv_pcpu_input_arg;
 
arch/x86/include/asm/topology.h +2 -2
index f4234575f3fd..1f6caceccbb0 100644
@@ -110,6 +110,8 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu);
 #define topology_die_id(cpu)			(cpu_data(cpu).cpu_die_id)
 #define topology_core_id(cpu)			(cpu_data(cpu).cpu_core_id)
 
+extern unsigned int __max_die_per_package;
+
 #ifdef CONFIG_SMP
 #define topology_die_cpumask(cpu)		(per_cpu(cpu_die_map, cpu))
 #define topology_core_cpumask(cpu)		(per_cpu(cpu_core_map, cpu))
@@ -118,8 +120,6 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu);
 extern unsigned int __max_logical_packages;
 #define topology_max_packages()			(__max_logical_packages)
 
-extern unsigned int __max_die_per_package;
-
 static inline int topology_max_die_per_package(void)
 {
 	return __max_die_per_package;
arch/x86/kernel/cpu/amd.c +2 -2
index 2f1fbd8150af..a2551b10780c 100644
@@ -569,12 +569,12 @@ static void bsp_init_amd(struct cpuinfo_x86 *c)
 		u32 ecx;
 
 		ecx = cpuid_ecx(0x8000001e);
-		nodes_per_socket = ((ecx >> 8) & 7) + 1;
+		__max_die_per_package = nodes_per_socket = ((ecx >> 8) & 7) + 1;
 	} else if (boot_cpu_has(X86_FEATURE_NODEID_MSR)) {
 		u64 value;
 
 		rdmsrl(MSR_FAM10H_NODE_ID, value);
-		nodes_per_socket = ((value >> 3) & 7) + 1;
+		__max_die_per_package = nodes_per_socket = ((value >> 3) & 7) + 1;
 	}
 
 	if (!boot_cpu_has(X86_FEATURE_AMD_SSBD) &&
arch/x86/kernel/cpu/mshyperv.c +18 -0
index 05ef1f4550cb..6cc50ab07bde 100644
@@ -135,14 +135,32 @@ static void hv_machine_shutdown(void)
 {
 	if (kexec_in_progress && hv_kexec_handler)
 		hv_kexec_handler();
+
+	/*
+	 * Call hv_cpu_die() on all the CPUs, otherwise later the hypervisor
+	 * corrupts the old VP Assist Pages and can crash the kexec kernel.
+	 */
+	if (kexec_in_progress && hyperv_init_cpuhp > 0)
+		cpuhp_remove_state(hyperv_init_cpuhp);
+
+	/* The function calls stop_other_cpus(). */
 	native_machine_shutdown();
+
+	/* Disable the hypercall page when there is only 1 active CPU. */
+	if (kexec_in_progress)
+		hyperv_cleanup();
 }
 
 static void hv_machine_crash_shutdown(struct pt_regs *regs)
 {
 	if (hv_crash_handler)
 		hv_crash_handler(regs);
+
+	/* The function calls crash_smp_send_stop(). */
 	native_machine_crash_shutdown(regs);
+
+	/* Disable the hypercall page when there is only 1 active CPU. */
+	hyperv_cleanup();
 }
 #endif /* CONFIG_KEXEC_CORE */
 #endif /* CONFIG_HYPERV */
arch/x86/kernel/cpu/topology.c +1 -1
index d3a0791bc052..91288da29599 100644
@@ -25,10 +25,10 @@
 #define BITS_SHIFT_NEXT_LEVEL(eax)	((eax) & 0x1f)
 #define LEVEL_MAX_SIBLINGS(ebx)		((ebx) & 0xffff)
 
-#ifdef CONFIG_SMP
 unsigned int __max_die_per_package __read_mostly = 1;
 EXPORT_SYMBOL(__max_die_per_package);
 
+#ifdef CONFIG_SMP
 /*
  * Check if given CPUID extended toplogy "leaf" is implemented
  */
arch/x86/kernel/fpu/core.c +5 -4
index eb86a2b831b1..571220ac8bea 100644
@@ -121,7 +121,7 @@ int copy_fpregs_to_fpstate(struct fpu *fpu)
 }
 EXPORT_SYMBOL(copy_fpregs_to_fpstate);
 
-void kernel_fpu_begin(void)
+void kernel_fpu_begin_mask(unsigned int kfpu_mask)
 {
 	preempt_disable();
 
@@ -141,13 +141,14 @@ void kernel_fpu_begin(void)
 	}
 	__cpu_invalidate_fpregs_state();
 
-	if (boot_cpu_has(X86_FEATURE_XMM))
+	/* Put sane initial values into the control registers. */
+	if (likely(kfpu_mask & KFPU_MXCSR) && boot_cpu_has(X86_FEATURE_XMM))
 		ldmxcsr(MXCSR_DEFAULT);
 
-	if (boot_cpu_has(X86_FEATURE_FPU))
+	if (unlikely(kfpu_mask & KFPU_387) && boot_cpu_has(X86_FEATURE_FPU))
 		asm volatile ("fninit");
 }
-EXPORT_SYMBOL_GPL(kernel_fpu_begin);
+EXPORT_SYMBOL_GPL(kernel_fpu_begin_mask);
 
 void kernel_fpu_end(void)
 {
arch/x86/kernel/setup.c +9 -11
index 84f581c91db4..098015b73999 100644
@@ -665,17 +665,6 @@ static void __init trim_platform_memory_ranges(void)
 
 static void __init trim_bios_range(void)
 {
-	/*
-	 * A special case is the first 4Kb of memory;
-	 * This is a BIOS owned area, not kernel ram, but generally
-	 * not listed as such in the E820 table.
-	 *
-	 * This typically reserves additional memory (64KiB by default)
-	 * since some BIOSes are known to corrupt low memory.  See the
-	 * Kconfig help text for X86_RESERVE_LOW.
-	 */
-	e820__range_update(0, PAGE_SIZE, E820_TYPE_RAM, E820_TYPE_RESERVED);
-
 	/*
 	 * special case: Some BIOSes report the PC BIOS
 	 * area (640Kb -> 1Mb) as RAM even though it is not.
@@ -733,6 +722,15 @@ early_param("reservelow", parse_reservelow);
 
 static void __init trim_low_memory_range(void)
 {
+	/*
+	 * A special case is the first 4Kb of memory;
+	 * This is a BIOS owned area, not kernel ram, but generally
+	 * not listed as such in the E820 table.
+	 *
+	 * This typically reserves additional memory (64KiB by default)
+	 * since some BIOSes are known to corrupt low memory.  See the
+	 * Kconfig help text for X86_RESERVE_LOW.
+	 */
 	memblock_reserve(0, ALIGN(reserve_low, PAGE_SIZE));
 }
 	
arch/x86/kernel/sev-es.c +13 -1
index 0bd1a0fc587e..84c1821819af 100644
@@ -225,7 +225,7 @@ static inline u64 sev_es_rd_ghcb_msr(void)
 	return __rdmsr(MSR_AMD64_SEV_ES_GHCB);
 }
 
-static inline void sev_es_wr_ghcb_msr(u64 val)
+static __always_inline void sev_es_wr_ghcb_msr(u64 val)
 {
 	u32 low, high;
 
@@ -286,6 +286,12 @@ static enum es_result vc_write_mem(struct es_em_ctxt *ctxt,
 	u16 d2;
 	u8  d1;
 
+	/* If instruction ran in kernel mode and the I/O buffer is in kernel space */
+	if (!user_mode(ctxt->regs) && !access_ok(target, size)) {
+		memcpy(dst, buf, size);
+		return ES_OK;
+	}
+
 	switch (size) {
 	case 1:
 		memcpy(&d1, buf, 1);
@@ -335,6 +341,12 @@ static enum es_result vc_read_mem(struct es_em_ctxt *ctxt,
 	u16 d2;
 	u8  d1;
 
+	/* If instruction ran in kernel mode and the I/O buffer is in kernel space */
+	if (!user_mode(ctxt->regs) && !access_ok(s, size)) {
+		memcpy(buf, src, size);
+		return ES_OK;
+	}
+
 	switch (size) {
 	case 1:
 		if (get_user(d1, s))
arch/x86/lib/mmx_32.c +15 -5
index 4321fa02e18d..419365c48b2a 100644
@@ -26,6 +26,16 @@
 #include <asm/fpu/api.h>
 #include <asm/asm.h>
 
+/*
+ * Use KFPU_387.  MMX instructions are not affected by MXCSR,
+ * but both AMD and Intel documentation states that even integer MMX
+ * operations will result in #MF if an exception is pending in FCW.
+ *
+ * EMMS is not needed afterwards because, after calling kernel_fpu_end(),
+ * any subsequent user of the 387 stack will reinitialize it using
+ * KFPU_387.
+ */
+
 void *_mmx_memcpy(void *to, const void *from, size_t len)
 {
 	void *p;
@@ -37,7 +47,7 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
 	p = to;
 	i = len >> 6; /* len/64 */
 
-	kernel_fpu_begin();
+	kernel_fpu_begin_mask(KFPU_387);
 
 	__asm__ __volatile__ (
 		"1: prefetch (%0)\n"		/* This set is 28 bytes */
@@ -127,7 +137,7 @@ static void fast_clear_page(void *page)
 {
 	int i;
 
-	kernel_fpu_begin();
+	kernel_fpu_begin_mask(KFPU_387);
 
 	__asm__ __volatile__ (
 		"  pxor %%mm0, %%mm0\n" : :
@@ -160,7 +170,7 @@ static void fast_copy_page(void *to, void *from)
 {
 	int i;
 
-	kernel_fpu_begin();
+	kernel_fpu_begin_mask(KFPU_387);
 
 	/*
 	 * maybe the prefetch stuff can go before the expensive fnsave...
@@ -247,7 +257,7 @@ static void fast_clear_page(void *page)
 {
 	int i;
 
-	kernel_fpu_begin();
+	kernel_fpu_begin_mask(KFPU_387);
 
 	__asm__ __volatile__ (
 		"  pxor %%mm0, %%mm0\n" : :
@@ -282,7 +292,7 @@ static void fast_copy_page(void *to, void *from)
 {
 	int i;
 
-	kernel_fpu_begin();
+	kernel_fpu_begin_mask(KFPU_387);
 
 	__asm__ __volatile__ (
 		"1: prefetch (%0)\n"
arch/x86/xen/enlighten_hvm.c +10 -1
index 9e87ab010c82..ec50b7423a4c 100644
@@ -188,6 +188,8 @@ static int xen_cpu_dead_hvm(unsigned int cpu)
        return 0;
 }
 
+static bool no_vector_callback __initdata;
+
 static void __init xen_hvm_guest_init(void)
 {
 	if (xen_pv_domain())
@@ -207,7 +209,7 @@ static void __init xen_hvm_guest_init(void)
 
 	xen_panic_handler_init();
 
-	if (xen_feature(XENFEAT_hvm_callback_vector))
+	if (!no_vector_callback && xen_feature(XENFEAT_hvm_callback_vector))
 		xen_have_vector_callback = 1;
 
 	xen_hvm_smp_init();
@@ -233,6 +235,13 @@ static __init int xen_parse_nopv(char *arg)
 }
 early_param("xen_nopv", xen_parse_nopv);
 
+static __init int xen_parse_no_vector_callback(char *arg)
+{
+	no_vector_callback = true;
+	return 0;
+}
+early_param("xen_no_vector_callback", xen_parse_no_vector_callback);
+
 bool __init xen_hvm_need_lapic(void)
 {
 	if (xen_pv_domain())
arch/x86/xen/smp_hvm.c +19 -10
index f5e7db4f82ab..6ff3c887e0b9 100644
@@ -33,9 +33,11 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
 	int cpu;
 
 	native_smp_prepare_cpus(max_cpus);
-	WARN_ON(xen_smp_intr_init(0));
 
-	xen_init_lock_cpu(0);
+	if (xen_have_vector_callback) {
+		WARN_ON(xen_smp_intr_init(0));
+		xen_init_lock_cpu(0);
+	}
 
 	for_each_possible_cpu(cpu) {
 		if (cpu == 0)
@@ -50,9 +52,11 @@ static void __init xen_hvm_smp_prepare_cpus(unsigned int max_cpus)
 static void xen_hvm_cpu_die(unsigned int cpu)
 {
 	if (common_cpu_die(cpu) == 0) {
-		xen_smp_intr_free(cpu);
-		xen_uninit_lock_cpu(cpu);
-		xen_teardown_timer(cpu);
+		if (xen_have_vector_callback) {
+			xen_smp_intr_free(cpu);
+			xen_uninit_lock_cpu(cpu);
+			xen_teardown_timer(cpu);
+		}
 	}
 }
 #else
@@ -64,14 +68,19 @@ static void xen_hvm_cpu_die(unsigned int cpu)
 
 void __init xen_hvm_smp_init(void)
 {
-	if (!xen_have_vector_callback)
+	smp_ops.smp_prepare_boot_cpu = xen_hvm_smp_prepare_boot_cpu;
+	smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
+	smp_ops.smp_cpus_done = xen_smp_cpus_done;
+	smp_ops.cpu_die = xen_hvm_cpu_die;
+
+	if (!xen_have_vector_callback) {
+#ifdef CONFIG_PARAVIRT_SPINLOCKS
+		nopvspin = true;
+#endif
 		return;
+	}
 
-	smp_ops.smp_prepare_cpus = xen_hvm_smp_prepare_cpus;
 	smp_ops.smp_send_reschedule = xen_smp_send_reschedule;
-	smp_ops.cpu_die = xen_hvm_cpu_die;
 	smp_ops.send_call_func_ipi = xen_smp_send_call_function_ipi;
 	smp_ops.send_call_func_single_ipi = xen_smp_send_call_function_single_ipi;
-	smp_ops.smp_prepare_boot_cpu = xen_hvm_smp_prepare_boot_cpu;
-	smp_ops.smp_cpus_done = xen_smp_cpus_done;
 }
crypto/xor.c +2 -0
index eacbf4f93990..8f899f898ec9 100644
@@ -107,6 +107,8 @@ do_xor_speed(struct xor_block_template *tmpl, void *b1, void *b2)
 	preempt_enable();
 
 	// bytes/ns == GB/s, multiply by 1000 to get MB/s [not MiB/s]
+	if (!min)
+		min = 1;
 	speed = (1000 * REPS * BENCH_SIZE) / (unsigned int)ktime_to_ns(min);
 	tmpl->speed = speed;
 
drivers/acpi/scan.c +2 -0
index f23ef508fe88..dca5cc423cd4 100644
@@ -586,6 +586,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
 	if (!device)
 		return -EINVAL;
 
+	*device = NULL;
+
 	status = acpi_get_data_full(handle, acpi_scan_drop_device,
 				    (void **)device, callback);
 	if (ACPI_FAILURE(status) || !*device) {
drivers/base/core.c +31 -13

103 lines not on this page · raw message

drivers/base/dd.c +2 -0
index 148e81969e04..3c94ebc8d4bb 100644
@@ -612,6 +612,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 	else if (drv->remove)
 		drv->remove(dev);
 probe_failed:
+	kfree(dev->dma_range_map);
+	dev->dma_range_map = NULL;
 	if (dev->bus)
 		blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
 					     BUS_NOTIFY_DRIVER_NOT_BOUND, dev);
drivers/clk/tegra/clk-tegra30.c +2 -0
index 37244a7e68c2..9cf249c344d9 100644
@@ -1256,6 +1256,8 @@ static struct tegra_clk_init_table init_table[] __initdata = {
 	{ TEGRA30_CLK_I2S3_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 },
 	{ TEGRA30_CLK_I2S4_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 },
 	{ TEGRA30_CLK_VIMCLK_SYNC, TEGRA30_CLK_CLK_MAX, 24000000, 0 },
+	{ TEGRA30_CLK_HDA, TEGRA30_CLK_PLL_P, 102000000, 0 },
+	{ TEGRA30_CLK_HDA2CODEC_2X, TEGRA30_CLK_PLL_P, 48000000, 0 },
 	/* must be the last entry */
 	{ TEGRA30_CLK_CLK_MAX, TEGRA30_CLK_CLK_MAX, 0, 0 },
 };
drivers/counter/ti-eqep.c +0 -35
index a60aee1a1a29..65df9ef5b5bc 100644
@@ -235,36 +235,6 @@ static ssize_t ti_eqep_position_ceiling_write(struct counter_device *counter,
 	return len;
 }
 
-static ssize_t ti_eqep_position_floor_read(struct counter_device *counter,
-					   struct counter_count *count,
-					   void *ext_priv, char *buf)
-{
-	struct ti_eqep_cnt *priv = counter->priv;
-	u32 qposinit;
-
-	regmap_read(priv->regmap32, QPOSINIT, &qposinit);
-
-	return sprintf(buf, "%u\n", qposinit);
-}
-
-static ssize_t ti_eqep_position_floor_write(struct counter_device *counter,
-					    struct counter_count *count,
-					    void *ext_priv, const char *buf,
-					    size_t len)
-{
-	struct ti_eqep_cnt *priv = counter->priv;
-	int err;
-	u32 res;
-
-	err = kstrtouint(buf, 0, &res);
-	if (err < 0)
-		return err;
-
-	regmap_write(priv->regmap32, QPOSINIT, res);
-
-	return len;
-}
-
 static ssize_t ti_eqep_position_enable_read(struct counter_device *counter,
 					    struct counter_count *count,
 					    void *ext_priv, char *buf)
@@ -301,11 +271,6 @@ static struct counter_count_ext ti_eqep_position_ext[] = {
 		.read	= ti_eqep_position_ceiling_read,
 		.write	= ti_eqep_position_ceiling_write,
 	},
-	{
-		.name	= "floor",
-		.read	= ti_eqep_position_floor_read,
-		.write	= ti_eqep_position_floor_write,
-	},
 	{
 		.name	= "enable",
 		.read	= ti_eqep_position_enable_read,
drivers/crypto/Kconfig +1 -0
index 9d6645b1f0ab..ff5e85eefbf6 100644
@@ -366,6 +366,7 @@ if CRYPTO_DEV_OMAP
 config CRYPTO_DEV_OMAP_SHAM
 	tristate "Support for OMAP MD5/SHA1/SHA2 hw accelerator"
 	depends on ARCH_OMAP2PLUS
+	select CRYPTO_ENGINE
 	select CRYPTO_SHA1
 	select CRYPTO_MD5
 	select CRYPTO_SHA256
drivers/gpio/Kconfig +2 -1
index 5d4de5cd6759..f20ac3d69424 100644
@@ -508,7 +508,8 @@ config GPIO_SAMA5D2_PIOBU
 
 config GPIO_SIFIVE
 	bool "SiFive GPIO support"
-	depends on OF_GPIO && IRQ_DOMAIN_HIERARCHY
+	depends on OF_GPIO
+	select IRQ_DOMAIN_HIERARCHY
 	select GPIO_GENERIC
 	select GPIOLIB_IRQCHIP
 	select REGMAP_MMIO
drivers/gpio/gpiolib-cdev.c +73 -72

187 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +0 -1
index 2ddbcfe0a72f..76d10f1c579b 100644
@@ -80,7 +80,6 @@ MODULE_FIRMWARE("amdgpu/renoir_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/navi10_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/navi14_gpu_info.bin");
 MODULE_FIRMWARE("amdgpu/navi12_gpu_info.bin");
-MODULE_FIRMWARE("amdgpu/green_sardine_gpu_info.bin");
 
 #define AMDGPU_RESUME_MS		2000
 
drivers/gpu/drm/amd/amdgpu/psp_gfx_if.h +1 -1
index 4137dc710aaf..7ad0434be293 100644
@@ -47,7 +47,7 @@ enum psp_gfx_crtl_cmd_id
     GFX_CTRL_CMD_ID_DISABLE_INT     = 0x00060000,   /* disable PSP-to-Gfx interrupt */
     GFX_CTRL_CMD_ID_MODE1_RST       = 0x00070000,   /* trigger the Mode 1 reset */
     GFX_CTRL_CMD_ID_GBR_IH_SET      = 0x00080000,   /* set Gbr IH_RB_CNTL registers */
-    GFX_CTRL_CMD_ID_CONSUME_CMD     = 0x000A0000,   /* send interrupt to psp for updating write pointer of vf */
+    GFX_CTRL_CMD_ID_CONSUME_CMD     = 0x00090000,   /* send interrupt to psp for updating write pointer of vf */
     GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING = 0x000C0000, /* destroy GPCOM ring */
 
     GFX_CTRL_CMD_ID_MAX             = 0x000F0000,   /* max command ID */
drivers/gpu/drm/amd/amdkfd/kfd_crat.c +7 -4
index d7f67620f57b..31d793ee0836 100644
@@ -1034,11 +1034,14 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
 				(struct crat_subtype_iolink *)sub_type_hdr);
 		if (ret < 0)
 			return ret;
-		crat_table->length += (sub_type_hdr->length * entries);
-		crat_table->total_entries += entries;
 
-		sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
-				sub_type_hdr->length * entries);
+		if (entries) {
+			crat_table->length += (sub_type_hdr->length * entries);
+			crat_table->total_entries += entries;
+
+			sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
+					sub_type_hdr->length * entries);
+		}
 #else
 		pr_info("IO link not available for non x86 platforms\n");
 #endif
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c +1 -1
index d0699e98db92..e00a30e7d252 100644
@@ -113,7 +113,7 @@ int amdgpu_dm_crtc_configure_crc_source(struct drm_crtc *crtc,
 	mutex_lock(&adev->dm.dc_lock);
 
 	/* Enable CRTC CRC generation if necessary. */
-	if (dm_is_crc_source_crtc(source)) {
+	if (dm_is_crc_source_crtc(source) || source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE) {
 		if (!dc_stream_configure_crc(stream_state->ctx->dc,
 					     stream_state, enable, enable)) {
 			ret = -EINVAL;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_resource.c +2 -2
index 462d3d981ea5..0a01be38ee1b 100644
@@ -608,8 +608,8 @@ static const struct dc_debug_options debug_defaults_drv = {
 		.disable_pplib_clock_request = false,
 		.disable_pplib_wm_range = false,
 		.pplib_wm_report_mode = WM_REPORT_DEFAULT,
-		.pipe_split_policy = MPC_SPLIT_DYNAMIC,
-		.force_single_disp_pipe_split = true,
+		.pipe_split_policy = MPC_SPLIT_AVOID,
+		.force_single_disp_pipe_split = false,
 		.disable_dcc = DCC_ENABLE,
 		.voltage_align_fclk = true,
 		.disable_stereo_support = true,
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +4 -3
index d50a9c370637..a92f6e4b2eb8 100644
@@ -2520,8 +2520,7 @@ struct pipe_ctx *dcn20_find_secondary_pipe(struct dc *dc,
 		 * if this primary pipe has a bottom pipe in prev. state
 		 * and if the bottom pipe is still available (which it should be),
 		 * pick that pipe as secondary
-		 * Same logic applies for ODM pipes. Since mpo is not allowed with odm
-		 * check in else case.
+		 * Same logic applies for ODM pipes
 		 */
 		if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe) {
 			preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].bottom_pipe->pipe_idx;
@@ -2529,7 +2528,9 @@ struct pipe_ctx *dcn20_find_secondary_pipe(struct dc *dc,
 				secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx];
 				secondary_pipe->pipe_idx = preferred_pipe_idx;
 			}
-		} else if (dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) {
+		}
+		if (secondary_pipe == NULL &&
+				dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe) {
 			preferred_pipe_idx = dc->current_state->res_ctx.pipe_ctx[primary_pipe->pipe_idx].next_odm_pipe->pipe_idx;
 			if (res_ctx->pipe_ctx[preferred_pipe_idx].stream == NULL) {
 				secondary_pipe = &res_ctx->pipe_ctx[preferred_pipe_idx];
drivers/gpu/drm/drm_atomic_helper.c +1 -1
index f9170b4b22e7..8a871e5c3e26 100644
@@ -3007,7 +3007,7 @@ int drm_atomic_helper_set_config(struct drm_mode_set *set,
 
 	ret = handle_conflicting_encoders(state, true);
 	if (ret)
-		return ret;
+		goto fail;
 
 	ret = drm_atomic_commit(state);
 
drivers/gpu/drm/drm_syncobj.c +5 -3
index 6e74e6745eca..349146049849 100644
@@ -388,19 +388,18 @@ int drm_syncobj_find_fence(struct drm_file *file_private,
 		return -ENOENT;
 
 	*fence = drm_syncobj_fence_get(syncobj);
-	drm_syncobj_put(syncobj);
 
 	if (*fence) {
 		ret = dma_fence_chain_find_seqno(fence, point);
 		if (!ret)
-			return 0;
+			goto out;
 		dma_fence_put(*fence);
 	} else {
 		ret = -EINVAL;
 	}
 
 	if (!(flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT))
-		return ret;
+		goto out;
 
 	memset(&wait, 0, sizeof(wait));
 	wait.task = current;
@@ -432,6 +431,9 @@ int drm_syncobj_find_fence(struct drm_file *file_private,
 	if (wait.node.next)
 		drm_syncobj_remove_wait(syncobj, &wait);
 
+out:
+	drm_syncobj_put(syncobj);
+
 	return ret;
 }
 EXPORT_SYMBOL(drm_syncobj_find_fence);
drivers/gpu/drm/i915/display/intel_ddi.c +4 -4
index cdcb7b1034ae..3f2bbd9370a8 100644
@@ -3387,7 +3387,7 @@ static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state,
 	intel_ddi_init_dp_buf_reg(encoder);
 
 	if (!is_mst)
-		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
+		intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
 
 	intel_dp_sink_set_decompression_state(intel_dp, crtc_state, true);
 	/*
@@ -3469,8 +3469,8 @@ static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state,
 
 	intel_ddi_init_dp_buf_reg(encoder);
 	if (!is_mst)
-		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
-	intel_dp_configure_protocol_converter(intel_dp);
+		intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
+	intel_dp_configure_protocol_converter(intel_dp, crtc_state);
 	intel_dp_sink_set_decompression_state(intel_dp, crtc_state,
 					      true);
 	intel_dp_sink_set_fec_ready(intel_dp, crtc_state);
@@ -3647,7 +3647,7 @@ static void intel_ddi_post_disable_dp(struct intel_atomic_state *state,
 	 * Power down sink before disabling the port, otherwise we end
 	 * up getting interrupts from the sink on detecting link loss.
 	 */
-	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
+	intel_dp_set_power(intel_dp, DP_SET_POWER_D3);
 
 	if (INTEL_GEN(dev_priv) >= 12) {
 		if (is_mst) {
drivers/gpu/drm/i915/display/intel_dp.c +17 -16
index 1901c88d418f..1937b3d6342a 100644
@@ -3496,22 +3496,22 @@ void intel_dp_sink_set_decompression_state(struct intel_dp *intel_dp,
 			    enable ? "enable" : "disable");
 }
 
-/* If the sink supports it, try to set the power state appropriately */
-void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode)
+/* If the device supports it, try to set the power state appropriately */
+void intel_dp_set_power(struct intel_dp *intel_dp, u8 mode)
 {
-	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+	struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base;
+	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
 	int ret, i;
 
 	/* Should have a valid DPCD by this point */
 	if (intel_dp->dpcd[DP_DPCD_REV] < 0x11)
 		return;
 
-	if (mode != DRM_MODE_DPMS_ON) {
+	if (mode != DP_SET_POWER_D0) {
 		if (downstream_hpd_needs_d0(intel_dp))
 			return;
 
-		ret = drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER,
-					 DP_SET_POWER_D3);
+		ret = drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER, mode);
 	} else {
 		struct intel_lspcon *lspcon = dp_to_lspcon(intel_dp);
 
@@ -3520,8 +3520,7 @@ void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode)
 		 * time to wake up.
 		 */
 		for (i = 0; i < 3; i++) {
-			ret = drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER,
-						 DP_SET_POWER_D0);
+			ret = drm_dp_dpcd_writeb(&intel_dp->aux, DP_SET_POWER, mode);
 			if (ret == 1)
 				break;
 			msleep(1);
@@ -3532,8 +3531,9 @@ void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode)
 	}
 
 	if (ret != 1)
-		drm_dbg_kms(&i915->drm, "failed to %s sink power state\n",
-			    mode == DRM_MODE_DPMS_ON ? "enable" : "disable");
+		drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] Set power to %s failed\n",
+			    encoder->base.base.id, encoder->base.name,
+			    mode == DP_SET_POWER_D0 ? "D0" : "D3");
 }
 
 static bool cpt_dp_port_selected(struct drm_i915_private *dev_priv,
@@ -3707,7 +3707,7 @@ static void intel_disable_dp(struct intel_atomic_state *state,
 	 * ensure that we have vdd while we switch off the panel. */
 	intel_edp_panel_vdd_on(intel_dp);
 	intel_edp_backlight_off(old_conn_state);
-	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
+	intel_dp_set_power(intel_dp, DP_SET_POWER_D3);
 	intel_edp_panel_off(intel_dp);
 }
 
@@ -3856,7 +3856,8 @@ static void intel_dp_enable_port(struct intel_dp *intel_dp,
 	intel_de_posting_read(dev_priv, intel_dp->output_reg);
 }
 
-void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp)
+void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp,
+					   const struct intel_crtc_state *crtc_state)
 {
 	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 	u8 tmp;
@@ -3875,8 +3876,8 @@ void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp)
 		drm_dbg_kms(&i915->drm, "Failed to set protocol converter HDMI mode to %s\n",
 			    enableddisabled(intel_dp->has_hdmi_sink));
 
-	tmp = intel_dp->dfp.ycbcr_444_to_420 ?
-		DP_CONVERSION_TO_YCBCR420_ENABLE : 0;
+	tmp = crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR444 &&
+		intel_dp->dfp.ycbcr_444_to_420 ? DP_CONVERSION_TO_YCBCR420_ENABLE : 0;
 
 	if (drm_dp_dpcd_writeb(&intel_dp->aux,
 			       DP_PROTOCOL_CONVERTER_CONTROL_1, tmp) != 1)
@@ -3929,8 +3930,8 @@ static void intel_enable_dp(struct intel_atomic_state *state,
 				    lane_mask);
 	}
 
-	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
-	intel_dp_configure_protocol_converter(intel_dp);
+	intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
+	intel_dp_configure_protocol_converter(intel_dp, pipe_config);
 	intel_dp_start_link_train(intel_dp);
 	intel_dp_stop_link_train(intel_dp);
 
drivers/gpu/drm/i915/display/intel_dp.h +3 -2
index 08a1c0aa8b94..2dd934182471 100644
@@ -50,8 +50,9 @@ int intel_dp_get_link_train_fallback_values(struct intel_dp *intel_dp,
 					    int link_rate, u8 lane_count);
 int intel_dp_retrain_link(struct intel_encoder *encoder,
 			  struct drm_modeset_acquire_ctx *ctx);
-void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
-void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp);
+void intel_dp_set_power(struct intel_dp *intel_dp, u8 mode);
+void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp,
+					   const struct intel_crtc_state *crtc_state);
 void intel_dp_sink_set_decompression_state(struct intel_dp *intel_dp,
 					   const struct intel_crtc_state *crtc_state,
 					   bool enable);
drivers/gpu/drm/i915/display/intel_dp_mst.c +1 -1
index 64d885539e94..5d745d9b99b2 100644
@@ -488,7 +488,7 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state,
 		    intel_dp->active_mst_links);
 
 	if (first_mst_stream)
-		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
+		intel_dp_set_power(intel_dp, DP_SET_POWER_D0);
 
 	drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true);
 
drivers/gpu/drm/i915/display/intel_hdcp.c +9 -0
index 5492076d1ae0..17a8c2e73a82 100644
@@ -2187,6 +2187,7 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
 	if (content_protection_type_changed) {
 		mutex_lock(&hdcp->mutex);
 		hdcp->value = DRM_MODE_CONTENT_PROTECTION_DESIRED;
+		drm_connector_get(&connector->base);
 		schedule_work(&hdcp->prop_work);
 		mutex_unlock(&hdcp->mutex);
 	}
@@ -2198,6 +2199,14 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,
 		desired_and_not_enabled =
 			hdcp->value != DRM_MODE_CONTENT_PROTECTION_ENABLED;
 		mutex_unlock(&hdcp->mutex);
+		/*
+		 * If HDCP already ENABLED and CP property is DESIRED, schedule
+		 * prop_work to update correct CP property to user space.
+		 */
+		if (!desired_and_not_enabled && !content_protection_type_changed) {
+			drm_connector_get(&connector->base);
+			schedule_work(&hdcp->prop_work);
+		}
 	}
 
 	if (desired_and_not_enabled || content_protection_type_changed)
drivers/gpu/drm/i915/gt/intel_breadcrumbs.c +2 -7
index a24cc1ff08a0..0625cbb3b431 100644
@@ -134,11 +134,6 @@ static bool remove_signaling_context(struct intel_breadcrumbs *b,
 	return true;
 }
 
-static inline bool __request_completed(const struct i915_request *rq)
-{
-	return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno);
-}
-
 __maybe_unused static bool
 check_signal_order(struct intel_context *ce, struct i915_request *rq)
 {
@@ -257,7 +252,7 @@ static void signal_irq_work(struct irq_work *work)
 		list_for_each_entry_rcu(rq, &ce->signals, signal_link) {
 			bool release;
 
-			if (!__request_completed(rq))
+			if (!__i915_request_is_complete(rq))
 				break;
 
 			if (!test_and_clear_bit(I915_FENCE_FLAG_SIGNAL,
@@ -379,7 +374,7 @@ static void insert_breadcrumb(struct i915_request *rq)
 	 * straight onto a signaled list, and queue the irq worker for
 	 * its signal completion.
 	 */
-	if (__request_completed(rq)) {
+	if (__i915_request_is_complete(rq)) {
 		if (__signal_request(rq) &&
 		    llist_add(&rq->signal_node, &b->signaled_requests))
 			irq_work_queue(&b->irq_work);
drivers/gpu/drm/i915/gt/intel_lrc.c +3 -0
index 724b2cb897d3..ee9b33c3aff8 100644
@@ -3936,6 +3936,9 @@ static int lrc_setup_wa_ctx(struct intel_engine_cs *engine)
 static void lrc_destroy_wa_ctx(struct intel_engine_cs *engine)
 {
 	i915_vma_unpin_and_release(&engine->wa_ctx.vma, 0);
+
+	/* Called on error unwind, clear all flags to prevent further use */
+	memset(&engine->wa_ctx, 0, sizeof(engine->wa_ctx));
 }
 
 typedef u32 *(*wa_bb_func_t)(struct intel_engine_cs *engine, u32 *batch);
drivers/gpu/drm/i915/gt/intel_timeline.c +4 -6
index 7ea94d201fe6..8015964043eb 100644
@@ -126,6 +126,10 @@ static void __rcu_cacheline_free(struct rcu_head *rcu)
 	struct intel_timeline_cacheline *cl =
 		container_of(rcu, typeof(*cl), rcu);
 
+	/* Must wait until after all *rq->hwsp are complete before removing */
+	i915_gem_object_unpin_map(cl->hwsp->vma->obj);
+	__idle_hwsp_free(cl->hwsp, ptr_unmask_bits(cl->vaddr, CACHELINE_BITS));
+
 	i915_active_fini(&cl->active);
 	kfree(cl);
 }
@@ -133,11 +137,6 @@ static void __rcu_cacheline_free(struct rcu_head *rcu)
 static void __idle_cacheline_free(struct intel_timeline_cacheline *cl)
 {
 	GEM_BUG_ON(!i915_active_is_idle(&cl->active));
-
-	i915_gem_object_unpin_map(cl->hwsp->vma->obj);
-	i915_vma_put(cl->hwsp->vma);
-	__idle_hwsp_free(cl->hwsp, ptr_unmask_bits(cl->vaddr, CACHELINE_BITS));
-
 	call_rcu(&cl->rcu, __rcu_cacheline_free);
 }
 
@@ -179,7 +178,6 @@ cacheline_alloc(struct intel_timeline_hwsp *hwsp, unsigned int cacheline)
 		return ERR_CAST(vaddr);
 	}
 
-	i915_vma_get(hwsp->vma);
 	cl->hwsp = hwsp;
 	cl->vaddr = page_pack_bits(vaddr, cacheline);
 
drivers/gpu/drm/i915/i915_request.h +32 -5
index 620b6fab2c5c..92adfee30c7c 100644
@@ -434,7 +434,7 @@ static inline u32 hwsp_seqno(const struct i915_request *rq)
 
 static inline bool __i915_request_has_started(const struct i915_request *rq)
 {
-	return i915_seqno_passed(hwsp_seqno(rq), rq->fence.seqno - 1);
+	return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno - 1);
 }
 
 /**
@@ -465,11 +465,19 @@ static inline bool __i915_request_has_started(const struct i915_request *rq)
  */
 static inline bool i915_request_started(const struct i915_request *rq)
 {
+	bool result;
+
 	if (i915_request_signaled(rq))
 		return true;
 
-	/* Remember: started but may have since been preempted! */
-	return __i915_request_has_started(rq);
+	result = true;
+	rcu_read_lock(); /* the HWSP may be freed at runtime */
+	if (likely(!i915_request_signaled(rq)))
+		/* Remember: started but may have since been preempted! */
+		result = __i915_request_has_started(rq);
+	rcu_read_unlock();
+
+	return result;
 }
 
 /**
@@ -482,10 +490,16 @@ static inline bool i915_request_started(const struct i915_request *rq)
  */
 static inline bool i915_request_is_running(const struct i915_request *rq)
 {
+	bool result;
+
 	if (!i915_request_is_active(rq))
 		return false;
 
-	return __i915_request_has_started(rq);
+	rcu_read_lock();
+	result = __i915_request_has_started(rq) && i915_request_is_active(rq);
+	rcu_read_unlock();
+
+	return result;
 }
 
 /**
@@ -509,12 +523,25 @@ static inline bool i915_request_is_ready(const struct i915_request *rq)
 	return !list_empty(&rq->sched.link);
 }
 
+static inline bool __i915_request_is_complete(const struct i915_request *rq)
+{
+	return i915_seqno_passed(__hwsp_seqno(rq), rq->fence.seqno);
+}
+
 static inline bool i915_request_completed(const struct i915_request *rq)
 {
+	bool result;
+
 	if (i915_request_signaled(rq))
 		return true;
 
-	return i915_seqno_passed(hwsp_seqno(rq), rq->fence.seqno);
+	result = true;
+	rcu_read_lock(); /* the HWSP may be freed at runtime */
+	if (likely(!i915_request_signaled(rq)))
+		result = __i915_request_is_complete(rq);
+	rcu_read_unlock();
+
+	return result;
 }
 
 static inline void i915_request_mark_complete(struct i915_request *rq)
drivers/gpu/drm/nouveau/dispnv50/disp.c +2 -2
index 36d6b6093d16..5b8cabb099eb 100644
@@ -221,7 +221,7 @@ nv50_dmac_wait(struct nvif_push *push, u32 size)
 
 int
 nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
-		 const s32 *oclass, u8 head, void *data, u32 size, u64 syncbuf,
+		 const s32 *oclass, u8 head, void *data, u32 size, s64 syncbuf,
 		 struct nv50_dmac *dmac)
 {
 	struct nouveau_cli *cli = (void *)device->object.client;
@@ -270,7 +270,7 @@ nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
 	if (ret)
 		return ret;
 
-	if (!syncbuf)
+	if (syncbuf < 0)
 		return 0;
 
 	ret = nvif_object_ctor(&dmac->base.user, "kmsSyncCtxDma", NV50_DISP_HANDLE_SYNCBUF,
drivers/gpu/drm/nouveau/dispnv50/disp.h +1 -1
index 92bddc083617..38dec11e7dda 100644
@@ -95,7 +95,7 @@ struct nv50_outp_atom {
 
 int nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
 		     const s32 *oclass, u8 head, void *data, u32 size,
-		     u64 syncbuf, struct nv50_dmac *dmac);
+		     s64 syncbuf, struct nv50_dmac *dmac);
 void nv50_dmac_destroy(struct nv50_dmac *);
 
 /*
drivers/gpu/drm/nouveau/dispnv50/wimmc37b.c +1 -1
index 685b70871324..b390029c69ec 100644
@@ -76,7 +76,7 @@ wimmc37b_init_(const struct nv50_wimm_func *func, struct nouveau_drm *drm,
 	int ret;
 
 	ret = nv50_dmac_create(&drm->client.device, &disp->disp->object,
-			       &oclass, 0, &args, sizeof(args), 0,
+			       &oclass, 0, &args, sizeof(args), -1,
 			       &wndw->wimm);
 	if (ret) {
 		NV_ERROR(drm, "wimm%04x allocation failed: %d\n", oclass, ret);
drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.c +1 -1
index 7deb81b6dbac..4b571cc6bc70 100644
@@ -75,7 +75,7 @@ shadow_image(struct nvkm_bios *bios, int idx, u32 offset, struct shadow *mthd)
 	nvkm_debug(subdev, "%08x: type %02x, %d bytes\n",
 		   image.base, image.type, image.size);
 
-	if (!shadow_fetch(bios, mthd, image.size)) {
+	if (!shadow_fetch(bios, mthd, image.base + image.size)) {
 		nvkm_debug(subdev, "%08x: fetch failed\n", image.base);
 		return 0;
 	}
drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c +4 -4
index edb6148cbca0..d0e80ad52684 100644
@@ -33,7 +33,7 @@ static void
 gm200_i2c_aux_fini(struct gm200_i2c_aux *aux)
 {
 	struct nvkm_device *device = aux->base.pad->i2c->subdev.device;
-	nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00310000, 0x00000000);
+	nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00710000, 0x00000000);
 }
 
 static int
@@ -54,10 +54,10 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
 			AUX_ERR(&aux->base, "begin idle timeout %08x", ctrl);
 			return -EBUSY;
 		}
-	} while (ctrl & 0x03010000);
+	} while (ctrl & 0x07010000);
 
 	/* set some magic, and wait up to 1ms for it to appear */
-	nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00300000, ureq);
+	nvkm_mask(device, 0x00d954 + (aux->ch * 0x50), 0x00700000, ureq);
 	timeout = 1000;
 	do {
 		ctrl = nvkm_rd32(device, 0x00d954 + (aux->ch * 0x50));
@@ -67,7 +67,7 @@ gm200_i2c_aux_init(struct gm200_i2c_aux *aux)
 			gm200_i2c_aux_fini(aux);
 			return -EBUSY;
 		}
-	} while ((ctrl & 0x03000000) != urep);
+	} while ((ctrl & 0x07000000) != urep);
 
 	return 0;
 }
drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gf100.c +7 -3
index 2340040942c9..1115376bc85f 100644
@@ -22,6 +22,7 @@
  * Authors: Ben Skeggs
  */
 #include "priv.h"
+#include <subdev/timer.h>
 
 static void
 gf100_ibus_intr_hub(struct nvkm_subdev *ibus, int i)
@@ -31,7 +32,6 @@ gf100_ibus_intr_hub(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x122124 + (i * 0x0400));
 	u32 stat = nvkm_rd32(device, 0x122128 + (i * 0x0400));
 	nvkm_debug(ibus, "HUB%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x122128 + (i * 0x0400), 0x00000200, 0x00000000);
 }
 
 static void
@@ -42,7 +42,6 @@ gf100_ibus_intr_rop(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x124124 + (i * 0x0400));
 	u32 stat = nvkm_rd32(device, 0x124128 + (i * 0x0400));
 	nvkm_debug(ibus, "ROP%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x124128 + (i * 0x0400), 0x00000200, 0x00000000);
 }
 
 static void
@@ -53,7 +52,6 @@ gf100_ibus_intr_gpc(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x128124 + (i * 0x0400));
 	u32 stat = nvkm_rd32(device, 0x128128 + (i * 0x0400));
 	nvkm_debug(ibus, "GPC%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x128128 + (i * 0x0400), 0x00000200, 0x00000000);
 }
 
 void
@@ -90,6 +88,12 @@ gf100_ibus_intr(struct nvkm_subdev *ibus)
 			intr1 &= ~stat;
 		}
 	}
+
+	nvkm_mask(device, 0x121c4c, 0x0000003f, 0x00000002);
+	nvkm_msec(device, 2000,
+		if (!(nvkm_rd32(device, 0x121c4c) & 0x0000003f))
+			break;
+	);
 }
 
 static int
drivers/gpu/drm/nouveau/nvkm/subdev/ibus/gk104.c +7 -3
index f3915f85838e..22e487b493ad 100644
@@ -22,6 +22,7 @@
  * Authors: Ben Skeggs
  */
 #include "priv.h"
+#include <subdev/timer.h>
 
 static void
 gk104_ibus_intr_hub(struct nvkm_subdev *ibus, int i)
@@ -31,7 +32,6 @@ gk104_ibus_intr_hub(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x122124 + (i * 0x0800));
 	u32 stat = nvkm_rd32(device, 0x122128 + (i * 0x0800));
 	nvkm_debug(ibus, "HUB%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x122128 + (i * 0x0800), 0x00000200, 0x00000000);
 }
 
 static void
@@ -42,7 +42,6 @@ gk104_ibus_intr_rop(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x124124 + (i * 0x0800));
 	u32 stat = nvkm_rd32(device, 0x124128 + (i * 0x0800));
 	nvkm_debug(ibus, "ROP%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x124128 + (i * 0x0800), 0x00000200, 0x00000000);
 }
 
 static void
@@ -53,7 +52,6 @@ gk104_ibus_intr_gpc(struct nvkm_subdev *ibus, int i)
 	u32 data = nvkm_rd32(device, 0x128124 + (i * 0x0800));
 	u32 stat = nvkm_rd32(device, 0x128128 + (i * 0x0800));
 	nvkm_debug(ibus, "GPC%d: %06x %08x (%08x)\n", i, addr, data, stat);
-	nvkm_mask(device, 0x128128 + (i * 0x0800), 0x00000200, 0x00000000);
 }
 
 void
@@ -90,6 +88,12 @@ gk104_ibus_intr(struct nvkm_subdev *ibus)
 			intr1 &= ~stat;
 		}
 	}
+
+	nvkm_mask(device, 0x12004c, 0x0000003f, 0x00000002);
+	nvkm_msec(device, 2000,
+		if (!(nvkm_rd32(device, 0x12004c) & 0x0000003f))
+			break;
+	);
 }
 
 static int
drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.c +3 -3
index de91e9a26172..6d5212ae2fd5 100644
@@ -316,9 +316,9 @@ nvkm_mmu_vram(struct nvkm_mmu *mmu)
 {
 	struct nvkm_device *device = mmu->subdev.device;
 	struct nvkm_mm *mm = &device->fb->ram->vram;
-	const u32 sizeN = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NORMAL);
-	const u32 sizeU = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NOMAP);
-	const u32 sizeM = nvkm_mm_heap_size(mm, NVKM_RAM_MM_MIXED);
+	const u64 sizeN = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NORMAL);
+	const u64 sizeU = nvkm_mm_heap_size(mm, NVKM_RAM_MM_NOMAP);
+	const u64 sizeM = nvkm_mm_heap_size(mm, NVKM_RAM_MM_MIXED);
 	u8 type = NVKM_MEM_KIND * !!mmu->func->kind;
 	u8 heap = NVKM_MEM_VRAM;
 	int heapM, heapN, heapU;
drivers/gpu/drm/vc4/vc4_hdmi.c +1 -0
index afc178b0d89f..eaba98e15de4 100644
@@ -1268,6 +1268,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
 	card->dai_link = dai_link;
 	card->num_links = 1;
 	card->name = vc4_hdmi->variant->card_name;
+	card->driver_name = "vc4-hdmi";
 	card->dev = dev;
 	card->owner = THIS_MODULE;
 
drivers/hid/Kconfig +1 -0
index 612629678c84..9b56226ce0d1 100644
@@ -899,6 +899,7 @@ config HID_SONY
 	depends on NEW_LEDS
 	depends on LEDS_CLASS
 	select POWER_SUPPLY
+	select CRC32
 	help
 	Support for
 
drivers/hid/hid-ids.h +1 -0
index f170feaac40b..94180c63571e 100644
@@ -387,6 +387,7 @@
 #define USB_DEVICE_ID_TOSHIBA_CLICK_L9W	0x0401
 #define USB_DEVICE_ID_HP_X2		0x074d
 #define USB_DEVICE_ID_HP_X2_10_COVER	0x0755
+#define USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN	0x2706
 
 #define USB_VENDOR_ID_ELECOM		0x056e
 #define USB_DEVICE_ID_ELECOM_BM084	0x0061
drivers/hid/hid-input.c +2 -0
index 4dca11392459..32024905fd70 100644
@@ -322,6 +322,8 @@ static const struct hid_device_id hid_battery_quirks[] = {
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH,
 		USB_DEVICE_ID_LOGITECH_DINOVO_EDGE_KBD),
 	  HID_BATTERY_QUIRK_IGNORE },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ELAN, USB_DEVICE_ID_ASUS_UX550_TOUCHSCREEN),
+	  HID_BATTERY_QUIRK_IGNORE },
 	{}
 };
 
drivers/hid/hid-logitech-dj.c +4 -0
index 1ffcfc9a1e03..45e7e0bdd382 100644
@@ -1869,6 +1869,10 @@ static const struct hid_device_id logi_dj_receivers[] = {
 	  HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
 		0xc531),
 	 .driver_data = recvr_type_gaming_hidpp},
+	{ /* Logitech G602 receiver (0xc537) */
+	  HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
+		0xc537),
+	 .driver_data = recvr_type_gaming_hidpp},
 	{ /* Logitech lightspeed receiver (0xc539) */
 	  HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH,
 		USB_DEVICE_ID_LOGITECH_NANO_RECEIVER_LIGHTSPEED_1),
drivers/hid/hid-logitech-hidpp.c +2 -0
index 0ca723119547..74ebfb12c360 100644
@@ -4051,6 +4051,8 @@ static const struct hid_device_id hidpp_devices[] = {
 	{ /* MX Master mouse over Bluetooth */
 	  HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb012),
 	  .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 },
+	{ /* MX Ergo trackball over Bluetooth */
+	  HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01d) },
 	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, 0xb01e),
 	  .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 },
 	{ /* MX Master 3 mouse over Bluetooth */
drivers/hid/hid-multitouch.c +4 -0
index d670bcd57bde..0743ef51d3b2 100644
@@ -2054,6 +2054,10 @@ static const struct hid_device_id mt_devices[] = {
 		HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
 			USB_VENDOR_ID_SYNAPTICS, 0xce08) },
 
+	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+		HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
+			USB_VENDOR_ID_SYNAPTICS, 0xce09) },
+
 	/* TopSeed panels */
 	{ .driver_data = MT_CLS_TOPSEED,
 		MT_USB_DEVICE(USB_VENDOR_ID_TOPSEED2,
drivers/hv/vmbus_drv.c +0 -2
index 4fad3e6745e5..a5a402e776c7 100644
@@ -2542,7 +2542,6 @@ static void hv_kexec_handler(void)
 	/* Make sure conn_state is set as hv_synic_cleanup checks for it */
 	mb();
 	cpuhp_remove_state(hyperv_cpuhp_online);
-	hyperv_cleanup();
 };
 
 static void hv_crash_handler(struct pt_regs *regs)
@@ -2558,7 +2557,6 @@ static void hv_crash_handler(struct pt_regs *regs)
 	cpu = smp_processor_id();
 	hv_stimer_cleanup(cpu);
 	hv_synic_disable_regs(cpu);
-	hyperv_cleanup();
 };
 
 static int hv_synic_suspend(void)
drivers/hwtracing/intel_th/pci.c +5 -0
index 52acd77438ed..251e75c9ba9d 100644
@@ -268,6 +268,11 @@ static const struct pci_device_id intel_th_pci_id_table[] = {
 		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x7aa6),
 		.driver_data = (kernel_ulong_t)&intel_th_2x,
 	},
+	{
+		/* Alder Lake-P */
+		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x51a6),
+		.driver_data = (kernel_ulong_t)&intel_th_2x,
+	},
 	{
 		/* Alder Lake CPU */
 		PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x466f),
drivers/hwtracing/stm/heartbeat.c +4 -2
index 3e7df1c0477f..81d7b21d31ec 100644
@@ -64,7 +64,7 @@ static void stm_heartbeat_unlink(struct stm_source_data *data)
 
 static int stm_heartbeat_init(void)
 {
-	int i, ret = -ENOMEM;
+	int i, ret;
 
 	if (nr_devs < 0 || nr_devs > STM_HEARTBEAT_MAX)
 		return -EINVAL;
@@ -72,8 +72,10 @@ static int stm_heartbeat_init(void)
 	for (i = 0; i < nr_devs; i++) {
 		stm_heartbeat[i].data.name =
 			kasprintf(GFP_KERNEL, "heartbeat.%d", i);
-		if (!stm_heartbeat[i].data.name)
+		if (!stm_heartbeat[i].data.name) {
+			ret = -ENOMEM;
 			goto fail_unregister;
+		}
 
 		stm_heartbeat[i].data.nr_chans	= 1;
 		stm_heartbeat[i].data.link	= stm_heartbeat_link;
drivers/i2c/busses/Kconfig +1 -0
index a49e0ed4a599..7e693dcbdd19 100644
@@ -1012,6 +1012,7 @@ config I2C_SIRF
 config I2C_SPRD
 	tristate "Spreadtrum I2C interface"
 	depends on I2C=y && (ARCH_SPRD || COMPILE_TEST)
+	depends on COMMON_CLK
 	help
 	  If you say yes to this option, support will be included for the
 	  Spreadtrum I2C interface.
drivers/i2c/busses/i2c-octeon-core.c +1 -1
index d9607905dc2f..845eda70b8ca 100644
@@ -347,7 +347,7 @@ static int octeon_i2c_read(struct octeon_i2c *i2c, int target,
 		if (result)
 			return result;
 		if (recv_len && i == 0) {
-			if (data[i] > I2C_SMBUS_BLOCK_MAX + 1)
+			if (data[i] > I2C_SMBUS_BLOCK_MAX)
 				return -EPROTO;
 			length += data[i];
 		}
drivers/i2c/busses/i2c-tegra-bpmp.c +1 -1
index ec7a7e917edd..c0c7d01473f2 100644
@@ -80,7 +80,7 @@ static int tegra_bpmp_xlate_flags(u16 flags, u16 *out)
 		flags &= ~I2C_M_RECV_LEN;
 	}
 
-	return (flags != 0) ? -EINVAL : 0;
+	return 0;
 }
 
 /**
drivers/i2c/busses/i2c-tegra.c +1 -1
index 6f08c0c3238d..0727383f4940 100644
@@ -533,7 +533,7 @@ static int tegra_i2c_poll_register(struct tegra_i2c_dev *i2c_dev,
 	void __iomem *addr = i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg);
 	u32 val;
 
-	if (!i2c_dev->atomic_mode)
+	if (!i2c_dev->atomic_mode && !in_irq())
 		return readl_relaxed_poll_timeout(addr, val, !(val & mask),
 						  delay_us, timeout_us);
 
drivers/iio/adc/ti_am335x_adc.c +1 -5
index b11c8c47ba2a..e946903b0993 100644
@@ -397,16 +397,12 @@ static int tiadc_iio_buffered_hardware_setup(struct device *dev,
 	ret = devm_request_threaded_irq(dev, irq, pollfunc_th, pollfunc_bh,
 				flags, indio_dev->name, indio_dev);
 	if (ret)
-		goto error_kfifo_free;
+		return ret;
 
 	indio_dev->setup_ops = setup_ops;
 	indio_dev->modes |= INDIO_BUFFER_SOFTWARE;
 
 	return 0;
-
-error_kfifo_free:
-	iio_kfifo_free(indio_dev->buffer);
-	return ret;
 }
 
 static const char * const chan_name_ain[] = {
drivers/iio/common/st_sensors/st_sensors_trigger.c +17 -14
index 0507283bd4c1..2dbd2646e44e 100644
@@ -23,35 +23,31 @@
  * @sdata: Sensor data.
  *
  * returns:
- * 0 - no new samples available
- * 1 - new samples available
- * negative - error or unknown
+ * false - no new samples available or read error
+ * true - new samples available
  */
-static int st_sensors_new_samples_available(struct iio_dev *indio_dev,
-					    struct st_sensor_data *sdata)
+static bool st_sensors_new_samples_available(struct iio_dev *indio_dev,
+					     struct st_sensor_data *sdata)
 {
 	int ret, status;
 
 	/* How would I know if I can't check it? */
 	if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr)
-		return -EINVAL;
+		return true;
 
 	/* No scan mask, no interrupt */
 	if (!indio_dev->active_scan_mask)
-		return 0;
+		return false;
 
 	ret = regmap_read(sdata->regmap,
 			  sdata->sensor_settings->drdy_irq.stat_drdy.addr,
 			  &status);
 	if (ret < 0) {
 		dev_err(sdata->dev, "error checking samples available\n");
-		return ret;
+		return false;
 	}
 
-	if (status & sdata->sensor_settings->drdy_irq.stat_drdy.mask)
-		return 1;
-
-	return 0;
+	return !!(status & sdata->sensor_settings->drdy_irq.stat_drdy.mask);
 }
 
 /**
@@ -180,9 +176,15 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
 
 	/* Tell the interrupt handler that we're dealing with edges */
 	if (irq_trig == IRQF_TRIGGER_FALLING ||
-	    irq_trig == IRQF_TRIGGER_RISING)
+	    irq_trig == IRQF_TRIGGER_RISING) {
+		if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr) {
+			dev_err(&indio_dev->dev,
+				"edge IRQ not supported w/o stat register.\n");
+			err = -EOPNOTSUPP;
+			goto iio_trigger_free;
+		}
 		sdata->edge_irq = true;
-	else
+	} else {
 		/*
 		 * If we're not using edges (i.e. level interrupts) we
 		 * just mask off the IRQ, handle one interrupt, then
@@ -190,6 +192,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
 		 * interrupt handler top half again and start over.
 		 */
 		irq_trig |= IRQF_ONESHOT;
+	}
 
 	/*
 	 * If the interrupt pin is Open Drain, by definition this
drivers/iio/dac/ad5504.c +2 -2
index 28921b62e642..e9297c25d4ef 100644
@@ -187,9 +187,9 @@ static ssize_t ad5504_write_dac_powerdown(struct iio_dev *indio_dev,
 		return ret;
 
 	if (pwr_down)
-		st->pwr_down_mask |= (1 << chan->channel);
-	else
 		st->pwr_down_mask &= ~(1 << chan->channel);
+	else
+		st->pwr_down_mask |= (1 << chan->channel);
 
 	ret = ad5504_spi_write(st, AD5504_ADDR_CTRL,
 				AD5504_DAC_PWRDWN_MODE(st->pwr_down_mode) |
drivers/iio/temperature/mlx90632.c +6 -0
index 503fe54a0bb9..608ccb1d8bc8 100644
@@ -248,6 +248,12 @@ static int mlx90632_set_meas_type(struct regmap *regmap, u8 type)
 	if (ret < 0)
 		return ret;
 
+	/*
+	 * Give the mlx90632 some time to reset properly before sending a new I2C command
+	 * if this is not done, the following I2C command(s) will not be accepted.
+	 */
+	usleep_range(150, 200);
+
 	ret = regmap_write_bits(regmap, MLX90632_REG_CONTROL,
 				 (MLX90632_CFG_MTYP_MASK | MLX90632_CFG_PWR_MASK),
 				 (MLX90632_MTYP_STATUS(type) | MLX90632_PWR_STATUS_HALT));
drivers/infiniband/core/cma_configfs.c +3 -1
index 7ec4af2ed87a..35d1ec1095f9 100644
@@ -131,8 +131,10 @@ static ssize_t default_roce_mode_store(struct config_item *item,
 		return ret;
 
 	gid_type = ib_cache_gid_parse_type_str(buf);
-	if (gid_type < 0)
+	if (gid_type < 0) {
+		cma_configfs_params_put(cma_dev);
 		return -EINVAL;
+	}
 
 	ret = cma_set_default_gid_type(cma_dev, group->port_num, gid_type);
 
drivers/infiniband/core/ucma.c +72 -63

260 lines not on this page · raw message

drivers/infiniband/core/umem.c +1 -1
index e9fecbdf391b..5157ae29a446 100644
@@ -126,7 +126,7 @@ unsigned long ib_umem_find_best_pgsz(struct ib_umem *umem,
 	 */
 	if (mask)
 		pgsz_bitmap &= GENMASK(count_trailing_zeros(mask), 0);
-	return rounddown_pow_of_two(pgsz_bitmap);
+	return pgsz_bitmap ? rounddown_pow_of_two(pgsz_bitmap) : 0;
 }
 EXPORT_SYMBOL(ib_umem_find_best_pgsz);
 
drivers/interconnect/imx/imx8mq.c +2 -0
index ba43a15aefec..d7768d3c6d8a 100644
@@ -7,6 +7,7 @@
 
 #include <linux/module.h>
 #include <linux/platform_device.h>
+#include <linux/interconnect-provider.h>
 #include <dt-bindings/interconnect/imx8mq.h>
 
 #include "imx.h"
@@ -94,6 +95,7 @@ static struct platform_driver imx8mq_icc_driver = {
 	.remove = imx8mq_icc_remove,
 	.driver = {
 		.name = "imx8mq-interconnect",
+		.sync_state = icc_sync_state,
 	},
 };
 
drivers/irqchip/irq-mips-cpu.c +7 -0
index 95d4fd8f7a96..0bbb0b2d0dd5 100644
@@ -197,6 +197,13 @@ static int mips_cpu_ipi_alloc(struct irq_domain *domain, unsigned int virq,
 		if (ret)
 			return ret;
 
+		ret = irq_domain_set_hwirq_and_chip(domain->parent, virq + i, hwirq,
+						    &mips_mt_cpu_irq_controller,
+						    NULL);
+
+		if (ret)
+			return ret;
+
 		ret = irq_set_irq_type(virq + i, IRQ_TYPE_LEVEL_HIGH);
 		if (ret)
 			return ret;
drivers/lightnvm/core.c +1 -2
index c1bcac71008c..28ddcaa5358b 100644
@@ -844,11 +844,10 @@ static int nvm_bb_chunk_sense(struct nvm_dev *dev, struct ppa_addr ppa)
 	rqd.ppa_addr = generic_to_dev_addr(dev, ppa);
 
 	ret = nvm_submit_io_sync_raw(dev, &rqd);
+	__free_page(page);
 	if (ret)
 		return ret;
 
-	__free_page(page);
-
 	return rqd.error;
 }
 
drivers/md/Kconfig +1 -0
index 0e04d3718af3..2cefb075b2b8 100644
@@ -585,6 +585,7 @@ config DM_INTEGRITY
 	select BLK_DEV_INTEGRITY
 	select DM_BUFIO
 	select CRYPTO
+	select CRYPTO_SKCIPHER
 	select ASYNC_XOR
 	help
 	  This device-mapper target emulates a block device that has
drivers/md/dm-crypt.c +3 -3
index 89de9cde0202..875823d6ee7e 100644
@@ -1481,9 +1481,9 @@ static int crypt_alloc_req_skcipher(struct crypt_config *cc,
 static int crypt_alloc_req_aead(struct crypt_config *cc,
 				 struct convert_context *ctx)
 {
-	if (!ctx->r.req) {
-		ctx->r.req = mempool_alloc(&cc->req_pool, in_interrupt() ? GFP_ATOMIC : GFP_NOIO);
-		if (!ctx->r.req)
+	if (!ctx->r.req_aead) {
+		ctx->r.req_aead = mempool_alloc(&cc->req_pool, in_interrupt() ? GFP_ATOMIC : GFP_NOIO);
+		if (!ctx->r.req_aead)
 			return -ENOMEM;
 	}
 
drivers/md/dm-integrity.c +30 -2
index 81df019ab284..b64fede032dc 100644
@@ -257,8 +257,9 @@ struct dm_integrity_c {
 	bool journal_uptodate;
 	bool just_formatted;
 	bool recalculate_flag;
-	bool fix_padding;
 	bool discard;
+	bool fix_padding;
+	bool legacy_recalculate;
 
 	struct alg_spec internal_hash_alg;
 	struct alg_spec journal_crypt_alg;
@@ -386,6 +387,14 @@ static int dm_integrity_failed(struct dm_integrity_c *ic)
 	return READ_ONCE(ic->failed);
 }
 
+static bool dm_integrity_disable_recalculate(struct dm_integrity_c *ic)
+{
+	if ((ic->internal_hash_alg.key || ic->journal_mac_alg.key) &&
+	    !ic->legacy_recalculate)
+		return true;
+	return false;
+}
+
 static commit_id_t dm_integrity_commit_id(struct dm_integrity_c *ic, unsigned i,
 					  unsigned j, unsigned char seq)
 {
@@ -3140,6 +3149,7 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type,
 		arg_count += !!ic->journal_crypt_alg.alg_string;
 		arg_count += !!ic->journal_mac_alg.alg_string;
 		arg_count += (ic->sb->flags & cpu_to_le32(SB_FLAG_FIXED_PADDING)) != 0;
+		arg_count += ic->legacy_recalculate;
 		DMEMIT("%s %llu %u %c %u", ic->dev->name, ic->start,
 		       ic->tag_size, ic->mode, arg_count);
 		if (ic->meta_dev)
@@ -3163,6 +3173,8 @@ static void dm_integrity_status(struct dm_target *ti, status_type_t type,
 		}
 		if ((ic->sb->flags & cpu_to_le32(SB_FLAG_FIXED_PADDING)) != 0)
 			DMEMIT(" fix_padding");
+		if (ic->legacy_recalculate)
+			DMEMIT(" legacy_recalculate");
 
 #define EMIT_ALG(a, n)							\
 		do {							\
@@ -3792,7 +3804,7 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 	unsigned extra_args;
 	struct dm_arg_set as;
 	static const struct dm_arg _args[] = {
-		{0, 15, "Invalid number of feature args"},
+		{0, 16, "Invalid number of feature args"},
 	};
 	unsigned journal_sectors, interleave_sectors, buffer_sectors, journal_watermark, sync_msec;
 	bool should_write_sb;
@@ -3940,6 +3952,8 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 			ic->discard = true;
 		} else if (!strcmp(opt_string, "fix_padding")) {
 			ic->fix_padding = true;
+		} else if (!strcmp(opt_string, "legacy_recalculate")) {
+			ic->legacy_recalculate = true;
 		} else {
 			r = -EINVAL;
 			ti->error = "Invalid argument";
@@ -4235,6 +4249,20 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
 			r = -ENOMEM;
 			goto bad;
 		}
+	} else {
+		if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING)) {
+			ti->error = "Recalculate can only be specified with internal_hash";
+			r = -EINVAL;
+			goto bad;
+		}
+	}
+
+	if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING) &&
+	    le64_to_cpu(ic->sb->recalc_sector) < ic->provided_data_sectors &&
+	    dm_integrity_disable_recalculate(ic)) {
+		ti->error = "Recalculating with HMAC is disabled for security reasons - if you really need it, use the argument \"legacy_recalculate\"";
+		r = -EOPNOTSUPP;
+		goto bad;
 	}
 
 	ic->bufio = dm_bufio_client_create(ic->meta_dev ? ic->meta_dev->bdev : ic->dev->bdev,
drivers/md/dm-table.c +12 -3
index 7eeb7c4169c9..09ded08cbb60 100644
@@ -370,14 +370,23 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode,
 {
 	int r;
 	dev_t dev;
+	unsigned int major, minor;
+	char dummy;
 	struct dm_dev_internal *dd;
 	struct dm_table *t = ti->table;
 
 	BUG_ON(!t);
 
-	dev = dm_get_dev_t(path);
-	if (!dev)
-		return -ENODEV;
+	if (sscanf(path, "%u:%u%c", &major, &minor, &dummy) == 2) {
+		/* Extract the major/minor numbers */
+		dev = MKDEV(major, minor);
+		if (MAJOR(dev) != major || MINOR(dev) != minor)
+			return -EOVERFLOW;
+	} else {
+		dev = dm_get_dev_t(path);
+		if (!dev)
+			return -ENODEV;
+	}
 
 	dd = find_device(&t->devices, dev);
 	if (!dd) {
drivers/mmc/core/queue.c +3 -1
index de7cb0369c30..002426e3cf76 100644
@@ -384,8 +384,10 @@ static void mmc_setup_queue(struct mmc_queue *mq, struct mmc_card *card)
 		     "merging was advertised but not possible");
 	blk_queue_max_segments(mq->queue, mmc_get_max_segments(host));
 
-	if (mmc_card_mmc(card))
+	if (mmc_card_mmc(card) && card->ext_csd.data_sector_size) {
 		block_size = card->ext_csd.data_sector_size;
+		WARN_ON(block_size != 512 && block_size != 4096);
+	}
 
 	blk_queue_logical_block_size(mq->queue, block_size);
 	/*
drivers/mmc/host/sdhci-brcmstb.c +1 -5
index bbf3496f4495..f9780c65ebe9 100644
@@ -314,11 +314,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
 
 static void sdhci_brcmstb_shutdown(struct platform_device *pdev)
 {
-	int ret;
-
-	ret = sdhci_pltfm_unregister(pdev);
-	if (ret)
-		dev_err(&pdev->dev, "failed to shutdown\n");
+	sdhci_pltfm_suspend(&pdev->dev);
 }
 
 MODULE_DEVICE_TABLE(of, sdhci_brcm_of_match);
drivers/mmc/host/sdhci-of-dwcmshc.c +27 -0
index 4b673792b5a4..d90020ed3622 100644
@@ -16,6 +16,8 @@
 
 #include "sdhci-pltfm.h"
 
+#define SDHCI_DWCMSHC_ARG2_STUFF	GENMASK(31, 16)
+
 /* DWCMSHC specific Mode Select value */
 #define DWCMSHC_CTRL_HS400		0x7
 
@@ -49,6 +51,29 @@ static void dwcmshc_adma_write_desc(struct sdhci_host *host, void **desc,
 	sdhci_adma_write_desc(host, desc, addr, len, cmd);
 }
 
+static void dwcmshc_check_auto_cmd23(struct mmc_host *mmc,
+				     struct mmc_request *mrq)
+{
+	struct sdhci_host *host = mmc_priv(mmc);
+
+	/*
+	 * No matter V4 is enabled or not, ARGUMENT2 register is 32-bit
+	 * block count register which doesn't support stuff bits of
+	 * CMD23 argument on dwcmsch host controller.
+	 */
+	if (mrq->sbc && (mrq->sbc->arg & SDHCI_DWCMSHC_ARG2_STUFF))
+		host->flags &= ~SDHCI_AUTO_CMD23;
+	else
+		host->flags |= SDHCI_AUTO_CMD23;
+}
+
+static void dwcmshc_request(struct mmc_host *mmc, struct mmc_request *mrq)
+{
+	dwcmshc_check_auto_cmd23(mmc, mrq);
+
+	sdhci_request(mmc, mrq);
+}
+
 static void dwcmshc_set_uhs_signaling(struct sdhci_host *host,
 				      unsigned int timing)
 {
@@ -133,6 +158,8 @@ static int dwcmshc_probe(struct platform_device *pdev)
 
 	sdhci_get_of_property(pdev);
 
+	host->mmc_host_ops.request = dwcmshc_request;
+
 	err = sdhci_add_host(host);
 	if (err)
 		goto err_clk;
drivers/mmc/host/sdhci-xenon.c +6 -1
index 24c978de2a3f..0e5234a5ca22 100644
@@ -167,7 +167,12 @@ static void xenon_reset_exit(struct sdhci_host *host,
 	/* Disable tuning request and auto-retuning again */
 	xenon_retune_setup(host);
 
-	xenon_set_acg(host, true);
+	/*
+	 * The ACG should be turned off at the early init time, in order
+	 * to solve a possible issues with the 1.8V regulator stabilization.
+	 * The feature is enabled in later stage.
+	 */
+	xenon_set_acg(host, false);
 
 	xenon_set_sdclk_off_idle(host, sdhc_id, false);
 
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +1 -1
index 81028ba35f35..31a6210eb5d4 100644
@@ -1613,7 +1613,7 @@ static int gpmi_ecc_read_page_raw(struct nand_chip *chip, uint8_t *buf,
 	/* Extract interleaved payload data and ECC bits */
 	for (step = 0; step < nfc_geo->ecc_chunk_count; step++) {
 		if (buf)
-			nand_extract_bits(buf, step * eccsize, tmp_buf,
+			nand_extract_bits(buf, step * eccsize * 8, tmp_buf,
 					  src_bit_off, eccsize * 8);
 		src_bit_off += eccsize * 8;
 
drivers/mtd/nand/raw/nandsim.c +3 -4
index a8048cb8d220..9a9f1c24d832 100644
@@ -2211,6 +2211,9 @@ static int ns_attach_chip(struct nand_chip *chip)
 {
 	unsigned int eccsteps, eccbytes;
 
+	chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
+	chip->ecc.algo = bch ? NAND_ECC_ALGO_BCH : NAND_ECC_ALGO_HAMMING;
+
 	if (!bch)
 		return 0;
 
@@ -2234,8 +2237,6 @@ static int ns_attach_chip(struct nand_chip *chip)
 		return -EINVAL;
 	}
 
-	chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
-	chip->ecc.algo = NAND_ECC_ALGO_BCH;
 	chip->ecc.size = 512;
 	chip->ecc.strength = bch;
 	chip->ecc.bytes = eccbytes;
@@ -2274,8 +2275,6 @@ static int __init ns_init_module(void)
 	nsmtd       = nand_to_mtd(chip);
 	nand_set_controller_data(chip, (void *)ns);
 
-	chip->ecc.engine_type = NAND_ECC_ENGINE_TYPE_SOFT;
-	chip->ecc.algo   = NAND_ECC_ALGO_HAMMING;
 	/* The NAND_SKIP_BBTSCAN option is necessary for 'overridesize' */
 	/* and 'badblocks' parameters to work */
 	chip->options   |= NAND_SKIP_BBTSCAN;
drivers/net/can/dev.c +2 -2
index 81e39d7507d8..09879aea9f7c 100644
@@ -592,11 +592,11 @@ static void can_restart(struct net_device *dev)
 
 	cf->can_id |= CAN_ERR_RESTARTED;
 
-	netif_rx_ni(skb);
-
 	stats->rx_packets++;
 	stats->rx_bytes += cf->can_dlc;
 
+	netif_rx_ni(skb);
+
 restart:
 	netdev_dbg(dev, "restarted\n");
 	priv->can_stats.restarts++;
drivers/net/can/usb/peak_usb/pcan_usb_fd.c +4 -4
index d29d20525588..d56592283818 100644
@@ -512,11 +512,11 @@ static int pcan_usb_fd_decode_canmsg(struct pcan_usb_fd_if *usb_if,
 	else
 		memcpy(cfd->data, rm->d, cfd->len);
 
-	peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(rm->ts_low));
-
 	netdev->stats.rx_packets++;
 	netdev->stats.rx_bytes += cfd->len;
 
+	peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(rm->ts_low));
+
 	return 0;
 }
 
@@ -578,11 +578,11 @@ static int pcan_usb_fd_decode_status(struct pcan_usb_fd_if *usb_if,
 	if (!skb)
 		return -ENOMEM;
 
-	peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(sm->ts_low));
-
 	netdev->stats.rx_packets++;
 	netdev->stats.rx_bytes += cf->can_dlc;
 
+	peak_usb_netif_rx(skb, &usb_if->time_ref, le32_to_cpu(sm->ts_low));
+
 	return 0;
 }
 
drivers/net/can/vxcan.c +4 -2
index d6ba9426be4d..b1baa4ac1d53 100644
@@ -39,6 +39,7 @@ static netdev_tx_t vxcan_xmit(struct sk_buff *skb, struct net_device *dev)
 	struct net_device *peer;
 	struct canfd_frame *cfd = (struct canfd_frame *)skb->data;
 	struct net_device_stats *peerstats, *srcstats = &dev->stats;
+	u8 len;
 
 	if (can_dropped_invalid_skb(dev, skb))
 		return NETDEV_TX_OK;
@@ -61,12 +62,13 @@ static netdev_tx_t vxcan_xmit(struct sk_buff *skb, struct net_device *dev)
 	skb->dev        = peer;
 	skb->ip_summed  = CHECKSUM_UNNECESSARY;
 
+	len = cfd->len;
 	if (netif_rx_ni(skb) == NET_RX_SUCCESS) {
 		srcstats->tx_packets++;
-		srcstats->tx_bytes += cfd->len;
+		srcstats->tx_bytes += len;
 		peerstats = &peer->stats;
 		peerstats->rx_packets++;
-		peerstats->rx_bytes += cfd->len;
+		peerstats->rx_bytes += len;
 	}
 
 out_unlock:
drivers/net/dsa/b53/b53_common.c +1 -1
index 288b5a5c3e0d..95c7fa171e35 100644
@@ -1404,7 +1404,7 @@ int b53_vlan_prepare(struct dsa_switch *ds, int port,
 	    !(vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED))
 		return -EINVAL;
 
-	if (vlan->vid_end > dev->num_vlans)
+	if (vlan->vid_end >= dev->num_vlans)
 		return -ERANGE;
 
 	b53_enable_vlan(dev, true, ds->vlan_filtering);
drivers/net/dsa/mv88e6xxx/global1_vtu.c +4 -0
index 1048509a849b..0938caccc62a 100644
@@ -351,6 +351,10 @@ int mv88e6250_g1_vtu_getnext(struct mv88e6xxx_chip *chip,
 		if (err)
 			return err;
 
+		err = mv88e6185_g1_stu_data_read(chip, entry);
+		if (err)
+			return err;
+
 		/* VTU DBNum[3:0] are located in VTU Operation 3:0
 		 * VTU DBNum[5:4] are located in VTU Operation 9:8
 		 */
drivers/net/ethernet/broadcom/bcmsysport.c +4 -2
index b1ae9eb8f247..0404aafd5ce5 100644
@@ -2503,8 +2503,10 @@ static int bcm_sysport_probe(struct platform_device *pdev)
 	priv = netdev_priv(dev);
 
 	priv->clk = devm_clk_get_optional(&pdev->dev, "sw_sysport");
-	if (IS_ERR(priv->clk))
-		return PTR_ERR(priv->clk);
+	if (IS_ERR(priv->clk)) {
+		ret = PTR_ERR(priv->clk);
+		goto err_free_netdev;
+	}
 
 	/* Allocate number of TX rings */
 	priv->tx_rings = devm_kcalloc(&pdev->dev, txq,
drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +6 -0
index fa9152ff5e2a..f4ecc755eaff 100644
@@ -454,6 +454,9 @@ int rvu_mbox_handler_cgx_mac_addr_set(struct rvu *rvu,
 	int pf = rvu_get_pf(req->hdr.pcifunc);
 	u8 cgx_id, lmac_id;
 
+	if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc))
+		return -EPERM;
+
 	rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id);
 
 	cgx_lmac_addr_set(cgx_id, lmac_id, req->mac_addr);
@@ -470,6 +473,9 @@ int rvu_mbox_handler_cgx_mac_addr_get(struct rvu *rvu,
 	int rc = 0, i;
 	u64 cfg;
 
+	if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc))
+		return -EPERM;
+
 	rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id);
 
 	rsp->hdr.rc = rc;
drivers/net/ethernet/mscc/ocelot.c +18 -5
index a53bd36b11c6..d4768dcb6c69 100644
@@ -60,14 +60,27 @@ int ocelot_mact_learn(struct ocelot *ocelot, int port,
 		      const unsigned char mac[ETH_ALEN],
 		      unsigned int vid, enum macaccess_entry_type type)
 {
+	u32 cmd = ANA_TABLES_MACACCESS_VALID |
+		ANA_TABLES_MACACCESS_DEST_IDX(port) |
+		ANA_TABLES_MACACCESS_ENTRYTYPE(type) |
+		ANA_TABLES_MACACCESS_MAC_TABLE_CMD(MACACCESS_CMD_LEARN);
+	unsigned int mc_ports;
+
+	/* Set MAC_CPU_COPY if the CPU port is used by a multicast entry */
+	if (type == ENTRYTYPE_MACv4)
+		mc_ports = (mac[1] << 8) | mac[2];
+	else if (type == ENTRYTYPE_MACv6)
+		mc_ports = (mac[0] << 8) | mac[1];
+	else
+		mc_ports = 0;
+
+	if (mc_ports & BIT(ocelot->num_phys_ports))
+		cmd |= ANA_TABLES_MACACCESS_MAC_CPU_COPY;
+
 	ocelot_mact_select(ocelot, mac, vid);
 
 	/* Issue a write command */
-	ocelot_write(ocelot, ANA_TABLES_MACACCESS_VALID |
-			     ANA_TABLES_MACACCESS_DEST_IDX(port) |
-			     ANA_TABLES_MACACCESS_ENTRYTYPE(type) |
-			     ANA_TABLES_MACACCESS_MAC_TABLE_CMD(MACACCESS_CMD_LEARN),
-			     ANA_TABLES_MACACCESS);
+	ocelot_write(ocelot, cmd, ANA_TABLES_MACACCESS);
 
 	return ocelot_mact_wait_for_completion(ocelot);
 }
drivers/net/ethernet/mscc/ocelot_net.c +1 -3
index b34da11acf65..d60cd4326f4c 100644
@@ -952,10 +952,8 @@ static int ocelot_netdevice_event(struct notifier_block *unused,
 	struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 	int ret = 0;
 
-	if (!ocelot_netdevice_dev_check(dev))
-		return 0;
-
 	if (event == NETDEV_PRECHANGEUPPER &&
+	    ocelot_netdevice_dev_check(dev) &&
 	    netif_is_lag_master(info->upper_dev)) {
 		struct netdev_lag_upper_info *lag_upper_info = info->upper_info;
 		struct netlink_ext_ack *extack;
drivers/net/ethernet/renesas/sh_eth.c +2 -2
index c63304632935..d5d236d687e9 100644
@@ -2606,10 +2606,10 @@ static int sh_eth_close(struct net_device *ndev)
 	/* Free all the skbuffs in the Rx queue and the DMA buffer. */
 	sh_eth_ring_free(ndev);
 
-	pm_runtime_put_sync(&mdp->pdev->dev);
-
 	mdp->is_opened = 0;
 
+	pm_runtime_put(&mdp->pdev->dev);
+
 	return 0;
 }
 
drivers/nvme/host/pci.c +67 -38

174 lines not on this page · raw message

drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c +1 -1
index 34803a6c7664..5c1a109842a7 100644
@@ -347,7 +347,7 @@ FUNC_GROUP_DECL(RMII4, F24, E23, E24, E25, C25, C24, B26, B25, B24);
 
 #define D22 40
 SIG_EXPR_LIST_DECL_SESG(D22, SD1CLK, SD1, SIG_DESC_SET(SCU414, 8));
-SIG_EXPR_LIST_DECL_SEMG(D22, PWM8, PWM8G0, PWM8, SIG_DESC_SET(SCU414, 8));
+SIG_EXPR_LIST_DECL_SEMG(D22, PWM8, PWM8G0, PWM8, SIG_DESC_SET(SCU4B4, 8));
 PIN_DECL_2(D22, GPIOF0, SD1CLK, PWM8);
 GROUP_DECL(PWM8G0, D22);
 
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c +4 -0
index 7e950f5d62d0..7815426e7aea 100644
@@ -926,6 +926,10 @@ int mtk_pinconf_adv_pull_set(struct mtk_pinctrl *hw,
 			err = hw->soc->bias_set(hw, desc, pullup);
 			if (err)
 				return err;
+		} else if (hw->soc->bias_set_combo) {
+			err = hw->soc->bias_set_combo(hw, desc, pullup, arg);
+			if (err)
+				return err;
 		} else {
 			return -ENOTSUPP;
 		}
drivers/pinctrl/pinctrl-ingenic.c +13 -13
index 621909b01deb..033d142f0c27 100644
@@ -2052,7 +2052,7 @@ static inline bool ingenic_gpio_get_value(struct ingenic_gpio_chip *jzgc,
 static void ingenic_gpio_set_value(struct ingenic_gpio_chip *jzgc,
 				   u8 offset, int value)
 {
-	if (jzgc->jzpc->info->version >= ID_JZ4760)
+	if (jzgc->jzpc->info->version >= ID_JZ4770)
 		ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_PAT0, offset, !!value);
 	else
 		ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_DATA, offset, !!value);
@@ -2082,7 +2082,7 @@ static void irq_set_type(struct ingenic_gpio_chip *jzgc,
 		break;
 	}
 
-	if (jzgc->jzpc->info->version >= ID_JZ4760) {
+	if (jzgc->jzpc->info->version >= ID_JZ4770) {
 		reg1 = JZ4760_GPIO_PAT1;
 		reg2 = JZ4760_GPIO_PAT0;
 	} else {
@@ -2122,7 +2122,7 @@ static void ingenic_gpio_irq_enable(struct irq_data *irqd)
 	struct ingenic_gpio_chip *jzgc = gpiochip_get_data(gc);
 	int irq = irqd->hwirq;
 
-	if (jzgc->jzpc->info->version >= ID_JZ4760)
+	if (jzgc->jzpc->info->version >= ID_JZ4770)
 		ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_INT, irq, true);
 	else
 		ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_SELECT, irq, true);
@@ -2138,7 +2138,7 @@ static void ingenic_gpio_irq_disable(struct irq_data *irqd)
 
 	ingenic_gpio_irq_mask(irqd);
 
-	if (jzgc->jzpc->info->version >= ID_JZ4760)
+	if (jzgc->jzpc->info->version >= ID_JZ4770)
 		ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_INT, irq, false);
 	else
 		ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_SELECT, irq, false);
@@ -2163,7 +2163,7 @@ static void ingenic_gpio_irq_ack(struct irq_data *irqd)
 			irq_set_type(jzgc, irq, IRQ_TYPE_LEVEL_HIGH);
 	}
 
-	if (jzgc->jzpc->info->version >= ID_JZ4760)
+	if (jzgc->jzpc->info->version >= ID_JZ4770)
 		ingenic_gpio_set_bit(jzgc, JZ4760_GPIO_FLAG, irq, false);
 	else
 		ingenic_gpio_set_bit(jzgc, JZ4740_GPIO_DATA, irq, true);
@@ -2220,7 +2220,7 @@ static void ingenic_gpio_irq_handler(struct irq_desc *desc)
 
 	chained_irq_enter(irq_chip, desc);
 
-	if (jzgc->jzpc->info->version >= ID_JZ4760)
+	if (jzgc->jzpc->info->version >= ID_JZ4770)
 		flag = ingenic_gpio_read_reg(jzgc, JZ4760_GPIO_FLAG);
 	else
 		flag = ingenic_gpio_read_reg(jzgc, JZ4740_GPIO_FLAG);
@@ -2302,7 +2302,7 @@ static int ingenic_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
 	struct ingenic_pinctrl *jzpc = jzgc->jzpc;
 	unsigned int pin = gc->base + offset;
 
-	if (jzpc->info->version >= ID_JZ4760) {
+	if (jzpc->info->version >= ID_JZ4770) {
 		if (ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_INT) ||
 		    ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PAT1))
 			return GPIO_LINE_DIRECTION_IN;
@@ -2360,7 +2360,7 @@ static int ingenic_pinmux_set_pin_fn(struct ingenic_pinctrl *jzpc,
 		ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2);
 		ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1);
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/pinctrl/qcom/pinctrl-msm.c +60 -36

96 lines not on this page · raw message

drivers/pinctrl/qcom/pinctrl-msm.h +2 -0
index 333f99243c43..e31a5167c91e 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/hp-wmi.c +2 -1
index ecd477964d11..18bf8aeb5f87 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/i2c-multi-instantiate.c +23 -8
index 6acc8457866e..d3b5afbe4833 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/ideapad-laptop.c +14 -1
index 7598cd46cf60..5b81bafa5c16 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/intel-vbtn.c +0 -6
index 3b49a1f4061b..65fb3a303147 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/megaraid/megaraid_sas_base.c +2 -4
index 9ebeb031329d..cc45cdac1384 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/qedi/qedi_main.c +2 -2
index f5fc7f518f8a..47ad64b06623 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/scsi_debug.c +3 -2
index 24c0f7ec0351..4a08c450b756 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/sd.c +3 -1
index 656bcf4940d6..fedb89d4ac3f 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ufs/Kconfig +1 -0
index dcdb4eb1f90b..c339517b7a09 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/ufs/ufshcd.c +19 -16
index 7b9a9a771b11..813289328467 100644

Lines of this file are not shown. View the raw message.

drivers/target/target_core_user.c +8 -3
index 590e6d072228..7d5814a95e1e 100644

Lines of this file are not shown. View the raw message.

drivers/tty/n_tty.c +2 -5
index 7e5e36315260..c2869489ba68 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/mvebu-uart.c +9 -1
index 118b29912289..e0c00a1b0763 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/sifive.c +1 -0
index 13eadcb8aec4..214bf3086c68 100644

Lines of this file are not shown. View the raw message.

drivers/tty/tty_io.c +27 -24

51 lines not on this page · raw message

drivers/usb/cdns3/cdns3-imx.c +6 -11
index 54a2d70a9c73..7e728aab6475 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/aspeed-vhub/epn.c +4 -1
index 0bd6b20435b8..02d8bfae58fb 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/bdc/Kconfig +1 -1
index 3e88c7670b2e..fb01ff47b64c 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/core.c +10 -3
index debf54205d22..da691a69fec1 100644

Lines of this file are not shown. View the raw message.

drivers/usb/gadget/udc/dummy_hcd.c +7 -3
index 016937579ed9..17704ee2d7f5 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/ehci-hcd.c +12 -0
index 3575b7201881..b5db2b2d0901 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/ehci-hub.c +3 -0
index 087402aec5cb..9f9ab5ccea88 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xhci-ring.c +2 -0
index 167dae117f73..db8612ec82d3 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/xhci-tegra.c +7 -0
index 934be1686352..50bb91b6a4b8 100644

Lines of this file are not shown. View the raw message.

drivers/xen/events/events_base.c +0 -10
index 6038c4c35db5..bbebe248b726 100644

Lines of this file are not shown. View the raw message.

drivers/xen/platform-pci.c +0 -1
index dd911e1ff782..9db557b76511 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xenbus/xenbus.h +1 -0
index 2a93b7c9c159..dc1537335414 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xenbus/xenbus_comms.c +0 -8
index eb5151fc8efa..e5fda0256feb 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xenbus/xenbus_probe.c +67 -14

81 lines not on this page · raw message

fs/btrfs/backref.c +1 -1
index 771a036867dc..553b4f6ec863 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/block-group.c +2 -1
index 3ba6f3839d39..cef2f080fdcd 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/disk-io.c +1 -1
index af97ddcc6b3e..56f3b9acd215 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/extent-tree.c +9 -1
index 4209dbd6286e..8fba1c219b19 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/print-tree.c +5 -5
index 7695c4783d33..c62771f3af8c 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/print-tree.h +1 -1
index 78b99385a503..8c3e9319ec4e 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/send.c +15 -0
index 9e08ddb62968..9e5809118c34 100644

Lines of this file are not shown. View the raw message.

fs/btrfs/volumes.c +2 -0
index 78637665166e..6311308b32be 100644

Lines of this file are not shown. View the raw message.

fs/cachefiles/rdwr.c +0 -2
index 8bda092e60c5..e027c718ca01 100644

Lines of this file are not shown. View the raw message.

fs/cifs/transport.c +2 -2
index 36b2ece43403..b1c2f416b9bd 100644

Lines of this file are not shown. View the raw message.

fs/fs-writeback.c +13 -11
index e6005c78bfa9..90dddb507e4a 100644

Lines of this file are not shown. View the raw message.

fs/io_uring.c +37 -6

43 lines not on this page · raw message

fs/kernfs/file.c +24 -41

65 lines not on this page · raw message

fs/nfsd/nfs4xdr.c +10 -4
index 833a2c64dfe8..5f5169b9c2e9 100644

Lines of this file are not shown. View the raw message.

fs/pipe.c +1 -0
index 0ac197658a2d..412b3b618994 100644

Lines of this file are not shown. View the raw message.

fs/proc/proc_sysctl.c +6 -1
index 317899222d7f..d2018f70d1fa 100644

Lines of this file are not shown. View the raw message.

include/asm-generic/bitops/atomic.h +3 -3
index dd90c9792909..0e7316a86240 100644

Lines of this file are not shown. View the raw message.

include/linux/device.h +12 -0
index 5ed101be7b2e..2b39de35525a 100644

Lines of this file are not shown. View the raw message.

include/linux/tty.h +1 -0
index eb33d948788c..bc8caac390fc 100644

Lines of this file are not shown. View the raw message.

include/net/inet_connection_sock.h +3 -0
index 7338b3865a2a..111d7771b208 100644

Lines of this file are not shown. View the raw message.

include/net/sock.h +12 -5
index a5c6ae78df77..253202dcc5e6 100644

Lines of this file are not shown. View the raw message.

include/xen/xenbus.h +1 -1
index 00c7235ae93e..2c43b0ef1e4d 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/bpf_inode_storage.c +4 -1
index 6edff97ad594..dbc1dbdd2cbf 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/syscall.c +4 -2
index 8f50c9c19f1b..9433ab9995cd 100644

Lines of this file are not shown. View the raw message.

kernel/locking/lockdep.c +1 -1
index c1418b47f625..02bc5b8f1eb2 100644

Lines of this file are not shown. View the raw message.

kernel/printk/printk.c +2 -2
index bc1e3b5a97bd..801f8bc52b34 100644

Lines of this file are not shown. View the raw message.

kernel/printk/printk_ringbuffer.c +1 -1
index 74e25a1704f2..617dd6358965 100644

Lines of this file are not shown. View the raw message.

lib/iov_iter.c +1 -1
index 1635111c5bd2..a21e6a5792c5 100644

Lines of this file are not shown. View the raw message.

mm/kasan/init.c +13 -10
index fe6be0be1f76..b8c6ec172bb2 100644

Lines of this file are not shown. View the raw message.

mm/memcontrol.c +1 -3
index a717728cc7b4..8fc23d53f550 100644

Lines of this file are not shown. View the raw message.

mm/migrate.c +12 -11
index 8ea0c65f1075..9d7ca1bd7f4b 100644

Lines of this file are not shown. View the raw message.

net/bpf/test_run.c +2 -1
index c1c30a9f76f3..8b796c499cbb 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +5 -0
index 38412e70f761..81e5d482c238 100644

Lines of this file are not shown. View the raw message.

net/core/devlink.c +2 -2
index 8c5ddffd707d..5d397838bceb 100644

Lines of this file are not shown. View the raw message.

net/core/gen_estimator.c +7 -4
index 80dbf2f4016e..8e582e29a41e 100644

Lines of this file are not shown. View the raw message.

net/core/skbuff.c +5 -1
index f0d6dba37b43..7ab56796bd3a 100644

Lines of this file are not shown. View the raw message.

net/ipv4/inet_connection_sock.c +1 -0
index f60869acbef0..48d2b615edc2 100644

Lines of this file are not shown. View the raw message.

net/ipv4/netfilter/ipt_rpfilter.c +1 -1
index cc23f1ce239c..8cd3224d913e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp.c +1 -0
index b2bc3d7fe9e8..41d03683b13d 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_input.c +3 -3
index ef4bdb038a4b..6bf066f924c1 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_ipv4.c +15 -14
index 595dcc3afac5..ab8ed0fc4769 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_output.c +1 -0
index 99011768c264..e58e2589d7f9 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_timer.c +15 -21
index 6c62b9ea1320..faa92948441b 100644

Lines of this file are not shown. View the raw message.

net/ipv4/udp.c +2 -1
index 9eeebd4a0054..e37a2fa65c29 100644

Lines of this file are not shown. View the raw message.

net/ipv6/addrconf.c +2 -1
index 8b6eb384bac7..4c881f5d9080 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_flower.c +13 -9
index 1319986693fc..84f932532db7 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_tcindex.c +6 -2
index 78bec347b8b6..c4007b9cd16d 100644

Lines of this file are not shown. View the raw message.

net/sched/sch_api.c +2 -1
index 2a76a2f5ed88..5e8e49c4ab5c 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/svcsock.c +85 -1

86 lines not on this page · raw message

net/xdp/xsk.c +2 -2
index d5f42c62fd79..52fd1f96b241 100644

Lines of this file are not shown. View the raw message.

sound/core/seq/oss/seq_oss_synth.c +2 -1
index 11554d0412f0..1b8409ec2c97 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_codec.c +7 -17
index 687216e74526..eec1775dfffe 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/hda_tegra.c +1 -1
index 70164d1428d4..361cf2041911 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +8 -0
index dd82ff2bd5d6..ed5b6b894dc1 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_via.c +1 -0
index 0ab40a8a68fb..834367dd54e1 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/rt711.c +6 -0
index 65b59dbfb43c..a9b1b4180c47 100644

Lines of this file are not shown. View the raw message.

sound/soc/intel/boards/haswell.c +1 -0
index c55d1239e705..c763bfeb1f38 100644

Lines of this file are not shown. View the raw message.

sound/soc/sof/intel/hda-codec.c +9 -9
index 6875fa570c2c..8b0ddc4b8227 100644

Lines of this file are not shown. View the raw message.

sound/soc/sof/intel/hda-dsp.c +4 -2
index 18ff1c2f5376..2dbc1273e56b 100644

Lines of this file are not shown. View the raw message.

tools/gpio/gpio-event-mon.c +2 -2
index 90c3155f05b1..84ae1039b0a8 100644

Lines of this file are not shown. View the raw message.

tools/gpio/gpio-watch.c +3 -2
index f229ec62301b..41e76d244192 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/evlist.c +4 -13
index cfcdbd7be066..17465d454a0e 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-cpumap.c +1 -1
index c8d45091e7c2..c70e9e03af3e 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-evlist.c +2 -1
index 6d8ebe0c2504..bd19cabddaf6 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-evsel.c +1 -1
index 135722ac965b..0ad82d7a2a51 100644

Lines of this file are not shown. View the raw message.

tools/lib/perf/tests/test-threadmap.c +1 -1
index 7dc4d6fbedde..384471441b48 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/fib_tests.sh +0 -1
index 84205c3a55eb..2b5707738609 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/powerpc/mm/pkey_exec_prot.c +1 -1
index 9e5c7f3f498a..0af4f02669a1 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/powerpc/mm/pkey_siginfo.c +1 -1
index 4f815d7c1214..2db76e56d4cb 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.