Skip to contentSkip to conversation

Linux 5.10.38

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages May 19, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.38 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

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

 .gitignore                                                    |    1 
 Documentation/arm/memory.rst                                  |    7 
 Documentation/devicetree/bindings/media/renesas,vin.yaml      |   46 
 Documentation/devicetree/bindings/serial/8250.yaml            |    5 
 Documentation/dontdiff                                        |    1 
 MAINTAINERS                                                   |    1 
 Makefile                                                      |    4 
 arch/arc/include/asm/page.h                                   |   12 
 arch/arc/include/asm/pgtable.h                                |   12 
 arch/arc/include/uapi/asm/page.h                              |    1 
 arch/arc/kernel/entry.S                                       |    4 
 arch/arc/mm/init.c                                            |   11 
 arch/arc/mm/ioremap.c                                         |    5 
 arch/arc/mm/tlb.c                                             |    2 
 arch/arm/boot/dts/dra7-l4.dtsi                                |    4 
 arch/arm/boot/dts/dra7.dtsi                                   |   20 
 arch/arm/include/asm/fixmap.h                                 |    2 
 arch/arm/include/asm/memory.h                                 |    5 
 arch/arm/include/asm/prom.h                                   |    4 
 arch/arm/kernel/atags.h                                       |    4 
 arch/arm/kernel/atags_parse.c                                 |    6 
 arch/arm/kernel/devtree.c                                     |    6 
 arch/arm/kernel/head.S                                        |    9 
 arch/arm/kernel/hw_breakpoint.c                               |    2 
 arch/arm/kernel/setup.c                                       |   19 
 arch/arm/mm/init.c                                            |    1 
 arch/arm/mm/mmu.c                                             |   20 
 arch/arm/mm/pv-fixup-asm.S                                    |    4 
 arch/arm64/include/asm/daifflags.h                            |    3 
 arch/arm64/kernel/entry-common.c                              |   17 
 arch/arm64/kernel/entry.S                                     |   85 -
 arch/arm64/mm/flush.c                                         |    4 
 arch/arm64/mm/proc.S                                          |   12 
 arch/ia64/include/asm/module.h                                |    6 
 arch/ia64/kernel/module.c                                     |   29 
 arch/mips/include/asm/div64.h                                 |   55 -
 arch/mips/kernel/cpu-probe.c                                  |    3 
 arch/powerpc/kernel/head_32.h                                 |    6 
 arch/powerpc/kernel/iommu.c                                   |    4 
 arch/powerpc/kernel/setup_32.c                                |    2 
 arch/powerpc/kernel/smp.c                                     |    6 
 arch/powerpc/lib/feature-fixups.c                             |   35 
 arch/powerpc/mm/book3s64/hash_utils.c                         |   13 
 arch/powerpc/platforms/pseries/hotplug-cpu.c                  |    3 
 arch/riscv/kernel/smp.c                                       |    2 
 arch/x86/include/asm/idtentry.h                               |   15 
 arch/x86/include/asm/kvm_host.h                               |    4 
 arch/x86/kernel/nmi.c                                         |   10 
 arch/x86/kvm/cpuid.c                                          |    3 
 arch/x86/kvm/emulate.c                                        |    2 
 arch/x86/kvm/kvm_emulate.h                                    |    1 
 arch/x86/kvm/lapic.c                                          |    2 
 arch/x86/kvm/mmu/mmu.c                                        |   49 
 arch/x86/kvm/vmx/nested.c                                     |   29 
 arch/x86/kvm/vmx/vmx.c                                        |   30 
 arch/x86/kvm/x86.c                                            |   40 
 block/bfq-iosched.c                                           |    3 
 block/blk-iocost.c                                            |   14 
 block/blk-mq-sched.c                                          |    8 
 block/blk-mq.c                                                |   11 
 block/kyber-iosched.c                                         |    5 
 block/mq-deadline.c                                           |    3 
 drivers/acpi/device_pm.c                                      |    1 
 drivers/acpi/scan.c                                           |    1 
 drivers/base/power/runtime.c                                  |   10 
 drivers/block/nbd.c                                           |    3 
 drivers/block/rnbd/rnbd-clt.c                                 |   12 
 drivers/block/rnbd/rnbd-clt.h                                 |    2 
 drivers/bluetooth/btusb.c                                     |    4 
 drivers/char/tpm/tpm2-cmd.c                                   |    1 
 drivers/char/tpm/tpm_tis_core.c                               |   22 
 drivers/clk/samsung/clk-exynos7.c                             |    7 
 drivers/clocksource/timer-ti-dm-systimer.c                    |  144 ++
 drivers/cpufreq/intel_pstate.c                                |   14 
 drivers/crypto/ccp/sev-dev.c                                  |    4 
 drivers/dma/idxd/cdev.c                                       |  129 --
 drivers/dma/idxd/device.c                                     |    5 
 drivers/dma/idxd/dma.c                                        |   77 +
 drivers/dma/idxd/idxd.h                                       |   25 
 drivers/dma/idxd/init.c                                       |    2 
 drivers/dma/idxd/irq.c                                        |    4 
 drivers/dma/idxd/sysfs.c                                      |   10 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c                        |    2 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c        |    1 
 drivers/gpu/drm/amd/display/dc/core/dc.c                      |    4 
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c             |   15 
 drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c           |    2 
 drivers/gpu/drm/i915/display/intel_overlay.c                  |    2 
 drivers/gpu/drm/i915/gem/i915_gem_mman.c                      |    2 
 drivers/gpu/drm/i915/gt/gen8_ppgtt.c                          |    1 
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c                  |    4 
 drivers/gpu/drm/i915/i915_active.c                            |    3 
 drivers/gpu/drm/msm/dp/dp_audio.c                             |    1 
 drivers/gpu/drm/msm/dp/dp_display.c                           |   11 
 drivers/gpu/drm/msm/dp/dp_display.h                           |    1 
 drivers/gpu/drm/radeon/radeon.h                               |    1 
 drivers/gpu/drm/radeon/radeon_atombios.c                      |   26 
 drivers/gpu/drm/radeon/radeon_pm.c                            |    8 
 drivers/gpu/drm/radeon/si_dpm.c                               |    3 
 drivers/hwmon/occ/common.c                                    |    5 
 drivers/hwmon/occ/common.h                                    |    2 
 drivers/hwtracing/coresight/coresight-platform.c              |    6 
 drivers/i2c/busses/i2c-mt65xx.c                               |    9 
 drivers/i2c/i2c-dev.c                                         |    9 
 drivers/iio/accel/Kconfig                                     |    1 
 drivers/iio/common/hid-sensors/Kconfig                        |    1 
 drivers/iio/gyro/Kconfig                                      |    1 
 drivers/iio/gyro/mpu3050-core.c                               |   13 
 drivers/iio/humidity/Kconfig                                  |    1 
 drivers/iio/light/Kconfig                                     |    2 
 drivers/iio/light/gp2ap002.c                                  |    5 
 drivers/iio/light/tsl2583.c                                   |    8 
 drivers/iio/magnetometer/Kconfig                              |    1 
 drivers/iio/orientation/Kconfig                               |    2 
 drivers/iio/pressure/Kconfig                                  |    1 
 drivers/iio/proximity/pulsedlight-lidar-lite-v2.c             |    1 
 drivers/iio/temperature/Kconfig                               |    1 
 drivers/infiniband/hw/hfi1/ipoib.h                            |    3 
 drivers/infiniband/hw/hfi1/ipoib_tx.c                         |   14 
 drivers/iommu/amd/init.c                                      |   49 
 drivers/iommu/intel/iommu.c                                   |    5 
 drivers/net/can/m_can/m_can.c                                 |    3 
 drivers/net/can/spi/mcp251x.c                                 |   35 
 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c                |    4 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                     |   19 
 drivers/net/ethernet/cisco/enic/enic_main.c                   |    7 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c               |  127 +-
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.h               |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c            |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c        |    3 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h        |    3 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c       |   27 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c        |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c       |    2 
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h             |    6 
 drivers/net/ethernet/intel/i40e/i40e_client.c                 |    1 
 drivers/net/ethernet/intel/i40e/i40e_common.c                 |    4 
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c                |    7 
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                   |    8 
 drivers/net/ethernet/intel/i40e/i40e_type.h                   |    7 
 drivers/net/ethernet/intel/iavf/iavf_main.c                   |    2 
 drivers/net/ethernet/intel/ice/ice_lib.c                      |  123 +-
 drivers/net/ethernet/intel/ice/ice_txrx.h                     |    2 
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                   |    2 
 drivers/net/ethernet/mediatek/mtk_eth_soc.h                   |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en_tx.c               |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c           |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c             |    1 
 drivers/net/wireless/ath/ath11k/wmi.c                         |   53 -
 drivers/net/wireless/intel/iwlwifi/pcie/drv.c                 |   35 
 drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c            |    1 
 drivers/net/wireless/mediatek/mt76/mt7615/mcu.c               |   12 
 drivers/net/wireless/mediatek/mt76/mt76x02_util.c             |    4 
 drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c            |   19 
 drivers/net/wireless/quantenna/qtnfmac/event.c                |    6 
 drivers/net/wireless/realtek/rtw88/main.h                     |    2 
 drivers/net/wireless/realtek/rtw88/phy.c                      |   14 
 drivers/net/wireless/realtek/rtw88/phy.h                      |    1 
 drivers/net/wireless/realtek/rtw88/reg.h                      |    5 
 drivers/net/wireless/realtek/rtw88/rtw8822c.c                 |   27 
 drivers/net/wireless/wl3501.h                                 |   47 
 drivers/net/wireless/wl3501_cs.c                              |   54 -
 drivers/nvme/host/core.c                                      |    3 
 drivers/nvme/target/io-cmd-bdev.c                             |   10 
 drivers/nvme/target/nvmet.h                                   |   16 
 drivers/nvme/target/rdma.c                                    |    4 
 drivers/pci/controller/pcie-iproc-msi.c                       |    2 
 drivers/pci/endpoint/functions/pci-epf-test.c                 |   18 
 drivers/pci/endpoint/pci-epc-core.c                           |   42 
 drivers/pci/probe.c                                           |    1 
 drivers/pinctrl/samsung/pinctrl-exynos.c                      |   10 
 drivers/pwm/pwm-atmel.c                                       |    2 
 drivers/remoteproc/qcom_q6v5_mss.c                            |   30 
 drivers/rpmsg/qcom_glink_native.c                             |    1 
 drivers/rtc/rtc-ds1307.c                                      |   12 
 drivers/rtc/rtc-fsl-ftm-alarm.c                               |    1 
 drivers/scsi/qla2xxx/qla_init.c                               |    3 
 drivers/scsi/ufs/ufshcd.c                                     |    7 
 drivers/staging/media/rkvdec/rkvdec.c                         |    2 
 drivers/thermal/qcom/tsens.c                                  |    6 
 drivers/thermal/thermal_of.c                                  |    7 
 drivers/usb/class/cdc-wdm.c                                   |   30 
 drivers/usb/core/hub.c                                        |    6 
 drivers/usb/dwc2/core.h                                       |    2 
 drivers/usb/dwc2/gadget.c                                     |    3 
 drivers/usb/dwc3/dwc3-omap.c                                  |    5 
 drivers/usb/dwc3/dwc3-pci.c                                   |    1 
 drivers/usb/dwc3/gadget.c                                     |   11 
 drivers/usb/host/fotg210-hcd.c                                |    4 
 drivers/usb/host/xhci-ext-caps.h                              |    5 
 drivers/usb/host/xhci-pci.c                                   |    8 
 drivers/usb/host/xhci.c                                       |    6 
 drivers/usb/musb/mediatek.c                                   |    2 
 drivers/usb/typec/tcpm/tcpm.c                                 |    6 
 drivers/usb/typec/ucsi/ucsi.c                                 |   46 
 drivers/usb/typec/ucsi/ucsi.h                                 |    6 
 drivers/xen/gntdev.c                                          |    4 
 drivers/xen/unpopulated-alloc.c                               |   16 
 fs/btrfs/file.c                                               |   36 
 fs/btrfs/tree-log.c                                           |    3 
 fs/ceph/export.c                                              |    4 
 fs/dax.c                                                      |   35 
 fs/debugfs/inode.c                                            |    2 
 fs/dlm/config.c                                               |   23 
 fs/dlm/debug_fs.c                                             |    1 
 fs/dlm/lowcomms.c                                             |    5 
 fs/dlm/midcomms.c                                             |    7 
 fs/ext4/fast_commit.c                                         |    2 
 fs/f2fs/compress.c                                            |   55 -
 fs/f2fs/data.c                                                |    6 
 fs/f2fs/f2fs.h                                                |   86 -
 fs/f2fs/file.c                                                |  184 ++-
 fs/f2fs/gc.c                                                  |   62 -
 fs/f2fs/inline.c                                              |    3 
 fs/f2fs/segment.c                                             |   86 +
 fs/f2fs/segment.h                                             |   14 
 fs/f2fs/super.c                                               |    2 
 fs/fuse/cuse.c                                                |    2 
 fs/fuse/file.c                                                |    9 
 fs/fuse/virtio_fs.c                                           |    3 
 fs/hfsplus/extents.c                                          |    7 
 fs/hugetlbfs/inode.c                                          |    5 
 fs/jbd2/recovery.c                                            |    5 
 fs/nfs/callback_proc.c                                        |   17 
 fs/nfs/flexfilelayout/flexfilelayout.c                        |    2 
 fs/nfs/inode.c                                                |    8 
 fs/nfs/nfs42proc.c                                            |   31 
 fs/nfs/nfs4proc.c                                             |   56 -
 fs/nfsd/nfs4state.c                                           |   24 
 fs/proc/generic.c                                             |    2 
 fs/squashfs/file.c                                            |    6 
 include/linux/cpuhotplug.h                                    |    1 
 include/linux/elevator.h                                      |    2 
 include/linux/i2c.h                                           |    2 
 include/linux/mm.h                                            |   32 
 include/linux/mm_types.h                                      |    4 
 include/linux/nfs_xdr.h                                       |   11 
 include/linux/pci-epc.h                                       |    6 
 include/linux/pci-epf.h                                       |    1 
 include/linux/pm.h                                            |    1 
 include/net/page_pool.h                                       |   12 
 include/trace/events/f2fs.h                                   |    1 
 include/trace/events/sunrpc.h                                 |    1 
 include/uapi/linux/f2fs.h                                     |   87 +
 include/uapi/linux/netfilter/xt_SECMARK.h                     |    6 
 kernel/dma/swiotlb.c                                          |    3 
 kernel/kexec_file.c                                           |    4 
 kernel/resource.c                                             |    4 
 kernel/sched/core.c                                           |    2 
 kernel/sched/fair.c                                           |   12 
 kernel/watchdog.c                                             |   40 
 lib/kobject_uevent.c                                          |    9 
 lib/nlattr.c                                                  |    2 
 lib/test_kasan.c                                              |   29 
 mm/gup.c                                                      |   94 -
 mm/hugetlb.c                                                  |   11 
 mm/khugepaged.c                                               |   18 
 mm/ksm.c                                                      |    1 
 mm/migrate.c                                                  |    7 
 mm/shmem.c                                                    |   34 
 net/bluetooth/hci_event.c                                     |    2 
 net/bluetooth/l2cap_core.c                                    |    4 
 net/bluetooth/l2cap_sock.c                                    |    8 
 net/bridge/br_arp_nd_proxy.c                                  |    4 
 net/core/flow_dissector.c                                     |    6 
 net/core/page_pool.c                                          |   12 
 net/ethtool/ioctl.c                                           |    2 
 net/ethtool/netlink.c                                         |    3 
 net/ipv6/ip6_vti.c                                            |    2 
 net/mac80211/mlme.c                                           |    5 
 net/mptcp/subflow.c                                           |    3 
 net/netfilter/nf_tables_api.c                                 |    4 
 net/netfilter/nfnetlink_osf.c                                 |    2 
 net/netfilter/nft_set_hash.c                                  |   10 
 net/netfilter/xt_SECMARK.c                                    |   88 +
 net/sched/cls_flower.c                                        |   36 
 net/sched/sch_taprio.c                                        |    6 
 net/sctp/sm_make_chunk.c                                      |    2 
 net/sctp/sm_statefuns.c                                       |   28 
 net/smc/af_smc.c                                              |    4 
 net/sunrpc/clnt.c                                             |   12 
 net/sunrpc/svcsock.c                                          |    2 
 net/sunrpc/xprt.c                                             |   12 
 net/sunrpc/xprtrdma/frwr_ops.c                                |    2 
 net/sunrpc/xprtrdma/rpc_rdma.c                                |    3 
 net/sunrpc/xprtrdma/transport.c                               |    6 
 net/sunrpc/xprtrdma/verbs.c                                   |   10 
 net/sunrpc/xprtrdma/xprt_rdma.h                               |    2 
 net/tipc/netlink_compat.c                                     |    2 
 net/xdp/xsk_queue.h                                           |    7 
 samples/bpf/tracex1_kern.c                                    |    4 
 scripts/Makefile.modpost                                      |   15 
 scripts/kconfig/nconf.c                                       |    2 
 scripts/mod/modpost.c                                         |   15 
 security/keys/trusted-keys/trusted_tpm1.c                     |    8 
 sound/firewire/bebob/bebob_stream.c                           |   12 
 sound/pci/hda/ideapad_s740_helper.c                           |  492 ++++++++++
 sound/pci/hda/patch_hdmi.c                                    |    4 
 sound/pci/hda/patch_realtek.c                                 |   11 
 sound/pci/rme9652/hdsp.c                                      |    3 
 sound/pci/rme9652/hdspm.c                                     |    3 
 sound/pci/rme9652/rme9652.c                                   |    3 
 sound/soc/codecs/rt286.c                                      |   23 
 sound/soc/codecs/rt5670.c                                     |   12 
 sound/soc/intel/boards/bytcr_rt5640.c                         |   20 
 sound/soc/intel/boards/sof_sdw.c                              |   11 
 sound/soc/sh/rcar/core.c                                      |   69 +
 sound/soc/sh/rcar/ssi.c                                       |   16 
 tools/lib/bpf/ringbuf.c                                       |   30 
 tools/perf/Makefile.config                                    |    1 
 tools/perf/util/Build                                         |    7 
 tools/testing/selftests/drivers/net/mlxsw/mirror_gre_scale.sh |    3 
 tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh     |    4 
 tools/testing/selftests/lib.mk                                |    4 
 tools/testing/selftests/net/forwarding/mirror_lib.sh          |   19 
 tools/testing/selftests/powerpc/security/entry_flush.c        |    2 
 tools/testing/selftests/powerpc/security/flush_utils.h        |    4 
 tools/testing/selftests/powerpc/security/rfi_flush.c          |    2 
 virt/kvm/kvm_main.c                                           |    7 
 319 files changed, 3311 insertions(+), 1472 deletions(-)

Abhijeet Rao (1):
xhci-pci: Allow host runtime PM as default for Intel Alder Lake xHCI

Alexander Aring (4):
fs: dlm: fix debugfs dump
fs: dlm: add errno handling to check callback
fs: dlm: check on minimum msglen size
fs: dlm: flush swork on shutdown

Alexandru Ardelean (1):
iio: hid-sensors: select IIO_TRIGGERED_BUFFER under HID_SENSOR_IIO_TRIGGER

Alexey Kardashevskiy (1):
powerpc/iommu: Annotate nested lock for lockdep

Anastasia Kovaleva (1):
scsi: qla2xxx: Prevent PRLI in target mode

Andy Shevchenko (1):

      usb: typec: ucsi: Put fwnode in any case during ->probe()

Anthony Wang (1):
drm/amd/display: Force vsync flip when reconfiguring MPCC

Anup Patel (1):
RISC-V: Fix error code returned by riscv_hartid_to_cpuid()

Archie Pusaka (2):
Bluetooth: Set CONF_NOT_COMPLETE as l2cap_chan default
Bluetooth: check for zapped sk before connecting

Ard Biesheuvel (4):
ARM: 9011/1: centralize phys-to-virt conversion of DT/ATAGS address
ARM: 9012/1: move device tree mapping out of linear region
ARM: 9020/1: mm: use correct section size macro to describe the FDT virtual address
ARM: 9027/1: head.S: explicitly map DT even if it lives in the first physical section

Arnd Bergmann (1):
ext4: fix debug format string warning

Axel Rasmussen (1):
userfaultfd: release page in error path to avoid BUG_ON

Ayush Garg (1):
Bluetooth: Fix incorrect status handling in LE PHY UPDATE event

Badhri Jagan Sridharan (1):
usb: typec: tcpm: Fix error while calculating PPS out values

Baptiste Lepers (1):
sunrpc: Fix misplaced barrier in call_decode

Bart Van Assche (1):
blk-mq: Swap two calls in blk_mq_exit_queue()

Bence Csókás (1):
i2c: Add I2C_AQ_NO_REP_START adapter quirk

Benjamin Segall (1):
kvm: exit halt polling on need_resched() as well

Bjorn Andersson (1):
remoteproc: qcom_q6v5_mss: Validate p_filesz in ELF loader

Brendan Jackman (1):
libbpf: Fix signed overflow in ringbuf_process_ring

Can Guo (3):
scsi: ufs: core: Do not put UFS power into LPM if link is broken
scsi: ufs: core: Cancel rpm_dev_flush_recheck_work during system suspend
scsi: ufs: core: Narrow down fast path in system suspend path

Catalin Marinas (1):
arm64: Fix race condition on PG_dcache_clean in __sync_icache_dcache()

Chaitanya Kulkarni (2):
nvmet: add lba to sect conversion helpers
nvmet: fix inline bio check for bdev-ns

Chao Yu (13):
f2fs: move ioctl interface definitions to separated file
f2fs: fix compat F2FS_IOC_{MOVE,GARBAGE_COLLECT}_RANGE
f2fs: fix to allow migrating fully valid segment
f2fs: fix panic during f2fs_resize_fs()
f2fs: fix to align to section for fallocate() on pinned file
f2fs: fix to update last i_size if fallocate partially succeeds
f2fs: fix to avoid touching checkpointed data in get_victim()
f2fs: fix to cover __allocate_new_section() with curseg_lock
f2fs: fix to avoid accessing invalid fio in f2fs_allocate_data_block()
f2fs: avoid unneeded data copy in f2fs_ioc_move_range()
f2fs: compress: fix to free compress page correctly
f2fs: compress: fix race condition of overwrite vs truncate
f2fs: compress: fix to assign cc.cluster_idx correctly

Chris Dion (1):
SUNRPC: Handle major timeout in xprt_adjust_timeout()

Christoph Hellwig (1):
nvme: do not try to reconfigure APST when the controller is not live

Christophe JAILLET (4):
usb: fotg210-hcd: Fix an error message
usb: musb: Fix an error message
ACPI: scan: Fix a memory leak in an error handling path
xhci: Do not use GFP_KERNEL in (potentially) atomic context

Christophe Leroy (1):
powerpc/32: Statically initialise first emergency context

Chuck Lever (5):
SUNRPC: Move fault injection call sites
SUNRPC: Remove trace_xprt_transmit_queued
xprtrdma: Avoid Receive Queue wrapping
xprtrdma: Fix cwnd update ordering
xprtrdma: rpcrdma_mr_pop() already does list_del_init()

Chunfeng Yun (1):
usb: core: hub: fix race condition about TRSMRCY of resume

Claire Chang (1):
swiotlb: Fix the type of index

Colin Ian King (5):
KEYS: trusted: Fix memory leak on object td
f2fs: fix a redundant call to f2fs_balance_fs if an error occurs
dmaengine: idxd: Fix potential null dereference on pointer status fs/proc/generic.c: fix incorrect pde_is_permanent check
iio: tsl2583: Fix division by a zero lux_val

Cong Wang (1):
smc: disallow TCP_ULP in smc_setsockopt()

Dan Carpenter (1):
SUNRPC: fix ternary sign expansion bug in tracing

Dan Williams (1):
xen/unpopulated-alloc: consolidate pgmap manipulation

Dave Jiang (2):
dmaengine: idxd: fix dma device lifetime
dmaengine: idxd: fix cdev setup and free device lifetime issues

David Bauer (1):
mt76: mt76x0: disable GTK offloading

David Hildenbrand (2):
kernel/resource: make walk_system_ram_res() find all busy IORESOURCE_SYSTEM_RAM resources kernel/resource: make walk_mem_res() find all busy IORESOURCE_MEM resources

David Matlack (1):

      kvm: Cap halt polling at kvm->max_halt_poll_ns

David Ward (3):
ASoC: rt286: Generalize support for ALC3263 codec
ASoC: rt286: Make RT286_SET_GPIO_* readable and writable drm/amd/display: Initialize attribute for hdcp_srm sysfs file

Dingchen (David) Zhang (1):
drm/amd/display: add handling for hdcp2 rx id list validation

Dinghao Liu (2):
iio: light: gp2ap002: Fix rumtime PM imbalance on error
iio: proximity: pulsedlight: Fix rumtime PM imbalance on error

Dmitry Baryshkov (1):
PCI: Release OF node in pci_scan_device()'s error path

Dmitry Osipenko (1):
iio: gyro: mpu3050: Fix reported temperature value

Du Cheng (1):

      net: sched: tapr: prevent cycle_time == 0 in parse_taprio_schedule

Eddie James (1):
hwmon: (occ) Fix poll rate limiting

Emmanuel Grumbach (1):
mac80211: clear the beacon's CRC after channel switch

Eric Dumazet (2):
ip6_vti: proper dev_{hold|put} in ndo_[un]init methods
netfilter: nftables: avoid overflows in nft_hash_buckets()

Fabio Estevam (1):
media: rkvdec: Remove of_match_ptr()

Felix Fietkau (2):
mt76: mt7615: fix entering driver-own state on mt7663
net: ethernet: mtk_eth_soc: fix RX VLAN offload

Fernando Fernandez Mancera (1):
ethtool: fix missing NLM_F_MULTI flag when dumping

Ferry Toth (1):
usb: dwc3: pci: Enable usb2-gadget-lpm-disable for Intel Merrifield

Filipe Manana (1):
btrfs: fix race leading to unpersisted data and metadata on fsync

Frieder Schrempf (1):
can: mcp251x: fix resume from sleep before interface was brought up

Geert Uytterhoeven (1):
dt-bindings: media: renesas,vin: Make resets optional on R-Car Gen1

Greg Kroah-Hartman (4):
Revert "iommu/vt-d: Remove WO permissions on second-level paging entries" Revert "iommu/vt-d: Preset Access/Dirty bits for IOVA over FL"
kobject_uevent: remove warning in init_uevent_argv()
Linux 5.10.38

Guangbin Huang (1):
net: hns3: remediate a potential overflow risk of bd_num_list

Guangqing Zhu (1):
thermal/drivers/tsens: Fix missing put_device error

Gustavo A. R. Silva (5):
sctp: Fix out-of-bounds warning in sctp_process_asconf_param()
flow_dissector: Fix out-of-bounds warning in __skb_flow_bpf_to_target()
ethtool: ioctl: Fix out-of-bounds warning in store_link_ksettings_for_user()
wl3501_cs: Fix out-of-bounds warnings in wl3501_send_pkt
wl3501_cs: Fix out-of-bounds warnings in wl3501_mgmt_join

Hans de Goede (3):
ASoC: Intel: bytcr_rt5640: Enable jack-detect support on Asus T100TAF
ASoC: Intel: bytcr_rt5640: Add quirk for the Chuwi Hi8 tablet
ASoC: rt5670: Add a quirk for the Dell Venue 10 Pro 5055

Hao Chen (1):
net: hns3: fix for vxlan gpe tx checksum bug

Hoang Le (1):
tipc: convert dest node's address to network order

J. Bruce Fields (1):
nfsd: ensure new clients break delegations

Jack Pham (3):
usb: dwc3: gadget: Free gadget structure only after freeing endpoints
usb: dwc3: gadget: Enable suspend events
usb: typec: ucsi: Retrieve all the PDOs instead of just the first 4

Jarkko Sakkinen (2):
tpm, tpm_tis: Extend locality handling to TPM2 in tpm_tis_gen_interrupt() tpm, tpm_tis: Reserve locality in tpm_tis_resume()

Jaroslaw Gawin (1):
i40e: fix the restart auto-negotiation after FEC modified

Jeff Layton (1):
ceph: fix inode leak on getattr error in __fh_to_dentry

Jia-Ju Bai (3):
thermal: thermal_of: Fix error return code of thermal_of_populate_bind_params()
rpmsg: qcom_glink_native: fix error return code of qcom_glink_rx_data()
kernel: kexec_file: fix error return code of kexec_calculate_store_digests()

Jian Shen (1):
net: hns3: add check for HNS3_NIC_STATE_INITED in hns3_reset_notify_up_enet()

Jinzhou Su (1):
drm/amdgpu: Add mem sync flag for IB allocated by SA

Jiri Olsa (1):
perf tools: Fix dynamic libbpf link

Johannes Berg (1):
iwlwifi: pcie: make cfg vs. trans_cfg more robust

Jonathan McDowell (1):
net: stmmac: Set FIFO sizes for ipq806x

Jouni Roivas (1):
hfsplus: prevent corruption in shrinking truncate

Juergen Gross (1):
xen/gntdev: fix gntdev_mmap() error exit path

Kai Vehmanen (1):
ALSA: hda/hdmi: fix race in handling acomp ELD notification at resume

Kai-Heng Feng (1):
drm/radeon/dpm: Disable sclk switching on Oland when two 4K 60Hz monitors are connected

Kees Cook (3):
drm/radeon: Fix off-by-one power_state index heap overwrite drm/radeon: Avoid power table parsing memory leaks
debugfs: Make debugfs_allow RO after init

Kishon Vijay Abraham I (3):
PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR
PCI: endpoint: Add helper API to get the 'next' unreserved BAR
PCI: endpoint: Make *_free_bar() to return error codes on failure

Krzysztof Kozlowski (1):
pinctrl: samsung: use 'int' for register masks in Exynos

Kuninori Morimoto (2):
ASoC: rsnd: call rsnd_ssi_master_clk_start() from rsnd_ssi_init()
ASoC: rsnd: check all BUSIF status when error

Kuogee Hsieh (1):
drm/msm/dp: initialize audio_comp when audio starts

Lai Jiangshan (1):
KVM/VMX: Invoke NMI non-IST entry instead of IST entry

Lee Gibson (1):
qtnfmac: Fix possible buffer overflow in qtnf_event_handle_external_auth

Lu Baolu (2):
iommu/vt-d: Preset Access/Dirty bits for IOVA over FL iommu/vt-d: Remove WO permissions on second-level paging entries

Lv Yunlong (2):
ethernet:enic: Fix a use after free bug in enic_hard_start_xmit drm/i915/gt: Fix a double free in gen8_preallocate_top_level_pdp

Maciej W. Rozycki (3):
MIPS: Reinstate platform `__div64_32' handler
MIPS: Avoid DIVU in `__div64_32' is result would be zero
MIPS: Avoid handcoded DIVU in `__div64_32' altogether

Maciej Żenczykowski (1):
net: fix nla_strcmp to handle more then one trailing null character

Magnus Karlsson (1):
i40e: fix broken XDP support

Marc Kleine-Budde (2):
can: mcp251xfd: mcp251xfd_probe(): add missing can_rx_offload_del() in error path
can: m_can: m_can_tx_work_queue(): fix tx_skb race condition

Marc Zyngier (1):
arm64: entry: factor irq triage logic into macros

Marcel Hamer (1):
usb: dwc3: omap: improve extcon initialization

Mark Rutland (1):
arm64: entry: always set GIC_PRIO_PSR_I_SET during entry

Masahiro Yamada (1):
kbuild: generate Module.symvers only when vmlinux exists

Mateusz Palczewski (1):
i40e: Fix PHY type identifiers for 2.5G and 5G adapters

Matthew Wilcox (Oracle) (1):
mm: fix struct page layout on 32-bit systems

Maxim Mikityanskiy (1):
net/mlx5e: Use net_prefetchw instead of prefetchw in MPWQE TX datapath

Maximilian Luz (1):
usb: xhci: Increase timeout for HC halt

Md Haris Iqbal (2):
block/rnbd-clt: Change queue_depth type in rnbd_clt_session to size_t block/rnbd-clt: Check the return value of the function rtrs_clt_query

Miaohe Lin (4):
khugepaged: fix wrong result value for trace_mm_collapse_huge_page_isolate() mm/hugeltb: handle the error case in hugetlb_fix_reserve_counts() mm/migrate.c: fix potential indeterminate pte entry in migrate_vma_insert_page()
ksm: fix potential missing rmap_item for stable_node

Michael Chan (1):
bnxt_en: Add PCI IDs for Hyper-V VF devices.

Michael Ellerman (3):
powerpc/pseries: Stop calling printk in rtas_stop_self() powerpc/64s: Fix crashes when toggling stf barrier powerpc/64s: Fix crashes when toggling entry flush barrier

Michael Walle (1):
rtc: fsl-ftm-alarm: add MODULE_TABLE()

Michal Kalderon (1):
nvmet-rdma: Fix NULL deref when SEND is completed with error

Mihai Moldovan (1):
kconfig: nconf: stop endless search loops

Mike Marciniszyn (1):
IB/hfi1: Correct oversized ring allocation

Mikhail Durnev (1):
ASoC: rsnd: core: Check convert rate in rsnd_hw_params

Miklos Szeredi (2):
virtiofs: fix userns
cuse: prevent clone

Ming Lei (1):
blk-mq: plug request for shared sbitmap

Nikola Livic (1):
pNFS/flexfiles: fix incorrect size check in decode_nfs_fh()

Nikolay Aleksandrov (1):
net: bridge: when suppression is enabled exclude RARP packets

Nobuhiro Iwamatsu (1):
rtc: ds1307: Fix wday settings for rx8130

Odin Ugedal (1):
sched/fair: Fix unfairness caused by missing load decay

Olga Kornievskaia (1):
NFSv4.2 fix handling of sr_eof in SEEK's reply

Oliver Neukum (1):
cdc-wdm: untangle a circular dependency between callback and softint

Omar Sandoval (1):
kyber: fix out of bounds access when preempted

Pablo Neira Ayuso (3):
netfilter: xt_SECMARK: add new revision to fix structure layout
netfilter: nfnetlink_osf: Fix a missing skb_header_pointer() NULL check
netfilter: nftables: Fix a memleak from userdata error path in new objects

Pali Rohár (1):
PCI: iproc: Fix return value of iproc_msi_irq_domain_alloc()

Paolo Abeni (1):
mptcp: fix splat when closing unaccepted socket

Paul M Stillwell Jr (1):
ice: handle increasing Tx or Rx ring sizes

Paul Menzel (1):
Revert "iommu/amd: Fix performance counter initialization"

Pavel Tatashin (3):
mm/gup: check every subpage of a compound page during isolation mm/gup: return an error on migration failure
mm/gup: check for isolation errors

Paweł Chmiel (1):
clk: exynos7: Mark aclk_fsys1_200 as critical

Peng Li (1):
net: hns3: use netif_tx_disable to stop the transmit queue

Peter Collingbourne (2):
kasan: fix unit tests with CONFIG_UBSAN_LOCAL_BOUNDS enabled
arm64: mte: initialize RGSR_EL1.SEED in __cpu_setup

Peter Xu (1):
mm/hugetlb: fix F_SEAL_FUTURE_WRITE

Petr Machata (2):
selftests: mlxsw: Increase the tolerance of backlog buildup
selftests: mlxsw: Fix mausezahn invocation in ERSPAN scale test

Petr Mladek (4):
watchdog: rename __touch_watchdog() to a better descriptive name
watchdog: explicitly update timestamp when reporting softlockup watchdog/softlockup: remove logic that tried to prevent repeated reports
watchdog: fix barriers when printing backtraces from all CPUs

Phil Elwell (1):
usb: dwc2: Fix gadget DMA unmap direction

Phillip Lougher (1):
squashfs: fix divide error in calculate_skip()

Po-Hao Huang (1):

      rtw88: 8822c: add LC calibration for RTL8822C

Pradeep Kumar Chitrapu (1):
ath11k: fix thermal temperature read

Qii Wang (1):
i2c: mediatek: Fix send master code at more than 1MHz

Quentin Perret (1):
sched: Fix out-of-bound access in uclamp

Rafael J. Wysocki (1):
cpufreq: intel_pstate: Use HWP if enabled by platform firmware

Ramesh Babu B (1):
net: stmmac: Clear receive all(RA) bit when promiscuous mode is off

Robin Singh (1):
drm/amd/display: fixed divide by zero kernel crash during dsc enablement

Russell Currey (1):
selftests/powerpc: Fix L1D flushing tests for Power10

Sandeep Singh (1):
xhci: Add reset resume quirk for AMD xhci controller.

Sander Vanheule (1):
mt76: mt7615: support loading EEPROM for MT7613BE

Sean Christopherson (6):
KVM: x86/mmu: Remove the defunct update_pte() paging hook
crypto: ccp: Free SEV device if SEV init fails
KVM: x86: Emulate RDPID only if RDTSCP is supported
KVM: x86: Move RDPID emulation intercept to its own enum
KVM: VMX: Do not advertise RDPID if ENABLE_RDTSCP control is unsupported
KVM: VMX: Disable preemption when probing user return MSRs

Sergei Trofimovich (1):
ia64: module: fix symbolizer crash on fdescr

Shayne Chen (1):
mt76: mt7915: fix txpower init for TSSI off chips

Shradha Todi (1):

      PCI: endpoint: Fix NULL pointer dereference for ->get_features()

Sibi Sankar (1):
remoteproc: qcom_q6v5_mss: Replace ioremap with memremap

Srikar Dronamraju (1):
powerpc/smp: Set numa node before updating mask

Stefan Assmann (1):
iavf: remove duplicate free resources calls

Stéphane Marchesin (1):
drm/i915: Fix crash in auto_retire

Sumeet Pawnikar (1):
ACPI: PM: Add ACPI ID of Alder Lake Fan

Sun Ke (1):
nbd: Fix NULL pointer in flush_workqueue

Suravee Suthikulpanit (1):
iommu/amd: Remove performance counter pre-initialization test

Suzuki K Poulose (1):
coresight: Do not scan for graph if none is present

Takashi Iwai (1):
ALSA: hda/realtek: Add quirk for Lenovo Ideapad S740

Takashi Sakamoto (1):
ALSA: bebob: enable to deliver MIDI messages for multiple ports

Tejun Heo (1):
blk-iocost: fix weight updates of inner active iocgs

Tetsuo Handa (1):
Bluetooth: initialize skb_queue_head at l2cap_chan_create()

Thomas Gleixner (2):
KVM: x86: Cancel pvclock_gtod_work on module removal
KVM: x86: Prevent deadlock against tk_core.seq

Tiezhu Yang (1):
MIPS: Loongson64: Use _CACHE_UNCACHED instead of _CACHE_UNCACHED_ACCELERATED

Tong Zhang (3):
ALSA: hdsp: don't disable if not enabled
ALSA: hdspm: don't disable if not enabled
ALSA: rme9652: don't disable if not enabled

Tony Lindgren (3):
PM: runtime: Fix unpaired parent child_count for force_resume clocksource/drivers/timer-ti-dm: Prepare to handle dra7 timer wrap issue clocksource/drivers/timer-ti-dm: Handle dra7 timer wrap errata i940

Trond Myklebust (5):
NFS: nfs4_bitmask_adjust() must not change the server global bitmasks
NFS: Fix attribute bitmask in _nfs42_proc_fallocate() NFSv4.2: Always flush out writes in nfs42_proc_fallocate()
NFS: Deal correctly with attribute generation counter overflow NFSv4.x: Don't return NFS4ERR_NOMATCHING_LAYOUT if we're unmounting

Tvrtko Ursulin (1):
drm/i915/overlay: Fix active retire callback alignment

Uwe Kleine-König (1):
pwm: atmel: Fix duty cycle calculation in .get_state()

Vaibhav Jain (1):
powerpc/mm: Add cond_resched() while removing hpte mappings

Vamshi Krishna Gopal (1):
ASoC: Intel: sof_sdw: add quirk for new ADL-P Rvp

Ville Syrjälä (2):
drm/i915: Avoid div-by-zero on gen2 drm/i915: Read C0DRB3/C1DRB3 as 16 bits again

Vineet Gupta (1):
ARC: entry: fix off-by-one error in syscall number validation

Vitaly Kuznetsov (1):
KVM: nVMX: Always make an attempt to map eVMCS after migration

Vivek Goyal (4):
fuse: invalidate attrs when page writeback completes
dax: Add an enum for specifying dax wakup mode
dax: Add a wakeup mode parameter to put_unlocked_entry()
dax: Wake up all waiters after invalidating dax entry

Vladimir Isaev (2):
ARC: mm: PAE: use 40-bit physical page mask
ARC: mm: Use max_high_pfn as a HIGHMEM zone border

Vladimir Oltean (1):
net/sched: cls_flower: use ntohs for struct flow_dissector_key_ports

Wanpeng Li (1):
KVM: LAPIC: Accurately guarantee busy wait for timer to expire when using hv_timer

Wesley Cheng (1):
usb: dwc3: gadget: Return success always for kick transfer in ep queue

Wolfram Sang (1):
i2c: bail out early when RDWR parameters are wrong

Xin Long (2):
sctp: do asoc update earlier in sctp_sf_do_dupcook_a
sctp: fix a SCTP_MIB_CURRESTAB leak in sctp_sf_do_dupcook_b

Xuan Zhuo (1):

      xsk: Fix for xp_aligned_validate_desc() when len == chunk_size

Yang Yingliang (1):
PCI: endpoint: Fix missing destroy_workqueue()

Yaqi Chen (1):
samples/bpf: Fix broken tracex1 due to kprobe argument change

Yi Zhuang (1):
f2fs: Fix a hungtask problem in atomic write

Yonghong Song (1):
selftests: Set CC to clang in lib.mk if LLVM is set

Yufeng Mo (3):
net: hns3: fix incorrect configuration for igu_egu_hw_err
net: hns3: initialize the message content in hclge_get_link_mode()
net: hns3: disable phy loopback setting in hclge_mac_start_phy

Yunjian Wang (1):
i40e: Fix use-after-free in i40e_client_subtask()

Yunsheng Lin (1):
net: hns3: add handling for xmit skb with recursive fraglist

Zhen Lei (4):
tpm: fix error return code in tpm2_get_cc_attrs_tbl()
ARM: 9064/1: hw_breakpoint: Do not directly check the event's overflow_handler hook xen/unpopulated-alloc: fix error return code in fill_list()
dt-bindings: serial: 8250: Remove duplicated compatible strings

mark-yw.chen (1):
Bluetooth: btusb: Enable quirk boolean flag for Mediatek Chip.

author maintainer
#1 lore raw
.gitignore +1 -0
index d01cda8e1177..67d2f3503128 100644
@@ -55,6 +55,7 @@ modules.order
 /tags
 /TAGS
 /linux
+/modules-only.symvers
 /vmlinux
 /vmlinux.32
 /vmlinux.symvers
Documentation/arm/memory.rst +6 -1
index 0521b4ce5c96..34bb23c44a71 100644
@@ -45,9 +45,14 @@ fffe8000	fffeffff	DTCM mapping area for platforms with
 fffe0000	fffe7fff	ITCM mapping area for platforms with
 				ITCM mounted inside the CPU.
 
-ffc00000	ffefffff	Fixmap mapping region.  Addresses provided
+ffc80000	ffefffff	Fixmap mapping region.  Addresses provided
 				by fix_to_virt() will be located here.
 
+ffc00000	ffc7ffff	Guard region
+
+ff800000	ffbfffff	Permanent, fixed read-only mapping of the
+				firmware provided DT blob
+
 fee00000	feffffff	Mapping of PCI I/O space. This is a static
 				mapping within the vmalloc space.
 
Documentation/devicetree/bindings/media/renesas,vin.yaml +29 -17

52 lines not on this page · raw message

Documentation/devicetree/bindings/serial/8250.yaml +0 -5
index c1d4c196f005..460cb546c54a 100644
@@ -93,11 +93,6 @@ properties:
               - mediatek,mt7622-btif
               - mediatek,mt7623-btif
           - const: mediatek,mtk-btif
-      - items:
-          - enum:
-              - mediatek,mt7622-btif
-              - mediatek,mt7623-btif
-          - const: mediatek,mtk-btif
       - items:
           - const: mrvl,mmp-uart
           - const: intel,xscale-uart
Documentation/dontdiff +1 -0
index e361fc95ca29..82e3eee7363b 100644
@@ -178,6 +178,7 @@ mktables
 mktree
 mkutf8data
 modpost
+modules-only.symvers
 modules.builtin
 modules.builtin.modinfo
 modules.nsdeps
MAINTAINERS +1 -0
index 24cdfcf334ea..4fef10dd2975 100644
@@ -6694,6 +6694,7 @@ F:	Documentation/filesystems/f2fs.rst
 F:	fs/f2fs/
 F:	include/linux/f2fs_fs.h
 F:	include/trace/events/f2fs.h
+F:	include/uapi/linux/f2fs.h
 
 F71805F HARDWARE MONITORING DRIVER
 M:	Jean Delvare <[email protected]>
Makefile +2 -2
index 39f14ad009ae..6e4e536a0d20 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 37
+SUBLEVEL = 38
 EXTRAVERSION =
 NAME = Dare mighty things
 
@@ -1483,7 +1483,7 @@ endif # CONFIG_MODULES
 # make distclean Remove editor backup files, patch leftover files and the like
 
 # Directories & files removed with 'make clean'
-CLEAN_FILES += include/ksym vmlinux.symvers \
+CLEAN_FILES += include/ksym vmlinux.symvers modules-only.symvers \
 	       modules.builtin modules.builtin.modinfo modules.nsdeps \
 	       compile_commands.json
 
arch/arc/include/asm/page.h +12 -0
index d9c264dc25fc..9926cd5a17b0 100644
@@ -7,6 +7,18 @@
 
 #include <uapi/asm/page.h>
 
+#ifdef CONFIG_ARC_HAS_PAE40
+
+#define MAX_POSSIBLE_PHYSMEM_BITS	40
+#define PAGE_MASK_PHYS			(0xff00000000ull | PAGE_MASK)
+
+#else /* CONFIG_ARC_HAS_PAE40 */
+
+#define MAX_POSSIBLE_PHYSMEM_BITS	32
+#define PAGE_MASK_PHYS			PAGE_MASK
+
+#endif /* CONFIG_ARC_HAS_PAE40 */
+
 #ifndef __ASSEMBLY__
 
 #define clear_page(paddr)		memset((paddr), 0, PAGE_SIZE)
arch/arc/include/asm/pgtable.h +3 -9
index 163641726a2b..5878846f00cf 100644
@@ -107,8 +107,8 @@
 #define ___DEF (_PAGE_PRESENT | _PAGE_CACHEABLE)
 
 /* Set of bits not changed in pte_modify */
-#define _PAGE_CHG_MASK	(PAGE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_SPECIAL)
-
+#define _PAGE_CHG_MASK	(PAGE_MASK_PHYS | _PAGE_ACCESSED | _PAGE_DIRTY | \
+							   _PAGE_SPECIAL)
 /* More Abbrevaited helpers */
 #define PAGE_U_NONE     __pgprot(___DEF)
 #define PAGE_U_R        __pgprot(___DEF | _PAGE_READ)
@@ -132,13 +132,7 @@
 #define PTE_BITS_IN_PD0		(_PAGE_GLOBAL | _PAGE_PRESENT | _PAGE_HW_SZ)
 #define PTE_BITS_RWX		(_PAGE_EXECUTE | _PAGE_WRITE | _PAGE_READ)
 
-#ifdef CONFIG_ARC_HAS_PAE40
-#define PTE_BITS_NON_RWX_IN_PD1	(0xff00000000 | PAGE_MASK | _PAGE_CACHEABLE)
-#define MAX_POSSIBLE_PHYSMEM_BITS 40
-#else
-#define PTE_BITS_NON_RWX_IN_PD1	(PAGE_MASK | _PAGE_CACHEABLE)
-#define MAX_POSSIBLE_PHYSMEM_BITS 32
-#endif
+#define PTE_BITS_NON_RWX_IN_PD1	(PAGE_MASK_PHYS | _PAGE_CACHEABLE)
 
 /**************************************************************************
  * Mapping of vm_flags (Generic VM) to PTE flags (arch specific)
arch/arc/include/uapi/asm/page.h +0 -1
index 2a97e2718a21..2a4ad619abfb 100644
@@ -33,5 +33,4 @@
 
 #define PAGE_MASK	(~(PAGE_SIZE-1))
 
-
 #endif /* _UAPI__ASM_ARC_PAGE_H */
arch/arc/kernel/entry.S +2 -2
index ea00c8a17f07..ae656bfc31c3 100644
@@ -177,7 +177,7 @@ tracesys:
 
 	; Do the Sys Call as we normally would.
 	; Validate the Sys Call number
-	cmp     r8,  NR_syscalls
+	cmp     r8,  NR_syscalls - 1
 	mov.hi  r0, -ENOSYS
 	bhi     tracesys_exit
 
@@ -255,7 +255,7 @@ ENTRY(EV_Trap)
 	;============ Normal syscall case
 
 	; syscall num shd not exceed the total system calls avail
-	cmp     r8,  NR_syscalls
+	cmp     r8,  NR_syscalls - 1
 	mov.hi  r0, -ENOSYS
 	bhi     .Lret_from_system_call
 
arch/arc/mm/init.c +10 -1
index 3a35b82a718e..da543fd422fe 100644
@@ -158,7 +158,16 @@ void __init setup_arch_memory(void)
 	min_high_pfn = PFN_DOWN(high_mem_start);
 	max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz);
 
-	max_zone_pfn[ZONE_HIGHMEM] = min_low_pfn;
+	/*
+	 * max_high_pfn should be ok here for both HIGHMEM and HIGHMEM+PAE.
+	 * For HIGHMEM without PAE max_high_pfn should be less than
+	 * min_low_pfn to guarantee that these two regions don't overlap.
+	 * For PAE case highmem is greater than lowmem, so it is natural
+	 * to use max_high_pfn.
+	 *
+	 * In both cases, holes should be handled by pfn_valid().
+	 */
+	max_zone_pfn[ZONE_HIGHMEM] = max_high_pfn;
 
 	high_memory = (void *)(min_high_pfn << PAGE_SHIFT);
 	kmap_init();
arch/arc/mm/ioremap.c +3 -2
index fac4adc90204..95c649fbc95a 100644
@@ -53,9 +53,10 @@ EXPORT_SYMBOL(ioremap);
 void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size,
 			   unsigned long flags)
 {
+	unsigned int off;
 	unsigned long vaddr;
 	struct vm_struct *area;
-	phys_addr_t off, end;
+	phys_addr_t end;
 	pgprot_t prot = __pgprot(flags);
 
 	/* Don't allow wraparound, zero size */
@@ -72,7 +73,7 @@ void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size,
 
 	/* Mappings have to be page-aligned */
 	off = paddr & ~PAGE_MASK;
-	paddr &= PAGE_MASK;
+	paddr &= PAGE_MASK_PHYS;
 	size = PAGE_ALIGN(end + 1) - paddr;
 
 	/*
arch/arc/mm/tlb.c +1 -1
index 9bb3c24f3677..9c7c68247289 100644
@@ -576,7 +576,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long vaddr_unaligned,
 		      pte_t *ptep)
 {
 	unsigned long vaddr = vaddr_unaligned & PAGE_MASK;
-	phys_addr_t paddr = pte_val(*ptep) & PAGE_MASK;
+	phys_addr_t paddr = pte_val(*ptep) & PAGE_MASK_PHYS;
 	struct page *page = pfn_to_page(pte_pfn(*ptep));
 
 	create_tlb(vma, vaddr, ptep);
arch/arm/boot/dts/dra7-l4.dtsi +2 -2
index 3bf90d9e3335..a294a02f2d23 100644
@@ -1168,7 +1168,7 @@ timer2: timer@0 {
 			};
 		};
 
-		target-module@34000 {			/* 0x48034000, ap 7 46.0 */
+		timer3_target: target-module@34000 {	/* 0x48034000, ap 7 46.0 */
 			compatible = "ti,sysc-omap4-timer", "ti,sysc";
 			reg = <0x34000 0x4>,
 			      <0x34010 0x4>;
@@ -1195,7 +1195,7 @@ timer3: timer@0 {
 			};
 		};
 
-		target-module@36000 {			/* 0x48036000, ap 9 4e.0 */
+		timer4_target: target-module@36000 {	/* 0x48036000, ap 9 4e.0 */
 			compatible = "ti,sysc-omap4-timer", "ti,sysc";
 			reg = <0x36000 0x4>,
 			      <0x36010 0x4>;
arch/arm/boot/dts/dra7.dtsi +20 -0
index 4e1bbc0198eb..7ecf8f86ac74 100644
@@ -46,6 +46,7 @@ aliases {
 
 	timer {
 		compatible = "arm,armv7-timer";
+		status = "disabled";	/* See ARM architected timer wrap erratum i940 */
 		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
 			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
 			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
@@ -1090,3 +1091,22 @@ timer@0 {
 		assigned-clock-parents = <&sys_32k_ck>;
 	};
 };
+
+/* Local timers, see ARM architected timer wrap erratum i940 */
+&timer3_target {
+	ti,no-reset-on-init;
+	ti,no-idle;
+	timer@0 {
+		assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER3_CLKCTRL 24>;
+		assigned-clock-parents = <&timer_sys_clk_div>;
+	};
+};
+
+&timer4_target {
+	ti,no-reset-on-init;
+	ti,no-idle;
+	timer@0 {
+		assigned-clocks = <&l4per_clkctrl DRA7_L4PER_TIMER4_CLKCTRL 24>;
+		assigned-clock-parents = <&timer_sys_clk_div>;
+	};
+};
arch/arm/include/asm/fixmap.h +1 -1
index fc56fc3e1931..9575b404019c 100644
@@ -2,7 +2,7 @@
 #ifndef _ASM_FIXMAP_H
 #define _ASM_FIXMAP_H
 
-#define FIXADDR_START		0xffc00000UL
+#define FIXADDR_START		0xffc80000UL
 #define FIXADDR_END		0xfff00000UL
 #define FIXADDR_TOP		(FIXADDR_END - PAGE_SIZE)
 
arch/arm/include/asm/memory.h +5 -0
index 99035b5891ef..f717d7122d9d 100644
@@ -67,6 +67,10 @@
  */
 #define XIP_VIRT_ADDR(physaddr)  (MODULES_VADDR + ((physaddr) & 0x000fffff))
 
+#define FDT_FIXED_BASE		UL(0xff800000)
+#define FDT_FIXED_SIZE		(2 * SECTION_SIZE)
+#define FDT_VIRT_BASE(physbase)	((void *)(FDT_FIXED_BASE | (physbase) % SECTION_SIZE))
+
 #if !defined(CONFIG_SMP) && !defined(CONFIG_ARM_LPAE)
 /*
  * Allow 16MB-aligned ioremap pages
@@ -107,6 +111,7 @@ extern unsigned long vectors_base;
 #define MODULES_VADDR		PAGE_OFFSET
 
 #define XIP_VIRT_ADDR(physaddr)  (physaddr)
+#define FDT_VIRT_BASE(physbase)  ((void *)(physbase))
 
 #endif /* !CONFIG_MMU */
 
arch/arm/include/asm/prom.h +2 -2
index 1e36c40533c1..402e3f34c7ed 100644
@@ -9,12 +9,12 @@
 
 #ifdef CONFIG_OF
 
-extern const struct machine_desc *setup_machine_fdt(unsigned int dt_phys);
+extern const struct machine_desc *setup_machine_fdt(void *dt_virt);
 extern void __init arm_dt_init_cpu_maps(void);
 
 #else /* CONFIG_OF */
 
-static inline const struct machine_desc *setup_machine_fdt(unsigned int dt_phys)
+static inline const struct machine_desc *setup_machine_fdt(void *dt_virt)
 {
 	return NULL;
 }
arch/arm/kernel/atags.h +2 -2
index 067e12edc341..f2819c25b602 100644
@@ -2,11 +2,11 @@
 void convert_to_tag_list(struct tag *tags);
 
 #ifdef CONFIG_ATAGS
-const struct machine_desc *setup_machine_tags(phys_addr_t __atags_pointer,
+const struct machine_desc *setup_machine_tags(void *__atags_vaddr,
 	unsigned int machine_nr);
 #else
 static inline const struct machine_desc * __init __noreturn
-setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
+setup_machine_tags(void *__atags_vaddr, unsigned int machine_nr)
 {
 	early_print("no ATAGS support: can't continue\n");
 	while (true);
arch/arm/kernel/atags_parse.c +3 -3
index 6c12d9fe694e..373b61f9a4f0 100644
@@ -174,7 +174,7 @@ static void __init squash_mem_tags(struct tag *tag)
 }
 
 const struct machine_desc * __init
-setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
+setup_machine_tags(void *atags_vaddr, unsigned int machine_nr)
 {
 	struct tag *tags = (struct tag *)&default_tags;
 	const struct machine_desc *mdesc = NULL, *p;
@@ -195,8 +195,8 @@ setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
 	if (!mdesc)
 		return NULL;
 
-	if (__atags_pointer)
-		tags = phys_to_virt(__atags_pointer);
+	if (atags_vaddr)
+		tags = atags_vaddr;
 	else if (mdesc->atag_offset)
 		tags = (void *)(PAGE_OFFSET + mdesc->atag_offset);
 
arch/arm/kernel/devtree.c +3 -3
index 7f0745a97e20..28311dd0fee6 100644
@@ -203,12 +203,12 @@ static const void * __init arch_get_next_mach(const char *const **match)
 
 /**
  * setup_machine_fdt - Machine setup when an dtb was passed to the kernel
- * @dt_phys: physical address of dt blob
+ * @dt_virt: virtual address of dt blob
  *
  * If a dtb was passed to the kernel in r2, then use it to choose the
  * correct machine_desc and to setup the system.
  */
-const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
+const struct machine_desc * __init setup_machine_fdt(void *dt_virt)
 {
 	const struct machine_desc *mdesc, *mdesc_best = NULL;
 
@@ -221,7 +221,7 @@ const struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
 	mdesc_best = &__mach_desc_GENERIC_DT;
 #endif
 
-	if (!dt_phys || !early_init_dt_verify(phys_to_virt(dt_phys)))
+	if (!dt_virt || !early_init_dt_verify(dt_virt))
 		return NULL;
 
 	mdesc = of_flat_dt_match_machine(mdesc_best, arch_get_next_mach);
arch/arm/kernel/head.S +4 -5
index 98c1e68bdfcb..4af5c7679624 100644
@@ -274,11 +274,10 @@ __create_page_tables:
 	 * We map 2 sections in case the ATAGs/DTB crosses a section boundary.
 	 */
 	mov	r0, r2, lsr #SECTION_SHIFT
-	movs	r0, r0, lsl #SECTION_SHIFT
-	subne	r3, r0, r8
-	addne	r3, r3, #PAGE_OFFSET
-	addne	r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER)
-	orrne	r6, r7, r0
+	cmp	r2, #0
+	ldrne	r3, =FDT_FIXED_BASE >> (SECTION_SHIFT - PMD_ORDER)
+	addne	r3, r3, r4
+	orrne	r6, r7, r0, lsl #SECTION_SHIFT
 	strne	r6, [r3], #1 << PMD_ORDER
 	addne	r6, r6, #1 << SECTION_SHIFT
 	strne	r6, [r3]
arch/arm/kernel/hw_breakpoint.c +1 -1
index 08660ae9dcbc..b1423fb130ea 100644
@@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs)
 			info->trigger = addr;
 			pr_debug("breakpoint fired: address = 0x%x\n", addr);
 			perf_bp_event(bp, regs);
-			if (!bp->overflow_handler)
+			if (is_default_overflow_handler(bp))
 				enable_single_step(bp, addr);
 			goto unlock;
 		}
arch/arm/kernel/setup.c +14 -5
index 3f65d0ac9f63..f90479d8b50c 100644
@@ -18,6 +18,7 @@
 #include <linux/of_platform.h>
 #include <linux/init.h>
 #include <linux/kexec.h>
+#include <linux/libfdt.h>
 #include <linux/of_fdt.h>
 #include <linux/cpu.h>
 #include <linux/interrupt.h>
@@ -1081,19 +1082,27 @@ void __init hyp_mode_check(void)
 
 void __init setup_arch(char **cmdline_p)
 {
-	const struct machine_desc *mdesc;
+	const struct machine_desc *mdesc = NULL;
+	void *atags_vaddr = NULL;
+
+	if (__atags_pointer)
+		atags_vaddr = FDT_VIRT_BASE(__atags_pointer);
 
 	setup_processor();
-	mdesc = setup_machine_fdt(__atags_pointer);
+	if (atags_vaddr) {
+		mdesc = setup_machine_fdt(atags_vaddr);
+		if (mdesc)
+			memblock_reserve(__atags_pointer,
+					 fdt_totalsize(atags_vaddr));
+	}
 	if (!mdesc)
-		mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
+		mdesc = setup_machine_tags(atags_vaddr, __machine_arch_type);
 	if (!mdesc) {
 		early_print("\nError: invalid dtb and unrecognized/unsupported machine ID\n");
 		early_print("  r1=0x%08x, r2=0x%08x\n", __machine_arch_type,
 			    __atags_pointer);
 		if (__atags_pointer)
-			early_print("  r2[]=%*ph\n", 16,
-				    phys_to_virt(__atags_pointer));
+			early_print("  r2[]=%*ph\n", 16, atags_vaddr);
 		dump_machine_table();
 	}
 
arch/arm/mm/init.c +0 -1
index c23dbf8bebee..d54d69cf1732 100644
@@ -223,7 +223,6 @@ void __init arm_memblock_init(const struct machine_desc *mdesc)
 	if (mdesc->reserve)
 		mdesc->reserve();
 
-	early_init_fdt_reserve_self();
 	early_init_fdt_scan_reserved_mem();
 
 	/* reserve memory for DMA contiguous allocations */
arch/arm/mm/mmu.c +14 -6
index ab69250a86bc..fa259825310c 100644
@@ -39,6 +39,8 @@
 #include "mm.h"
 #include "tcm.h"
 
+extern unsigned long __atags_pointer;
+
 /*
  * empty_zero_page is a special page that is used for
  * zero-initialized data and COW.
@@ -946,7 +948,7 @@ static void __init create_mapping(struct map_desc *md)
 		return;
 	}
 
-	if ((md->type == MT_DEVICE || md->type == MT_ROM) &&
+	if (md->type == MT_DEVICE &&
 	    md->virtual >= PAGE_OFFSET && md->virtual < FIXADDR_START &&
 	    (md->virtual < VMALLOC_START || md->virtual >= VMALLOC_END)) {
 		pr_warn("BUG: mapping for 0x%08llx at 0x%08lx out of vmalloc space\n",
@@ -1333,6 +1335,15 @@ static void __init devicemaps_init(const struct machine_desc *mdesc)
 	for (addr = VMALLOC_START; addr < (FIXADDR_TOP & PMD_MASK); addr += PMD_SIZE)
 		pmd_clear(pmd_off_k(addr));
 
+	if (__atags_pointer) {
+		/* create a read-only mapping of the device tree */
+		map.pfn = __phys_to_pfn(__atags_pointer & SECTION_MASK);
+		map.virtual = FDT_FIXED_BASE;
+		map.length = FDT_FIXED_SIZE;
+		map.type = MT_ROM;
+		create_mapping(&map);
+	}
+
 	/*
 	 * Map the kernel if it is XIP.
 	 * It is always first in the modulearea.
@@ -1489,8 +1500,7 @@ static void __init map_lowmem(void)
 }
 
 #ifdef CONFIG_ARM_PV_FIXUP
-extern unsigned long __atags_pointer;
-typedef void pgtables_remap(long long offset, unsigned long pgd, void *bdata);
+typedef void pgtables_remap(long long offset, unsigned long pgd);
 pgtables_remap lpae_pgtables_remap_asm;
 
 /*
@@ -1503,7 +1513,6 @@ static void __init early_paging_init(const struct machine_desc *mdesc)
 	unsigned long pa_pgd;
 	unsigned int cr, ttbcr;
 	long long offset;
-	void *boot_data;
 
 	if (!mdesc->pv_fixup)
 		return;
@@ -1520,7 +1529,6 @@ static void __init early_paging_init(const struct machine_desc *mdesc)
 	 */
 	lpae_pgtables_remap = (pgtables_remap *)(unsigned long)__pa(lpae_pgtables_remap_asm);
 	pa_pgd = __pa(swapper_pg_dir);
-	boot_data = __va(__atags_pointer);
 	barrier();
 
 	pr_info("Switching physical address space to 0x%08llx\n",
@@ -1556,7 +1564,7 @@ static void __init early_paging_init(const struct machine_desc *mdesc)
 	 * needs to be assembly.  It's fairly simple, as we're using the
 	 * temporary tables setup by the initial assembly code.
 	 */
-	lpae_pgtables_remap(offset, pa_pgd, boot_data);
+	lpae_pgtables_remap(offset, pa_pgd);
 
 	/* Re-enable the caches and cacheable TLB walks */
 	asm volatile("mcr p15, 0, %0, c2, c0, 2" : : "r" (ttbcr));
arch/arm/mm/pv-fixup-asm.S +2 -2
index 8eade0416739..5c5e1952000a 100644
@@ -39,8 +39,8 @@ ENTRY(lpae_pgtables_remap_asm)
 
 	/* Update level 2 entries for the boot data */
 	add	r7, r2, #0x1000
-	add	r7, r7, r3, lsr #SECTION_SHIFT - L2_ORDER
-	bic	r7, r7, #(1 << L2_ORDER) - 1
+	movw	r3, #FDT_FIXED_BASE >> (SECTION_SHIFT - L2_ORDER)
+	add	r7, r7, r3
 	ldrd	r4, r5, [r7]
 	adds	r4, r4, r0
 	adc	r5, r5, r1
arch/arm64/include/asm/daifflags.h +3 -0
index 1c26d7baa67f..cfdde3a56805 100644
@@ -131,6 +131,9 @@ static inline void local_daif_inherit(struct pt_regs *regs)
 	if (interrupts_enabled(regs))
 		trace_hardirqs_on();
 
+	if (system_uses_irq_prio_masking())
+		gic_write_pmr(regs->pmr_save);
+
 	/*
 	 * We can't use local_daif_restore(regs->pstate) here as
 	 * system_has_prio_mask_debugging() won't restore the I bit if it can
arch/arm64/kernel/entry-common.c +0 -17
index 70e0a7591245..ec120ed18faf 100644
@@ -178,14 +178,6 @@ static void noinstr el1_dbg(struct pt_regs *regs, unsigned long esr)
 {
 	unsigned long far = read_sysreg(far_el1);
 
-	/*
-	 * The CPU masked interrupts, and we are leaving them masked during
-	 * do_debug_exception(). Update PMR as if we had called
-	 * local_daif_mask().
-	 */
-	if (system_uses_irq_prio_masking())
-		gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
-
 	arm64_enter_el1_dbg(regs);
 	do_debug_exception(far, esr, regs);
 	arm64_exit_el1_dbg(regs);
@@ -350,9 +342,6 @@ static void noinstr el0_dbg(struct pt_regs *regs, unsigned long esr)
 	/* Only watchpoints write FAR_EL1, otherwise its UNKNOWN */
 	unsigned long far = read_sysreg(far_el1);
 
-	if (system_uses_irq_prio_masking())
-		gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
-
 	enter_from_user_mode();
 	do_debug_exception(far, esr, regs);
 	local_daif_restore(DAIF_PROCCTX_NOIRQ);
@@ -360,9 +349,6 @@ static void noinstr el0_dbg(struct pt_regs *regs, unsigned long esr)
 
 static void noinstr el0_svc(struct pt_regs *regs)
 {
-	if (system_uses_irq_prio_masking())
-		gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
-
 	enter_from_user_mode();
 	do_el0_svc(regs);
 }
@@ -437,9 +423,6 @@ static void noinstr el0_cp15(struct pt_regs *regs, unsigned long esr)
 
 static void noinstr el0_svc_compat(struct pt_regs *regs)
 {
-	if (system_uses_irq_prio_masking())
-		gic_write_pmr(GIC_PRIO_IRQON | GIC_PRIO_PSR_I_SET);
-
 	enter_from_user_mode();
 	do_el0_svc_compat(regs);
 }
arch/arm64/kernel/entry.S +40 -45

128 lines not on this page · raw message

arch/arm64/mm/flush.c +3 -1
index ac485163a4a7..6d44c028d1c9 100644
@@ -55,8 +55,10 @@ void __sync_icache_dcache(pte_t pte)
 {
 	struct page *page = pte_page(pte);
 
-	if (!test_and_set_bit(PG_dcache_clean, &page->flags))
+	if (!test_bit(PG_dcache_clean, &page->flags)) {
 		sync_icache_aliases(page_address(page), page_size(page));
+		set_bit(PG_dcache_clean, &page->flags);
+	}
 }
 EXPORT_SYMBOL_GPL(__sync_icache_dcache);
 
arch/arm64/mm/proc.S +12 -0
index 23c326a06b2d..a14927360be2 100644
@@ -444,6 +444,18 @@ SYM_FUNC_START(__cpu_setup)
 	mov	x10, #(SYS_GCR_EL1_RRND | SYS_GCR_EL1_EXCL_MASK)
 	msr_s	SYS_GCR_EL1, x10
 
+	/*
+	 * If GCR_EL1.RRND=1 is implemented the same way as RRND=0, then
+	 * RGSR_EL1.SEED must be non-zero for IRG to produce
+	 * pseudorandom numbers. As RGSR_EL1 is UNKNOWN out of reset, we
+	 * must initialize it.
+	 */
+	mrs	x10, CNTVCT_EL0
+	ands	x10, x10, #SYS_RGSR_EL1_SEED_MASK
+	csinc	x10, x10, xzr, ne
+	lsl	x10, x10, #SYS_RGSR_EL1_SEED_SHIFT
+	msr_s	SYS_RGSR_EL1, x10
+
 	/* clear any pending tag check faults in TFSR*_EL1 */
 	msr_s	SYS_TFSR_EL1, xzr
 	msr_s	SYS_TFSRE0_EL1, xzr
arch/ia64/include/asm/module.h +5 -1
index 5a29652e6def..7271b9c5fc76 100644
@@ -14,16 +14,20 @@
 struct elf64_shdr;			/* forward declration */
 
 struct mod_arch_specific {
+	/* Used only at module load time. */
 	struct elf64_shdr *core_plt;	/* core PLT section */
 	struct elf64_shdr *init_plt;	/* init PLT section */
 	struct elf64_shdr *got;		/* global offset table */
 	struct elf64_shdr *opd;		/* official procedure descriptors */
 	struct elf64_shdr *unwind;	/* unwind-table section */
 	unsigned long gp;		/* global-pointer for module */
+	unsigned int next_got_entry;	/* index of next available got entry */
 
+	/* Used at module run and cleanup time. */
 	void *core_unw_table;		/* core unwind-table cookie returned by unwinder */
 	void *init_unw_table;		/* init unwind-table cookie returned by unwinder */
-	unsigned int next_got_entry;	/* index of next available got entry */
+	void *opd_addr;			/* symbolize uses .opd to get to actual function */
+	unsigned long opd_size;
 };
 
 #define ARCH_SHF_SMALL	SHF_IA_64_SHORT
arch/ia64/kernel/module.c +25 -4
index 00a496cb346f..2cba53c1da82 100644
@@ -905,9 +905,31 @@ register_unwind_table (struct module *mod)
 int
 module_finalize (const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod)
 {
+	struct mod_arch_specific *mas = &mod->arch;
+
 	DEBUGP("%s: init: entry=%p\n", __func__, mod->init);
-	if (mod->arch.unwind)
+	if (mas->unwind)
 		register_unwind_table(mod);
+
+	/*
+	 * ".opd" was already relocated to the final destination. Store
+	 * it's address for use in symbolizer.
+	 */
+	mas->opd_addr = (void *)mas->opd->sh_addr;
+	mas->opd_size = mas->opd->sh_size;
+
+	/*
+	 * Module relocation was already done at this point. Section
+	 * headers are about to be deleted. Wipe out load-time context.
+	 */
+	mas->core_plt = NULL;
+	mas->init_plt = NULL;
+	mas->got = NULL;
+	mas->opd = NULL;
+	mas->unwind = NULL;
+	mas->gp = 0;
+	mas->next_got_entry = 0;
+
 	return 0;
 }
 
@@ -926,10 +948,9 @@ module_arch_cleanup (struct module *mod)
 
 void *dereference_module_function_descriptor(struct module *mod, void *ptr)
 {
-	Elf64_Shdr *opd = mod->arch.opd;
+	struct mod_arch_specific *mas = &mod->arch;
 
-	if (ptr < (void *)opd->sh_addr ||
-			ptr >= (void *)(opd->sh_addr + opd->sh_size))
+	if (ptr < mas->opd_addr || ptr >= mas->opd_addr + mas->opd_size)
 		return ptr;
 
 	return dereference_function_descriptor(ptr);
arch/mips/include/asm/div64.h +39 -16

87 lines not on this page · raw message

arch/mips/kernel/cpu-probe.c +0 -3
index 31cb9199197c..e6ae2bcdbeda 100644
@@ -1739,7 +1739,6 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
 			set_isa(c, MIPS_CPU_ISA_M64R2);
 			break;
 		}
-		c->writecombine = _CACHE_UNCACHED_ACCELERATED;
 		c->ases |= (MIPS_ASE_LOONGSON_MMI | MIPS_ASE_LOONGSON_EXT |
 				MIPS_ASE_LOONGSON_EXT2);
 		break;
@@ -1769,7 +1768,6 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
 		 * register, we correct it here.
 		 */
 		c->options |= MIPS_CPU_FTLB | MIPS_CPU_TLBINV | MIPS_CPU_LDPTE;
-		c->writecombine = _CACHE_UNCACHED_ACCELERATED;
 		c->ases |= (MIPS_ASE_LOONGSON_MMI | MIPS_ASE_LOONGSON_CAM |
 			MIPS_ASE_LOONGSON_EXT | MIPS_ASE_LOONGSON_EXT2);
 		c->ases &= ~MIPS_ASE_VZ; /* VZ of Loongson-3A2000/3000 is incomplete */
@@ -1780,7 +1778,6 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu)
 		set_elf_platform(cpu, "loongson3a");
 		set_isa(c, MIPS_CPU_ISA_M64R2);
 		decode_cpucfg(c);
-		c->writecombine = _CACHE_UNCACHED_ACCELERATED;
 		break;
 	default:
 		panic("Unknown Loongson Processor ID!");
arch/powerpc/kernel/head_32.h +1 -5
index fef0b34a77c9..f8e3d15ddf69 100644
@@ -338,11 +338,7 @@
 	lis	r1, emergency_ctx@ha
 #endif
 	lwz	r1, emergency_ctx@l(r1)
-	cmpwi	cr1, r1, 0
-	bne	cr1, 1f
-	lis	r1, init_thread_union@ha
-	addi	r1, r1, init_thread_union@l
-1:	addi	r1, r1, THREAD_SIZE - INT_FRAME_SIZE
+	addi	r1, r1, THREAD_SIZE - INT_FRAME_SIZE
 	EXCEPTION_PROLOG_2
 	SAVE_NVGPRS(r11)
 	addi	r3, r1, STACK_FRAME_OVERHEAD
arch/powerpc/kernel/iommu.c +2 -2
index 5b69a6a72a0e..6806eefa52ce 100644
@@ -1050,7 +1050,7 @@ int iommu_take_ownership(struct iommu_table *tbl)
 
 	spin_lock_irqsave(&tbl->large_pool.lock, flags);
 	for (i = 0; i < tbl->nr_pools; i++)
-		spin_lock(&tbl->pools[i].lock);
+		spin_lock_nest_lock(&tbl->pools[i].lock, &tbl->large_pool.lock);
 
 	iommu_table_release_pages(tbl);
 
@@ -1078,7 +1078,7 @@ void iommu_release_ownership(struct iommu_table *tbl)
 
 	spin_lock_irqsave(&tbl->large_pool.lock, flags);
 	for (i = 0; i < tbl->nr_pools; i++)
-		spin_lock(&tbl->pools[i].lock);
+		spin_lock_nest_lock(&tbl->pools[i].lock, &tbl->large_pool.lock);
 
 	memset(tbl->it_map, 0, sz);
 
arch/powerpc/kernel/setup_32.c +1 -1
index 057d6b8e9bb0..e7f2eb7837fc 100644
@@ -164,7 +164,7 @@ void __init irqstack_early_init(void)
 }
 
 #ifdef CONFIG_VMAP_STACK
-void *emergency_ctx[NR_CPUS] __ro_after_init;
+void *emergency_ctx[NR_CPUS] __ro_after_init = {[0] = &init_stack};
 
 void __init emergency_stack_init(void)
 {
arch/powerpc/kernel/smp.c +3 -3
index dd34ea674496..db7ac77bea3a 100644
@@ -1442,6 +1442,9 @@ void start_secondary(void *unused)
 
 	vdso_getcpu_init();
 #endif
+	set_numa_node(numa_cpu_lookup_table[cpu]);
+	set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu]));
+
 	/* Update topology CPU masks */
 	add_cpu_to_masks(cpu);
 
@@ -1460,9 +1463,6 @@ void start_secondary(void *unused)
 			shared_caches = true;
 	}
 
-	set_numa_node(numa_cpu_lookup_table[cpu]);
-	set_numa_mem(local_memory_node(numa_cpu_lookup_table[cpu]));
-
 	smp_wmb();
 	notify_cpu_starting(cpu);
 	set_cpu_online(cpu, true);
arch/powerpc/lib/feature-fixups.c +32 -3
index 92705d6dfb6e..bda150ed33de 100644
@@ -14,6 +14,7 @@
 #include <linux/string.h>
 #include <linux/init.h>
 #include <linux/sched/mm.h>
+#include <linux/stop_machine.h>
 #include <asm/cputable.h>
 #include <asm/code-patching.h>
 #include <asm/page.h>
@@ -227,11 +228,25 @@ static void do_stf_exit_barrier_fixups(enum stf_barrier_type types)
 		                                           : "unknown");
 }
 
+static int __do_stf_barrier_fixups(void *data)
+{
+	enum stf_barrier_type *types = data;
+
+	do_stf_entry_barrier_fixups(*types);
+	do_stf_exit_barrier_fixups(*types);
+
+	return 0;
+}
 
 void do_stf_barrier_fixups(enum stf_barrier_type types)
 {
-	do_stf_entry_barrier_fixups(types);
-	do_stf_exit_barrier_fixups(types);
+	/*
+	 * The call to the fallback entry flush, and the fallback/sync-ori exit
+	 * flush can not be safely patched in/out while other CPUs are executing
+	 * them. So call __do_stf_barrier_fixups() on one CPU while all other CPUs
+	 * spin in the stop machine core with interrupts hard disabled.
+	 */
+	stop_machine(__do_stf_barrier_fixups, &types, NULL);
 }
 
 void do_uaccess_flush_fixups(enum l1d_flush_type types)
@@ -284,8 +299,9 @@ void do_uaccess_flush_fixups(enum l1d_flush_type types)
 						: "unknown");
 }
 
-void do_entry_flush_fixups(enum l1d_flush_type types)
+static int __do_entry_flush_fixups(void *data)
 {
+	enum l1d_flush_type types = *(enum l1d_flush_type *)data;
 	unsigned int instrs[3], *dest;
 	long *start, *end;
 	int i;
@@ -354,6 +370,19 @@ void do_entry_flush_fixups(enum l1d_flush_type types)
 							: "ori type" :
 		(types &  L1D_FLUSH_MTTRIG)     ? "mttrig type"
 						: "unknown");
+
+	return 0;
+}
+
+void do_entry_flush_fixups(enum l1d_flush_type types)
+{
+	/*
+	 * The call to the fallback flush can not be safely patched in/out while
+	 * other CPUs are executing it. So call __do_entry_flush_fixups() on one
+	 * CPU while all other CPUs spin in the stop machine core with interrupts
+	 * hard disabled.
+	 */
+	stop_machine(__do_entry_flush_fixups, &types, NULL);
 }
 
 void do_rfi_flush_fixups(enum l1d_flush_type types)
arch/powerpc/mm/book3s64/hash_utils.c +12 -1
index 24702c0a92e0..0141d571476c 100644
@@ -336,7 +336,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
 int htab_remove_mapping(unsigned long vstart, unsigned long vend,
 		      int psize, int ssize)
 {
-	unsigned long vaddr;
+	unsigned long vaddr, time_limit;
 	unsigned int step, shift;
 	int rc;
 	int ret = 0;
@@ -349,8 +349,19 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,
 
 	/* Unmap the full range specificied */
 	vaddr = ALIGN_DOWN(vstart, step);
+	time_limit = jiffies + HZ;
+
 	for (;vaddr < vend; vaddr += step) {
 		rc = mmu_hash_ops.hpte_removebolted(vaddr, psize, ssize);
+
+		/*
+		 * For large number of mappings introduce a cond_resched()
+		 * to prevent softlockup warnings.
+		 */
+		if (time_after(jiffies, time_limit)) {
+			cond_resched();
+			time_limit = jiffies + HZ;
+		}
 		if (rc == -ENOENT) {
 			ret = -ENOENT;
 			continue;
arch/powerpc/platforms/pseries/hotplug-cpu.c +0 -3
index 12cbffd3c2e3..325f3b220f36 100644
@@ -47,9 +47,6 @@ static void rtas_stop_self(void)
 
 	BUG_ON(rtas_stop_self_token == RTAS_UNKNOWN_SERVICE);
 
-	printk("cpu %u (hwid %u) Ready to die...\n",
-	       smp_processor_id(), hard_smp_processor_id());
-
 	rtas_call_unlocked(&args, rtas_stop_self_token, 0, 1, NULL);
 
 	panic("Alas, I survived.\n");
arch/riscv/kernel/smp.c +1 -1
index ea028d9e0d24..d44567490d91 100644
@@ -54,7 +54,7 @@ int riscv_hartid_to_cpuid(int hartid)
 			return i;
 
 	pr_err("Couldn't find cpu id for hartid [%d]\n", hartid);
-	return i;
+	return -ENOENT;
 }
 
 void riscv_cpuid_to_hartid_mask(const struct cpumask *in, struct cpumask *out)
arch/x86/include/asm/idtentry.h +15 -0
index f656aabd1545..0e3325790f3a 100644
@@ -588,6 +588,21 @@ DECLARE_IDTENTRY_RAW(X86_TRAP_MC,	exc_machine_check);
 #endif
 
 /* NMI */
+
+#if defined(CONFIG_X86_64) && IS_ENABLED(CONFIG_KVM_INTEL)
+/*
+ * Special NOIST entry point for VMX which invokes this on the kernel
+ * stack. asm_exc_nmi() requires an IST to work correctly vs. the NMI
+ * 'executing' marker.
+ *
+ * On 32bit this just uses the regular NMI entry point because 32-bit does
+ * not have ISTs.
+ */
+DECLARE_IDTENTRY(X86_TRAP_NMI,		exc_nmi_noist);
+#else
+#define asm_exc_nmi_noist		asm_exc_nmi
+#endif
+
 DECLARE_IDTENTRY_NMI(X86_TRAP_NMI,	exc_nmi);
 #ifdef CONFIG_XEN_PV
 DECLARE_IDTENTRY_RAW(X86_TRAP_NMI,	xenpv_exc_nmi);
arch/x86/include/asm/kvm_host.h +1 -3
index 02d4c74d30e2..ef56780022c3 100644
@@ -358,8 +358,6 @@ struct kvm_mmu {
 	int (*sync_page)(struct kvm_vcpu *vcpu,
 			 struct kvm_mmu_page *sp);
 	void (*invlpg)(struct kvm_vcpu *vcpu, gva_t gva, hpa_t root_hpa);
-	void (*update_pte)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,
-			   u64 *spte, const void *pte);
 	hpa_t root_hpa;
 	gpa_t root_pgd;
 	union kvm_mmu_role mmu_role;
@@ -1019,7 +1017,6 @@ struct kvm_arch {
 struct kvm_vm_stat {
 	ulong mmu_shadow_zapped;
 	ulong mmu_pte_write;
-	ulong mmu_pte_updated;
 	ulong mmu_pde_zapped;
 	ulong mmu_flooded;
 	ulong mmu_recycled;
@@ -1671,6 +1668,7 @@ int kvm_pv_send_ipi(struct kvm *kvm, unsigned long ipi_bitmap_low,
 		    unsigned long icr, int op_64_bit);
 
 void kvm_define_user_return_msr(unsigned index, u32 msr);
+int kvm_probe_user_return_msr(u32 msr);
 int kvm_set_user_return_msr(unsigned index, u64 val, u64 mask);
 
 u64 kvm_scale_tsc(struct kvm_vcpu *vcpu, u64 tsc);
arch/x86/kernel/nmi.c +10 -0
index bf250a339655..2ef961cf4cfc 100644
@@ -524,6 +524,16 @@ DEFINE_IDTENTRY_RAW(exc_nmi)
 		mds_user_clear_cpu_buffers();
 }
 
+#if defined(CONFIG_X86_64) && IS_ENABLED(CONFIG_KVM_INTEL)
+DEFINE_IDTENTRY_RAW(exc_nmi_noist)
+{
+	exc_nmi(regs);
+}
+#endif
+#if IS_MODULE(CONFIG_KVM_INTEL)
+EXPORT_SYMBOL_GPL(asm_exc_nmi_noist);
+#endif
+
 void stop_nmi(void)
 {
 	ignore_nmis++;
arch/x86/kvm/cpuid.c +2 -1
index 62157b1000f0..56a62d555e92 100644
@@ -572,7 +572,8 @@ static int __do_cpuid_func_emulated(struct kvm_cpuid_array *array, u32 func)
 	case 7:
 		entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
 		entry->eax = 0;
-		entry->ecx = F(RDPID);
+		if (kvm_cpu_cap_has(X86_FEATURE_RDTSCP))
+			entry->ecx = F(RDPID);
 		++array->nent;
 	default:
 		break;
arch/x86/kvm/emulate.c +1 -1
index d3f2b6316745..e82151ba95c0 100644
@@ -4502,7 +4502,7 @@ static const struct opcode group8[] = {
  * from the register case of group9.
  */
 static const struct gprefix pfx_0f_c7_7 = {
-	N, N, N, II(DstMem | ModRM | Op3264 | EmulateOnUD, em_rdpid, rdtscp),
+	N, N, N, II(DstMem | ModRM | Op3264 | EmulateOnUD, em_rdpid, rdpid),
 };
 
 
arch/x86/kvm/kvm_emulate.h +1 -0
index 43c93ffa76ed..7d5be04dc661 100644
@@ -468,6 +468,7 @@ enum x86_intercept {
 	x86_intercept_clgi,
 	x86_intercept_skinit,
 	x86_intercept_rdtscp,
+	x86_intercept_rdpid,
 	x86_intercept_icebp,
 	x86_intercept_wbinvd,
 	x86_intercept_monitor,
arch/x86/kvm/lapic.c +1 -1
index 4ca81ae9bc8a..5759eb075d2f 100644
@@ -1908,8 +1908,8 @@ void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
 	if (!apic->lapic_timer.hv_timer_in_use)
 		goto out;
 	WARN_ON(rcuwait_active(&vcpu->wait));
-	cancel_hv_timer(apic);
 	apic_timer_expired(apic, false);
+	cancel_hv_timer(apic);
 
 	if (apic_lvtt_period(apic) && apic->lapic_timer.period) {
 		advance_periodic_target_expiration(apic);
arch/x86/kvm/mmu/mmu.c +2 -47

105 lines not on this page · raw message

arch/x86/kvm/vmx/nested.c +19 -10
index e8882715735a..32e6f33c2c45 100644
@@ -3139,15 +3139,8 @@ static bool nested_get_evmcs_page(struct kvm_vcpu *vcpu)
 			nested_vmx_handle_enlightened_vmptrld(vcpu, false);
 
 		if (evmptrld_status == EVMPTRLD_VMFAIL ||
-		    evmptrld_status == EVMPTRLD_ERROR) {
-			pr_debug_ratelimited("%s: enlightened vmptrld failed\n",
-					     __func__);
-			vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
-			vcpu->run->internal.suberror =
-				KVM_INTERNAL_ERROR_EMULATION;
-			vcpu->run->internal.ndata = 0;
+		    evmptrld_status == EVMPTRLD_ERROR)
 			return false;
-		}
 	}
 
 	return true;
@@ -3235,8 +3228,16 @@ static bool nested_get_vmcs12_pages(struct kvm_vcpu *vcpu)
 
 static bool vmx_get_nested_state_pages(struct kvm_vcpu *vcpu)
 {
-	if (!nested_get_evmcs_page(vcpu))
+	if (!nested_get_evmcs_page(vcpu)) {
+		pr_debug_ratelimited("%s: enlightened vmptrld failed\n",
+				     __func__);
+		vcpu->run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
+		vcpu->run->internal.suberror =
+			KVM_INTERNAL_ERROR_EMULATION;
+		vcpu->run->internal.ndata = 0;
+
 		return false;
+	}
 
 	if (is_guest_mode(vcpu) && !nested_get_vmcs12_pages(vcpu))
 		return false;
@@ -4441,7 +4442,15 @@ void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 vm_exit_reason,
 	/* trying to cancel vmlaunch/vmresume is a bug */
 	WARN_ON_ONCE(vmx->nested.nested_run_pending);
 
-	kvm_clear_request(KVM_REQ_GET_NESTED_STATE_PAGES, vcpu);
+	if (kvm_check_request(KVM_REQ_GET_NESTED_STATE_PAGES, vcpu)) {
+		/*
+		 * KVM_REQ_GET_NESTED_STATE_PAGES is also used to map
+		 * Enlightened VMCS after migration and we still need to
+		 * do that when something is forcing L2->L1 exit prior to
+		 * the first L2 run.
+		 */
+		(void)nested_get_evmcs_page(vcpu);
+	}
 
 	/* Service the TLB flush request for L2 before switching to L1. */
 	if (kvm_check_request(KVM_REQ_TLB_FLUSH_CURRENT, vcpu))
arch/x86/kvm/vmx/vmx.c +16 -14
index fca4f452827b..d7f8d2167fda 100644
@@ -36,6 +36,7 @@
 #include <asm/debugreg.h>
 #include <asm/desc.h>
 #include <asm/fpu/internal.h>
+#include <asm/idtentry.h>
 #include <asm/io.h>
 #include <asm/irq_remapping.h>
 #include <asm/kexec.h>
@@ -6354,18 +6355,17 @@ static void vmx_apicv_post_state_restore(struct kvm_vcpu *vcpu)
 
 void vmx_do_interrupt_nmi_irqoff(unsigned long entry);
 
-static void handle_interrupt_nmi_irqoff(struct kvm_vcpu *vcpu, u32 intr_info)
+static void handle_interrupt_nmi_irqoff(struct kvm_vcpu *vcpu,
+					unsigned long entry)
 {
-	unsigned int vector = intr_info & INTR_INFO_VECTOR_MASK;
-	gate_desc *desc = (gate_desc *)host_idt_base + vector;
-
 	kvm_before_interrupt(vcpu);
-	vmx_do_interrupt_nmi_irqoff(gate_offset(desc));
+	vmx_do_interrupt_nmi_irqoff(entry);
 	kvm_after_interrupt(vcpu);
 }
 
 static void handle_exception_nmi_irqoff(struct vcpu_vmx *vmx)
 {
+	const unsigned long nmi_entry = (unsigned long)asm_exc_nmi_noist;
 	u32 intr_info = vmx_get_intr_info(&vmx->vcpu);
 
 	/* if exit due to PF check for async PF */
@@ -6376,18 +6376,20 @@ static void handle_exception_nmi_irqoff(struct vcpu_vmx *vmx)
 		kvm_machine_check();
 	/* We need to handle NMIs before interrupts are enabled */
 	else if (is_nmi(intr_info))
-		handle_interrupt_nmi_irqoff(&vmx->vcpu, intr_info);
+		handle_interrupt_nmi_irqoff(&vmx->vcpu, nmi_entry);
 }
 
 static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu)
 {
 	u32 intr_info = vmx_get_intr_info(vcpu);
+	unsigned int vector = intr_info & INTR_INFO_VECTOR_MASK;
+	gate_desc *desc = (gate_desc *)host_idt_base + vector;
 
 	if (WARN_ONCE(!is_external_intr(intr_info),
 	    "KVM: unexpected VM-Exit interrupt info: 0x%x", intr_info))
 		return;
 
-	handle_interrupt_nmi_irqoff(vcpu, intr_info);
+	handle_interrupt_nmi_irqoff(vcpu, gate_offset(desc));
 }
 
 static void vmx_handle_exit_irqoff(struct kvm_vcpu *vcpu)
@@ -6862,12 +6864,9 @@ static int vmx_create_vcpu(struct kvm_vcpu *vcpu)
 
 	for (i = 0; i < ARRAY_SIZE(vmx_uret_msrs_list); ++i) {
 		u32 index = vmx_uret_msrs_list[i];
-		u32 data_low, data_high;
 		int j = vmx->nr_uret_msrs;
 
-		if (rdmsr_safe(index, &data_low, &data_high) < 0)
-			continue;
-		if (wrmsr_safe(index, data_low, data_high) < 0)
+		if (kvm_probe_user_return_msr(index))
 			continue;
 
 		vmx->guest_uret_msrs[j].slot = i;
@@ -7300,9 +7299,11 @@ static __init void vmx_set_cpu_caps(void)
 	if (!cpu_has_vmx_xsaves())
 		kvm_cpu_cap_clear(X86_FEATURE_XSAVES);
 
-	/* CPUID 0x80000001 */
-	if (!cpu_has_vmx_rdtscp())
+	/* CPUID 0x80000001 and 0x7 (RDPID) */
+	if (!cpu_has_vmx_rdtscp()) {
 		kvm_cpu_cap_clear(X86_FEATURE_RDTSCP);
+		kvm_cpu_cap_clear(X86_FEATURE_RDPID);
+	}
 
 	if (cpu_has_vmx_waitpkg())
 		kvm_cpu_cap_check_and_set(X86_FEATURE_WAITPKG);
@@ -7358,8 +7359,9 @@ static int vmx_check_intercept(struct kvm_vcpu *vcpu,
 	/*
 	 * RDPID causes #UD if disabled through secondary execution controls.
 	 * Because it is marked as EmulateOnUD, we need to intercept it here.
+	 * Note, RDPID is hidden behind ENABLE_RDTSCP.
 	 */
-	case x86_intercept_rdtscp:
+	case x86_intercept_rdpid:
 		if (!nested_cpu_has2(vmcs12, SECONDARY_EXEC_ENABLE_RDTSCP)) {
 			exception->vector = UD_VECTOR;
 			exception->error_code_valid = false;
arch/x86/kvm/x86.c +35 -5
index 0a5dd7568ebc..c071a83d543a 100644
@@ -233,7 +233,6 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
 	VCPU_STAT("halt_poll_fail_ns", halt_poll_fail_ns),
 	VM_STAT("mmu_shadow_zapped", mmu_shadow_zapped),
 	VM_STAT("mmu_pte_write", mmu_pte_write),
-	VM_STAT("mmu_pte_updated", mmu_pte_updated),
 	VM_STAT("mmu_pde_zapped", mmu_pde_zapped),
 	VM_STAT("mmu_flooded", mmu_flooded),
 	VM_STAT("mmu_recycled", mmu_recycled),
@@ -323,6 +322,22 @@ static void kvm_on_user_return(struct user_return_notifier *urn)
 	}
 }
 
+int kvm_probe_user_return_msr(u32 msr)
+{
+	u64 val;
+	int ret;
+
+	preempt_disable();
+	ret = rdmsrl_safe(msr, &val);
+	if (ret)
+		goto out;
+	ret = wrmsrl_safe(msr, val);
+out:
+	preempt_enable();
+	return ret;
+}
+EXPORT_SYMBOL_GPL(kvm_probe_user_return_msr);
+
 void kvm_define_user_return_msr(unsigned slot, u32 msr)
 {
 	BUG_ON(slot >= KVM_MAX_NR_USER_RETURN_MSRS);
@@ -7849,6 +7864,18 @@ static void pvclock_gtod_update_fn(struct work_struct *work)
 
 static DECLARE_WORK(pvclock_gtod_work, pvclock_gtod_update_fn);
 
+/*
+ * Indirection to move queue_work() out of the tk_core.seq write held
+ * region to prevent possible deadlocks against time accessors which
+ * are invoked with work related locks held.
+ */
+static void pvclock_irq_work_fn(struct irq_work *w)
+{
+	queue_work(system_long_wq, &pvclock_gtod_work);
+}
+
+static DEFINE_IRQ_WORK(pvclock_irq_work, pvclock_irq_work_fn);
+
 /*
  * Notification about pvclock gtod data update.
  */
@@ -7860,13 +7887,14 @@ static int pvclock_gtod_notify(struct notifier_block *nb, unsigned long unused,
 
 	update_pvclock_gtod(tk);
 
-	/* disable master clock if host does not trust, or does not
-	 * use, TSC based clocksource.
+	/*
+	 * Disable master clock if host does not trust, or does not use,
+	 * TSC based clocksource. Delegate queue_work() to irq_work as
+	 * this is invoked with tk_core.seq write held.
 	 */
 	if (!gtod_is_based_on_tsc(gtod->clock.vclock_mode) &&
 	    atomic_read(&kvm_guest_has_master_clock) != 0)
-		queue_work(system_long_wq, &pvclock_gtod_work);
-
+		irq_work_queue(&pvclock_irq_work);
 	return 0;
 }
 
@@ -7982,6 +8010,8 @@ void kvm_arch_exit(void)
 	cpuhp_remove_state_nocalls(CPUHP_AP_X86_KVM_CLK_ONLINE);
 #ifdef CONFIG_X86_64
 	pvclock_gtod_unregister_notifier(&pvclock_gtod_notifier);
+	irq_work_sync(&pvclock_irq_work);
+	cancel_work_sync(&pvclock_gtod_work);
 #endif
 	kvm_x86_ops.hardware_enable = NULL;
 	kvm_mmu_module_exit();
block/bfq-iosched.c +1 -2
index 5720978e4d09..c91dca641eb4 100644
@@ -2210,10 +2210,9 @@ static void bfq_remove_request(struct request_queue *q,
 
 }
 
-static bool bfq_bio_merge(struct blk_mq_hw_ctx *hctx, struct bio *bio,
+static bool bfq_bio_merge(struct request_queue *q, struct bio *bio,
 		unsigned int nr_segs)
 {
-	struct request_queue *q = hctx->queue;
 	struct bfq_data *bfqd = q->elevator->elevator_data;
 	struct request *free = NULL;
 	/*
block/blk-iocost.c +12 -2
index 7e963b457f2e..aaae531135aa 100644
@@ -1023,7 +1023,17 @@ static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
 
 	lockdep_assert_held(&ioc->lock);
 
-	inuse = clamp_t(u32, inuse, 1, active);
+	/*
+	 * For an active leaf node, its inuse shouldn't be zero or exceed
+	 * @active. An active internal node's inuse is solely determined by the
+	 * inuse to active ratio of its children regardless of @inuse.
+	 */
+	if (list_empty(&iocg->active_list) && iocg->child_active_sum) {
+		inuse = DIV64_U64_ROUND_UP(active * iocg->child_inuse_sum,
+					   iocg->child_active_sum);
+	} else {
+		inuse = clamp_t(u32, inuse, 1, active);
+	}
 
 	iocg->last_inuse = iocg->inuse;
 	if (save)
@@ -1040,7 +1050,7 @@ static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
 		/* update the level sums */
 		parent->child_active_sum += (s32)(active - child->active);
 		parent->child_inuse_sum += (s32)(inuse - child->inuse);
-		/* apply the udpates */
+		/* apply the updates */
 		child->active = active;
 		child->inuse = inuse;
 
block/blk-mq-sched.c +5 -3
index d1eafe2c045c..581be65a53c1 100644
@@ -348,14 +348,16 @@ bool __blk_mq_sched_bio_merge(struct request_queue *q, struct bio *bio,
 		unsigned int nr_segs)
 {
 	struct elevator_queue *e = q->elevator;
-	struct blk_mq_ctx *ctx = blk_mq_get_ctx(q);
-	struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, bio->bi_opf, ctx);
+	struct blk_mq_ctx *ctx;
+	struct blk_mq_hw_ctx *hctx;
 	bool ret = false;
 	enum hctx_type type;
 
 	if (e && e->type->ops.bio_merge)
-		return e->type->ops.bio_merge(hctx, bio, nr_segs);
+		return e->type->ops.bio_merge(q, bio, nr_segs);
 
+	ctx = blk_mq_get_ctx(q);
+	hctx = blk_mq_map_queue(q, bio->bi_opf, ctx);
 	type = hctx->type;
 	if (!(hctx->flags & BLK_MQ_F_SHOULD_MERGE) ||
 	    list_empty_careful(&ctx->rq_lists[type]))
block/blk-mq.c +7 -4
index 2a1eff60c797..4bf9449b4586 100644
@@ -2203,8 +2203,9 @@ blk_qc_t blk_mq_submit_bio(struct bio *bio)
 		/* Bypass scheduler for flush requests */
 		blk_insert_flush(rq);
 		blk_mq_run_hw_queue(data.hctx, true);
-	} else if (plug && (q->nr_hw_queues == 1 || q->mq_ops->commit_rqs ||
-				!blk_queue_nonrot(q))) {
+	} else if (plug && (q->nr_hw_queues == 1 ||
+		   blk_mq_is_sbitmap_shared(rq->mq_hctx->flags) ||
+		   q->mq_ops->commit_rqs || !blk_queue_nonrot(q))) {
 		/*
 		 * Use plugging if we have a ->commit_rqs() hook as well, as
 		 * we know the driver uses bd->last in a smart fashion.
@@ -3255,10 +3256,12 @@ EXPORT_SYMBOL(blk_mq_init_allocated_queue);
 /* tags can _not_ be used after returning from blk_mq_exit_queue */
 void blk_mq_exit_queue(struct request_queue *q)
 {
-	struct blk_mq_tag_set	*set = q->tag_set;
+	struct blk_mq_tag_set *set = q->tag_set;
 
-	blk_mq_del_queue_tag_set(q);
+	/* Checks hctx->flags & BLK_MQ_F_TAG_QUEUE_SHARED. */
 	blk_mq_exit_hw_queues(q, set, set->nr_hw_queues);
+	/* May clear BLK_MQ_F_TAG_QUEUE_SHARED in hctx->flags. */
+	blk_mq_del_queue_tag_set(q);
 }
 
 static int __blk_mq_alloc_rq_maps(struct blk_mq_tag_set *set)
block/kyber-iosched.c +3 -2
index dc89199bc8c6..7f9ef773bf44 100644
@@ -562,11 +562,12 @@ static void kyber_limit_depth(unsigned int op, struct blk_mq_alloc_data *data)
 	}
 }
 
-static bool kyber_bio_merge(struct blk_mq_hw_ctx *hctx, struct bio *bio,
+static bool kyber_bio_merge(struct request_queue *q, struct bio *bio,
 		unsigned int nr_segs)
 {
+	struct blk_mq_ctx *ctx = blk_mq_get_ctx(q);
+	struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, bio->bi_opf, ctx);
 	struct kyber_hctx_data *khd = hctx->sched_data;
-	struct blk_mq_ctx *ctx = blk_mq_get_ctx(hctx->queue);
 	struct kyber_ctx_queue *kcq = &khd->kcqs[ctx->index_hw[hctx->type]];
 	unsigned int sched_domain = kyber_sched_domain(bio->bi_opf);
 	struct list_head *rq_list = &kcq->rq_list[sched_domain];
block/mq-deadline.c +1 -2
index 800ac902809b..2b9635d0dcba 100644
@@ -461,10 +461,9 @@ static int dd_request_merge(struct request_queue *q, struct request **rq,
 	return ELEVATOR_NO_MERGE;
 }
 
-static bool dd_bio_merge(struct blk_mq_hw_ctx *hctx, struct bio *bio,
+static bool dd_bio_merge(struct request_queue *q, struct bio *bio,
 		unsigned int nr_segs)
 {
-	struct request_queue *q = hctx->queue;
 	struct deadline_data *dd = q->elevator->elevator_data;
 	struct request *free = NULL;
 	bool ret;
drivers/acpi/device_pm.c +1 -0
index ef77dbcaf58f..48ff6821a83d 100644
@@ -1301,6 +1301,7 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
 		{"PNP0C0B", }, /* Generic ACPI fan */
 		{"INT3404", }, /* Fan */
 		{"INTC1044", }, /* Fan for Tiger Lake generation */
+		{"INTC1048", }, /* Fan for Alder Lake generation */
 		{}
 	};
 	struct acpi_device *adev = ACPI_COMPANION(dev);
drivers/acpi/scan.c +1 -0
index b47f14ac75ae..de0533bd4e08 100644
@@ -705,6 +705,7 @@ int acpi_device_add(struct acpi_device *device,
 
 		result = acpi_device_set_name(device, acpi_device_bus_id);
 		if (result) {
+			kfree_const(acpi_device_bus_id->bus_id);
 			kfree(acpi_device_bus_id);
 			goto err_unlock;
 		}
drivers/base/power/runtime.c +7 -3
index d6d73ff94e88..bc649da4899a 100644
@@ -1637,6 +1637,7 @@ void pm_runtime_init(struct device *dev)
 	dev->power.request_pending = false;
 	dev->power.request = RPM_REQ_NONE;
 	dev->power.deferred_resume = false;
+	dev->power.needs_force_resume = 0;
 	INIT_WORK(&dev->power.work, pm_runtime_work);
 
 	dev->power.timer_expires = 0;
@@ -1804,10 +1805,12 @@ int pm_runtime_force_suspend(struct device *dev)
 	 * its parent, but set its status to RPM_SUSPENDED anyway in case this
 	 * function will be called again for it in the meantime.
 	 */
-	if (pm_runtime_need_not_resume(dev))
+	if (pm_runtime_need_not_resume(dev)) {
 		pm_runtime_set_suspended(dev);
-	else
+	} else {
 		__update_runtime_status(dev, RPM_SUSPENDED);
+		dev->power.needs_force_resume = 1;
+	}
 
 	return 0;
 
@@ -1834,7 +1837,7 @@ int pm_runtime_force_resume(struct device *dev)
 	int (*callback)(struct device *);
 	int ret = 0;
 
-	if (!pm_runtime_status_suspended(dev) || pm_runtime_need_not_resume(dev))
+	if (!pm_runtime_status_suspended(dev) || !dev->power.needs_force_resume)
 		goto out;
 
 	/*
@@ -1853,6 +1856,7 @@ int pm_runtime_force_resume(struct device *dev)
 
 	pm_runtime_mark_last_busy(dev);
 out:
+	dev->power.needs_force_resume = 0;
 	pm_runtime_enable(dev);
 	return ret;
 }
drivers/block/nbd.c +2 -1
index 5e45eddbe2ab..9a70eab7edbf 100644
@@ -2031,7 +2031,8 @@ static void nbd_disconnect_and_put(struct nbd_device *nbd)
 	 * config ref and try to destroy the workqueue from inside the work
 	 * queue.
 	 */
-	flush_workqueue(nbd->recv_workq);
+	if (nbd->recv_workq)
+		flush_workqueue(nbd->recv_workq);
 	if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF,
 			       &nbd->config->runtime_flags))
 		nbd_config_put(nbd);
drivers/block/rnbd/rnbd-clt.c +10 -2
index ba334fe7626d..71b86fee81c2 100644
@@ -679,7 +679,11 @@ static void remap_devs(struct rnbd_clt_session *sess)
 		return;
 	}
 
-	rtrs_clt_query(sess->rtrs, &attrs);
+	err = rtrs_clt_query(sess->rtrs, &attrs);
+	if (err) {
+		pr_err("rtrs_clt_query(\"%s\"): %d\n", sess->sessname, err);
+		return;
+	}
 	mutex_lock(&sess->lock);
 	sess->max_io_size = attrs.max_io_size;
 
@@ -1211,7 +1215,11 @@ find_and_get_or_create_sess(const char *sessname,
 		err = PTR_ERR(sess->rtrs);
 		goto wake_up_and_put;
 	}
-	rtrs_clt_query(sess->rtrs, &attrs);
+
+	err = rtrs_clt_query(sess->rtrs, &attrs);
+	if (err)
+		goto close_rtrs;
+
 	sess->max_io_size = attrs.max_io_size;
 	sess->queue_depth = attrs.queue_depth;
 
drivers/block/rnbd/rnbd-clt.h +1 -1
index b193d5904050..2941e3862b9c 100644
@@ -79,7 +79,7 @@ struct rnbd_clt_session {
 	DECLARE_BITMAP(cpu_queues_bm, NR_CPUS);
 	int	__percpu	*cpu_rr; /* per-cpu var for CPU round-robin */
 	atomic_t		busy;
-	int			queue_depth;
+	size_t			queue_depth;
 	u32			max_io_size;
 	struct blk_mq_tag_set	tag_set;
 	struct mutex		lock; /* protects state and devs_list */
drivers/bluetooth/btusb.c +3 -1
index 2953b96b3ced..175cb1c0d569 100644
@@ -392,7 +392,9 @@ static const struct usb_device_id blacklist_table[] = {
 
 	/* MediaTek Bluetooth devices */
 	{ USB_VENDOR_AND_INTERFACE_INFO(0x0e8d, 0xe0, 0x01, 0x01),
-	  .driver_info = BTUSB_MEDIATEK },
+	  .driver_info = BTUSB_MEDIATEK |
+			 BTUSB_WIDEBAND_SPEECH |
+			 BTUSB_VALID_LE_STATES },
 
 	/* Additional Realtek 8723AE Bluetooth devices */
 	{ USB_DEVICE(0x0930, 0x021d), .driver_info = BTUSB_REALTEK },
drivers/char/tpm/tpm2-cmd.c +1 -0
index eff1f12d981a..c84d23951219 100644
@@ -656,6 +656,7 @@ int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip)
 
 	if (nr_commands !=
 	    be32_to_cpup((__be32 *)&buf.data[TPM_HEADER_SIZE + 5])) {
+		rc = -EFAULT;
 		tpm_buf_destroy(&buf);
 		goto out;
 	}
drivers/char/tpm/tpm_tis_core.c +14 -8
index a2e0395cbe61..55b9d3965ae1 100644
@@ -709,16 +709,14 @@ static int tpm_tis_gen_interrupt(struct tpm_chip *chip)
 	cap_t cap;
 	int ret;
 
-	/* TPM 2.0 */
-	if (chip->flags & TPM_CHIP_FLAG_TPM2)
-		return tpm2_get_tpm_pt(chip, 0x100, &cap2, desc);
-
-	/* TPM 1.2 */
 	ret = request_locality(chip, 0);
 	if (ret < 0)
 		return ret;
 
-	ret = tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, 0);
+	if (chip->flags & TPM_CHIP_FLAG_TPM2)
+		ret = tpm2_get_tpm_pt(chip, 0x100, &cap2, desc);
+	else
+		ret = tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, 0);
 
 	release_locality(chip, 0);
 
@@ -1127,12 +1125,20 @@ int tpm_tis_resume(struct device *dev)
 	if (ret)
 		return ret;
 
-	/* TPM 1.2 requires self-test on resume. This function actually returns
+	/*
+	 * TPM 1.2 requires self-test on resume. This function actually returns
 	 * an error code but for unknown reason it isn't handled.
 	 */
-	if (!(chip->flags & TPM_CHIP_FLAG_TPM2))
+	if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
+		ret = request_locality(chip, 0);
+		if (ret < 0)
+			return ret;
+
 		tpm1_do_selftest(chip);
 
+		release_locality(chip, 0);
+	}
+
 	return 0;
 }
 EXPORT_SYMBOL_GPL(tpm_tis_resume);
drivers/clk/samsung/clk-exynos7.c +6 -1
index 87ee1bad9a9a..4a5d2a914bd6 100644
@@ -537,8 +537,13 @@ static const struct samsung_gate_clock top1_gate_clks[] __initconst = {
 	GATE(CLK_ACLK_FSYS0_200, "aclk_fsys0_200", "dout_aclk_fsys0_200",
 		ENABLE_ACLK_TOP13, 28, CLK_SET_RATE_PARENT |
 		CLK_IS_CRITICAL, 0),
+	/*
+	 * This clock is required for the CMU_FSYS1 registers access, keep it
+	 * enabled permanently until proper runtime PM support is added.
+	 */
 	GATE(CLK_ACLK_FSYS1_200, "aclk_fsys1_200", "dout_aclk_fsys1_200",
-		ENABLE_ACLK_TOP13, 24, CLK_SET_RATE_PARENT, 0),
+		ENABLE_ACLK_TOP13, 24, CLK_SET_RATE_PARENT |
+		CLK_IS_CRITICAL, 0),
 
 	GATE(CLK_SCLK_PHY_FSYS1_26M, "sclk_phy_fsys1_26m",
 		"dout_sclk_phy_fsys1_26m", ENABLE_SCLK_TOP1_FSYS11,
drivers/clocksource/timer-ti-dm-systimer.c +120 -24

212 lines not on this page · raw message

drivers/cpufreq/intel_pstate.c +13 -1
index c8ae8554f4c9..44a5d15a7572 100644
@@ -3019,6 +3019,14 @@ static const struct x86_cpu_id hwp_support_ids[] __initconst = {
 	{}
 };
 
+static bool intel_pstate_hwp_is_enabled(void)
+{
+	u64 value;
+
+	rdmsrl(MSR_PM_ENABLE, value);
+	return !!(value & 0x1);
+}
+
 static int __init intel_pstate_init(void)
 {
 	const struct x86_cpu_id *id;
@@ -3037,8 +3045,12 @@ static int __init intel_pstate_init(void)
 		 * Avoid enabling HWP for processors without EPP support,
 		 * because that means incomplete HWP implementation which is a
 		 * corner case and supporting it is generally problematic.
+		 *
+		 * If HWP is enabled already, though, there is no choice but to
+		 * deal with it.
 		 */
-		if (!no_hwp && boot_cpu_has(X86_FEATURE_HWP_EPP)) {
+		if ((!no_hwp && boot_cpu_has(X86_FEATURE_HWP_EPP)) ||
+		    intel_pstate_hwp_is_enabled()) {
 			hwp_active++;
 			hwp_mode_bdw = id->driver_data;
 			intel_pstate.attr = hwp_cpufreq_attrs;
drivers/crypto/ccp/sev-dev.c +3 -1
index 5b82ba7acc7c..21caed429cc5 100644
@@ -989,7 +989,7 @@ int sev_dev_init(struct psp_device *psp)
 	if (!sev->vdata) {
 		ret = -ENODEV;
 		dev_err(dev, "sev: missing driver data\n");
-		goto e_err;
+		goto e_sev;
 	}
 
 	psp_set_sev_irq_handler(psp, sev_irq_handler, sev);
@@ -1004,6 +1004,8 @@ int sev_dev_init(struct psp_device *psp)
 
 e_irq:
 	psp_clear_sev_irq_handler(psp);
+e_sev:
+	devm_kfree(dev, sev);
 e_err:
 	psp->sev_data = NULL;
 
drivers/dma/idxd/cdev.c +47 -82

185 lines not on this page · raw message

drivers/dma/idxd/device.c +2 -3
index 459e9fbc2253..47aae5fe8273 100644
@@ -169,8 +169,6 @@ int idxd_wq_alloc_resources(struct idxd_wq *wq)
 		desc->id = i;
 		desc->wq = wq;
 		desc->cpu = -1;
-		dma_async_tx_descriptor_init(&desc->txd, &wq->dma_chan);
-		desc->txd.tx_submit = idxd_dma_tx_submit;
 	}
 
 	return 0;
@@ -378,7 +376,8 @@ static void idxd_cmd_exec(struct idxd_device *idxd, int cmd_code, u32 operand,
 
 	if (idxd_device_is_halted(idxd)) {
 		dev_warn(&idxd->pdev->dev, "Device is HALTED!\n");
-		*status = IDXD_CMDSTS_HW_ERR;
+		if (status)
+			*status = IDXD_CMDSTS_HW_ERR;
 		return;
 	}
 
drivers/dma/idxd/dma.c +64 -13

127 lines not on this page · raw message

drivers/dma/idxd/idxd.h +19 -6
index 1d7849cb9100..eef6996ecc59 100644
@@ -14,6 +14,9 @@
 
 extern struct kmem_cache *idxd_desc_pool;
 
+struct idxd_device;
+struct idxd_wq;
+
 #define IDXD_REG_TIMEOUT	50
 #define IDXD_DRAIN_TIMEOUT	5000
 
@@ -68,10 +71,10 @@ enum idxd_wq_type {
 };
 
 struct idxd_cdev {
+	struct idxd_wq *wq;
 	struct cdev cdev;
-	struct device *dev;
+	struct device dev;
 	int minor;
-	struct wait_queue_head err_queue;
 };
 
 #define IDXD_ALLOCATED_BATCH_SIZE	128U
@@ -88,10 +91,16 @@ enum idxd_complete_type {
 	IDXD_COMPLETE_ABORT,
 };
 
+struct idxd_dma_chan {
+	struct dma_chan chan;
+	struct idxd_wq *wq;
+};
+
 struct idxd_wq {
 	void __iomem *dportal;
 	struct device conf_dev;
-	struct idxd_cdev idxd_cdev;
+	struct idxd_cdev *idxd_cdev;
+	struct wait_queue_head err_queue;
 	struct idxd_device *idxd;
 	int id;
 	enum idxd_wq_type type;
@@ -112,7 +121,7 @@ struct idxd_wq {
 	int compls_size;
 	struct idxd_desc **descs;
 	struct sbitmap_queue sbq;
-	struct dma_chan dma_chan;
+	struct idxd_dma_chan *idxd_chan;
 	char name[WQ_NAME_SIZE + 1];
 	u64 max_xfer_bytes;
 	u32 max_batch_size;
@@ -147,6 +156,11 @@ enum idxd_device_flag {
 	IDXD_FLAG_CMD_RUNNING,
 };
 
+struct idxd_dma_dev {
+	struct idxd_device *idxd;
+	struct dma_device dma;
+};
+
 struct idxd_device {
 	enum idxd_type type;
 	struct device conf_dev;
@@ -191,7 +205,7 @@ struct idxd_device {
 	int num_wq_irqs;
 	struct idxd_irq_entry *irq_entries;
 
-	struct dma_device dma_dev;
+	struct idxd_dma_dev *idxd_dma;
 	struct workqueue_struct *wq;
 	struct work_struct work;
 };
@@ -313,7 +327,6 @@ void idxd_unregister_dma_channel(struct idxd_wq *wq);
 void idxd_parse_completion_status(u8 status, enum dmaengine_tx_result *res);
 void idxd_dma_complete_txd(struct idxd_desc *desc,
 			   enum idxd_complete_type comp_type);
-dma_cookie_t idxd_dma_tx_submit(struct dma_async_tx_descriptor *tx);
 
 /* cdev */
 int idxd_cdev_register(void);
drivers/dma/idxd/init.c +1 -1
index fa8c4228f358..f4c7ce8cb399 100644
@@ -175,7 +175,7 @@ static int idxd_setup_internals(struct idxd_device *idxd)
 		wq->id = i;
 		wq->idxd = idxd;
 		mutex_init(&wq->wq_lock);
-		wq->idxd_cdev.minor = -1;
+		init_waitqueue_head(&wq->err_queue);
 		wq->max_xfer_bytes = idxd->max_xfer_bytes;
 		wq->max_batch_size = idxd->max_batch_size;
 		wq->wqcfg = devm_kzalloc(dev, idxd->wqcfg_size, GFP_KERNEL);
drivers/dma/idxd/irq.c +2 -2
index 6bb1c1773aae..fc9579180705 100644
@@ -75,7 +75,7 @@ static int process_misc_interrupts(struct idxd_device *idxd, u32 cause)
 			struct idxd_wq *wq = &idxd->wqs[id];
 
 			if (wq->type == IDXD_WQT_USER)
-				wake_up_interruptible(&wq->idxd_cdev.err_queue);
+				wake_up_interruptible(&wq->err_queue);
 		} else {
 			int i;
 
@@ -83,7 +83,7 @@ static int process_misc_interrupts(struct idxd_device *idxd, u32 cause)
 				struct idxd_wq *wq = &idxd->wqs[i];
 
 				if (wq->type == IDXD_WQT_USER)
-					wake_up_interruptible(&wq->idxd_cdev.err_queue);
+					wake_up_interruptible(&wq->err_queue);
 			}
 		}
 
drivers/dma/idxd/sysfs.c +9 -1
index 7566b573d546..7b41cdff1a2c 100644
@@ -1052,8 +1052,16 @@ static ssize_t wq_cdev_minor_show(struct device *dev,
 				  struct device_attribute *attr, char *buf)
 {
 	struct idxd_wq *wq = container_of(dev, struct idxd_wq, conf_dev);
+	int minor = -1;
 
-	return sprintf(buf, "%d\n", wq->idxd_cdev.minor);
+	mutex_lock(&wq->wq_lock);
+	if (wq->idxd_cdev)
+		minor = wq->idxd_cdev->minor;
+	mutex_unlock(&wq->wq_lock);
+
+	if (minor == -1)
+		return -ENXIO;
+	return sysfs_emit(buf, "%d\n", minor);
 }
 
 static struct device_attribute dev_attr_wq_cdev_minor =
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +2 -0
index 2f53fa0ae9a6..28f20f0b722f 100644
@@ -75,6 +75,8 @@ int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
 		}
 
 		ib->ptr = amdgpu_sa_bo_cpu_addr(ib->sa_bo);
+		/* flush the cache before commit the IB */
+		ib->flags = AMDGPU_IB_FLAG_EMIT_MEM_SYNC;
 
 		if (!vm)
 			ib->gpu_addr = amdgpu_sa_bo_gpu_addr(ib->sa_bo);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c +1 -0
index 79de68ac03f2..0c3b15992b81 100644
@@ -643,6 +643,7 @@ struct hdcp_workqueue *hdcp_create_workqueue(struct amdgpu_device *adev, struct
 
 	/* File created at /sys/class/drm/card0/device/hdcp_srm*/
 	hdcp_work[0].attr = data_attr;
+	sysfs_bin_attr_init(&hdcp_work[0].attr);
 
 	if (sysfs_create_bin_file(&adev->dev->kobj, &hdcp_work[0].attr))
 		DRM_WARN("Failed to create device file hdcp_srm");
drivers/gpu/drm/amd/display/dc/core/dc.c +4 -0
index 921c4ca6e902..284ed1c8a35a 100644
@@ -2504,6 +2504,10 @@ static void commit_planes_for_stream(struct dc *dc,
 						plane_state->triplebuffer_flips = true;
 				}
 			}
+			if (update_type == UPDATE_TYPE_FULL) {
+				/* force vsync flip when reconfiguring pipes to prevent underflow */
+				plane_state->flip_immediate = false;
+			}
 		}
 	}
 
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hubp.c +9 -6
index 368818d2dfc6..cd9bd71da4b7 100644
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012-17 Advanced Micro Devices, Inc.
+ * Copyright 2012-2021 Advanced Micro Devices, Inc.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -181,11 +181,14 @@ void hubp2_vready_at_or_After_vsync(struct hubp *hubp,
 	else
 		Set HUBP_VREADY_AT_OR_AFTER_VSYNC = 0
 	*/
-	if ((pipe_dest->vstartup_start - (pipe_dest->vready_offset+pipe_dest->vupdate_width
-		+ pipe_dest->vupdate_offset) / pipe_dest->htotal) <= pipe_dest->vblank_end) {
-		value = 1;
-	} else
-		value = 0;
+	if (pipe_dest->htotal != 0) {
+		if ((pipe_dest->vstartup_start - (pipe_dest->vready_offset+pipe_dest->vupdate_width
+			+ pipe_dest->vupdate_offset) / pipe_dest->htotal) <= pipe_dest->vblank_end) {
+			value = 1;
+		} else
+			value = 0;
+	}
+
 	REG_UPDATE(DCHUBP_CNTL, HUBP_VREADY_AT_OR_AFTER_VSYNC, value);
 }
 
drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.c +2 -0
index 3a367a5968ae..972f2600f967 100644
@@ -789,6 +789,8 @@ enum mod_hdcp_status mod_hdcp_hdcp2_validate_rx_id_list(struct mod_hdcp *hdcp)
 			   TA_HDCP2_MSG_AUTHENTICATION_STATUS__RECEIVERID_REVOKED) {
 			hdcp->connection.is_hdcp2_revoked = 1;
 			status = MOD_HDCP_STATUS_HDCP2_RX_ID_LIST_REVOKED;
+		} else {
+			status = MOD_HDCP_STATUS_HDCP2_VALIDATE_RX_ID_LIST_FAILURE;
 		}
 	}
 	mutex_unlock(&psp->hdcp_context.mutex);
drivers/gpu/drm/i915/display/intel_overlay.c +1 -1
index b73d51e766ce..0e60aec0bb19 100644
@@ -382,7 +382,7 @@ static void intel_overlay_off_tail(struct intel_overlay *overlay)
 		i830_overlay_clock_gating(dev_priv, true);
 }
 
-static void
+__i915_active_call static void
 intel_overlay_last_flip_retire(struct i915_active *active)
 {
 	struct intel_overlay *overlay =
drivers/gpu/drm/i915/gem/i915_gem_mman.c +1 -1
index 3d69e51f3e4d..5754bccff4d1 100644
@@ -189,7 +189,7 @@ compute_partial_view(const struct drm_i915_gem_object *obj,
 	struct i915_ggtt_view view;
 
 	if (i915_gem_object_is_tiled(obj))
-		chunk = roundup(chunk, tile_row_pages(obj));
+		chunk = roundup(chunk, tile_row_pages(obj) ?: 1);
 
 	view.type = I915_GGTT_VIEW_PARTIAL;
 	view.partial.offset = rounddown(page_offset, chunk);
drivers/gpu/drm/i915/gt/gen8_ppgtt.c +0 -1
index 38c7069b7749..f08e25e95746 100644
@@ -628,7 +628,6 @@ static int gen8_preallocate_top_level_pdp(struct i915_ppgtt *ppgtt)
 
 		err = pin_pt_dma(vm, pde->pt.base);
 		if (err) {
-			i915_gem_object_put(pde->pt.base);
 			free_pd(vm, pde);
 			return err;
 		}
drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c +2 -2
index 6614f6736486..b5937b39145a 100644
@@ -652,8 +652,8 @@ static void detect_bit_6_swizzle(struct i915_ggtt *ggtt)
 		 * banks of memory are paired and unswizzled on the
 		 * uneven portion, so leave that as unknown.
 		 */
-		if (intel_uncore_read(uncore, C0DRB3) ==
-		    intel_uncore_read(uncore, C1DRB3)) {
+		if (intel_uncore_read16(uncore, C0DRB3) ==
+		    intel_uncore_read16(uncore, C1DRB3)) {
 			swizzle_x = I915_BIT_6_SWIZZLE_9_10;
 			swizzle_y = I915_BIT_6_SWIZZLE_9;
 		}
drivers/gpu/drm/i915/i915_active.c +2 -1
index 9ed19b8bca60..c4c2d24dc509 100644
@@ -1159,7 +1159,8 @@ static int auto_active(struct i915_active *ref)
 	return 0;
 }
 
-static void auto_retire(struct i915_active *ref)
+__i915_active_call static void
+auto_retire(struct i915_active *ref)
 {
 	i915_active_put(ref);
 }
drivers/gpu/drm/msm/dp/dp_audio.c +1 -0
index 82a8673ab8da..d7e4a39a904e 100644
@@ -527,6 +527,7 @@ int dp_audio_hw_params(struct device *dev,
 	dp_audio_setup_acr(audio);
 	dp_audio_safe_to_exit_level(audio);
 	dp_audio_enable(audio, true);
+	dp_display_signal_audio_start(dp_display);
 	dp_display->audio_enabled = true;
 
 end:
drivers/gpu/drm/msm/dp/dp_display.c +9 -2
index a2db14f852f1..66f2ea3d42fc 100644
@@ -176,6 +176,15 @@ static int dp_del_event(struct dp_display_private *dp_priv, u32 event)
 	return 0;
 }
 
+void dp_display_signal_audio_start(struct msm_dp *dp_display)
+{
+	struct dp_display_private *dp;
+
+	dp = container_of(dp_display, struct dp_display_private, dp_display);
+
+	reinit_completion(&dp->audio_comp);
+}
+
 void dp_display_signal_audio_complete(struct msm_dp *dp_display)
 {
 	struct dp_display_private *dp;
@@ -620,7 +629,6 @@ static int dp_hpd_unplug_handle(struct dp_display_private *dp, u32 data)
 	dp_add_event(dp, EV_DISCONNECT_PENDING_TIMEOUT, 0, DP_TIMEOUT_5_SECOND);
 
 	/* signal the disconnect event early to ensure proper teardown */
-	reinit_completion(&dp->audio_comp);
 	dp_display_handle_plugged_change(g_dp_display, false);
 
 	dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK |
@@ -841,7 +849,6 @@ static int dp_display_disable(struct dp_display_private *dp, u32 data)
 	/* wait only if audio was enabled */
 	if (dp_display->audio_enabled) {
 		/* signal the disconnect event */
-		reinit_completion(&dp->audio_comp);
 		dp_display_handle_plugged_change(dp_display, false);
 		if (!wait_for_completion_timeout(&dp->audio_comp,
 				HZ * 5))
drivers/gpu/drm/msm/dp/dp_display.h +1 -0
index 6092ba1ed85e..5173c89eedf7 100644
@@ -34,6 +34,7 @@ int dp_display_get_modes(struct msm_dp *dp_display,
 int dp_display_request_irq(struct msm_dp *dp_display);
 bool dp_display_check_video_test(struct msm_dp *dp_display);
 int dp_display_get_test_bpp(struct msm_dp *dp_display);
+void dp_display_signal_audio_start(struct msm_dp *dp_display);
 void dp_display_signal_audio_complete(struct msm_dp *dp_display);
 
 #endif /* _DP_DISPLAY_H_ */
drivers/gpu/drm/radeon/radeon.h +1 -0
index a6d8de01194a..a813c00f109b 100644
@@ -1559,6 +1559,7 @@ struct radeon_dpm {
 	void                    *priv;
 	u32			new_active_crtcs;
 	int			new_active_crtc_count;
+	int			high_pixelclock_count;
 	u32			current_active_crtcs;
 	int			current_active_crtc_count;
 	bool single_display;
drivers/gpu/drm/radeon/radeon_atombios.c +18 -8
index 5d2591725189..aca6e5cfae53 100644
@@ -2126,11 +2126,14 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev)
 		return state_index;
 	/* last mode is usually default, array is low to high */
 	for (i = 0; i < num_modes; i++) {
-		rdev->pm.power_state[state_index].clock_info =
-			kcalloc(1, sizeof(struct radeon_pm_clock_info),
-				GFP_KERNEL);
+		/* avoid memory leaks from invalid modes or unknown frev. */
+		if (!rdev->pm.power_state[state_index].clock_info) {
+			rdev->pm.power_state[state_index].clock_info =
+				kzalloc(sizeof(struct radeon_pm_clock_info),
+					GFP_KERNEL);
+		}
 		if (!rdev->pm.power_state[state_index].clock_info)
-			return state_index;
+			goto out;
 		rdev->pm.power_state[state_index].num_clock_modes = 1;
 		rdev->pm.power_state[state_index].clock_info[0].voltage.type = VOLTAGE_NONE;
 		switch (frev) {
@@ -2249,17 +2252,24 @@ static int radeon_atombios_parse_power_table_1_3(struct radeon_device *rdev)
 			break;
 		}
 	}
+out:
+	/* free any unused clock_info allocation. */
+	if (state_index && state_index < num_modes) {
+		kfree(rdev->pm.power_state[state_index].clock_info);
+		rdev->pm.power_state[state_index].clock_info = NULL;
+	}
+
 	/* last mode is usually default */
-	if (rdev->pm.default_power_state_index == -1) {
+	if (state_index && rdev->pm.default_power_state_index == -1) {
 		rdev->pm.power_state[state_index - 1].type =
 			POWER_STATE_TYPE_DEFAULT;
 		rdev->pm.default_power_state_index = state_index - 1;
 		rdev->pm.power_state[state_index - 1].default_clock_mode =
 			&rdev->pm.power_state[state_index - 1].clock_info[0];
-		rdev->pm.power_state[state_index].flags &=
+		rdev->pm.power_state[state_index - 1].flags &=
 			~RADEON_PM_STATE_SINGLE_DISPLAY_ONLY;
-		rdev->pm.power_state[state_index].misc = 0;
-		rdev->pm.power_state[state_index].misc2 = 0;
+		rdev->pm.power_state[state_index - 1].misc = 0;
+		rdev->pm.power_state[state_index - 1].misc2 = 0;
 	}
 	return state_index;
 }
drivers/gpu/drm/radeon/radeon_pm.c +8 -0
index 05c4196a8212..84b8d58f0718 100644
@@ -1747,6 +1747,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)
 	struct drm_device *ddev = rdev->ddev;
 	struct drm_crtc *crtc;
 	struct radeon_crtc *radeon_crtc;
+	struct radeon_connector *radeon_connector;
 
 	if (!rdev->pm.dpm_enabled)
 		return;
@@ -1756,6 +1757,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)
 	/* update active crtc counts */
 	rdev->pm.dpm.new_active_crtcs = 0;
 	rdev->pm.dpm.new_active_crtc_count = 0;
+	rdev->pm.dpm.high_pixelclock_count = 0;
 	if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc,
 				    &ddev->mode_config.crtc_list, head) {
@@ -1763,6 +1765,12 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)
 			if (crtc->enabled) {
 				rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id);
 				rdev->pm.dpm.new_active_crtc_count++;
+				if (!radeon_crtc->connector)
+					continue;
+
+				radeon_connector = to_radeon_connector(radeon_crtc->connector);
+				if (radeon_connector->pixelclock_for_modeset > 297000)
+					rdev->pm.dpm.high_pixelclock_count++;
 			}
 		}
 	}
drivers/gpu/drm/radeon/si_dpm.c +3 -0
index d1c73e9db889..a84df439deb2 100644
@@ -2982,6 +2982,9 @@ static void si_apply_state_adjust_rules(struct radeon_device *rdev,
 		    (rdev->pdev->device == 0x6605)) {
 			max_sclk = 75000;
 		}
+
+		if (rdev->pm.dpm.high_pixelclock_count > 1)
+			disable_sclk_switching = true;
 	}
 
 	if (rps->vce_active) {
drivers/hwmon/occ/common.c +3 -2
index a71777990d49..d052502dc2c0 100644
@@ -209,9 +209,9 @@ int occ_update_response(struct occ *occ)
 		return rc;
 
 	/* limit the maximum rate of polling the OCC */
-	if (time_after(jiffies, occ->last_update + OCC_UPDATE_FREQUENCY)) {
+	if (time_after(jiffies, occ->next_update)) {
 		rc = occ_poll(occ);
-		occ->last_update = jiffies;
+		occ->next_update = jiffies + OCC_UPDATE_FREQUENCY;
 	} else {
 		rc = occ->last_error;
 	}
@@ -1089,6 +1089,7 @@ int occ_setup(struct occ *occ, const char *name)
 		return rc;
 	}
 
+	occ->next_update = jiffies + OCC_UPDATE_FREQUENCY;
 	occ_parse_poll_response(occ);
 
 	rc = occ_setup_sensor_attrs(occ);
drivers/hwmon/occ/common.h +1 -1
index 67e6968b8978..e6df719770e8 100644
@@ -99,7 +99,7 @@ struct occ {
 	u8 poll_cmd_data;		/* to perform OCC poll command */
 	int (*send_cmd)(struct occ *occ, u8 *cmd);
 
-	unsigned long last_update;
+	unsigned long next_update;
 	struct mutex lock;		/* lock OCC access */
 
 	struct device *hwmon;
drivers/hwtracing/coresight/coresight-platform.c +6 -0
index 3629b7885aca..c594f45319fc 100644
@@ -90,6 +90,12 @@ static void of_coresight_get_ports_legacy(const struct device_node *node,
 	struct of_endpoint endpoint;
 	int in = 0, out = 0;
 
+	/*
+	 * Avoid warnings in of_graph_get_next_endpoint()
+	 * if the device doesn't have any graph connections
+	 */
+	if (!of_graph_is_present(node))
+		return;
 	do {
 		ep = of_graph_get_next_endpoint(node, ep);
 		if (!ep)
drivers/i2c/busses/i2c-mt65xx.c +5 -4
index 86f70c751319..bf25acba2ed5 100644
@@ -564,7 +564,7 @@ static const struct i2c_spec_values *mtk_i2c_get_spec(unsigned int speed)
 
 static int mtk_i2c_max_step_cnt(unsigned int target_speed)
 {
-	if (target_speed > I2C_MAX_FAST_MODE_FREQ)
+	if (target_speed > I2C_MAX_FAST_MODE_PLUS_FREQ)
 		return MAX_HS_STEP_CNT_DIV;
 	else
 		return MAX_STEP_CNT_DIV;
@@ -635,7 +635,7 @@ static int mtk_i2c_check_ac_timing(struct mtk_i2c *i2c,
 	if (sda_min > sda_max)
 		return -3;
 
-	if (check_speed > I2C_MAX_FAST_MODE_FREQ) {
+	if (check_speed > I2C_MAX_FAST_MODE_PLUS_FREQ) {
 		if (i2c->dev_comp->ltiming_adjust) {
 			i2c->ac_timing.hs = I2C_TIME_DEFAULT_VALUE |
 				(sample_cnt << 12) | (high_cnt << 8);
@@ -850,7 +850,7 @@ static int mtk_i2c_do_transfer(struct mtk_i2c *i2c, struct i2c_msg *msgs,
 
 	control_reg = mtk_i2c_readw(i2c, OFFSET_CONTROL) &
 			~(I2C_CONTROL_DIR_CHANGE | I2C_CONTROL_RS);
-	if ((i2c->speed_hz > I2C_MAX_FAST_MODE_FREQ) || (left_num >= 1))
+	if ((i2c->speed_hz > I2C_MAX_FAST_MODE_PLUS_FREQ) || (left_num >= 1))
 		control_reg |= I2C_CONTROL_RS;
 
 	if (i2c->op == I2C_MASTER_WRRD)
@@ -1067,7 +1067,8 @@ static int mtk_i2c_transfer(struct i2c_adapter *adap,
 		}
 	}
 
-	if (i2c->auto_restart && num >= 2 && i2c->speed_hz > I2C_MAX_FAST_MODE_FREQ)
+	if (i2c->auto_restart && num >= 2 &&
+		i2c->speed_hz > I2C_MAX_FAST_MODE_PLUS_FREQ)
 		/* ignore the first restart irq after the master code,
 		 * otherwise the first transfer will be discarded.
 		 */
drivers/i2c/i2c-dev.c +7 -2
index 6ceb11cc4be1..6ef38a8ee95c 100644
@@ -440,8 +440,13 @@ static long i2cdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 				   sizeof(rdwr_arg)))
 			return -EFAULT;
 
-		/* Put an arbitrary limit on the number of messages that can
-		 * be sent at once */
+		if (!rdwr_arg.msgs || rdwr_arg.nmsgs == 0)
+			return -EINVAL;
+
+		/*
+		 * Put an arbitrary limit on the number of messages that can
+		 * be sent at once
+		 */
 		if (rdwr_arg.nmsgs > I2C_RDWR_IOCTL_MAX_MSGS)
 			return -EINVAL;
 
drivers/iio/accel/Kconfig +0 -1
index 2e0c62c39155..8acf277b8b25 100644
@@ -211,7 +211,6 @@ config DMARD10
 config HID_SENSOR_ACCEL_3D
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID Accelerometers 3D"
drivers/iio/common/hid-sensors/Kconfig +1 -0
index 24d492567336..2a3dd3b907be 100644
@@ -19,6 +19,7 @@ config HID_SENSOR_IIO_TRIGGER
 	tristate "Common module (trigger) for all HID Sensor IIO drivers"
 	depends on HID_SENSOR_HUB && HID_SENSOR_IIO_COMMON && IIO_BUFFER
 	select IIO_TRIGGER
+	select IIO_TRIGGERED_BUFFER
 	help
 	  Say yes here to build trigger support for HID sensors.
 	  Triggers will be send if all requested attributes were read.
drivers/iio/gyro/Kconfig +0 -1
index 5824f2edf975..20b5ac7ab66a 100644
@@ -111,7 +111,6 @@ config FXAS21002C_SPI
 config HID_SENSOR_GYRO_3D
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID Gyroscope 3D"
drivers/iio/gyro/mpu3050-core.c +11 -2
index 8ea6c2aa6263..39e1c4306c47 100644
@@ -271,7 +271,16 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev,
 	case IIO_CHAN_INFO_OFFSET:
 		switch (chan->type) {
 		case IIO_TEMP:
-			/* The temperature scaling is (x+23000)/280 Celsius */
+			/*
+			 * The temperature scaling is (x+23000)/280 Celsius
+			 * for the "best fit straight line" temperature range
+			 * of -30C..85C.  The 23000 includes room temperature
+			 * offset of +35C, 280 is the precision scale and x is
+			 * the 16-bit signed integer reported by hardware.
+			 *
+			 * Temperature value itself represents temperature of
+			 * the sensor die.
+			 */
 			*val = 23000;
 			return IIO_VAL_INT;
 		default:
@@ -328,7 +337,7 @@ static int mpu3050_read_raw(struct iio_dev *indio_dev,
 				goto out_read_raw_unlock;
 			}
 
-			*val = be16_to_cpu(raw_val);
+			*val = (s16)be16_to_cpu(raw_val);
 			ret = IIO_VAL_INT;
 
 			goto out_read_raw_unlock;
drivers/iio/humidity/Kconfig +0 -1
index 6549fcf6db69..2de5494e7c22 100644
@@ -52,7 +52,6 @@ config HID_SENSOR_HUMIDITY
 	tristate "HID Environmental humidity sensor"
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	help
drivers/iio/light/Kconfig +0 -2
index 33ad4dd0b5c7..917f9becf9c7 100644
@@ -256,7 +256,6 @@ config ISL29125
 config HID_SENSOR_ALS
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID ALS"
@@ -270,7 +269,6 @@ config HID_SENSOR_ALS
 config HID_SENSOR_PROX
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID PROX"
drivers/iio/light/gp2ap002.c +3 -2
index 7ba7aa59437c..040d8429a6e0 100644
@@ -583,7 +583,7 @@ static int gp2ap002_probe(struct i2c_client *client,
 					"gp2ap002", indio_dev);
 	if (ret) {
 		dev_err(dev, "unable to request IRQ\n");
-		goto out_disable_vio;
+		goto out_put_pm;
 	}
 	gp2ap002->irq = client->irq;
 
@@ -613,8 +613,9 @@ static int gp2ap002_probe(struct i2c_client *client,
 
 	return 0;
 
-out_disable_pm:
+out_put_pm:
 	pm_runtime_put_noidle(dev);
+out_disable_pm:
 	pm_runtime_disable(dev);
 out_disable_vio:
 	regulator_disable(gp2ap002->vio);
drivers/iio/light/tsl2583.c +8 -0
index 9e5490b7473b..40b7dd266b31 100644
@@ -341,6 +341,14 @@ static int tsl2583_als_calibrate(struct iio_dev *indio_dev)
 		return lux_val;
 	}
 
+	/* Avoid division by zero of lux_value later on */
+	if (lux_val == 0) {
+		dev_err(&chip->client->dev,
+			"%s: lux_val of 0 will produce out of range trim_value\n",
+			__func__);
+		return -ENODATA;
+	}
+
 	gain_trim_val = (unsigned int)(((chip->als_settings.als_cal_target)
 			* chip->als_settings.als_gain_trim) / lux_val);
 	if ((gain_trim_val < 250) || (gain_trim_val > 4000)) {
drivers/iio/magnetometer/Kconfig +0 -1
index 1697a8c03506..7e9489a35571 100644
@@ -95,7 +95,6 @@ config MAG3110
 config HID_SENSOR_MAGNETOMETER_3D
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID Magenetometer 3D"
drivers/iio/orientation/Kconfig +0 -2
index a505583cc2fd..396cbbb867f4 100644
@@ -9,7 +9,6 @@ menu "Inclinometer sensors"
 config HID_SENSOR_INCLINOMETER_3D
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID Inclinometer 3D"
@@ -20,7 +19,6 @@ config HID_SENSOR_INCLINOMETER_3D
 config HID_SENSOR_DEVICE_ROTATION
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID Device Rotation"
drivers/iio/pressure/Kconfig +0 -1
index 689b978db4f9..fc0d3cfca418 100644
@@ -79,7 +79,6 @@ config DPS310
 config HID_SENSOR_PRESS
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	tristate "HID PRESS"
drivers/iio/proximity/pulsedlight-lidar-lite-v2.c +1 -0
index c685f10b5ae4..cc206bfa09c7 100644
@@ -160,6 +160,7 @@ static int lidar_get_measurement(struct lidar_data *data, u16 *reg)
 	ret = lidar_write_control(data, LIDAR_REG_CONTROL_ACQUIRE);
 	if (ret < 0) {
 		dev_err(&client->dev, "cannot send start measurement command");
+		pm_runtime_put_noidle(&client->dev);
 		return ret;
 	}
 
drivers/iio/temperature/Kconfig +0 -1
index f1f2a1499c9e..4df60082c1fa 100644
@@ -45,7 +45,6 @@ config HID_SENSOR_TEMP
 	tristate "HID Environmental temperature sensor"
 	depends on HID_SENSOR_HUB
 	select IIO_BUFFER
-	select IIO_TRIGGERED_BUFFER
 	select HID_SENSOR_IIO_COMMON
 	select HID_SENSOR_IIO_TRIGGER
 	help
drivers/infiniband/hw/hfi1/ipoib.h +2 -1
index b8c9d0a003fb..1ee361c6d11a 100644
@@ -52,8 +52,9 @@ union hfi1_ipoib_flow {
  * @producer_lock: producer sync lock
  * @consumer_lock: consumer sync lock
  */
+struct ipoib_txreq;
 struct hfi1_ipoib_circ_buf {
-	void **items;
+	struct ipoib_txreq **items;
 	unsigned long head;
 	unsigned long tail;
 	unsigned long max_items;
drivers/infiniband/hw/hfi1/ipoib_tx.c +7 -7
index 9df292b51a05..ab1eefffc14b 100644
@@ -702,14 +702,14 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
 
 	priv->tx_napis = kcalloc_node(dev->num_tx_queues,
 				      sizeof(struct napi_struct),
-				      GFP_ATOMIC,
+				      GFP_KERNEL,
 				      priv->dd->node);
 	if (!priv->tx_napis)
 		goto free_txreq_cache;
 
 	priv->txqs = kcalloc_node(dev->num_tx_queues,
 				  sizeof(struct hfi1_ipoib_txq),
-				  GFP_ATOMIC,
+				  GFP_KERNEL,
 				  priv->dd->node);
 	if (!priv->txqs)
 		goto free_tx_napis;
@@ -741,9 +741,9 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
 					     priv->dd->node);
 
 		txq->tx_ring.items =
-			vzalloc_node(array_size(tx_ring_size,
-						sizeof(struct ipoib_txreq)),
-				     priv->dd->node);
+			kcalloc_node(tx_ring_size,
+				     sizeof(struct ipoib_txreq *),
+				     GFP_KERNEL, priv->dd->node);
 		if (!txq->tx_ring.items)
 			goto free_txqs;
 
@@ -764,7 +764,7 @@ int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv)
 		struct hfi1_ipoib_txq *txq = &priv->txqs[i];
 
 		netif_napi_del(txq->napi);
-		vfree(txq->tx_ring.items);
+		kfree(txq->tx_ring.items);
 	}
 
 	kfree(priv->txqs);
@@ -817,7 +817,7 @@ void hfi1_ipoib_txreq_deinit(struct hfi1_ipoib_dev_priv *priv)
 		hfi1_ipoib_drain_tx_list(txq);
 		netif_napi_del(txq->napi);
 		(void)hfi1_ipoib_drain_tx_ring(txq, txq->tx_ring.max_items);
-		vfree(txq->tx_ring.items);
+		kfree(txq->tx_ring.items);
 	}
 
 	kfree(priv->txqs);
drivers/iommu/amd/init.c +2 -47

74 lines not on this page · raw message

drivers/iommu/intel/iommu.c +4 -1
index db9bf5ac0722..eececdeaa40f 100644

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

drivers/net/can/m_can/m_can.c +2 -1
index 6f0bf5db885c..62bcef4bb95f 100644

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

drivers/net/can/spi/mcp251x.c +18 -17
index 42c3046fa304..89897a2d41fa 100644

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

drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +3 -1
index 096d818c167e..68ff931993c2 100644

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

drivers/net/ethernet/broadcom/bnxt/bnxt.c +18 -1
index 7ddc2e2e4976..4385b42a2b63 100644

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

drivers/net/ethernet/cisco/enic/enic_main.c +5 -2
index fb269d587b74..548d8095c0a7 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +83 -44

127 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +2 -0
index 1c81dea0da1e..398686b15a82 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c +2 -0
index 6b07b2771172..c0aa3be0cdfb 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c +2 -1
index 9ee55ee0487d..3226ca176155 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.h +2 -1
index 608fe26fc3fe..d647f3c84134 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +20 -7
index b856dbe4db73..98190aa90781 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +1 -1
index 9c8004fc9dc4..e0254672831f 100644

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

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +2 -0
index e89820702540..c194bba187d6 100644

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

drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h +4 -2
index 1e960c3c7ef0..e84054fb8213 100644

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

drivers/net/ethernet/intel/i40e/i40e_client.c +1 -0
index a2dba32383f6..32f3facbed1a 100644

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

drivers/net/ethernet/intel/i40e/i40e_common.c +2 -2
index adc9e4fa4789..ba109073d605 100644

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

drivers/net/ethernet/intel/i40e/i40e_ethtool.c +4 -3
index 31d48a85cfaf..5d48bc0c3f6c 100644

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

drivers/net/ethernet/intel/i40e/i40e_txrx.c +2 -6
index 62b439232fa5..011f484606a3 100644

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

drivers/net/ethernet/intel/i40e/i40e_type.h +2 -5
index c0bdc666f557..add67f7b73e8 100644

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

drivers/net/ethernet/intel/iavf/iavf_main.c +0 -2
index dc5b3c06d1e0..ebd08543791b 100644

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

drivers/net/ethernet/intel/ice/ice_lib.c +90 -33

123 lines not on this page · raw message

drivers/net/ethernet/intel/ice/ice_txrx.h +2 -0
index ff1a1cbd078e..eab7ceae926b 100644

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

drivers/net/ethernet/mediatek/mtk_eth_soc.c +1 -1
index 6d2d60675ffd..d930fcda9c3b 100644

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

drivers/net/ethernet/mediatek/mtk_eth_soc.h +1 -0
index 454cfcd465fd..73ce1f0f307a 100644

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

drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +1 -1
index 38a23d209b33..373668068071 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +2 -0
index bf3250e0e59c..749585fe6fc9 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +1 -0
index ced6d76a0d85..16c538cfaf59 100644

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

drivers/net/wireless/ath/ath11k/wmi.c +21 -32

53 lines not on this page · raw message

drivers/net/wireless/intel/iwlwifi/pcie/drv.c +28 -7
index 500fdb0b6c42..eeb70560b746 100644

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

drivers/net/wireless/mediatek/mt76/mt7615/eeprom.c +1 -0
index f4756bb946c3..e9cdcdc54d5c 100644

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

drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +10 -2
index c31036f57aef..62a971660da7 100644

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

drivers/net/wireless/mediatek/mt76/mt76x02_util.c +4 -0
index 11b769af2f8f..0f191bd28417 100644

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

drivers/net/wireless/mediatek/mt76/mt7915/eeprom.c +13 -6
index 7deba7ebd68a..e4c5f968f706 100644

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

drivers/net/wireless/quantenna/qtnfmac/event.c +4 -2
index c775c177933b..8dc80574d08d 100644

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

drivers/net/wireless/realtek/rtw88/main.h +2 -0
index ffb02e614217..8ba0b0824ae9 100644

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

drivers/net/wireless/realtek/rtw88/phy.c +14 -0
index 36e2f0dba00c..af8b703d11d4 100644

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

drivers/net/wireless/realtek/rtw88/phy.h +1 -0
index b924ed07630a..9623248c9466 100644

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

drivers/net/wireless/realtek/rtw88/reg.h +5 -0
index 86b94c008a27..aca3dbdc2d5a 100644

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

drivers/net/wireless/realtek/rtw88/rtw8822c.c +25 -2
index e37300e98517..b718f5d810be 100644

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

drivers/net/wireless/wl3501.h +23 -24

47 lines not on this page · raw message

drivers/net/wireless/wl3501_cs.c +29 -25

54 lines not on this page · raw message

drivers/nvme/host/core.c +2 -1
index 610d2bc43ea2..740de61d12a0 100644

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

drivers/nvme/target/io-cmd-bdev.c +4 -6
index 125dde3f410e..6a9626ff0713 100644

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

drivers/nvme/target/nvmet.h +16 -0
index 559a15ccc322..bc91336080e0 100644

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

drivers/nvme/target/rdma.c +2 -2
index 6c1f3ab7649c..7d607f435e36 100644

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

drivers/pci/controller/pcie-iproc-msi.c +1 -1
index 908475d27e0e..eede4e8f3f75 100644

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

drivers/pci/endpoint/functions/pci-epf-test.c +13 -5
index e4e51d884553..d41570715dc7 100644

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

drivers/pci/endpoint/pci-epc-core.c +34 -8

42 lines not on this page · raw message

drivers/pci/probe.c +1 -0
index 4289030b0fff..ece90a23936d 100644

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

drivers/pinctrl/samsung/pinctrl-exynos.c +5 -5
index b9ea09fabf84..493079a47d05 100644

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

drivers/pwm/pwm-atmel.c +1 -1
index 6161e7e3e9ac..d7cb0dfa25a5 100644

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

drivers/remoteproc/qcom_q6v5_mss.c +24 -6
index ba6f7551242d..ebc3e755bcbc 100644

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

drivers/rpmsg/qcom_glink_native.c +1 -0
index 27a05167c18c..4840886532ff 100644

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

drivers/rtc/rtc-ds1307.c +10 -2
index 9f5f54ca039d..07a9cc91671b 100644

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

drivers/rtc/rtc-fsl-ftm-alarm.c +1 -0
index 48d3b38ea348..e08672e26203 100644

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

drivers/scsi/qla2xxx/qla_init.c +3 -0
index 52e8b555bd1d..6faf34fa6220 100644

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

drivers/scsi/ufs/ufshcd.c +5 -2
index 4215d9a8e5de..08d4d40c510e 100644

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

drivers/staging/media/rkvdec/rkvdec.c +1 -1
index d25c4a37e2af..1263991de76f 100644

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

drivers/thermal/qcom/tsens.c +4 -2
index d8ce3a687b80..3c4c0516e58a 100644

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

drivers/thermal/thermal_of.c +5 -2
index 69ef12f852b7..5b76f9a1280d 100644

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

drivers/usb/class/cdc-wdm.c +22 -8
index 508b1c3f8b73..d1e4a7379beb 100644

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

drivers/usb/core/hub.c +3 -3
index 22a86ae4f639..228e3d4e1a9f 100644

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

drivers/usb/dwc2/core.h +2 -0
index 7161344c6522..641e4251cb7f 100644

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

drivers/usb/dwc2/gadget.c +2 -1
index ad4c94366dad..d2f623d83bf7 100644

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

drivers/usb/dwc3/dwc3-omap.c +5 -0
index 3db17806e92e..e196673f5c64 100644

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

drivers/usb/dwc3/dwc3-pci.c +1 -0
index 598daed8086f..17117870f6ce 100644

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

drivers/usb/dwc3/gadget.c +9 -2
index 84d1487e9f06..acf57a98969d 100644

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

drivers/usb/host/fotg210-hcd.c +2 -2
index 1d94fcfac2c2..bd958f059fe6 100644

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

drivers/usb/host/xhci-ext-caps.h +3 -2
index fa59b242cd51..e8af0a125f84 100644

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

drivers/usb/host/xhci-pci.c +6 -2
index 5bbccc9a0179..7bc18cf8042c 100644

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

drivers/usb/host/xhci.c +3 -3
index dbe5553872ff..a8d97e23f601 100644

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

drivers/usb/musb/mediatek.c +1 -1
index eebeadd26946..6b92d037d8fc 100644

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

drivers/usb/typec/tcpm/tcpm.c +3 -3
index 912dbf8ca2da..bdbd346dc59f 100644

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

drivers/usb/typec/ucsi/ucsi.c +36 -10

46 lines not on this page · raw message

drivers/usb/typec/ucsi/ucsi.h +4 -2
index b7a92f246050..047e17c4b492 100644

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

drivers/xen/gntdev.c +3 -1
index 5447c5156b2e..b9651f797676 100644

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

drivers/xen/unpopulated-alloc.c +9 -7
index 7762c1bb23cb..87e6b7db892f 100644

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

fs/btrfs/file.c +25 -11
index c81a20cc10dc..7e87549c5eda 100644

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

fs/btrfs/tree-log.c +2 -1
index 5b11bb977066..8bc3e2f25e7d 100644

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

fs/ceph/export.c +3 -1
index e088843a7734..baa6368bece5 100644

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

fs/dax.c +23 -12
index b3d27fdc6775..df5485b4bddf 100644

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

fs/debugfs/inode.c +1 -1
index 86c7f0489620..720d65f224f0 100644

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

fs/dlm/config.c +16 -7
index 49c5f9407098..73e6643903af 100644

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

fs/dlm/debug_fs.c +1 -0
index d6bbccb0ed15..d5bd990bcab8 100644

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

fs/dlm/lowcomms.c +1 -4
index 79f56f16bc2c..44e2716ac158 100644

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

fs/dlm/midcomms.c +4 -3
index fde3a6afe4be..0bedfa8606a2 100644

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

fs/ext4/fast_commit.c +1 -1
index 4a0411b229a5..896e1176e044 100644

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

fs/f2fs/compress.c +23 -32

55 lines not on this page · raw message

fs/f2fs/data.c +3 -3
index 901bd1d963ee..bdc0f3b2d7ab 100644

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

fs/f2fs/f2fs.h +4 -82

86 lines not on this page · raw message

fs/f2fs/file.c +125 -59

184 lines not on this page · raw message

fs/f2fs/gc.c +45 -17

62 lines not on this page · raw message

fs/f2fs/inline.c +2 -1
index b9e37f0b3e09..1d7dafdaffe3 100644

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

fs/f2fs/segment.c +59 -27

86 lines not on this page · raw message

fs/f2fs/segment.h +13 -1
index 229814b4f4a6..1bf33fc27b8f 100644

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

fs/f2fs/super.c +1 -1
index 4fffbef216af..abc469dd9aea 100644

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

fs/fuse/cuse.c +2 -0
index 45082269e698..a37528b51798 100644

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

fs/fuse/file.c +9 -0
index 7160d30068f3..8de9c24ac4ac 100644

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

fs/fuse/virtio_fs.c +1 -2
index f0a7f1b7b75f..b9cfb1165ff4 100644

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

fs/hfsplus/extents.c +4 -3
index a930ddd15681..7054a542689f 100644

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

fs/hugetlbfs/inode.c +5 -0
index 21c20fd5f9ee..b7c24d152604 100644

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

fs/jbd2/recovery.c +2 -3
index dc0694fcfcd1..1e07dfac4d81 100644

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

fs/nfs/callback_proc.c +9 -8
index e61dbc9b86ae..be546ece383f 100644

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

fs/nfs/flexfilelayout/flexfilelayout.c +1 -1
index fd0eda328943..a8a02081942d 100644

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

fs/nfs/inode.c +4 -4
index 43af053f467a..6e2e948f1475 100644

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

fs/nfs/nfs42proc.c +21 -10
index 4fc61e3d098d..4ebcd9dd1535 100644

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

fs/nfs/nfs4proc.c +34 -22

56 lines not on this page · raw message

fs/nfsd/nfs4state.c +19 -5
index 55cf60b71cde..ac20f79bbedd 100644

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

fs/proc/generic.c +1 -1
index 6c0a05f55d6b..09e4d8a499a3 100644

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

fs/squashfs/file.c +3 -3
index 7b1128398976..89d492916dea 100644

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

include/linux/cpuhotplug.h +1 -0
index bc56287a1ed1..8fb893ed205e 100644

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

include/linux/elevator.h +1 -1
index bacc40a0bdf3..bc26b4e11f62 100644

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

include/linux/i2c.h +2 -0
index 56622658b215..a670ae129f4b 100644

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

include/linux/mm.h +32 -0
index 08a48d3eaeaa..5106db3ad1ce 100644

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

include/linux/mm_types.h +2 -2
index 3433ecc9c1f7..a4fff7d7abe5 100644

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

include/linux/nfs_xdr.h +8 -3
index d63cb862d58e..5491ad5f48a9 100644

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

include/linux/pci-epc.h +4 -2
index cc66bec8be90..88d311bad984 100644

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

include/linux/pci-epf.h +1 -0
index 6644ff3b0702..fa3aca43eb19 100644

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

include/linux/pm.h +1 -0
index 47aca6bac1d6..52d9724db9dc 100644

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

include/net/page_pool.h +11 -1
index 81d7773f96cd..b139e7bf45fe 100644

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

include/trace/events/f2fs.h +1 -0
index f8f1e85ff130..56b113e3cd6a 100644

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

include/trace/events/sunrpc.h +0 -1
index 2a03263b5f9d..23db248a7fdb 100644

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

include/uapi/linux/f2fs.h new file +87 -0

87 lines not on this page · raw message

include/uapi/linux/netfilter/xt_SECMARK.h +6 -0
index 1f2a708413f5..beb2cadba8a9 100644

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

kernel/dma/swiotlb.c +2 -1
index ba4055a192e4..0f61b14b0099 100644

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

kernel/kexec_file.c +3 -1
index 7825adcc5efc..aea9104265f2 100644

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

kernel/resource.c +2 -2
index 3ae2f56cc79d..817545ff80b9 100644

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

kernel/sched/core.c +1 -1
index 3c3554d9ee50..57b236251884 100644

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

kernel/sched/fair.c +9 -3
index c80d1a039d19..1ad0e52487f6 100644

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

kernel/watchdog.c +14 -26
index 71109065bd8e..01bf977090dc 100644

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

lib/kobject_uevent.c +5 -4
index 7998affa45d4..c87d5b6a8a55 100644

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

lib/nlattr.c +1 -1
index 74019c8ebf6b..fe60f9ae9db1 100644

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

lib/test_kasan.c +23 -6
index 400507f1e5db..28c7c123a185 100644

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

mm/gup.c +47 -47

94 lines not on this page · raw message

mm/hugetlb.c +9 -2
index 573f1a0183be..900851a4f914 100644

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

mm/khugepaged.c +9 -9
index abab394c4206..a6238118ac4c 100644

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

mm/ksm.c +1 -0
index 0960750bb316..25b8362a4f89 100644

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

mm/migrate.c +7 -0
index 9d7ca1bd7f4b..7982256a5125 100644

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

mm/shmem.c +15 -19
index 537c137698f8..6e487bf555f9 100644

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

net/bluetooth/hci_event.c +1 -1
index e0a542849735..4676e4b0be2b 100644

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

net/bluetooth/l2cap_core.c +4 -0
index 1ab27b90ddcb..cdc386337173 100644

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

net/bluetooth/l2cap_sock.c +8 -0
index f1b1edd0b697..c99d65ef13b1 100644

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

net/bridge/br_arp_nd_proxy.c +3 -1
index dfec65eca8a6..3db1def4437b 100644

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

net/core/flow_dissector.c +4 -2
index d48b37b15b27..c52e5ea654e9 100644

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

net/core/page_pool.c +7 -5
index ef98372facf6..08fbf4049c10 100644

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

net/ethtool/ioctl.c +1 -1
index ec2cd7aab5ad..2917af3f5ac1 100644

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

net/ethtool/netlink.c +2 -1
index 50d3c8896f91..25a55086d2b6 100644

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

net/ipv6/ip6_vti.c +1 -1
index ecfeffc06c55..82961ff4da9b 100644

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

net/mac80211/mlme.c +5 -0
index ef19c3399b89..6d3220c66931 100644

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

net/mptcp/subflow.c +1 -2
index 6317b9bc8681..01a675fa2aa2 100644

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

net/netfilter/nf_tables_api.c +2 -2
index 2e76935db2c8..7bf7bfa0c7d9 100644

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

net/netfilter/nfnetlink_osf.c +2 -0
index 916a3c7f9eaf..79fbf37291f3 100644

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

net/netfilter/nft_set_hash.c +9 -1
index 4d3f147e8d8d..d7083bcb20e8 100644

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

net/netfilter/xt_SECMARK.c +69 -19

88 lines not on this page · raw message

net/sched/cls_flower.c +18 -18
index 14316ba9b3b3..a5212a3f86e2 100644

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

net/sched/sch_taprio.c +6 -0
index c966c05a0be9..00853065dfa0 100644

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

net/sctp/sm_make_chunk.c +1 -1
index 9a56ae2f3651..b9d6babe2870 100644

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

net/sctp/sm_statefuns.c +22 -6
index c669f8bd1eab..b65bdaa84228 100644

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

net/smc/af_smc.c +3 -1
index 5dd4faaf7d6e..030d7f30b13f 100644

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

net/sunrpc/clnt.c +5 -7
index 3259120462ed..4a0e8e458a9a 100644

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

net/sunrpc/svcsock.c +1 -1
index fa7b7ae2c2c5..eba1714bf09a 100644

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

net/sunrpc/xprt.c +6 -6
index 57f09ea3ef2a..a85759d8cde8 100644

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

net/sunrpc/xprtrdma/frwr_ops.c +1 -1
index 44888f5badef..bf3627dce552 100644

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

net/sunrpc/xprtrdma/rpc_rdma.c +2 -1
index c48536f2121f..ca267a855a12 100644

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

net/sunrpc/xprtrdma/transport.c +4 -2
index 035060c05fd5..f93ff4282bf4 100644

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

net/sunrpc/xprtrdma/verbs.c +5 -5
index ad6e2e4994ce..04325f0267c1 100644

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

net/sunrpc/xprtrdma/xprt_rdma.h +1 -1
index 43974ef39a50..3cacc6f4c527 100644

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

net/tipc/netlink_compat.c +1 -1
index 1c7aa51cc2a3..49e893313652 100644

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

net/xdp/xsk_queue.h +3 -4
index ef6de0fb4e31..be9fd5a72011 100644

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

samples/bpf/tracex1_kern.c +2 -2
index 3f4599c9a202..ef30d2b353b0 100644

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

scripts/Makefile.modpost +14 -1
index f54b6ac37ac2..12a87be0fb44 100644

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

scripts/kconfig/nconf.c +1 -1
index e0f965529166..af814b39b876 100644

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

scripts/mod/modpost.c +1 -14
index f882ce0d9327..e08f75aed429 100644

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

security/keys/trusted-keys/trusted_tpm1.c +5 -3
index 230c0b27b77d..4c3cffcd296a 100644

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

sound/firewire/bebob/bebob_stream.c +7 -5
index bbae04793c50..c18017e0a3d9 100644

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

sound/pci/hda/ideapad_s740_helper.c new file +492 -0

492 lines not on this page · raw message

sound/pci/hda/patch_hdmi.c +2 -2
index 8c6f10cbced3..6d2a4dfcfe43 100644

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

sound/pci/hda/patch_realtek.c +11 -0
index 8ec57bd351df..1fe70f2fe4fe 100644

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

sound/pci/rme9652/hdsp.c +2 -1
index cea53a878c36..4aee30db034d 100644

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

sound/pci/rme9652/hdspm.c +2 -1
index 4a1f576dd9cf..51c3c6a08a1c 100644

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

sound/pci/rme9652/rme9652.c +2 -1
index 7ab10028d9fa..8def24673f35 100644

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

sound/soc/codecs/rt286.c +13 -10
index 5fb9653d9131..eec2dd93ecbb 100644

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

sound/soc/codecs/rt5670.c +12 -0
index a0c8f58d729b..47ce074289ca 100644

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

sound/soc/intel/boards/bytcr_rt5640.c +20 -0
index d5812e73eb63..1ef0464249d1 100644

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

sound/soc/intel/boards/sof_sdw.c +11 -0
index 1d7677376e74..9dc982c2c776 100644

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

sound/soc/sh/rcar/core.c +68 -1

69 lines not on this page · raw message

sound/soc/sh/rcar/ssi.c +5 -11
index d0ded427a836..042207c11651 100644

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

tools/lib/bpf/ringbuf.c +21 -9
index 06cd709a3453..86c31c787fb9 100644

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

tools/perf/Makefile.config +1 -0
index ce8516e4de34..2abbd75fbf2e 100644

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

tools/perf/util/Build +7 -0
index e2563d0154eb..0cf27354aa45 100644

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

tools/testing/selftests/drivers/net/mlxsw/mirror_gre_scale.sh +2 -1
index 6f3a70df63bc..e00435753008 100644

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

tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh +2 -2
index b0cb1aaffdda..33ddd01689be 100644

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

tools/testing/selftests/lib.mk +4 -0
index be17462fe146..0af84ad48aa7 100644

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

tools/testing/selftests/net/forwarding/mirror_lib.sh +17 -2
index 13db1cb50e57..6406cd76a19d 100644

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

tools/testing/selftests/powerpc/security/entry_flush.c +1 -1
index 78cf914fa321..68ce377b205e 100644

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

tools/testing/selftests/powerpc/security/flush_utils.h +4 -0
index 07a5eb301466..7a3d60292916 100644

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

tools/testing/selftests/powerpc/security/rfi_flush.c +1 -1
index 7565fd786640..f73484a6470f 100644

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

virt/kvm/kvm_main.c +4 -3
index 78bf3f549214..f446c36f5800 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.