Linux 5.15.63
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.63 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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/atomic_bitops.txt | 2 Documentation/devicetree/bindings/arm/qcom.yaml | 18 Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml | 16 Documentation/devicetree/bindings/gpio/gpio-zynq.yaml | 6 Documentation/devicetree/bindings/regulator/nxp,pca9450-regulator.yaml | 11 Documentation/devicetree/bindings/spi/spi-cadence.yaml | 7 Documentation/devicetree/bindings/spi/spi-zynqmp-qspi.yaml | 7 Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml | 1 Documentation/firmware-guide/acpi/apei/einj.rst | 2 Makefile | 8 arch/arm64/include/asm/kvm_host.h | 4 arch/arm64/kvm/arm.c | 3 arch/arm64/kvm/guest.c | 2 arch/arm64/kvm/sys_regs.c | 4 arch/csky/kernel/probes/kprobes.c | 4 arch/m68k/coldfire/device.c | 6 arch/mips/cavium-octeon/octeon-platform.c | 3 arch/mips/mm/tlbex.c | 4 arch/nios2/include/asm/entry.h | 3 arch/nios2/include/asm/ptrace.h | 2 arch/nios2/kernel/entry.S | 22 - arch/nios2/kernel/signal.c | 3 arch/nios2/kernel/syscall_table.c | 1 arch/openrisc/include/asm/io.h | 2 arch/openrisc/mm/ioremap.c | 2 arch/powerpc/Makefile | 26 - arch/powerpc/kernel/head_book3s_32.S | 4 arch/powerpc/kernel/pci-common.c | 16 arch/powerpc/kernel/prom.c | 7 arch/powerpc/kvm/book3s_hv_p9_entry.c | 13 arch/powerpc/mm/book3s32/mmu.c | 10 arch/powerpc/platforms/Kconfig.cputype | 21 - arch/powerpc/platforms/powernv/pci-ioda.c | 2 arch/riscv/boot/dts/canaan/k210.dtsi | 12 arch/riscv/boot/dts/sifive/fu740-c000.dtsi | 24 + arch/riscv/kernel/sys_riscv.c | 5 arch/riscv/kernel/traps.c | 4 arch/um/os-Linux/skas/process.c | 17 arch/x86/kernel/kprobes/core.c | 2 arch/x86/mm/init_64.c | 2 drivers/acpi/pci_mcfg.c | 3 drivers/acpi/property.c | 8 drivers/ata/libata-eh.c | 1 drivers/atm/idt77252.c | 1 drivers/block/zram/zcomp.c | 11 drivers/clk/qcom/clk-alpha-pll.c | 2 drivers/clk/qcom/gcc-ipq8074.c | 1 drivers/clk/ti/clk-44xx.c | 210 +++++----- drivers/clk/ti/clk-54xx.c | 160 +++---- drivers/clk/ti/clkctrl.c | 4 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 11 drivers/dma/sprd-dma.c | 5 drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c | 2 drivers/gpu/drm/imx/dcss/dcss-kms.c | 2 drivers/gpu/drm/meson/meson_drv.c | 5 drivers/gpu/drm/meson/meson_viu.c | 22 - drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 22 + drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 10 drivers/gpu/drm/ttm/ttm_bo.c | 2 drivers/hid/hid-multitouch.c | 13 drivers/hwtracing/coresight/coresight-etm4x.h | 3 drivers/i2c/busses/i2c-imx.c | 20 drivers/infiniband/sw/rxe/rxe_param.h | 6 drivers/infiniband/sw/rxe/rxe_task.c | 16 drivers/input/touchscreen/exc3000.c | 7 drivers/iommu/io-pgtable-arm-v7s.c | 75 ++- drivers/irqchip/irq-tegra.c | 10 drivers/md/md.c | 1 drivers/md/raid5.c | 2 drivers/media/platform/qcom/venus/pm_helpers.c | 10 drivers/misc/cxl/irq.c | 1 drivers/misc/habanalabs/gaudi/gaudi.c | 24 - drivers/misc/uacce/uacce.c | 133 ++++-- drivers/mmc/host/meson-gx-mmc.c | 6 drivers/mmc/host/pxamci.c | 4 drivers/mmc/host/renesas_sdhi_core.c | 29 - drivers/mmc/host/tmio_mmc.c | 2 drivers/mmc/host/tmio_mmc.h | 6 drivers/mmc/host/tmio_mmc_core.c | 28 + drivers/net/can/spi/mcp251x.c | 18 drivers/net/can/usb/ems_usb.c | 2 drivers/net/dsa/microchip/ksz9477.c | 3 drivers/net/dsa/mv88e6060.c | 3 drivers/net/dsa/ocelot/felix_vsc9959.c | 3 drivers/net/dsa/sja1105/sja1105_devlink.c | 2 drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 21 - drivers/net/ethernet/broadcom/bgmac.c | 2 drivers/net/ethernet/broadcom/genet/bcmmii.c | 3 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 4 drivers/net/ethernet/freescale/fec_ptp.c | 6 drivers/net/ethernet/intel/i40e/i40e_main.c | 4 drivers/net/ethernet/intel/iavf/iavf_adminq.c | 15 drivers/net/ethernet/intel/iavf/iavf_main.c | 9 drivers/net/ethernet/intel/ice/ice_switch.c | 2 drivers/net/ethernet/intel/igb/igb.h | 2 drivers/net/ethernet/intel/igb/igb_main.c | 12 drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 6 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 15 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c | 3 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 19 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h | 1 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c | 4 drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 2 drivers/net/ethernet/moxa/moxart_ether.c | 20 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 2 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 drivers/net/geneve.c | 15 drivers/net/phy/phy_device.c | 6 drivers/net/plip/plip.c | 2 drivers/net/virtio_net.c | 5 drivers/ntb/test/ntb_tool.c | 8 drivers/nvme/target/tcp.c | 3 drivers/pci/controller/pci-aardvark.c | 33 + drivers/pci/quirks.c | 3 drivers/phy/samsung/phy-exynos-pcie.c | 25 - drivers/pinctrl/intel/pinctrl-intel.c | 14 drivers/pinctrl/nomadik/pinctrl-nomadik.c | 4 drivers/pinctrl/pinctrl-amd.c | 11 drivers/pinctrl/qcom/pinctrl-msm8916.c | 4 drivers/pinctrl/qcom/pinctrl-sm8250.c | 2 drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c | 1 drivers/pinctrl/sunxi/pinctrl-sunxi.c | 7 drivers/platform/chrome/cros_ec_proto.c | 8 drivers/scsi/lpfc/lpfc_debugfs.c | 20 drivers/scsi/lpfc/lpfc_sli.c | 4 drivers/scsi/ufs/ufs-mediatek.c | 60 ++ drivers/spi/spi-meson-spicc.c | 129 ++++-- drivers/tty/serial/ucc_uart.c | 2 drivers/usb/cdns3/cdns3-gadget.c | 4 drivers/usb/dwc2/gadget.c | 3 drivers/usb/gadget/function/uvc_queue.c | 17 drivers/usb/gadget/function/uvc_video.c | 2 drivers/usb/gadget/legacy/inode.c | 1 drivers/usb/host/ohci-ppc-of.c | 1 drivers/usb/renesas_usbhs/rza.c | 4 drivers/vfio/vfio.c | 1 drivers/video/fbdev/i740fb.c | 9 drivers/virt/vboxguest/vboxguest_linux.c | 9 drivers/xen/xenbus/xenbus_dev_frontend.c | 4 fs/btrfs/block-group.c | 4 fs/btrfs/relocation.c | 7 fs/btrfs/tree-log.c | 4 fs/ceph/caps.c | 27 - fs/ceph/mds_client.c | 7 fs/ceph/mds_client.h | 6 fs/cifs/misc.c | 6 fs/cifs/smb2ops.c | 5 fs/ext4/namei.c | 7 fs/ext4/resize.c | 10 fs/f2fs/node.c | 6 fs/f2fs/segment.c | 13 fs/nfs/nfs4idmap.c | 46 +- fs/nfs/nfs4proc.c | 20 fs/ntfs3/fslog.c | 2 fs/ntfs3/fsntfs.c | 7 fs/ntfs3/index.c | 2 fs/ntfs3/inode.c | 1 fs/ntfs3/super.c | 8 fs/ntfs3/xattr.c | 22 - fs/overlayfs/super.c | 7 fs/xfs/xfs_filestream.c | 7 fs/xfs/xfs_fsops.c | 50 -- fs/xfs/xfs_icache.c | 22 - fs/xfs/xfs_inode.c | 79 ++- fs/xfs/xfs_ioctl.c | 2 fs/xfs/xfs_trans.c | 86 ++++ fs/xfs/xfs_trans.h | 3 fs/xfs/xfs_trans_dquot.c | 1 include/asm-generic/bitops/atomic.h | 6 include/linux/bpfptr.h | 8 include/linux/io-pgtable.h | 15 include/linux/nmi.h | 2 include/linux/sunrpc/xdr.h | 4 include/linux/uacce.h | 6 include/sound/control.h | 2 include/sound/core.h | 8 kernel/bpf/arraymap.c | 6 kernel/bpf/hashtab.c | 8 kernel/trace/trace_eprobe.c | 88 +++- kernel/trace/trace_event_perf.c | 7 kernel/trace/trace_events.c | 1 kernel/trace/trace_probe.c | 29 - kernel/watchdog.c | 21 - lib/list_debug.c | 12 net/can/j1939/socket.c | 5 net/can/j1939/transport.c | 8 net/core/bpf_sk_storage.c | 12 net/core/devlink.c | 4 net/core/sock_map.c | 20 net/dsa/port.c | 7 net/ipv6/ip6_output.c | 3 net/ipv6/ndisc.c | 3 net/netfilter/nf_tables_api.c | 70 ++- net/netlink/genetlink.c | 6 net/netlink/policy.c | 14 net/qrtr/mhi.c | 12 net/rds/ib_recv.c | 1 net/sunrpc/auth.c | 2 net/sunrpc/backchannel_rqst.c | 14 net/sunrpc/sysfs.c | 6 net/vmw_vsock/af_vsock.c | 10 scripts/Makefile.gcc-plugins | 2 scripts/dummy-tools/gcc | 8 scripts/module.lds.S | 2 security/apparmor/apparmorfs.c | 2 security/apparmor/audit.c | 2 security/apparmor/domain.c | 2 security/apparmor/include/lib.h | 5 security/apparmor/include/policy.h | 2 security/apparmor/label.c | 13 security/apparmor/mount.c | 8 security/apparmor/policy_unpack.c | 12 sound/core/control.c | 7 sound/core/info.c | 6 sound/core/misc.c | 94 ++++ sound/core/timer.c | 11 sound/pci/hda/patch_realtek.c | 1 sound/soc/codecs/tas2770.c | 98 ++-- sound/soc/codecs/tas2770.h | 5 sound/soc/codecs/tlv320aic32x4.c | 9 sound/soc/sh/rcar/ssiu.c | 2 sound/soc/sof/debug.c | 6 sound/soc/sof/intel/apl.c | 1 sound/soc/sof/intel/cnl.c | 2 sound/soc/sof/intel/hda-loader.c | 14 sound/soc/sof/intel/hda.c | 10 sound/soc/sof/intel/icl.c | 1 sound/soc/sof/intel/shim.h | 1 sound/soc/sof/intel/tgl.c | 4 sound/usb/card.c | 8 sound/usb/mixer_maps.c | 34 + tools/build/feature/test-libcrypto.c | 15 tools/perf/tests/switch-tracking.c | 18 tools/perf/util/parse-events.c | 14 tools/perf/util/probe-event.c | 6 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc | 1 tools/testing/selftests/net/forwarding/custom_multipath_hash.sh | 24 - tools/testing/selftests/net/forwarding/gre_custom_multipath_hash.sh | 24 - tools/testing/selftests/net/forwarding/ip6gre_custom_multipath_hash.sh | 24 - tools/vm/slabinfo.c | 32 + virt/kvm/kvm_main.c | 14 241 files changed, 2159 insertions(+), 1063 deletions(-)
Aaron Lu (1):
x86/mm: Use proper mask when setting PUD mapping
Adrian Hunter (2):
perf parse-events: Fix segfault when event parser gets an error perf tests: Fix Track with sched_switch test for hybrid case
Al Viro (6):
nios2: page fault et.al. are *not* restartable syscalls...
nios2: don't leave NULLs in sys_call_table[]
nios2: traced syscall does need to check the syscall number
nios2: fix syscall restart checks
nios2: restarts apply only to the first sigframe we build...
nios2: add force_successful_syscall_return()
Alan Brady (1):
i40e: Fix to stop tx_timeout recovery if GLOBR fails
Alexey Kardashevskiy (1):
powerpc/ioda/iommu/debugfs: Generate unique debugfs entries
Amadeusz Sławiński (1):
ALSA: info: Fix llseek return value when using callback
Amelie Delaunay (1):
usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch
Amit Cohen (1):
mlxsw: spectrum: Clear PTP configuration after unregistering the netdevice
Andrew Donnellan (1):
gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file
Andy Shevchenko (1):
pinctrl: intel: Check against matching data instead of ACPI companion
Arun Ramadoss (1):
net: dsa: microchip: ksz9477: fix fdb_dump last invalid entry
Arunpravin Paneer Selvam (1):
drm/ttm: Fix dummy res NULL ptr deref bug
Aurabindo Pillai (1):
drm/amd/display: Check correct bounds for stream encoder instances for DCN303
Basavaraj Natikar (1):
pinctrl: amd: Don't save/restore interrupt status and wake status bits
Ben Dooks (2):
dmaengine: dw-axi-dmac: do not print NULL LLI during error
dmaengine: dw-axi-dmac: ignore interrupt if no descriptor
Bob Pearson (1):
RDMA/rxe: Limit the number of calls to each tasklet
Brian Foster (2):
xfs: flush inodegc workqueue tasks before cancel
xfs: fix soft lockup via spinning in filestream ag selection loop
Celeste Liu (1):
riscv: mmap with PROT_WRITE but no PROT_READ is invalid
Chao Yu (2):
f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page()
f2fs: fix to do sanity check on segment type in build_sit_entries()
Chen Lin (1):
dpaa2-eth: trace the allocated address instead of page struct
Chia-Lin Kao (AceLan) (1):
net: atlantic: fix aq_vec index out of range error
Christoffer Sandberg (1):
ALSA: hda/realtek: Add quirk for Clevo NS50PU, NS70PU
Christophe JAILLET (6):
mmc: pxamci: Fix another error handling path in pxamci_probe()
mmc: pxamci: Fix an error handling path in pxamci_probe()
mmc: meson-gx: Fix an error handling path in meson_mmc_probe()
perf probe: Fix an error handling path in 'parse_perf_probe_command()'
stmmac: intel: Add a missing clk_disable_unprepare() call in intel_eth_pci_remove()
cxl: Fix a memory leak in an error handling path
Christophe Leroy (2):
powerpc/32: Set an IBAT covering up to _einittext during init powerpc/32: Don't always pass -mcpu=powerpc to the compiler
Chuck Lever (1):
SUNRPC: Fix xdr_encode_bool()
Conor Dooley (2):
riscv: dts: sifive: Add fu740 topology information
riscv: dts: canaan: Add k210 topology information
Csókás Bence (1):
fec: Fix timer capture timing in fec_ptp_enable_pps()
Damien Le Moal (1):
ata: libata-eh: Add missing command name
Dan Aloni (1):
sunrpc: fix expiry of auth creds
Dan Carpenter (4):
NTB: ntb_tool: uninitialized heap data in tool_fn_write() xen/xenbus: fix return type in xenbus_file_read() fs/ntfs3: Don't clear upper bits accidentally in log_replay() fs/ntfs3: uninitialized variable in ntfs_set_acl_ex()
Darrick J. Wong (6):
xfs: reserve quota for dir expansion when linking/unlinking files
xfs: reserve quota for target dir expansion when renaming files
xfs: remove infinite loop when reserving free block pool
xfs: always succeed at setting the reserve pool size
xfs: fix overfilling of reserve pool
xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP*
Dmitry Baryshkov (1):
dt-bindings: clock: qcom,gcc-msm8996: add more GCC clock sources
Duoming Zhou (1):
atm: idt77252: fix use-after-free bugs caused by tst_timer
Eric Sandeen (1):
xfs: revert "xfs: actually bump warning counts when we send warnings"
Fabiano Rosas (1):
KVM: PPC: Book3S HV: Fix "rm_exit" entry in debugfs timings
Fedor Pchelkin (2):
can: j1939: j1939_session_destroy(): fix memory leak of skbs
can: j1939: j1939_sk_queue_activate_next_locked(): replace WARN_ON_ONCE with netdev_warn_once()
Filipe Manana (1):
btrfs: fix lost error handling when looking up extended ref on log replay
Florian Fainelli (2):
net: phy: Warn about incorrect mdio_bus_phy_resume() state
net: bcmgenet: Indicate MAC is in charge of PHY PM
Florian Westphal (1):
plip: avoid rcu debug splat
Frank Li (2):
usb: cdns3 fix use-after-free at workaround 2
usb: cdns3: fix random warning message when driver load
Frieder Schrempf (1):
regulator: pca9450: Remove restrictions for regulator-name
Greg Kroah-Hartman (1):
Linux 5.15.63
Grzegorz Siwik (1):
ice: Ignore EEXIST when setting promisc mode
Guenter Roeck (1):
lib/list_debug.c: Detect uninitialized lists
Harman Kalra (1):
octeontx2-af: suppress external profile loading warning
Hector Martin (1):
locking/atomic: Make test_and_*_bit() ordered on failure
Helge Deller (1):
modules: Ensure natural alignment for .altinstructions and __bug_table sections
Hou Tao (5):
bpf: Acquire map uref in .init_seq_private for array map iterator
bpf: Acquire map uref in .init_seq_private for hash map iterator
bpf: Acquire map uref in .init_seq_private for sock local storage map iterator
bpf: Acquire map uref in .init_seq_private for sock{map,hash} iterator
bpf: Check the validity of max_rdwr_access for sock local storage map iterator
Huacai Chen (1):
PCI/ACPI: Guard ARM64-specific mcfg_quirks
Ido Schimmel (2):
devlink: Fix use-after-free after a failed reload
selftests: forwarding: Fix failing tests with old libnet
Jakub Kicinski (1):
net: genl: fix error path memory leak in policy dumping
James Smart (2):
scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user input
scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE
Jason A. Donenfeld (1):
um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups
Jean-Philippe Brucker (1):
uacce: Handle parent device removal or parent driver module rmmod
Jeff Layton (1):
ceph: don't leak snap_rwsem in handle_cap_grant
Jianhua Lu (1):
pinctrl: qcom: sm8250: Fix PDC map
Jinghao Jia (1):
BPF: Fix potential bad pointer dereference in bpf_sys_bpf()
John Johansen (5):
apparmor: fix quiet_denied for file rules
apparmor: fix absroot causing audited secids to begin with =
apparmor: Fix failed mount permission check error message
apparmor: fix setting unconfined mode on a loaded profile
apparmor: fix overlapping attachment computation
Josef Bacik (1):
btrfs: reset RO counter on block group if we fail to relocate
Jozef Martiniak (1):
gadgetfs: ep_io - wait until IRQ finishes
Karol Herbst (1):
drm/nouveau: recognise GA103
Kiselev, Oleg (1):
ext4: avoid resizing to a partial cluster size
Konstantin Komarov (3):
fs/ntfs3: Fix double free on remount fs/ntfs3: Do not change mode if ntfs_set_ea failed fs/ntfs3: Fix missing i_op in ntfs_read_mft
Krzysztof Kozlowski (6):
dt-bindings: arm: qcom: fix Alcatel OneTouch Idol 3 compatibles
dt-bindings: arm: qcom: fix Longcheer L8150 compatibles
dt-bindings: arm: qcom: fix MSM8916 MTP compatibles
dt-bindings: arm: qcom: fix MSM8994 boards compatibles
spi: dt-bindings: cadence: add missing 'required'
spi: dt-bindings: zynqmp-qspi: add missing 'required'
Kumar Kartikeya Dwivedi (1):
bpf: Don't reinit map value in prealloc_lru_pop
Kuninori Morimoto (1):
ASoC: rsnd: care default case on rsnd_ssiu_busif_err_irq_ctrl()
Laurent Dufour (1):
watchdog: export lockup_detector_reconfigure
Laurentiu Palcu (1):
drm/imx/dcss: get rid of HPD warning message
Liang He (5):
drm/meson: Fix refcount bugs in meson_vpu_has_available_connectors()
usb: host: ohci-ppc-of: Fix refcount leak bug
usb: renesas: Fix refcount leak bug
tty: serial: Fix refcount leak bug in ucc_uart.c
mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start
Liao Chang (1):
csky/kprobe: reclaim insn_slot on kprobe unregistration
Lin Ma (1):
igb: Add lock to avoid data race
Logan Gunthorpe (1):
md: Notify sysfs sync_completed in md_reap_sync_thread()
Luís Henriques (1):
ceph: use correct index when encoding client supported features
Marc Kleine-Budde (1):
can: ems_usb: fix clang's -Wunaligned-access warning
Marek Szyprowski (1):
phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks
Martin Povišer (4):
ASoC: tas2770: Set correct FSYNC polarity
ASoC: tas2770: Allow mono streams
ASoC: tas2770: Drop conflicting set_bias_level power setting
ASoC: tas2770: Fix handling of mute/unmute
Masahiro Yamada (1):
kbuild: fix the modules order between drivers and libs
Matthias May (4):
geneve: do not use RT_TOS for IPv6 flowlabel
mlx5: do not use RT_TOS for IPv6 flowlabel
ipv6: do not use RT_TOS for IPv6 flowlabel
geneve: fix TOS inheriting for ipv4
Maxim Kochetkov (1):
net: qrtr: start MHI channel after endpoit creation
Miaoqian Lin (2):
pinctrl: nomadik: Fix refcount leak in nmk_pinctrl_dt_subnode_to_map
Input: exc3000 - fix return value check of wait_for_completion_timeout
Michael Ellerman (1):
powerpc/pci: Fix get_phb_number() locking
Michael Grzeschik (2):
usb: gadget: uvc: calculate the number of request depending on framesize
usb: gadget: uvc: call uvc uvcg_warn on completed status instead of uvcg_info
Michal Simek (1):
dt-bindings: gpio: zynq: Add missing compatible strings
Miklos Szeredi (1):
ovl: warn if trusted xattr creation fails
Mikulas Patocka (1):
rds: add missing barrier to release_refill
Nadav Amit (1):
x86/kprobes: Fix JNG/JNLE emulation
Nathan Chancellor (1):
MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0
Naveen Mamindlapalli (1):
octeontx2-pf: Fix NIX_AF_TL3_TL2X_LINKX_CFG register configuration
Neil Armstrong (1):
spi: meson-spicc: add local pow2 clock ops to preserve rate between messages
Nick Desaulniers (1):
coresight: etm4x: avoid build failure with unrolled loops
Nikita Travkin (1):
pinctrl: qcom: msm8916: Allow CAMSS GP clocks to be muxed
Nícolas F. R. A. Prado (1):
dt-bindings: usb: mtk-xhci: Allow wakeup interrupt-names to be optional
Oded Gabbay (1):
habanalabs/gaudi: mask constant value before cast
Ofir Bitton (1):
habanalabs/gaudi: fix shift out of bounds
Oliver Upton (2):
KVM: arm64: Treat PMCR_EL1.LC as RES1 on asymmetric systems
KVM: arm64: Reject 32bit user PSTATE on asymmetric systems
Ondrej Mosnacek (1):
kbuild: dummy-tools: avoid tmpdir leak in dummy gcc
Pablo Neira Ayuso (8):
netfilter: nf_tables: use READ_ONCE and WRITE_ONCE for shared generation id access
netfilter: nf_tables: disallow NFTA_SET_ELEM_KEY_END with NFT_SET_ELEM_INTERVAL_END flag
netfilter: nf_tables: possible module reference underflow in error path
netfilter: nf_tables: really skip inactive sets when allocating name
netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
netfilter: nf_tables: NFTA_SET_ELEM_KEY_END requires concat and interval flags
netfilter: nf_tables: disallow NFT_SET_ELEM_CATCHALL and NFT_SET_ELEM_INTERVAL_END
netfilter: nf_tables: check NFT_SET_CONCAT flag if field_count is specified
Pali Rohár (1):
PCI: aardvark: Fix reporting Slot capabilities on emulated bridge
Pascal Terjan (1):
vboxguest: Do not use devm for irq
Pavan Chebbi (1):
PCI: Add ACS quirk for Broadcom BCM5750x NICs
Pavel Skripkin (1):
fs/ntfs3: Fix NULL deref in ntfs_update_mftmirr
Peilin Ye (2):
vsock: Fix memory leak in vsock_connect()
vsock: Set socket state back to SS_UNCONNECTED in vsock_connect_timeout()
Philipp Zabel (1):
ASoC: codec: tlv320aic32x4: fix mono playback via I2S
Po-Wen Kao (1):
scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators
Przemyslaw Patynowski (2):
iavf: Fix adminq error handling
iavf: Fix reset error handling
Qifu Zhang (1):
Documentation: ACPI: EINJ: Fix obsolete example
Randy Dunlap (1):
m68k: coldfire/device.c: protect FLEXCAN blocks
Ranjani Sridharan (1):
ASoC: SOF: Intel: hda: Define rom_status_reg in sof_intel_dsp_desc
Ren Zhijie (1):
scsi: ufs: ufs-mediatek: Fix build error and type mismatch
Robert Marko (1):
clk: qcom: ipq8074: dont disable gcc_sleep_clk_src
Roberto Sassu (1):
tools build: Switch to new openssl API for test-libcrypto
Rustam Subkhankulov (1):
net: dsa: sja1105: fix buffer overflow in sja1105_setup_devlink_regions()
Sagi Grimberg (1):
nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown
Sai Prakash Ranjan (2):
irqchip/tegra: Fix overflow implicit truncation warnings drm/meson: Fix overflow implicit truncation warnings
Sakari Ailus (1):
ACPI: property: Return type of acpi_add_nondev_subnodes() should be bool
Samuel Holland (2):
pinctrl: sunxi: Add I/O bias setting for H6 R-PIO drm/sun4i: dsi: Prevent underflow when computing packet sizes
Sandor Bodo-Merle (1):
net: bgmac: Fix a BUG triggered by wrong bytes_compl
Schspa Shi (1):
vfio: Clear the caps->buf to NULL after free
Sean Christopherson (1):
KVM: Unconditionally get a ref to /dev/kvm module when creating a VM
Sebastian Würl (1):
can: mcp251x: Fix race condition on receive interrupt
Sergei Antonov (2):
net: dsa: mv88e6060: prevent crash on an unused port
net: moxa: pass pdev instead of ndev to DMA functions
Sergey Senozhatsky (1):
zram: do not lookup algorithm in backends table
Stafford Horne (1):
openrisc: io: Define iounmap argument as volatile
Stanimir Varbanov (1):
venus: pm_helpers: Fix warning in OPP during probe
Stanislaw Kardach (1):
octeontx2-af: Apply tx nibble fixup always
Steve French (1):
smb3: check xattr value length earlier
Steven Rostedt (Google) (8):
tracing/perf: Fix double put of trace event when init fails tracing/eprobes: Do not allow eprobes to use $stack, or % for regs tracing/eprobes: Do not hardcode $comm as a string tracing/eprobes: Have event probes be consistent with kprobes and uprobes tracing/probes: Have kprobes and uprobes use $COMM too
tracing: Have filter accept "common_cpu" to be consistent tracing/eprobes: Fix reading of string fields selftests/kprobe: Do not test for GRP/ without event failures
Subbaraya Sundeep (2):
octeontx2-af: Fix mcam entry resource leak
octeontx2-af: Fix key checking for source mac
Takashi Iwai (6):
ALSA: usb-audio: More comprehensive mixer map for ASUS ROG Zenith II
ASoC: SOF: debug: Fix potential buffer overflow by snprintf()
ASoC: SOF: Intel: hda: Fix potential buffer overflow by snprintf()
ALSA: core: Add async signal helpers
ALSA: timer: Use deferred fasync helper
ALSA: control: Use deferred fasync helper
Tao Jin (1):
HID: multitouch: new device class fix Lenovo X12 trackpad sticky
Tom Rix (1):
apparmor: fix aa_label_asxprint return check
Tony Lindgren (1):
clk: ti: Stop using legacy clkctrl names for omap4 and 5
Trond Myklebust (5):
NFSv4.1: Don't decrease the value of seq_nr_highest_sent NFSv4.1: Handle NFS4ERR_DELAY replies to OP_SEQUENCE correctly
NFSv4: Fix races in the legacy idmapper upcall NFSv4/pnfs: Fix a use-after-free bug in open
SUNRPC: Reinitialise the backchannel request buffers before reuse
Tzung-Bi Shih (1):
platform/chrome: cros_ec_proto: don't show MKBP version if unsupported
Uwe Kleine-König (2):
i2c: imx: Make sure to unregister adapter on remove()
dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed
Vladimir Oltean (2):
net: dsa: felix: fix ethtool 256-511 and 512-1023 TX packet counters
net: dsa: don't warn in dsa_port_set_state_now() when driver doesn't support it
Vladimir Zapolskiy (1):
clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description
Wentao_Liang (1):
drivers:md:fix a potential use-after-free bug
Wolfram Sang (1):
mmc: tmio: avoid glitches when resetting
Xianting Tian (1):
RISC-V: Add fast call path of crash_kexec()
Xin Xiong (3):
apparmor: fix reference count leak in aa_pivotroot() net/sunrpc: fix potential memory leaks in rpc_sysfs_xprt_state_change()
net: fix potential refcount leak in ndisc_router_discovery()
Xiu Jianfeng (1):
apparmor: Fix memleak in aa_simple_write_to_buffer()
Xuan Zhuo (1):
virtio_net: fix memory leak inside XPD_TX with mergeable
Yan Lei (1):
fs/ntfs3: Fix using uninitialized value n when calling indx_read
Ye Bin (1):
ext4: avoid remove directory when directory is corrupted
Yu Xiao (1):
nfp: ethtool: fix the display error of ethtool -m DEVNAME
Yuanzheng Song (1):
tools/vm/slabinfo: use alphabetic order when two values are equal
Yunfei Wang (1):
iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit
Zhang Xianwei (1):
NFSv4.1: RECLAIM_COMPLETE must handle EACCES
Zhang Xiaoxu (1):
cifs: Fix memory leak on the deferred close
Zheyu Ma (1):
video: fbdev: i740fb: Check the argument of i740_calc_vclk()
Zhouyi Zhou (1):
powerpc/64: Init jump labels before parse_early_param()
Zixuan Fu (1):
btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()
Greg Kroah-Hartman
maintainerDocumentation/atomic_bitops.txt +1 -1
@@ -59,7 +59,7 @@ Like with atomic_t, the rule of thumb is: - RMW operations that have a return value are fully ordered. - RMW operations that are conditional are unordered on FAILURE, - otherwise the above rules apply. In the case of test_and_{}_bit() operations, + otherwise the above rules apply. In the case of test_and_set_bit_lock(), if the bit in memory is unchanged by the operation then it is deemed to have failed.
Documentation/devicetree/bindings/arm/qcom.yaml +12 -6
@@ -135,28 +135,34 @@ properties: - const: qcom,msm8974 - items: - - enum: - - alcatel,idol347 - - const: qcom,msm8916-mtp/1 - const: qcom,msm8916-mtp + - const: qcom,msm8916-mtp/1 - const: qcom,msm8916 - items: - enum: - - longcheer,l8150 + - alcatel,idol347 - samsung,a3u-eur - samsung,a5u-eur - const: qcom,msm8916 + - items: + - const: longcheer,l8150 + - const: qcom,msm8916-v1-qrd/9-v1 + - const: qcom,msm8916 + - items: - enum: - sony,karin_windy + - const: qcom,apq8094 + + - items: + - enum: - sony,karin-row - sony,satsuki-row - sony,sumire-row - sony,suzuran-row - - qcom,msm8994 - - const: qcom,apq8094 + - const: qcom,msm8994 - items: - const: qcom,msm8996-mtp
Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml +16 -0
@@ -22,16 +22,32 @@ properties: const: qcom,gcc-msm8996 clocks: + minItems: 3 items: - description: XO source - description: Second XO source - description: Sleep clock source + - description: PCIe 0 PIPE clock (optional) + - description: PCIe 1 PIPE clock (optional) + - description: PCIe 2 PIPE clock (optional) + - description: USB3 PIPE clock (optional) + - description: UFS RX symbol 0 clock (optional) + - description: UFS RX symbol 1 clock (optional) + - description: UFS TX symbol 0 clock (optional) clock-names: + minItems: 3 items: - const: cxo - const: cxo2 - const: sleep_clk + - const: pcie_0_pipe_clk_src + - const: pcie_1_pipe_clk_src + - const: pcie_2_pipe_clk_src + - const: usb3_phy_pipe_clk_src + - const: ufs_rx_symbol_0_clk_src + - const: ufs_rx_symbol_1_clk_src + - const: ufs_tx_symbol_0_clk_src '#clock-cells': const: 1
Documentation/devicetree/bindings/gpio/gpio-zynq.yaml +5 -1
@@ -11,7 +11,11 @@ maintainers: properties: compatible: - const: xlnx,zynq-gpio-1.0 + enum: + - xlnx,zynq-gpio-1.0 + - xlnx,zynqmp-gpio-1.0 + - xlnx,versal-gpio-1.0 + - xlnx,pmc-gpio-1.0 reg: maxItems: 1
Documentation/devicetree/bindings/regulator/nxp,pca9450-regulator.yaml +0 -11
@@ -47,12 +47,6 @@ properties: description: Properties for single LDO regulator. - properties: - regulator-name: - pattern: "^LDO[1-5]$" - description: - should be "LDO1", ..., "LDO5" - unevaluatedProperties: false "^BUCK[1-6]$":
@@ -62,11 +56,6 @@ properties: Properties for single BUCK regulator. properties: - regulator-name: - pattern: "^BUCK[1-6]$" - description: - should be "BUCK1", ..., "BUCK6" - nxp,dvs-run-voltage: $ref: "/schemas/types.yaml#/definitions/uint32" minimum: 600000
Documentation/devicetree/bindings/spi/spi-cadence.yaml +7 -0
@@ -49,6 +49,13 @@ properties: enum: [ 0, 1 ] default: 0 +required: + - compatible + - reg + - interrupts + - clock-names + - clocks + unevaluatedProperties: false examples:
Documentation/devicetree/bindings/spi/spi-zynqmp-qspi.yaml +7 -0
@@ -30,6 +30,13 @@ properties: clocks: maxItems: 2 +required: + - compatible + - reg + - interrupts + - clock-names + - clocks + unevaluatedProperties: false examples:
Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml +1 -0
@@ -56,6 +56,7 @@ properties: - description: optional, wakeup interrupt used to support runtime PM interrupt-names: + minItems: 1 items: - const: host - const: wakeup
Documentation/firmware-guide/acpi/apei/einj.rst +1 -1
@@ -168,7 +168,7 @@ An error injection example:: 0x00000008 Memory Correctable 0x00000010 Memory Uncorrectable non-fatal # echo 0x12345000 > param1 # Set memory address for injection - # echo $((-1 << 12)) > param2 # Mask 0xfffffffffffff000 - anywhere in this page + # echo 0xfffffffffffff000 > param2 # Mask - anywhere in this page # echo 0x8 > error_type # Choose correctable memory error # echo 1 > error_inject # Inject now
Makefile +3 -5
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 62 +SUBLEVEL = 63 EXTRAVERSION = NAME = Trick or Treat
@@ -1155,13 +1155,11 @@ vmlinux-alldirs := $(sort $(vmlinux-dirs) Documentation \ $(patsubst %/,%,$(filter %/, $(core-) \ $(drivers-) $(libs-)))) -subdir-modorder := $(addsuffix modules.order,$(filter %/, \ - $(core-y) $(core-m) $(libs-y) $(libs-m) \ - $(drivers-y) $(drivers-m))) - build-dirs := $(vmlinux-dirs) clean-dirs := $(vmlinux-alldirs) +subdir-modorder := $(addsuffix /modules.order, $(build-dirs)) + # Externally visible symbols (used by link-vmlinux.sh) KBUILD_VMLINUX_OBJS := $(head-y) $(patsubst %/,%/built-in.a, $(core-y)) KBUILD_VMLINUX_OBJS += $(addsuffix built-in.a, $(filter %/, $(libs-y)))
arch/arm64/include/asm/kvm_host.h +4 -0
@@ -795,6 +795,10 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);#define kvm_vcpu_has_pmu (vcpu) \ (test_bit(KVM_ARM_VCPU_PMU_V3, (vcpu)->arch.features)) +#define kvm_supports_32bit_el0 () \ + (system_supports_32bit_el0() && \ + !static_branch_unlikely(&arm64_mismatched_32bit_el0)) +int kvm_trng_call (struct kvm_vcpu *vcpu);#ifdef CONFIG_KVM extern phys_addr_t hyp_mem_base;
arch/arm64/kvm/arm.c +1 -2
@@ -712,8 +712,7 @@ static bool vcpu_mode_is_bad_32bit(struct kvm_vcpu *vcpu)if (likely (!vcpu_mode_is_32bit (vcpu)))return false; -return !system_supports_32bit_el0 () || -static_branch_unlikely (&arm64_mismatched_32bit_el0); +return !kvm_supports_32bit_el0 (); }/**
arch/arm64/kvm/guest.c +1 -1
@@ -242,7 +242,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)u64 mode = (*(u64 *)valp) &PSR_AA32_MODE_MASK ;switch (mode) {case PSR_AA32_MODE_USR : -if (!system_supports_32bit_el0 ()) +if (!kvm_supports_32bit_el0 ())return -EINVAL ;break ;case PSR_AA32_MODE_FIQ :
arch/arm64/kvm/sys_regs.c +2 -2
@@ -649,7 +649,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)*/ val = ((pmcr & ~ARMV8_PMU_PMCR_MASK ) | (ARMV8_PMU_PMCR_MASK &0xdecafbad )) & (~ARMV8_PMU_PMCR_E ); -if (!system_supports_32bit_el0 ()) +if (!kvm_supports_32bit_el0 ()) val |=ARMV8_PMU_PMCR_LC ;__vcpu_sys_reg (vcpu, r->reg) = val; }
@@ -698,7 +698,7 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p, val =__vcpu_sys_reg (vcpu,PMCR_EL0 ); val &= ~ARMV8_PMU_PMCR_MASK ; val |= p->regval &ARMV8_PMU_PMCR_MASK ; -if (!system_supports_32bit_el0 ()) +if (!kvm_supports_32bit_el0 ()) val |=ARMV8_PMU_PMCR_LC ;__vcpu_sys_reg (vcpu,PMCR_EL0 ) = val;kvm_pmu_handle_pmcr (vcpu, val);
arch/csky/kernel/probes/kprobes.c +4 -0
@@ -124,6 +124,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)void __kprobes arch_remove_kprobe (struct kprobe *p) { +if (p->ainsn.api.insn) { +free_insn_slot (p->ainsn.api.insn,0 ); + p->ainsn.api.insn =NULL ; + } }static void __kprobes save_previous_kprobe (struct kprobe_ctlblk *kcb)
arch/m68k/coldfire/device.c +3 -3
@@ -581,7 +581,7 @@ static struct platform_device mcf_esdhc = { };#endif /* MCFSDHC_BASE */ -#if IS_ENABLED (CONFIG_CAN_FLEXCAN ) +#ifdef MCFFLEXCAN_SIZE #include <linux/can/platform/flexcan.h>
@@ -620,7 +620,7 @@ static struct platform_device mcf_flexcan0 = { .resource = mcf5441x_flexcan0_resource, .dev.platform_data = &mcf5441x_flexcan_info, }; -#endif /* IS_ENABLED(CONFIG_CAN_FLEXCAN) */ +#endif /* MCFFLEXCAN_SIZE */ static struct platform_device *mcf_devices[]__initdata = { &mcf_uart,
@@ -657,7 +657,7 @@ static struct platform_device *mcf_devices[] __initdata = {#ifdef MCFSDHC_BASE &mcf_esdhc,#endif -#if IS_ENABLED (CONFIG_CAN_FLEXCAN ) +#ifdef MCFFLEXCAN_SIZE &mcf_flexcan0,#endif };
arch/mips/cavium-octeon/octeon-platform.c +2 -1
@@ -86,11 +86,12 @@ static void octeon2_usb_clocks_start(struct device *dev) "refclk-frequency", &clock_rate);if (i) {dev_err (dev,"No UCTL \"refclk-frequency\"\n" ); +of_node_put (uctl_node); goto exit; } i =of_property_read_string (uctl_node,"refclk-type" , &clock_type); - +of_node_put (uctl_node);if (!i &&strcmp ("crystal" , clock_type) ==0 ) is_crystal_clock = true; }
arch/mips/mm/tlbex.c +2 -2
@@ -634,7 +634,7 @@ static __maybe_unused void build_convert_pte_to_entrylo(u32 **p,return ; } -if (cpu_has_rixi && !!_PAGE_NO_EXEC) { +if (cpu_has_rixi && _PAGE_NO_EXEC !=0 ) {if (fill_includes_sw_bits) {UASM_i_ROTR (p, reg, reg,ilog2 (_PAGE_GLOBAL)); }else {
@@ -2573,7 +2573,7 @@ static void check_pabits(void)unsigned long entry;unsigned pabits, fillbits; -if (!cpu_has_rixi || !_PAGE_NO_EXEC) { +if (!cpu_has_rixi || _PAGE_NO_EXEC ==0 ) {/* * We'll only be making use of the fact that we can rotate bits * into the fill if the CPU supports RIXI, so don't bother
arch/nios2/include/asm/entry.h +2 -1
@@ -50,7 +50,8 @@ stw r13, PT_R13(sp) stw r14, PT_R14(sp) stw r15, PT_R15(sp) - stw r2, PT_ORIG_R2(sp) + movi r24, -1 + stw r24, PT_ORIG_R2(sp) stw r7, PT_ORIG_R7(sp) stw ra, PT_RA(sp)
arch/nios2/include/asm/ptrace.h +2 -0
@@ -74,6 +74,8 @@ extern void show_regs(struct pt_regs *); ((struct pt_regs *)((unsigned long )current_thread_info () +THREAD_SIZE )\ - 1) +#define force_successful_syscall_return () (current_pt_regs()->orig_r2 = -1) +int do_syscall_trace_enter (void );void do_syscall_trace_exit (void );#endif /* __ASSEMBLY__ */
arch/nios2/kernel/entry.S +15 -7
@@ -185,6 +185,7 @@ ENTRY(handle_system_call) ldw r5, PT_R5(sp) local_restart: + stw r2, PT_ORIG_R2(sp) /* Check that the requested system call is within limits */ movui r1, __NR_syscalls bgeu r2, r1, ret_invsyscall
@@ -192,7 +193,6 @@ local_restart: movhi r11, %hiadj(sys_call_table) add r1, r1, r11 ldw r1, %lo(sys_call_table)(r1) - beq r1, r0, ret_invsyscall /* Check if we are being traced */ GET_THREAD_INFO r11
@@ -213,6 +213,9 @@ local_restart: translate_rc_and_ret: movi r1, 0 bge r2, zero, 3f + ldw r1, PT_ORIG_R2(sp) + addi r1, r1, 1 + beq r1, zero, 3f sub r2, zero, r2 movi r1, 1 3:
@@ -255,9 +258,9 @@ traced_system_call: ldw r6, PT_R6(sp) ldw r7, PT_R7(sp) - /* Fetch the syscall function, we don't need to check the boundaries - * since this is already done. - */ + /* Fetch the syscall function. */ + movui r1, __NR_syscalls + bgeu r2, r1, traced_invsyscall slli r1, r2, 2 movhi r11,%hiadj(sys_call_table) add r1, r1, r11
@@ -276,6 +279,9 @@ traced_system_call: translate_rc_and_ret2: movi r1, 0 bge r2, zero, 4f + ldw r1, PT_ORIG_R2(sp) + addi r1, r1, 1 + beq r1, zero, 4f sub r2, zero, r2 movi r1, 1 4:
@@ -287,6 +293,11 @@ end_translate_rc_and_ret2: RESTORE_SWITCH_STACK br ret_from_exception + /* If the syscall number was invalid return ENOSYS */ +traced_invsyscall: + movi r2, -ENOSYS + br translate_rc_and_ret2 + Luser_return: GET_THREAD_INFO r11 /* get thread_info pointer */ ldw r10, TI_FLAGS(r11) /* get thread_info->flags */
@@ -336,9 +347,6 @@ external_interrupt: /* skip if no interrupt is pending */ beq r12, r0, ret_from_interrupt - movi r24, -1 - stw r24, PT_ORIG_R2(sp) - /* * Process an external hardware interrupt. */
arch/nios2/kernel/signal.c +2 -1
@@ -242,7 +242,7 @@ static int do_signal(struct pt_regs *regs)/* * If we were from a system call, check for system call restarting... */ -if (regs->orig_r2 >=0 ) { +if (regs->orig_r2 >=0 && regs->r1) { continue_addr = regs->ea; restart_addr = continue_addr -4 ; retval = regs->r2;
@@ -264,6 +264,7 @@ static int do_signal(struct pt_regs *regs) regs->ea = restart_addr;break ; } + regs->orig_r2 =-1 ; }if (get_signal (&ksig)) {
arch/nios2/kernel/syscall_table.c +1 -0
@@ -13,5 +13,6 @@#define __SYSCALL (nr, call) [nr] = (call),void *sys_call_table[__NR_syscalls] = { + [0 ... __NR_syscalls-1 ] = sys_ni_syscall, #include <asm/unistd.h> };
arch/openrisc/include/asm/io.h +1 -1
@@ -31,7 +31,7 @@void __iomem *ioremap (phys_addr_t offset,unsigned long size);#define iounmap iounmap -extern void iounmap (void __iomem *addr); +extern void iounmap (volatile void __iomem *addr);#include <asm-generic/io.h>
arch/openrisc/mm/ioremap.c +1 -1
@@ -77,7 +77,7 @@ void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size) }EXPORT_SYMBOL (ioremap); -void iounmap (void __iomem *addr) +void iounmap (volatile void __iomem *addr) {/* If the page is from the fixmap pool then we just clear out * the fixmap mapping.
arch/powerpc/Makefile +1 -25
@@ -17,23 +17,6 @@ HAS_BIARCH := $(call cc-option-yn, -m32) # Set default 32 bits cross compilers for vdso and boot wrapper CROSS32_COMPILE ?= -ifeq ($(HAS_BIARCH),y) -ifeq ($(CROSS32_COMPILE),) -ifdef CONFIG_PPC32 -# These options will be overridden by any -mcpu option that the CPU -# or platform code sets later on the command line, but they are needed -# to set a sane 32-bit cpu target for the 64-bit cross compiler which -# may default to the wrong ISA. -KBUILD_CFLAGS += -mcpu=powerpc -KBUILD_AFLAGS += -mcpu=powerpc -endif -endif -endif - -ifdef CONFIG_PPC_BOOK3S_32 -KBUILD_CFLAGS += -mcpu=powerpc -endif - # If we're on a ppc/ppc64/ppc64le machine use that defconfig, otherwise just use # ppc64_defconfig because we have nothing better to go on. uname := $(shell uname -m)
@@ -185,6 +168,7 @@ endif endif CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU)) +AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU)) # Altivec option not allowed with e500mc64 in GCC. ifdef CONFIG_ALTIVEC
@@ -195,14 +179,6 @@ endif CFLAGS-$(CONFIG_E5500_CPU) += $(E5500_CPU) CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU)) -ifdef CONFIG_PPC32 -ifdef CONFIG_PPC_E500MC -CFLAGS-y += $(call cc-option,-mcpu=e500mc,-mcpu=powerpc) -else -CFLAGS-$(CONFIG_E500) += $(call cc-option,-mcpu=8540 -msoft-float,-mcpu=powerpc) -endif -endif - asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1) KBUILD_CPPFLAGS += -I $(srctree)/arch/$(ARCH) $(asinstr)
arch/powerpc/kernel/head_book3s_32.S +2 -2
@@ -421,14 +421,14 @@ InstructionTLBMiss: */ /* Get PTE (linux-style) and check access */ mfspr r3,SPRN_IMISS -#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) +#ifdef CONFIG_MODULES lis r1, TASK_SIZE@h /* check if kernel address */ cmplw 0,r1,r3 #endif mfspr r2, SPRN_SDR1 li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER rlwinm r2, r2, 28, 0xfffff000 -#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE) +#ifdef CONFIG_MODULES bgt- 112f lis r2, (swapper_pg_dir - PAGE_OFFSET)@ha /* if kernel address, use */ li r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
arch/powerpc/kernel/pci-common.c +10 -6
@@ -67,10 +67,6 @@ void set_pci_dma_ops(const struct dma_map_ops *dma_ops) pci_dma_ops = dma_ops; } -/* -* This function should run under locking protection, specifically -* hose_spinlock. -*/ static int get_phb_number (struct device_node *dn) {int ret, phb_id =-1 ;
@@ -107,15 +103,20 @@ static int get_phb_number(struct device_node *dn)if (!ret) phb_id = (int )(prop & (MAX_PHBS -1 )); +spin_lock (&hose_spinlock); +/* We need to be sure to not use the same PHB number twice. */ if ((phb_id >=0 ) && !test_and_set_bit (phb_id, phb_bitmap)) -return phb_id; + goto out_unlock;/* If everything fails then fallback to dynamic PHB numbering. */ phb_id =find_first_zero_bit (phb_bitmap,MAX_PHBS );BUG_ON (phb_id >=MAX_PHBS );set_bit (phb_id, phb_bitmap); +out_unlock: +spin_unlock (&hose_spinlock); +return phb_id; }
@@ -126,10 +127,13 @@ struct pci_controller *pcibios_alloc_controller(struct device_node *dev) phb =zalloc_maybe_bootmem (sizeof (struct pci_controller ),GFP_KERNEL );if (phb ==NULL )return NULL ; -spin_lock (&hose_spinlock); + phb->global_number =get_phb_number (dev); + +spin_lock (&hose_spinlock);list_add_tail (&phb->list_node, &hose_list);spin_unlock (&hose_spinlock); + phb->dn = dev; phb->is_dynamic =slab_is_available ();#ifdef CONFIG_PPC64
arch/powerpc/kernel/prom.c +7 -0
@@ -751,6 +751,13 @@ void __init early_init_devtree(void *params)of_scan_flat_dt (early_init_dt_scan_root,NULL );of_scan_flat_dt (early_init_dt_scan_memory_ppc,NULL ); +/* +* As generic code authors expect to be able to use static keys +* in early_param() handlers, we initialize the static keys just +* before parsing early params (it's fine to call jump_label_init() +* more than once). +*/ +jump_label_init ();parse_early_param ();/* make sure we've parsed cmdline for mem= before this */
arch/powerpc/kvm/book3s_hv_p9_entry.c +2 -11
@@ -7,15 +7,6 @@#include <asm/ppc-opcode.h> #ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING -static void __start_timing (struct kvm_vcpu *vcpu,struct kvmhv_tb_accumulator *next) -{ -struct kvmppc_vcore *vc = vcpu->arch.vcore; -u64 tb =mftb () - vc->tb_offset_applied; - - vcpu->arch.cur_activity = next; - vcpu->arch.cur_tb_start = tb; -} -static void __accumulate_time (struct kvm_vcpu *vcpu,struct kvmhv_tb_accumulator *next) {struct kvmppc_vcore *vc = vcpu->arch.vcore;
@@ -47,8 +38,8 @@ static void __accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator curr->seqcount = seq + 2; } -#define start_timing (vcpu, next) __start_timing(vcpu, next) -#define end_timing (vcpu) __start_timing(vcpu, NULL) +#define start_timing (vcpu, next) __accumulate_time(vcpu, next) +#define end_timing (vcpu) __accumulate_time(vcpu, NULL)#define accumulate_time (vcpu, next) __accumulate_time(vcpu, next)#else #define start_timing (vcpu, next) do {} while (0)
arch/powerpc/mm/book3s32/mmu.c +4 -6
@@ -160,7 +160,10 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top) {unsigned long done;unsigned long border = (unsigned long )__init_begin -PAGE_OFFSET ; +unsigned long size; + size =roundup_pow_of_two ((unsigned long )_einittext -PAGE_OFFSET ); +setibat (0 ,PAGE_OFFSET ,0 , size,PAGE_KERNEL_X );if (debug_pagealloc_enabled_or_kfence () || __map_without_bats) {pr_debug_once ("Read-Write memory mapped without BATs\n" );
@@ -246,10 +249,9 @@ void mmu_mark_rodata_ro(void) }/* -* Set up one of the I/D BAT (block address translation) register pairs. +* Set up one of the D BAT (block address translation) register pairs. * The parameters are not checked; in particular size must be a power * of 2 between 128k and 256M. -* On 603+, only set IBAT when _PAGE_EXEC is set */ void __init setbat (int index,unsigned long virt,phys_addr_t phys,unsigned int size,pgprot_t prot)
@@ -285,10 +287,6 @@ void __init setbat(int index, unsigned long virt, phys_addr_t phys,/* G bit must be zero in IBATs */ flags &= ~_PAGE_EXEC; } -if (flags & _PAGE_EXEC) - bat[0 ] = bat[1 ]; -else - bat[0 ].batu = bat[0 ].batl =0 ; bat_addrs[index].start = virt; bat_addrs[index].limit = virt + ((bl +1 ) <<17 ) -1 ;
arch/powerpc/platforms/Kconfig.cputype +18 -3
@@ -137,9 +137,9 @@ config GENERIC_CPU depends on PPC64 && CPU_LITTLE_ENDIAN select ARCH_HAS_FAST_MULTIPLIER -config GENERIC_CPU +config POWERPC_CPU bool "Generic 32 bits powerpc" - depends on PPC32 && !PPC_8xx + depends on PPC32 && !PPC_8xx && !PPC_85xx config CELL_CPU bool "Cell Broadband Engine"
@@ -193,11 +193,23 @@ config G4_CPU depends on PPC_BOOK3S_32 select ALTIVEC +config E500_CPU + bool "e500 (8540)" + depends on PPC_85xx && !PPC_E500MC + +config E500MC_CPU + bool "e500mc" + depends on PPC_85xx && PPC_E500MC + +config TOOLCHAIN_DEFAULT_CPU + bool "Rely on the toolchain's implicit default CPU" + depends on PPC32 + endchoice config TARGET_CPU_BOOL bool - default !GENERIC_CPU + default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU config TARGET_CPU string
@@ -212,6 +224,9 @@ config TARGET_CPU default "e300c2" if E300C2_CPU default "e300c3" if E300C3_CPU default "G4" if G4_CPU + default "8540" if E500_CPU + default "e500mc" if E500MC_CPU + default "powerpc" if POWERPC_CPU config PPC_BOOK3S def_bool y
arch/powerpc/platforms/powernv/pci-ioda.c +2 -0
@@ -1618,6 +1618,7 @@ static void pnv_pci_ioda1_setup_dma_pe(struct pnv_phb *phb, tbl->it_ops = &pnv_ioda1_iommu_ops; pe->table_group.tce32_start = tbl->it_offset << tbl->it_page_shift; pe->table_group.tce32_size = tbl->it_size << tbl->it_page_shift; + tbl->it_index = (phb->hose->global_number <<16 ) | pe->pe_number;if (!iommu_init_table (tbl, phb->hose->node,0 ,0 ))panic ("Failed to initialize iommu table" );
@@ -1788,6 +1789,7 @@ static long pnv_pci_ioda2_setup_default_config(struct pnv_ioda_pe *pe) res_end =min (window_size,SZ_4G ) >> tbl->it_page_shift; } + tbl->it_index = (pe->phb->hose->global_number <<16 ) | pe->pe_number;if (iommu_init_table (tbl, pe->phb->hose->node, res_start, res_end)) rc =pnv_pci_ioda2_set_window (&pe->table_group,0 , tbl);else
arch/riscv/boot/dts/canaan/k210.dtsi +12 -0
@@ -65,6 +65,18 @@ cpu1_intc: interrupt-controller { compatible = "riscv,cpu-intc"; }; }; + + cpu-map { + cluster0 { + core0 { + cpu = <&cpu0>; + }; + + core1 { + cpu = <&cpu1>; + }; + }; + }; }; sram: memory@80000000 {
arch/riscv/boot/dts/sifive/fu740-c000.dtsi +24 -0
@@ -134,6 +134,30 @@ cpu4_intc: interrupt-controller { interrupt-controller; }; }; + + cpu-map { + cluster0 { + core0 { + cpu = <&cpu0>; + }; + + core1 { + cpu = <&cpu1>; + }; + + core2 { + cpu = <&cpu2>; + }; + + core3 { + cpu = <&cpu3>; + }; + + core4 { + cpu = <&cpu4>; + }; + }; + }; }; soc { #address-cells = <2>;
arch/riscv/kernel/sys_riscv.c +2 -3
@@ -18,9 +18,8 @@ static long riscv_sys_mmap(unsigned long addr, unsigned long len,if (unlikely (offset & (~PAGE_MASK >> page_shift_offset)))return -EINVAL ; -if ((prot &PROT_WRITE ) && (prot &PROT_EXEC )) -if (unlikely (!(prot &PROT_READ ))) -return -EINVAL ; +if (unlikely ((prot &PROT_WRITE ) && !(prot &PROT_READ ))) +return -EINVAL ;return ksys_mmap_pgoff (addr, len, prot, flags, fd, offset >> (PAGE_SHIFT - page_shift_offset));
arch/riscv/kernel/traps.c +4 -0
@@ -16,6 +16,7 @@#include <linux/mm.h> #include <linux/module.h> #include <linux/irq.h> +#include <linux/kexec.h> #include <asm/asm-prototypes.h> #include <asm/bug.h>
@@ -44,6 +45,9 @@ void die(struct pt_regs *regs, const char *str) ret =notify_die (DIE_OOPS , str, regs,0 , regs->cause,SIGSEGV ); +if (regs &&kexec_should_crash (current)) +crash_kexec (regs); +bust_spinlocks (0 );add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE );spin_unlock_irq (&die_lock);
arch/um/os-Linux/skas/process.c +16 -1
@@ -5,6 +5,7 @@*/ #include <stdlib.h> +#include <stdbool.h> #include <unistd.h> #include <sched.h> #include <errno.h>
@@ -707,10 +708,24 @@ void halt_skas(void)UML_LONGJMP (&initial_jmpbuf,INIT_JMP_HALT ); } +static bool noreboot; + +static int __init noreboot_cmd_param (char *str,int *add) +{ + noreboot = true; +return 0 ; +} + +__uml_setup ("noreboot" , noreboot_cmd_param, +"noreboot\n" +" Rather than rebooting, exit always, akin to QEMU's -no-reboot option.\n" +" This is useful if you're using CONFIG_PANIC_TIMEOUT in order to catch\n" +" crashes in CI\n" ); +void reboot_skas (void ) {block_signals_trace (); -UML_LONGJMP (&initial_jmpbuf,INIT_JMP_REBOOT ); +UML_LONGJMP (&initial_jmpbuf, noreboot ?INIT_JMP_HALT :INIT_JMP_REBOOT ); }void __switch_mm (struct mm_id *mm_idp)
arch/x86/kernel/kprobes/core.c +1 -1
@@ -495,7 +495,7 @@ static void kprobe_emulate_jcc(struct kprobe *p, struct pt_regs *regs) match = ((regs->flags &X86_EFLAGS_SF ) >>X86_EFLAGS_SF_BIT ) ^ ((regs->flags &X86_EFLAGS_OF ) >>X86_EFLAGS_OF_BIT );if (p->ainsn.jcc.type >=0xe ) - match = match && (regs->flags &X86_EFLAGS_ZF ); + match = match || (regs->flags &X86_EFLAGS_ZF ); }__kprobe_emulate_jmp (p, regs, (match && !invert) || (!match && invert)); }
arch/x86/mm/init_64.c +1 -1
@@ -646,7 +646,7 @@ phys_pud_init(pud_t *pud_page, unsigned long paddr, unsigned long paddr_end, pages++;spin_lock (&init_mm.page_table_lock); - prot =__pgprot (pgprot_val (prot) | __PAGE_KERNEL_LARGE); + prot =__pgprot (pgprot_val (prot) | _PAGE_PSE); set_pte_init((pte_t *)pud, pfn_pte((paddr & PUD_MASK) >> PAGE_SHIFT,
drivers/acpi/pci_mcfg.c +3 -0
@@ -41,6 +41,8 @@ struct mcfg_fixup { static struct mcfg_fixup mcfg_quirks[] = {/* { OEM_ID, OEM_TABLE_ID, REV, SEGMENT, BUS_RANGE, ops, cfgres }, */ +#ifdef CONFIG_ARM64 +#define AL_ECAM (table_id, rev, seg, ops) \ { "AMAZON", table_id, rev, seg, MCFG_BUS_ANY, ops }
@@ -169,6 +171,7 @@ static struct mcfg_fixup mcfg_quirks[] = {ALTRA_ECAM_QUIRK (1 ,13 ),ALTRA_ECAM_QUIRK (1 ,14 ), ALTRA_ECAM_QUIRK(1, 15), +#endif /* ARM64 */ };static char mcfg_oem_id[ACPI_OEM_ID_SIZE ];
drivers/acpi/property.c +4 -4
@@ -155,10 +155,10 @@ static bool acpi_nondev_subnode_ok(acpi_handle scope,return acpi_nondev_subnode_data_ok (handle, link, list, parent); } -static int acpi_add_nondev_subnodes (acpi_handle scope, -const union acpi_object *links, -struct list_head *list, -struct fwnode_handle *parent) +static bool acpi_add_nondev_subnodes (acpi_handle scope, +const union acpi_object *links, +struct list_head *list, +struct fwnode_handle *parent) {bool ret = false;int i;
drivers/ata/libata-eh.c +1 -0
@@ -2130,6 +2130,7 @@ const char *ata_get_cmd_descript(u8 command) { ATA_CMD_WRITE_QUEUED_FUA_EXT, "WRITE DMA QUEUED FUA EXT" }, { ATA_CMD_FPDMA_READ, "READ FPDMA QUEUED" }, { ATA_CMD_FPDMA_WRITE, "WRITE FPDMA QUEUED" }, + { ATA_CMD_NCQ_NON_DATA, "NCQ NON-DATA" }, { ATA_CMD_FPDMA_SEND, "SEND FPDMA QUEUED" }, { ATA_CMD_FPDMA_RECV, "RECEIVE FPDMA QUEUED" }, { ATA_CMD_PIO_READ, "READ SECTOR(S)" },
drivers/atm/idt77252.c +1 -0
@@ -3752,6 +3752,7 @@ static void __exit idt77252_exit(void) card = idt77252_chain; dev = card->atmdev; idt77252_chain = card->next; +del_timer_sync (&card->tst_timer);if (dev->phy->stop) dev->phy->stop (dev);
drivers/block/zram/zcomp.c +5 -6
@@ -63,12 +63,6 @@ static int zcomp_strm_init(struct zcomp_strm *zstrm, struct zcomp *comp)bool zcomp_available_algorithm (const char *comp) { -int i; - - i =sysfs_match_string (backends, comp); -if (i >=0 ) -return true; -/* * Crypto does not ignore a trailing new line symbol, * so make sure you don't supply a string containing
@@ -217,6 +211,11 @@ struct zcomp *zcomp_create(const char *compress)struct zcomp *comp;int error; +/* +* Crypto API will execute /sbin/modprobe if the compression module +* is not loaded yet. We must do it here, otherwise we are about to +* call /sbin/modprobe under CPU hot-plug lock. +*/ if (!zcomp_available_algorithm (compress))return ERR_PTR (-EINVAL );
drivers/clk/qcom/clk-alpha-pll.c +1 -1
@@ -1420,7 +1420,7 @@ const struct clk_ops clk_alpha_pll_postdiv_fabia_ops = {EXPORT_SYMBOL_GPL (clk_alpha_pll_postdiv_fabia_ops);/** -* clk_lucid_pll_configure - configure the lucid pll +* clk_trion_pll_configure - configure the trion pll * * @pll: clk alpha pll * @regmap: register map
drivers/clk/qcom/gcc-ipq8074.c +1 -0
@@ -662,6 +662,7 @@ static struct clk_branch gcc_sleep_clk_src = { }, .num_parents = 1, .ops = &clk_branch2_ops, + .flags = CLK_IS_CRITICAL, }, }, };
drivers/clk/ti/clk-44xx.c +105 -105
339 lines not on this page · raw message
drivers/clk/ti/clk-54xx.c +80 -80
249 lines not on this page · raw message
drivers/clk/ti/clkctrl.c +0 -4
@@ -511,10 +511,6 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)char *c;u16 soc_mask =0 ; -if (!(ti_clk_get_features ()->flags &TI_CLK_CLKCTRL_COMPAT ) && -of_node_name_eq (node,"clk" )) - ti_clk_features.flags |=TI_CLK_CLKCTRL_COMPAT ; - addrp =of_get_address (node,0 ,NULL ,NULL ); addr = (u32 )of_translate_address (node, addrp);
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +11 -0
@@ -944,6 +944,11 @@ static int dw_axi_dma_chan_slave_config(struct dma_chan *dchan,static void axi_chan_dump_lli (struct axi_dma_chan *chan,struct axi_dma_hw_desc *desc) { +if (!desc->lli) { +dev_err (dchan2dev (&chan->vc.chan),"NULL LLI\n" ); +return ; + } + dev_err(dchan2dev(&chan->vc.chan), "SAR: 0x%llx DAR: 0x%llx LLP: 0x%llx BTS 0x%x CTL: 0x%x:%08x", le64_to_cpu(desc->lli->sar),
@@ -1011,6 +1016,11 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)/* The completed descriptor currently is in the head of vc list */ vd =vchan_next_desc (&chan->vc); +if (!vd) { +dev_err (chan2dev (chan),"BUG: %s, IRQ with no descriptors\n" , +axi_chan_name (chan)); + goto out; + }if (chan->cyclic) { desc =vd_to_axi_desc (vd);
@@ -1040,6 +1050,7 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)axi_chan_start_first_queued (chan); } +out:spin_unlock_irqrestore (&chan->vc.lock, flags); }
drivers/dma/sprd-dma.c +1 -4
@@ -1236,11 +1236,8 @@ static int sprd_dma_remove(struct platform_device *pdev) {struct sprd_dma_dev *sdev =platform_get_drvdata (pdev);struct sprd_dma_chn *c, *cn; -int ret; - ret =pm_runtime_get_sync (&pdev->dev); -if (ret <0 ) -return ret; +pm_runtime_get_sync (&pdev->dev);/* explicitly free the irq */ if (sdev->irq >0 )
drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c +1 -1
@@ -500,7 +500,7 @@ static struct stream_encoder *dcn303_stream_encoder_create(enum engine_id eng_idint afmt_inst;/* Mapping of VPG, AFMT, DME register blocks to DIO block instance */ -if (eng_id <=ENGINE_ID_DIGE ) { +if (eng_id <=ENGINE_ID_DIGB ) { vpg_inst = eng_id; afmt_inst = eng_id; }else
drivers/gpu/drm/imx/dcss/dcss-kms.c +0 -2
@@ -142,8 +142,6 @@ struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss)drm_kms_helper_poll_init (drm); -drm_bridge_connector_enable_hpd (kms->connector); - ret =drm_dev_register (drm,0 );if (ret) goto cleanup_crtc;
drivers/gpu/drm/meson/meson_drv.c +4 -1
@@ -114,8 +114,11 @@ static bool meson_vpu_has_available_connectors(struct device *dev)for_each_endpoint_of_node (dev->of_node, ep) {/* If the endpoint node exists, consider it enabled */ remote =of_graph_get_remote_port (ep); -if (remote) +if (remote) { +of_node_put (remote); +of_node_put (ep);return true; + } }return false;
drivers/gpu/drm/meson/meson_viu.c +11 -11
@@ -469,17 +469,17 @@ void meson_viu_init(struct meson_drm *priv) priv->io_base + _REG(VD2_IF0_LUMA_FIFO_SIZE));if (meson_vpu_is_compatible (priv,VPU_COMPATIBLE_G12A )) { -writel_relaxed (VIU_OSD_BLEND_REORDER (0 ,1 ) | -VIU_OSD_BLEND_REORDER (1 ,0 ) | -VIU_OSD_BLEND_REORDER (2 ,0 ) | -VIU_OSD_BLEND_REORDER (3 ,0 ) | -VIU_OSD_BLEND_DIN_EN (1 ) | -VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 | -VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 | -VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 | -VIU_OSD_BLEND_BLEN2_PREMULT_EN (1 ) | -VIU_OSD_BLEND_HOLD_LINES (4 ), - priv->io_base +_REG (VIU_OSD_BLEND_CTRL )); +u32 val = (u32 )VIU_OSD_BLEND_REORDER (0 ,1 ) | + (u32 )VIU_OSD_BLEND_REORDER (1 ,0 ) | + (u32 )VIU_OSD_BLEND_REORDER (2 ,0 ) | + (u32 )VIU_OSD_BLEND_REORDER (3 ,0 ) | + (u32 )VIU_OSD_BLEND_DIN_EN (1 ) | + (u32 )VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 | + (u32 )VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 | + (u32 )VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 | + (u32 )VIU_OSD_BLEND_BLEN2_PREMULT_EN (1 ) | + (u32 )VIU_OSD_BLEND_HOLD_LINES (4 ); +writel_relaxed (val, priv->io_base +_REG (VIU_OSD_BLEND_CTRL ));writel_relaxed (OSD_BLEND_PATH_SEL_ENABLE , priv->io_base +_REG (OSD1_BLEND_SRC_CTRL ));
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +22 -0
@@ -2605,6 +2605,27 @@ nv172_chipset = { .fifo = { 0x00000001, ga102_fifo_new }, }; +static const struct nvkm_device_chip +nv173_chipset = { + .name ="GA103" , + .bar = {0x00000001 , tu102_bar_new }, + .bios = {0x00000001 , nvkm_bios_new }, + .devinit = {0x00000001 , ga100_devinit_new }, + .fb = {0x00000001 , ga102_fb_new }, + .gpio = {0x00000001 , ga102_gpio_new }, + .i2c = {0x00000001 , gm200_i2c_new }, + .imem = {0x00000001 , nv50_instmem_new }, + .mc = {0x00000001 , ga100_mc_new }, + .mmu = {0x00000001 , tu102_mmu_new }, + .pci = {0x00000001 , gp100_pci_new }, + .privring = {0x00000001 , gm200_privring_new }, + .timer = {0x00000001 , gk20a_timer_new }, + .top = {0x00000001 , ga100_top_new }, + .disp = {0x00000001 , ga102_disp_new }, + .dma = {0x00000001 , gv100_dma_new }, + .fifo = {0x00000001 , ga102_fifo_new }, +}; +static const struct nvkm_device_chip nv174_chipset = { .name = "GA104",
@@ -3092,6 +3113,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,case 0x167 : device->chip = &nv167_chipset;break ;case 0x168 : device->chip = &nv168_chipset;break ;case 0x172 : device->chip = &nv172_chipset;break ; +case 0x173 : device->chip = &nv173_chipset;break ;case 0x174 : device->chip = &nv174_chipset;break ;case 0x176 : device->chip = &nv176_chipset;break ;case 0x177 : device->chip = &nv177_chipset;break ;
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +5 -5
@@ -531,7 +531,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi, struct drm_display_mode *mode) {struct mipi_dsi_device *device = dsi->device; -unsigned int Bpp =mipi_dsi_pixel_format_to_bpp (device->format) /8 ; +int Bpp =mipi_dsi_pixel_format_to_bpp (device->format) /8 ;u16 hbp =0 , hfp =0 , hsa =0 , hblk =0 , vblk =0 ;u32 basic_ctl =0 ;size_t bytes;
@@ -555,7 +555,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,* (4 bytes). Its minimal size is therefore 10 bytes */ #define HSA_PACKET_OVERHEAD 10 - hsa =max ((unsigned int )HSA_PACKET_OVERHEAD , + hsa =max (HSA_PACKET_OVERHEAD , (mode->hsync_end - mode->hsync_start) * Bpp -HSA_PACKET_OVERHEAD );/*
@@ -564,7 +564,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,* therefore 6 bytes */ #define HBP_PACKET_OVERHEAD 6 - hbp =max ((unsigned int )HBP_PACKET_OVERHEAD , + hbp =max (HBP_PACKET_OVERHEAD , (mode->htotal - mode->hsync_end) * Bpp -HBP_PACKET_OVERHEAD );/*
@@ -574,7 +574,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,* 16 bytes */ #define HFP_PACKET_OVERHEAD 16 - hfp =max ((unsigned int )HFP_PACKET_OVERHEAD , + hfp =max (HFP_PACKET_OVERHEAD , (mode->hsync_start - mode->hdisplay) * Bpp -HFP_PACKET_OVERHEAD );/*
@@ -583,7 +583,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,* bytes). Its minimal size is therefore 10 bytes. */ #define HBLK_PACKET_OVERHEAD 10 - hblk =max ((unsigned int )HBLK_PACKET_OVERHEAD , + hblk =max (HBLK_PACKET_OVERHEAD , (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp -HBLK_PACKET_OVERHEAD );
drivers/gpu/drm/ttm/ttm_bo.c +1 -1
@@ -987,7 +987,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,/* * We might need to add a TTM. */ -if (bo->resource->mem_type ==TTM_PL_SYSTEM ) { +if (!bo->resource || bo->resource->mem_type ==TTM_PL_SYSTEM ) { ret =ttm_tt_create (bo, true);if (ret)return ret;
drivers/hid/hid-multitouch.c +12 -1
@@ -194,6 +194,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);#define MT_CLS_WIN_8_FORCE_MULTI_INPUT 0x0015#define MT_CLS_WIN_8_DISABLE_WAKEUP 0x0016#define MT_CLS_WIN_8_NO_STICKY_FINGERS 0x0017 +#define MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU 0x0018/* vendor specific classes */ #define MT_CLS_3M 0x0101
@@ -286,6 +287,15 @@ static const struct mt_class mt_classes[] = {MT_QUIRK_WIN8_PTP_BUTTONS | MT_QUIRK_FORCE_MULTI_INPUT, .export_all_inputs = true }, + { .name = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU, + .quirks =MT_QUIRK_IGNORE_DUPLICATES | +MT_QUIRK_HOVERING | +MT_QUIRK_CONTACT_CNT_ACCURATE | +MT_QUIRK_STICKY_FINGERS | +MT_QUIRK_WIN8_PTP_BUTTONS | +MT_QUIRK_FORCE_MULTI_INPUT | + MT_QUIRK_NOT_SEEN_MEANS_UP, + .export_all_inputs = true }, { .name = MT_CLS_WIN_8_DISABLE_WAKEUP, .quirks =MT_QUIRK_ALWAYS_VALID | MT_QUIRK_IGNORE_DUPLICATES |
@@ -783,6 +793,7 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,case HID_DG_CONFIDENCE :if ((cls->name ==MT_CLS_WIN_8 || cls->name ==MT_CLS_WIN_8_FORCE_MULTI_INPUT || + cls->name ==MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU || cls->name ==MT_CLS_WIN_8_DISABLE_WAKEUP ) && (field->application ==HID_DG_TOUCHPAD || field->application ==HID_DG_TOUCHSCREEN ))
@@ -2033,7 +2044,7 @@ static const struct hid_device_id mt_devices[] = { USB_DEVICE_ID_LENOVO_X1_TAB3) },/* Lenovo X12 TAB Gen 1 */ - { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,HID_DEVICE (BUS_USB ,HID_GROUP_MULTITOUCH_WIN_8 ,USB_VENDOR_ID_LENOVO , USB_DEVICE_ID_LENOVO_X12_TAB) },
drivers/hwtracing/coresight/coresight-etm4x.h +2 -1
@@ -7,6 +7,7 @@#define _CORESIGHT_CORESIGHT_ETM_H#include <asm/local.h> +#include <linux/const.h> #include <linux/spinlock.h> #include <linux/types.h> #include "coresight-priv.h"
@@ -417,7 +418,7 @@ ({ \ u64 __val; \ \ - if (__builtin_constant_p((offset))) \ + if (__is_constexpr((offset))) \ __val = read_etm4x_sysreg_const_offset((offset)); \ else \ __val = etm4x_sysreg_read((offset), true, (_64bit)); \
drivers/i2c/busses/i2c-imx.c +11 -9
@@ -1487,9 +1487,7 @@ static int i2c_imx_remove(struct platform_device *pdev)struct imx_i2c_struct *i2c_imx =platform_get_drvdata (pdev);int irq, ret; - ret =pm_runtime_resume_and_get (&pdev->dev); -if (ret <0 ) -return ret; + ret =pm_runtime_get_sync (&pdev->dev);/* remove adapter */ dev_dbg (&i2c_imx->adapter.dev,"adapter removed\n" );
@@ -1498,17 +1496,21 @@ static int i2c_imx_remove(struct platform_device *pdev)if (i2c_imx->dma)i2c_imx_dma_free (i2c_imx); -/* setup chip registers to defaults */ -imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_IADR ); -imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_IFDR ); -imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_I2CR ); -imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_I2SR ); +if (ret ==0 ) { +/* setup chip registers to defaults */ +imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_IADR ); +imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_IFDR ); +imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_I2CR ); +imx_i2c_write_reg (0 , i2c_imx,IMX_I2C_I2SR ); +clk_disable (i2c_imx->clk); + }clk_notifier_unregister (i2c_imx->clk, &i2c_imx->clk_change_nb); irq =platform_get_irq (pdev,0 );if (irq >=0 )free_irq (irq, i2c_imx); -clk_disable_unprepare (i2c_imx->clk); + +clk_unprepare (i2c_imx->clk);pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev);
drivers/infiniband/sw/rxe/rxe_param.h +6 -0
@@ -103,6 +103,12 @@ enum rxe_device_param {RXE_INFLIGHT_SKBS_PER_QP_HIGH =64 ,RXE_INFLIGHT_SKBS_PER_QP_LOW =16 , +/* Max number of interations of each tasklet +* before yielding the cpu to let other +* work make progress +*/ +RXE_MAX_ITERATIONS =1024 , +/* Delay before calling arbiter timer */ RXE_NSEC_ARB_TIMER_DELAY = 200,
drivers/infiniband/sw/rxe/rxe_task.c +12 -4
@@ -8,7 +8,7 @@#include <linux/interrupt.h> #include <linux/hardirq.h> -#include "rxe_task.h" +#include "rxe.h" int __rxe_do_task (struct rxe_task *task)
@@ -34,6 +34,7 @@ void rxe_do_task(struct tasklet_struct *t)int ret;unsigned long flags;struct rxe_task *task =from_tasklet (task, t, tasklet); +unsigned int iterations =RXE_MAX_ITERATIONS ;spin_lock_irqsave (&task->state_lock, flags);switch (task->state) {
@@ -62,13 +63,20 @@ void rxe_do_task(struct tasklet_struct *t)spin_lock_irqsave (&task->state_lock, flags);switch (task->state) {case TASK_STATE_BUSY : -if (ret) +if (ret) { task->state =TASK_STATE_START ; -else + }else if (iterations--) { cont =1 ; + }else { +/* reschedule the tasklet and exit +* the loop to give up the cpu +*/ +tasklet_schedule (&task->tasklet); + task->state =TASK_STATE_START ; + }break ; -/* soneone tried to run the task since the last time we called +/* someone tried to run the task since the last time we called * func, so we will call one more time regardless of the * return value */
drivers/input/touchscreen/exc3000.c +4 -3
@@ -220,6 +220,7 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request, {u8 buf[EXC3000_LEN_VENDOR_REQUEST ] = {0x67 ,0x00 ,0x42 ,0x00 ,0x03 };int ret; +unsigned long time_left;mutex_lock (&data->query_lock);
@@ -233,9 +234,9 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request, goto out_unlock;if (response) { - ret =wait_for_completion_timeout (&data->wait_event, - timeout *HZ ); -if (ret <=0 ) { + time_left =wait_for_completion_timeout (&data->wait_event, + timeout *HZ ); +if (time_left ==0 ) { ret = -ETIMEDOUT ; goto out_unlock; }
drivers/iommu/io-pgtable-arm-v7s.c +56 -19
142 lines not on this page · raw message
drivers/irqchip/irq-tegra.c +5 -5
@@ -148,10 +148,10 @@ static int tegra_ictlr_suspend(void) lic->cop_iep[i] =readl_relaxed (ictlr +ICTLR_COP_IEP_CLASS );/* Disable COP interrupts */ -writel_relaxed (~0ul , ictlr +ICTLR_COP_IER_CLR ); +writel_relaxed (GENMASK (31 ,0 ), ictlr +ICTLR_COP_IER_CLR );/* Disable CPU interrupts */ -writel_relaxed (~0ul , ictlr +ICTLR_CPU_IER_CLR ); +writel_relaxed (GENMASK (31 ,0 ), ictlr +ICTLR_CPU_IER_CLR );/* Enable the wakeup sources of ictlr */ writel_relaxed (lic->ictlr_wake_mask[i], ictlr +ICTLR_CPU_IER_SET );
@@ -172,12 +172,12 @@ static void tegra_ictlr_resume(void)writel_relaxed (lic->cpu_iep[i], ictlr +ICTLR_CPU_IEP_CLASS ); -writel_relaxed (~0ul , ictlr +ICTLR_CPU_IER_CLR ); +writel_relaxed (GENMASK (31 ,0 ), ictlr +ICTLR_CPU_IER_CLR );writel_relaxed (lic->cpu_ier[i], ictlr +ICTLR_CPU_IER_SET );writel_relaxed (lic->cop_iep[i], ictlr +ICTLR_COP_IEP_CLASS ); -writel_relaxed (~0ul , ictlr +ICTLR_COP_IER_CLR ); +writel_relaxed (GENMASK (31 ,0 ), ictlr +ICTLR_COP_IER_CLR );writel_relaxed (lic->cop_ier[i], ictlr +ICTLR_COP_IER_SET ); }
@@ -312,7 +312,7 @@ static int __init tegra_ictlr_init(struct device_node *node, lic->base[i] = base;/* Disable all interrupts */ -writel_relaxed (~0UL , base +ICTLR_CPU_IER_CLR ); +writel_relaxed (GENMASK (31 ,0 ), base +ICTLR_CPU_IER_CLR );/* All interrupts target IRQ */ writel_relaxed (0 , base +ICTLR_CPU_IEP_CLASS );
drivers/md/md.c +1 -0
@@ -9467,6 +9467,7 @@ void md_reap_sync_thread(struct mddev *mddev)wake_up (&resync_wait);/* flag recovery needed just to double check */ set_bit (MD_RECOVERY_NEEDED , &mddev->recovery); +sysfs_notify_dirent_safe (mddev->sysfs_completed);sysfs_notify_dirent_safe (mddev->sysfs_action);md_new_event (mddev);if (mddev->event_work.func)
drivers/md/raid5.c +1 -1
@@ -2864,10 +2864,10 @@ static void raid5_end_write_request(struct bio *bi)if (!test_and_clear_bit (R5_DOUBLE_LOCKED , &sh->dev[i].flags))clear_bit (R5_LOCKED , &sh->dev[i].flags);set_bit (STRIPE_HANDLE , &sh->state); -raid5_release_stripe (sh);if (sh->batch_head && sh != sh->batch_head)raid5_release_stripe (sh->batch_head); +raid5_release_stripe (sh); }static void raid5_error (struct mddev *mddev,struct md_rdev *rdev)
drivers/media/platform/qcom/venus/pm_helpers.c +5 -5
@@ -875,7 +875,7 @@ static int vcodec_domains_get(struct venus_core *core) } skip_pmdomains: -if (!core->has_opp_table) +if (!core->res->opp_pmdomain)return 0 ;/* Attach the power domain for setting performance state */
@@ -1007,6 +1007,10 @@ static int core_get_v4(struct venus_core *core)if (ret)return ret; + ret =vcodec_domains_get (core); +if (ret) +return ret; +if (core->res->opp_pmdomain) { ret =devm_pm_opp_of_add_table (dev);if (!ret) {
@@ -1017,10 +1021,6 @@ static int core_get_v4(struct venus_core *core) } } - ret =vcodec_domains_get (core); -if (ret) -return ret; -return 0 ; }
drivers/misc/cxl/irq.c +1 -0
@@ -349,6 +349,7 @@ int afu_allocate_irqs(struct cxl_context *ctx, u32 count) out: cxl_ops->release_irq_ranges (&ctx->irqs, ctx->afu->adapter); +bitmap_free (ctx->irq_bitmap);afu_irq_name_free (ctx);return -ENOMEM ; }
drivers/misc/habanalabs/gaudi/gaudi.c +13 -11
@@ -3318,19 +3318,19 @@ static void gaudi_init_nic_qman(struct hl_device *hdev, u32 nic_offset,u32 nic_qm_err_cfg, irq_handler_offset;u32 q_off; - mtr_base_en_lo =lower_32_bits (CFG_BASE + + mtr_base_en_lo =lower_32_bits ((CFG_BASE &U32_MAX ) + mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0); mtr_base_en_hi =upper_32_bits (CFG_BASE + mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0); - so_base_en_lo =lower_32_bits (CFG_BASE + + so_base_en_lo =lower_32_bits ((CFG_BASE &U32_MAX ) + mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_SOB_OBJ_0); so_base_en_hi =upper_32_bits (CFG_BASE + mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_SOB_OBJ_0); - mtr_base_ws_lo =lower_32_bits (CFG_BASE + + mtr_base_ws_lo =lower_32_bits ((CFG_BASE &U32_MAX ) + mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0); mtr_base_ws_hi =upper_32_bits (CFG_BASE + mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0); - so_base_ws_lo =lower_32_bits (CFG_BASE + + so_base_ws_lo =lower_32_bits ((CFG_BASE &U32_MAX ) + mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_SOB_OBJ_0); so_base_ws_hi =upper_32_bits (CFG_BASE + mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_SOB_OBJ_0);
@@ -5744,15 +5744,17 @@ static int gaudi_parse_cb_no_ext_queue(struct hl_device *hdev, {struct asic_fixed_properties *asic_prop = &hdev->asic_prop;struct gaudi_device *gaudi = hdev->asic_specific; -u32 nic_mask_q_id =1 << (HW_CAP_NIC_SHIFT + - ((parser->hw_queue_id -GAUDI_QUEUE_ID_NIC_0_0 ) >>2 )); +u32 nic_queue_offset, nic_mask_q_id;if ((parser->hw_queue_id >=GAUDI_QUEUE_ID_NIC_0_0 ) && - (parser->hw_queue_id <=GAUDI_QUEUE_ID_NIC_9_3 ) && - (!(gaudi->hw_cap_initialized & nic_mask_q_id))) { -dev_err (hdev->dev,"h/w queue %d is disabled\n" , - parser->hw_queue_id); -return -EINVAL ; + (parser->hw_queue_id <=GAUDI_QUEUE_ID_NIC_9_3 )) { + nic_queue_offset = parser->hw_queue_id -GAUDI_QUEUE_ID_NIC_0_0 ; + nic_mask_q_id =1 << (HW_CAP_NIC_SHIFT + (nic_queue_offset >>2 )); + +if (!(gaudi->hw_cap_initialized & nic_mask_q_id)) { +dev_err (hdev->dev,"h/w queue %d is disabled\n" , parser->hw_queue_id); +return -EINVAL ; + } }/* For internal queue jobs just check if CB address is valid */
drivers/misc/uacce/uacce.c +87 -46
252 lines not on this page · raw message
drivers/mmc/host/meson-gx-mmc.c +4 -2
@@ -1172,8 +1172,10 @@ static int meson_mmc_probe(struct platform_device *pdev) } ret =device_reset_optional (&pdev->dev); -if (ret) -return dev_err_probe (&pdev->dev, ret,"device reset failed\n" ); +if (ret) { +dev_err_probe (&pdev->dev, ret,"device reset failed\n" ); + goto free_host; + } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); host->regs =devm_ioremap_resource (&pdev->dev, res);
drivers/mmc/host/pxamci.c +2 -2
@@ -648,7 +648,7 @@ static int pxamci_probe(struct platform_device *pdev) ret =pxamci_of_init (pdev, mmc);if (ret) -return ret; + goto out; host =mmc_priv (mmc); host->mmc = mmc;
@@ -672,7 +672,7 @@ static int pxamci_probe(struct platform_device *pdev) ret =pxamci_init_ocr (host);if (ret <0 ) -return ret; + goto out; mmc->caps =0 ; host->cmdat =0 ;
drivers/mmc/host/renesas_sdhi_core.c +14 -15
@@ -51,9 +51,6 @@#define HOST_MODE_GEN3_32BIT (HOST_MODE_GEN3_WMODE | HOST_MODE_GEN3_BUSWIDTH)#define HOST_MODE_GEN3_64BIT 0 -#define CTL_SDIF_MODE 0xe6 -#define SDIF_MODE_HS400 BIT(0) -#define SDHI_VER_GEN2_SDR50 0x490c#define SDHI_VER_RZ_A1 0x820b/* very old datasheets said 0x490c for SDR104, too. They are wrong! */
@@ -550,23 +547,25 @@ static void renesas_sdhi_scc_reset(struct tmio_mmc_host *host, struct renesas_sd }/* only populated for TMIO_MMC_MIN_RCAR2 */ -static void renesas_sdhi_reset (struct tmio_mmc_host *host) +static void renesas_sdhi_reset (struct tmio_mmc_host *host,bool preserve) {struct renesas_sdhi *priv =host_to_priv (host);int ret;u16 val; -if (priv->rstc) { -reset_control_reset (priv->rstc); -/* Unknown why but without polling reset status, it will hang */ -read_poll_timeout (reset_control_status, ret, ret ==0 ,1 ,100 , - false, priv->rstc); -/* At least SDHI_VER_GEN2_SDR50 needs manual release of reset */ -sd_ctrl_write16 (host,CTL_RESET_SD ,0x0001 ); - priv->needs_adjust_hs400 = false; -renesas_sdhi_set_clock (host, host->clk_cache); - }else if (priv->scc_ctl) { -renesas_sdhi_scc_reset (host, priv); +if (!preserve) { +if (priv->rstc) { +reset_control_reset (priv->rstc); +/* Unknown why but without polling reset status, it will hang */ +read_poll_timeout (reset_control_status, ret, ret ==0 ,1 ,100 , + false, priv->rstc); +/* At least SDHI_VER_GEN2_SDR50 needs manual release of reset */ +sd_ctrl_write16 (host,CTL_RESET_SD ,0x0001 ); + priv->needs_adjust_hs400 = false; +renesas_sdhi_set_clock (host, host->clk_cache); + }else if (priv->scc_ctl) { +renesas_sdhi_scc_reset (host, priv); + } }if (sd_ctrl_read16 (host,CTL_VERSION ) >=SDHI_VER_GEN3_SD ) {
drivers/mmc/host/tmio_mmc.c +1 -1
@@ -75,7 +75,7 @@ static void tmio_mmc_set_clock(struct tmio_mmc_host *host,tmio_mmc_clk_start (host); } -static void tmio_mmc_reset (struct tmio_mmc_host *host) +static void tmio_mmc_reset (struct tmio_mmc_host *host,bool preserve) {sd_ctrl_write16 (host,CTL_RESET_SDIO ,0x0000 );usleep_range (10000 ,11000 );
drivers/mmc/host/tmio_mmc.h +5 -1
@@ -42,6 +42,7 @@#define CTL_DMA_ENABLE 0xd8#define CTL_RESET_SD 0xe0#define CTL_VERSION 0xe2 +#define CTL_SDIF_MODE 0xe6/* only known on R-Car 2+ */ /* Definitions for values the CTL_STOP_INTERNAL_ACTION register can take */ #define TMIO_STOP_STP BIT(0)
@@ -98,6 +99,9 @@/* Definitions for values the CTL_DMA_ENABLE register can take */ #define DMA_ENABLE_DMASDRW BIT(1) +/* Definitions for values the CTL_SDIF_MODE register can take */ +#define SDIF_MODE_HS400 BIT(0)/* only known on R-Car 2+ */ +/* Define some IRQ masks */ /* This is the mask used at reset by the chip */ #define TMIO_MASK_ALL 0x837f031d
@@ -181,7 +185,7 @@ struct tmio_mmc_host {int (*multi_io_quirk)(struct mmc_card *card,unsigned int direction,int blk_size);int (*write16_hook)(struct tmio_mmc_host *host,int addr); -void (*reset)(struct tmio_mmc_host *host); +void (*reset)(struct tmio_mmc_host *host,bool preserve);bool (*check_retune)(struct tmio_mmc_host *host,struct mmc_request *mrq);void (*fixup_request)(struct tmio_mmc_host *host,struct mmc_request *mrq);unsigned int (*get_timeout_cycles)(struct tmio_mmc_host *host);
drivers/mmc/host/tmio_mmc_core.c +22 -6
@@ -179,8 +179,17 @@ static void tmio_mmc_set_bus_width(struct tmio_mmc_host *host,sd_ctrl_write16 (host,CTL_SD_MEM_CARD_OPT , reg); } -static void tmio_mmc_reset (struct tmio_mmc_host *host) +static void tmio_mmc_reset (struct tmio_mmc_host *host,bool preserve) { +u16 card_opt, clk_ctrl, sdif_mode; + +if (preserve) { + card_opt =sd_ctrl_read16 (host,CTL_SD_MEM_CARD_OPT ); + clk_ctrl =sd_ctrl_read16 (host,CTL_SD_CARD_CLK_CTL ); +if (host->pdata->flags &TMIO_MMC_MIN_RCAR2 ) + sdif_mode =sd_ctrl_read16 (host,CTL_SDIF_MODE ); + } +/* FIXME - should we set stop clock reg here */ sd_ctrl_write16 (host,CTL_RESET_SD ,0x0000 );usleep_range (10000 ,11000 );
@@ -190,7 +199,7 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)tmio_mmc_abort_dma (host);if (host->reset) - host->reset (host); + host->reset (host, preserve);sd_ctrl_write32_as_16_and_16 (host,CTL_IRQ_MASK , host->sdcard_irq_mask_all); host->sdcard_irq_mask = host->sdcard_irq_mask_all;
@@ -206,6 +215,13 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)sd_ctrl_write16 (host,CTL_TRANSACTION_CTL ,0x0001 ); } +if (preserve) { +sd_ctrl_write16 (host,CTL_SD_MEM_CARD_OPT , card_opt); +sd_ctrl_write16 (host,CTL_SD_CARD_CLK_CTL , clk_ctrl); +if (host->pdata->flags &TMIO_MMC_MIN_RCAR2 ) +sd_ctrl_write16 (host,CTL_SDIF_MODE , sdif_mode); + } +if (host->mmc->card)mmc_retune_needed (host->mmc); }
@@ -248,7 +264,7 @@ static void tmio_mmc_reset_work(struct work_struct *work)spin_unlock_irqrestore (&host->lock, flags); -tmio_mmc_reset (host); +tmio_mmc_reset (host, true);/* Ready for new calls */ host->mrq =NULL ;
@@ -961,7 +977,7 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)tmio_mmc_power_off (host);/* For R-Car Gen2+, we need to reset SDHI specific SCC */ if (host->pdata->flags &TMIO_MMC_MIN_RCAR2 ) -tmio_mmc_reset (host); +tmio_mmc_reset (host, false); host->set_clock (host,0 );break ;
@@ -1189,7 +1205,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host) _host->sdcard_irq_mask_all =TMIO_MASK_ALL ; _host->set_clock (_host,0 ); -tmio_mmc_reset (_host); +tmio_mmc_reset (_host, false);spin_lock_init (&_host->lock);mutex_init (&_host->ios_lock);
@@ -1285,7 +1301,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev)struct tmio_mmc_host *host =dev_get_drvdata (dev);tmio_mmc_clk_enable (host); -tmio_mmc_reset (host); +tmio_mmc_reset (host, false);if (host->clk_cache) host->set_clock (host, host->clk_cache);
drivers/net/can/spi/mcp251x.c +15 -3
@@ -1074,9 +1074,6 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)mcp251x_read_2regs (spi,CANINTF , &intf, &eflag); -/* mask out flags we don't care about */ - intf &=CANINTF_RX |CANINTF_TX |CANINTF_ERR ; -/* receive buffer 0 */ if (intf &CANINTF_RX0IF ) {mcp251x_hw_rx (spi,0 );
@@ -1086,6 +1083,18 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)if (mcp251x_is_2510 (spi))mcp251x_write_bits (spi,CANINTF ,CANINTF_RX0IF ,0x00 ); + +/* check if buffer 1 is already known to be full, no need to re-read */ +if (!(intf &CANINTF_RX1IF )) { +u8 intf1, eflag1; + +/* intf needs to be read again to avoid a race condition */ +mcp251x_read_2regs (spi,CANINTF , &intf1, &eflag1); + +/* combine flags from both operations for error handling */ + intf |= intf1; + eflag |= eflag1; + } }/* receive buffer 1 */
@@ -1096,6 +1105,9 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id) clear_intf |=CANINTF_RX1IF ; } +/* mask out flags we don't care about */ + intf &=CANINTF_RX |CANINTF_TX |CANINTF_ERR ; +/* any error or tx interrupt we need to clear? */ if (intf & (CANINTF_ERR |CANINTF_TX )) clear_intf |= intf & (CANINTF_ERR |CANINTF_TX );
drivers/net/can/usb/ems_usb.c +1 -1
@@ -194,7 +194,7 @@ struct __packed ems_cpc_msg {__le32 ts_sec;/* timestamp in seconds */ __le32 ts_nsec;/* timestamp in nano seconds */ -union { +union __packed {u8 generic[64 ];struct cpc_can_msg can_msg;struct cpc_can_params can_params;
drivers/net/dsa/microchip/ksz9477.c +3 -0
@@ -759,6 +759,9 @@ static int ksz9477_port_fdb_dump(struct dsa_switch *ds, int port, goto exit; } +if (!(ksz_data &ALU_VALID )) +continue ; +/* read ALU table */ ksz9477_read_table (dev, alu_table);
drivers/net/dsa/mv88e6060.c +3 -0
@@ -118,6 +118,9 @@ static int mv88e6060_setup_port(struct mv88e6060_priv *priv, int p)int addr =REG_PORT (p);int ret; +if (dsa_is_unused_port (priv->ds, p)) +return 0 ; +/* Do not force flow control, disable Ingress and Egress * Header tagging, disable VLAN tunneling, and set the port * state to Forwarding. Additionally, if this is the CPU
drivers/net/dsa/ocelot/felix_vsc9959.c +2 -1
@@ -578,7 +578,8 @@ static const struct ocelot_stat_layout vsc9959_stats_layout[] = { { .offset = 0x87, .name = "tx_frames_below_65_octets", }, { .offset = 0x88, .name = "tx_frames_65_to_127_octets", }, { .offset = 0x89, .name = "tx_frames_128_255_octets", }, - { .offset = 0x8B, .name = "tx_frames_256_511_octets", }, + { .offset = 0x8A, .name = "tx_frames_256_511_octets", }, + { .offset = 0x8B, .name = "tx_frames_512_1023_octets", }, { .offset = 0x8C, .name = "tx_frames_1024_1526_octets", }, { .offset = 0x8D, .name = "tx_frames_over_1526_octets", }, { .offset = 0x8E, .name = "tx_yellow_prio_0", },
drivers/net/dsa/sja1105/sja1105_devlink.c +1 -1
@@ -93,7 +93,7 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds) region =dsa_devlink_region_create (ds, ops,1 , size);if (IS_ERR (region)) { -while (i-- >=0 ) +while (--i >=0 )dsa_devlink_region_destroy (priv->regions[i]);return PTR_ERR (region); }
drivers/net/ethernet/aquantia/atlantic/aq_nic.c +8 -13
@@ -265,12 +265,10 @@ static void aq_nic_service_timer_cb(struct timer_list *t)static void aq_nic_polling_timer_cb (struct timer_list *t) {struct aq_nic_s *self =from_timer (self, t, polling_timer); -struct aq_vec_s *aq_vec =NULL ;unsigned int i =0U ; -for (i =0U , aq_vec = self->aq_vec[0 ]; - self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i]) -aq_vec_isr (i, (void *)aq_vec); +for (i =0U ; self->aq_vecs > i; ++i) +aq_vec_isr (i, (void *)self->aq_vec[i]);mod_timer (&self->polling_timer, jiffies +AQ_CFG_POLLING_TIMER_INTERVAL );
@@ -872,7 +870,6 @@ int aq_nic_get_regs_count(struct aq_nic_s *self)u64 *aq_nic_get_stats (struct aq_nic_s *self,u64 *data) { -struct aq_vec_s *aq_vec =NULL ;struct aq_stats_s *stats;unsigned int count =0U ;unsigned int i =0U ;
@@ -922,11 +919,11 @@ u64 *aq_nic_get_stats(struct aq_nic_s *self, u64 *data) data += i;for (tc =0U ; tc < self->aq_nic_cfg.tcs; tc++) { -for (i =0U , aq_vec = self->aq_vec[0 ]; - aq_vec && self->aq_vecs > i; - ++i, aq_vec = self->aq_vec[i]) { +for (i =0U ; self->aq_vecs > i; ++i) { +if (!self->aq_vec[i]) +break ; data += count; - count =aq_vec_get_sw_stats (aq_vec, tc, data); + count =aq_vec_get_sw_stats (self->aq_vec[i], tc, data); } }
@@ -1240,7 +1237,6 @@ int aq_nic_set_loopback(struct aq_nic_s *self)int aq_nic_stop (struct aq_nic_s *self) { -struct aq_vec_s *aq_vec =NULL ;unsigned int i =0U ;netif_tx_disable (self->ndev);
@@ -1258,9 +1254,8 @@ int aq_nic_stop(struct aq_nic_s *self)aq_ptp_irq_free (self); -for (i =0U , aq_vec = self->aq_vec[0 ]; - self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i]) -aq_vec_stop (aq_vec); +for (i =0U ; self->aq_vecs > i; ++i) +aq_vec_stop (self->aq_vec[i]);aq_ptp_ring_stop (self);
drivers/net/ethernet/broadcom/bgmac.c +1 -1
@@ -189,8 +189,8 @@ static netdev_tx_t bgmac_dma_tx_add(struct bgmac *bgmac, } slot->skb = skb; - ring->end += nr_frags +1 ;netdev_sent_queue (net_dev, skb->len); + ring->end += nr_frags +1 ;wmb ();
drivers/net/ethernet/broadcom/genet/bcmmii.c +3 -0
@@ -361,6 +361,9 @@ int bcmgenet_mii_probe(struct net_device *dev)if (priv->internal_phy && !GENET_IS_V5 (priv)) dev->phydev->irq =PHY_MAC_INTERRUPT ; +/* Indicate that the MAC is responsible for PHY PM */ + dev->phydev->mac_managed_pm = true; +return 0 ; }
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +2 -2
@@ -1389,8 +1389,8 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, buf_array[i] = addr;/* tracing point */ -trace_dpaa2_eth_buf_seed (priv->net_dev, - page,DPAA2_ETH_RX_BUF_RAW_SIZE , +trace_dpaa2_eth_buf_seed (priv->net_dev,page_address (page), +DPAA2_ETH_RX_BUF_RAW_SIZE , addr, priv->rx_buf_size, bpid); }
drivers/net/ethernet/freescale/fec_ptp.c +1 -5
@@ -136,11 +136,7 @@ static int fec_ptp_enable_pps(struct fec_enet_private *fep, uint enable)* NSEC_PER_SEC - ts.tv_nsec. Add the remaining nanoseconds * to current timer would be next second. */ - tempval =readl (fep->hwp +FEC_ATIME_CTRL ); - tempval |=FEC_T_CTRL_CAPTURE ; -writel (tempval, fep->hwp +FEC_ATIME_CTRL ); - - tempval =readl (fep->hwp +FEC_ATIME ); + tempval = fep->cc.read (&fep->cc);/* Convert the ptp local counter to 1588 timestamp */ ns =timecounter_cyc2time (&fep->tc, tempval); ts =ns_to_timespec64 (ns);
drivers/net/ethernet/intel/i40e/i40e_main.c +3 -1
@@ -383,7 +383,9 @@ static void i40e_tx_timeout(struct net_device *netdev, unsigned int txqueue)set_bit (__I40E_GLOBAL_RESET_REQUESTED, pf->state);break ;default : -netdev_err (netdev,"tx_timeout recovery unsuccessful\n" ); +netdev_err (netdev,"tx_timeout recovery unsuccessful, device is in non-recoverable state.\n" ); +set_bit (__I40E_DOWN_REQUESTED, pf->state); +set_bit (__I40E_VSI_DOWN_REQUESTED, vsi->state);break ; }
drivers/net/ethernet/intel/iavf/iavf_adminq.c +13 -2
@@ -324,6 +324,7 @@ static enum iavf_status iavf_config_arq_regs(struct iavf_hw *hw)static enum iavf_status iavf_init_asq (struct iavf_hw *hw) {enum iavf_status ret_code =0 ; +int i;if (hw->aq.asq.count >0 ) {/* queue already initialized */
@@ -354,12 +355,17 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)/* initialize base registers */ ret_code =iavf_config_asq_regs (hw);if (ret_code) - goto init_adminq_free_rings; + goto init_free_asq_bufs;/* success! */ hw->aq.asq.count = hw->aq.num_asq_entries; goto init_adminq_exit; +init_free_asq_bufs: +for (i =0 ; i < hw->aq.num_asq_entries; i++) +iavf_free_dma_mem (hw, &hw->aq.asq.r.asq_bi[i]); +iavf_free_virt_mem (hw, &hw->aq.asq.dma_head); + init_adminq_free_rings:iavf_free_adminq_asq (hw);
@@ -383,6 +389,7 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)static enum iavf_status iavf_init_arq (struct iavf_hw *hw) {enum iavf_status ret_code =0 ; +int i;if (hw->aq.arq.count >0 ) {/* queue already initialized */
@@ -413,12 +420,16 @@ static enum iavf_status iavf_init_arq(struct iavf_hw *hw)/* initialize base registers */ ret_code =iavf_config_arq_regs (hw);if (ret_code) - goto init_adminq_free_rings; + goto init_free_arq_bufs;/* success! */ hw->aq.arq.count = hw->aq.num_arq_entries; goto init_adminq_exit; +init_free_arq_bufs: +for (i =0 ; i < hw->aq.num_arq_entries; i++) +iavf_free_dma_mem (hw, &hw->aq.arq.r.arq_bi[i]); +iavf_free_virt_mem (hw, &hw->aq.arq.dma_head); init_adminq_free_rings:iavf_free_adminq_arq (hw);
drivers/net/ethernet/intel/iavf/iavf_main.c +6 -3
@@ -2414,12 +2414,15 @@ static void iavf_reset_task(struct work_struct *work)return ; reset_err: +if (running) { +set_bit (__IAVF_VSI_DOWN, adapter->vsi.state); +iavf_free_traffic_irqs (adapter); + } +iavf_disable_vf (adapter); +mutex_unlock (&adapter->client_lock);mutex_unlock (&adapter->crit_lock); -if (running) -iavf_change_state (adapter, __IAVF_RUNNING);dev_err (&adapter->pdev->dev,"failed to allocate resources during reinit\n" ); -iavf_close (netdev); }/**
drivers/net/ethernet/intel/ice/ice_switch.c +1 -1
@@ -2614,7 +2614,7 @@ ice_set_vlan_vsi_promisc(struct ice_hw *hw, u16 vsi_handle, u8 promisc_mask,else status =ice_set_vsi_promisc (hw, vsi_handle, promisc_mask, vlan_id); -if (status) +if (status && status != -EEXIST )break ; }
drivers/net/ethernet/intel/igb/igb.h +2 -0
@@ -664,6 +664,8 @@ struct igb_adapter {struct igb_mac_addr *mac_table;struct vf_mac_filter vf_macs;struct vf_mac_filter *vf_mac_list; +/* lock for VF resources */ +spinlock_t vfs_lock; };/* flags controlling PTP/1588 function */
drivers/net/ethernet/intel/igb/igb_main.c +11 -1
@@ -3637,6 +3637,7 @@ static int igb_disable_sriov(struct pci_dev *pdev)struct net_device *netdev =pci_get_drvdata (pdev);struct igb_adapter *adapter =netdev_priv (netdev);struct e1000_hw *hw = &adapter->hw; +unsigned long flags;/* reclaim resources allocated to VFs */ if (adapter->vf_data) {
@@ -3649,12 +3650,13 @@ static int igb_disable_sriov(struct pci_dev *pdev)pci_disable_sriov (pdev);msleep (500 ); } - +spin_lock_irqsave (&adapter->vfs_lock, flags);kfree (adapter->vf_mac_list); adapter->vf_mac_list =NULL ;kfree (adapter->vf_data); adapter->vf_data =NULL ; adapter->vfs_allocated_count =0 ; +spin_unlock_irqrestore (&adapter->vfs_lock, flags);wr32 (E1000_IOVCTL ,E1000_IOVCTL_REUSE_VFQ );wrfl ();msleep (100 );
@@ -3814,7 +3816,9 @@ static void igb_remove(struct pci_dev *pdev)igb_release_hw_control (adapter);#ifdef CONFIG_PCI_IOV +rtnl_lock ();igb_disable_sriov (pdev); +rtnl_unlock ();#endif unregister_netdev (netdev);
@@ -3974,6 +3978,9 @@ static int igb_sw_init(struct igb_adapter *adapter)spin_lock_init (&adapter->nfc_lock);spin_lock_init (&adapter->stats64_lock); + +/* init spinlock to avoid concurrency of VF resources */ +spin_lock_init (&adapter->vfs_lock);#ifdef CONFIG_PCI_IOV switch (hw->mac.type) {case e1000_82576:
@@ -7846,8 +7853,10 @@ static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)static void igb_msg_task (struct igb_adapter *adapter) {struct e1000_hw *hw = &adapter->hw; +unsigned long flags;u32 vf; +spin_lock_irqsave (&adapter->vfs_lock, flags);for (vf =0 ; vf < adapter->vfs_allocated_count; vf++) {/* process any reset requests */ if (!igb_check_for_rst (hw, vf))
@@ -7861,6 +7870,7 @@ static void igb_msg_task(struct igb_adapter *adapter)if (!igb_check_for_ack (hw, vf))igb_rcv_ack_from_vf (adapter, vf); } +spin_unlock_irqrestore (&adapter->vfs_lock, flags); }/**
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +6 -0
@@ -2504,6 +2504,12 @@ static void __rvu_flr_handler(struct rvu *rvu, u16 pcifunc)rvu_blklf_teardown (rvu, pcifunc,BLKADDR_NPA );rvu_reset_lmt_map_tbl (rvu, pcifunc);rvu_detach_rsrcs (rvu,NULL , pcifunc); +/* In scenarios where PF/VF drivers detach NIXLF without freeing MCAM +* entries, check and free the MCAM entries explicitly to avoid leak. +* Since LF is detached use LF number as -1. +*/ +rvu_npc_free_mcam_entries (rvu, pcifunc,-1 ); +mutex_unlock (&rvu->flr_lock); }
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +11 -4
@@ -1096,6 +1096,9 @@ static void npc_enadis_default_entries(struct rvu *rvu, u16 pcifunc,void rvu_npc_disable_default_entries (struct rvu *rvu,u16 pcifunc,int nixlf) { +if (nixlf <0 ) +return ; +npc_enadis_default_entries (rvu, pcifunc, nixlf, false);/* Delete multicast and promisc MCAM entries */
@@ -1107,6 +1110,9 @@ void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)void rvu_npc_enable_default_entries (struct rvu *rvu,u16 pcifunc,int nixlf) { +if (nixlf <0 ) +return ; +/* Enables only broadcast match entry. Promisc/Allmulti are enabled * in set_rx_mode mbox handler. */
@@ -1650,7 +1656,7 @@ static void npc_load_kpu_profile(struct rvu *rvu)* Firmware database method. * Default KPU profile. */ -if (!request_firmware (&fw, kpu_profile, rvu->dev)) { +if (!request_firmware_direct (&fw, kpu_profile, rvu->dev)) {dev_info (rvu->dev,"Loading KPU profile from firmware: %s\n" , kpu_profile); rvu->kpu_fwdata =kzalloc (fw->size,GFP_KERNEL );
@@ -1915,6 +1921,7 @@ static void rvu_npc_hw_init(struct rvu *rvu, int blkaddr)static void rvu_npc_setup_interfaces (struct rvu *rvu,int blkaddr) { +struct npc_mcam_kex *mkex = rvu->kpu.mkex;struct npc_mcam *mcam = &rvu->hw->mcam;struct rvu_hwinfo *hw = rvu->hw;u64 nibble_ena, rx_kex, tx_kex;
@@ -1927,15 +1934,15 @@ static void rvu_npc_setup_interfaces(struct rvu *rvu, int blkaddr) mcam->counters.max--; mcam->rx_miss_act_cntr = mcam->counters.max; - rx_kex = npc_mkex_default.keyx_cfg[NIX_INTF_RX ]; - tx_kex = npc_mkex_default.keyx_cfg[NIX_INTF_TX ]; + rx_kex = mkex->keyx_cfg[NIX_INTF_RX ]; + tx_kex = mkex->keyx_cfg[NIX_INTF_TX ]; nibble_ena =FIELD_GET (NPC_PARSE_NIBBLE , rx_kex); nibble_ena =rvu_npc_get_tx_nibble_cfg (rvu, nibble_ena);if (nibble_ena) { tx_kex &= ~NPC_PARSE_NIBBLE ; tx_kex |=FIELD_PREP (NPC_PARSE_NIBBLE , nibble_ena); - npc_mkex_default.keyx_cfg[NIX_INTF_TX ] = tx_kex; + mkex->keyx_cfg[NIX_INTF_TX ] = tx_kex; }/* Configure RX interfaces */
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c +2 -1
@@ -445,7 +445,8 @@ do { \NPC_SCAN_HDR (NPC_VLAN_TAG1 ,NPC_LID_LB ,NPC_LT_LB_CTAG ,2 ,2 );NPC_SCAN_HDR (NPC_VLAN_TAG2 ,NPC_LID_LB ,NPC_LT_LB_STAG_QINQ ,2 ,2 );NPC_SCAN_HDR (NPC_DMAC ,NPC_LID_LA , la_ltype, la_start,6 ); -NPC_SCAN_HDR (NPC_SMAC ,NPC_LID_LA , la_ltype, la_start,6 ); +/* SMAC follows the DMAC(which is 6 bytes) */ +NPC_SCAN_HDR (NPC_SMAC ,NPC_LID_LA , la_ltype, la_start +6 ,6 );/* PF_FUNC is 2 bytes at 0th byte of NPC_LT_LA_IH_NIX_ETHER */ NPC_SCAN_HDR (NPC_PF_FUNC ,NPC_LID_LA ,NPC_LT_LA_IH_NIX_ETHER ,0 ,2 ); }
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +14 -5
@@ -631,6 +631,12 @@ int otx2_txschq_config(struct otx2_nic *pfvf, int lvl) req->num_regs++; req->reg[1 ] =NIX_AF_TL3X_SCHEDULE (schq); req->regval[1 ] = dwrr_val; +if (lvl == hw->txschq_link_cfg_lvl) { + req->num_regs++; + req->reg[2 ] =NIX_AF_TL3_TL2X_LINKX_CFG (schq, hw->tx_link); +/* Enable this queue and backpressure */ + req->regval[2 ] =BIT_ULL (13 ) |BIT_ULL (12 ); + } }else if (lvl ==NIX_TXSCH_LVL_TL2 ) { parent = hw->txschq_list[NIX_TXSCH_LVL_TL1 ][0 ]; req->reg[0 ] =NIX_AF_TL2X_PARENT (schq);
@@ -640,11 +646,12 @@ int otx2_txschq_config(struct otx2_nic *pfvf, int lvl) req->reg[1 ] =NIX_AF_TL2X_SCHEDULE (schq); req->regval[1 ] =TXSCH_TL1_DFLT_RR_PRIO <<24 | dwrr_val; - req->num_regs++; - req->reg[2 ] =NIX_AF_TL3_TL2X_LINKX_CFG (schq, hw->tx_link); -/* Enable this queue and backpressure */ - req->regval[2 ] =BIT_ULL (13 ) |BIT_ULL (12 ); - +if (lvl == hw->txschq_link_cfg_lvl) { + req->num_regs++; + req->reg[2 ] =NIX_AF_TL3_TL2X_LINKX_CFG (schq, hw->tx_link); +/* Enable this queue and backpressure */ + req->regval[2 ] =BIT_ULL (13 ) |BIT_ULL (12 ); + } }else if (lvl ==NIX_TXSCH_LVL_TL1 ) {/* Default config for TL1. * For VF this is always ignored.
@@ -1563,6 +1570,8 @@ void mbox_handler_nix_txsch_alloc(struct otx2_nic *pf,for (schq =0 ; schq < rsp->schq[lvl]; schq++) pf->hw.txschq_list[lvl][schq] = rsp->schq_list[lvl][schq]; + + pf->hw.txschq_link_cfg_lvl = rsp->link_cfg_lvl; }EXPORT_SYMBOL (mbox_handler_nix_txsch_alloc);
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +1 -0
@@ -182,6 +182,7 @@ struct otx2_hw {u16 sqb_size;/* NIX */ +u8 txschq_link_cfg_lvl;u16 txschq_list[NIX_TXSCH_LVL_CNT ][MAX_TXSCHQ_PER_FUNC ];u16 matchall_ipolicer;u32 dwrr_mtu;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +2 -2
@@ -497,7 +497,7 @@ int mlx5e_tc_tun_create_header_ipv6(struct mlx5e_priv *priv,int err; attr.ttl = tun_key->ttl; - attr.fl.fl6.flowlabel =ip6_make_flowinfo (RT_TOS (tun_key->tos), tun_key->label); + attr.fl.fl6.flowlabel =ip6_make_flowinfo (tun_key->tos, tun_key->label); attr.fl.fl6.daddr = tun_key->u.ipv6.dst; attr.fl.fl6.saddr = tun_key->u.ipv6.src;
@@ -611,7 +611,7 @@ int mlx5e_tc_tun_update_header_ipv6(struct mlx5e_priv *priv, attr.ttl = tun_key->ttl; - attr.fl.fl6.flowlabel =ip6_make_flowinfo (RT_TOS (tun_key->tos), tun_key->label); + attr.fl.fl6.flowlabel =ip6_make_flowinfo (tun_key->tos, tun_key->label); attr.fl.fl6.daddr = tun_key->u.ipv6.dst; attr.fl.fl6.saddr = tun_key->u.ipv6.src;
drivers/net/ethernet/mellanox/mlxsw/spectrum.c +1 -1
@@ -1730,9 +1730,9 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u8 local_port)cancel_delayed_work_sync (&mlxsw_sp_port->periodic_hw_stats.update_dw);cancel_delayed_work_sync (&mlxsw_sp_port->ptp.shaper_dw); -mlxsw_sp_port_ptp_clear (mlxsw_sp_port);mlxsw_core_port_clear (mlxsw_sp->core, local_port, mlxsw_sp);unregister_netdev (mlxsw_sp_port->dev);/* This calls ndo_stop */ +mlxsw_sp_port_ptp_clear (mlxsw_sp_port);mlxsw_sp_port_vlan_classification_set (mlxsw_sp_port, true, true); mlxsw_sp->ports[local_port] =NULL ;mlxsw_sp_port_vlan_flush (mlxsw_sp_port, true);
drivers/net/ethernet/moxa/moxart_ether.c +10 -10
@@ -77,7 +77,7 @@ static void moxart_mac_free_memory(struct net_device *ndev)int i;for (i =0 ; i <RX_DESC_NUM ; i++) -dma_unmap_single (&ndev->dev, priv->rx_mapping[i], +dma_unmap_single (&priv->pdev->dev, priv->rx_mapping[i], priv->rx_buf_size,DMA_FROM_DEVICE );if (priv->tx_desc_base)
@@ -147,11 +147,11 @@ static void moxart_mac_setup_desc_ring(struct net_device *ndev) desc + RX_REG_OFFSET_DESC1); priv->rx_buf[i] = priv->rx_buf_base + priv->rx_buf_size * i; - priv->rx_mapping[i] =dma_map_single (&ndev->dev, + priv->rx_mapping[i] =dma_map_single (&priv->pdev->dev, priv->rx_buf[i], priv->rx_buf_size,DMA_FROM_DEVICE ); -if (dma_mapping_error (&ndev->dev, priv->rx_mapping[i])) +if (dma_mapping_error (&priv->pdev->dev, priv->rx_mapping[i]))netdev_err (ndev,"DMA mapping error\n" ); moxart_desc_write(priv->rx_mapping[i],
@@ -240,7 +240,7 @@ static int moxart_rx_poll(struct napi_struct *napi, int budget)if (len >RX_BUF_SIZE ) len =RX_BUF_SIZE ; -dma_sync_single_for_cpu (&ndev->dev, +dma_sync_single_for_cpu (&priv->pdev->dev, priv->rx_mapping[rx_head], priv->rx_buf_size,DMA_FROM_DEVICE ); skb =netdev_alloc_skb_ip_align (ndev, len);
@@ -294,7 +294,7 @@ static void moxart_tx_finished(struct net_device *ndev)unsigned int tx_tail = priv->tx_tail;while (tx_tail != tx_head) { -dma_unmap_single (&ndev->dev, priv->tx_mapping[tx_tail], +dma_unmap_single (&priv->pdev->dev, priv->tx_mapping[tx_tail], priv->tx_len[tx_tail],DMA_TO_DEVICE ); ndev->stats.tx_packets++;
@@ -358,9 +358,9 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb, len = skb->len >TX_BUF_SIZE ?TX_BUF_SIZE : skb->len; - priv->tx_mapping[tx_head] =dma_map_single (&ndev->dev, skb->data, + priv->tx_mapping[tx_head] =dma_map_single (&priv->pdev->dev, skb->data, len,DMA_TO_DEVICE ); -if (dma_mapping_error (&ndev->dev, priv->tx_mapping[tx_head])) { +if (dma_mapping_error (&priv->pdev->dev, priv->tx_mapping[tx_head])) {netdev_err (ndev,"DMA mapping error\n" ); goto out_unlock; }
@@ -379,7 +379,7 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb, len =ETH_ZLEN ; } -dma_sync_single_for_device (&ndev->dev, priv->tx_mapping[tx_head], +dma_sync_single_for_device (&priv->pdev->dev, priv->tx_mapping[tx_head], priv->tx_buf_size,DMA_TO_DEVICE ); txdes1 =TX_DESC1_LTS |TX_DESC1_FTS | (len &TX_DESC1_BUF_SIZE_MASK );
@@ -493,7 +493,7 @@ static int moxart_mac_probe(struct platform_device *pdev) priv->tx_buf_size =TX_BUF_SIZE ;
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/pinctrl/nomadik/pinctrl-nomadik.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_ec_proto.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/scsi/ufs/ufs-mediatek.c +55 -5
60 lines not on this page · raw message
drivers/spi/spi-meson-spicc.c +101 -28
129 lines not on this page · raw message
drivers/usb/gadget/function/uvc_queue.c +12 -5
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/uvc_video.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/virt/vboxguest/vboxguest_linux.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/xen/xenbus/xenbus_dev_frontend.c +2 -2
Lines of this file are not shown. View the raw message.
fs/nfs/nfs4idmap.c +24 -22
46 lines not on this page · raw message
fs/xfs/xfs_fsops.c +20 -30
50 lines not on this page · raw message
fs/xfs/xfs_inode.c +49 -30
79 lines not on this page · raw message
fs/xfs/xfs_trans.c +86 -0
86 lines not on this page · raw message
kernel/trace/trace_eprobe.c +82 -6
88 lines not on this page · raw message
net/netfilter/nf_tables_api.c +57 -13
70 lines not on this page · raw message
scripts/dummy-tools/dummy-plugin-dir/include/plugin-version.h new file +0 -0
sound/core/misc.c +94 -0
94 lines not on this page · raw message
sound/soc/codecs/tas2770.c +43 -55
98 lines not on this page · raw message
tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/custom_multipath_hash.sh +16 -8
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/gre_custom_multipath_hash.sh +16 -8
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/ip6gre_custom_multipath_hash.sh +16 -8
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.