Skip to contentSkip to conversation

Linux 5.10.201

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Nov 20, 2023 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.201 kernel.

All users of the 5.10 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/process/deprecated.rst                            |   20 
 Makefile                                                        |    2 
 arch/arm/boot/dts/qcom-mdm9615.dtsi                             |   14 
 arch/arm/lib/memset.S                                           |    1 
 arch/arm/xen/enlighten.c                                        |   25 
 arch/arm64/boot/dts/qcom/msm8916.dtsi                           |    2 
 arch/arm64/boot/dts/qcom/sdm845-mtp.dts                         |    2 
 arch/powerpc/include/asm/nohash/32/pte-40x.h                    |    3 
 arch/powerpc/perf/imc-pmu.c                                     |    2 
 arch/powerpc/platforms/pseries/lpar.c                           |    4 
 arch/powerpc/sysdev/xive/native.c                               |    2 
 arch/sh/Kconfig.debug                                           |   11 
 arch/x86/events/intel/pt.c                                      |   14 
 arch/x86/include/asm/page.h                                     |   10 
 arch/x86/include/asm/uaccess.h                                  |    2 
 arch/x86/kernel/cpu/bugs.c                                      |    2 
 arch/x86/kernel/head64.c                                        |    2 
 arch/x86/kvm/emulate.c                                          |    4 
 arch/x86/kvm/x86.c                                              |    2 
 arch/x86/kvm/x86.h                                              |    7 
 arch/x86/lib/copy_mc.c                                          |    8 
 arch/x86/mm/maccess.c                                           |   24 
 drivers/acpi/device_sysfs.c                                     |   10 
 drivers/base/regmap/regmap-debugfs.c                            |    2 
 drivers/base/regmap/regmap.c                                    |   16 
 drivers/char/hw_random/geode-rng.c                              |    6 
 drivers/clk/clk-asm9260.c                                       |   29 -
 drivers/clk/clk-npcm7xx.c                                       |    2 
 drivers/clk/clk-scmi.c                                          |    1 
 drivers/clk/imx/Kconfig                                         |    1 
 drivers/clk/imx/clk-imx8mq.c                                    |   17 
 drivers/clk/keystone/pll.c                                      |   15 
 drivers/clk/mediatek/clk-mt2701.c                               |    8 
 drivers/clk/mediatek/clk-mt6765.c                               |    6 
 drivers/clk/mediatek/clk-mt6779.c                               |    4 
 drivers/clk/mediatek/clk-mt6797.c                               |    6 
 drivers/clk/mediatek/clk-mt7629-eth.c                           |    4 
 drivers/clk/mediatek/clk-mt7629.c                               |    6 
 drivers/clk/qcom/Kconfig                                        |    1 
 drivers/clk/qcom/clk-rcg2.c                                     |   14 
 drivers/clk/qcom/gcc-sm8150.c                                   |   98 +--
 drivers/clk/qcom/mmcc-msm8998.c                                 |   17 
 drivers/clk/ti/apll.c                                           |   13 
 drivers/clk/ti/autoidle.c                                       |    2 
 drivers/clk/ti/clk-dra7-atl.c                                   |    6 
 drivers/clk/ti/clk.c                                            |   52 +-
 drivers/clk/ti/clkctrl.c                                        |    4 
 drivers/clk/ti/clock.h                                          |   11 
 drivers/clk/ti/clockdomain.c                                    |    2 
 drivers/clk/ti/composite.c                                      |    6 
 drivers/clk/ti/divider.c                                        |   12 
 drivers/clk/ti/dpll.c                                           |   10 
 drivers/clk/ti/fapll.c                                          |   11 
 drivers/clk/ti/fixed-factor.c                                   |    4 
 drivers/clk/ti/gate.c                                           |    8 
 drivers/clk/ti/interface.c                                      |    9 
 drivers/clk/ti/mux.c                                            |    8 
 drivers/crypto/caam/caamalg.c                                   |    3 
 drivers/crypto/caam/caamalg_qi2.c                               |    3 
 drivers/crypto/hisilicon/hpre/hpre_main.c                       |    2 
 drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c                |   34 +
 drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.h                |    1 
 drivers/crypto/qat/qat_c3xxx/adf_drv.c                          |    6 
 drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c            |    4 
 drivers/crypto/qat/qat_c3xxxvf/adf_drv.c                        |    4 
 drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c                  |   34 +
 drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.h                  |    1 
 drivers/crypto/qat/qat_c62x/adf_drv.c                           |    6 
 drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c              |    4 
 drivers/crypto/qat/qat_c62xvf/adf_drv.c                         |    4 
 drivers/crypto/qat/qat_common/adf_accel_devices.h               |    7 
 drivers/crypto/qat/qat_common/adf_transport_debug.c             |    4 
 drivers/crypto/qat/qat_common/qat_hal.c                         |   27 -
 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c          |   20 
 drivers/crypto/qat/qat_dh895xcc/adf_drv.c                       |    4 
 drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c      |    4 
 drivers/crypto/qat/qat_dh895xccvf/adf_drv.c                     |    4 
 drivers/devfreq/event/rockchip-dfi.c                            |   15 
 drivers/dma/pxa_dma.c                                           |    1 
 drivers/dma/ti/edma.c                                           |    4 
 drivers/firmware/ti_sci.c                                       |   46 -
 drivers/gpu/drm/bridge/tc358768.c                               |   25 
 drivers/gpu/drm/drm_syncobj.c                                   |    3 
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c                         |    3 
 drivers/gpu/drm/radeon/evergreen.c                              |    7 
 drivers/gpu/drm/rockchip/cdn-dp-core.c                          |   15 
 drivers/gpu/drm/rockchip/rockchip_drm_gem.c                     |    2 
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c                     |    8 
 drivers/hid/hid-cp2112.c                                        |    9 
 drivers/hid/hid-logitech-hidpp.c                                |   76 +-
 drivers/hwmon/axi-fan-control.c                                 |  101 +++
 drivers/hwmon/coretemp.c                                        |    2 
 drivers/i3c/master.c                                            |    4 
 drivers/infiniband/hw/hfi1/efivar.c                             |    2 
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c                      |    2 
 drivers/infiniband/hw/hns/hns_roce_qp.c                         |    2 
 drivers/infiniband/hw/mlx5/qp.c                                 |   27 +
 drivers/input/rmi4/rmi_bus.c                                    |    2 
 drivers/interconnect/qcom/sc7180.c                              |  256 +++++++++-
 drivers/leds/leds-pwm.c                                         |    2 
 drivers/leds/trigger/ledtrig-cpu.c                              |    4 
 drivers/media/i2c/max9286.c                                     |    2 
 drivers/media/pci/bt8xx/bttv-driver.c                           |    1 
 drivers/media/platform/s3c-camif/camif-capture.c                |    6 
 drivers/media/test-drivers/vidtv/vidtv_mux.c                    |    7 
 drivers/media/test-drivers/vidtv/vidtv_psi.c                    |   45 +
 drivers/media/usb/dvb-usb-v2/af9035.c                           |   13 
 drivers/mfd/dln2.c                                              |    1 
 drivers/mfd/mfd-core.c                                          |   17 
 drivers/misc/ti-st/st_core.c                                    |    7 
 drivers/mmc/core/mmc.c                                          |    2 
 drivers/net/can/dev/dev.c                                       |   10 
 drivers/net/ethernet/broadcom/tg3.c                             |    3 
 drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c     |    2 
 drivers/net/ethernet/google/gve/gve_main.c                      |    2 
 drivers/net/ethernet/intel/i40e/i40e_main.c                     |   10 
 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c |    2 
 drivers/net/ethernet/realtek/r8169_main.c                       |   15 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h                  |    2 
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c             |   14 
 drivers/net/ethernet/toshiba/spider_net.c                       |    2 
 drivers/net/ipvlan/ipvlan_core.c                                |    8 
 drivers/net/ipvlan/ipvlan_main.c                                |    1 
 drivers/net/macsec.c                                            |    6 
 drivers/net/wireless/mediatek/mt76/mt7603/core.c                |    2 
 drivers/net/wireless/mediatek/mt76/mt7603/mac.c                 |   23 
 drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.c             |    2 
 drivers/net/wireless/realtek/rtlwifi/rtl8192c/dm_common.c       |    2 
 drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c             |    2 
 drivers/net/wireless/realtek/rtw88/debug.c                      |    4 
 drivers/nvdimm/of_pmem.c                                        |    8 
 drivers/nvdimm/region_devs.c                                    |    8 
 drivers/pcmcia/cs.c                                             |    1 
 drivers/pcmcia/ds.c                                             |   14 
 drivers/platform/x86/wmi.c                                      |   50 -
 drivers/pwm/pwm-brcmstb.c                                       |    4 
 drivers/pwm/pwm-sti.c                                           |   75 +-
 drivers/rtc/rtc-pcf85363.c                                      |    2 
 drivers/scsi/ufs/ufshcd.c                                       |    2 
 drivers/soc/qcom/llcc-qcom.c                                    |    3 
 drivers/spi/Kconfig                                             |    1 
 drivers/spi/spi-nxp-fspi.c                                      |    2 
 drivers/staging/media/sunxi/cedrus/cedrus_hw.c                  |   24 
 drivers/thermal/thermal_core.c                                  |    6 
 drivers/tty/tty_jobctrl.c                                       |   17 
 drivers/usb/dwc2/hcd.c                                          |    2 
 drivers/usb/host/xhci-pci.c                                     |    2 
 drivers/usb/host/xhci-plat.c                                    |   23 
 drivers/usb/usbip/stub_dev.c                                    |    9 
 drivers/video/fbdev/fsl-diu-fb.c                                |    2 
 drivers/video/fbdev/imsttfb.c                                   |   33 -
 drivers/xen/xen-pciback/conf_space.c                            |   19 
 drivers/xen/xen-pciback/conf_space_capability.c                 |    8 
 drivers/xen/xen-pciback/conf_space_header.c                     |   21 
 fs/btrfs/ioctl.c                                                |   10 
 fs/ext4/extents.c                                               |   10 
 fs/f2fs/file.c                                                  |    1 
 fs/pstore/platform.c                                            |    9 
 include/linux/clk-provider.h                                    |   34 +
 include/linux/cpuhotplug.h                                      |    1 
 include/linux/idr.h                                             |    6 
 include/linux/mfd/core.h                                        |    2 
 include/linux/netdevice.h                                       |    1 
 include/linux/overflow.h                                        |  110 ++--
 include/linux/padata.h                                          |    3 
 include/net/flow.h                                              |    2 
 include/net/netfilter/nf_nat_redirect.h                         |    3 
 include/net/tcp.h                                               |    2 
 kernel/futex/core.c                                             |   12 
 kernel/irq/matrix.c                                             |    6 
 kernel/livepatch/core.c                                         |    2 
 kernel/padata.c                                                 |   14 
 kernel/sched/fair.c                                             |   18 
 kernel/trace/trace_kprobe.c                                     |    2 
 lib/test_overflow.c                                             |   98 +++
 mm/readahead.c                                                  |    3 
 net/dccp/ipv4.c                                                 |    6 
 net/dccp/ipv6.c                                                 |    6 
 net/hsr/hsr_forward.c                                           |    4 
 net/ipv4/syncookies.c                                           |   20 
 net/ipv4/tcp_input.c                                            |    9 
 net/ipv4/tcp_metrics.c                                          |   15 
 net/ipv4/udp.c                                                  |    6 
 net/ipv6/ip6_output.c                                           |    8 
 net/ipv6/syncookies.c                                           |    7 
 net/llc/llc_input.c                                             |   10 
 net/llc/llc_s_ac.c                                              |    3 
 net/llc/llc_station.c                                           |    3 
 net/netfilter/nf_nat_redirect.c                                 |   98 ++-
 net/netfilter/nft_redir.c                                       |   84 +--
 net/netfilter/xt_REDIRECT.c                                     |   10 
 net/netfilter/xt_recent.c                                       |    2 
 net/smc/af_smc.c                                                |    4 
 net/smc/smc.h                                                   |    5 
 net/smc/smc_cdc.c                                               |   11 
 net/smc/smc_close.c                                             |    5 
 net/tipc/link.c                                                 |    4 
 net/tipc/netlink.c                                              |    4 
 scripts/mod/file2alias.c                                        |   10 
 sound/soc/fsl/fsl_easrc.c                                       |    8 
 sound/soc/fsl/mpc5200_dma.c                                     |    3 
 sound/soc/intel/skylake/skl-sst-utils.c                         |    1 
 sound/soc/ti/ams-delta.c                                        |    4 
 tools/iio/iio_generic_buffer.c                                  |   59 +-
 tools/perf/util/hist.c                                          |   10 
 tools/perf/util/machine.c                                       |   22 
 tools/testing/selftests/pidfd/pidfd_fdinfo_test.c               |    2 
 tools/testing/selftests/pidfd/pidfd_test.c                      |   12 
 tools/testing/selftests/resctrl/resctrl_tests.c                 |    5 
 209 files changed, 1768 insertions(+), 968 deletions(-)

Aananth V (1):
tcp: call tcp_try_undo_recovery when an RTOd TFO SYNACK is ACKed

Abel Vesa (1):
clk: imx: Select MXC_CLK for CLK_IMX8QXP

Adam Dunlap (1):
x86/sev-es: Allow copy_from_kernel_nofault() in earlier boot

Adrian Hunter (1):
x86: Share definition of __is_canonical_address()

Alexandru Ardelean (1):
tools: iio: privatize globals and functions in iio_generic_buffer.c file

Amit Kumar Mahapatra (1):
spi: spi-zynq-qspi: add spi-mem to driver kconfig dependencies

Andrii Staikov (1):
i40e: fix potential memory leaks in i40e_remove()

AngeloGioacchino Del Regno (2):
clk: qcom: mmcc-msm8998: Add hardware clockgating registers to some clks
clk: qcom: mmcc-msm8998: Set bimc_smmu_gdsc always on

Armin Wolf (2):
platform/x86: wmi: Fix probe failure when failing to register WMI devices platform/x86: wmi: Fix opening of char device

Arnd Bergmann (1):
fbdev: fsl-diu-fb: mark wr_reg_wa() static

Barnabás Pőcze (1):
platform/x86: wmi: remove unnecessary initializations

Basavaraj Natikar (1):
xhci: Loosen RPM as default policy to cover for AMD xHC 1.1

Bastien Nocera (2):
Revert "HID: logitech-hidpp: add a module parameter to keep firmware gestures"
HID: logitech-hidpp: Remove HIDPP_QUIRK_NO_HIDINPUT quirk

Ben Wolsieffer (2):
futex: Don't include process MM in futex key on no-MMU
regmap: prevent noinc writes from clobbering cache

Benjamin Gray (1):
powerpc/xive: Fix endian conversion size

Cezary Rojewski (1):
ASoC: Intel: Skylake: Fix mem leak when parsing UUIDs fails

Chao Yu (1):
f2fs: fix to initialize map.m_pblk in f2fs_precache_extents()

Chen Ni (1):
libnvdimm/of_pmem: Use devm_kstrdup instead of kstrdup and check its return value

Chen Yu (1):
genirq/matrix: Exclude managed interrupts in irq_matrix_allocated()

Chengchang Tang (2):
RDMA/hns: Fix uninitialized ucmd in hns_roce_create_qp_common() RDMA/hns: Fix signed-unsigned mixed comparisons

Chenyuan Mi (1):
tools: iio: iio_generic_buffer: Fix some integer type and calculation

Christophe JAILLET (7):
ACPI: sysfs: Fix create_pnp_modalias() and create_of_modalias()
regmap: debugfs: Fix a erroneous check after snprintf() drm/rockchip: cdn-dp: Fix some error handling paths in cdn_dp_probe()
crypto: hisilicon/hpre - Fix a erroneous check after snprintf()
leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu'
dmaengine: pxa_dma: Remove an erroneous BUG_ON() in pxad_free_desc()
media: i2c: max9286: Fix some redundant of_node_put() calls

Christophe Leroy (1):

      powerpc/40x: Remove stale PTE_ATOMIC_UPDATES macro

D. Wythe (3):
net/smc: fix dangling sock under state SMC_APPFINCLOSEWAIT net/smc: allow cdc msg send rather than drop it with NULL sndbuf_desc net/smc: put sk reference if close work was canceled

Dan Carpenter (8):
thermal: core: prevent potential string overflow
clk: keystone: pll: fix a couple NULL vs IS_ERR() checks
clk: ti: fix double free in of_ti_divider_clk_setup() drm/rockchip: Fix type promotion bug in rockchip_gem_iommu_map()
dmaengine: ti: edma: handle irq_of_parse_and_map() errors
Input: synaptics-rmi4 - fix use after free in rmi_unregister_function()
hsr: Prevent use after free in prp_create_tagged_frame()
fbdev: imsttfb: fix a resource leak in probe

Daniel Mentz (1):
scsi: ufs: core: Leave space for '\0' in utf8 desc string

Danila Tikhonov (1):

      clk: qcom: gcc-sm8150: Fix gcc_sdcc2_apps_clk_src

Danny Kaehn (2):
hid: cp2112: Fix duplicate workqueue initialization
hid: cp2112: Fix IRQ shutdown stopping polling for all IRQs on chip

Dario Binacchi (1):
clk: ti: change ti_clk_register[_omap_hw]() API

David Howells (1):
iov_iter, x86: Be consistent about the __user tag on copy_mc_to_user()

Devi Priya (1):
clk: qcom: clk-rcg2: Fix clock rate overflow for high parent frequencies

Dhruva Gole (1):
firmware: ti_sci: Mark driver as non removable

Dinghao Liu (2):
mfd: dln2: Fix double put in dln2_probe
i3c: Fix potential refcount leak in i3c_master_register_new_i3c_devs

Dmitry Antipov (1):
wifi: rtlwifi: fix EDCA limit set by BT coexistence

Dmitry Baryshkov (3):
clk: qcom: gcc-sm8150: use ARRAY_SIZE instead of specifying num_parents
clk: asm9260: use parent index to link the reference clock
arm64: dts: qcom: sdm845-mtp: fix WiFi configuration

Dmitry Osipenko (1):
drm/bridge: tc358768: Disable non-continuous clock mode

Dominique Martinet (1):
Revert "mmc: core: Capture correct oemid-bits for eMMC cards"

Dragos Bogdan (1):
hwmon: (axi-fan-control) Fix possible NULL pointer dereference

Eric Dumazet (9):
udp: add missing WRITE_ONCE() around up->encap_rcv
tcp_metrics: add missing barriers on delete
tcp_metrics: properly set tp->snd_ssthresh in tcp_init_metrics()
tcp_metrics: do not create an entry from tcp_init_metrics()
chtls: fix tp->rcv_tstamp initialization
tcp: fix cookie_init_timestamp() overflows
net: add DEV_STATS_READ() helper
ipvlan: properly track tx_errors
inet: shrink struct flowi_common

Erik Kurzinger (1):
drm/syncobj: fix DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE

Felix Fietkau (1):
wifi: mt76: mt7603: rework/fix rx pse hang check

Filipe Manana (1):
btrfs: use u64 for buffer sizes in the tree search ioctls

Florian Fainelli (1):
pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume

Florian Westphal (1):
netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses

Furong Xu (1):
net: stmmac: xgmac: Enable support for multiple Flexible PPS outputs

Gaurav Jain (2):
crypto: caam/qi2 - fix Chacha20 + Poly1305 self test failure
crypto: caam/jr - fix Chacha20 + Poly1305 self test failure

Gaurav Kohli (1):
arm64: dts: qcom: msm8916: Fix iommu local address range

Geert Uytterhoeven (1):
sh: bios: Revive earlyprintk support

George Shuklin (1):
tg3: power down device only on SYSTEM_POWER_OFF

Giovanni Cabiddu (2):
crypto: qat - mask device capabilities with soft straps
crypto: qat - increase size of buffers

Gou Hao (1):
ext4: move 'ix' sanity check to corrent position

Greg Kroah-Hartman (1):

      Linux 5.10.201

Gustavo A. R. Silva (4):
gve: Use size_add() in call to struct_size()
mlxsw: Use size_mul() in call to struct_size()
tipc: Use size_add() in calls to struct_size()
net: spider_net: Use size_add() in call to struct_size()

Han Xu (1):
spi: nxp-fspi: use the correct ioremap function

Hans Verkuil (1):
media: dvb-usb-v2: af9035: fix missing unlock

Hans de Goede (3):
HID: logitech-hidpp: Don't restart IO, instead defer hid_connect() only
HID: logitech-hidpp: Revert "Don't restart communication if not necessary"
HID: logitech-hidpp: Move get_wireless_feature_index() check to hidpp_connect_event()

Heiner Kallweit (2):
r8169: fix rare issue with broken rx after link-down on RTL8125
r8169: respect userspace disabling IFF_MULTICAST

Helge Deller (1):
fbdev: imsttfb: Fix error path of imsttfb_probe()

Herve Codina (1):
mfd: core: Ensure disabled devices are skipped without aborting

Ian Rogers (2):
perf machine: Avoid out of bounds LBR memory read perf hist: Add missing puts to hist__account_cycles

Ilpo Järvinen (1):
selftests/resctrl: Ensure the benchmark commands fits to its array

Jason-JH.Lin (1):
drm/mediatek: Fix iommu fault during crtc enabling

Javier Carrasco (1):
rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call

Jeremy Sowden (1):
netfilter: nft_redir: use struct nf_nat_range2 throughout and deduplicate eval call-backs

Jernej Skrabec (1):
media: cedrus: Fix clock/reset sequence

Jia-Ju Bai (1):
usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency

Jiasheng Jiang (9):
pstore/platform: Add check for kstrdup
clk: mediatek: clk-mt6765: Add check for mtk_alloc_clk_data
clk: mediatek: clk-mt6779: Add check for mtk_alloc_clk_data
clk: mediatek: clk-mt6797: Add check for mtk_alloc_clk_data
clk: mediatek: clk-mt7629-eth: Add check for mtk_alloc_clk_data
clk: mediatek: clk-mt7629: Add check for mtk_alloc_clk_data
clk: mediatek: clk-mt2701: Add check for mtk_alloc_clk_data
media: vidtv: psi: Add check for kstrdup
media: vidtv: mux: Add check and kfree for kstrdup

Jinjie Ruan (2):
wifi: rtw88: debug: Fix the NULL vs IS_ERR() bug for debugfs_create_file()
misc: st_core: Do not call kfree_skb() under spin_lock_irqsave()

Jonas Blixt (1):
USB: usbip: fix stub_dev hub disconnect

Jonas Gorski (1):
hwrng: geode - fix accessing registers

Jonas Karlman (2):
drm/rockchip: vop: Fix reset of state in duplicate state crtc funcs drm/rockchip: vop: Fix call to crtc reset helper

Jonathan Neuschäfer (1):
clk: npcm7xx: Fix incorrect kfree

Josh Poimboeuf (1):
x86/srso: Fix SBPB enablement for (possible) future fixed HW

Juhee Kang (1):
r8169: use tp_to_dev instead of open code

Katya Orlova (1):
media: s3c-camif: Avoid inappropriate kfree()

Kees Cook (1):
overflow: Implement size_t saturating arithmetic helpers

Konrad Dybcio (4):
clk: qcom: mmcc-msm8998: Don't check halt bit on some branch clks
clk: qcom: mmcc-msm8998: Fix the SMMU GDSC
interconnect: qcom: sc7180: Retire DEFINE_QBCM
interconnect: qcom: sc7180: Set ACV enable_mask

Konstantin Meskhidze (1):
drm/radeon: possible buffer overflow

Krzysztof Kozlowski (1):
ARM: dts: qcom: mdm9615: populate vsdcc fixed regulator

Kuninori Morimoto (2):
ASoC: fsl: mpc5200_dma.c: Fix warning of Function parameter or member not described
ASoC: ams-delta.c: use component after check

Kuniyuki Iwashima (2):
dccp: Call security_inet_conn_request() after setting IPv4 addresses. dccp/tcp: Call security_inet_conn_request() after setting IPv6 addresses.

Kursad Oney (1):
ARM: 9321/1: memset: cast the constant byte to unsigned char

Leon Romanovsky (1):
RDMA/hfi1: Workaround truncation compilation error

Maciej Wieczor-Retman (1):
selftests/pidfd: Fix ksft print formats

Maciej Żenczykowski (1):
netfilter: xt_recent: fix (increase) ipv6 literal buffer length

Marc Kleine-Budde (2):
can: dev: can_restart(): don't crash kernel if carrier is OK
can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on()

Marek Marczykowski-Górecki (1):
xen-pciback: Consider INTx disabled when MSI/MSI-X is enabled

Mark Rutland (1):
arm64/arm: xen: enlighten: Fix KPTI checks

Masahiro Yamada (1):
modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host

Matti Vaittinen (1):
tools: iio: iio_generic_buffer ensure alignment

Michał Mirosław (1):
mfd: core: Un-constify mfd_cell.of_reg

NeilBrown (1):
Fix termination state for idr_for_each_entry_ul()

Nuno Sá (1):
hwmon: (axi-fan-control) Support temperature vs pwm points

Patrick Thompson (1):
net: r8169: Disable multicast filter for RTL8168H and RTL8107E

Patrisious Haddad (1):
IB/mlx5: Fix rdma counter binding for RAW QP

Peng Fan (1):
clk: imx: imx8mq: correct error handling path

Qais Yousef (1):

      sched/uclamp: Ignore (util == 0) optimization in feec() when p_util_max = 0

Randy Dunlap (1):
clk: linux/clk-provider.h: fix kernel-doc warnings and typos

Reuben Hawkins (1):
vfs: fix readahead(2) on block devices

Sascha Hauer (1):
PM / devfreq: rockchip-dfi: Make pmu regmap mandatory

Sebastian Andrzej Siewior (1):
powerpc/imc-pmu: Use the correct spinlock initializer.

Sergey Shtylyov (1):
usb: host: xhci-plat: fix possible kernel oops while resuming

Shigeru Yoshida (1):
tipc: Change nla_policy for bearer-related names to NLA_NUL_STRING

Sudeep Holla (1):
clk: scmi: Free scmi_clk allocated when the clocks with invalid info are skipped

Thierry Reding (1):
pwm: sti: Avoid conditional gotos

Tomas Glozar (1):
nd_btt: Make BTT lanes preemptible

Tomi Valkeinen (2):
drm/bridge: tc358768: Fix use of uninitialized variable drm/bridge: tc358768: Fix bit updates

Tony Lindgren (3):
clk: ti: Add ti_dt_clk_name() helper to use clock-output-names
clk: ti: Update pll and clockdomain clocks to use ti_dt_clk_name()
clk: ti: Update component clocks to use ti_dt_clk_name()

Uwe Kleine-König (3):
soc: qcom: llcc: Handle a second device without data corruption
leds: pwm: Don't disable the PWM when the LED should be off
pwm: sti: Reduce number of allocations and drop usage of chip_data

Varadarajan Narayanan (1):
clk: qcom: config IPQ_APSS_6018 should depend on QCOM_SMEM

Wang Yufen (1):
powerpc/pseries: fix potential memory leak in init_cpu_associativity()

WangJinchao (1):
padata: Fix refcnt handling in padata_free_shell()

Willem de Bruijn (1):
llc: verify mac len before reading mac header

Xiyu Yang (1):

      padata: Convert from atomic_t to refcount_t on parallel_data->refcnt

Yan Zhai (1):
ipv6: avoid atomic fragment on GSO packets

Yang Yingliang (3):
pcmcia: cs: fix possible hung task and memory leak pccardd()
pcmcia: ds: fix refcount leak in pcmcia_device_add()
pcmcia: ds: fix possible name leak in error path in pcmcia_device_add()

Yi Yang (1):
tty: tty_jobctrl: fix pid memleak in disassociate_ctty()

Yujie Liu (1):
tracing/kprobes: Fix the order of argument descriptions

Yuntao Wang (1):
x86/boot: Fix incorrect startup_gdt_descr.size

Zhang Rui (1):
hwmon: (coretemp) Fix potentially truncated sysfs attribute name

Zhang Shurong (1):
ASoC: fsl: Fix PM disable depth imbalance in fsl_easrc_probe

Zheng Wang (1):

      media: bttv: fix use after free error due to btv->timeout timer

Zheng Yejian (1):
livepatch: Fix missing newline character in klp_resolve_symbols()

author maintainer
#1 lore raw
Documentation/process/deprecated.rst +17 -3
index 9d83b8db8874..86ea327b7e3a 100644
@@ -70,6 +70,9 @@ Instead, the 2-factor form of the allocator should be used::
 
 	foo = kmalloc_array(count, size, GFP_KERNEL);
 
+Specifically, kmalloc() can be replaced with kmalloc_array(), and
+kzalloc() can be replaced with kcalloc().
+
 If no 2-factor form is available, the saturate-on-overflow helpers should
 be used::
 
@@ -90,9 +93,20 @@ Instead, use the helper::
         array usage and switch to a `flexible array member
         <#zero-length-and-one-element-arrays>`_ instead.
 
-See array_size(), array3_size(), and struct_size(),
-for more details as well as the related check_add_overflow() and
-check_mul_overflow() family of functions.
+For other calculations, please compose the use of the size_mul(),
+size_add(), and size_sub() helpers. For example, in the case of::
+
+	foo = krealloc(current_size + chunk_size * (count - 3), GFP_KERNEL);
+
+Instead, use the helpers::
+
+	foo = krealloc(size_add(current_size,
+				size_mul(chunk_size,
+					 size_sub(count, 3))), GFP_KERNEL);
+
+For more details, also see array3_size() and flex_array_size(),
+as well as the related check_mul_overflow(), check_add_overflow(),
+check_sub_overflow(), and check_shl_overflow() family of functions.
 
 simple_strtol(), simple_strtoll(), simple_strtoul(), simple_strtoull()
 ----------------------------------------------------------------------
Makefile +1 -1
index da4a3de444cf..7ef22771de76 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 200
+SUBLEVEL = 201
 EXTRAVERSION =
 NAME = Dare mighty things
 
arch/arm/boot/dts/qcom-mdm9615.dtsi +6 -8
index ad9b52d53ef9..982f3c392196 100644
@@ -82,14 +82,12 @@ cxo_board {
 		};
 	};
 
-	regulators {
-		vsdcc_fixed: vsdcc-regulator {
-			compatible = "regulator-fixed";
-			regulator-name = "SDCC Power";
-			regulator-min-microvolt = <2700000>;
-			regulator-max-microvolt = <2700000>;
-			regulator-always-on;
-		};
+	vsdcc_fixed: vsdcc-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "SDCC Power";
+		regulator-min-microvolt = <2700000>;
+		regulator-max-microvolt = <2700000>;
+		regulator-always-on;
 	};
 
 	soc: soc {
arch/arm/lib/memset.S +1 -0
index 6ca4535c47fb..e36d053a8a90 100644
@@ -16,6 +16,7 @@
 ENTRY(mmioset)
 ENTRY(memset)
 UNWIND( .fnstart         )
+	and	r1, r1, #255		@ cast to unsigned char
 	ands	r3, r0, #3		@ 1 unaligned?
 	mov	ip, r0			@ preserve r0 as return value
 	bne	6f			@ 1
arch/arm/xen/enlighten.c +16 -9
index 8ad576ecd0f1..3d25fd615250 100644
@@ -158,9 +158,6 @@ static int xen_starting_cpu(unsigned int cpu)
 	BUG_ON(err);
 	per_cpu(xen_vcpu, cpu) = vcpup;
 
-	if (!xen_kernel_unmapped_at_usr())
-		xen_setup_runstate_info(cpu);
-
 after_register_vcpu_info:
 	enable_percpu_irq(xen_events_irq, 0);
 	return 0;
@@ -386,9 +383,6 @@ static int __init xen_guest_init(void)
 		return -EINVAL;
 	}
 
-	if (!xen_kernel_unmapped_at_usr())
-		xen_time_setup_guest();
-
 	if (xen_initial_domain())
 		pvclock_gtod_register_notifier(&xen_pvclock_gtod_notifier);
 
@@ -398,7 +392,13 @@ static int __init xen_guest_init(void)
 }
 early_initcall(xen_guest_init);
 
-static int __init xen_pm_init(void)
+static int xen_starting_runstate_cpu(unsigned int cpu)
+{
+	xen_setup_runstate_info(cpu);
+	return 0;
+}
+
+static int __init xen_late_init(void)
 {
 	if (!xen_domain())
 		return -ENODEV;
@@ -411,9 +411,16 @@ static int __init xen_pm_init(void)
 		do_settimeofday64(&ts);
 	}
 
-	return 0;
+	if (xen_kernel_unmapped_at_usr())
+		return 0;
+
+	xen_time_setup_guest();
+
+	return cpuhp_setup_state(CPUHP_AP_ARM_XEN_RUNSTATE_STARTING,
+				 "arm/xen_runstate:starting",
+				 xen_starting_runstate_cpu, NULL);
 }
-late_initcall(xen_pm_init);
+late_initcall(xen_late_init);
 
 
 /* empty stubs */
arch/arm64/boot/dts/qcom/msm8916.dtsi +1 -1
index 5b79e4a37331..c39a299fc636 100644
@@ -1175,7 +1175,7 @@ apps_iommu: iommu@1ef0000 {
 			#size-cells = <1>;
 			#iommu-cells = <1>;
 			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
-			ranges = <0 0x01e20000 0x40000>;
+			ranges = <0 0x01e20000 0x20000>;
 			reg = <0x01ef0000 0x3000>;
 			clocks = <&gcc GCC_SMMU_CFG_CLK>,
 				 <&gcc GCC_APSS_TCU_CLK>;
arch/arm64/boot/dts/qcom/sdm845-mtp.dts +2 -0
index 1372fe8601f5..e3d2fb9aafe4 100644
@@ -564,6 +564,8 @@ &wifi {
 	vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
 	vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
 	vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
+
+	qcom,snoc-host-cap-8bit-quirk;
 };
 
 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
arch/powerpc/include/asm/nohash/32/pte-40x.h +0 -3
index 2d3153cfc0d7..acf61242e85b 100644
@@ -69,9 +69,6 @@
 
 #define _PTE_NONE_MASK	0
 
-/* Until my rework is finished, 40x still needs atomic PTE updates */
-#define PTE_ATOMIC_UPDATES	1
-
 #define _PAGE_BASE_NC	(_PAGE_PRESENT | _PAGE_ACCESSED)
 #define _PAGE_BASE	(_PAGE_BASE_NC)
 
arch/powerpc/perf/imc-pmu.c +1 -1
index b773c411aa5c..3e15d0d054b2 100644
@@ -50,7 +50,7 @@ static int trace_imc_mem_size;
  * core and trace-imc
  */
 static struct imc_pmu_ref imc_global_refc = {
-	.lock = __SPIN_LOCK_INITIALIZER(imc_global_refc.lock),
+	.lock = __SPIN_LOCK_UNLOCKED(imc_global_refc.lock),
 	.id = 0,
 	.refc = 0,
 };
arch/powerpc/platforms/pseries/lpar.c +3 -1
index 68f3b082245e..4a3425fb1939 100644
@@ -523,8 +523,10 @@ static ssize_t vcpudispatch_stats_write(struct file *file, const char __user *p,
 
 	if (cmd) {
 		rc = init_cpu_associativity();
-		if (rc)
+		if (rc) {
+			destroy_cpu_associativity();
 			goto out;
+		}
 
 		for_each_possible_cpu(cpu) {
 			disp = per_cpu_ptr(&vcpu_disp_data, cpu);
arch/powerpc/sysdev/xive/native.c +1 -1
index cb58ec7ce77a..1c7e49d9eaee 100644
@@ -779,7 +779,7 @@ int xive_native_get_queue_info(u32 vp_id, u32 prio,
 	if (out_qpage)
 		*out_qpage = be64_to_cpu(qpage);
 	if (out_qsize)
-		*out_qsize = be32_to_cpu(qsize);
+		*out_qsize = be64_to_cpu(qsize);
 	if (out_qeoi_page)
 		*out_qeoi_page = be64_to_cpu(qeoi_page);
 	if (out_escalate_irq)
arch/sh/Kconfig.debug +11 -0
index 7bc1b10b81c9..f030dd4c0860 100644
@@ -25,6 +25,17 @@ config STACK_DEBUG
 	  every function call and will therefore incur a major
 	  performance hit. Most users should say N.
 
+config EARLY_PRINTK
+	bool "Early printk"
+	depends on SH_STANDARD_BIOS
+	help
+	  Say Y here to redirect kernel printk messages to the serial port
+	  used by the SH-IPL bootloader, starting very early in the boot
+	  process and ending when the kernel's serial console is initialised.
+	  This option is only useful while porting the kernel to a new machine,
+	  when the kernel may crash or hang before the serial console is
+	  initialised.  If unsure, say N.
+
 config 4KSTACKS
 	bool "Use 4Kb for kernel stacks instead of 8Kb"
 	depends on DEBUG_KERNEL && (MMU || BROKEN) && !PAGE_SIZE_64KB
arch/x86/events/intel/pt.c +2 -12
index d87421acddc3..5667b8b994e3 100644
@@ -1360,20 +1360,10 @@ static void pt_addr_filters_fini(struct perf_event *event)
 }
 
 #ifdef CONFIG_X86_64
-static u64 canonical_address(u64 vaddr, u8 vaddr_bits)
-{
-	return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
-}
-
-static u64 is_canonical_address(u64 vaddr, u8 vaddr_bits)
-{
-	return canonical_address(vaddr, vaddr_bits) == vaddr;
-}
-
 /* Clamp to a canonical address greater-than-or-equal-to the address given */
 static u64 clamp_to_ge_canonical_addr(u64 vaddr, u8 vaddr_bits)
 {
-	return is_canonical_address(vaddr, vaddr_bits) ?
+	return __is_canonical_address(vaddr, vaddr_bits) ?
 	       vaddr :
 	       -BIT_ULL(vaddr_bits - 1);
 }
@@ -1381,7 +1371,7 @@ static u64 clamp_to_ge_canonical_addr(u64 vaddr, u8 vaddr_bits)
 /* Clamp to a canonical address less-than-or-equal-to the address given */
 static u64 clamp_to_le_canonical_addr(u64 vaddr, u8 vaddr_bits)
 {
-	return is_canonical_address(vaddr, vaddr_bits) ?
+	return __is_canonical_address(vaddr, vaddr_bits) ?
 	       vaddr :
 	       BIT_ULL(vaddr_bits - 1) - 1;
 }
arch/x86/include/asm/page.h +10 -0
index 7555b48803a8..ffae5ea9fd4e 100644
@@ -71,6 +71,16 @@ static inline void copy_user_page(void *to, void *from, unsigned long vaddr,
 extern bool __virt_addr_valid(unsigned long kaddr);
 #define virt_addr_valid(kaddr)	__virt_addr_valid((unsigned long) (kaddr))
 
+static __always_inline u64 __canonical_address(u64 vaddr, u8 vaddr_bits)
+{
+	return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
+}
+
+static __always_inline u64 __is_canonical_address(u64 vaddr, u8 vaddr_bits)
+{
+	return __canonical_address(vaddr, vaddr_bits) == vaddr;
+}
+
 #endif	/* __ASSEMBLY__ */
 
 #include <asm-generic/memory_model.h>
arch/x86/include/asm/uaccess.h +1 -1
index bb1430283c72..bf2561a5eb58 100644
@@ -446,7 +446,7 @@ copy_mc_to_kernel(void *to, const void *from, unsigned len);
 #define copy_mc_to_kernel copy_mc_to_kernel
 
 unsigned long __must_check
-copy_mc_to_user(void *to, const void *from, unsigned len);
+copy_mc_to_user(void __user *to, const void *from, unsigned len);
 #endif
 
 /*
arch/x86/kernel/cpu/bugs.c +1 -1
index ec3ddb9a456b..d9fda0b6eb19 100644
@@ -2407,7 +2407,7 @@ static void __init srso_select_mitigation(void)
 	pr_info("%s%s\n", srso_strings[srso_mitigation], (has_microcode ? "" : ", no microcode"));
 
 pred_cmd:
-	if ((boot_cpu_has(X86_FEATURE_SRSO_NO) || srso_cmd == SRSO_CMD_OFF) &&
+	if ((!boot_cpu_has_bug(X86_BUG_SRSO) || srso_cmd == SRSO_CMD_OFF) &&
 	     boot_cpu_has(X86_FEATURE_SBPB))
 		x86_pred_cmd = PRED_CMD_SBPB;
 }
arch/x86/kernel/head64.c +1 -1
index efe13ab366f4..8596b4dca945 100644
@@ -80,7 +80,7 @@ static struct desc_struct startup_gdt[GDT_ENTRIES] = {
  * while the kernel still uses a direct mapping.
  */
 static struct desc_ptr startup_gdt_descr = {
-	.size = sizeof(startup_gdt),
+	.size = sizeof(startup_gdt)-1,
 	.address = 0,
 };
 
arch/x86/kvm/emulate.c +2 -2
index 63efccc8f429..56750febf460 100644
@@ -688,7 +688,7 @@ static inline u8 ctxt_virt_addr_bits(struct x86_emulate_ctxt *ctxt)
 static inline bool emul_is_noncanonical_address(u64 la,
 						struct x86_emulate_ctxt *ctxt)
 {
-	return get_canonical(la, ctxt_virt_addr_bits(ctxt)) != la;
+	return !__is_canonical_address(la, ctxt_virt_addr_bits(ctxt));
 }
 
 /*
@@ -738,7 +738,7 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
 	case X86EMUL_MODE_PROT64:
 		*linear = la;
 		va_bits = ctxt_virt_addr_bits(ctxt);
-		if (get_canonical(la, va_bits) != la)
+		if (!__is_canonical_address(la, va_bits))
 			goto bad;
 
 		*max_size = min_t(u64, ~0u, (1ull << va_bits) - la);
arch/x86/kvm/x86.c +1 -1
index 9d3015863e58..c2899ff31a06 100644
@@ -1640,7 +1640,7 @@ static int __kvm_set_msr(struct kvm_vcpu *vcpu, u32 index, u64 data,
 		 * value, and that something deterministic happens if the guest
 		 * invokes 64-bit SYSENTER.
 		 */
-		data = get_canonical(data, vcpu_virt_addr_bits(vcpu));
+		data = __canonical_address(data, vcpu_virt_addr_bits(vcpu));
 	}
 
 	msr.data = data;
arch/x86/kvm/x86.h +1 -6
index 2bff44f1efec..4037b3cc704e 100644
@@ -156,14 +156,9 @@ static inline u8 vcpu_virt_addr_bits(struct kvm_vcpu *vcpu)
 	return kvm_read_cr4_bits(vcpu, X86_CR4_LA57) ? 57 : 48;
 }
 
-static inline u64 get_canonical(u64 la, u8 vaddr_bits)
-{
-	return ((int64_t)la << (64 - vaddr_bits)) >> (64 - vaddr_bits);
-}
-
 static inline bool is_noncanonical_address(u64 la, struct kvm_vcpu *vcpu)
 {
-	return get_canonical(la, vcpu_virt_addr_bits(vcpu)) != la;
+	return !__is_canonical_address(la, vcpu_virt_addr_bits(vcpu));
 }
 
 static inline void vcpu_cache_mmio_info(struct kvm_vcpu *vcpu,
arch/x86/lib/copy_mc.c +4 -4
index c13e8c9ee926..e058ef2d454d 100644
@@ -74,23 +74,23 @@ unsigned long __must_check copy_mc_to_kernel(void *dst, const void *src, unsigne
 }
 EXPORT_SYMBOL_GPL(copy_mc_to_kernel);
 
-unsigned long __must_check copy_mc_to_user(void *dst, const void *src, unsigned len)
+unsigned long __must_check copy_mc_to_user(void __user *dst, const void *src, unsigned len)
 {
 	unsigned long ret;
 
 	if (copy_mc_fragile_enabled) {
 		__uaccess_begin();
-		ret = copy_mc_fragile(dst, src, len);
+		ret = copy_mc_fragile((__force void *)dst, src, len);
 		__uaccess_end();
 		return ret;
 	}
 
 	if (static_cpu_has(X86_FEATURE_ERMS)) {
 		__uaccess_begin();
-		ret = copy_mc_enhanced_fast_string(dst, src, len);
+		ret = copy_mc_enhanced_fast_string((__force void *)dst, src, len);
 		__uaccess_end();
 		return ret;
 	}
 
-	return copy_user_generic(dst, src, len);
+	return copy_user_generic((__force void *)dst, src, len);
 }
arch/x86/mm/maccess.c +14 -10
index 92ec176a7293..6993f026adec 100644
@@ -4,22 +4,26 @@
 #include <linux/kernel.h>
 
 #ifdef CONFIG_X86_64
-static __always_inline u64 canonical_address(u64 vaddr, u8 vaddr_bits)
-{
-	return ((s64)vaddr << (64 - vaddr_bits)) >> (64 - vaddr_bits);
-}
-
 bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
 {
 	unsigned long vaddr = (unsigned long)unsafe_src;
 
 	/*
-	 * Range covering the highest possible canonical userspace address
-	 * as well as non-canonical address range. For the canonical range
-	 * we also need to include the userspace guard page.
+	 * Do not allow userspace addresses.  This disallows
+	 * normal userspace and the userspace guard page:
 	 */
-	return vaddr >= TASK_SIZE_MAX + PAGE_SIZE &&
-	       canonical_address(vaddr, boot_cpu_data.x86_virt_bits) == vaddr;
+	if (vaddr < TASK_SIZE_MAX + PAGE_SIZE)
+		return false;
+
+	/*
+	 * Allow everything during early boot before 'x86_virt_bits'
+	 * is initialized.  Needed for instruction decoding in early
+	 * exception handlers.
+	 */
+	if (!boot_cpu_data.x86_virt_bits)
+		return true;
+
+	return __is_canonical_address(vaddr, boot_cpu_data.x86_virt_bits);
 }
 #else
 bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
drivers/acpi/device_sysfs.c +6 -4
index fe8c7e79f472..566067a855a1 100644
@@ -156,8 +156,8 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
 		return 0;
 
 	len = snprintf(modalias, size, "acpi:");
-	if (len <= 0)
-		return len;
+	if (len >= size)
+		return -ENOMEM;
 
 	size -= len;
 
@@ -210,8 +210,10 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
 	len = snprintf(modalias, size, "of:N%sT", (char *)buf.pointer);
 	ACPI_FREE(buf.pointer);
 
-	if (len <= 0)
-		return len;
+	if (len >= size)
+		return -ENOMEM;
+
+	size -= len;
 
 	of_compatible = acpi_dev->data.of_compatible;
 	if (of_compatible->type == ACPI_TYPE_PACKAGE) {
drivers/base/regmap/regmap-debugfs.c +1 -1
index 211a335a608d..ed54dc31e6fd 100644
@@ -48,7 +48,7 @@ static ssize_t regmap_name_read_file(struct file *file,
 		name = map->dev->driver->name;
 
 	ret = snprintf(buf, PAGE_SIZE, "%s\n", name);
-	if (ret < 0) {
+	if (ret >= PAGE_SIZE) {
 		kfree(buf);
 		return ret;
 	}
drivers/base/regmap/regmap.c +9 -7
index 3edff8606ac9..7bc603145bd9 100644
@@ -1643,17 +1643,19 @@ static int _regmap_raw_write_impl(struct regmap *map, unsigned int reg,
 	}
 
 	if (!map->cache_bypass && map->format.parse_val) {
-		unsigned int ival;
+		unsigned int ival, offset;
 		int val_bytes = map->format.val_bytes;
-		for (i = 0; i < val_len / val_bytes; i++) {
-			ival = map->format.parse_val(val + (i * val_bytes));
-			ret = regcache_write(map,
-					     reg + regmap_get_offset(map, i),
-					     ival);
+
+		/* Cache the last written value for noinc writes */
+		i = noinc ? val_len - val_bytes : 0;
+		for (; i < val_len; i += val_bytes) {
+			ival = map->format.parse_val(val + i);
+			offset = noinc ? 0 : regmap_get_offset(map, i / val_bytes);
+			ret = regcache_write(map, reg + offset, ival);
 			if (ret) {
 				dev_err(map->dev,
 					"Error in caching of register: %x ret: %d\n",
-					reg + regmap_get_offset(map, i), ret);
+					reg + offset, ret);
 				return ret;
 			}
 		}
drivers/char/hw_random/geode-rng.c +4 -2
index 207272979f23..2f8289865ec8 100644
@@ -58,7 +58,8 @@ struct amd_geode_priv {
 
 static int geode_rng_data_read(struct hwrng *rng, u32 *data)
 {
-	void __iomem *mem = (void __iomem *)rng->priv;
+	struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
+	void __iomem *mem = priv->membase;
 
 	*data = readl(mem + GEODE_RNG_DATA_REG);
 
@@ -67,7 +68,8 @@ static int geode_rng_data_read(struct hwrng *rng, u32 *data)
 
 static int geode_rng_data_present(struct hwrng *rng, int wait)
 {
-	void __iomem *mem = (void __iomem *)rng->priv;
+	struct amd_geode_priv *priv = (struct amd_geode_priv *)rng->priv;
+	void __iomem *mem = priv->membase;
 	int data, i;
 
 	for (i = 0; i < 20; i++) {
drivers/clk/clk-asm9260.c +12 -17
index bacebd457e6f..8b3c059e19a1 100644
@@ -80,7 +80,7 @@ struct asm9260_mux_clock {
 	u8			mask;
 	u32			*table;
 	const char		*name;
-	const char		**parent_names;
+	const struct clk_parent_data *parent_data;
 	u8			num_parents;
 	unsigned long		offset;
 	unsigned long		flags;
@@ -232,10 +232,10 @@ static const struct asm9260_gate_data asm9260_ahb_gates[] __initconst = {
 		HW_AHBCLKCTRL1,	16 },
 };
 
-static const char __initdata *main_mux_p[] =   { NULL, NULL };
-static const char __initdata *i2s0_mux_p[] =   { NULL, NULL, "i2s0m_div"};
-static const char __initdata *i2s1_mux_p[] =   { NULL, NULL, "i2s1m_div"};
-static const char __initdata *clkout_mux_p[] = { NULL, NULL, "rtc"};
+static struct clk_parent_data __initdata main_mux_p[] =   { { .index = 0, }, { .name = "pll" } };
+static struct clk_parent_data __initdata i2s0_mux_p[] =   { { .index = 0, }, { .name = "pll" }, { .name = "i2s0m_div"} };
+static struct clk_parent_data __initdata i2s1_mux_p[] =   { { .index = 0, }, { .name = "pll" }, { .name = "i2s1m_div"} };
+static struct clk_parent_data __initdata clkout_mux_p[] = { { .index = 0, }, { .name = "pll" }, { .name = "rtc"} };
 static u32 three_mux_table[] = {0, 1, 3};
 
 static struct asm9260_mux_clock asm9260_mux_clks[] __initdata = {
@@ -255,9 +255,10 @@ static struct asm9260_mux_clock asm9260_mux_clks[] __initdata = {
 
 static void __init asm9260_acc_init(struct device_node *np)
 {
-	struct clk_hw *hw;
+	struct clk_hw *hw, *pll_hw;
 	struct clk_hw **hws;
-	const char *ref_clk, *pll_clk = "pll";
+	const char *pll_clk = "pll";
+	struct clk_parent_data pll_parent_data = { .index = 0 };
 	u32 rate;
 	int n;
 
@@ -274,21 +275,15 @@ static void __init asm9260_acc_init(struct device_node *np)
 	/* register pll */
 	rate = (ioread32(base + HW_SYSPLLCTRL) & 0xffff) * 1000000;
 
-	/* TODO: Convert to DT parent scheme */
-	ref_clk = of_clk_get_parent_name(np, 0);
-	hw = __clk_hw_register_fixed_rate(NULL, NULL, pll_clk,
-			ref_clk, NULL, NULL, 0, rate, 0,
-			CLK_FIXED_RATE_PARENT_ACCURACY);
-
-	if (IS_ERR(hw))
+	pll_hw = clk_hw_register_fixed_rate_parent_accuracy(NULL, pll_clk, &pll_parent_data,
+							0, rate);
+	if (IS_ERR(pll_hw))
 		panic("%pOFn: can't register REFCLK. Check DT!", np);
 
 	for (n = 0; n < ARRAY_SIZE(asm9260_mux_clks); n++) {
 		const struct asm9260_mux_clock *mc = &asm9260_mux_clks[n];
 
-		mc->parent_names[0] = ref_clk;
-		mc->parent_names[1] = pll_clk;
-		hw = clk_hw_register_mux_table(NULL, mc->name, mc->parent_names,
+		hw = clk_hw_register_mux_table_parent_data(NULL, mc->name, mc->parent_data,
 				mc->num_parents, mc->flags, base + mc->offset,
 				0, mc->mask, 0, mc->table, &asm9260_clk_lock);
 	}
drivers/clk/clk-npcm7xx.c +1 -1
index 27a86b7a34db..c82df105b0a2 100644
@@ -647,7 +647,7 @@ static void __init npcm7xx_clk_init(struct device_node *clk_np)
 	return;
 
 npcm7xx_init_fail:
-	kfree(npcm7xx_clk_data->hws);
+	kfree(npcm7xx_clk_data);
 npcm7xx_init_np_err:
 	iounmap(clk_base);
 npcm7xx_init_error:
drivers/clk/clk-scmi.c +1 -0
index c754dfbb73fd..c62636fb4aca 100644
@@ -170,6 +170,7 @@ static int scmi_clocks_probe(struct scmi_device *sdev)
 		sclk->info = handle->clk_ops->info_get(handle, idx);
 		if (!sclk->info) {
 			dev_dbg(dev, "invalid clock info for idx %d\n", idx);
+			devm_kfree(dev, sclk);
 			continue;
 		}
 
drivers/clk/imx/Kconfig +1 -0
index 47d9ec3abd2f..d3d730610cb4 100644
@@ -96,5 +96,6 @@ config CLK_IMX8QXP
 	depends on (ARCH_MXC && ARM64) || COMPILE_TEST
 	depends on IMX_SCU && HAVE_ARM_SMCCC
 	select MXC_CLK_SCU
+	select MXC_CLK
 	help
 	  Build the driver for IMX8QXP SCU based clocks.
drivers/clk/imx/clk-imx8mq.c +10 -7
index f679e5cc320b..89313dd7a57f 100644
@@ -280,8 +280,7 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
 	void __iomem *base;
 	int err;
 
-	clk_hw_data = kzalloc(struct_size(clk_hw_data, hws,
-					  IMX8MQ_CLK_END), GFP_KERNEL);
+	clk_hw_data = devm_kzalloc(dev, struct_size(clk_hw_data, hws, IMX8MQ_CLK_END), GFP_KERNEL);
 	if (WARN_ON(!clk_hw_data))
 		return -ENOMEM;
 
@@ -298,10 +297,12 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
 	hws[IMX8MQ_CLK_EXT4] = imx_obtain_fixed_clk_hw(np, "clk_ext4");
 
 	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mq-anatop");
-	base = of_iomap(np, 0);
+	base = devm_of_iomap(dev, np, 0, NULL);
 	of_node_put(np);
-	if (WARN_ON(!base))
-		return -ENOMEM;
+	if (WARN_ON(IS_ERR(base))) {
+		err = PTR_ERR(base);
+		goto unregister_hws;
+	}
 
 	hws[IMX8MQ_ARM_PLL_REF_SEL] = imx_clk_hw_mux("arm_pll_ref_sel", base + 0x28, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
 	hws[IMX8MQ_GPU_PLL_REF_SEL] = imx_clk_hw_mux("gpu_pll_ref_sel", base + 0x18, 16, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
@@ -373,8 +374,10 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
 
 	np = dev->of_node;
 	base = devm_platform_ioremap_resource(pdev, 0);
-	if (WARN_ON(IS_ERR(base)))
-		return PTR_ERR(base);
+	if (WARN_ON(IS_ERR(base))) {
+		err = PTR_ERR(base);
+		goto unregister_hws;
+	}
 
 	/* CORE */
 	hws[IMX8MQ_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mq_a53_sels, base + 0x8000);
drivers/clk/keystone/pll.c +9 -6
index ee5c72369334..6bbdd4705d71 100644
@@ -281,12 +281,13 @@ static void __init of_pll_div_clk_init(struct device_node *node)
 
 	clk = clk_register_divider(NULL, clk_name, parent_name, 0, reg, shift,
 				 mask, 0, NULL);
-	if (clk) {
-		of_clk_add_provider(node, of_clk_src_simple_get, clk);
-	} else {
+	if (IS_ERR(clk)) {
 		pr_err("%s: error registering divider %s\n", __func__, clk_name);
 		iounmap(reg);
+		return;
 	}
+
+	of_clk_add_provider(node, of_clk_src_simple_get, clk);
 }
 CLK_OF_DECLARE(pll_divider_clock, "ti,keystone,pll-divider-clock", of_pll_div_clk_init);
 
@@ -328,10 +329,12 @@ static void __init of_pll_mux_clk_init(struct device_node *node)
 	clk = clk_register_mux(NULL, clk_name, (const char **)&parents,
 				ARRAY_SIZE(parents) , 0, reg, shift, mask,
 				0, NULL);
-	if (clk)
-		of_clk_add_provider(node, of_clk_src_simple_get, clk);
-	else
+	if (IS_ERR(clk)) {
 		pr_err("%s: error registering mux %s\n", __func__, clk_name);
+		return;
+	}
+
+	of_clk_add_provider(node, of_clk_src_simple_get, clk);
 }
 CLK_OF_DECLARE(pll_mux_clock, "ti,keystone,pll-mux-clock", of_pll_mux_clk_init);
 
drivers/clk/mediatek/clk-mt2701.c +8 -0
index 695be0f77427..c67cd73aca17 100644
@@ -675,6 +675,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
 								clk_data);
@@ -742,6 +744,8 @@ static void __init mtk_infrasys_init_early(struct device_node *node)
 
 	if (!infra_clk_data) {
 		infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
+		if (!infra_clk_data)
+			return;
 
 		for (i = 0; i < CLK_INFRA_NR; i++)
 			infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
@@ -768,6 +772,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
 
 	if (!infra_clk_data) {
 		infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
+		if (!infra_clk_data)
+			return -ENOMEM;
 	} else {
 		for (i = 0; i < CLK_INFRA_NR; i++) {
 			if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))
@@ -896,6 +902,8 @@ static int mtk_pericfg_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_PERI_NR);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
 						clk_data);
drivers/clk/mediatek/clk-mt6765.c +6 -0
index d77ea5aff292..17352342b698 100644
@@ -785,6 +785,8 @@ static int clk_mt6765_apmixed_probe(struct platform_device *pdev)
 	}
 
 	clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data);
 
@@ -820,6 +822,8 @@ static int clk_mt6765_top_probe(struct platform_device *pdev)
 	}
 
 	clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_fixed_clks(fixed_clks, ARRAY_SIZE(fixed_clks),
 				    clk_data);
@@ -860,6 +864,8 @@ static int clk_mt6765_ifr_probe(struct platform_device *pdev)
 	}
 
 	clk_data = mtk_alloc_clk_data(CLK_IFR_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, ifr_clks, ARRAY_SIZE(ifr_clks),
 			       clk_data);
drivers/clk/mediatek/clk-mt6779.c +4 -0
index 6e0d3a166729..cf720651fc53 100644
@@ -1216,6 +1216,8 @@ static int clk_mt6779_apmixed_probe(struct platform_device *pdev)
 	struct device_node *node = pdev->dev.of_node;
 
 	clk_data = mtk_alloc_clk_data(CLK_APMIXED_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_plls(node, plls, ARRAY_SIZE(plls), clk_data);
 
@@ -1236,6 +1238,8 @@ static int clk_mt6779_top_probe(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
 				    clk_data);
drivers/clk/mediatek/clk-mt6797.c +6 -0
index 428eb24ffec5..98d456023f4e 100644
@@ -391,6 +391,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_TOP_NR);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
 				 clk_data);
@@ -563,6 +565,8 @@ static void mtk_infrasys_init_early(struct device_node *node)
 
 	if (!infra_clk_data) {
 		infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
+		if (!infra_clk_data)
+			return;
 
 		for (i = 0; i < CLK_INFRA_NR; i++)
 			infra_clk_data->clks[i] = ERR_PTR(-EPROBE_DEFER);
@@ -587,6 +591,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
 
 	if (!infra_clk_data) {
 		infra_clk_data = mtk_alloc_clk_data(CLK_INFRA_NR);
+		if (!infra_clk_data)
+			return -ENOMEM;
 	} else {
 		for (i = 0; i < CLK_INFRA_NR; i++) {
 			if (infra_clk_data->clks[i] == ERR_PTR(-EPROBE_DEFER))
drivers/clk/mediatek/clk-mt7629-eth.c +4 -0
index 88279d0ea1a7..3ab7b672f8c7 100644
@@ -83,6 +83,8 @@ static int clk_mt7629_ethsys_init(struct platform_device *pdev)
 	int r;
 
 	clk_data = mtk_alloc_clk_data(CLK_ETH_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, eth_clks, CLK_ETH_NR_CLK, clk_data);
 
@@ -105,6 +107,8 @@ static int clk_mt7629_sgmiisys_init(struct platform_device *pdev)
 	int r;
 
 	clk_data = mtk_alloc_clk_data(CLK_SGMII_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, sgmii_clks[id++], CLK_SGMII_NR_CLK,
 			       clk_data);
drivers/clk/mediatek/clk-mt7629.c +6 -0
index a0ee079670c7..f791e53b812a 100644
@@ -580,6 +580,8 @@ static int mtk_topckgen_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
 				    clk_data);
@@ -603,6 +605,8 @@ static int mtk_infrasys_init(struct platform_device *pdev)
 	struct clk_onecell_data *clk_data;
 
 	clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
 			       clk_data);
@@ -626,6 +630,8 @@ static int mtk_pericfg_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clk_data = mtk_alloc_clk_data(CLK_PERI_NR_CLK);
+	if (!clk_data)
+		return -ENOMEM;
 
 	mtk_clk_register_gates(node, peri_clks, ARRAY_SIZE(peri_clks),
 			       clk_data);
drivers/clk/qcom/Kconfig +1 -0
index 3a965bd326d5..3998e25c4192 100644
@@ -110,6 +110,7 @@ config IPQ_APSS_6018
 	tristate "IPQ APSS Clock Controller"
 	select IPQ_APSS_PLL
 	depends on QCOM_APCS_IPC || COMPILE_TEST
+	depends on QCOM_SMEM
 	help
 	  Support for APSS clock controller on IPQ platforms. The
 	  APSS clock controller manages the Mux and enable block that feeds the
drivers/clk/qcom/clk-rcg2.c +4 -10
index 71a0d30cf44d..eb4fd803bae0 100644
@@ -147,17 +147,11 @@ static int clk_rcg2_set_parent(struct clk_hw *hw, u8 index)
 static unsigned long
 calc_rate(unsigned long rate, u32 m, u32 n, u32 mode, u32 hid_div)
 {
-	if (hid_div) {
-		rate *= 2;
-		rate /= hid_div + 1;
-	}
+	if (hid_div)
+		rate = mult_frac(rate, 2, hid_div + 1);
 
-	if (mode) {
-		u64 tmp = rate;
-		tmp *= m;
-		do_div(tmp, n);
-		rate = tmp;
-	}
+	if (mode)
+		rate = mult_frac(rate, m, n);
 
 	return rate;
 }
drivers/clk/qcom/gcc-sm8150.c +49 -49

386 lines not on this page · raw message

drivers/clk/qcom/mmcc-msm8998.c +16 -1
index dd68983fe22e..a68764cfb793 100644
@@ -1211,6 +1211,8 @@ static struct clk_rcg2 vfe1_clk_src = {
 
 static struct clk_branch misc_ahb_clk = {
 	.halt_reg = 0x328,
+	.hwcg_reg = 0x328,
+	.hwcg_bit = 1,
 	.clkr = {
 		.enable_reg = 0x328,
 		.enable_mask = BIT(0),
@@ -1241,6 +1243,8 @@ static struct clk_branch video_core_clk = {
 
 static struct clk_branch video_ahb_clk = {
 	.halt_reg = 0x1030,
+	.hwcg_reg = 0x1030,
+	.hwcg_bit = 1,
 	.clkr = {
 		.enable_reg = 0x1030,
 		.enable_mask = BIT(0),
@@ -1315,6 +1319,8 @@ static struct clk_branch video_subcore1_clk = {
 
 static struct clk_branch mdss_ahb_clk = {
 	.halt_reg = 0x2308,
+	.hwcg_reg = 0x2308,
+	.hwcg_bit = 1,
 	.clkr = {
 		.enable_reg = 0x2308,
 		.enable_mask = BIT(0),
@@ -2481,6 +2487,7 @@ static struct clk_branch fd_ahb_clk = {
 
 static struct clk_branch mnoc_ahb_clk = {
 	.halt_reg = 0x5024,
+	.halt_check = BRANCH_HALT_SKIP,
 	.clkr = {
 		.enable_reg = 0x5024,
 		.enable_mask = BIT(0),
@@ -2496,6 +2503,9 @@ static struct clk_branch mnoc_ahb_clk = {
 
 static struct clk_branch bimc_smmu_ahb_clk = {
 	.halt_reg = 0xe004,
+	.halt_check = BRANCH_HALT_SKIP,
+	.hwcg_reg = 0xe004,
+	.hwcg_bit = 1,
 	.clkr = {
 		.enable_reg = 0xe004,
 		.enable_mask = BIT(0),
@@ -2511,6 +2521,9 @@ static struct clk_branch bimc_smmu_ahb_clk = {
 
 static struct clk_branch bimc_smmu_axi_clk = {
 	.halt_reg = 0xe008,
+	.halt_check = BRANCH_HALT_SKIP,
+	.hwcg_reg = 0xe008,
+	.hwcg_bit = 1,
 	.clkr = {
 		.enable_reg = 0xe008,
 		.enable_mask = BIT(0),
@@ -2649,11 +2662,13 @@ static struct gdsc camss_cpp_gdsc = {
 static struct gdsc bimc_smmu_gdsc = {
 	.gdscr = 0xe020,
 	.gds_hw_ctrl = 0xe024,
+	.cxcs = (unsigned int []){ 0xe008 },
+	.cxc_count = 1,
 	.pd = {
 		.name = "bimc_smmu",
 	},
 	.pwrsts = PWRSTS_OFF_ON,
-	.flags = HW_CTRL,
+	.flags = VOTABLE,
 };
 
 static struct clk_regmap *mmcc_msm8998_clocks[] = {
drivers/clk/ti/apll.c +9 -4
index ac5bc8857a51..f921c6812852 100644
@@ -139,6 +139,7 @@ static void __init omap_clk_register_apll(void *user,
 	struct clk_hw *hw = user;
 	struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw);
 	struct dpll_data *ad = clk_hw->dpll_data;
+	const char *name;
 	struct clk *clk;
 	const struct clk_init_data *init = clk_hw->hw.init;
 
@@ -166,7 +167,8 @@ static void __init omap_clk_register_apll(void *user,
 
 	ad->clk_bypass = __clk_get_hw(clk);
 
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, node->name);
+	name = ti_dt_clk_name(node);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 	if (!IS_ERR(clk)) {
 		of_clk_add_provider(node, of_clk_src_simple_get, clk);
 		kfree(init->parent_names);
@@ -198,7 +200,7 @@ static void __init of_dra7_apll_setup(struct device_node *node)
 	clk_hw->dpll_data = ad;
 	clk_hw->hw.init = init;
 
-	init->name = node->name;
+	init->name = ti_dt_clk_name(node);
 	init->ops = &apll_ck_ops;
 
 	init->num_parents = of_clk_get_parent_count(node);
@@ -347,6 +349,7 @@ static void __init of_omap2_apll_setup(struct device_node *node)
 	struct dpll_data *ad = NULL;
 	struct clk_hw_omap *clk_hw = NULL;
 	struct clk_init_data *init = NULL;
+	const char *name;
 	struct clk *clk;
 	const char *parent_name;
 	u32 val;
@@ -362,7 +365,8 @@ static void __init of_omap2_apll_setup(struct device_node *node)
 	clk_hw->dpll_data = ad;
 	clk_hw->hw.init = init;
 	init->ops = &omap2_apll_ops;
-	init->name = node->name;
+	name = ti_dt_clk_name(node);
+	init->name = name;
 	clk_hw->ops = &omap2_apll_hwops;
 
 	init->num_parents = of_clk_get_parent_count(node);
@@ -403,7 +407,8 @@ static void __init of_omap2_apll_setup(struct device_node *node)
 	if (ret)
 		goto cleanup;
 
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, node->name);
+	name = ti_dt_clk_name(node);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 	if (!IS_ERR(clk)) {
 		of_clk_add_provider(node, of_clk_src_simple_get, clk);
 		kfree(init);
drivers/clk/ti/autoidle.c +1 -1
index f6f8a409f148..d6e5f1511ace 100644
@@ -205,7 +205,7 @@ int __init of_ti_clk_autoidle_setup(struct device_node *node)
 		return -ENOMEM;
 
 	clk->shift = shift;
-	clk->name = node->name;
+	clk->name = ti_dt_clk_name(node);
 	ret = ti_clk_get_reg_addr(node, 0, &clk->reg);
 	if (ret) {
 		kfree(clk);
drivers/clk/ti/clk-dra7-atl.c +4 -2
index e2e59d78c173..62508e74a47a 100644
@@ -173,6 +173,7 @@ static void __init of_dra7_atl_clock_setup(struct device_node *node)
 	struct dra7_atl_desc *clk_hw = NULL;
 	struct clk_init_data init = { NULL };
 	const char **parent_names = NULL;
+	const char *name;
 	struct clk *clk;
 
 	clk_hw = kzalloc(sizeof(*clk_hw), GFP_KERNEL);
@@ -183,7 +184,8 @@ static void __init of_dra7_atl_clock_setup(struct device_node *node)
 
 	clk_hw->hw.init = &init;
 	clk_hw->divider = 1;
-	init.name = node->name;
+	name = ti_dt_clk_name(node);
+	init.name = name;
 	init.ops = &atl_clk_ops;
 	init.flags = CLK_IGNORE_UNUSED;
 	init.num_parents = of_clk_get_parent_count(node);
@@ -203,7 +205,7 @@ static void __init of_dra7_atl_clock_setup(struct device_node *node)
 
 	init.parent_names = parent_names;
 
-	clk = ti_clk_register(NULL, &clk_hw->hw, node->name);
+	clk = of_ti_clk_register(node, &clk_hw->hw, name);
 
 	if (!IS_ERR(clk)) {
 		of_clk_add_provider(node, of_clk_src_simple_get, clk);
drivers/clk/ti/clk.c +34 -18

115 lines not on this page · raw message

drivers/clk/ti/clkctrl.c +2 -2
index 157abc46dcf4..1424b615a4cc 100644
@@ -317,7 +317,7 @@ _ti_clkctrl_clk_register(struct omap_clkctrl_provider *provider,
 	init.ops = ops;
 	init.flags = 0;
 
-	clk = ti_clk_register(NULL, clk_hw, init.name);
+	clk = of_ti_clk_register(node, clk_hw, init.name);
 	if (IS_ERR_OR_NULL(clk)) {
 		ret = -EINVAL;
 		goto cleanup;
@@ -701,7 +701,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
 		init.ops = &omap4_clkctrl_clk_ops;
 		hw->hw.init = &init;
 
-		clk = ti_clk_register_omap_hw(NULL, &hw->hw, init.name);
+		clk = of_ti_clk_register_omap_hw(node, &hw->hw, init.name);
 		if (IS_ERR_OR_NULL(clk))
 			goto cleanup;
 
drivers/clk/ti/clock.h +6 -5
index f1dd62de2bfc..821f33ee330e 100644
@@ -210,11 +210,12 @@ extern const struct omap_clkctrl_data dm816_clkctrl_data[];
 
 typedef void (*ti_of_clk_init_cb_t)(void *, struct device_node *);
 
-struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw,
-			    const char *con);
-struct clk *ti_clk_register_omap_hw(struct device *dev, struct clk_hw *hw,
-				    const char *con);
-int ti_clk_add_alias(struct device *dev, struct clk *clk, const char *con);
+struct clk *of_ti_clk_register(struct device_node *node, struct clk_hw *hw,
+			       const char *con);
+struct clk *of_ti_clk_register_omap_hw(struct device_node *node,
+				       struct clk_hw *hw, const char *con);
+const char *ti_dt_clk_name(struct device_node *np);
+int ti_clk_add_alias(struct clk *clk, const char *con);
 void ti_clk_add_aliases(void);
 
 void ti_clk_latch(struct clk_omap_reg *reg, s8 shift);
drivers/clk/ti/clockdomain.c +1 -1
index 700b7f44f671..e5f447f4377b 100644
@@ -131,7 +131,7 @@ static void __init of_ti_clockdomain_setup(struct device_node *node)
 {
 	struct clk *clk;
 	struct clk_hw *clk_hw;
-	const char *clkdm_name = node->name;
+	const char *clkdm_name = ti_dt_clk_name(node);
 	int i;
 	unsigned int num_clks;
 
drivers/clk/ti/composite.c +4 -2
index eaa43575cfa5..78d44158fb7d 100644
@@ -125,6 +125,7 @@ static void __init _register_composite(void *user,
 	struct component_clk *comp;
 	int num_parents = 0;
 	const char **parent_names = NULL;
+	const char *name;
 	int i;
 	int ret;
 
@@ -172,7 +173,8 @@ static void __init _register_composite(void *user,
 		goto cleanup;
 	}
 
-	clk = clk_register_composite(NULL, node->name,
+	name = ti_dt_clk_name(node);
+	clk = clk_register_composite(NULL, name,
 				     parent_names, num_parents,
 				     _get_hw(cclk, CLK_COMPONENT_TYPE_MUX),
 				     &ti_clk_mux_ops,
@@ -182,7 +184,7 @@ static void __init _register_composite(void *user,
 				     &ti_composite_gate_ops, 0);
 
 	if (!IS_ERR(clk)) {
-		ret = ti_clk_add_alias(NULL, clk, node->name);
+		ret = ti_clk_add_alias(clk, name);
 		if (ret) {
 			clk_unregister(clk);
 			goto cleanup;
drivers/clk/ti/divider.c +4 -8
index 28080df92f72..4cc0aaa6cb13 100644
@@ -317,13 +317,14 @@ static struct clk *_register_divider(struct device_node *node,
 				     u32 flags,
 				     struct clk_omap_divider *div)
 {
-	struct clk *clk;
 	struct clk_init_data init;
 	const char *parent_name;
+	const char *name;
 
 	parent_name = of_clk_get_parent_name(node, 0);
 
-	init.name = node->name;
+	name = ti_dt_clk_name(node);
+	init.name = name;
 	init.ops = &ti_clk_divider_ops;
 	init.flags = flags;
 	init.parent_names = (parent_name ? &parent_name : NULL);
@@ -332,12 +333,7 @@ static struct clk *_register_divider(struct device_node *node,
 	div->hw.init = &init;
 
 	/* register the clock */
-	clk = ti_clk_register(NULL, &div->hw, node->name);
-
-	if (IS_ERR(clk))
-		kfree(div);
-
-	return clk;
+	return of_ti_clk_register(node, &div->hw, name);
 }
 
 int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
drivers/clk/ti/dpll.c +6 -4
index 247510e306e2..13d01594516d 100644
@@ -164,6 +164,7 @@ static void __init _register_dpll(void *user,
 	struct clk_hw *hw = user;
 	struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw);
 	struct dpll_data *dd = clk_hw->dpll_data;
+	const char *name;
 	struct clk *clk;
 	const struct clk_init_data *init = hw->init;
 
@@ -193,7 +194,8 @@ static void __init _register_dpll(void *user,
 	dd->clk_bypass = __clk_get_hw(clk);
 
 	/* register the clock */
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, node->name);
+	name = ti_dt_clk_name(node);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
 	if (!IS_ERR(clk)) {
 		of_clk_add_provider(node, of_clk_src_simple_get, clk);
@@ -227,7 +229,7 @@ static void _register_dpll_x2(struct device_node *node,
 	struct clk *clk;
 	struct clk_init_data init = { NULL };
 	struct clk_hw_omap *clk_hw;
-	const char *name = node->name;
+	const char *name = ti_dt_clk_name(node);
 	const char *parent_name;
 
 	parent_name = of_clk_get_parent_name(node, 0);
@@ -265,7 +267,7 @@ static void _register_dpll_x2(struct device_node *node,
 #endif
 
 	/* register the clock */
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
 	if (IS_ERR(clk))
 		kfree(clk_hw);
@@ -302,7 +304,7 @@ static void __init of_ti_dpll_setup(struct device_node *node,
 	clk_hw->ops = &clkhwops_omap3_dpll;
 	clk_hw->hw.init = init;
 
-	init->name = node->name;
+	init->name = ti_dt_clk_name(node);
 	init->ops = ops;
 
 	init->num_parents = of_clk_get_parent_count(node);
drivers/clk/ti/fapll.c +7 -4
index 8024c6d2b9e9..749c6b73abff 100644
@@ -19,6 +19,8 @@
 #include <linux/of_address.h>
 #include <linux/clk/ti.h>
 
+#include "clock.h"
+
 /* FAPLL Control Register PLL_CTRL */
 #define FAPLL_MAIN_MULT_N_SHIFT	16
 #define FAPLL_MAIN_DIV_P_SHIFT	8
@@ -542,6 +544,7 @@ static void __init ti_fapll_setup(struct device_node *node)
 	struct clk_init_data *init = NULL;
 	const char *parent_name[2];
 	struct clk *pll_clk;
+	const char *name;
 	int i;
 
 	fd = kzalloc(sizeof(*fd), GFP_KERNEL);
@@ -559,7 +562,8 @@ static void __init ti_fapll_setup(struct device_node *node)
 		goto free;
 
 	init->ops = &ti_fapll_ops;
-	init->name = node->name;
+	name = ti_dt_clk_name(node);
+	init->name = name;
 
 	init->num_parents = of_clk_get_parent_count(node);
 	if (init->num_parents != 2) {
@@ -591,7 +595,7 @@ static void __init ti_fapll_setup(struct device_node *node)
 	if (fapll_is_ddr_pll(fd->base))
 		fd->bypass_bit_inverted = true;
 
-	fd->name = node->name;
+	fd->name = name;
 	fd->hw.init = init;
 
 	/* Register the parent PLL */
@@ -638,8 +642,7 @@ static void __init ti_fapll_setup(struct device_node *node)
 				freq = NULL;
 		}
 		synth_clk = ti_fapll_synth_setup(fd, freq, div, output_instance,
-						 output_name, node->name,
-						 pll_clk);
+						 output_name, name, pll_clk);
 		if (IS_ERR(synth_clk))
 			continue;
 
drivers/clk/ti/fixed-factor.c +2 -2
index 7cbe896db071..a4f9c1c15613 100644
@@ -36,7 +36,7 @@
 static void __init of_ti_fixed_factor_clk_setup(struct device_node *node)
 {
 	struct clk *clk;
-	const char *clk_name = node->name;
+	const char *clk_name = ti_dt_clk_name(node);
 	const char *parent_name;
 	u32 div, mult;
 	u32 flags = 0;
@@ -62,7 +62,7 @@ static void __init of_ti_fixed_factor_clk_setup(struct device_node *node)
 	if (!IS_ERR(clk)) {
 		of_clk_add_provider(node, of_clk_src_simple_get, clk);
 		of_ti_clk_autoidle_setup(node);
-		ti_clk_add_alias(NULL, clk, clk_name);
+		ti_clk_add_alias(clk, clk_name);
 	}
 }
 CLK_OF_DECLARE(ti_fixed_factor_clk, "ti,fixed-factor-clock",
drivers/clk/ti/gate.c +5 -3
index 42389558418c..0cc1babad661 100644
@@ -93,7 +93,7 @@ static int omap36xx_gate_clk_enable_with_hsdiv_restore(struct clk_hw *hw)
 	return ret;
 }
 
-static struct clk *_register_gate(struct device *dev, const char *name,
+static struct clk *_register_gate(struct device_node *node, const char *name,
 				  const char *parent_name, unsigned long flags,
 				  struct clk_omap_reg *reg, u8 bit_idx,
 				  u8 clk_gate_flags, const struct clk_ops *ops,
@@ -123,7 +123,7 @@ static struct clk *_register_gate(struct device *dev, const char *name,
 
 	init.flags = flags;
 
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
 	if (IS_ERR(clk))
 		kfree(clk_hw);
@@ -138,6 +138,7 @@ static void __init _of_ti_gate_clk_setup(struct device_node *node,
 	struct clk *clk;
 	const char *parent_name;
 	struct clk_omap_reg reg;
+	const char *name;
 	u8 enable_bit = 0;
 	u32 val;
 	u32 flags = 0;
@@ -164,7 +165,8 @@ static void __init _of_ti_gate_clk_setup(struct device_node *node,
 	if (of_property_read_bool(node, "ti,set-bit-to-disable"))
 		clk_gate_flags |= INVERT_ENABLE;
 
-	clk = _register_gate(NULL, node->name, parent_name, flags, &reg,
+	name = ti_dt_clk_name(node);
+	clk = _register_gate(node, name, parent_name, flags, &reg,
 			     enable_bit, clk_gate_flags, ops, hw_ops);
 
 	if (!IS_ERR(clk))
drivers/clk/ti/interface.c +6 -3
index 83e34429d3b1..1ccd5dbf2bb4 100644
@@ -32,7 +32,8 @@ static const struct clk_ops ti_interface_clk_ops = {
 	.is_enabled	= &omap2_dflt_clk_is_enabled,
 };
 
-static struct clk *_register_interface(struct device *dev, const char *name,
+static struct clk *_register_interface(struct device_node *node,
+				       const char *name,
 				       const char *parent_name,
 				       struct clk_omap_reg *reg, u8 bit_idx,
 				       const struct clk_hw_omap_ops *ops)
@@ -57,7 +58,7 @@ static struct clk *_register_interface(struct device *dev, const char *name,
 	init.num_parents = 1;
 	init.parent_names = &parent_name;
 
-	clk = ti_clk_register_omap_hw(NULL, &clk_hw->hw, name);
+	clk = of_ti_clk_register_omap_hw(node, &clk_hw->hw, name);
 
 	if (IS_ERR(clk))
 		kfree(clk_hw);
@@ -72,6 +73,7 @@ static void __init _of_ti_interface_clk_setup(struct device_node *node,
 	const char *parent_name;
 	struct clk_omap_reg reg;
 	u8 enable_bit = 0;
+	const char *name;
 	u32 val;
 
 	if (ti_clk_get_reg_addr(node, 0, &reg))
@@ -86,7 +88,8 @@ static void __init _of_ti_interface_clk_setup(struct device_node *node,
 		return;
 	}
 
-	clk = _register_interface(NULL, node->name, parent_name, &reg,
+	name = ti_dt_clk_name(node);
+	clk = _register_interface(node, name, parent_name, &reg,
 				  enable_bit, ops);
 
 	if (!IS_ERR(clk))
drivers/clk/ti/mux.c +5 -3
index 0069e7cf3ebc..4205ff4bad21 100644
@@ -126,7 +126,7 @@ const struct clk_ops ti_clk_mux_ops = {
 	.restore_context = clk_mux_restore_context,
 };
 
-static struct clk *_register_mux(struct device *dev, const char *name,
+static struct clk *_register_mux(struct device_node *node, const char *name,
 				 const char * const *parent_names,
 				 u8 num_parents, unsigned long flags,
 				 struct clk_omap_reg *reg, u8 shift, u32 mask,
@@ -156,7 +156,7 @@ static struct clk *_register_mux(struct device *dev, const char *name,
 	mux->table = table;
 	mux->hw.init = &init;
 
-	clk = ti_clk_register(dev, &mux->hw, name);
+	clk = of_ti_clk_register(node, &mux->hw, name);
 
 	if (IS_ERR(clk))
 		kfree(mux);
@@ -176,6 +176,7 @@ static void of_mux_clk_setup(struct device_node *node)
 	struct clk_omap_reg reg;
 	unsigned int num_parents;
 	const char **parent_names;
+	const char *name;
 	u8 clk_mux_flags = 0;
 	u32 mask = 0;
 	u32 shift = 0;
@@ -213,7 +214,8 @@ static void of_mux_clk_setup(struct device_node *node)
 
 	mask = (1 << fls(mask)) - 1;
 
-	clk = _register_mux(NULL, node->name, parent_names, num_parents,
+	name = ti_dt_clk_name(node);
+	clk = _register_mux(node, name, parent_names, num_parents,
 			    flags, &reg, shift, mask, latch, clk_mux_flags,
 			    NULL);
 
drivers/crypto/caam/caamalg.c +2 -1
index 8697ae53b063..6b513555df34 100644
@@ -566,7 +566,8 @@ static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
 	if (keylen != CHACHA_KEY_SIZE + saltlen)
 		return -EINVAL;
 
-	ctx->cdata.key_virt = key;
+	memcpy(ctx->key, key, keylen);
+	ctx->cdata.key_virt = ctx->key;
 	ctx->cdata.keylen = keylen - saltlen;
 
 	return chachapoly_set_sh_desc(aead);
drivers/crypto/caam/caamalg_qi2.c +2 -1
index 5a40c7d10cc9..43bed47ce59b 100644
@@ -636,7 +636,8 @@ static int chachapoly_setkey(struct crypto_aead *aead, const u8 *key,
 	if (keylen != CHACHA_KEY_SIZE + saltlen)
 		return -EINVAL;
 
-	ctx->cdata.key_virt = key;
+	memcpy(ctx->key, key, keylen);
+	ctx->cdata.key_virt = ctx->key;
 	ctx->cdata.keylen = keylen - saltlen;
 
 	return chachapoly_set_sh_desc(aead);
drivers/crypto/hisilicon/hpre/hpre_main.c +1 -1
index a33394d91bbf..8da9d6dc6e87 100644
@@ -637,7 +637,7 @@ static int hpre_cluster_debugfs_init(struct hisi_qm *qm)
 
 	for (i = 0; i < HPRE_CLUSTERS_NUM; i++) {
 		ret = snprintf(buf, HPRE_DBGFS_VAL_MAX_LEN, "cluster%d", i);
-		if (ret < 0)
+		if (ret >= HPRE_DBGFS_VAL_MAX_LEN)
 			return -EINVAL;
 		tmp_d = debugfs_create_dir(buf, qm->debug.debug_root);
 
drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.c +27 -7
index aee494d3da52..4b2f5aa83391 100644
@@ -17,15 +17,33 @@ static struct adf_hw_device_class c3xxx_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) >> ADF_C3XXX_ACCELERATORS_REG_OFFSET &
-		ADF_C3XXX_ACCELERATORS_MASK;
+	u32 straps = self->straps;
+	u32 fuses = self->fuses;
+	u32 accel;
+
+	accel = ~(fuses | straps) >> ADF_C3XXX_ACCELERATORS_REG_OFFSET;
+	accel &= ADF_C3XXX_ACCELERATORS_MASK;
+
+	return accel;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) & ADF_C3XXX_ACCELENGINES_MASK;
+	u32 straps = self->straps;
+	u32 fuses = self->fuses;
+	unsigned long disabled;
+	u32 ae_disable;
+	int accel;
+
+	/* If an accel is disabled, then disable the corresponding two AEs */
+	disabled = ~get_accel_mask(self) & ADF_C3XXX_ACCELERATORS_MASK;
+	ae_disable = BIT(1) | BIT(0);
+	for_each_set_bit(accel, &disabled, ADF_C3XXX_MAX_ACCELERATORS)
+		straps |= ae_disable << (accel << 1);
+
+	return ~(fuses | straps) & ADF_C3XXX_ACCELENGINES_MASK;
 }
 
 static u32 get_num_accels(struct adf_hw_device_data *self)
@@ -109,11 +127,13 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 {
 	struct adf_hw_device_data *hw_device = accel_dev->hw_device;
 	struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_C3XXX_PMISC_BAR];
+	unsigned long accel_mask = hw_device->accel_mask;
+	unsigned long ae_mask = hw_device->ae_mask;
 	void __iomem *csr = misc_bar->virt_addr;
 	unsigned int val, i;
 
 	/* Enable Accel Engine error detection & correction */
-	for (i = 0; i < hw_device->get_num_aes(hw_device); i++) {
+	for_each_set_bit(i, &ae_mask, GET_MAX_ACCELENGINES(accel_dev)) {
 		val = ADF_CSR_RD(csr, ADF_C3XXX_AE_CTX_ENABLES(i));
 		val |= ADF_C3XXX_ENABLE_AE_ECC_ERR;
 		ADF_CSR_WR(csr, ADF_C3XXX_AE_CTX_ENABLES(i), val);
@@ -123,7 +143,7 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 	}
 
 	/* Enable shared memory error detection & correction */
-	for (i = 0; i < hw_device->get_num_accels(hw_device); i++) {
+	for_each_set_bit(i, &accel_mask, ADF_C3XXX_MAX_ACCELERATORS) {
 		val = ADF_CSR_RD(csr, ADF_C3XXX_UERRSSMSH(i));
 		val |= ADF_C3XXX_ERRSSMSH_EN;
 		ADF_CSR_WR(csr, ADF_C3XXX_UERRSSMSH(i), val);
drivers/crypto/qat/qat_c3xxx/adf_c3xxx_hw_data.h +1 -0
index 8b5dd2c94ebf..94097816f68a 100644
@@ -18,6 +18,7 @@
 #define ADF_C3XXX_SMIAPF1_MASK_OFFSET (0x3A000 + 0x30)
 #define ADF_C3XXX_SMIA0_MASK 0xFFFF
 #define ADF_C3XXX_SMIA1_MASK 0x1
+#define ADF_C3XXX_SOFTSTRAP_CSR_OFFSET 0x2EC
 /* Error detection and correction */
 #define ADF_C3XXX_AE_CTX_ENABLES(i) (i * 0x1000 + 0x20818)
 #define ADF_C3XXX_AE_MISC_CONTROL(i) (i * 0x1000 + 0x20960)
drivers/crypto/qat/qat_c3xxx/adf_drv.c +4 -2
index ed0e8e33fe4b..da6e88026988 100644
@@ -126,10 +126,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
 	pci_read_config_dword(pdev, ADF_DEVICE_FUSECTL_OFFSET,
 			      &hw_data->fuses);
+	pci_read_config_dword(pdev, ADF_C3XXX_SOFTSTRAP_CSR_OFFSET,
+			      &hw_data->straps);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 	/* If the device has no acceleration engines then ignore it. */
 	if (!hw_data->accel_mask || !hw_data->ae_mask ||
drivers/crypto/qat/qat_c3xxxvf/adf_c3xxxvf_hw_data.c +2 -2
index 9709f29b6454..26b13973f9ac 100644
@@ -11,12 +11,12 @@ static struct adf_hw_device_class c3xxxiov_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
 	return ADF_C3XXXIOV_ACCELERATORS_MASK;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
 	return ADF_C3XXXIOV_ACCELENGINES_MASK;
 }
drivers/crypto/qat/qat_c3xxxvf/adf_drv.c +2 -2
index ea932b6c4534..067ca5e17d38 100644
@@ -119,8 +119,8 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_init_hw_data_c3xxxiov(accel_dev->hw_device);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 
 	/* Create dev top level debugfs entry */
drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.c +27 -7
index 844ad5ed33fc..c0b5751e9682 100644
@@ -22,15 +22,33 @@ static struct adf_hw_device_class c62x_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) >> ADF_C62X_ACCELERATORS_REG_OFFSET &
-			  ADF_C62X_ACCELERATORS_MASK;
+	u32 straps = self->straps;
+	u32 fuses = self->fuses;
+	u32 accel;
+
+	accel = ~(fuses | straps) >> ADF_C62X_ACCELERATORS_REG_OFFSET;
+	accel &= ADF_C62X_ACCELERATORS_MASK;
+
+	return accel;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) & ADF_C62X_ACCELENGINES_MASK;
+	u32 straps = self->straps;
+	u32 fuses = self->fuses;
+	unsigned long disabled;
+	u32 ae_disable;
+	int accel;
+
+	/* If an accel is disabled, then disable the corresponding two AEs */
+	disabled = ~get_accel_mask(self) & ADF_C62X_ACCELERATORS_MASK;
+	ae_disable = BIT(1) | BIT(0);
+	for_each_set_bit(accel, &disabled, ADF_C62X_MAX_ACCELERATORS)
+		straps |= ae_disable << (accel << 1);
+
+	return ~(fuses | straps) & ADF_C62X_ACCELENGINES_MASK;
 }
 
 static u32 get_num_accels(struct adf_hw_device_data *self)
@@ -119,11 +137,13 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 {
 	struct adf_hw_device_data *hw_device = accel_dev->hw_device;
 	struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_C62X_PMISC_BAR];
+	unsigned long accel_mask = hw_device->accel_mask;
+	unsigned long ae_mask = hw_device->ae_mask;
 	void __iomem *csr = misc_bar->virt_addr;
 	unsigned int val, i;
 
 	/* Enable Accel Engine error detection & correction */
-	for (i = 0; i < hw_device->get_num_aes(hw_device); i++) {
+	for_each_set_bit(i, &ae_mask, GET_MAX_ACCELENGINES(accel_dev)) {
 		val = ADF_CSR_RD(csr, ADF_C62X_AE_CTX_ENABLES(i));
 		val |= ADF_C62X_ENABLE_AE_ECC_ERR;
 		ADF_CSR_WR(csr, ADF_C62X_AE_CTX_ENABLES(i), val);
@@ -133,7 +153,7 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 	}
 
 	/* Enable shared memory error detection & correction */
-	for (i = 0; i < hw_device->get_num_accels(hw_device); i++) {
+	for_each_set_bit(i, &accel_mask, ADF_C62X_MAX_ACCELERATORS) {
 		val = ADF_CSR_RD(csr, ADF_C62X_UERRSSMSH(i));
 		val |= ADF_C62X_ERRSSMSH_EN;
 		ADF_CSR_WR(csr, ADF_C62X_UERRSSMSH(i), val);
drivers/crypto/qat/qat_c62x/adf_c62x_hw_data.h +1 -0
index 88504d2bf30d..a2e2961a2102 100644
@@ -19,6 +19,7 @@
 #define ADF_C62X_SMIAPF1_MASK_OFFSET (0x3A000 + 0x30)
 #define ADF_C62X_SMIA0_MASK 0xFFFF
 #define ADF_C62X_SMIA1_MASK 0x1
+#define ADF_C62X_SOFTSTRAP_CSR_OFFSET 0x2EC
 /* Error detection and correction */
 #define ADF_C62X_AE_CTX_ENABLES(i) (i * 0x1000 + 0x20818)
 #define ADF_C62X_AE_MISC_CONTROL(i) (i * 0x1000 + 0x20960)
drivers/crypto/qat/qat_c62x/adf_drv.c +4 -2
index d8e7c9c25590..3da697a566ad 100644
@@ -126,10 +126,12 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	pci_read_config_byte(pdev, PCI_REVISION_ID, &accel_pci_dev->revid);
 	pci_read_config_dword(pdev, ADF_DEVICE_FUSECTL_OFFSET,
 			      &hw_data->fuses);
+	pci_read_config_dword(pdev, ADF_C62X_SOFTSTRAP_CSR_OFFSET,
+			      &hw_data->straps);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 	/* If the device has no acceleration engines then ignore it. */
 	if (!hw_data->accel_mask || !hw_data->ae_mask ||
drivers/crypto/qat/qat_c62xvf/adf_c62xvf_hw_data.c +2 -2
index 5e6909d6cfc6..ff5a57824eca 100644
@@ -11,12 +11,12 @@ static struct adf_hw_device_class c62xiov_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
 	return ADF_C62XIOV_ACCELERATORS_MASK;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
 	return ADF_C62XIOV_ACCELENGINES_MASK;
 }
drivers/crypto/qat/qat_c62xvf/adf_drv.c +2 -2
index 6200ad448b11..51ea88c0b17d 100644
@@ -119,8 +119,8 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_init_hw_data_c62xiov(accel_dev->hw_device);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 
 	/* Create dev top level debugfs entry */
drivers/crypto/qat/qat_common/adf_accel_devices.h +4 -3
index 06952ece53d9..961a8b3650c7 100644
@@ -23,7 +23,7 @@
 #define ADF_PCI_MAX_BARS 3
 #define ADF_DEVICE_NAME_LENGTH 32
 #define ADF_ETR_MAX_RINGS_PER_BANK 16
-#define ADF_MAX_MSIX_VECTOR_NAME 16
+#define ADF_MAX_MSIX_VECTOR_NAME 48
 #define ADF_DEVICE_NAME_PREFIX "qat_"
 
 enum adf_accel_capabilities {
@@ -104,8 +104,8 @@ struct adf_etr_ring_data;
 
 struct adf_hw_device_data {
 	struct adf_hw_device_class *dev_class;
-	u32 (*get_accel_mask)(u32 fuse);
-	u32 (*get_ae_mask)(u32 fuse);
+	u32 (*get_accel_mask)(struct adf_hw_device_data *self);
+	u32 (*get_ae_mask)(struct adf_hw_device_data *self);
 	u32 (*get_sram_bar_id)(struct adf_hw_device_data *self);
 	u32 (*get_misc_bar_id)(struct adf_hw_device_data *self);
 	u32 (*get_etr_bar_id)(struct adf_hw_device_data *self);
@@ -131,6 +131,7 @@ struct adf_hw_device_data {
 	const char *fw_name;
 	const char *fw_mmp_name;
 	u32 fuses;
+	u32 straps;
 	u32 accel_capabilities_mask;
 	u32 instance_id;
 	u16 accel_mask;
drivers/crypto/qat/qat_common/adf_transport_debug.c +2 -2
index dac25ba47260..e6bdbd3c9b1f 100644
@@ -89,7 +89,7 @@ DEFINE_SEQ_ATTRIBUTE(adf_ring_debug);
 int adf_ring_debugfs_add(struct adf_etr_ring_data *ring, const char *name)
 {
 	struct adf_etr_ring_debug_entry *ring_debug;
-	char entry_name[8];
+	char entry_name[16];
 
 	ring_debug = kzalloc(sizeof(*ring_debug), GFP_KERNEL);
 	if (!ring_debug)
@@ -184,7 +184,7 @@ int adf_bank_debugfs_add(struct adf_etr_bank_data *bank)
 {
 	struct adf_accel_dev *accel_dev = bank->accel_dev;
 	struct dentry *parent = accel_dev->transport->debug;
-	char name[8];
+	char name[16];
 
 	snprintf(name, sizeof(name), "bank_%02d", bank->bank_number);
 	bank->bank_debug_dir = debugfs_create_dir(name, parent);
drivers/crypto/qat/qat_common/qat_hal.c +15 -12
index b40e81e0088f..76d8470651b8 100644
@@ -346,11 +346,12 @@ static void qat_hal_put_wakeup_event(struct icp_qat_fw_loader_handle *handle,
 
 static int qat_hal_check_ae_alive(struct icp_qat_fw_loader_handle *handle)
 {
+	unsigned long ae_mask = handle->hal_handle->ae_mask;
 	unsigned int base_cnt, cur_cnt;
 	unsigned char ae;
 	int times = MAX_RETRY_TIMES;
 
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		base_cnt = qat_hal_rd_ae_csr(handle, ae, PROFILE_COUNT);
 		base_cnt &= 0xffff;
 
@@ -384,6 +385,7 @@ int qat_hal_check_ae_active(struct icp_qat_fw_loader_handle *handle,
 
 static void qat_hal_reset_timestamp(struct icp_qat_fw_loader_handle *handle)
 {
+	unsigned long ae_mask = handle->hal_handle->ae_mask;
 	unsigned int misc_ctl;
 	unsigned char ae;
 
@@ -393,7 +395,7 @@ static void qat_hal_reset_timestamp(struct icp_qat_fw_loader_handle *handle)
 		SET_GLB_CSR(handle, MISC_CONTROL, misc_ctl &
 			    (~MC_TIMESTAMP_ENABLE));
 
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		qat_hal_wr_ae_csr(handle, ae, TIMESTAMP_LOW, 0);
 		qat_hal_wr_ae_csr(handle, ae, TIMESTAMP_HIGH, 0);
 	}
@@ -438,6 +440,7 @@ static int qat_hal_init_esram(struct icp_qat_fw_loader_handle *handle)
 #define SHRAM_INIT_CYCLES 2060
 int qat_hal_clr_reset(struct icp_qat_fw_loader_handle *handle)
 {
+	unsigned long ae_mask = handle->hal_handle->ae_mask;
 	unsigned int ae_reset_csr;
 	unsigned char ae;
 	unsigned int clk_csr;
@@ -464,7 +467,7 @@ int qat_hal_clr_reset(struct icp_qat_fw_loader_handle *handle)
 		goto out_err;
 
 	/* Set undefined power-up/reset states to reasonable default values */
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		qat_hal_wr_ae_csr(handle, ae, CTX_ENABLES,
 				  INIT_CTX_ENABLE_VALUE);
 		qat_hal_wr_indr_csr(handle, ae, ICP_QAT_UCLO_AE_ALL_CTX,
@@ -570,10 +573,11 @@ static void qat_hal_enable_ctx(struct icp_qat_fw_loader_handle *handle,
 
 static void qat_hal_clear_xfer(struct icp_qat_fw_loader_handle *handle)
 {
+	unsigned long ae_mask = handle->hal_handle->ae_mask;
 	unsigned char ae;
 	unsigned short reg;
 
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		for (reg = 0; reg < ICP_QAT_UCLO_MAX_GPR_REG; reg++) {
 			qat_hal_init_rd_xfer(handle, ae, 0, ICP_SR_RD_ABS,
 					     reg, 0);
@@ -585,6 +589,7 @@ static void qat_hal_clear_xfer(struct icp_qat_fw_loader_handle *handle)
 
 static int qat_hal_clear_gpr(struct icp_qat_fw_loader_handle *handle)
 {
+	unsigned long ae_mask = handle->hal_handle->ae_mask;
 	unsigned char ae;
 	unsigned int ctx_mask = ICP_QAT_UCLO_AE_ALL_CTX;
 	int times = MAX_RETRY_TIMES;
@@ -592,7 +597,7 @@ static int qat_hal_clear_gpr(struct icp_qat_fw_loader_handle *handle)
 	unsigned int savctx = 0;
 	int ret = 0;
 
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		csr_val = qat_hal_rd_ae_csr(handle, ae, AE_MISC_CONTROL);
 		csr_val &= ~(1 << MMC_SHARE_CS_BITPOS);
 		qat_hal_wr_ae_csr(handle, ae, AE_MISC_CONTROL, csr_val);
@@ -613,7 +618,7 @@ static int qat_hal_clear_gpr(struct icp_qat_fw_loader_handle *handle)
 		qat_hal_wr_ae_csr(handle, ae, CTX_SIG_EVENTS_ACTIVE, 0);
 		qat_hal_enable_ctx(handle, ae, ctx_mask);
 	}
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		/* wait for AE to finish */
 		do {
 			ret = qat_hal_wait_cycles(handle, ae, 20, 1);
@@ -654,6 +659,8 @@ int qat_hal_init(struct adf_accel_dev *accel_dev)
 	struct adf_hw_device_data *hw_data = accel_dev->hw_device;
 	struct adf_bar *misc_bar =
 			&pci_info->pci_bars[hw_data->get_misc_bar_id(hw_data)];
+	unsigned long ae_mask = hw_data->ae_mask;
+	unsigned int csr_val = 0;
 	struct adf_bar *sram_bar;
 
 	handle = kzalloc(sizeof(*handle), GFP_KERNEL);
@@ -689,9 +696,7 @@ int qat_hal_init(struct adf_accel_dev *accel_dev)
 	/* create AE objects */
 	handle->hal_handle->upc_mask = 0x1ffff;
 	handle->hal_handle->max_ustore = 0x4000;
-	for (ae = 0; ae < ICP_QAT_UCLO_MAX_AE; ae++) {
-		if (!(hw_data->ae_mask & (1 << ae)))
-			continue;
+	for_each_set_bit(ae, &ae_mask, ICP_QAT_UCLO_MAX_AE) {
 		handle->hal_handle->aes[ae].free_addr = 0;
 		handle->hal_handle->aes[ae].free_size =
 		    handle->hal_handle->max_ustore;
@@ -714,9 +719,7 @@ int qat_hal_init(struct adf_accel_dev *accel_dev)
 	}
 
 	/* Set SIGNATURE_ENABLE[0] to 0x1 in order to enable ALU_OUT csr */
-	for (ae = 0; ae < handle->hal_handle->ae_max_num; ae++) {
-		unsigned int csr_val = 0;
-
+	for_each_set_bit(ae, &ae_mask, handle->hal_handle->ae_max_num) {
 		csr_val = qat_hal_rd_ae_csr(handle, ae, SIGNATURE_ENABLE);
 		csr_val |= 0x1;
 		qat_hal_wr_ae_csr(handle, ae, SIGNATURE_ENABLE, csr_val);
drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c +13 -7
index b975c263446d..6a0d01103136 100644
@@ -24,15 +24,19 @@ static struct adf_hw_device_class dh895xcc_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) >> ADF_DH895XCC_ACCELERATORS_REG_OFFSET &
-			  ADF_DH895XCC_ACCELERATORS_MASK;
+	u32 fuses = self->fuses;
+
+	return ~fuses >> ADF_DH895XCC_ACCELERATORS_REG_OFFSET &
+			 ADF_DH895XCC_ACCELERATORS_MASK;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
-	return (~fuse) & ADF_DH895XCC_ACCELENGINES_MASK;
+	u32 fuses = self->fuses;
+
+	return ~fuses & ADF_DH895XCC_ACCELENGINES_MASK;
 }
 
 static u32 get_num_accels(struct adf_hw_device_data *self)
@@ -131,11 +135,13 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 {
 	struct adf_hw_device_data *hw_device = accel_dev->hw_device;
 	struct adf_bar *misc_bar = &GET_BARS(accel_dev)[ADF_DH895XCC_PMISC_BAR];
+	unsigned long accel_mask = hw_device->accel_mask;
+	unsigned long ae_mask = hw_device->ae_mask;
 	void __iomem *csr = misc_bar->virt_addr;
 	unsigned int val, i;
 
 	/* Enable Accel Engine error detection & correction */
-	for (i = 0; i < hw_device->get_num_aes(hw_device); i++) {
+	for_each_set_bit(i, &ae_mask, GET_MAX_ACCELENGINES(accel_dev)) {
 		val = ADF_CSR_RD(csr, ADF_DH895XCC_AE_CTX_ENABLES(i));
 		val |= ADF_DH895XCC_ENABLE_AE_ECC_ERR;
 		ADF_CSR_WR(csr, ADF_DH895XCC_AE_CTX_ENABLES(i), val);
@@ -145,7 +151,7 @@ static void adf_enable_error_correction(struct adf_accel_dev *accel_dev)
 	}
 
 	/* Enable shared memory error detection & correction */
-	for (i = 0; i < hw_device->get_num_accels(hw_device); i++) {
+	for_each_set_bit(i, &accel_mask, ADF_DH895XCC_MAX_ACCELERATORS) {
 		val = ADF_CSR_RD(csr, ADF_DH895XCC_UERRSSMSH(i));
 		val |= ADF_DH895XCC_ERRSSMSH_EN;
 		ADF_CSR_WR(csr, ADF_DH895XCC_UERRSSMSH(i), val);
drivers/crypto/qat/qat_dh895xcc/adf_drv.c +2 -2
index ecb4f6f20e22..d7941bc2bafd 100644
@@ -128,8 +128,8 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 			      &hw_data->fuses);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 	/* If the device has no acceleration engines then ignore it. */
 	if (!hw_data->accel_mask || !hw_data->ae_mask ||
drivers/crypto/qat/qat_dh895xccvf/adf_dh895xccvf_hw_data.c +2 -2
index fc4cf141b1de..7930e4c7883d 100644
@@ -11,12 +11,12 @@ static struct adf_hw_device_class dh895xcciov_class = {
 	.instances = 0
 };
 
-static u32 get_accel_mask(u32 fuse)
+static u32 get_accel_mask(struct adf_hw_device_data *self)
 {
 	return ADF_DH895XCCIOV_ACCELERATORS_MASK;
 }
 
-static u32 get_ae_mask(u32 fuse)
+static u32 get_ae_mask(struct adf_hw_device_data *self)
 {
 	return ADF_DH895XCCIOV_ACCELENGINES_MASK;
 }
drivers/crypto/qat/qat_dh895xccvf/adf_drv.c +2 -2
index 737508ded37b..29999da716cc 100644
@@ -119,8 +119,8 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	adf_init_hw_data_dh895xcciov(accel_dev->hw_device);
 
 	/* Get Accelerators and Accelerators Engines masks */
-	hw_data->accel_mask = hw_data->get_accel_mask(hw_data->fuses);
-	hw_data->ae_mask = hw_data->get_ae_mask(hw_data->fuses);
+	hw_data->accel_mask = hw_data->get_accel_mask(hw_data);
+	hw_data->ae_mask = hw_data->get_ae_mask(hw_data);
 	accel_pci_dev->sku = hw_data->get_sku(hw_data);
 
 	/* Create dev top level debugfs entry */
drivers/devfreq/event/rockchip-dfi.c +8 -7
index 9a88faaf8b27..4dafdf23197b 100644
@@ -194,14 +194,15 @@ static int rockchip_dfi_probe(struct platform_device *pdev)
 		return PTR_ERR(data->clk);
 	}
 
-	/* try to find the optional reference to the pmu syscon */
 	node = of_parse_phandle(np, "rockchip,pmu", 0);
-	if (node) {
-		data->regmap_pmu = syscon_node_to_regmap(node);
-		of_node_put(node);
-		if (IS_ERR(data->regmap_pmu))
-			return PTR_ERR(data->regmap_pmu);
-	}
+	if (!node)
+		return dev_err_probe(&pdev->dev, -ENODEV, "Can't find pmu_grf registers\n");
+
+	data->regmap_pmu = syscon_node_to_regmap(node);
+	of_node_put(node);
+	if (IS_ERR(data->regmap_pmu))
+		return PTR_ERR(data->regmap_pmu);
+
 	data->dev = dev;
 
 	desc = devm_kzalloc(dev, sizeof(*desc), GFP_KERNEL);
drivers/dma/pxa_dma.c +0 -1
index 68d9d60c051d..9ce75ff9fa1c 100644
@@ -723,7 +723,6 @@ static void pxad_free_desc(struct virt_dma_desc *vd)
 	dma_addr_t dma;
 	struct pxad_desc_sw *sw_desc = to_pxad_sw_desc(vd);
 
-	BUG_ON(sw_desc->nb_desc == 0);
 	for (i = sw_desc->nb_desc - 1; i >= 0; i--) {
 		if (i > 0)
 			dma = sw_desc->hw_desc[i - 1]->ddadr;
drivers/dma/ti/edma.c +2 -2
index 35d81bd857f1..a1adc8d91fd8 100644
@@ -2459,7 +2459,7 @@ static int edma_probe(struct platform_device *pdev)
 	if (irq < 0 && node)
 		irq = irq_of_parse_and_map(node, 0);
 
-	if (irq >= 0) {
+	if (irq > 0) {
 		irq_name = devm_kasprintf(dev, GFP_KERNEL, "%s_ccint",
 					  dev_name(dev));
 		ret = devm_request_irq(dev, irq, dma_irq_handler, 0, irq_name,
@@ -2475,7 +2475,7 @@ static int edma_probe(struct platform_device *pdev)
 	if (irq < 0 && node)
 		irq = irq_of_parse_and_map(node, 2);
 
-	if (irq >= 0) {
+	if (irq > 0) {
 		irq_name = devm_kasprintf(dev, GFP_KERNEL, "%s_ccerrint",
 					  dev_name(dev));
 		ret = devm_request_irq(dev, irq, dma_ccerr_handler, 0, irq_name,
drivers/firmware/ti_sci.c +1 -45

63 lines not on this page · raw message

drivers/gpu/drm/bridge/tc358768.c +18 -7
index b4a69b210451..48dab19f3e23 100644
@@ -217,6 +217,10 @@ static void tc358768_update_bits(struct tc358768_priv *priv, u32 reg, u32 mask,
 	u32 tmp, orig;
 
 	tc358768_read(priv, reg, &orig);
+
+	if (priv->error)
+		return;
+
 	tmp = orig & ~mask;
 	tmp |= val & mask;
 	if (tmp != orig)
@@ -633,6 +637,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
 {
 	struct tc358768_priv *priv = bridge_to_tc358768(bridge);
 	struct mipi_dsi_device *dsi_dev = priv->output.dev;
+	unsigned long mode_flags = dsi_dev->mode_flags;
 	u32 val, val2, lptxcnt, hact, data_type;
 	s32 raw_val;
 	const struct drm_display_mode *mode;
@@ -640,6 +645,11 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
 	u32 dsiclk, dsibclk;
 	int ret, i;
 
+	if (mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) {
+		dev_warn_once(priv->dev, "Non-continuous mode unimplemented, falling back to continuous\n");
+		mode_flags &= ~MIPI_DSI_CLOCK_NON_CONTINUOUS;
+	}
+
 	tc358768_hw_enable(priv);
 
 	ret = tc358768_sw_reset(priv);
@@ -775,8 +785,8 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
 		val |= BIT(i + 1);
 	tc358768_write(priv, TC358768_HSTXVREGEN, val);
 
-	if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
-		tc358768_write(priv, TC358768_TXOPTIONCNTRL, 0x1);
+	tc358768_write(priv, TC358768_TXOPTIONCNTRL,
+		       (mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) ? 0 : BIT(0));
 
 	/* TXTAGOCNT[26:16] RXTASURECNT[10:0] */
 	val = tc358768_to_ns((lptxcnt + 1) * dsibclk_nsk * 4);
@@ -812,11 +822,12 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
 	tc358768_write(priv, TC358768_DSI_HACT, hact);
 
 	/* VSYNC polarity */
-	if (!(mode->flags & DRM_MODE_FLAG_NVSYNC))
-		tc358768_update_bits(priv, TC358768_CONFCTL, BIT(5), BIT(5));
+	tc358768_update_bits(priv, TC358768_CONFCTL, BIT(5),
+			     (mode->flags & DRM_MODE_FLAG_PVSYNC) ? BIT(5) : 0);
+
 	/* HSYNC polarity */
-	if (mode->flags & DRM_MODE_FLAG_PHSYNC)
-		tc358768_update_bits(priv, TC358768_PP_MISC, BIT(0), BIT(0));
+	tc358768_update_bits(priv, TC358768_PP_MISC, BIT(0),
+			     (mode->flags & DRM_MODE_FLAG_PHSYNC) ? BIT(0) : 0);
 
 	/* Start DSI Tx */
 	tc358768_write(priv, TC358768_DSI_START, 0x1);
@@ -832,7 +843,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge)
 
 	val |= TC358768_DSI_CONTROL_TXMD;
 
-	if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
+	if (!(mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
 		val |= TC358768_DSI_CONTROL_HSCKMD;
 
 	if (dsi_dev->mode_flags & MIPI_DSI_MODE_EOT_PACKET)
drivers/gpu/drm/drm_syncobj.c +2 -1
index 993898a2c779..738e60139db9 100644
@@ -983,7 +983,8 @@ static signed long drm_syncobj_array_wait_timeout(struct drm_syncobj **syncobjs,
 		fence = drm_syncobj_fence_get(syncobjs[i]);
 		if (!fence || dma_fence_chain_find_seqno(&fence, points[i])) {
 			dma_fence_put(fence);
-			if (flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT) {
+			if (flags & (DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT |
+				     DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE)) {
 				continue;
 			} else {
 				timeout = -EINVAL;
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +3 -0
index e83b1c406b96..cc3cb5b63d44 100644
@@ -320,6 +320,9 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc)
 		unsigned int local_layer;
 
 		plane_state = to_mtk_plane_state(plane->state);
+
+		/* should not enable layer before crtc enabled */
+		plane_state->pending.enable = false;
 		comp = mtk_drm_ddp_comp_for_plane(crtc, plane, &local_layer);
 		if (comp)
 			mtk_ddp_comp_layer_config(comp, local_layer,
drivers/gpu/drm/radeon/evergreen.c +4 -3
index 14d90dc376e7..061ef6c00859 100644
@@ -4819,14 +4819,15 @@ int evergreen_irq_process(struct radeon_device *rdev)
 			break;
 		case 44: /* hdmi */
 			afmt_idx = src_data;
-			if (!(afmt_status[afmt_idx] & AFMT_AZ_FORMAT_WTRIG))
-				DRM_DEBUG("IH: IH event w/o asserted irq bit?\n");
-
 			if (afmt_idx > 5) {
 				DRM_ERROR("Unhandled interrupt: %d %d\n",
 					  src_id, src_data);
 				break;
 			}
+
+			if (!(afmt_status[afmt_idx] & AFMT_AZ_FORMAT_WTRIG))
+				DRM_DEBUG("IH: IH event w/o asserted irq bit?\n");
+
 			afmt_status[afmt_idx] &= ~AFMT_AZ_FORMAT_WTRIG;
 			queue_hdmi = true;
 			DRM_DEBUG("IH: HDMI%d\n", afmt_idx + 1);
drivers/gpu/drm/rockchip/cdn-dp-core.c +13 -2
index adeaa0140f0f..53cad1003ad7 100644
@@ -1145,6 +1145,7 @@ static int cdn_dp_probe(struct platform_device *pdev)
 	struct cdn_dp_device *dp;
 	struct extcon_dev *extcon;
 	struct phy *phy;
+	int ret;
 	int i;
 
 	dp = devm_kzalloc(dev, sizeof(*dp), GFP_KERNEL);
@@ -1185,9 +1186,19 @@ static int cdn_dp_probe(struct platform_device *pdev)
 	mutex_init(&dp->lock);
 	dev_set_drvdata(dev, dp);
 
-	cdn_dp_audio_codec_init(dp, dev);
+	ret = cdn_dp_audio_codec_init(dp, dev);
+	if (ret)
+		return ret;
+
+	ret = component_add(dev, &cdn_dp_component_ops);
+	if (ret)
+		goto err_audio_deinit;
 
-	return component_add(dev, &cdn_dp_component_ops);
+	return 0;
+
+err_audio_deinit:
+	platform_device_unregister(dp->audio_pdev);
+	return ret;
 }
 
 static int cdn_dp_remove(struct platform_device *pdev)
drivers/gpu/drm/rockchip/rockchip_drm_gem.c +1 -1
index 22ff4a592976..6038aafa29c6 100644
@@ -38,7 +38,7 @@ static int rockchip_gem_iommu_map(struct rockchip_gem_object *rk_obj)
 
 	ret = iommu_map_sgtable(private->domain, rk_obj->dma_addr, rk_obj->sgt,
 				prot);
-	if (ret < rk_obj->base.size) {
+	if (ret < (ssize_t)rk_obj->base.size) {
 		DRM_ERROR("failed to map buffer: size=%zd request_size=%zd\n",
 			  ret, rk_obj->base.size);
 		ret = -ENOMEM;
drivers/gpu/drm/rockchip/rockchip_drm_vop.c +6 -2
index 65dde9df9793..05fcc9e078d6 100644
@@ -1533,7 +1533,8 @@ static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
 	if (WARN_ON(!crtc->state))
 		return NULL;
 
-	rockchip_state = kzalloc(sizeof(*rockchip_state), GFP_KERNEL);
+	rockchip_state = kmemdup(to_rockchip_crtc_state(crtc->state),
+				 sizeof(*rockchip_state), GFP_KERNEL);
 	if (!rockchip_state)
 		return NULL;
 
@@ -1558,7 +1559,10 @@ static void vop_crtc_reset(struct drm_crtc *crtc)
 	if (crtc->state)
 		vop_crtc_destroy_state(crtc, crtc->state);
 
-	__drm_atomic_helper_crtc_reset(crtc, &crtc_state->base);
+	if (crtc_state)
+		__drm_atomic_helper_crtc_reset(crtc, &crtc_state->base);
+	else
+		__drm_atomic_helper_crtc_reset(crtc, NULL);
 }
 
 #ifdef CONFIG_DRM_ANALOGIX_DP
drivers/hid/hid-cp2112.c +6 -3
index d902fe43cb81..6a11b3a329ae 100644
@@ -1157,8 +1157,6 @@ static unsigned int cp2112_gpio_irq_startup(struct irq_data *d)
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
 	struct cp2112_device *dev = gpiochip_get_data(gc);
 
-	INIT_DELAYED_WORK(&dev->gpio_poll_worker, cp2112_gpio_poll_callback);
-
 	if (!dev->gpio_poll) {
 		dev->gpio_poll = true;
 		schedule_delayed_work(&dev->gpio_poll_worker, 0);
@@ -1173,7 +1171,10 @@ static void cp2112_gpio_irq_shutdown(struct irq_data *d)
 	struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
 	struct cp2112_device *dev = gpiochip_get_data(gc);
 
-	cancel_delayed_work_sync(&dev->gpio_poll_worker);
+	if (!dev->irq_mask) {
+		dev->gpio_poll = false;
+		cancel_delayed_work_sync(&dev->gpio_poll_worker);
+	}
 }
 
 static int cp2112_gpio_irq_type(struct irq_data *d, unsigned int type)
@@ -1354,6 +1355,8 @@ static int cp2112_probe(struct hid_device *hdev, const struct hid_device_id *id)
 	girq->handler = handle_simple_irq;
 	girq->threaded = true;
 
+	INIT_DELAYED_WORK(&dev->gpio_poll_worker, cp2112_gpio_poll_callback);
+
 	ret = gpiochip_add_data(&dev->gc, dev);
 	if (ret < 0) {
 		hid_err(hdev, "error registering gpio chip\n");
drivers/hid/hid-logitech-hidpp.c +28 -48

162 lines not on this page · raw message

drivers/hwmon/axi-fan-control.c +88 -13

137 lines not on this page · raw message

drivers/hwmon/coretemp.c +1 -1
index eaae5de2ab61..5b2057ce5a59 100644
@@ -41,7 +41,7 @@ MODULE_PARM_DESC(tjmax, "TjMax value in degrees Celsius");
 #define PKG_SYSFS_ATTR_NO	1	/* Sysfs attribute for package temp */
 #define BASE_SYSFS_ATTR_NO	2	/* Sysfs Base attr no for coretemp */
 #define NUM_REAL_CORES		128	/* Number of Real cores per cpu */
-#define CORETEMP_NAME_LENGTH	19	/* String Length of attrs */
+#define CORETEMP_NAME_LENGTH	28	/* String Length of attrs */
 #define MAX_CORE_ATTRS		4	/* Maximum no of basic attrs */
 #define TOTAL_ATTRS		(MAX_CORE_ATTRS + 1)
 #define MAX_CORE_DATA		(NUM_REAL_CORES + BASE_SYSFS_ATTR_NO)
drivers/i3c/master.c +3 -1
index 1c6b78ad5ade..828fb236a63a 100644
@@ -1509,9 +1509,11 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master)
 			desc->dev->dev.of_node = desc->boardinfo->of_node;
 
 		ret = device_register(&desc->dev->dev);
-		if (ret)
+		if (ret) {
 			dev_err(&master->dev,
 				"Failed to add I3C device (err = %d)\n", ret);
+			put_device(&desc->dev->dev);
+		}
 	}
 }
 
drivers/infiniband/hw/hfi1/efivar.c +1 -1
index c22ab7b5163b..49b2c751197e 100644
@@ -152,7 +152,7 @@ int read_hfi1_efi_var(struct hfi1_devdata *dd, const char *kind,
 		      unsigned long *size, void **return_data)
 {
 	char prefix_name[64];
-	char name[64];
+	char name[128];
 	int result;
 	int i;
 
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +1 -1
index 322f341f4145..518b38e9158d 100644
@@ -247,7 +247,7 @@ static bool check_inl_data_len(struct hns_roce_qp *qp, unsigned int len)
 	struct hns_roce_dev *hr_dev = to_hr_dev(qp->ibqp.device);
 	int mtu = ib_mtu_enum_to_int(qp->path_mtu);
 
-	if (len > qp->max_inline_data || len > mtu) {
+	if (mtu < 0 || len > qp->max_inline_data || len > mtu) {
 		ibdev_err(&hr_dev->ib_dev,
 			  "invalid length of data, data len = %u, max inline len = %u, path mtu = %d.\n",
 			  len, qp->max_inline_data, mtu);
drivers/infiniband/hw/hns/hns_roce_qp.c +1 -1
index c42c6761382d..d1c07f1f8fe9 100644
@@ -906,7 +906,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev,
 {
 	struct hns_roce_ib_create_qp_resp resp = {};
 	struct ib_device *ibdev = &hr_dev->ib_dev;
-	struct hns_roce_ib_create_qp ucmd;
+	struct hns_roce_ib_create_qp ucmd = {};
 	int ret;
 
 	mutex_init(&hr_qp->mutex);
drivers/infiniband/hw/mlx5/qp.c +27 -0
index 0c47e3e24b2a..e3cc856e70e5 100644
@@ -3714,6 +3714,30 @@ static unsigned int get_tx_affinity(struct ib_qp *qp,
 	return tx_affinity;
 }
 
+static int __mlx5_ib_qp_set_raw_qp_counter(struct mlx5_ib_qp *qp, u32 set_id,
+					   struct mlx5_core_dev *mdev)
+{
+	struct mlx5_ib_raw_packet_qp *raw_packet_qp = &qp->raw_packet_qp;
+	struct mlx5_ib_rq *rq = &raw_packet_qp->rq;
+	u32 in[MLX5_ST_SZ_DW(modify_rq_in)] = {};
+	void *rqc;
+
+	if (!qp->rq.wqe_cnt)
+		return 0;
+
+	MLX5_SET(modify_rq_in, in, rq_state, rq->state);
+	MLX5_SET(modify_rq_in, in, uid, to_mpd(qp->ibqp.pd)->uid);
+
+	rqc = MLX5_ADDR_OF(modify_rq_in, in, ctx);
+	MLX5_SET(rqc, rqc, state, MLX5_RQC_STATE_RDY);
+
+	MLX5_SET64(modify_rq_in, in, modify_bitmask,
+		   MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_RQ_COUNTER_SET_ID);
+	MLX5_SET(rqc, rqc, counter_set_id, set_id);
+
+	return mlx5_core_modify_rq(mdev, rq->base.mqp.qpn, in);
+}
+
 static int __mlx5_ib_qp_set_counter(struct ib_qp *qp,
 				    struct rdma_counter *counter)
 {
@@ -3729,6 +3753,9 @@ static int __mlx5_ib_qp_set_counter(struct ib_qp *qp,
 	else
 		set_id = mlx5_ib_get_counters_id(dev, mqp->port - 1);
 
+	if (mqp->type == IB_QPT_RAW_PACKET)
+		return __mlx5_ib_qp_set_raw_qp_counter(mqp, set_id, dev->mdev);
+
 	base = &mqp->trans_qp.base;
 	MLX5_SET(rts2rts_qp_in, in, opcode, MLX5_CMD_OP_RTS2RTS_QP);
 	MLX5_SET(rts2rts_qp_in, in, qpn, base->mqp.qpn);
drivers/input/rmi4/rmi_bus.c +1 -1
index 47d1b97ed6cf..a1b2c86ef611 100644
@@ -276,11 +276,11 @@ void rmi_unregister_function(struct rmi_function *fn)
 
 	device_del(&fn->dev);
 	of_node_put(fn->dev.of_node);
-	put_device(&fn->dev);
 
 	for (i = 0; i < fn->num_of_irqs; i++)
 		irq_dispose_mapping(fn->irq[i]);
 
+	put_device(&fn->dev);
 }
 
 /**
drivers/interconnect/qcom/sc7180.c +232 -24

179 lines not on this page · raw message

drivers/leds/leds-pwm.c +1 -1
index f53f9309ca6c..f4c0507becb3 100644

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

drivers/leds/trigger/ledtrig-cpu.c +2 -2
index fca62d503590..f19baed61502 100644

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

drivers/media/i2c/max9286.c +0 -2
index 62ce27552dd3..a358eb3fe0f4 100644

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

drivers/media/pci/bt8xx/bttv-driver.c +1 -0
index 1f0e4b913a05..5f1bd9b38e75 100644

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

drivers/media/platform/s3c-camif/camif-capture.c +2 -4
index 9ca49af29542..a3ba72a08dae 100644

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

drivers/media/test-drivers/vidtv/vidtv_mux.c +6 -1
index b51e6a3b8cbe..f99878eff7ac 100644

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

drivers/media/test-drivers/vidtv/vidtv_psi.c +40 -5

45 lines not on this page · raw message

drivers/media/usb/dvb-usb-v2/af9035.c +9 -4
index 8cbaab9a6084..f0bc3e060ab8 100644

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

drivers/mfd/dln2.c +0 -1
index fc65f9e25fda..852129ea0766 100644

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

drivers/mfd/mfd-core.c +12 -5
index a3a6faa99de0..c0083e38d527 100644

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

drivers/misc/ti-st/st_core.c +4 -3
index f4ddd1e67015..ca115f344fa2 100644

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

drivers/mmc/core/mmc.c +1 -1
index 91c929bd69c0..87807ef010a9 100644

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

drivers/net/can/dev/dev.c +6 -4
index 2b38a99884f2..b5e79d63d59b 100644

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

drivers/net/ethernet/broadcom/tg3.c +2 -1
index d14f37be1eb3..5647833303a4 100644

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

drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +1 -1
index cd6e016e6210..ccf2bec283d3 100644

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

drivers/net/ethernet/google/gve/gve_main.c +1 -1
index f0c1e6c80b61..b76d1d019a81 100644

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

drivers/net/ethernet/intel/i40e/i40e_main.c +7 -3
index d23a467d0d20..64e1f6f407b4 100644

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

drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c +1 -1
index dbd3bebf11ec..2e8b17e3b935 100644

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

drivers/net/ethernet/realtek/r8169_main.c +12 -3
index 37e34d8f7946..6e0fe77d1019 100644

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

drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h +1 -1
index 6c3b8a950f58..eee58e051387 100644

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

drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +13 -1
index ad4df9bddcf3..b06066746302 100644

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

drivers/net/ethernet/toshiba/spider_net.c +1 -1
index 5f5b33e6653b..9d4c49f28d31 100644

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

drivers/net/ipvlan/ipvlan_core.c +4 -4
index ab09d110760e..b5a61b16a7ea 100644

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

drivers/net/ipvlan/ipvlan_main.c +1 -0
index 93be7dd571fc..f59ef2e2a614 100644

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

drivers/net/macsec.c +3 -3
index 0ffcef2fa10a..83b02dc7dfd2 100644

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

drivers/net/wireless/mediatek/mt76/mt7603/core.c +2 -0
index 60a996b63c0c..915b8349146a 100644

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

drivers/net/wireless/mediatek/mt76/mt7603/mac.c +16 -7
index f665a1c95eed..9eb898ebbb44 100644

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

drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.c +1 -1
index d10c14c694da..a1b920843b86 100644

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

drivers/net/wireless/realtek/rtlwifi/rtl8192c/dm_common.c +1 -1
index 265a1a336304..c493e50b7bc5 100644

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

drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c +1 -1
index 8ada31380efa..0ff8e355c23a 100644

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

drivers/net/wireless/realtek/rtw88/debug.c +2 -2
index 8bb6cc8ca74e..83413cda9bc5 100644

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

drivers/nvdimm/of_pmem.c +7 -1
index 10dbdcdfb9ce..0243789ba914 100644

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

drivers/nvdimm/region_devs.c +4 -4
index 1d72653b5c8d..0a75948cde5a 100644

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

drivers/pcmcia/cs.c +1 -0
index f70197154a36..820cce7c8b40 100644

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

drivers/pcmcia/ds.c +9 -5
index 72114907c0e4..bf2e856f53e9 100644

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

drivers/platform/x86/wmi.c +21 -29

50 lines not on this page · raw message

drivers/pwm/pwm-brcmstb.c +2 -2
index fea612c45f20..fd8479cd6771 100644

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

drivers/pwm/pwm-sti.c +35 -40

75 lines not on this page · raw message

drivers/rtc/rtc-pcf85363.c +1 -1
index 3450d615974d..bb962dce3ab2 100644

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

drivers/scsi/ufs/ufshcd.c +1 -1
index f3389e913179..a432aebd14be 100644

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

drivers/soc/qcom/llcc-qcom.c +3 -0
index c60fe98f03e3..8cf7b142e141 100644

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

drivers/spi/Kconfig +1 -0
index 4d98ce7571df..5fd9b515f6f1 100644

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

drivers/spi/spi-nxp-fspi.c +1 -1
index 90b5fbc914ae..f40b93960b89 100644

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

drivers/staging/media/sunxi/cedrus/cedrus_hw.c +12 -12
index bcf050a04ffc..e782731f0a6a 100644

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

drivers/thermal/thermal_core.c +4 -2
index dd449945e1e5..1cf49912dc96 100644

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

drivers/tty/tty_jobctrl.c +11 -6
index 95d67613b25b..a27d02187174 100644

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

drivers/usb/dwc2/hcd.c +1 -1
index 9279d3d3698c..14925fedb01a 100644

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

drivers/usb/host/xhci-pci.c +2 -0
index 8034e643a4af..7d0c2cccbfc0 100644

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

drivers/usb/host/xhci-plat.c +19 -4
index 972a44b2a7f1..e56a1fb9715a 100644

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

drivers/usb/usbip/stub_dev.c +7 -2
index 3c6d452e3bf4..4104eea03e80 100644

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

drivers/video/fbdev/fsl-diu-fb.c +1 -1
index a547c21c7e92..5d564e8670c5 100644

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

drivers/video/fbdev/imsttfb.c +19 -14
index 1b2fb8ed7623..e559c844436b 100644

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

drivers/xen/xen-pciback/conf_space.c +13 -6
index 059de92aea7d..d47eee6c5143 100644

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

drivers/xen/xen-pciback/conf_space_capability.c +7 -1
index 097316a74126..1948a9700c8f 100644

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

drivers/xen/xen-pciback/conf_space_header.c +3 -18
index ac45cdc38e85..fcaa050d692d 100644

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

fs/btrfs/ioctl.c +5 -5
index cffd149faf63..6da8587e2ae3 100644

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

fs/ext4/extents.c +5 -5
index 2c2e1cc43e0e..193b13630ac1 100644

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

fs/f2fs/file.c +1 -0
index 6e91be5b8c30..4e6b93f16758 100644

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

fs/pstore/platform.c +8 -1
index ce03c3dbb5c3..d59f13b1fb96 100644

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

include/linux/clk-provider.h +28 -6
index 03a5de5f99f4..aa8cbf882914 100644

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

include/linux/cpuhotplug.h +1 -0
index cb87247da5ba..7cc2889608e0 100644

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

include/linux/idr.h +4 -2
index a0dce14090a9..da5f5fa4a3a6 100644

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

include/linux/mfd/core.h +1 -1
index 4b35baa14d30..8974c7142c94 100644

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

include/linux/netdevice.h +1 -0
index e814ce78a196..3380668478e8 100644

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

include/linux/overflow.h +69 -41

110 lines not on this page · raw message

include/linux/padata.h +2 -1
index a433f13fc4bf..495b16b6b4d7 100644

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

include/net/flow.h +1 -1
index 236d0941c69f..7ffa1fe1107c 100644

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

include/net/netfilter/nf_nat_redirect.h +1 -2
index 2418653a66db..279380de904c 100644

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

include/net/tcp.h +1 -1
index 772e59391028..5c03dc6d0f79 100644

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

kernel/futex/core.c +11 -1
index 8dd0bc50ac36..cde0ca876b93 100644

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

kernel/irq/matrix.c +3 -3
index 8e586858bcf4..d25edbb87119 100644

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

kernel/livepatch/core.c +1 -1
index e8bdce6fdd64..f5faf935c2d8 100644

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

kernel/padata.c +9 -5
index 11ca3ebd8b12..7d500219f96b 100644

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

kernel/sched/fair.c +1 -17
index d53f57ac7609..73a89fbd81be 100644

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

kernel/trace/trace_kprobe.c +1 -1
index 37e1ec1d3ee5..718357289899 100644

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

lib/test_overflow.c +98 -0

98 lines not on this page · raw message

mm/readahead.c +2 -1
index c5b0457415be..d30bcf4bc63b 100644

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

net/dccp/ipv4.c +3 -3
index f2a0a4e6dd74..2c7c1bdd39e1 100644

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

net/dccp/ipv6.c +3 -3
index 6d6bbd43a141..991ca2dc2c02 100644

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

net/hsr/hsr_forward.c +1 -3
index 2a02cb2edec2..0c115d8ded03 100644

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

net/ipv4/syncookies.c +7 -13
index 542b66783493..cc860f2dcf65 100644

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

net/ipv4/tcp_input.c +5 -4
index 0c935904ced8..a8948c76d19b 100644

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

net/ipv4/tcp_metrics.c +7 -8
index a707fa1dbcaf..f823a15b973c 100644

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

net/ipv4/udp.c +4 -2
index 913966e7703f..476f79f1563a 100644

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

net/ipv6/ip6_output.c +7 -1
index 58b5ab5fcdbf..4126be15e0d9 100644

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

net/ipv6/syncookies.c +4 -3
index 12ae817aaf2e..c10a68bb85de 100644

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

net/llc/llc_input.c +8 -2
index 7cac441862e2..51bccfb00a9c 100644

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

net/llc/llc_s_ac.c +3 -0
index 9fa3342c7a82..df26557a0244 100644

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

net/llc/llc_station.c +3 -0
index c29170e767a8..64e2c67e16ba 100644

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

net/netfilter/nf_nat_redirect.c +58 -40

98 lines not on this page · raw message

net/netfilter/nft_redir.c +31 -53

84 lines not on this page · raw message

net/netfilter/xt_REDIRECT.c +8 -2
index 353ca7801251..ff66b56a3f97 100644

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

net/netfilter/xt_recent.c +1 -1
index 0446307516cd..39937ff24527 100644

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

net/smc/af_smc.c +2 -2
index 8ab84926816f..9fc47292b68d 100644

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

net/smc/smc.h +5 -0
index e6919fe31617..1eee40ec1d96 100644

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

net/smc/smc_cdc.c +5 -6
index 9125d28d9ff5..b92b2cee2079 100644

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

net/smc/smc_close.c +3 -2
index 149a59ecd299..bcd3ea894555 100644

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

net/tipc/link.c +2 -2
index dbb1bc722ba9..5f849c730028 100644

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

net/tipc/netlink.c +2 -2
index c447cb5f879e..f10ed873858f 100644

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

scripts/mod/file2alias.c +5 -5
index da4df53ee695..7154df094f40 100644

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

sound/soc/fsl/fsl_easrc.c +6 -2
index 3cf1f40e6892..acd500c3b9d0 100644

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

sound/soc/fsl/mpc5200_dma.c +3 -0
index 231984882176..2e82731072c9 100644

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

sound/soc/intel/skylake/skl-sst-utils.c +1 -0
index 57ea815d3f04..b776c58dcf47 100644

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

sound/soc/ti/ams-delta.c +3 -1
index 57feb473a579..fbd75732a68b 100644

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

tools/iio/iio_generic_buffer.c +39 -20

59 lines not on this page · raw message

tools/perf/util/hist.c +7 -3
index 8a793e4c9400..c78d8813811c 100644

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

tools/perf/util/machine.c +12 -10
index df515cd8d018..eec926c313b1 100644

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

tools/testing/selftests/pidfd/pidfd_fdinfo_test.c +1 -1
index 3fd8e903118f..3bc46d6151f4 100644

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

tools/testing/selftests/pidfd/pidfd_test.c +6 -6
index 9a2d64901d59..79f543ad394c 100644

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

tools/testing/selftests/resctrl/resctrl_tests.c +5 -0
index bd98746c6f85..b33d1d6dd99a 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.