Linux 5.10.201
Greg Kroah-Hartman
maintainerI'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()
Greg Kroah-Hartman
maintainerDocumentation/process/deprecated.rst +17 -3
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -446,7 +446,7 @@ copy_mc_to_kernel(void *to, const void *from, unsigned len);#define copy_mc_to_kernel copy_mc_to_kernelunsigned 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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, ®, + name =ti_dt_clk_name (node); + clk =_register_gate (node, name, parent_name, flags, ®, enable_bit, clk_gate_flags, ops, hw_ops);if (!IS_ERR (clk))
drivers/clk/ti/interface.c +6 -3
@@ -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 , ®))
@@ -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, ®, + name =ti_dt_clk_name (node); + clk =_register_interface (node, name, parent_name, ®, enable_bit, ops);if (!IS_ERR (clk))
drivers/clk/ti/mux.c +5 -3
@@ -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, ®, shift, mask, latch, clk_mux_flags,NULL );
drivers/crypto/caam/caamalg.c +2 -1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 2060int 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/media/platform/s3c-camif/camif-capture.c +2 -4
Lines of this file are not shown. View the raw message.
drivers/media/test-drivers/vidtv/vidtv_mux.c +6 -1
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/net/ethernet/chelsio/inline_crypto/chtls/chtls_cm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +7 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +12 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +13 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/toshiba/spider_net.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/core.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7603/mac.c +16 -7
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/dm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192c/dm_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/debug.c +2 -2
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-sti.c +35 -40
75 lines not on this page · raw message
drivers/staging/media/sunxi/cedrus/cedrus_hw.c +12 -12
Lines of this file are not shown. View the raw message.
drivers/xen/xen-pciback/conf_space_capability.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/xen/xen-pciback/conf_space_header.c +3 -18
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/net/netfilter/nf_nat_redirect.h +1 -2
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
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
sound/soc/intel/skylake/skl-sst-utils.c +1 -0
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/testing/selftests/pidfd/pidfd_fdinfo_test.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/pidfd/pidfd_test.c +6 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/resctrl/resctrl_tests.c +5 -0
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.