Linux 5.9.11
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.9.11 kernel.
All users of the 5.9 kernel series must upgrade.
The updated 5.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.9.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/xtensa/mmu.rst | 9 Makefile | 2 arch/arm/boot/compressed/head.S | 3 arch/arm/boot/dts/imx50-evk.dts | 2 arch/arm/boot/dts/imx6q-prti6q.dts | 4 arch/arm/boot/dts/imx6qdl-udoo.dtsi | 2 arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi | 19 - arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 2 arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi | 4 arch/arm/boot/dts/sun6i-a31-hummingbird.dts | 2 arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts | 2 arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 2 arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts | 2 arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts | 2 arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts | 5 arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts | 2 arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts | 2 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 2 arch/arm/boot/dts/sun9i-a80-optimus.dts | 2 arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi | 2 arch/arm/boot/dts/vf610-zii-dev-rev-b.dts | 3 arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-plus.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts | 2 arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 2 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts | 2 arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts | 2 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 1 arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 1 arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 1 arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi | 1 arch/arm64/boot/dts/freescale/imx8mm.dtsi | 2 arch/arm64/boot/dts/freescale/imx8mn.dtsi | 30 -- arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts | 2 arch/arm64/include/asm/cpufeature.h | 2 arch/arm64/include/asm/cputype.h | 4 arch/arm64/kernel/cpu_errata.c | 2 arch/arm64/kernel/cpufeature.c | 2 arch/arm64/kernel/process.c | 5 arch/arm64/kernel/psci.c | 5 arch/arm64/kernel/smp.c | 1 arch/mips/alchemy/common/clock.c | 9 arch/mips/mm/tlb-r4k.c | 1 arch/s390/kernel/entry.S | 2 arch/s390/kernel/perf_cpum_sf.c | 2 arch/um/include/asm/pgalloc.h | 8 arch/x86/kernel/cpu/microcode/intel.c | 63 ----- arch/x86/kernel/tboot.c | 3 arch/x86/platform/efi/efi_64.c | 24 +- arch/xtensa/include/asm/pgtable.h | 2 arch/xtensa/mm/cache.c | 14 + block/blk-cgroup.c | 1 drivers/accessibility/speakup/spk_ttyio.c | 12 - drivers/acpi/button.c | 13 + drivers/acpi/fan.c | 1 drivers/atm/nicstar.c | 2 drivers/counter/ti-eqep.c | 4 drivers/dma/dmaengine.c | 17 - drivers/dma/idxd/device.c | 31 +- drivers/dma/idxd/idxd.h | 3 drivers/dma/idxd/init.c | 5 drivers/dma/idxd/registers.h | 25 ++ drivers/dma/idxd/submit.c | 2 drivers/dma/ti/omap-dma.c | 37 ++- drivers/dma/xilinx/xilinx_dma.c | 36 ++- drivers/gpio/gpio-omap.c | 12 - drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c | 4 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 6 drivers/gpu/drm/i915/display/intel_display.c | 3 drivers/gpu/drm/i915/gt/intel_rc6.c | 22 + drivers/gpu/drm/i915/i915_reg.h | 12 - drivers/gpu/drm/i915/intel_pm.c | 13 - drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 1 drivers/hid/hid-logitech-dj.c | 22 + drivers/hid/hid-logitech-hidpp.c | 26 ++ drivers/hid/hid-mcp2221.c | 48 +++- drivers/hv/hv.c | 8 drivers/hwmon/pwm-fan.c | 16 - drivers/iio/accel/kxcjk-1013.c | 51 ++++ drivers/iio/adc/ingenic-adc.c | 34 ++ drivers/iio/adc/mt6577_auxadc.c | 6 drivers/iio/adc/stm32-adc-core.c | 41 +-- drivers/iio/adc/stm32-adc.c | 50 ++++ drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 16 - drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c | 6 drivers/iio/light/Kconfig | 1 drivers/infiniband/Kconfig | 3 drivers/infiniband/hw/hfi1/chip.c | 3 drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 2 drivers/infiniband/sw/rdmavt/Kconfig | 3 drivers/infiniband/sw/rxe/Kconfig | 2 drivers/infiniband/sw/siw/Kconfig | 1 drivers/input/misc/adxl34x.c | 2 drivers/input/mouse/elan_i2c.h | 2 drivers/input/mouse/elan_i2c_core.c | 3 drivers/input/mouse/elan_i2c_i2c.c | 10 drivers/input/mouse/elan_i2c_smbus.c | 2 drivers/input/touchscreen/Kconfig | 1 drivers/iommu/intel/iommu.c | 5 drivers/misc/habanalabs/include/gaudi/gaudi_masks.h | 1 drivers/mmc/host/sdhci-of-arasan.c | 51 +--- drivers/mmc/host/sdhci-pci-core.c | 13 - drivers/net/can/dev.c | 2 drivers/net/can/flexcan.c | 26 +- drivers/net/can/kvaser_pciefd.c | 4 drivers/net/can/m_can/Kconfig | 3 drivers/net/can/m_can/m_can.c | 18 + drivers/net/can/m_can/m_can.h | 1 drivers/net/can/m_can/m_can_platform.c | 23 +- drivers/net/can/m_can/tcan4x5x.c | 32 ++ drivers/net/can/ti_hecc.c | 13 - drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 2 drivers/net/can/usb/mcba_usb.c | 4 drivers/net/can/usb/peak_usb/pcan_usb_core.c | 4 drivers/net/dsa/lantiq_gswip.c | 11 drivers/net/dsa/mv88e6xxx/global1_vtu.c | 59 ++++- drivers/net/ethernet/broadcom/b44.c | 3 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 drivers/net/ethernet/faraday/ftgmac100.c | 4 drivers/net/ethernet/freescale/enetc/Kconfig | 1 drivers/net/ethernet/freescale/enetc/enetc.c | 62 +++-- drivers/net/ethernet/freescale/enetc/enetc_hw.h | 115 +++++++++- drivers/net/ethernet/freescale/enetc/enetc_mdio.c | 8 drivers/net/ethernet/freescale/fec_main.c | 12 - drivers/net/ethernet/marvell/mvneta.c | 5 drivers/net/ethernet/mediatek/mtk_star_emac.c | 3 drivers/net/ethernet/mellanox/mlx4/fw.c | 6 drivers/net/ethernet/mellanox/mlx4/fw.h | 4 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c | 13 - drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 20 + drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 7 drivers/net/ethernet/mellanox/mlxsw/core.c | 3 drivers/net/ethernet/microchip/lan743x_main.c | 13 - drivers/net/ethernet/qlogic/qed/qed_cxt.c | 4 drivers/net/ethernet/qlogic/qed/qed_cxt.h | 3 drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 12 - drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 3 drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c | 5 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 drivers/net/ethernet/ti/am65-cpts.c | 3 drivers/net/ethernet/ti/cpsw.c | 11 drivers/net/ethernet/ti/cpsw_new.c | 9 drivers/net/geneve.c | 3 drivers/net/ipa/gsi_trans.c | 15 + drivers/net/netdevsim/dev.c | 2 drivers/net/netdevsim/health.c | 1 drivers/net/netdevsim/udp_tunnels.c | 1 drivers/net/phy/mscc/mscc_macsec.c | 1 drivers/net/usb/qmi_wwan.c | 2 drivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 drivers/pinctrl/pinctrl-rockchip.c | 2 drivers/regulator/core.c | 38 +-- drivers/regulator/pfuze100-regulator.c | 13 - drivers/regulator/ti-abb-regulator.c | 12 - drivers/s390/block/dasd.c | 6 drivers/scsi/ufs/ufshcd.c | 32 ++ drivers/scsi/ufs/ufshcd.h | 2 drivers/spi/spi-bcm2835aux.c | 21 - drivers/spi/spi-cadence-quadspi.c | 2 drivers/spi/spi-fsl-lpspi.c | 3 drivers/spi/spi-npcm-fiu.c | 2 drivers/spi/spi.c | 81 +++++-- drivers/staging/mt7621-pci/pci-mt7621.c | 15 - drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 1 drivers/tee/amdtee/amdtee_private.h | 8 drivers/tee/amdtee/core.c | 26 +- drivers/tty/serial/ar933x_uart.c | 6 drivers/tty/serial/imx.c | 30 -- drivers/usb/dwc2/platform.c | 3 fs/afs/dir.c | 1 fs/afs/inode.c | 8 fs/afs/internal.h | 1 fs/efivarfs/super.c | 1 fs/ext4/ext4.h | 3 fs/gfs2/aops.c | 2 fs/gfs2/glops.c | 13 + fs/gfs2/log.c | 2 fs/gfs2/rgrp.c | 10 fs/io_uring.c | 1 fs/libfs.c | 6 fs/notify/fsnotify.c | 12 - fs/super.c | 33 -- fs/xfs/libxfs/xfs_attr_leaf.c | 8 fs/xfs/libxfs/xfs_rmap_btree.c | 16 - fs/xfs/scrub/bmap.c | 8 fs/xfs/scrub/btree.c | 45 ++- fs/xfs/scrub/dir.c | 21 + fs/xfs/xfs_iwalk.c | 27 ++ fs/xfs/xfs_mount.c | 11 include/drm/intel-gtt.h | 5 include/linux/intel-iommu.h | 2 include/linux/pagemap.h | 2 include/linux/pm_runtime.h | 21 + include/linux/sched.h | 16 + include/linux/spi/spi.h | 19 + include/linux/swiotlb.h | 1 include/net/ip_tunnels.h | 7 include/net/neighbour.h | 1 include/net/tls.h | 16 + include/trace/events/sunrpc.h | 3 kernel/fail_function.c | 5 kernel/ptrace.c | 16 - kernel/rcu/tree.c | 2 kernel/rcu/tree_stall.h | 22 + kernel/sched/core.c | 15 - kernel/sched/fair.c | 3 kernel/seccomp.c | 5 kernel/trace/bpf_trace.c | 10 lib/strncpy_from_user.c | 19 + mm/filemap.c | 18 + mm/huge_memory.c | 9 mm/memcontrol.c | 9 mm/page_alloc.c | 5 net/bridge/br_device.c | 1 net/can/af_can.c | 38 ++- net/core/devlink.c | 6 net/core/neighbour.c | 2 net/core/netpoll.c | 22 + net/core/skmsg.c | 94 ++++++-- net/ipv4/arp.c | 6 net/ipv4/inet_diag.c | 4 net/ipv4/tcp_bbr.c | 2 net/ipv4/tcp_bpf.c | 18 - net/ipv6/addrconf.c | 8 net/ipv6/ah6.c | 3 net/ipv6/ndisc.c | 7 net/mac80211/rc80211_minstrel.c | 27 -- net/mac80211/rc80211_minstrel.h | 1 net/mac80211/sta_info.c | 14 - net/ncsi/ncsi-manage.c | 5 net/ncsi/ncsi-netlink.c | 22 - net/ncsi/ncsi-netlink.h | 3 net/netlabel/netlabel_unlabeled.c | 17 + net/rfkill/core.c | 3 net/sctp/input.c | 4 net/sctp/sm_sideeffect.c | 4 net/sctp/transport.c | 2 net/smc/smc_ib.c | 6 net/tls/tls_device.c | 37 ++- net/tls/tls_sw.c | 2 net/vmw_vsock/af_vsock.c | 2 net/x25/af_x25.c | 1 sound/core/control.c | 2 sound/firewire/fireworks/fireworks_transaction.c | 4 sound/pci/hda/patch_realtek.c | 85 +++++++ sound/pci/mixart/mixart_core.c | 5 sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c | 2 sound/soc/intel/keembay/kmb_platform.c | 6 sound/soc/qcom/lpass-platform.c | 5 sound/usb/quirks.c | 10 tools/bpf/bpftool/feature.c | 7 tools/bpf/bpftool/net.c | 18 - tools/lib/bpf/Makefile | 2 tools/perf/builtin-lock.c | 4 tools/testing/kunit/.gitattributes | 1 tools/testing/selftests/bpf/prog_tests/sockopt_multi.c | 3 tools/testing/selftests/kvm/include/x86_64/processor.h | 2 tools/testing/selftests/kvm/lib/x86_64/processor.c | 3 tools/testing/selftests/seccomp/seccomp_bpf.c | 8 265 files changed, 1919 insertions(+), 913 deletions(-)
Aaron Lewis (1):
selftests: kvm: Fix the segment descriptor layout to match the actual layout
Adam Ford (2):
arm64: dts: imx8mm-beacon-som: Fix Choppy BT audio
arm64: dts imx8mn: Remove non-existent USB OTG2
Adrian Hunter (1):
mmc: sdhci-pci: Prefer SDR25 timing for High Speed mode for BYT-based Intel controllers
Alejandro Concepcion Rodriguez (1):
can: dev: can_restart(): post buffer from the right context
Alex Deucher (1):
drm/amd/display: Add missing pflip irq for dcn2.0
Alex Elder (1):
net: ipa: lock when freeing transaction
Alex Marginean (1):
enetc: Workaround for MDIO register access issue
Amir Goldstein (1):
fanotify: fix logic of reporting name info with watched parent
Anant Thazhemadam (2):
can: af_can: prevent potential access of uninitialized member in can_rcv()
can: af_can: prevent potential access of uninitialized member in canfd_rcv()
Andrew Lunn (1):
ARM: dts: vf610-zii-dev-rev-b: Fix MDIO over clocking
Andy Shevchenko (2):
pinctrl: mcp23s08: Print error message when regmap init fails iommu/vt-d: Move intel_iommu_gfx_mapped to Intel IOMMU header
Ard Biesheuvel (1):
efi/arm: set HSCTLR Thumb2 bit correctly for HVC calls from HYP
Arvind Sankar (1):
efi/x86: Free efi_pgd with free_pages()
Aya Levin (1):
net/mlx4_core: Fix init_hca fields offset
Biwen Li (1):
arm64: dts: fsl: fix endianness issue of rcpm
Bob Peterson (2):
gfs2: Fix case in which ail writes are done to jdata holes
gfs2: Fix regression in freeze_go_sync
Brendan Higgins (1):
kunit: tool: unmark test_data as binary blobs
Brian O'Keefe (1):
staging: rtl8723bs: Add 024c:0627 to the list of SDIO device-ids
Can Guo (2):
scsi: ufs: Fix unbalanced scsi_block_reqs_cnt caused by ufshcd_hold()
scsi: ufs: Try to save power mode change and UIC cmd completion timeout
Chen Yu (1):
x86/microcode/intel: Check patch signature before saving microcode for early loading
Chen-Yu Tsai (10):
Revert "arm: sun8i: orangepi-pc-plus: Set EMAC activity LEDs to active high"
ARM: dts: sun6i: a31-hummingbird: Enable RGMII RX/TX delay on Ethernet PHY
ARM: dts: sun7i: cubietruck: Enable RGMII RX/TX delay on Ethernet PHY
ARM: dts: sun7i: bananapi-m1-plus: Enable RGMII RX/TX delay on Ethernet PHY
ARM: dts: sun8i: h3: orangepi-plus2e: Enable RGMII RX/TX delay on Ethernet PHY
ARM: dts: sun8i: a83t: Enable both RGMII RX/TX delay on Ethernet PHY
ARM: dts: sun9i: Enable both RGMII RX/TX delay on Ethernet PHY
ARM: dts: sunxi: bananapi-m2-plus: Enable RGMII RX/TX delay on Ethernet PHY
arm64: dts: allwinner: h5: libretech-all-h5-cc: Enable RGMII RX/TX delay on PHY
arm64: dts: allwinner: a64: bananapi-m64: Enable RGMII RX/TX delay on PHY
Chris Co (1):
Drivers: hv: vmbus: Allow cleanup of VMBUS_CONNECT_CPU if disconnected
Christoph Hellwig (2):
RMDA/sw: Don't allow drivers using dma_virt_ops on highmem configs
blk-cgroup: fix a hd_struct leak in blkcg_fill_root_iostats
Claire Chang (1):
rfkill: Fix use-after-free in rfkill_resume()
Clément Péron (1):
arm64: dts: allwinner: beelink-gs1: Enable both RGMII RX/TX delay
Colin Ian King (1):
can: peak_usb: fix potential integer overflow on shift of a int
Corentin Labbe (1):
arm64: dts: allwinner: Pine H64: Enable both RGMII RX/TX delay
Dan Carpenter (3):
Input: adxl34x - clean up a data type in adxl34x_probe()
dmaengine: fix error codes in channel_register()
ALSA: firewire: Clean up a locking issue in copy_resp_to_buf()
Dan Murphy (2):
can: m_can: m_can_class_free_dev(): introduce new function
can: m_can: Fix freeing of can device from peripherials
Daniel Xu (1):
lib/strncpy_from_user.c: Mask out bytes after NUL terminator.
Darrick J. Wong (6):
vfs: remove lockdep bogosity in __sb_start_write
xfs: fix the minrecs logic when dealing with inode root child blocks
xfs: strengthen rmap record flags checking
xfs: directory scrub should check the null bestfree entries too
xfs: ensure inobt record walks always make forward progress
xfs: revert "xfs: fix rmap key and record comparison functions"
Dave Jiang (2):
dmaengine: idxd: fix wq config registers offset programming
dmaengine: idxd: fix mapping of portal size
David Howells (1):
afs: Fix speculative status fetch going out of order wrt to modifications
David Lechner (1):
counter/ti-eqep: Fix regmap max_register
Dinh Nguyen (1):
arm64: dts: agilex/stratix10: Fix qspi node compatible
Dmitry Bogdanov (1):
qed: fix ILT configuration of SRC block
Dongli Zhang (1):
page_frag: Recover from memory pressure
Edwin Peer (1):
bnxt_en: read EEPROM A2h address using page 0
Eli Cohen (1):
net/mlx5: E-Switch, Fail mlx5_esw_modify_vport_rate if qos disabled
Enric Balletbo i Serra (1):
can: tcan4x5x: replace depends on REGMAP_SPI with depends on SPI
Fabien Parent (1):
iio: adc: mediatek: fix unset field
Fabio Estevam (1):
ARM: dts: imx50-evk: Fix the chip select 1 IOMUX
Faiz Abbas (1):
can: m_can: m_can_stop(): set device to software init mode before closing
Felix Fietkau (2):
mac80211: minstrel: remove deferred sampling code
mac80211: minstrel: fix tx status processing corner case
Filip Moc (1):
net: usb: qmi_wwan: Set DTR quirk for MR400
Florian Fainelli (1):
net: Have netpoll bring-up DSA management interface
Fugang Duan (1):
tty: serial: imx: keep console clocks always on
Gao Xiang (1):
xfs: fix forkoff miscalculation related to XFS_LITINO(mp)
Gerald Schaefer (1):
mm/userfaultfd: do not access vma->vm_mm after calling handle_userfault()
Greg Kroah-Hartman (1):
Linux 5.9.11
Grygorii Strashko (1):
net: ethernet: ti: cpsw: fix cpts irq after suspend
Guenter Roeck (2):
ASOC: Intel: kbl_rt5663_rt5514_max98927: Do not try to disable disabled clock
ACPI: fan: Initialize performance state sysfs attribute
Gwendal Grignou (1):
iio: cros_ec: Use default frequencies when EC returns invalid information
Hans de Goede (6):
ACPI: button: Add DMI quirk for Medion Akoya E2228T
HID: logitech-dj: Handle quad/bluetooth keyboards with a builtin trackpad
HID: logitech-dj: Fix Dinovo Mini when paired with a MX5x00 receiver
HID: logitech-dj: Fix an error in mse_bluetooth_descriptor
iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum
iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet-mode
Harry Cutts (1):
HID: logitech-hidpp: Add PID for MX Anywhere 2
Heiko Carstens (1):
s390: fix system call exit path
Heiner Kallweit (1):
net: bridge: add missing counters to ndo_get_stats64 callback
Ian Rogers (1):
tools, bpftool: Avoid array index warnings.
Ido Schimmel (1):
mlxsw: core: Use variable timeout for EMAD retries
Jan Kara (1):
ext4: fix bogus warning in ext4_update_dx_flag()
Jarkko Nikula (1):
can: m_can: process interrupt only when not runtime suspended
Jeff Dike (1):
Exempt multicast addresses from five-second neighbor lifetime
Jens Axboe (2):
io_uring: don't double complete failed reissue request
mm: never attempt async page lock if we've transferred data already
Jernej Skrabec (4):
arm64: dts: allwinner: a64: OrangePi Win: Fix ethernet node
arm64: dts: allwinner: a64: Pine64 Plus: Fix ethernet node
arm64: dts: allwinner: h5: OrangePi PC2: Fix ethernet node
ARM: dts: sun8i: r40: bananapi-m2-ultra: Fix ethernet node
Jianqun Xu (1):
pinctrl: rockchip: enable gpio pclk for rockchip_gpio_to_irq
Jimmy Assarsson (2):
can: kvaser_pciefd: Fix KCAN bittiming limits
can: kvaser_usb: kvaser_usb_hydra: Fix KCAN bittiming limits
Jiri Olsa (1):
libbpf: Fix VERSIONED_SYM_COUNT number parsing
Joakim Tjernlund (1):
ALSA: usb-audio: Add delay quirk for all Logitech USB devices
Joel Stanley (2):
net: ftgmac100: Fix crash when removing driver net/ncsi: Fix netlink registration
Johannes Berg (1):
mac80211: free sta in sta_info_insert_finish() on errors
John Fastabend (6):
bpf, sockmap: Fix partial copy_page_to_iter so progress can still be made bpf, sockmap: Ensure SO_RCVBUF memory is observed on ingress redirect bpf, sockmap: Skb verdict SK_PASS to self already checked rmem limits bpf, sockmap: On receive programs try to fast track SK_PASS ingress bpf, sockmap: Use truesize with sk_rmem_schedule()
bpf, sockmap: Avoid returning unneeded EAGAIN when redirecting to self
Jonathan Liu (1):
drm: bridge: dw-hdmi: Avoid resetting force in the detect function
Kailang Yang (3):
ALSA: hda/realtek - Add supported for Lenovo ThinkPad Headset Button
ALSA: hda/realtek - Add supported mute Led for HP
ALSA: hda/realtek - HP Headset Mic can't detect after boot
Karsten Graul (1):
net/smc: fix direct access to ib_gid_addr->ndev in smc_ib_determine_gid()
Kees Cook (2):
selftests/seccomp: powerpc: Fix typo in macro variable name selftests/seccomp: sh: Fix register names
Konrad Dybcio (3):
arm64: Add MIDR value for KRYO2XX gold/silver CPU cores
arm64: kpti: Add KRYO2XX gold/silver CPU cores to kpti safelist
arm64: cpu_errata: Apply Erratum 845719 to KRYO2XX Silver
Lars Povlsen (1):
HID: mcp2221: Fix GPIO output handling
Leo Yan (2):
perf lock: Correct field name "flags"
perf lock: Don't free "lock_seq_stat" if read_count isn't zero
Lorenzo Bianconi (2):
net: mvneta: fix possible memory leak in mvneta_swbm_add_rx_fragment
iio: imu: st_lsm6dsx: set 10ms as min shub slave timeout
Lucas Stach (1):
arm64: dts: imx8mm: fix voltage for 1.6GHz CPU operating point
Lukas Wunner (4):
spi: lpspi: Fix use-after-free on unbind
spi: Introduce device-managed SPI controller allocation
spi: npcm-fiu: Don't leak SPI master in probe error path
spi: bcm2835aux: Fix use-after-free on unbind
Luo Meng (1):
fail_function: Remove a redundant mutex unlock
Manish Narani (3):
mmc: sdhci-of-arasan: Allow configuring zero tap values
mmc: sdhci-of-arasan: Use Mask writes for Tap delays
mmc: sdhci-of-arasan: Issue DLL reset explicitly
Maor Dickman (1):
net/mlx5e: Fix check if netdev is bond slave
Marc Kleine-Budde (4):
can: mcba_usb: mcba_usb_start_xmit(): first fill skb, then pass to can_put_echo_skb()
can: tcan4x5x: tcan4x5x_can_probe(): add missing error checking for devm_regmap_init()
can: tcan4x5x: tcan4x5x_can_remove(): fix order of deregistration
can: flexcan: flexcan_chip_start(): fix erroneous flexcan_transceiver_enable() during bus-off recovery
Marek Vasut (5):
ARM: dts: stm32: Fix TA3-GPIO-C key on STM32MP1 DHCOM PDK2
ARM: dts: stm32: Fix LED5 on STM32MP1 DHCOM PDK2
ARM: dts: stm32: Define VIO regulator supply on DHCOM
ARM: dts: stm32: Enable thermal sensor support on stm32mp15xx-dhcor
ARM: dts: stm32: Keep VDDA LDO1 always on on DHCOM
Martin Blumenstingl (2):
net: lantiq: Wait for the GPHY firmware to be ready
usb: dwc2: Avoid leaving the error_debugfs label unused
Matthew Murrian (2):
dmaengine: xilinx_dma: Fix usage of xilinx_aximcdma_tx_segment
dmaengine: xilinx_dma: Fix SG capability check for MCDMA
Matthew Wilcox (Oracle) (1):
mm: fix readahead_page_batch for retry entries
Max Filippov (2):
xtensa: fix TLBTEMP area placement
xtensa: disable preemption around cache alias management calls
Maxim Mikityanskiy (1):
net/mlx5e: Fix refcount leak on kTLS RX resync
Michael Chan (2):
bnxt_en: Fix counter overflow logic.
bnxt_en: Free port stats during firmware reset.
Michael Guralnik (1):
net/mlx5: Add handling of port type in rule deletion
Michael Sit Wei Hong (1):
ASoC: Intel: KMB: Fix S24_LE configuration
Michał Mirosław (3):
regulator: fix memory leak with repeated set_machine_constraints()
regulator: avoid resolve_supply() infinite recursion
regulator: workaround self-referent regulators
Mickaël Salaün (2):
ptrace: Set PF_SUPERPRIV when checking capability
seccomp: Set PF_SUPERPRIV when checking capability
Muchun Song (1):
mm: memcg/slab: fix root memcg vmstats
Necip Fazil Yildiran (2):
Input: resistive-adc-touch - fix kconfig dependency on IIO_BUFFER
iio: light: fix kconfig dependency bug for VCNL4035
Nenad Peric (1):
arm64: dts: allwinner: h5: OrangePi Prime: Fix ethernet node
Nishanth Menon (1):
regulator: ti-abb: Fix array out of bound read access on the first transition
Oded Gabbay (1):
habanalabs/gaudi: mask WDT error in QMAN
Oleksij Rempel (1):
ARM: dts: imx6q-prti6q: fix PHY address
Olivier Moysan (1):
iio: adc: stm32-adc: fix a regression when using dma and irq
Paul Barker (1):
hwmon: (pwm-fan) Fix RPM calculation
Paul Cercueil (2):
iio/adc: ingenic: Fix AUX/VBAT readings when touchscreen is used iio/adc: ingenic: Fix battery VREF for JZ4770 SoC
Paul E. McKenney (1):
rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled
Paul Moore (2):
netlabel: fix our progress tracking in netlbl_unlabel_staticlist()
netlabel: fix an uninitialized warning in netlbl_unlabel_staticlist()
PeiSen Hou (1):
ALSA: hda/realtek: Add some Clove SSID in the ALC293(ALC1220)
Peter Zijlstra (2):
sched: Fix data-race in wakeup
sched: Fix rq->nr_iowait ordering
Qinglang Miao (1):
RDMA/pvrdma: Fix missing kfree() in pvrdma_register_device()
Quentin Perret (1):
sched/fair: Fix overutilized update in enqueue_task_fair()
Randy Dunlap (1):
MIPS: export has_transparent_hugepage() for modules
Richard Weinberger (1):
um: Call pgtable_pmd_page_dtor() in __pmd_free_tlb()
Rijo Thomas (2):
tee: amdtee: fix memory leak due to reset of global shm list
tee: amdtee: synchronize access to shm list
Rodrigo Vivi (1):
drm/i915/tgl: Fix Media power gate sequence.
Ryan Sharpelletti (1):
tcp: only postpone PROBE_RTT if RTT is < current min_rtt estimate
Sam Nobs (1):
tty: serial: imx: fix potential deadlock
Samuel Thibault (1):
speakup: Do not let the line discipline be used several times
Scott Mayhew (1):
SUNRPC: Fix oops in the rpc_xdr_buf event class
Sean Nyekjaer (1):
regulator: pfuze100: limit pfuze-support-disable-sw to pfuze{100,200}Sebastian Andrzej Siewior (1):
atm: nicstar: Unmap DMA on send error
Sergey Matyukevich (1):
arm: dts: imx6qdl-udoo: fix rgmii phy-mode for ksz9031 phy
Sergio Paracuellos (1):
staging: mt7621-pci: avoid to request pci bus resources
Srinivasa Rao Mandadapu (1):
ASoC: qcom: lpass-platform: Fix memory leak
Steen Hegelund (1):
net: phy: mscc: remove non-MACSec compatible phy
Stefan Haberland (1):
s390/dasd: fix null pointer dereference for ERP requests
Stefano Garzarella (1):
vsock: forward all packets to the host when no H2G is registered
Stephen Rothwell (1):
swiotlb: using SIZE_MAX needs limits.h included
Subash Abhinov Kasiviswanathan (1):
net: qualcomm: rmnet: Fix incorrect receive packet handling during cleanup
Sven Van Asbroeck (3):
lan743x: fix issue causing intermittent kernel log warnings
lan743x: prevent entire kernel HANG on open, for some platforms
spi: fix client driver breakages when using GPIO descriptors
Taehee Yoo (1):
netdevsim: set .owner to THIS_MODULE
Takashi Iwai (1):
ALSA: mixart: Fix mutex deadlock
Takashi Sakamoto (1):
ALSA: ctl: fix error path at adding user-defined element set
Tariq Toukan (1):
net/tls: Fix wrong record sn in async mode of device resync
Thomas Richter (1):
s390/cpum_sf.c: fix file permission for cpum_sfb_size
Tobias Waldekranz (1):
net: dsa: mv88e6xxx: Avoid VTU corruption on 6097
Tony Lindgren (2):
Revert "Revert "gpio: omap: Fix lost edge wake-up interrupts""
dmaengine: ti: omap-dma: Block PM if SDMA is busy to fix audio
Vadim Fedorenko (1):
net/tls: fix corrupted data in recvmsg
Vamshi K Sthambamkadi (1):
efivarfs: fix memory leak in efivarfs_create()
Ville Syrjälä (1):
drm/i915: Handle max_bpc==16
Vincent Stehlé (1):
net: ethernet: mtk-star-emac: return ok when xmit drops
Vladyslav Tarasiuk (2):
net/mlx5: Clear bw_share upon VF disable net/mlx5: Disable QoS when min_rates on all VFs are zero
Wang Hai (4):
devlink: Add missing genlmsg_cancel() in devlink_nl_sb_port_pool_fill()
inet_diag: Fix error path to cancel the meseage in inet_req_diag_fill() tools, bpftool: Add missing close before bpftool net attach exit selftests/bpf: Fix error return code in run_getsockopt_test()
Wang Qing (1):
net: ethernet: ti: am65-cpts: update ret when ptp_clock is ERROR
Will Deacon (3):
arm64: errata: Fix handling of 1418040 with late CPU onlining
arm64: psci: Avoid printing in cpu_psci_cpu_die()
arm64: smp: Tell RCU about CPUs that fail to come online
Wong Vee Khee (1):
net: stmmac: Use rtnl_lock/unlock on netif_set_real_num_rx_queues() call
Wu Bo (1):
can: m_can: m_can_handle_state_change(): fix state change
Xie He (1):
net: x25: Increase refcnt of "struct x25_neigh" in x25_rx_call_request
Xin Long (1):
sctp: change to hold/put transport for proto_unreach_timer
Xiongfeng Wang (1):
drm/sun4i: dw-hdmi: fix error return code in sun8i_dw_hdmi_bind()
Yi-Hung Wei (1):
ip_tunnels: Set tunnel option flag when tunnel metadata is present
Yicong Yang (1):
libfs: fix error cast of negative value in simple_attr_write()
Yu Kuai (1):
xfs: return corresponding errcode if xfs_initialize_perag() fail
Zhang Changzhong (7):
ah6: fix error return code in ah6_input()
net: b44: fix error return code in b44_init_one()
net: ethernet: mtk-star-emac: fix error return code in mtk_star_enable()
net: ethernet: ti: cpsw: fix error return code in cpsw_probe()
qed: fix error return code in qed_iwarp_ll2_start()
qlcnic: fix error return code in qlcnic_83xx_restart_hw() IB/hfi1: Fix error return code in hfi1_init_dd()
Zhang Qilong (7):
ipv6: Fix error path to cancel the meseage
PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter
net: fec: Fix reference count leak in fec series ops
gfs2: fix possible reference leak in gfs2_check_blk_type
can: ti_hecc: Fix memleak in ti_hecc_probe
can: flexcan: fix failure handling of pm_runtime_get_sync()
MIPS: Alchemy: Fix memleak in alchemy_clk_setup_cpu
Zheng Zengkai (1):
serial: ar933x_uart: disable clk on error handling path in probe
Zhenzhong Duan (1):
iommu/vt-d: Avoid panic if iommu init fails in tboot system
Zhihao Cheng (1):
spi: cadence-quadspi: Fix error return code in cqspi_probe
jingle.wu (1):
Input: elan_i2c - fix firmware update on newer ICs
Greg Kroah-Hartman
maintainerDocumentation/xtensa/mmu.rst +6 -3
@@ -82,7 +82,8 @@ Default MMUv2-compatible layout:: +------------------+ | VMALLOC area | VMALLOC_START 0xc0000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0xc7ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0xc8000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
@@ -124,7 +125,8 @@ Default MMUv2-compatible layout:: +------------------+ | VMALLOC area | VMALLOC_START 0xa0000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0xa7ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0xa8000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
@@ -167,7 +169,8 @@ Default MMUv2-compatible layout:: +------------------+ | VMALLOC area | VMALLOC_START 0x90000000 128MB - 64KB +------------------+ VMALLOC_END - | Cache aliasing | TLBTEMP_BASE_1 0x97ff0000 DCACHE_WAY_SIZE + +------------------+ + | Cache aliasing | TLBTEMP_BASE_1 0x98000000 DCACHE_WAY_SIZE | remap area 1 | +------------------+ | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 9 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/compressed/head.S +3 -0
@@ -1476,6 +1476,9 @@ ENTRY(efi_enter_kernel) @ issued from HYP mode take us to the correct handler code. We @ will disable the MMU before jumping to the kernel proper. @ + ARM( bic r1, r1, #(1 << 30) ) @ clear HSCTLR.TE + THUMB( orr r1, r1, #(1 << 30) ) @ set HSCTLR.TE + mcr p15, 4, r1, c1, c0, 0 adr r0, __hyp_reentry_vectors mcr p15, 4, r0, c12, c0, 0 @ set HYP vector base (HVBAR) isb
arch/arm/boot/dts/imx50-evk.dts +1 -1
@@ -59,7 +59,7 @@ MX50_PAD_CSPI_SCLK__CSPI_SCLK 0x00 MX50_PAD_CSPI_MISO__CSPI_MISO 0x00 MX50_PAD_CSPI_MOSI__CSPI_MOSI 0x00 MX50_PAD_CSPI_SS0__GPIO4_11 0xc4 - MX50_PAD_ECSPI1_MOSI__CSPI_SS1 0xf4 + MX50_PAD_ECSPI1_MOSI__GPIO4_13 0x84 >; };
arch/arm/boot/dts/imx6q-prti6q.dts +2 -2
@@ -213,8 +213,8 @@ mdio { #size-cells = <0>; /* Microchip KSZ9031RNX PHY */ - rgmii_phy: ethernet-phy@4 { - reg = <4>; + rgmii_phy: ethernet-phy@0 { + reg = <0>; interrupts-extended = <&gpio1 28 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>; reset-assert-us = <10000>;
arch/arm/boot/dts/imx6qdl-udoo.dtsi +1 -1
@@ -98,7 +98,7 @@ sound { &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/stm32mp15xx-dhcom-pdk2.dtsi +11 -8
@@ -46,6 +46,16 @@ button-0 { linux,code = <KEY_A>; gpios = <&gpiof 3 GPIO_ACTIVE_LOW>; }; + + /* + * The EXTi IRQ line 0 is shared with PMIC, + * so mark this as polled GPIO key. + */ + button-2 { + label = "TA3-GPIO-C"; + linux,code = <KEY_C>; + gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; + }; }; gpio-keys {
@@ -59,13 +69,6 @@ button-1 { wakeup-source; }; - button-2 { - label = "TA3-GPIO-C"; - linux,code = <KEY_C>; - gpios = <&gpioi 11 GPIO_ACTIVE_LOW>; - wakeup-source; - }; - button-3 { label = "TA4-GPIO-D"; linux,code = <KEY_D>;
@@ -79,7 +82,7 @@ led { led-0 { label = "green:led5"; - gpios = <&gpiog 2 GPIO_ACTIVE_HIGH>; + gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>; default-state = "off"; };
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi +2 -0
@@ -68,6 +68,7 @@ ethernet_vio: vioregulator { gpio = <&gpiog 3 GPIO_ACTIVE_LOW>; regulator-always-on; regulator-boot-on; + vin-supply = <&vdd>; }; };
@@ -202,6 +203,7 @@ v3v3: buck4 { vdda: ldo1 { regulator-name = "vdda"; + regulator-always-on; regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; interrupts = <IT_CURLIM_LDO1 0>;
arch/arm/boot/dts/stm32mp15xx-dhcor-som.dtsi +4 -0
@@ -21,6 +21,10 @@ memory@c0000000 { }; }; +&dts { + status = "okay"; +}; + &i2c4 { pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins_a>;
arch/arm/boot/dts/sun6i-a31-hummingbird.dts +1 -1
@@ -154,7 +154,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/sun7i-a20-bananapi-m1-plus.dts +1 -1
@@ -130,7 +130,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_gmac_3v3>; status = "okay"; };
arch/arm/boot/dts/sun7i-a20-cubietruck.dts +1 -1
@@ -151,7 +151,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts +1 -1
@@ -131,7 +131,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_sw>; phy-handle = <&rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; allwinner,rx-delay-ps = <700>; allwinner,tx-delay-ps = <700>; status = "okay";
arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts +1 -1
@@ -183,7 +183,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_dldo4>; phy-handle = <&rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts +0 -5
@@ -53,11 +53,6 @@ aliases { }; }; -&emac { - /* LEDs changed to active high on the plus */ - /delete-property/ allwinner,leds-active-low; -}; - &mmc1 { vmmc-supply = <®_vcc3v3>; bus-width = <4>;
arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts +1 -1
@@ -67,7 +67,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts +1 -1
@@ -129,7 +129,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_dc1sw>; status = "okay"; };
arch/arm/boot/dts/sun9i-a80-cubieboard4.dts +1 -1
@@ -129,7 +129,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_cldo1>; status = "okay"; };
arch/arm/boot/dts/sun9i-a80-optimus.dts +1 -1
@@ -124,7 +124,7 @@ &gmac { pinctrl-names = "default"; pinctrl-0 = <&gmac_rgmii_pins>; phy-handle = <&phy1>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_cldo1>; status = "okay"; };
arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi +1 -1
@@ -126,7 +126,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm/boot/dts/vf610-zii-dev-rev-b.dts +3 -0
@@ -406,6 +406,9 @@ i2c@4 { }; }; +&mdio1 { + clock-frequency = <5000000>; +}; &iomuxc { pinctrl_gpio_e6185_eeprom_sel: pinctrl-gpio-e6185-eeprom-spi0 {
arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts +1 -1
@@ -105,7 +105,7 @@ &ehci1 { &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_dc1sw>; status = "okay";
arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts +1 -1
@@ -120,7 +120,7 @@ &ehci1 { &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_gmac_3v3>; status = "okay";
arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-plus.dts +1 -1
@@ -13,7 +13,7 @@ / { &emac { pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-txid"; phy-handle = <&ext_rgmii_phy>; status = "okay"; };
arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts +1 -1
@@ -36,7 +36,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; /delete-property/ allwinner,leds-active-low; status = "okay"; };
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts +1 -1
@@ -123,7 +123,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +1 -1
@@ -124,7 +124,7 @@ &emac { pinctrl-0 = <&emac_rgmii_pins>; phy-supply = <®_gmac_3v3>; phy-handle = <&ext_rgmii_phy>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; status = "okay"; };
arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts +1 -1
@@ -97,7 +97,7 @@ &ehci0 { &emac { pinctrl-names = "default"; pinctrl-0 = <&ext_rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_aldo2>; status = "okay";
arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts +1 -1
@@ -100,7 +100,7 @@ &ehci3 { &emac { pinctrl-names = "default"; pinctrl-0 = <&ext_rgmii_pins>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-handle = <&ext_rgmii_phy>; phy-supply = <®_gmac_3v3>; allwinner,rx-delay-ps = <200>;
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dts +1 -1
@@ -159,7 +159,7 @@ &qspi { flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "n25q00a"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>;
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_nand.dts +1 -1
@@ -192,7 +192,7 @@ &qspi { flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "n25q00a"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>;
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +1 -0
@@ -1012,6 +1012,7 @@ rcpm: power-controller@1e34040 { compatible = "fsl,ls1028a-rcpm", "fsl,qoriq-rcpm-2.1+"; reg = <0x0 0x1e34040 0x0 0x1c>; #fsl,rcpm-wakeup-cells = <7>; + little-endian; }; ftm_alarm0: timer@2800000 {
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi +1 -0
@@ -787,6 +787,7 @@ rcpm: power-controller@1e34040 { compatible = "fsl,ls1088a-rcpm", "fsl,qoriq-rcpm-2.1+"; reg = <0x0 0x1e34040 0x0 0x18>; #fsl,rcpm-wakeup-cells = <6>; + little-endian; }; ftm_alarm0: timer@2800000 {
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +1 -0
@@ -769,6 +769,7 @@ rcpm: power-controller@1e34040 { compatible = "fsl,ls208xa-rcpm", "fsl,qoriq-rcpm-2.1+"; reg = <0x0 0x1e34040 0x0 0x18>; #fsl,rcpm-wakeup-cells = <6>; + little-endian; }; ftm_alarm0: timer@2800000 {
arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi +1 -0
@@ -210,6 +210,7 @@ bluetooth { host-wakeup-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; device-wakeup-gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; clocks = <&osc_32k>; + max-speed = <4000000>; clock-names = "extclk"; }; };
arch/arm64/boot/dts/freescale/imx8mm.dtsi +1 -1
@@ -129,7 +129,7 @@ opp-1200000000 { opp-1600000000 { opp-hz = /bits/ 64 <1600000000>; - opp-microvolt = <900000>; + opp-microvolt = <950000>; opp-supported-hw = <0xc>, <0x7>; clock-latency-ns = <150000>; opp-suspend;
arch/arm64/boot/dts/freescale/imx8mn.dtsi +0 -30
@@ -789,28 +789,6 @@ usbmisc1: usbmisc@32e40200 { #index-cells = <1>; reg = <0x32e40200 0x200>; }; - - usbotg2: usb@32e50000 { - compatible = "fsl,imx8mn-usb", "fsl,imx7d-usb"; - reg = <0x32e50000 0x200>; - interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&clk IMX8MN_CLK_USB1_CTRL_ROOT>; - clock-names = "usb1_ctrl_root_clk"; - assigned-clocks = <&clk IMX8MN_CLK_USB_BUS>, - <&clk IMX8MN_CLK_USB_CORE_REF>; - assigned-clock-parents = <&clk IMX8MN_SYS_PLL2_500M>, - <&clk IMX8MN_SYS_PLL1_100M>; - fsl,usbphy = <&usbphynop2>; - fsl,usbmisc = <&usbmisc2 0>; - status = "disabled"; - }; - - usbmisc2: usbmisc@32e50200 { - compatible = "fsl,imx8mn-usbmisc", "fsl,imx7d-usbmisc"; - #index-cells = <1>; - reg = <0x32e50200 0x200>; - }; - }; dma_apbh: dma-controller@33000000 {
@@ -875,12 +853,4 @@ usbphynop1: usbphynop1 { assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>; clock-names = "main_clk"; }; - - usbphynop2: usbphynop2 { - compatible = "usb-nop-xceiv"; - clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; - assigned-clocks = <&clk IMX8MN_CLK_USB_PHY_REF>; - assigned-clock-parents = <&clk IMX8MN_SYS_PLL1_100M>; - clock-names = "main_clk"; - }; };
arch/arm64/boot/dts/intel/socfpga_agilex_socdk.dts +1 -1
@@ -110,7 +110,7 @@ &qspi { flash@0 { #address-cells = <1>; #size-cells = <1>; - compatible = "mt25qu02g"; + compatible = "micron,mt25qu02g", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <100000000>;
arch/arm64/include/asm/cpufeature.h +2 -0
@@ -268,6 +268,8 @@ extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0;/* * CPU feature detected at boot time based on feature of one or more CPUs. * All possible conflicts for a late CPU are ignored. +* NOTE: this means that a late CPU with the feature will *not* cause the +* capability to be advertised by cpus_have_*cap()! */ #define ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE \ (ARM64_CPUCAP_SCOPE_LOCAL_CPU | \
arch/arm64/include/asm/cputype.h +4 -0
@@ -85,6 +85,8 @@#define QCOM_CPU_PART_FALKOR_V1 0x800#define QCOM_CPU_PART_FALKOR 0xC00#define QCOM_CPU_PART_KRYO 0x200 +#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800 +#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
@@ -114,6 +116,8 @@#define MIDR_QCOM_FALKOR_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR_V1)#define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO) +#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD) +#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER)#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
arch/arm64/kernel/cpu_errata.c +2 -0
@@ -750,6 +750,8 @@ static const struct midr_range erratum_845719_list[] = {MIDR_REV_RANGE (MIDR_CORTEX_A53 ,0 ,0 ,4 ),/* Brahma-B53 r0p[0] */ MIDR_REV (MIDR_BRAHMA_B53 ,0 ,0 ), +/* Kryo2XX Silver rAp4 */ + MIDR_REV(MIDR_QCOM_KRYO_2XX_SILVER, 0xa, 0x4), {}, };#endif
arch/arm64/kernel/cpufeature.c +2 -0
@@ -1333,6 +1333,8 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,MIDR_ALL_VERSIONS (MIDR_CORTEX_A73 ),MIDR_ALL_VERSIONS (MIDR_HISI_TSV110 ),MIDR_ALL_VERSIONS (MIDR_NVIDIA_CARMEL ), +MIDR_ALL_VERSIONS (MIDR_QCOM_KRYO_2XX_GOLD ), +MIDR_ALL_VERSIONS (MIDR_QCOM_KRYO_2XX_SILVER ),MIDR_ALL_VERSIONS (MIDR_QCOM_KRYO_3XX_SILVER ), MIDR_ALL_VERSIONS(MIDR_QCOM_KRYO_4XX_SILVER), { /* sentinel */ }
arch/arm64/kernel/process.c +2 -3
@@ -526,14 +526,13 @@ static void erratum_1418040_thread_switch(struct task_struct *prev,bool prev32, next32;u64 val; -if (!(IS_ENABLED (CONFIG_ARM64_ERRATUM_1418040 ) && -cpus_have_const_cap (ARM64_WORKAROUND_1418040 ))) +if (!IS_ENABLED (CONFIG_ARM64_ERRATUM_1418040 ))return ; prev32 =is_compat_thread (task_thread_info (prev)); next32 =is_compat_thread (task_thread_info (next)); -if (prev32 == next32) +if (prev32 == next32 || !this_cpu_has_cap (ARM64_WORKAROUND_1418040 ))return ; val =read_sysreg (cntkctl_el1);
arch/arm64/kernel/psci.c +1 -4
@@ -66,7 +66,6 @@ static int cpu_psci_cpu_disable(unsigned int cpu)static void cpu_psci_cpu_die (unsigned int cpu) { -int ret;/* * There are no known implementations of PSCI actually using the * power state field, pass a sensible default for now.
@@ -74,9 +73,7 @@ static void cpu_psci_cpu_die(unsigned int cpu)u32 state =PSCI_POWER_STATE_TYPE_POWER_DOWN <<PSCI_0_2_POWER_STATE_TYPE_SHIFT ; - ret = psci_ops.cpu_off (state); - -pr_crit ("unable to power off CPU%u (%d)\n" , cpu, ret); + psci_ops.cpu_off (state); }static int cpu_psci_cpu_kill (unsigned int cpu)
arch/arm64/kernel/smp.c +1 -0
@@ -401,6 +401,7 @@ void cpu_die_early(void)/* Mark this CPU absent */ set_cpu_present (cpu,0 ); +rcu_report_dead (cpu);if (IS_ENABLED (CONFIG_HOTPLUG_CPU )) {update_cpu_boot_status (CPU_KILL_ME );
arch/mips/alchemy/common/clock.c +8 -1
@@ -152,6 +152,7 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name, {struct clk_init_data id;struct clk_hw *h; +struct clk *clk; h =kzalloc (sizeof (*h),GFP_KERNEL );if (!h)
@@ -164,7 +165,13 @@ static struct clk __init *alchemy_clk_setup_cpu(const char *parent_name, id.ops = &alchemy_clkops_cpu; h->init = &id; -return clk_register (NULL , h); + clk =clk_register (NULL , h); +if (IS_ERR (clk)) { +pr_err ("failed to register clock\n" ); +kfree (h); + } + +return clk; }/* AUXPLLs ************************************************************/
arch/mips/mm/tlb-r4k.c +1 -0
@@ -438,6 +438,7 @@ int has_transparent_hugepage(void) }return mask ==PM_HUGE_MASK ; } +EXPORT_SYMBOL (has_transparent_hugepage);#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
arch/s390/kernel/entry.S +2 -0
@@ -422,6 +422,7 @@ ENTRY(system_call) #endif LOCKDEP_SYS_EXIT .Lsysc_tif: + DISABLE_INTS TSTMSK __PT_FLAGS(%r11),_PIF_WORK jnz .Lsysc_work TSTMSK __TI_flags(%r12),_TIF_WORK
@@ -446,6 +447,7 @@ ENTRY(system_call) # One of the work bits is on. Find out which one. # .Lsysc_work: + ENABLE_INTS TSTMSK __TI_flags(%r12),_TIF_NEED_RESCHED jo .Lsysc_reschedule TSTMSK __PT_FLAGS(%r11),_PIF_SYSCALL_RESTART
arch/s390/kernel/perf_cpum_sf.c +1 -1
@@ -2228,4 +2228,4 @@ static int __init init_cpum_sampling_pmu(void) }arch_initcall (init_cpum_sampling_pmu); -core_param (cpum_sfb_size,CPUM_SF_MAX_SDB , sfb_size,0640 ); +core_param (cpum_sfb_size,CPUM_SF_MAX_SDB , sfb_size,0644 );
arch/um/include/asm/pgalloc.h +7 -1
@@ -33,7 +33,13 @@ do { \ } while (0)#ifdef CONFIG_3_LEVEL_PGTABLES -#define __pmd_free_tlb (tlb,x, address) tlb_remove_page((tlb),virt_to_page(x)) + +#define __pmd_free_tlb (tlb, pmd, address) \ +do { \ + pgtable_pmd_page_dtor(virt_to_page(pmd)); \ + tlb_remove_page((tlb),virt_to_page(pmd)); \ +} while (0) \ +#endif #endif
arch/x86/kernel/cpu/microcode/intel.c +10 -53
110 lines not on this page · raw message
arch/x86/kernel/tboot.c +0 -3
@@ -514,9 +514,6 @@ int tboot_force_iommu(void)if (!tboot_enabled ())return 0 ; -if (intel_iommu_tboot_noforce) -return 1 ; -if (no_iommu || swiotlb || dmar_disabled)pr_warn ("Forcing Intel-IOMMU to enabled\n" );
arch/x86/platform/efi/efi_64.c +13 -11
@@ -77,28 +77,30 @@ int __init efi_alloc_page_tables(void) gfp_mask =GFP_KERNEL | __GFP_ZERO; efi_pgd = (pgd_t *)__get_free_pages (gfp_mask,PGD_ALLOCATION_ORDER );if (!efi_pgd) -return -ENOMEM ; + goto fail; pgd = efi_pgd +pgd_index (EFI_VA_END ); p4d =p4d_alloc (&init_mm, pgd,EFI_VA_END ); -if (!p4d) { -free_page ((unsigned long )efi_pgd); -return -ENOMEM ; - } +if (!p4d) + goto free_pgd; pud =pud_alloc (&init_mm, p4d,EFI_VA_END ); -if (!pud) { -if (pgtable_l5_enabled ()) -free_page ((unsigned long )pgd_page_vaddr (*pgd)); -free_pages ((unsigned long )efi_pgd,PGD_ALLOCATION_ORDER ); -return -ENOMEM ; - } +if (!pud) + goto free_p4d; efi_mm.pgd = efi_pgd;mm_init_cpumask (&efi_mm);init_new_context (NULL , &efi_mm);return 0 ; + +free_p4d: +if (pgtable_l5_enabled ()) +free_page ((unsigned long )pgd_page_vaddr (*pgd)); +free_pgd: +free_pages ((unsigned long )efi_pgd,PGD_ALLOCATION_ORDER ); +fail: +return -ENOMEM ; }/*
arch/xtensa/include/asm/pgtable.h +1 -1
@@ -69,7 +69,7 @@*/ #define VMALLOC_START (XCHAL_KSEG_CACHED_VADDR - 0x10000000)#define VMALLOC_END (VMALLOC_START + 0x07FEFFFF) -#define TLBTEMP_BASE_1 (VMALLOC_END + 1) +#define TLBTEMP_BASE_1 (VMALLOC_START + 0x08000000)#define TLBTEMP_BASE_2 (TLBTEMP_BASE_1 + DCACHE_WAY_SIZE)#if 2 *DCACHE_WAY_SIZE >ICACHE_WAY_SIZE #define TLBTEMP_SIZE (2 * DCACHE_WAY_SIZE)
arch/xtensa/mm/cache.c +14 -0
@@ -70,8 +70,10 @@ static inline void kmap_invalidate_coherent(struct page *page, kvaddr =TLBTEMP_BASE_1 + (page_to_phys (page) &DCACHE_ALIAS_MASK ); +preempt_disable ();__invalidate_dcache_page_alias (kvaddr,page_to_phys (page)); +preempt_enable (); } } }
@@ -156,6 +158,7 @@ void flush_dcache_page(struct page *page)if (!alias && !mapping)return ; +preempt_disable (); virt =TLBTEMP_BASE_1 + (phys &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (virt, phys);
@@ -166,6 +169,7 @@ void flush_dcache_page(struct page *page)if (mapping)__invalidate_icache_page_alias (virt, phys); +preempt_enable (); }/* There shouldn't be an entry in the cache for this page anymore. */
@@ -199,8 +203,10 @@ void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,unsigned long phys =page_to_phys (pfn_to_page (pfn));unsigned long virt =TLBTEMP_BASE_1 + (address &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (virt, phys);__invalidate_icache_page_alias (virt, phys); +preempt_enable (); }EXPORT_SYMBOL (local_flush_cache_page);
@@ -227,11 +233,13 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)unsigned long phys =page_to_phys (page);unsigned long tmp; +preempt_disable (); tmp =TLBTEMP_BASE_1 + (phys &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (tmp, phys); tmp =TLBTEMP_BASE_1 + (addr &DCACHE_ALIAS_MASK );__flush_invalidate_dcache_page_alias (tmp, phys);__invalidate_icache_page_alias (tmp, phys); +preempt_enable ();clear_bit (PG_arch_1, &page->flags); }
@@ -265,7 +273,9 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (t, phys); +preempt_enable (); }/* Copy data */
@@ -280,9 +290,11 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_range ((unsigned long ) dst, len);if ((vma->vm_flags &VM_EXEC ) !=0 )__invalidate_icache_page_alias (t, phys); +preempt_enable (); }else if ((vma->vm_flags &VM_EXEC ) !=0 ) {__flush_dcache_range ((unsigned long )dst,len);
@@ -304,7 +316,9 @@ extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page,if (alias) {unsigned long t =TLBTEMP_BASE_1 + (vaddr &DCACHE_ALIAS_MASK ); +preempt_disable ();__flush_invalidate_dcache_page_alias (t, phys); +preempt_enable (); }memcpy (dst, src, len);
block/blk-cgroup.c +1 -0
@@ -840,6 +840,7 @@ static void blkcg_fill_root_iostats(void)blkg_iostat_set (&blkg->iostat.cur, &tmp);u64_stats_update_end (&blkg->iostat.sync); } +disk_put_part (part); } }
drivers/accessibility/speakup/spk_ttyio.c +11 -1
@@ -49,15 +49,25 @@ static int spk_ttyio_ldisc_open(struct tty_struct *tty)if (!tty->ops->write)return -EOPNOTSUPP ; + +mutex_lock (&speakup_tty_mutex); +if (speakup_tty) { +mutex_unlock (&speakup_tty_mutex); +return -EBUSY ; + } speakup_tty = tty; ldisc_data =kmalloc (sizeof (*ldisc_data),GFP_KERNEL ); -if (!ldisc_data) +if (!ldisc_data) { + speakup_tty =NULL ; +mutex_unlock (&speakup_tty_mutex);return -ENOMEM ; + }init_completion (&ldisc_data->completion); ldisc_data->buf_free = true; speakup_tty->disc_data = ldisc_data; +mutex_unlock (&speakup_tty_mutex);return 0 ; }
drivers/acpi/button.c +12 -1
@@ -102,7 +102,18 @@ static const struct dmi_system_id dmi_lid_quirks[] = {*/ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"MEDION" ), - DMI_MATCH(DMI_PRODUCT_NAME, "E2215T MD60198"), + DMI_MATCH(DMI_PRODUCT_NAME, "E2215T"), + }, + .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, + }, + { +/* +* Medion Akoya E2228T, notification of the LID device only +* happens on close, not on open and _LID always returns closed. +*/ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"MEDION" ), + DMI_MATCH(DMI_PRODUCT_NAME, "E2228T"), }, .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN, },
drivers/acpi/fan.c +1 -0
@@ -351,6 +351,7 @@ static int acpi_fan_get_fps(struct acpi_device *device)struct acpi_fan_fps *fps = &fan->fps[i];snprintf (fps->name,ACPI_FPS_NAME_LEN ,"state%d" , i); +sysfs_attr_init (&fps->dev_attr.attr); fps->dev_attr.show = show_state; fps->dev_attr.store =NULL ; fps->dev_attr.attr.name = fps->name;
drivers/atm/nicstar.c +2 -0
@@ -1706,6 +1706,8 @@ static int ns_send(struct atm_vcc *vcc, struct sk_buff *skb)if (push_scqe (card, vc, scq, &scqe, skb) !=0 ) {atomic_inc (&vcc->stats->tx_err); +dma_unmap_single (&card->pcidev->dev,NS_PRV_DMA (skb), skb->len, +DMA_TO_DEVICE );dev_kfree_skb_any (skb);return -EIO ; }
drivers/counter/ti-eqep.c +2 -2
@@ -368,7 +368,7 @@ static const struct regmap_config ti_eqep_regmap32_config = { .reg_bits = 32, .val_bits = 32, .reg_stride = 4, - .max_register = 0x24, + .max_register = QUPRD, };static const struct regmap_config ti_eqep_regmap16_config = {
@@ -376,7 +376,7 @@ static const struct regmap_config ti_eqep_regmap16_config = { .reg_bits = 16, .val_bits = 16, .reg_stride = 2, - .max_register = 0x1e, + .max_register = QCPRDLAT, };static int ti_eqep_probe (struct platform_device *pdev)
drivers/dma/dmaengine.c +9 -8
@@ -1055,16 +1055,15 @@ static int get_dma_id(struct dma_device *device)static int __dma_async_device_channel_register (struct dma_device *device,struct dma_chan *chan) { -int rc =0 ; +int rc; chan->local =alloc_percpu (typeof (*chan->local));if (!chan->local) - goto err_out; +return -ENOMEM ; chan->dev =kzalloc (sizeof (*chan->dev),GFP_KERNEL );if (!chan->dev) { -free_percpu (chan->local); - chan->local =NULL ; - goto err_out; + rc = -ENOMEM ; + goto err_free_local; }/*
@@ -1077,7 +1076,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,if (chan->chan_id <0 ) {pr_err ("%s: unable to alloc ida for chan: %d\n" , __func__, chan->chan_id); - goto err_out; + rc = chan->chan_id; + goto err_free_dev; } chan->dev->device.class = &dma_devclass;
@@ -1098,9 +1098,10 @@ static int __dma_async_device_channel_register(struct dma_device *device,mutex_lock (&device->chan_mutex);ida_free (&device->chan_ida, chan->chan_id);mutex_unlock (&device->chan_mutex); - err_out: -free_percpu (chan->local); + err_free_dev:kfree (chan->dev); + err_free_local: +free_percpu (chan->local);return rc; }
drivers/dma/idxd/device.c +15 -16
@@ -271,7 +271,7 @@ int idxd_wq_map_portal(struct idxd_wq *wq)resource_size_t start; start =pci_resource_start (pdev,IDXD_WQ_BAR ); - start = start + wq->id *IDXD_PORTAL_SIZE ; + start +=idxd_get_wq_portal_full_offset (wq->id,IDXD_PORTAL_LIMITED ); wq->dportal =devm_ioremap (dev, start,IDXD_PORTAL_SIZE );if (!wq->dportal)
@@ -295,7 +295,7 @@ void idxd_wq_disable_cleanup(struct idxd_wq *wq)int i, wq_offset;lockdep_assert_held (&idxd->dev_lock); -memset (&wq->wqcfg,0 ,sizeof (wq->wqcfg)); +memset (wq->wqcfg,0 , idxd->wqcfg_size); wq->type =IDXD_WQT_NONE ; wq->size =0 ; wq->group =NULL ;
@@ -304,8 +304,8 @@ void idxd_wq_disable_cleanup(struct idxd_wq *wq)clear_bit (WQ_FLAG_DEDICATED , &wq->flags);memset (wq->name,0 ,WQ_NAME_SIZE ); -for (i =0 ; i <8 ; i++) { - wq_offset = idxd->wqcfg_offset + wq->id *32 + i *sizeof (u32); +for (i =0 ; i <WQCFG_STRIDES (idxd); i++) { + wq_offset =WQCFG_OFFSET (idxd, wq->id, i);iowrite32 (0 , idxd->reg_base + wq_offset); dev_dbg(dev, "WQ[%d][%d][%#x]: %#x\n", wq->id, i, wq_offset,
@@ -535,10 +535,10 @@ static int idxd_wq_config_write(struct idxd_wq *wq)if (!wq->group)return 0 ; -memset (&wq->wqcfg,0 ,sizeof (union wqcfg )); +memset (wq->wqcfg,0 , idxd->wqcfg_size);/* byte 0-3 */ - wq->wqcfg.wq_size = wq->size; + wq->wqcfg->wq_size = wq->size;if (wq->size ==0 ) {dev_warn (dev,"Incorrect work queue size: 0\n" );
@@ -546,22 +546,21 @@ static int idxd_wq_config_write(struct idxd_wq *wq) }/* bytes 4-7 */ - wq->wqcfg.wq_thresh = wq->threshold; + wq->wqcfg->wq_thresh = wq->threshold;/* byte 8-11 */ - wq->wqcfg.priv = !!(wq->type ==IDXD_WQT_KERNEL ); - wq->wqcfg.mode =1 ; - - wq->wqcfg.priority = wq->priority; + wq->wqcfg->priv = !!(wq->type ==IDXD_WQT_KERNEL ); + wq->wqcfg->mode =1 ; + wq->wqcfg->priority = wq->priority;/* bytes 12-15 */ - wq->wqcfg.max_xfer_shift = idxd->hw.gen_cap.max_xfer_shift; - wq->wqcfg.max_batch_shift = idxd->hw.gen_cap.max_batch_shift; + wq->wqcfg->max_xfer_shift = idxd->hw.gen_cap.max_xfer_shift; + wq->wqcfg->max_batch_shift = idxd->hw.gen_cap.max_batch_shift;dev_dbg (dev,"WQ %d CFGs\n" , wq->id); -for (i =0 ; i <8 ; i++) { - wq_offset = idxd->wqcfg_offset + wq->id *32 + i *sizeof (u32); -iowrite32 (wq->wqcfg.bits[i], idxd->reg_base + wq_offset); +for (i =0 ; i <WQCFG_STRIDES (idxd); i++) { + wq_offset =WQCFG_OFFSET (idxd, wq->id, i); +iowrite32 (wq->wqcfg->bits[i], idxd->reg_base + wq_offset);dev_dbg (dev,"WQ[%d][%d][%#x]: %#x\n" , wq->id, i, wq_offset,ioread32 (idxd->reg_base + wq_offset));
drivers/dma/idxd/idxd.h +2 -1
@@ -103,7 +103,7 @@ struct idxd_wq {u32 priority;enum idxd_wq_state state;unsigned long flags; -union wqcfg wqcfg; +union wqcfg *wqcfg;u32 vec_ptr;/* interrupt steering */ struct dsa_hw_desc **hw_descs;int num_descs;
@@ -180,6 +180,7 @@ struct idxd_device {int max_wq_size;int token_limit;int nr_tokens;/* non-reserved tokens */ +unsigned int wqcfg_size;union sw_err_reg sw_err;wait_queue_head_t cmd_waitq;
drivers/dma/idxd/init.c +5 -0
@@ -176,6 +176,9 @@ static int idxd_setup_internals(struct idxd_device *idxd) wq->idxd = idxd;mutex_init (&wq->wq_lock); wq->idxd_cdev.minor =-1 ; + wq->wqcfg =devm_kzalloc (dev, idxd->wqcfg_size,GFP_KERNEL ); +if (!wq->wqcfg) +return -ENOMEM ; }for (i =0 ; i < idxd->max_engines; i++) {
@@ -249,6 +252,8 @@ static void idxd_read_caps(struct idxd_device *idxd)dev_dbg (dev,"total workqueue size: %u\n" , idxd->max_wq_size); idxd->max_wqs = idxd->hw.wq_cap.num_wqs;dev_dbg (dev,"max workqueues: %u\n" , idxd->max_wqs); + idxd->wqcfg_size =1 << (idxd->hw.wq_cap.wqcfg_size +IDXD_WQCFG_MIN ); +dev_dbg (dev,"wqcfg size: %u\n" , idxd->wqcfg_size);/* reading operation capabilities */ for (i =0 ; i <4 ; i++) {
drivers/dma/idxd/registers.h +23 -2
@@ -8,7 +8,7 @@#define IDXD_MMIO_BAR 0#define IDXD_WQ_BAR 2 -#define IDXD_PORTAL_SIZE 0x4000 +#define IDXD_PORTAL_SIZE PAGE_SIZE/* MMIO Device BAR0 Registers */ #define IDXD_VER_OFFSET 0x00
@@ -43,7 +43,8 @@ union wq_cap_reg {struct {u64 total_wq_size:16 ;u64 num_wqs:8 ; -u64 rsvd:24 ; +u64 wqcfg_size:4 ; +u64 rsvd:20 ;u64 shared_mode:1 ;u64 dedicated_mode:1 ;u64 rsvd2:1 ;
@@ -55,6 +56,7 @@ union wq_cap_reg {u64 bits; } __packed;#define IDXD_WQCAP_OFFSET 0x20 +#define IDXD_WQCFG_MIN 5 union group_cap_reg { struct {
@@ -333,4 +335,23 @@ union wqcfg { };u32 bits[8 ]; } __packed; + +/* +* This macro calculates the offset into the WQCFG register +* idxd - struct idxd * +* n - wq id +* ofs - the index of the 32b dword for the config register +* +* The WQCFG register block is divided into groups per each wq. The n index +* allows us to move to the register group that's for that particular wq. +* Each register is 32bits. The ofs gives us the number of register to access. +*/ +#define WQCFG_OFFSET (_idxd_dev, n, ofs) \ +({\ + typeof(_idxd_dev) __idxd_dev = (_idxd_dev); \ + (__idxd_dev)->wqcfg_offset + (n) * (__idxd_dev)->wqcfg_size + sizeof(u32) * (ofs); \ +}) + +#define WQCFG_STRIDES (_idxd_dev) ((_idxd_dev)->wqcfg_size / sizeof(u32)) +#endif
drivers/dma/idxd/submit.c +1 -1
@@ -74,7 +74,7 @@ int idxd_submit_desc(struct idxd_wq *wq, struct idxd_desc *desc)if (idxd->state !=IDXD_DEV_ENABLED )return -EIO ; - portal = wq->dportal +idxd_get_wq_portal_offset (IDXD_PORTAL_UNLIMITED ); + portal = wq->dportal;/* * The wmb() flushes writes to coherent DMA data before possibly * triggering a DMA read. The wmb() is necessary even on UP because
drivers/dma/ti/omap-dma.c +24 -13
@@ -1522,29 +1522,38 @@ static void omap_dma_free(struct omap_dmadev *od) } } +/* Currently used by omap2 & 3 to block deeper SoC idle states */ +static bool omap_dma_busy (struct omap_dmadev *od) +{ +struct omap_chan *c; +int lch =-1 ; + +while (1 ) { + lch =find_next_bit (od->lch_bitmap, od->lch_count, lch +1 ); +if (lch >= od->lch_count) +break ; + c = od->lch_map[lch]; +if (!c) +continue ; +if (omap_dma_chan_read (c,CCR ) &CCR_ENABLE ) +return true; + } + +return false; +} +/* Currently only used for omap2. For omap1, also a check for lcd_dma is needed */ static int omap_dma_busy_notifier (struct notifier_block *nb,unsigned long cmd,void *v) {struct omap_dmadev *od; -struct omap_chan *c; -int lch =-1 ; od = container_of(nb, struct omap_dmadev, nb);switch (cmd) {case CPU_CLUSTER_PM_ENTER : -while (1 ) { - lch =find_next_bit (od->lch_bitmap, od->lch_count, - lch +1 ); -if (lch >= od->lch_count) -break ; - c = od->lch_map[lch]; -if (!c) -continue ; -if (omap_dma_chan_read (c,CCR ) &CCR_ENABLE ) -return NOTIFY_BAD ; - } +if (omap_dma_busy (od)) +return NOTIFY_BAD ;break ;case CPU_CLUSTER_PM_ENTER_FAILED :case CPU_CLUSTER_PM_EXIT :
@@ -1595,6 +1604,8 @@ static int omap_dma_context_notifier(struct notifier_block *nb,switch (cmd) {case CPU_CLUSTER_PM_ENTER : +if (omap_dma_busy (od)) +return NOTIFY_BAD ;omap_dma_context_save (od);break ;case CPU_CLUSTER_PM_ENTER_FAILED :
drivers/dma/xilinx/xilinx_dma.c +28 -8
@@ -948,8 +948,10 @@ static u32 xilinx_dma_get_residue(struct xilinx_dma_chan *chan, {struct xilinx_cdma_tx_segment *cdma_seg;struct xilinx_axidma_tx_segment *axidma_seg; +struct xilinx_aximcdma_tx_segment *aximcdma_seg;struct xilinx_cdma_desc_hw *cdma_hw;struct xilinx_axidma_desc_hw *axidma_hw; +struct xilinx_aximcdma_desc_hw *aximcdma_hw;struct list_head *entry;u32 residue =0 ;
@@ -961,13 +963,23 @@ static u32 xilinx_dma_get_residue(struct xilinx_dma_chan *chan, cdma_hw = &cdma_seg->hw; residue += (cdma_hw->control - cdma_hw->status) & chan->xdev->max_buffer_len; - }else { + }else if (chan->xdev->dma_config->dmatype == +XDMA_TYPE_AXIDMA ) { axidma_seg =list_entry (entry, struct xilinx_axidma_tx_segment, node); axidma_hw = &axidma_seg->hw; residue += (axidma_hw->control - axidma_hw->status) & chan->xdev->max_buffer_len; + }else { + aximcdma_seg = +list_entry (entry, + struct xilinx_aximcdma_tx_segment, + node); + aximcdma_hw = &aximcdma_seg->hw; + residue += + (aximcdma_hw->control - aximcdma_hw->status) & + chan->xdev->max_buffer_len; } }
@@ -1135,7 +1147,7 @@ static int xilinx_dma_alloc_chan_resources(struct dma_chan *dchan)upper_32_bits (chan->seg_p +sizeof (*chan->seg_mv) * ((i +1 ) %XILINX_DMA_NUM_DESCS )); chan->seg_mv[i].phys = chan->seg_p + -sizeof (*chan->seg_v) * i; +sizeof (*chan->seg_mv) * i;list_add_tail (&chan->seg_mv[i].node, &chan->free_seg_list); }
@@ -1560,7 +1572,7 @@ static void xilinx_dma_start_transfer(struct xilinx_dma_chan *chan)static void xilinx_mcdma_start_transfer (struct xilinx_dma_chan *chan) {struct xilinx_dma_tx_descriptor *head_desc, *tail_desc; -struct xilinx_axidma_tx_segment *tail_segment; +struct xilinx_aximcdma_tx_segment *tail_segment;u32 reg;/*
@@ -1582,7 +1594,7 @@ static void xilinx_mcdma_start_transfer(struct xilinx_dma_chan *chan) tail_desc =list_last_entry (&chan->pending_list, struct xilinx_dma_tx_descriptor, node); tail_segment =list_last_entry (&tail_desc->segments, - struct xilinx_axidma_tx_segment, node); + struct xilinx_aximcdma_tx_segment, node); reg =dma_ctrl_read (chan,XILINX_MCDMA_CHAN_CR_OFFSET (chan->tdest));
@@ -1864,6 +1876,7 @@ static void append_desc_queue(struct xilinx_dma_chan *chan,struct xilinx_vdma_tx_segment *tail_segment;struct xilinx_dma_tx_descriptor *tail_desc;struct xilinx_axidma_tx_segment *axidma_tail_segment; +struct xilinx_aximcdma_tx_segment *aximcdma_tail_segment;struct xilinx_cdma_tx_segment *cdma_tail_segment;if (list_empty (&chan->pending_list))
@@ -1885,11 +1898,17 @@ static void append_desc_queue(struct xilinx_dma_chan *chan, struct xilinx_cdma_tx_segment, node); cdma_tail_segment->hw.next_desc = (u32 )desc->async_tx.phys; - }else { + }else if (chan->xdev->dma_config->dmatype ==XDMA_TYPE_AXIDMA ) { axidma_tail_segment =list_last_entry (&tail_desc->segments, struct xilinx_axidma_tx_segment, node); axidma_tail_segment->hw.next_desc = (u32 )desc->async_tx.phys; + }else { + aximcdma_tail_segment = +list_last_entry (&tail_desc->segments, + struct xilinx_aximcdma_tx_segment, + node); + aximcdma_tail_segment->hw.next_desc = (u32 )desc->async_tx.phys; }/*
@@ -2856,10 +2875,11 @@ static int xilinx_dma_chan_probe(struct xilinx_dma_device *xdev, chan->stop_transfer = xilinx_dma_stop_transfer; } -/* check if SG is enabled (only for AXIDMA and CDMA) */ +/* check if SG is enabled (only for AXIDMA, AXIMCDMA, and CDMA) */ if (xdev->dma_config->dmatype !=XDMA_TYPE_VDMA ) { -if (dma_ctrl_read (chan,XILINX_DMA_REG_DMASR ) & -XILINX_DMA_DMASR_SG_MASK ) +if (xdev->dma_config->dmatype ==XDMA_TYPE_AXIMCDMA || +dma_ctrl_read (chan,XILINX_DMA_REG_DMASR ) & +XILINX_DMA_DMASR_SG_MASK ) chan->has_sg = true;dev_dbg (chan->dev,"ch %d: SG %s\n" , chan->id, chan->has_sg ?"enabled" :"disabled" );
drivers/gpio/gpio-omap.c +11 -1
@@ -1114,13 +1114,23 @@ static void omap_gpio_idle(struct gpio_bank *bank, bool may_lose_context) {struct device *dev = bank->chip.parent;void __iomem *base = bank->base; -u32 nowake; +u32 mask, nowake; bank->saved_datain =readl_relaxed (base + bank->regs->datain);if (!bank->enabled_non_wakeup_gpios) goto update_gpio_context_count; +/* Check for pending EDGE_FALLING, ignore EDGE_BOTH */ + mask = bank->enabled_non_wakeup_gpios & bank->context.fallingdetect; + mask &= ~bank->context.risingdetect; + bank->saved_datain |= mask; + +/* Check for pending EDGE_RISING, ignore EDGE_BOTH */ + mask = bank->enabled_non_wakeup_gpios & bank->context.risingdetect; + mask &= ~bank->context.fallingdetect; + bank->saved_datain &= ~mask; +if (!may_lose_context) goto update_gpio_context_count;
drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c +2 -2
@@ -299,8 +299,8 @@ irq_source_info_dcn20[DAL_IRQ_SOURCES_NUMBER] = {pflip_int_entry (1 ),pflip_int_entry (2 ),pflip_int_entry (3 ), - [DC_IRQ_SOURCE_PFLIP5] = dummy_irq_entry(), - [DC_IRQ_SOURCE_PFLIP6] = dummy_irq_entry(), +pflip_int_entry (4 ), + pflip_int_entry(5), [DC_IRQ_SOURCE_PFLIP_UNDERLAY0 ] =dummy_irq_entry (),gpio_pad_int_entry (0 ), gpio_pad_int_entry(1),
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +0 -6
@@ -2327,12 +2327,6 @@ static enum drm_connector_status dw_hdmi_detect(struct dw_hdmi *hdmi) {enum drm_connector_status result; -mutex_lock (&hdmi->mutex); - hdmi->force =DRM_FORCE_UNSPECIFIED ; -dw_hdmi_update_power (hdmi); -dw_hdmi_update_phy_mask (hdmi); -mutex_unlock (&hdmi->mutex); - result = hdmi->phy.ops->read_hpd (hdmi, hdmi->phy.data);mutex_lock (&hdmi->mutex);
drivers/gpu/drm/i915/display/intel_display.c +2 -1
@@ -12819,10 +12819,11 @@ compute_sink_pipe_bpp(const struct drm_connector_state *conn_state, case 10 ... 11: bpp =10 *3 ;break ; -case 12 : + case 12 ... 16: bpp =12 *3 ;break ;default : +MISSING_CASE (conn_state->max_bpc);return -EINVAL ; }
drivers/gpu/drm/i915/gt/intel_rc6.c +17 -5
@@ -56,9 +56,12 @@ static inline void set(struct intel_uncore *uncore, i915_reg_t reg, u32 val)static void gen11_rc6_enable (struct intel_rc6 *rc6) { -struct intel_uncore *uncore =rc6_to_uncore (rc6); +struct intel_gt *gt =rc6_to_gt (rc6); +struct intel_uncore *uncore = gt->uncore;struct intel_engine_cs *engine;enum intel_engine_id id; +u32 pg_enable; +int i;/* 2b: Program RC6 thresholds.*/ set (uncore,GEN6_RC6_WAKE_RATE_LIMIT ,54 <<16 |85 );
@@ -102,10 +105,19 @@ static void gen11_rc6_enable(struct intel_rc6 *rc6)GEN6_RC_CTL_RC6_ENABLE |GEN6_RC_CTL_EI_MODE (1 ); -set (uncore,GEN9_PG_ENABLE , -GEN9_RENDER_PG_ENABLE | -GEN9_MEDIA_PG_ENABLE | -GEN11_MEDIA_SAMPLER_PG_ENABLE ); + pg_enable = +GEN9_RENDER_PG_ENABLE | +GEN9_MEDIA_PG_ENABLE | +GEN11_MEDIA_SAMPLER_PG_ENABLE ; + +if (INTEL_GEN (gt->i915) >=12 ) { +for (i =0 ; i <I915_MAX_VCS ; i++) +if (HAS_ENGINE (gt,_VCS (i))) + pg_enable |= (VDN_HCP_POWERGATE_ENABLE (i) | +VDN_MFX_POWERGATE_ENABLE (i)); + } + +set (uncore,GEN9_PG_ENABLE , pg_enable); }static void gen9_rc6_enable (struct intel_rc6 *rc6)
drivers/gpu/drm/i915/i915_reg.h +5 -7
@@ -8974,10 +8974,6 @@ enum {#define GEN9_PWRGT_MEDIA_STATUS_MASK (1 << 0)#define GEN9_PWRGT_RENDER_STATUS_MASK (1 << 1) -#define POWERGATE_ENABLE _MMIO(0xa210) -#define VDN_HCP_POWERGATE_ENABLE (n) BIT(((n) * 2) + 3) -#define VDN_MFX_POWERGATE_ENABLE (n) BIT(((n) * 2) + 4) -#define GTFIFODBG _MMIO(0x120000)#define GT_FIFO_SBDEDICATE_FREE_ENTRY_CHV (0x1f << 20)#define GT_FIFO_FREE_ENTRIES_CHV (0x7f << 13)
@@ -9117,9 +9113,11 @@ enum {#define GEN9_MEDIA_PG_IDLE_HYSTERESIS _MMIO(0xA0C4)#define GEN9_RENDER_PG_IDLE_HYSTERESIS _MMIO(0xA0C8)#define GEN9_PG_ENABLE _MMIO(0xA210) -#define GEN9_RENDER_PG_ENABLE REG_BIT(0) -#define GEN9_MEDIA_PG_ENABLE REG_BIT(1) -#define GEN11_MEDIA_SAMPLER_PG_ENABLE REG_BIT(2) +#define GEN9_RENDER_PG_ENABLE REG_BIT(0) +#define GEN9_MEDIA_PG_ENABLE REG_BIT(1) +#define GEN11_MEDIA_SAMPLER_PG_ENABLE REG_BIT(2) +#define VDN_HCP_POWERGATE_ENABLE (n) REG_BIT(3 + 2 * (n)) +#define VDN_MFX_POWERGATE_ENABLE (n) REG_BIT(4 + 2 * (n))#define GEN8_PUSHBUS_CONTROL _MMIO(0xA248)#define GEN8_PUSHBUS_ENABLE _MMIO(0xA250)#define GEN8_PUSHBUS_SHIFT _MMIO(0xA25C)
drivers/gpu/drm/i915/intel_pm.c +0 -13
@@ -7124,23 +7124,10 @@ static void icl_init_clock_gating(struct drm_i915_private *dev_priv)static void tgl_init_clock_gating (struct drm_i915_private *dev_priv) { -u32 vd_pg_enable =0 ; -unsigned int i; -/* Wa_1409120013:tgl */ I915_WRITE (ILK_DPFC_CHICKEN ,ILK_DPFC_CHICKEN_COMP_DUMMY_PIXEL ); -/* This is not a WA. Enable VD HCP & MFX_ENC powergate */ -for (i =0 ; i <I915_MAX_VCS ; i++) { -if (HAS_ENGINE (&dev_priv->gt,_VCS (i))) - vd_pg_enable |=VDN_HCP_POWERGATE_ENABLE (i) | -VDN_MFX_POWERGATE_ENABLE (i); - } - -I915_WRITE (POWERGATE_ENABLE , -I915_READ (POWERGATE_ENABLE ) | vd_pg_enable); -/* Wa_1409825376:tgl (pre-prod)*/ if (IS_TGL_REVID (dev_priv,TGL_REVID_A0 ,TGL_REVID_A0 )) I915_WRITE(GEN9_CLKGATE_DIS_3, I915_READ(GEN9_CLKGATE_DIS_3) |
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +1 -0
@@ -208,6 +208,7 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master, phy_node =of_parse_phandle (dev->of_node,"phys" ,0 );if (!phy_node) {dev_err (dev,"Can't found PHY phandle\n" ); + ret = -EINVAL ; goto err_disable_clk_tmds; }
drivers/hid/hid-logitech-dj.c +21 -1
@@ -328,7 +328,7 @@ static const char mse_bluetooth_descriptor[] = {0x25 ,0x01 ,/* LOGICAL_MAX (1) */ 0x75 ,0x01 ,/* REPORT_SIZE (1) */ 0x95 ,0x04 ,/* REPORT_COUNT (4) */ -0x81 ,0x06 ,/* INPUT */ +0x81 ,0x02 ,/* INPUT (Data,Var,Abs) */ 0xC0 ,/* END_COLLECTION */ 0xC0, /* END_COLLECTION */ };
@@ -866,11 +866,24 @@ static void logi_dj_recv_queue_notification(struct dj_receiver_dev *djrcv_dev,schedule_work (&djrcv_dev->work); } +/* +* Some quad/bluetooth keyboards have a builtin touchpad in this case we see +* only 1 paired device with a device_type of REPORT_TYPE_KEYBOARD. For the +* touchpad to work we must also forward mouse input reports to the dj_hiddev +* created for the keyboard (instead of forwarding them to a second paired +* device with a device_type of REPORT_TYPE_MOUSE as we normally would). +*/ +static const u16 kbd_builtin_touchpad_ids[] = { +0xb309 ,/* Dinovo Edge */ +0xb30c ,/* Dinovo Mini */ +}; +static void logi_hidpp_dev_conn_notif_equad (struct hid_device *hdev,struct hidpp_event *hidpp_report,struct dj_workitem *workitem) {struct dj_receiver_dev *djrcv_dev =hid_get_drvdata (hdev); +int i, id; workitem->type =WORKITEM_TYPE_PAIRED ; workitem->device_type = hidpp_report->params[HIDPP_PARAM_DEVICE_INFO] &
@@ -882,6 +895,13 @@ static void logi_hidpp_dev_conn_notif_equad(struct hid_device *hdev, workitem->reports_supported |=STD_KEYBOARD |MULTIMEDIA |POWER_KEYS |MEDIA_CENTER |HIDPP ; + id = (workitem->quad_id_msb <<8 ) | workitem->quad_id_lsb; +for (i =0 ; i <ARRAY_SIZE (kbd_builtin_touchpad_ids); i++) { +if (id == kbd_builtin_touchpad_ids[i]) { + workitem->reports_supported |=STD_MOUSE ; +break ; + } + }break ;case REPORT_TYPE_MOUSE : workitem->reports_supported |=STD_MOUSE |HIDPP ;
drivers/hid/hid-logitech-hidpp.c +26 -0
@@ -93,6 +93,8 @@ MODULE_PARM_DESC(disable_tap_to_click,#define HIDPP_CAPABILITY_BATTERY_LEVEL_STATUS BIT(3)#define HIDPP_CAPABILITY_BATTERY_VOLTAGE BIT(4) +#define lg_map_key_clear (c) hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c)) +/* * There are two hidpp protocols in use, the first version hidpp10 is known * as register access protocol or RAP, the second version hidpp20 is known as
@@ -2950,6 +2952,26 @@ static int g920_get_config(struct hidpp_device *hidpp,return g920_ff_set_autocenter (hidpp, data); } +/* -------------------------------------------------------------------------- */ +/* Logitech Dinovo Mini keyboard with builtin touchpad */ +/* -------------------------------------------------------------------------- */ +#define DINOVO_MINI_PRODUCT_ID 0xb30c + +static int lg_dinovo_input_mapping (struct hid_device *hdev,struct hid_input *hi, +struct hid_field *field,struct hid_usage *usage, +unsigned long **bit,int *max) +{ +if ((usage->hid &HID_USAGE_PAGE ) !=HID_UP_LOGIVENDOR ) +return 0 ; + +switch (usage->hid &HID_USAGE ) { +case 0x00d :lg_map_key_clear (KEY_MEDIA );break ; +default : +return 0 ; + } +return 1 ; +} +/* -------------------------------------------------------------------------- */ /* HID++1.0 devices which use HID++ reports for their wheels */ /* -------------------------------------------------------------------------- */
@@ -3185,6 +3207,9 @@ static int hidpp_input_mapping(struct hid_device *hdev, struct hid_input *hi, field->application != HID_GD_MOUSE)return m560_input_mapping (hdev, hi, field, usage, bit, max); +if (hdev->product ==DINOVO_MINI_PRODUCT_ID ) +return lg_dinovo_input_mapping (hdev, hi, field, usage, bit, max); +return 0 ; }
@@ -3947,6 +3972,7 @@ static const struct hid_device_id hidpp_devices[] = { LDJ_DEVICE(0x405e), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, {/* Mouse Logitech MX Anywhere 2 */ LDJ_DEVICE(0x404a), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, + { LDJ_DEVICE(0x4072), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb013), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb018), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 }, { LDJ_DEVICE(0xb01f), .driver_data = HIDPP_QUIRK_HI_RES_SCROLL_X2121 },
drivers/hid/hid-mcp2221.c +39 -9
108 lines not on this page · raw message
drivers/hv/hv.c +6 -2
@@ -244,9 +244,13 @@ int hv_synic_cleanup(unsigned int cpu)/* * Hyper-V does not provide a way to change the connect CPU once -* it is set; we must prevent the connect CPU from going offline. +* it is set; we must prevent the connect CPU from going offline +* while the VM is running normally. But in the panic or kexec() +* path where the vmbus is already disconnected, the CPU must be +* allowed to shut down. */ -if (cpu ==VMBUS_CONNECT_CPU ) +if (cpu ==VMBUS_CONNECT_CPU && + vmbus_connection.conn_state ==CONNECTED )return -EBUSY ;/*
drivers/hwmon/pwm-fan.c +9 -7
@@ -54,16 +54,18 @@ static irqreturn_t pulse_handler(int irq, void *dev_id)static void sample_timer (struct timer_list *t) {struct pwm_fan_ctx *ctx =from_timer (ctx, t, rpm_timer); +unsigned int delta =ktime_ms_delta (ktime_get (), ctx->sample_start);int pulses; -u64 tmp; - pulses =atomic_read (&ctx->pulses); -atomic_sub (pulses, &ctx->pulses); - tmp = (u64 )pulses *ktime_ms_delta (ktime_get (), ctx->sample_start) *60 ; -do_div (tmp, ctx->pulses_per_revolution *1000 ); - ctx->rpm = tmp; +if (delta) { + pulses =atomic_read (&ctx->pulses); +atomic_sub (pulses, &ctx->pulses); + ctx->rpm = (unsigned int )(pulses *1000 *60 ) / + (ctx->pulses_per_revolution * delta); + + ctx->sample_start =ktime_get (); + } - ctx->sample_start =ktime_get ();mod_timer (&ctx->rpm_timer, jiffies +HZ ); }
drivers/iio/accel/kxcjk-1013.c +46 -5
99 lines not on this page · raw message
drivers/iio/adc/ingenic-adc.c +27 -7
@@ -71,7 +71,7 @@#define JZ4725B_ADC_BATTERY_HIGH_VREF_BITS 10#define JZ4740_ADC_BATTERY_HIGH_VREF (7500 * 0.986)#define JZ4740_ADC_BATTERY_HIGH_VREF_BITS 12 -#define JZ4770_ADC_BATTERY_VREF 6600 +#define JZ4770_ADC_BATTERY_VREF 1200#define JZ4770_ADC_BATTERY_VREF_BITS 12#define JZ_ADC_IRQ_AUX BIT(0)
@@ -177,13 +177,12 @@ static void ingenic_adc_set_config(struct ingenic_adc *adc,mutex_unlock (&adc->lock); } -static void ingenic_adc_enable (struct ingenic_adc *adc, -int engine, -bool enabled) +static void ingenic_adc_enable_unlocked (struct ingenic_adc *adc, +int engine, +bool enabled) {u8 val; -mutex_lock (&adc->lock); val =readb (adc->base +JZ_ADC_REG_ENABLE );if (enabled)
@@ -192,20 +191,41 @@ static void ingenic_adc_enable(struct ingenic_adc *adc, val &= ~BIT (engine);writeb (val, adc->base +JZ_ADC_REG_ENABLE ); +} + +static void ingenic_adc_enable (struct ingenic_adc *adc, +int engine, +bool enabled) +{ +mutex_lock (&adc->lock); +ingenic_adc_enable_unlocked (adc, engine, enabled);mutex_unlock (&adc->lock); }static int ingenic_adc_capture (struct ingenic_adc *adc,int engine) { +u32 cfg;u8 val;int ret; -ingenic_adc_enable (adc, engine, true); +/* +* Disable CMD_SEL temporarily, because it causes wrong VBAT readings, +* probably due to the switch of VREF. We must keep the lock here to +* avoid races with the buffer enable/disable functions. +*/ +mutex_lock (&adc->lock); + cfg =readl (adc->base +JZ_ADC_REG_CFG ); +writel (cfg & ~JZ_ADC_REG_CFG_CMD_SEL , adc->base +JZ_ADC_REG_CFG ); + +ingenic_adc_enable_unlocked (adc, engine, true); ret =readb_poll_timeout (adc->base +JZ_ADC_REG_ENABLE , val, !(val &BIT (engine)),250 ,1000 );if (ret) -ingenic_adc_enable (adc, engine, false); +ingenic_adc_enable_unlocked (adc, engine, false); + +writel (cfg, adc->base +JZ_ADC_REG_CFG ); +mutex_unlock (&adc->lock);return ret; }
drivers/iio/adc/mt6577_auxadc.c +4 -2
@@ -9,9 +9,9 @@#include <linux/err.h> #include <linux/kernel.h> #include <linux/module.h> -#include <linux/of.h> -#include <linux/of_device.h> +#include <linux/mod_devicetable.h> #include <linux/platform_device.h> +#include <linux/property.h> #include <linux/iopoll.h> #include <linux/io.h> #include <linux/iio/iio.h>
@@ -276,6 +276,8 @@ static int mt6577_auxadc_probe(struct platform_device *pdev) goto err_disable_clk; } + adc_dev->dev_comp =device_get_match_data (&pdev->dev); +mutex_init (&adc_dev->lock); mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC,
drivers/iio/adc/stm32-adc-core.c +17 -24
79 lines not on this page · raw message
drivers/iio/adc/stm32-adc.c +48 -2
113 lines not on this page · raw message
drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +11 -5
@@ -255,7 +255,7 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,struct cros_ec_sensorhub *sensor_hub =dev_get_drvdata (dev->parent);struct cros_ec_dev *ec = sensor_hub->ec;struct cros_ec_sensor_platform *sensor_platform =dev_get_platdata (dev); -u32 ver_mask; +u32 ver_mask, temp;int frequencies[ARRAY_SIZE (state->frequencies) /2 ] = {0 };int ret, i;
@@ -310,10 +310,16 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, &frequencies[2 ], &state->fifo_max_event_count); }else { - frequencies[1 ] = state->resp->info_3.min_frequency; - frequencies[2 ] = state->resp->info_3.max_frequency; - state->fifo_max_event_count = - state->resp->info_3.fifo_max_event_count; +if (state->resp->info_3.max_frequency ==0 ) { +get_default_min_max_freq (state->resp->info.type, + &frequencies[1 ], + &frequencies[2 ], + &temp); + }else { + frequencies[1 ] = state->resp->info_3.min_frequency; + frequencies[2 ] = state->resp->info_3.max_frequency; + } + state->fifo_max_event_count = state->resp->info_3.fifo_max_event_count; }for (i =0 ; i <ARRAY_SIZE (frequencies); i++) { state->frequencies[2 * i] = frequencies[i] /1000 ;
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c +4 -2
@@ -156,11 +156,13 @@ static const struct st_lsm6dsx_ext_dev_settings st_lsm6dsx_ext_dev_table[] = {static void st_lsm6dsx_shub_wait_complete (struct st_lsm6dsx_hw *hw) {struct st_lsm6dsx_sensor *sensor; -u32 odr; +u32 odr, timeout; sensor =iio_priv (hw->iio_devs[ST_LSM6DSX_ID_ACC ]); odr = (hw->enable_mask &BIT (ST_LSM6DSX_ID_ACC )) ? sensor->odr :12500 ; -msleep ((2000000U / odr) +1 ); +/* set 10ms as minimum timeout for i2c slave configuration */ + timeout =max_t (u32,2000000U / odr +1 ,10 ); +msleep (timeout); }/*
drivers/iio/light/Kconfig +1 -0
@@ -529,6 +529,7 @@ config VCNL4000 config VCNL4035 tristate "VCNL4035 combined ALS and proximity sensor" + select IIO_BUFFER select IIO_TRIGGERED_BUFFER select REGMAP_I2C depends on I2C
drivers/infiniband/Kconfig +3 -0
@@ -72,6 +72,9 @@ config INFINIBAND_ADDR_TRANS_CONFIGFS This allows the user to config the default GID type that the CM uses for each device, when initiaing new connections. +config INFINIBAND_VIRT_DMA + def_bool !HIGHMEM + if INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS source "drivers/infiniband/hw/mthca/Kconfig" source "drivers/infiniband/hw/qib/Kconfig"
drivers/infiniband/hw/hfi1/chip.c +2 -1
@@ -15245,7 +15245,8 @@ int hfi1_init_dd(struct hfi1_devdata *dd) & CCE_REVISION_SW_MASK);/* alloc netdev data */ -if (hfi1_netdev_alloc (dd)) + ret =hfi1_netdev_alloc (dd); +if (ret) goto bail_cleanup; ret =set_up_context_variables (dd);
drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c +1 -1
@@ -266,7 +266,7 @@ static int pvrdma_register_device(struct pvrdma_dev *dev) } ret =ib_device_set_netdev (&dev->ib_dev, dev->netdev,1 );if (ret) -return ret; + goto err_srq_free;spin_lock_init (&dev->srq_tbl_lock);rdma_set_device_sysfs_group (&dev->ib_dev, &pvrdma_attr_group);
drivers/infiniband/sw/rdmavt/Kconfig +2 -1
@@ -1,7 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-only config INFINIBAND_RDMAVT tristate "RDMA verbs transport library" - depends on X86_64 && ARCH_DMA_ADDR_T_64BIT + depends on INFINIBAND_VIRT_DMA + depends on X86_64 depends on PCI select DMA_VIRT_OPS help
drivers/infiniband/sw/rxe/Kconfig +1 -1
@@ -2,7 +2,7 @@ config RDMA_RXE tristate "Software RDMA over Ethernet (RoCE) driver" depends on INET && PCI && INFINIBAND - depends on !64BIT || ARCH_DMA_ADDR_T_64BIT + depends on INFINIBAND_VIRT_DMA select NET_UDP_TUNNEL select CRYPTO_CRC32 select DMA_VIRT_OPS
drivers/infiniband/sw/siw/Kconfig +1 -0
@@ -1,6 +1,7 @@ config RDMA_SIW tristate "Software RDMA over TCP/IP (iWARP) driver" depends on INET && INFINIBAND && LIBCRC32C + depends on INFINIBAND_VIRT_DMA select DMA_VIRT_OPS help This driver implements the iWARP RDMA transport over
drivers/input/misc/adxl34x.c +1 -1
@@ -696,7 +696,7 @@ struct adxl34x *adxl34x_probe(struct device *dev, int irq,struct input_dev *input_dev;const struct adxl34x_platform_data *pdata;int err, range, i; -unsigned char revid; +int revid;if (!irq) {dev_err (dev,"no IRQ?\n" );
drivers/input/mouse/elan_i2c.h +1 -1
@@ -78,7 +78,7 @@ struct elan_transport_ops {int (*iap_reset)(struct i2c_client *client);int (*prepare_fw_update)(struct i2c_client *client,u16 ic_type, -u8 iap_version); +u8 iap_version,u16 fw_page_size);int (*write_fw_block)(struct i2c_client *client,u16 fw_page_size,const u8 *page,u16 checksum,int idx); int (*finish_fw_update)(struct i2c_client *client,
drivers/input/mouse/elan_i2c_core.c +2 -1
@@ -497,7 +497,8 @@ static int __elan_update_firmware(struct elan_tp_data *data,u16 sw_checksum =0 , fw_checksum =0 ; error = data->ops->prepare_fw_update (client, data->ic_type, - data->iap_version); + data->iap_version, + data->fw_page_size);if (error)return error;
drivers/input/mouse/elan_i2c_i2c.c +5 -5
@@ -517,7 +517,7 @@ static int elan_i2c_set_flash_key(struct i2c_client *client)return 0 ; } -static int elan_read_write_iap_type (struct i2c_client *client) +static int elan_read_write_iap_type (struct i2c_client *client,u16 fw_page_size) {int error;u16 constant;
@@ -526,7 +526,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) do { error = elan_i2c_write_cmd(client, ETP_I2C_IAP_TYPE_CMD, - ETP_I2C_IAP_TYPE_REG); + fw_page_size / 2); if (error) { dev_err(&client->dev, "cannot write iap type: %d\n", error);
@@ -543,7 +543,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) constant =le16_to_cpup ((__le16 *)val);dev_dbg (&client->dev,"iap type reg: 0x%04x\n" , constant); -if (constant ==ETP_I2C_IAP_TYPE_REG ) +if (constant == fw_page_size /2 )return 0 ; }while (--retry >0 );
@@ -553,7 +553,7 @@ static int elan_read_write_iap_type(struct i2c_client *client) }static int elan_i2c_prepare_fw_update (struct i2c_client *client,u16 ic_type, -u8 iap_version) +u8 iap_version,u16 fw_page_size) {struct device *dev = &client->dev;int error;
@@ -594,7 +594,7 @@ static int elan_i2c_prepare_fw_update(struct i2c_client *client, u16 ic_type, }if (ic_type >=0x0D && iap_version >=1 ) { - error =elan_read_write_iap_type (client); + error =elan_read_write_iap_type (client, fw_page_size);if (error)return error; }
drivers/input/mouse/elan_i2c_smbus.c +1 -1
@@ -340,7 +340,7 @@ static int elan_smbus_set_flash_key(struct i2c_client *client) }static int elan_smbus_prepare_fw_update (struct i2c_client *client,u16 ic_type, -u8 iap_version) +u8 iap_version,u16 fw_page_size) {struct device *dev = &client->dev;int len;
drivers/input/touchscreen/Kconfig +1 -0
@@ -96,6 +96,7 @@ config TOUCHSCREEN_AD7879_SPI config TOUCHSCREEN_ADC tristate "Generic ADC based resistive touchscreen" depends on IIO + select IIO_BUFFER select IIO_BUFFER_CB help Say Y here if you want to use the generic ADC
drivers/iommu/intel/iommu.c +3 -2
@@ -179,7 +179,7 @@ static int rwbf_quirk;* (used when kernel is launched w/ TXT) */ static int force_on =0 ; -int intel_iommu_tboot_noforce; +static int intel_iommu_tboot_noforce;static int no_platform_optin;#define ROOT_ENTRY_NR (VTD_PAGE_SIZE/sizeof(struct root_entry))
@@ -4846,7 +4846,8 @@ int __init intel_iommu_init(void)* Intel IOMMU is required for a TXT/tboot launch or platform * opt in, so enforce that. */ - force_on =tboot_force_iommu () ||platform_optin_force_iommu (); + force_on = (!intel_iommu_tboot_noforce &&tboot_force_iommu ()) || +platform_optin_force_iommu ();if (iommu_init_mempool ()) {if (force_on)
drivers/misc/habanalabs/include/gaudi/gaudi_masks.h +0 -1
@@ -452,7 +452,6 @@ enum axi_id {#define QM_ARB_ERR_MSG_EN_MASK (\ QM_ARB_ERR_MSG_EN_CHOISE_OVF_MASK |\ - QM_ARB_ERR_MSG_EN_CHOISE_WDT_MASK |\ QM_ARB_ERR_MSG_EN_AXI_LBW_ERR_MASK)#define PCIE_AUX_FLR_CTRL_HW_CTRL_MASK 0x1
drivers/mmc/host/sdhci-of-arasan.c +19 -32
102 lines not on this page · raw message
drivers/mmc/host/sdhci-pci-core.c +11 -2
@@ -665,6 +665,15 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode, } } +static void sdhci_intel_set_uhs_signaling (struct sdhci_host *host, +unsigned int timing) +{ +/* Set UHS timing to SDR25 for High Speed mode */ +if (timing ==MMC_TIMING_MMC_HS || timing ==MMC_TIMING_SD_HS ) + timing =MMC_TIMING_UHS_SDR25 ; +sdhci_set_uhs_signaling (host, timing); +} +#define INTEL_HS400_ES_REG 0x78#define INTEL_HS400_ES_BIT BIT(0)
@@ -721,7 +730,7 @@ static const struct sdhci_ops sdhci_intel_byt_ops = { .enable_dma = sdhci_pci_enable_dma, .set_bus_width = sdhci_set_bus_width, .reset = sdhci_reset, - .set_uhs_signaling = sdhci_set_uhs_signaling, + .set_uhs_signaling = sdhci_intel_set_uhs_signaling, .hw_reset = sdhci_pci_hw_reset, };
@@ -731,7 +740,7 @@ static const struct sdhci_ops sdhci_intel_glk_ops = { .enable_dma = sdhci_pci_enable_dma, .set_bus_width = sdhci_set_bus_width, .reset = sdhci_cqhci_reset, - .set_uhs_signaling = sdhci_set_uhs_signaling, + .set_uhs_signaling = sdhci_intel_set_uhs_signaling, .hw_reset = sdhci_pci_hw_reset, .irq = sdhci_cqhci_irq, };
drivers/net/can/dev.c +1 -1
@@ -566,7 +566,7 @@ static void can_restart(struct net_device *dev) cf->can_id |=CAN_ERR_RESTARTED ; -netif_rx (skb); +netif_rx_ni (skb); stats->rx_packets++; stats->rx_bytes += cf->can_dlc;
drivers/net/can/flexcan.c +15 -11
@@ -614,8 +614,10 @@ static int flexcan_get_berr_counter(const struct net_device *dev,int err; err =pm_runtime_get_sync (priv->dev); -if (err <0 ) +if (err <0 ) { +pm_runtime_put_noidle (priv->dev);return err; + } err =__flexcan_get_berr_counter (dev, bec);
@@ -1227,14 +1229,10 @@ static int flexcan_chip_start(struct net_device *dev) priv->write (reg_mecr, ®s->mecr); } - err =flexcan_transceiver_enable (priv); -if (err) - goto out_chip_disable; -/* synchronize with the can bus */ err =flexcan_chip_unfreeze (priv);if (err) - goto out_transceiver_disable; + goto out_chip_disable; priv->can.state =CAN_STATE_ERROR_ACTIVE ;
@@ -1252,8 +1250,6 @@ static int flexcan_chip_start(struct net_device *dev)return 0 ; - out_transceiver_disable: -flexcan_transceiver_disable (priv); out_chip_disable:flexcan_chip_disable (priv);return err;
@@ -1283,7 +1279,6 @@ static int __flexcan_chip_stop(struct net_device *dev, bool disable_on_error) priv->write (priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL , ®s->ctrl); -flexcan_transceiver_disable (priv); priv->can.state =CAN_STATE_STOPPED ;return 0 ;
@@ -1310,17 +1305,23 @@ static int flexcan_open(struct net_device *dev)int err; err =pm_runtime_get_sync (priv->dev); -if (err <0 ) +if (err <0 ) { +pm_runtime_put_noidle (priv->dev);return err; + } err =open_candev (dev);if (err) goto out_runtime_put; - err =request_irq (dev->irq, flexcan_irq,IRQF_SHARED , dev->name, dev); + err =flexcan_transceiver_enable (priv);if (err) goto out_close; + err =request_irq (dev->irq, flexcan_irq,IRQF_SHARED , dev->name, dev); +if (err) + goto out_transceiver_disable; + priv->mb_size =sizeof (struct flexcan_mb ) +CAN_MAX_DLEN ; priv->mb_count = (sizeof (priv->regs->mb[0 ]) / priv->mb_size) + (sizeof (priv->regs->mb[1 ]) / priv->mb_size);
@@ -1369,6 +1370,8 @@ static int flexcan_open(struct net_device *dev)can_rx_offload_del (&priv->offload); out_free_irq:free_irq (dev->irq, dev); + out_transceiver_disable: +flexcan_transceiver_disable (priv); out_close:close_candev (dev); out_runtime_put:
@@ -1387,6 +1390,7 @@ static int flexcan_close(struct net_device *dev)can_rx_offload_del (&priv->offload);free_irq (dev->irq, dev); +flexcan_transceiver_disable (priv);close_candev (dev);pm_runtime_put (priv->dev);
drivers/net/can/kvaser_pciefd.c +2 -2
@@ -287,12 +287,12 @@ struct kvaser_pciefd_tx_packet {static const struct can_bittiming_const kvaser_pciefd_bittiming_const = { .name =KVASER_PCIEFD_DRV_NAME , .tseg1_min =1 , - .tseg1_max =255 , + .tseg1_max =512 , .tseg2_min =1 , .tseg2_max =32 , .sjw_max =16 , .brp_min =1 , - .brp_max =4096 , + .brp_max =8192 , .brp_inc =1 , };
drivers/net/can/m_can/Kconfig +2 -1
@@ -16,7 +16,8 @@ config CAN_M_CAN_PLATFORM config CAN_M_CAN_TCAN4X5X depends on CAN_M_CAN - depends on REGMAP_SPI + depends on SPI + select REGMAP_SPI tristate "TCAN4X5X M_CAN device" help Say Y here if you want support for Texas Instruments TCAN4x5x
drivers/net/can/m_can/m_can.c +13 -5
@@ -665,7 +665,7 @@ static int m_can_handle_state_change(struct net_device *dev,unsigned int ecr;switch (new_state) { -case CAN_STATE_ERROR_ACTIVE : +case CAN_STATE_ERROR_WARNING :/* error warning state */ cdev->can.can_stats.error_warning++; cdev->can.state =CAN_STATE_ERROR_WARNING ;
@@ -694,7 +694,7 @@ static int m_can_handle_state_change(struct net_device *dev,__m_can_get_berr_counter (dev, &bec);switch (new_state) { -case CAN_STATE_ERROR_ACTIVE : +case CAN_STATE_ERROR_WARNING :/* error warning state */ cf->can_id |=CAN_ERR_CRTL ; cf->data[1] = (bec.txerr > bec.rxerr) ?
@@ -956,6 +956,8 @@ static irqreturn_t m_can_isr(int irq, void *dev_id)struct net_device_stats *stats = &dev->stats;u32 ir; +if (pm_runtime_suspended (cdev->dev)) +return IRQ_NONE ; ir =m_can_read (cdev,M_CAN_IR );if (!ir)return IRQ_NONE ;
@@ -1414,6 +1416,9 @@ static void m_can_stop(struct net_device *dev)/* disable all interrupts */ m_can_disable_all_interrupts (cdev); +/* Set init mode to disengage from the network */ +m_can_config_endisable (cdev, true); +/* set the state as STOPPED */ cdev->can.state =CAN_STATE_STOPPED ; }
@@ -1812,6 +1817,12 @@ struct m_can_classdev *m_can_class_allocate_dev(struct device *dev) }EXPORT_SYMBOL_GPL (m_can_class_allocate_dev); +void m_can_class_free_dev (struct net_device *net) +{ +free_candev (net); +} +EXPORT_SYMBOL_GPL (m_can_class_free_dev); +int m_can_class_register (struct m_can_classdev *m_can_dev) {int ret;
@@ -1850,7 +1861,6 @@ int m_can_class_register(struct m_can_classdev *m_can_dev)if (ret) {if (m_can_dev->pm_clock_support)pm_runtime_disable (m_can_dev->dev); -free_candev (m_can_dev->net); }return ret;
@@ -1908,8 +1918,6 @@ void m_can_class_unregister(struct m_can_classdev *m_can_dev)unregister_candev (m_can_dev->net);m_can_clk_stop (m_can_dev); - -free_candev (m_can_dev->net); }EXPORT_SYMBOL_GPL (m_can_class_unregister);
drivers/net/can/m_can/m_can.h +1 -0
@@ -99,6 +99,7 @@ struct m_can_classdev { };struct m_can_classdev *m_can_class_allocate_dev (struct device *dev); +void m_can_class_free_dev (struct net_device *net);int m_can_class_register (struct m_can_classdev *cdev);void m_can_class_unregister (struct m_can_classdev *cdev);int m_can_class_get_clocks (struct m_can_classdev *cdev);
drivers/net/can/m_can/m_can_platform.c +15 -8
@@ -67,32 +67,36 @@ static int m_can_plat_probe(struct platform_device *pdev)return -ENOMEM ; priv =devm_kzalloc (&pdev->dev,sizeof (*priv),GFP_KERNEL ); -if (!priv) -return -ENOMEM ; +if (!priv) { + ret = -ENOMEM ; + goto probe_fail; + } mcan_class->device_data = priv; -m_can_class_get_clocks (mcan_class); + ret =m_can_class_get_clocks (mcan_class); +if (ret) + goto probe_fail; res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"m_can" ); addr =devm_ioremap_resource (&pdev->dev, res); irq =platform_get_irq_byname (pdev,"int0" );if (IS_ERR (addr) || irq <0 ) { ret = -EINVAL ; - goto failed_ret; + goto probe_fail; }/* message ram could be shared */ res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"message_ram" );if (!res) { ret = -ENODEV ; - goto failed_ret; + goto probe_fail; } mram_addr =devm_ioremap (&pdev->dev, res->start,resource_size (res));if (!mram_addr) { ret = -ENOMEM ; - goto failed_ret; + goto probe_fail; } priv->base = addr;
@@ -111,9 +115,10 @@ static int m_can_plat_probe(struct platform_device *pdev)m_can_init_ram (mcan_class); - ret =m_can_class_register (mcan_class); +return m_can_class_register (mcan_class); -failed_ret: +probe_fail: +m_can_class_free_dev (mcan_class->net);return ret; }
@@ -134,6 +139,8 @@ static int m_can_plat_remove(struct platform_device *pdev)m_can_class_unregister (mcan_class); +m_can_class_free_dev (mcan_class->net); +platform_set_drvdata (pdev,NULL );return 0 ;
drivers/net/can/m_can/tcan4x5x.c +23 -9
@@ -440,14 +440,18 @@ static int tcan4x5x_can_probe(struct spi_device *spi)return -ENOMEM ; priv =devm_kzalloc (&spi->dev,sizeof (*priv),GFP_KERNEL ); -if (!priv) -return -ENOMEM ; +if (!priv) { + ret = -ENOMEM ; + goto out_m_can_class_free_dev; + } priv->power =devm_regulator_get_optional (&spi->dev,"vsup" ); -if (PTR_ERR (priv->power) == -EPROBE_DEFER ) -return -EPROBE_DEFER ; -else +if (PTR_ERR (priv->power) == -EPROBE_DEFER ) { + ret = -EPROBE_DEFER ; + goto out_m_can_class_free_dev; + }else { priv->power =NULL ; + } mcan_class->device_data = priv;
@@ -460,8 +464,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi) }/* Sanity check */ -if (freq <20000000 || freq >TCAN4X5X_EXT_CLK_DEF ) -return -ERANGE ; +if (freq <20000000 || freq >TCAN4X5X_EXT_CLK_DEF ) { + ret = -ERANGE ; + goto out_m_can_class_free_dev; + } priv->reg_offset =TCAN4X5X_MCAN_OFFSET ; priv->mram_start =TCAN4X5X_MRAM_START ;
@@ -487,6 +493,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi) priv->regmap =devm_regmap_init (&spi->dev, &tcan4x5x_bus, &spi->dev, &tcan4x5x_regmap); +if (IS_ERR (priv->regmap)) { + ret =PTR_ERR (priv->regmap); + goto out_clk; + } ret =tcan4x5x_power_enable (priv->power,1 );if (ret)
@@ -514,8 +524,10 @@ static int tcan4x5x_can_probe(struct spi_device *spi)clk_disable_unprepare (mcan_class->cclk);clk_disable_unprepare (mcan_class->hclk); } - + out_m_can_class_free_dev: +m_can_class_free_dev (mcan_class->net);dev_err (&spi->dev,"Probe failed, err=%d\n" , ret); +return ret; }
@@ -523,9 +535,11 @@ static int tcan4x5x_can_remove(struct spi_device *spi) {struct tcan4x5x_priv *priv =spi_get_drvdata (spi); +m_can_class_unregister (priv->mcan_dev); +tcan4x5x_power_enable (priv->power,0 ); -m_can_class_unregister (priv->mcan_dev); +m_can_class_free_dev (priv->mcan_dev->net);return 0 ; }
drivers/net/can/ti_hecc.c +8 -5
@@ -887,7 +887,8 @@ static int ti_hecc_probe(struct platform_device *pdev) priv->base =devm_ioremap_resource (&pdev->dev, res);if (IS_ERR (priv->base)) {dev_err (&pdev->dev,"hecc ioremap failed\n" ); -return PTR_ERR (priv->base); + err =PTR_ERR (priv->base); + goto probe_exit_candev; }/* handle hecc-ram memory */
@@ -900,7 +901,8 @@ static int ti_hecc_probe(struct platform_device *pdev) priv->hecc_ram =devm_ioremap_resource (&pdev->dev, res);if (IS_ERR (priv->hecc_ram)) {dev_err (&pdev->dev,"hecc-ram ioremap failed\n" ); -return PTR_ERR (priv->hecc_ram); + err =PTR_ERR (priv->hecc_ram); + goto probe_exit_candev; }/* handle mbx memory */
@@ -913,13 +915,14 @@ static int ti_hecc_probe(struct platform_device *pdev) priv->mbx =devm_ioremap_resource (&pdev->dev, res);if (IS_ERR (priv->mbx)) {dev_err (&pdev->dev,"mbx ioremap failed\n" ); -return PTR_ERR (priv->mbx); + err =PTR_ERR (priv->mbx); + goto probe_exit_candev; } irq =platform_get_resource (pdev,IORESOURCE_IRQ ,0 );if (!irq) {dev_err (&pdev->dev,"No irq resource\n" ); - goto probe_exit; + goto probe_exit_candev; } priv->ndev = ndev;
@@ -983,7 +986,7 @@ static int ti_hecc_probe(struct platform_device *pdev)clk_put (priv->clk); probe_exit_candev:free_candev (ndev); -probe_exit: +return err; }
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +1 -1
@@ -367,7 +367,7 @@ static const struct can_bittiming_const kvaser_usb_hydra_kcan_bittiming_c = { .tseg2_max = 32, .sjw_max = 16, .brp_min = 1, - .brp_max = 4096, + .brp_max = 8192, .brp_inc = 1, };
drivers/net/can/usb/mcba_usb.c +2 -2
@@ -326,8 +326,6 @@ static netdev_tx_t mcba_usb_start_xmit(struct sk_buff *skb,if (!ctx)return NETDEV_TX_BUSY ; -can_put_echo_skb (skb, priv->netdev, ctx->ndx); -if (cf->can_id &CAN_EFF_FLAG ) {/* SIDH | SIDL | EIDH | EIDL * 28 - 21 | 20 19 18 x x x 17 16 | 15 - 8 | 7 - 0
@@ -357,6 +355,8 @@ static netdev_tx_t mcba_usb_start_xmit(struct sk_buff *skb,if (cf->can_id &CAN_RTR_FLAG ) usb_msg.dlc |=MCBA_DLC_RTR_MASK ; +can_put_echo_skb (skb, priv->netdev, ctx->ndx); + err =mcba_usb_xmit (priv, (struct mcba_usb_msg *)&usb_msg, ctx);if (err) goto xmit_failed;
drivers/net/can/usb/peak_usb/pcan_usb_core.c +2 -2
@@ -156,7 +156,7 @@ void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *time)if (time_ref->ts_dev_1 < time_ref->ts_dev_2) {/* case when event time (tsw) wraps */ if (ts < time_ref->ts_dev_1) - delta_ts =1 << time_ref->adapter->ts_used_bits; + delta_ts =BIT_ULL (time_ref->adapter->ts_used_bits);/* Otherwise, sync time counter (ts_dev_2) has wrapped: * handle case when event time (tsn) hasn't.
@@ -168,7 +168,7 @@ void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *time)* tsn ts */ }else if (time_ref->ts_dev_1 < ts) { - delta_ts = -(1 << time_ref->adapter->ts_used_bits); + delta_ts = -BIT_ULL (time_ref->adapter->ts_used_bits); }/* add delay between last sync and event timestamps */
drivers/net/dsa/lantiq_gswip.c +11 -0
@@ -26,6 +26,7 @@*/ #include <linux/clk.h> +#include <linux/delay.h> #include <linux/etherdevice.h> #include <linux/firmware.h> #include <linux/if_bridge.h>
@@ -1821,6 +1822,16 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv, i++; } +/* The standalone PHY11G requires 300ms to be fully +* initialized and ready for any MDIO communication after being +* taken out of reset. For the SoC-internal GPHY variant there +* is no (known) documentation for the minimum time after a +* reset. Use the same value as for the standalone variant as +* some users have reported internal PHYs not being detected +* without any delay. +*/ +msleep (300 ); +return 0 ; remove_gphy:
drivers/net/dsa/mv88e6xxx/global1_vtu.c +49 -10
94 lines not on this page · raw message
drivers/net/ethernet/broadcom/b44.c +2 -1
@@ -2383,7 +2383,8 @@ static int b44_init_one(struct ssb_device *sdev, goto err_out_free_dev; } -if (dma_set_mask_and_coherent (sdev->dma_dev,DMA_BIT_MASK (30 ))) { + err =dma_set_mask_and_coherent (sdev->dma_dev,DMA_BIT_MASK (30 )); +if (err) {dev_err (sdev->dev,"Required 30BIT DMA mask unsupported by the system\n" ); goto err_out_powerdown;
drivers/net/ethernet/broadcom/bnxt/bnxt.c +3 -1
@@ -4045,7 +4045,8 @@ static void bnxt_free_mem(struct bnxt *bp, bool irq_re_init)bnxt_free_ntp_fltrs (bp, irq_re_init);if (irq_re_init) {bnxt_free_ring_stats (bp); -if (!(bp->fw_cap &BNXT_FW_CAP_PORT_STATS_NO_RESET )) +if (!(bp->fw_cap &BNXT_FW_CAP_PORT_STATS_NO_RESET ) || +test_bit (BNXT_STATE_IN_FW_RESET , &bp->state))bnxt_free_port_stats (bp);bnxt_free_ring_grps (bp);bnxt_free_vnics (bp);
@@ -7617,6 +7618,7 @@ static void bnxt_add_one_ctr(u64 hw, u64 *sw, u64 mask) {u64 sw_tmp; + hw &= mask; sw_tmp = (*sw & ~mask) | hw;if (hw < (*sw & mask)) sw_tmp += mask +1 ;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 -1
@@ -2742,7 +2742,7 @@ static int bnxt_get_module_eeprom(struct net_device *dev,/* Read A2 portion of the EEPROM */ if (length) { start -=ETH_MODULE_SFF_8436_LEN ; - rc =bnxt_read_sfp_module_eeprom_info (bp,I2C_DEV_ADDR_A2 ,1 , + rc =bnxt_read_sfp_module_eeprom_info (bp,I2C_DEV_ADDR_A2 ,0 , start, length, data); }return rc;
drivers/net/ethernet/faraday/ftgmac100.c +4 -0
@@ -1907,6 +1907,8 @@ static int ftgmac100_probe(struct platform_device *pdev)clk_disable_unprepare (priv->rclk);clk_disable_unprepare (priv->clk); err_ncsi_dev: +if (priv->ndev) +ncsi_unregister_dev (priv->ndev);ftgmac100_destroy_mdio (netdev); err_setup_mdio:iounmap (priv->base);
@@ -1926,6 +1928,8 @@ static int ftgmac100_remove(struct platform_device *pdev) netdev =platform_get_drvdata (pdev); priv =netdev_priv (netdev); +if (priv->ndev) +ncsi_unregister_dev (priv->ndev);unregister_netdev (netdev);clk_disable_unprepare (priv->rclk);
drivers/net/ethernet/freescale/enetc/Kconfig +1 -0
@@ -15,6 +15,7 @@ config FSL_ENETC config FSL_ENETC_VF tristate "ENETC VF driver" depends on PCI && PCI_MSI + select FSL_ENETC_MDIO select PHYLIB select DIMLIB help
drivers/net/ethernet/freescale/enetc/enetc.c +45 -17
115 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_hw.h +109 -6
115 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/enetc_mdio.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +5 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_star_emac.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/fw.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/fw.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/rep/bond.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_rx.c +8 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +13 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/core.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +7 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_cxt.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_cxt.h +0 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qed/qed_iwarp.c +9 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/spi/spi.c +63 -18
81 lines not on this page · raw message
drivers/staging/mt7621-pci/pci-mt7621.c +3 -12
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/os_dep/sdio_intf.c +1 -0
Lines of this file are not shown. View the raw message.
fs/xfs/scrub/btree.c +27 -18
45 lines not on this page · raw message
net/core/skmsg.c +75 -19
94 lines not on this page · raw message
sound/firewire/fireworks/fireworks_transaction.c +2 -2
Lines of this file are not shown. View the raw message.
sound/pci/hda/patch_realtek.c +84 -1
85 lines not on this page · raw message
sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/kunit/.gitattributes deleted +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/prog_tests/sockopt_multi.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/include/x86_64/processor.h +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/kvm/lib/x86_64/processor.c +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/seccomp/seccomp_bpf.c +4 -4
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.