Linux 5.14.12
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.14.12 kernel.
All users of the 5.14 kernel series must upgrade.
The updated 5.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.14.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/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml | 2 Makefile | 2 arch/arm/boot/dts/imx53-m53menlo.dts | 4 arch/arm/boot/dts/imx6dl-yapp4-common.dtsi | 5 arch/arm/boot/dts/imx6qdl-pico.dtsi | 11 arch/arm/boot/dts/imx6sx-sdb.dts | 4 arch/arm/boot/dts/imx6ul-14x14-evk.dtsi | 2 arch/arm/boot/dts/omap3430-sdp.dts | 2 arch/arm/boot/dts/qcom-apq8064.dtsi | 7 arch/arm/configs/gemini_defconfig | 1 arch/arm/mach-at91/pm.c | 58 + arch/arm/mach-imx/pm-imx6.c | 2 arch/arm/mach-omap2/omap_hwmod.c | 2 arch/arm/net/bpf_jit_32.c | 19 arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi | 4 arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi | 2 arch/arm64/boot/dts/freescale/imx8mm-evk.dts | 2 arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-som.dtsi | 1 arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi | 2 arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi | 2 arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 2 arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts | 2 arch/arm64/boot/dts/qcom/pm8150.dtsi | 2 arch/arm64/boot/dts/qcom/sc7280.dtsi | 6 arch/mips/include/asm/mips-cps.h | 23 arch/powerpc/boot/dts/fsl/t1023rdb.dts | 2 arch/powerpc/include/asm/book3s/32/kup.h | 8 arch/powerpc/include/asm/interrupt.h | 5 arch/powerpc/kernel/dma-iommu.c | 9 arch/powerpc/kernel/exceptions-64s.S | 25 arch/powerpc/kernel/traps.c | 43 - arch/powerpc/net/bpf_jit_comp32.c | 8 arch/powerpc/net/bpf_jit_comp64.c | 37 - arch/powerpc/platforms/pseries/eeh_pseries.c | 4 arch/riscv/Makefile | 6 arch/riscv/include/asm/syscall.h | 1 arch/riscv/include/asm/vdso.h | 37 - arch/riscv/include/uapi/asm/unistd.h | 3 arch/riscv/kernel/syscall_table.c | 1 arch/riscv/kernel/vdso.c | 53 + arch/riscv/kernel/vdso/Makefile | 25 arch/riscv/kernel/vdso/gen_vdso_offsets.sh | 5 arch/riscv/kernel/vdso/so2s.sh | 6 arch/riscv/kernel/vdso/vdso.lds.S | 3 arch/riscv/mm/cacheflush.c | 2 arch/s390/net/bpf_jit_comp.c | 2 arch/x86/Kconfig | 2 arch/x86/include/asm/entry-common.h | 2 arch/x86/kernel/cpu/common.c | 1 arch/x86/kernel/early-quirks.c | 6 arch/x86/kernel/fpu/signal.c | 11 arch/x86/kernel/hpet.c | 81 ++ arch/x86/kernel/sev-shared.c | 2 arch/x86/platform/olpc/olpc.c | 2 arch/xtensa/include/asm/kmem_layout.h | 2 arch/xtensa/kernel/irq.c | 2 arch/xtensa/kernel/setup.c | 12 arch/xtensa/mm/mmu.c | 2 drivers/bus/ti-sysc.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 14 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h | 1 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c | 66 ++ drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.h | 14 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c | 8 drivers/gpu/drm/amd/display/include/dal_asic_id.h | 2 drivers/gpu/drm/amd/include/asic_reg/dpcs/dpcs_4_2_0_offset.h | 27 drivers/gpu/drm/i915/display/icl_dsi.c | 48 + drivers/gpu/drm/i915/display/intel_audio.c | 5 drivers/gpu/drm/i915/display/intel_bios.c | 22 drivers/gpu/drm/i915/display/intel_ddi.c | 8 drivers/gpu/drm/i915/display/intel_display.c | 20 drivers/gpu/drm/i915/display/intel_vbt_defs.h | 5 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c | 7 drivers/gpu/drm/i915/i915_reg.h | 6 drivers/gpu/drm/i915/intel_pm.c | 12 drivers/gpu/drm/nouveau/dispnv50/crc.c | 1 drivers/gpu/drm/nouveau/dispnv50/head.c | 2 drivers/gpu/drm/nouveau/include/nvif/class.h | 2 drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h | 1 drivers/gpu/drm/nouveau/nouveau_bo.c | 1 drivers/gpu/drm/nouveau/nouveau_chan.c | 6 drivers/gpu/drm/nouveau/nouveau_debugfs.c | 1 drivers/gpu/drm/nouveau/nouveau_drm.c | 4 drivers/gpu/drm/nouveau/nouveau_gem.c | 4 drivers/gpu/drm/nouveau/nv84_fence.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 3 drivers/gpu/drm/nouveau/nvkm/engine/fifo/Kbuild | 1 drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.c | 311 ++++++++++ drivers/gpu/drm/nouveau/nvkm/subdev/top/ga100.c | 7 drivers/gpu/drm/panel/panel-abt-y030xx067a.c | 4 drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c | 7 drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h | 4 drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c | 97 +-- drivers/i2c/busses/i2c-mlxcpld.c | 4 drivers/i2c/busses/i2c-mt65xx.c | 11 drivers/i2c/i2c-core-acpi.c | 1 drivers/mmc/host/meson-gx-mmc.c | 73 +- drivers/mmc/host/sdhci-of-at91.c | 22 drivers/net/ethernet/google/gve/gve.h | 2 drivers/net/ethernet/google/gve/gve_main.c | 45 - drivers/net/ethernet/google/gve/gve_rx.c | 8 drivers/net/ethernet/intel/i40e/i40e_main.c | 5 drivers/net/ethernet/intel/iavf/iavf_main.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en.h | 11 drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.h | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 59 + drivers/net/ethernet/mellanox/mlx5/core/en_rep.c | 3 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 7 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 11 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c | 12 drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c | 4 drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 4 drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 37 - drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c | 9 drivers/net/ethernet/mscc/ocelot_vcap.c | 4 drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 5 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 drivers/net/pcs/pcs-xpcs.c | 45 + drivers/net/phy/mdio_bus.c | 7 drivers/net/phy/sfp.c | 2 drivers/net/wireless/ath/ath5k/Kconfig | 4 drivers/net/wireless/ath/ath5k/led.c | 10 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c | 3 drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 2 drivers/of/base.c | 1 drivers/pci/controller/pci-hyperv.c | 13 drivers/ptp/ptp_pch.c | 1 drivers/scsi/libiscsi.c | 15 drivers/scsi/ufs/ufshcd.c | 52 - drivers/scsi/ufs/ufshcd.h | 1 drivers/soc/qcom/mdt_loader.c | 2 drivers/soc/qcom/socinfo.c | 2 drivers/soc/ti/omap_prm.c | 27 drivers/usb/chipidea/ci_hdrc_imx.c | 15 drivers/usb/class/cdc-acm.c | 8 drivers/usb/class/cdc-wdm.c | 6 drivers/usb/common/Kconfig | 3 drivers/usb/gadget/function/f_uac2.c | 14 drivers/usb/typec/tcpm/tcpci.c | 2 drivers/usb/typec/tcpm/tcpm.c | 1 drivers/usb/typec/tipd/core.c | 8 drivers/video/fbdev/Kconfig | 5 drivers/video/fbdev/gbefb.c | 2 drivers/xen/balloon.c | 21 drivers/xen/privcmd.c | 7 fs/afs/write.c | 3 fs/netfs/read_helper.c | 2 fs/nfsd/nfs4xdr.c | 19 fs/nfsd/nfsctl.c | 2 fs/overlayfs/dir.c | 10 fs/overlayfs/file.c | 15 include/net/netfilter/ipv6/nf_defrag_ipv6.h | 1 include/net/netfilter/nf_tables.h | 2 include/net/netns/netfilter.h | 6 include/soc/mscc/ocelot_vcap.h | 4 kernel/bpf/stackmap.c | 3 net/bridge/br_netlink.c | 3 net/core/rtnetlink.c | 2 net/dsa/tag_dsa.c | 2 net/ipv4/inet_hashtables.c | 4 net/ipv4/netfilter/nf_defrag_ipv4.c | 30 net/ipv4/udp.c | 3 net/ipv6/inet6_hashtables.c | 2 net/ipv6/netfilter/nf_conntrack_reasm.c | 2 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c | 25 net/ipv6/udp.c | 3 net/netfilter/nf_tables_api.c | 91 ++ net/netfilter/nft_quota.c | 2 net/netlink/af_netlink.c | 14 net/sched/sch_fifo.c | 3 net/sched/sch_taprio.c | 4 net/sunrpc/auth_gss/svcauth_gss.c | 2 tools/lib/bpf/libbpf.c | 3 tools/lib/bpf/strset.c | 1 tools/objtool/arch/x86/decode.c | 2 tools/objtool/special.c | 36 - tools/perf/pmu-events/jevents.c | 2 182 files changed, 1619 insertions(+), 632 deletions(-)
Adrian Hunter (1):
scsi: ufs: core: Fix task management completion
Alexandre Ghiti (1):
riscv: Flush current cpu icache before other cpus
Alexey Kardashevskiy (1):
powerpc/iommu: Report the correct most efficient DMA mask for PCI devices
Andrew Lunn (1):
dsa: tag_dsa: Fix mask for trunked packets
Andrii Nakryiko (1):
libbpf: Fix memory leak in strset
Andy Shevchenko (1):
ptp_pch: Load module automatically if ID matches
Antonio Martorana (1):
soc: qcom: socinfo: Fixed argument passed to platform_set_data()
Arnd Bergmann (2):
fbdev: simplefb: fix Kconfig dependencies
ath5k: fix building with LEDS=m
Aya Levin (2):
net/mlx5: Force round second at 1PPS out start time net/mlx5: Avoid generating event after PPS out in Real time mode
Ben Hutchings (1):
Partially revert "usb: Kconfig: using select for USB_COMMON dependency"
Ben Skeggs (3):
drm/nouveau/kms/tu102-: delay enabling cursor until after assign_windows drm/nouveau/ga102-: support ttm buffer moves via copy engine drm/nouveau/fifo/ga102: initialise chid on return from channel creation
Borislav Petkov (1):
x86/fpu: Restore the masking out of reserved MXCSR bits
Catherine Sullivan (2):
gve: Correct available tx qpl check
gve: Properly handle errors in gve_assign_qpl
Christophe Branchereau (1):
drm/panel: abt-y030xx067a: yellow tint fix
Christophe Leroy (1):
powerpc/32s: Fix kuap_kernel_restore()
Claudiu Beznea (3):
mmc: sdhci-of-at91: wait for calibration done before proceed
mmc: sdhci-of-at91: replace while loop with read_poll_timeout
ARM: at91: pm: do not panic if ram controllers are not enabled
David Heidelberg (1):
ARM: dts: qcom: apq8064: use compatible which contains chipid
David Howells (2):
netfs: Fix READ/WRITE confusion when calling iov_iter_xarray()
afs: Fix afs_launder_page() to set correct start file position
Dmitry Baryshkov (1):
arm64: dts: qcom: pm8150: use qcom,pm8998-pon binding
Douglas Anderson (1):
Revert "arm64: dts: qcom: sc7280: Fixup the cpufreq node"
Eric Dumazet (8):
net_sched: fix NULL deref in fifo_set_limit()
net: bridge: use nla_total_size_64bit() in br_get_linkxstats_size()
net: bridge: fix under estimation in br_get_linkxstats_size() net/sched: sch_taprio: properly cancel timer from taprio_destroy()
netlink: annotate data races around nlk->bound
rtnetlink: fix if_nlmsg_stats_size() under estimation
gve: fix gve_get_stats()
gve: report 64bit tx_bytes counter from gve_handle_report_stats()
Fabio Estevam (2):
usb: chipidea: ci_hdrc_imx: Also search for 'phys' phandle
ARM: dts: imx6qdl-pico: Fix Ethernet support
Florian Westphal (1):
netfilter: conntrack: fix boot failure with nf_conntrack.enable_hooks=1
Geert Uytterhoeven (1):
dt-bindings: drm/bridge: ti-sn65dsi86: Fix reg value
Greg Kroah-Hartman (1):
Linux 5.14.12
Guchun Chen (1):
drm/amdgpu: handle the case of pci_channel_io_frozen only in amdgpu_pci_resume
Haibo Chen (2):
ARM: dts: imx: change the spi-nor tx
arm64: dts: imx8: change the spi-nor tx
Hansen (1):
drm/amd/display: Fix detection of 4 lane for DPALT
Heikki Krogerus (1):
usb: typec: tipd: Remove dependency on "connector" child fwnode
Heiko Thiery (1):
arm64: dts: imx8mm-kontron-n801x-som: do not allow to switch off buck2
Ilan Peer (1):
iwlwifi: mvm: Fix possible NULL dereference
Ilya Lipnitskiy (1):
MIPS: Revert "add support for buggy MT7621S core detection"
Imre Deak (1):
drm/i915/tc: Fix TypeC port init/resume time sanitization
J. Bruce Fields (1):
SUNRPC: fix sign error causing rpcsec_gss drops
Jamie Iles (1):
i2c: acpi: fix resource leak in reconfiguration device addition
Jan Beulich (1):
xen/privcmd: fix error handling in mmap-resource processing
Jeremy Cline (1):
drm/nouveau: avoid a use-after-free when BO init fails
Jernej Skrabec (1):
drm/sun4i: dw-hdmi: Fix HDMI PHY clock setup
Jiri Benc (1):
i40e: fix endless loop under rtnl
Joe Lawrence (1):
objtool: Make .altinstructions section entry size consistent
Johan Almbladh (1):
bpf, arm: Fix register clobbering in div/mod implementation
Johan Hovold (2):
USB: cdc-acm: fix racy tty buffer accesses
USB: cdc-acm: fix break reporting
Josh Poimboeuf (1):
objtool: Remove reloc symbol type checks in get_alt_entry()
Jude Shih (1):
drm/amd/display: USB4 bring up set correct address
Juergen Gross (1):
xen/balloon: fix cancelled balloon action
Kai-Heng Feng (1):
drm/i915/audio: Use BIOS provided value for RKL HDA link
Kewei Xu (1):
i2c: mediatek: Add OFFSET_EXT_CONF setting back
Kumar Kartikeya Dwivedi (1):
libbpf: Fix segfault in light skeleton for objects without BTF
Lama Kayal (1):
net/mlx5e: Fix the presented RQ index in PTP stats
Lang Yu (1):
drm/amdkfd: fix a potential ttm->sg memory leak
Lijo Lazar (1):
drm/amdgpu: During s0ix don't wait to signal GFXOFF
Like Xu (1):
perf jevents: Free the sys_event_tables list after processing entries
Linus Walleij (1):
ARM: defconfig: gemini: Restore framebuffer
Liu, Zhan (2):
drm/amd/display: Fix B0 USB-C DP Alt mode
drm/amd/display: Fix DCN3 B0 DP Alt Mapping
Long Li (1):
PCI: hv: Fix sleep while in non-sleep context when removing child devices from the bus
Lukas Bulwahn (3):
x86/platform/olpc: Correct ifdef symbol to intended CONFIG_OLPC_XO15_SCI x86/Kconfig: Correct reference to MWINCHIP3D
x86/entry: Correct reference to intended CONFIG_64_BIT
Lukasz Majczak (1):
drm/i915/bdb: Fix version check
Maarten Lankhorst (1):
drm/i915: Fix runtime pm handling in i915_gem_shrink
Mahesh Salgaonkar (1):
pseries/eeh: Fix the kdump kernel crash during eeh_pseries_init
Marek Vasut (2):
ARM: dts: imx: Add missing pinctrl-names for panel on M53Menlo
ARM: dts: imx: Fix USB host power regulator polarity on M53Menlo
Marijn Suijten (1):
ARM: dts: qcom: apq8064: Use 27MHz PXO clock as DSI PLL reference
Mark Brown (1):
video: fbdev: gbefb: Only instantiate device when built for IP32
Max Filippov (1):
xtensa: call irqchip_init only when CONFIG_USE_OF is selected
Michael Walle (1):
arm64: dts: ls1028a: fix eSDHC2 node
Michal Vokáč (1):
ARM: dts: imx6dl-yapp4: Fix lp5562 LED driver probe
Mike Christie (1):
scsi: iscsi: Fix iscsi_task use after free
Mike Manning (1):
net: prefer socket bound to interface when not in VRF
Miklos Szeredi (1):
ovl: fix IOCB_DIRECT if underlying fs doesn't support direct IO
Moshe Shemesh (1):
net/mlx5: E-Switch, Fix double allocation of acl flow counter
Nathan Chancellor (1):
bus: ti-sysc: Add break in switch statement in sysc_init_soc()
Naveen N. Rao (6):
powerpc/bpf: Fix BPF_MOD when imm == 1
powerpc/bpf: Fix BPF_SUB when imm == 0x80000000
powerpc/bpf ppc32: Fix ALU32 BPF_ARSH operation
powerpc/bpf ppc32: Fix JMP32_JSET_K
powerpc/bpf ppc32: Do not emit zero extend instruction for 64-bit BPF_END powerpc/bpf ppc32: Fix BPF_SUB when imm == 0x80000000
Neil Armstrong (1):
mmc: meson-gx: do not use memcpy_to/fromio for dram-access-quirk
Nicholas Piggin (3):
powerpc/64s: fix program check interrupt emergency stack path powerpc/traps: do not enable irqs in _exception powerpc/64s: Fix unrecoverable MCE calling async handler from NMI
Nikola Cornij (1):
drm/amd/display: Limit display scaling to up to 4k for DCN 3.1
Oleksij Rempel (1):
ARM: imx6: disable the GIC CPU interface before calling stby-poweroff sequence
Pablo Neira Ayuso (3):
netfilter: nf_tables: add position handle in event notification
netfilter: nf_tables: reverse order in rule replacement expansion
netfilter: nf_tables: honor NLM_F_CREATE and NLM_F_EXCL in event notification
Pali Rohár (1):
powerpc/fsl/dts: Fix phy-connection-type for fm1mac3
Palmer Dabbelt (2):
RISC-V: Fix VDSO build for !MMU
RISC-V: Include clone3() on rv32
Patrick Ho (1):
nfsd: fix error handling of register_pernet_subsys() in init_nfsd()
Pavel Hofman (1):
usb: gadget: f_uac2: fixed EP-IN wMaxPacketSize
Pavel Skripkin (1):
phy: mdio: fix memory leak
Punit Agrawal (1):
net: stmmac: dwmac-rk: Fix ethernet on rk3399 based devices
Raed Salem (1):
net/mlx5e: IPSEC RX, enable checksum complete
Randy Dunlap (1):
xtensa: use CONFIG_USE_OF instead of CONFIG_OF
Rikard Falkeborn (1):
usb: cdc-wdm: Fix check for WWAN
Roger Quadros (1):
ARM: dts: omap3430-sdp: Fix NAND device node
Saleem Abdulrasool (1):
riscv: explicitly use symbol offsets for VDSO
Sean Anderson (1):
net: sfp: Fix typo in state machine debug string
Shawn Guo (1):
soc: qcom: mdt_loader: Drop PT_LOAD check on hash segment
Shay Drory (2):
net/mlx5: Fix length of irq_index in chars
net/mlx5: Fix setting number of EQs of SFs
Stefan Assmann (1):
iavf: fix double unlock of crit_lock
Sylwester Dziedziuch (1):
i40e: Fix freeing of uninitialized misc IRQ vector
Tao Liu (1):
gve: Avoid freeing NULL pointer
Tariq Toukan (1):
net/mlx5e: Keep the value for maximum number of channels in-sync
Tatsuhiko Yasumatsu (1):
bpf: Fix integer overflow in prealloc_elems_and_freelist()
Tejas Upadhyay (1):
drm/i915/jsl: Add W/A 1409054076 for JSL
Thomas Gleixner (1):
x86/hpet: Use another crystalball to evaluate HPET usability
Tiezhu Yang (1):
bpf, s390: Fix potential memory leak about jit_data
Tom Lendacky (1):
x86/sev: Return an error on a returned non-zero SW_EXITINFO1[31:0]
Tong Tiangen (3):
riscv/vdso: Refactor asm/vdso.h
riscv/vdso: Move vdso data page up front
riscv/vdso: make arch_setup_additional_pages wait for mmap_sem for write killable
Tony Lindgren (2):
soc: ti: omap-prm: Fix external abort for am335x pruss
bus: ti-sysc: Use CLKDM_NOAUTO for dra7 dcan1 for errata i893
Trond Myklebust (1):
nfsd4: Handle the NFSv4 READDIR 'dircount' hint being zero
Vadim Pasternak (2):
i2c: mlxcpld: Fix criteria for frequency setting
i2c: mlxcpld: Modify register setting for 400KHz frequency
Vegard Nossum (1):
x86/entry: Clear X86_FEATURE_SMAP when CONFIG_X86_SMAP=n
Ville Syrjälä (1):
drm/i915: Extend the async flip VT-d w/a to skl/bxt
Vladimir Oltean (1):
net: mscc: ocelot: fix VCAP filters remaining active after being deleted
Vladimir Zapolskiy (1):
iwlwifi: pcie: add configuration of a Wi-Fi adapter on Dell XPS 15
Wong Vee Khee (3):
net: pcs: xpcs: fix incorrect CL37 AN sequence
net: pcs: xpcs: fix incorrect steps on disable EEE
net: stmmac: trigger PCS EEE to turn off on link down
Xu Yang (2):
usb: typec: tcpci: don't handle vSafe0V event if it's not enabled
usb: typec: tcpm: handle SRC_STARTUP state if cc changes
Yang Yingliang (2):
drm/nouveau/kms/nv50-: fix file release memory leak drm/nouveau/debugfs: fix file release memory leak
Zheng Liang (1):
ovl: fix missing negative dentry check in ovl_rename()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml +1 -1
@@ -18,7 +18,7 @@ properties: const: ti,sn65dsi86 reg: - const: 0x2d + enum: [ 0x2c, 0x2d ] enable-gpios: maxItems: 1
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 14 -SUBLEVEL = 11 +SUBLEVEL = 12 EXTRAVERSION = NAME = Opossums on Parade
arch/arm/boot/dts/imx53-m53menlo.dts +2 -2
@@ -56,6 +56,7 @@ eth { panel { compatible = "edt,etm0700g0dh6"; pinctrl-0 = <&pinctrl_display_gpio>; + pinctrl-names = "default"; enable-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; port {
@@ -76,8 +77,7 @@ reg_usbh1_vbus: regulator-usbh1-vbus { regulator-name = "vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; - gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>; - enable-active-high; + gpio = <&gpio1 2 0>; }; };
arch/arm/boot/dts/imx6dl-yapp4-common.dtsi +5 -0
@@ -5,6 +5,7 @@ #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/input/input.h> +#include <dt-bindings/leds/common.h> #include <dt-bindings/pwm/pwm.h> / {
@@ -277,6 +278,7 @@ chan@0 { led-cur = /bits/ 8 <0x20>; max-cur = /bits/ 8 <0x60>; reg = <0>; + color = <LED_COLOR_ID_RED>; }; chan@1 {
@@ -284,6 +286,7 @@ chan@1 { led-cur = /bits/ 8 <0x20>; max-cur = /bits/ 8 <0x60>; reg = <1>; + color = <LED_COLOR_ID_GREEN>; }; chan@2 {
@@ -291,6 +294,7 @@ chan@2 { led-cur = /bits/ 8 <0x20>; max-cur = /bits/ 8 <0x60>; reg = <2>; + color = <LED_COLOR_ID_BLUE>; }; chan@3 {
@@ -298,6 +302,7 @@ chan@3 { led-cur = /bits/ 8 <0x0>; max-cur = /bits/ 8 <0x0>; reg = <3>; + color = <LED_COLOR_ID_WHITE>; }; };
arch/arm/boot/dts/imx6qdl-pico.dtsi +11 -0
@@ -176,7 +176,18 @@ &fec { pinctrl-0 = <&pinctrl_enet>; phy-mode = "rgmii-id"; phy-reset-gpios = <&gpio1 26 GPIO_ACTIVE_LOW>; + phy-handle = <&phy>; status = "okay"; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + + phy: ethernet-phy@1 { + reg = <1>; + qca,clk-out-frequency = <125000000>; + }; + }; }; &hdmi {
arch/arm/boot/dts/imx6sx-sdb.dts +2 -2
@@ -114,7 +114,7 @@ flash0: n25q256a@0 { compatible = "micron,n25q256a", "jedec,spi-nor"; spi-max-frequency = <29000000>; spi-rx-bus-width = <4>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; reg = <0>; };
@@ -124,7 +124,7 @@ flash1: n25q256a@2 { compatible = "micron,n25q256a", "jedec,spi-nor"; spi-max-frequency = <29000000>; spi-rx-bus-width = <4>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; reg = <2>; }; };
arch/arm/boot/dts/imx6ul-14x14-evk.dtsi +1 -1
@@ -292,7 +292,7 @@ flash0: n25q256a@0 { compatible = "micron,n25q256a", "jedec,spi-nor"; spi-max-frequency = <29000000>; spi-rx-bus-width = <4>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; reg = <0>; }; };
arch/arm/boot/dts/omap3430-sdp.dts +1 -1
@@ -101,7 +101,7 @@ partition@280000 { nand@1,0 { compatible = "ti,omap2-nand"; - reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ + reg = <1 0 4>; /* CS1, offset 0, IO size 4 */ interrupt-parent = <&gpmc>; interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ <1 IRQ_TYPE_NONE>; /* termcount */
arch/arm/boot/dts/qcom-apq8064.dtsi +3 -4
@@ -198,7 +198,7 @@ cxo_board: cxo_board { clock-frequency = <19200000>; }; - pxo_board { + pxo_board: pxo_board { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <27000000>;
@@ -1148,7 +1148,7 @@ tcsr: syscon@1a400000 { }; gpu: adreno-3xx@4300000 { - compatible = "qcom,adreno-3xx"; + compatible = "qcom,adreno-320.2", "qcom,adreno"; reg = <0x04300000 0x20000>; reg-names = "kgsl_3d0_reg_memory"; interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
@@ -1163,7 +1163,6 @@ gpu: adreno-3xx@4300000 { <&mmcc GFX3D_AHB_CLK>, <&mmcc GFX3D_AXI_CLK>, <&mmcc MMSS_IMEM_AHB_CLK>; - qcom,chipid = <0x03020002>; iommus = <&gfx3d 0 &gfx3d 1
@@ -1306,7 +1305,7 @@ dsi0_phy: dsi-phy@4700200 { reg-names = "dsi_pll", "dsi_phy", "dsi_phy_regulator"; clock-names = "iface_clk", "ref"; clocks = <&mmcc DSI_M_AHB_CLK>, - <&cxo_board>; + <&pxo_board>; };
arch/arm/configs/gemini_defconfig +1 -0
@@ -76,6 +76,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_DRM=y CONFIG_DRM_PANEL_ILITEK_IL9322=y CONFIG_DRM_TVE200=y +CONFIG_FB=y CONFIG_LOGO=y CONFIG_USB=y CONFIG_USB_MON=y
arch/arm/mach-at91/pm.c +47 -11
144 lines not on this page · raw message
arch/arm/mach-imx/pm-imx6.c +2 -0
@@ -10,6 +10,7 @@#include <linux/io.h> #include <linux/irq.h> #include <linux/genalloc.h> +#include <linux/irqchip/arm-gic.h> #include <linux/mfd/syscon.h> #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h> #include <linux/of.h>
@@ -619,6 +620,7 @@ static void __init imx6_pm_common_init(const struct imx6_pm_socdatastatic void imx6_pm_stby_poweroff (void ) { +gic_cpu_if_down (0 );imx6_set_lpm (STOP_POWER_OFF );imx6q_suspend_finish (0 );
arch/arm/mach-omap2/omap_hwmod.c +2 -0
@@ -3614,6 +3614,8 @@ int omap_hwmod_init_module(struct device *dev, oh->flags |=HWMOD_SWSUP_SIDLE_ACT ;if (data->cfg->quirks &SYSC_QUIRK_SWSUP_MSTANDBY ) oh->flags |=HWMOD_SWSUP_MSTANDBY ; +if (data->cfg->quirks &SYSC_QUIRK_CLKDM_NOAUTO ) + oh->flags |=HWMOD_CLKDM_NOAUTO ; error = omap_hwmod_check_module(dev, oh, data, sysc_fields, rev_offs, sysc_offs, syss_offs,
arch/arm/net/bpf_jit_32.c +19 -0
@@ -36,6 +36,10 @@* +-----+ * |RSVD | JIT scratchpad * current ARM_SP => +-----+ <= (BPF_FP - STACK_SIZE + SCRATCH_SIZE) +* | ... | caller-saved registers +* +-----+ +* | ... | arguments passed on stack +* ARM_SP during call => +-----| * | | * | ... | Function call stack * | |
@@ -63,6 +67,12 @@* * When popping registers off the stack at the end of a BPF function, we * reference them via the current ARM_FP register. +* +* Some eBPF operations are implemented via a call to a helper function. +* Such calls are "invisible" in the eBPF code, so it is up to the calling +* program to preserve any caller-saved ARM registers during the call. The +* JIT emits code to push and pop those registers onto the stack, immediately +* above the callee stack frame. */ #define CALLEE_MASK (1 << ARM_R4 | 1 << ARM_R5 | 1 << ARM_R6 | \ 1 << ARM_R7 | 1 << ARM_R8 | 1 << ARM_R9 | \
@@ -70,6 +80,8 @@#define CALLEE_PUSH_MASK (CALLEE_MASK | 1 << ARM_LR)#define CALLEE_POP_MASK (CALLEE_MASK | 1 << ARM_PC) +#define CALLER_MASK (1 << ARM_R0 | 1 << ARM_R1 | 1 << ARM_R2 | 1 << ARM_R3) +enum {/* Stack layout - these are offsets from (top of stack - 4) */ BPF_R2_HI ,
@@ -464,6 +476,7 @@ static inline int epilogue_offset(const struct jit_ctx *ctx)static inline void emit_udivmod (u8 rd,u8 rm,u8 rn,struct jit_ctx *ctx,u8 op) { +const int exclude_mask =BIT (ARM_R0 ) |BIT (ARM_R1 );const s8 *tmp = bpf2a32[TMP_REG_1 ];#if __LINUX_ARM_ARCH__ ==7
@@ -495,11 +508,17 @@ static inline void emit_udivmod(u8 rd, u8 rm, u8 rn, struct jit_ctx *ctx, u8 op)emit (ARM_MOV_R (ARM_R0 , rm), ctx); } +/* Push caller-saved registers on stack */ +emit (ARM_PUSH (CALLER_MASK & ~exclude_mask), ctx); +/* Call appropriate function */ emit_mov_i (ARM_IP , op ==BPF_DIV ? (u32 )jit_udiv32 : (u32 )jit_mod32, ctx);emit_blx_r (ARM_IP , ctx); +/* Restore caller-saved registers from stack */ +emit (ARM_POP (CALLER_MASK & ~exclude_mask), ctx); +/* Save return value */ if (rd !=ARM_R0 )emit (ARM_MOV_R (rd,ARM_R0 ), ctx);
arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi +2 -2
@@ -405,9 +405,9 @@ esdhc1: mmc@2150000 { interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <0>; /* fixed up by bootloader */ clocks = <&clockgen QORIQ_CLK_HWACCEL 1>; - voltage-ranges = <1800 1800 3300 3300>; + voltage-ranges = <1800 1800>; sdhci,auto-cmd12; - broken-cd; + non-removable; little-endian; bus-width = <4>; status = "disabled";
arch/arm64/boot/dts/freescale/imx8mm-beacon-som.dtsi +1 -1
@@ -91,7 +91,7 @@ flash@0 { #size-cells = <1>; compatible = "jedec,spi-nor"; spi-max-frequency = <80000000>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; }; };
arch/arm64/boot/dts/freescale/imx8mm-evk.dts +1 -1
@@ -48,7 +48,7 @@ flash@0 { #size-cells = <1>; compatible = "jedec,spi-nor"; spi-max-frequency = <80000000>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; }; };
arch/arm64/boot/dts/freescale/imx8mm-kontron-n801x-som.dtsi +1 -0
@@ -102,6 +102,7 @@ reg_vdd_arm: BUCK2 { regulator-min-microvolt = <850000>; regulator-max-microvolt = <950000>; regulator-boot-on; + regulator-always-on; regulator-ramp-delay = <3125>; nxp,dvs-run-voltage = <950000>; nxp,dvs-standby-voltage = <850000>;
arch/arm64/boot/dts/freescale/imx8mn-beacon-som.dtsi +1 -1
@@ -101,7 +101,7 @@ flash@0 { #size-cells = <1>; compatible = "jedec,spi-nor"; spi-max-frequency = <80000000>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; }; };
arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi +1 -1
@@ -74,7 +74,7 @@ som_flash: flash@0 { compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <80000000>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; }; };
arch/arm64/boot/dts/freescale/imx8mq-evk.dts +2 -0
@@ -337,6 +337,8 @@ n25q256a: flash@0 { #size-cells = <1>; compatible = "micron,n25q256a", "jedec,spi-nor"; spi-max-frequency = <29000000>; + spi-tx-bus-width = <1>; + spi-rx-bus-width = <4>; }; };
arch/arm64/boot/dts/freescale/imx8mq-kontron-pitx-imx8m.dts +1 -1
@@ -281,7 +281,7 @@ flash@0 { #address-cells = <1>; #size-cells = <1>; reg = <0>; - spi-tx-bus-width = <4>; + spi-tx-bus-width = <1>; spi-rx-bus-width = <4>; m25p,fast-read; spi-max-frequency = <50000000>;
arch/arm64/boot/dts/qcom/pm8150.dtsi +1 -1
@@ -48,7 +48,7 @@ pm8150_0: pmic@0 { #size-cells = <0>; pon: power-on@800 { - compatible = "qcom,pm8916-pon"; + compatible = "qcom,pm8998-pon"; reg = <0x0800>; pon_pwrkey: pwrkey {
arch/arm64/boot/dts/qcom/sc7280.dtsi +3 -3
@@ -1437,9 +1437,9 @@ rpmhcc: clock-controller { cpufreq_hw: cpufreq@18591000 { compatible = "qcom,cpufreq-epss"; - reg = <0 0x18591100 0 0x900>, - <0 0x18592100 0 0x900>, - <0 0x18593100 0 0x900>; + reg = <0 0x18591000 0 0x1000>, + <0 0x18592000 0 0x1000>, + <0 0x18593000 0 0x1000>; clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>; clock-names = "xo", "alternate"; #freq-domain-cells = <1>;
arch/mips/include/asm/mips-cps.h +1 -22
@@ -10,8 +10,6 @@#include <linux/io.h> #include <linux/types.h> -#include <asm/mips-boards/launch.h> - extern unsigned long __cps_access_bad_size(void) __compiletime_error("Bad size for CPS accessor");
@@ -167,30 +165,11 @@ static inline uint64_t mips_cps_cluster_config(unsigned int cluster)*/ static inline unsigned int mips_cps_numcores (unsigned int cluster) { -unsigned int ncores; -if (!mips_cm_present ())return 0 ;/* Add one before masking to handle 0xff indicating no cores */ - ncores = (mips_cps_cluster_config (cluster) +1 ) &CM_GCR_CONFIG_PCORES ; - -if (IS_ENABLED (CONFIG_SOC_MT7621 )) { -struct cpulaunch *launch; - -/* -* Ralink MT7621S SoC is single core, but the GCR_CONFIG method -* always reports 2 cores. Check the second core's LAUNCH_FREADY -* flag to detect if the second core is missing. This method -* only works before the core has been started. -*/ - launch = (struct cpulaunch *)CKSEG0ADDR (CPULAUNCH ); - launch +=2 ;/* MT7621 has 2 VPEs per core */ -if (!(launch->flags &LAUNCH_FREADY )) - ncores =1 ; - } - -return ncores; +return (mips_cps_cluster_config (cluster) +1 ) &CM_GCR_CONFIG_PCORES ; }/**
arch/powerpc/boot/dts/fsl/t1023rdb.dts +1 -1
@@ -154,7 +154,7 @@ fm1mac2: ethernet@e2000 { fm1mac3: ethernet@e4000 { phy-handle = <&sgmii_aqr_phy3>; - phy-connection-type = "sgmii-2500"; + phy-connection-type = "2500base-x"; sleep = <&rcpm 0x20000000>; };
arch/powerpc/include/asm/book3s/32/kup.h +8 -0
@@ -136,6 +136,14 @@ static inline void kuap_kernel_restore(struct pt_regs *regs, unsigned long kuap)if (kuap_is_disabled ())return ; +if (unlikely (kuap !=KUAP_NONE )) { + current->thread.kuap =KUAP_NONE ; +kuap_lock (kuap, false); + } + +if (likely (regs->kuap ==KUAP_NONE )) +return ; + current->thread.kuap = regs->kuap;kuap_unlock (regs->kuap, false);
arch/powerpc/include/asm/interrupt.h +2 -3
@@ -525,10 +525,9 @@ static __always_inline long ____##func(struct pt_regs *regs)/* kernel/traps.c */ DECLARE_INTERRUPT_HANDLER_NMI (system_reset_exception);#ifdef CONFIG_PPC_BOOK3S_64 -DECLARE_INTERRUPT_HANDLER_ASYNC (machine_check_exception); -#else -DECLARE_INTERRUPT_HANDLER_NMI (machine_check_exception); +DECLARE_INTERRUPT_HANDLER_ASYNC (machine_check_exception_async);#endif +DECLARE_INTERRUPT_HANDLER_NMI (machine_check_exception);DECLARE_INTERRUPT_HANDLER (SMIException);DECLARE_INTERRUPT_HANDLER (handle_hmi_exception);DECLARE_INTERRUPT_HANDLER (unknown_exception);
arch/powerpc/kernel/dma-iommu.c +9 -0
@@ -184,6 +184,15 @@ u64 dma_iommu_get_required_mask(struct device *dev)struct iommu_table *tbl =get_iommu_table_base (dev);u64 mask; +if (dev_is_pci (dev)) { +u64 bypass_mask =dma_direct_get_required_mask (dev); + +if (dma_iommu_dma_supported (dev, bypass_mask)) { +dev_info (dev,"%s: returning bypass mask 0x%llx\n" , __func__, bypass_mask); +return bypass_mask; + } + } +if (!tbl)return 0 ;
arch/powerpc/kernel/exceptions-64s.S +16 -9
@@ -1243,7 +1243,7 @@ EXC_COMMON_BEGIN(machine_check_common) li r10,MSR_RI mtmsrd r10,1 addi r3,r1,STACK_FRAME_OVERHEAD - bl machine_check_exception + bl machine_check_exception_async b interrupt_return_srr
@@ -1303,7 +1303,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_HVMODE) subi r12,r12,1 sth r12,PACA_IN_MCE(r13) - /* Invoke machine_check_exception to print MCE event and panic. */ + /* + * Invoke machine_check_exception to print MCE event and panic. + * This is the NMI version of the handler because we are called from + * the early handler which is a true NMI. + */ addi r3,r1,STACK_FRAME_OVERHEAD bl machine_check_exception
@@ -1665,27 +1669,30 @@ EXC_COMMON_BEGIN(program_check_common) */ andi. r10,r12,MSR_PR - bne 2f /* If userspace, go normal path */ + bne .Lnormal_stack /* If userspace, go normal path */ andis. r10,r12,(SRR1_PROGTM)@h - bne 1f /* If TM, emergency */ + bne .Lemergency_stack /* If TM, emergency */ cmpdi r1,-INT_FRAME_SIZE /* check if r1 is in userspace */ - blt 2f /* normal path if not */ + blt .Lnormal_stack /* normal path if not */ /* Use the emergency stack */ -1: andi. r10,r12,MSR_PR /* Set CR0 correctly for label */ +.Lemergency_stack: + andi. r10,r12,MSR_PR /* Set CR0 correctly for label */ /* 3 in EXCEPTION_PROLOG_COMMON */ mr r10,r1 /* Save r1 */ ld r1,PACAEMERGSP(r13) /* Use emergency stack */ subi r1,r1,INT_FRAME_SIZE /* alloc stack frame */ __ISTACK(program_check)=0 __GEN_COMMON_BODY program_check - b 3f -2: + b .Ldo_program_check + +.Lnormal_stack: __ISTACK(program_check)=1 __GEN_COMMON_BODY program_check -3: + +.Ldo_program_check: addi r3,r1,STACK_FRAME_OVERHEAD bl program_check_exception REST_NVGPRS(r1) /* instruction emulation may change GPRs */
arch/powerpc/kernel/traps.c +27 -16
73 lines not on this page · raw message
arch/powerpc/net/bpf_jit_comp32.c +4 -4
@@ -355,7 +355,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *PPC_LI32 (_R0, imm);EMIT (PPC_RAW_ADDC (dst_reg, dst_reg, _R0)); } -if (imm >=0 ) +if (imm >=0 || (BPF_OP (code) ==BPF_SUB && imm ==0x80000000 ))EMIT (PPC_RAW_ADDZE (dst_reg_h, dst_reg_h));else EMIT (PPC_RAW_ADDME (dst_reg_h, dst_reg_h));
@@ -623,7 +623,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *EMIT (PPC_RAW_LI (dst_reg_h,0 ));break ;case BPF_ALU |BPF_ARSH |BPF_X :/* (s32) dst >>= src */ -EMIT (PPC_RAW_SRAW (dst_reg_h, dst_reg, src_reg)); +EMIT (PPC_RAW_SRAW (dst_reg, dst_reg, src_reg));break ;case BPF_ALU64 |BPF_ARSH |BPF_X :/* (s64) dst >>= src */ bpf_set_seen_register (ctx, tmp_reg);
@@ -1073,7 +1073,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *break ;case BPF_JMP32 |BPF_JSET |BPF_K :/* andi does not sign-extend the immediate */ -if (imm >=-32768 && imm <32768 ) { +if (imm >=0 && imm <32768 ) {/* PPC_ANDI is _only/always_ dot-form */ EMIT (PPC_RAW_ANDI (_R0, dst_reg, imm)); }else {
@@ -1103,7 +1103,7 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *return -EOPNOTSUPP ; }if (BPF_CLASS (code) ==BPF_ALU && !fp->aux->verifier_zext && - !insn_is_zext (&insn[i +1 ])) + !insn_is_zext (&insn[i +1 ]) && !(BPF_OP (code) ==BPF_END && imm ==64 ))EMIT (PPC_RAW_LI (dst_reg_h,0 )); }
arch/powerpc/net/bpf_jit_comp64.c +25 -12
@@ -328,18 +328,25 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *EMIT (PPC_RAW_SUB (dst_reg, dst_reg, src_reg)); goto bpf_alu32_trunc;case BPF_ALU |BPF_ADD |BPF_K :/* (u32) dst += (u32) imm */ -case BPF_ALU |BPF_SUB |BPF_K :/* (u32) dst -= (u32) imm */ case BPF_ALU64 |BPF_ADD |BPF_K :/* dst += imm */ +if (!imm) { + goto bpf_alu32_trunc; + }else if (imm >=-32768 && imm <32768 ) { +EMIT (PPC_RAW_ADDI (dst_reg, dst_reg,IMM_L (imm))); + }else { +PPC_LI32 (b2p[TMP_REG_1 ], imm); +EMIT (PPC_RAW_ADD (dst_reg, dst_reg, b2p[TMP_REG_1 ])); + } + goto bpf_alu32_trunc; +case BPF_ALU |BPF_SUB |BPF_K :/* (u32) dst -= (u32) imm */ case BPF_ALU64 |BPF_SUB |BPF_K :/* dst -= imm */ -if (BPF_OP (code) ==BPF_SUB ) - imm = -imm; -if (imm) { -if (imm >=-32768 && imm <32768 ) -EMIT (PPC_RAW_ADDI (dst_reg, dst_reg,IMM_L (imm))); -else { -PPC_LI32 (b2p[TMP_REG_1 ], imm); -EMIT (PPC_RAW_ADD (dst_reg, dst_reg, b2p[TMP_REG_1 ])); - } +if (!imm) { + goto bpf_alu32_trunc; + }else if (imm >-32768 && imm <=32768 ) { +EMIT (PPC_RAW_ADDI (dst_reg, dst_reg,IMM_L (-imm))); + }else { +PPC_LI32 (b2p[TMP_REG_1 ], imm); +EMIT (PPC_RAW_SUB (dst_reg, dst_reg, b2p[TMP_REG_1 ])); } goto bpf_alu32_trunc;case BPF_ALU |BPF_MUL |BPF_X :/* (u32) dst *= (u32) src */
@@ -389,8 +396,14 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, struct codegen_context *case BPF_ALU64 |BPF_DIV |BPF_K :/* dst /= imm */ if (imm ==0 )return -EINVAL ; -else if (imm ==1 ) - goto bpf_alu32_trunc; +if (imm ==1 ) { +if (BPF_OP (code) ==BPF_DIV ) { + goto bpf_alu32_trunc; + }else { +EMIT (PPC_RAW_LI (dst_reg,0 )); +break ; + } + }PPC_LI32 (b2p[TMP_REG_1 ], imm);switch (BPF_CLASS (code)) {
arch/powerpc/platforms/pseries/eeh_pseries.c +4 -0
@@ -867,6 +867,10 @@ static int __init eeh_pseries_init(void)if (is_kdump_kernel () || reset_devices) {pr_info ("Issue PHB reset ...\n" );list_for_each_entry (phb, &hose_list, list_node) { +// Skip if the slot is empty +if (list_empty (&PCI_DN (phb->dn)->child_list)) +continue ; + pdn = list_first_entry(&PCI_DN(phb->dn)->child_list, struct pci_dn, list); config_addr =pseries_eeh_get_pe_config_addr (pdn);
arch/riscv/Makefile +6 -0
@@ -108,6 +108,12 @@ PHONY += vdso_install vdso_install: $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso $@ +ifeq ($(CONFIG_MMU),y) +prepare: vdso_prepare +vdso_prepare: prepare0 + $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso include/generated/vdso-offsets.h +endif + ifneq ($(CONFIG_XIP_KERNEL),y) ifeq ($(CONFIG_RISCV_M_MODE)$(CONFIG_SOC_CANAAN),yy) KBUILD_IMAGE := $(boot)/loader.bin
arch/riscv/include/asm/syscall.h +1 -0
@@ -82,4 +82,5 @@ static inline int syscall_get_arch(struct task_struct *task) #endif } +asmlinkage long sys_riscv_flush_icache (uintptr_t ,uintptr_t ,uintptr_t );#endif /* _ASM_RISCV_SYSCALL_H */
arch/riscv/include/asm/vdso.h +21 -16
@@ -8,27 +8,32 @@#ifndef _ASM_RISCV_VDSO_H#define _ASM_RISCV_VDSO_H -#include <linux/types.h> -#ifndef CONFIG_GENERIC_TIME_VSYSCALL -struct vdso_data { -}; -#endif +/* +* All systems with an MMU have a VDSO, but systems without an MMU don't +* support shared libraries and therefor don't have one. +*/ +#ifdef CONFIG_MMU +#include <linux/types.h> /* -* The VDSO symbols are mapped into Linux so we can just use regular symbol -* addressing to get their offsets in userspace. The symbols are mapped at an -* offset of 0, but since the linker must support setting weak undefined -* symbols to the absolute address 0 it also happens to support other low -* addresses even when the code model suggests those low addresses would not -* otherwise be availiable. +* All systems with an MMU have a VDSO, but systems without an MMU don't +* support shared libraries and therefor don't have one. */ +#ifdef CONFIG_MMU + +#define __VVAR_PAGES 1 + +#ifndef __ASSEMBLY__ +#include <generated/vdso-offsets.h> +#define VDSO_SYMBOL (base, name) \ -({ \ - extern const char __vdso_##name[]; \ - (void __user *)((unsigned long)(base) + __vdso_##name); \ -}) + (void __user *)((unsigned long)(base) + __vdso_##name##_offset) + +#endif /* CONFIG_MMU */ + +#endif /* !__ASSEMBLY__ */ -asmlinkage long sys_riscv_flush_icache (uintptr_t ,uintptr_t ,uintptr_t ); +#endif /* CONFIG_MMU */ #endif /* _ASM_RISCV_VDSO_H */
arch/riscv/include/uapi/asm/unistd.h +2 -1
@@ -18,9 +18,10 @@#ifdef __LP64__#define __ARCH_WANT_NEW_STAT#define __ARCH_WANT_SET_GET_RLIMIT -#define __ARCH_WANT_SYS_CLONE3#endif /* __LP64__ */ +#define __ARCH_WANT_SYS_CLONE3 +#include <asm-generic/unistd.h> /*
arch/riscv/kernel/syscall_table.c +0 -1
@@ -7,7 +7,6 @@#include <linux/linkage.h> #include <linux/syscalls.h> #include <asm-generic/syscalls.h> -#include <asm/vdso.h> #include <asm/syscall.h> #undef __SYSCALL
arch/riscv/kernel/vdso.c +33 -20
99 lines not on this page · raw message
arch/riscv/kernel/vdso/Makefile +11 -14
@@ -23,10 +23,10 @@ ifneq ($(c-gettimeofday-y),) endif # Build rules -targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds vdso-syms.S +targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) -obj-y += vdso.o vdso-syms.o +obj-y += vdso.o CPPFLAGS_vdso.lds += -P -C -U$(ARCH) # Disable -pg to prevent insert call site
@@ -43,20 +43,22 @@ $(obj)/vdso.o: $(obj)/vdso.so # link rule for the .so file, .lds has to be first $(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE $(call if_changed,vdsold) -LDFLAGS_vdso.so.dbg = -shared -s -soname=linux-vdso.so.1 \ +LDFLAGS_vdso.so.dbg = -shared -S -soname=linux-vdso.so.1 \ --build-id=sha1 --hash-style=both --eh-frame-hdr -# We also create a special relocatable object that should mirror the symbol -# table and layout of the linked DSO. With ld --just-symbols we can then -# refer to these symbols in the kernel code rather than hand-coded addresses. -$(obj)/vdso-syms.S: $(obj)/vdso.so FORCE - $(call if_changed,so2s) - # strip rule for the .so file $(obj)/%.so: OBJCOPYFLAGS := -S $(obj)/%.so: $(obj)/%.so.dbg FORCE $(call if_changed,objcopy) +# Generate VDSO offsets using helper script +gen-vdsosym := $(srctree)/$(src)/gen_vdso_offsets.sh +quiet_cmd_vdsosym = VDSOSYM $@ + cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ + +include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE + $(call if_changed,vdsosym) + # actual build commands # The DSO images are built using a special linker script # Make sure only to export the intended __vdso_xxx symbol offsets.
@@ -65,11 +67,6 @@ quiet_cmd_vdsold = VDSOLD $@ $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-syms)) [email protected] $@ && \ rm [email protected] -# Extracts symbol offsets from the VDSO, converting them into an assembly file -# that contains the same symbols at the same offsets. -quiet_cmd_so2s = SO2S $@ - cmd_so2s = $(NM) -D $< | $(srctree)/$(src)/so2s.sh > $@ - # install commands for the unstripped file quiet_cmd_vdso_install = INSTALL $@ cmd_vdso_install = cp $(obj)/[email protected] $(MODLIB)/vdso/$@
arch/riscv/kernel/vdso/gen_vdso_offsets.sh new file +5 -0
@@ -0,0 +1,5 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +LC_ALL=C +sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define \2_offset\t0x\1/p'
arch/riscv/kernel/vdso/so2s.sh deleted +0 -6
@@ -1,6 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0+ -# Copyright 2020 Palmer Dabbelt <[email protected]> - -sed 's!\([0-9a-f]*\) T \([a-z0-9_]*\)\(@@LINUX_4.15\)*!.global \2\n.set \2,0x\1!' \ -| grep '^\.'
arch/riscv/kernel/vdso/vdso.lds.S +2 -1
@@ -3,12 +3,13 @@ * Copyright (C) 2012 Regents of the University of California */ #include <asm/page.h> +#include <asm/vdso.h> OUTPUT_ARCH(riscv) SECTIONS { - PROVIDE(_vdso_data = . + PAGE_SIZE); + PROVIDE(_vdso_data = . - __VVAR_PAGES * PAGE_SIZE); . = SIZEOF_HEADERS; .hash : { *(.hash) } :text
arch/riscv/mm/cacheflush.c +2 -0
@@ -16,6 +16,8 @@ static void ipi_remote_fence_i(void *info)void flush_icache_all (void ) { +local_flush_icache_all (); +if (IS_ENABLED (CONFIG_RISCV_SBI ))sbi_remote_fence_i (NULL );else
arch/s390/net/bpf_jit_comp.c +1 -1
@@ -1826,7 +1826,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *fp) jit.addrs =kvcalloc (fp->len +1 ,sizeof (*jit.addrs),GFP_KERNEL );if (jit.addrs ==NULL ) { fp = orig_fp; - goto out; + goto free_addrs; }/* * Three initial passes:
arch/x86/Kconfig +1 -1
@@ -1400,7 +1400,7 @@ config HIGHMEM4G config HIGHMEM64G bool "64GB" - depends on !M486SX && !M486 && !M586 && !M586TSC && !M586MMX && !MGEODE_LX && !MGEODEGX1 && !MCYRIXIII && !MELAN && !MWINCHIPC6 && !WINCHIP3D && !MK6 + depends on !M486SX && !M486 && !M586 && !M586TSC && !M586MMX && !MGEODE_LX && !MGEODEGX1 && !MCYRIXIII && !MELAN && !MWINCHIPC6 && !MWINCHIP3D && !MK6 select X86_PAE help Select this if you have a 32-bit processor and more than 4
arch/x86/include/asm/entry-common.h +1 -1
@@ -25,7 +25,7 @@ static __always_inline void arch_check_user_regs(struct pt_regs *regs)* For !SMAP hardware we patch out CLAC on entry. */ if (boot_cpu_has (X86_FEATURE_SMAP ) || - (IS_ENABLED (CONFIG_64_BIT ) &&boot_cpu_has (X86_FEATURE_XENPV ))) + (IS_ENABLED (CONFIG_64BIT ) &&boot_cpu_has (X86_FEATURE_XENPV ))) mask |=X86_EFLAGS_AC ;WARN_ON_ONCE (flags & mask);
arch/x86/kernel/cpu/common.c +1 -0
@@ -320,6 +320,7 @@ static __always_inline void setup_smap(struct cpuinfo_x86 *c)#ifdef CONFIG_X86_SMAP cr4_set_bits (X86_CR4_SMAP );#else +clear_cpu_cap (c,X86_FEATURE_SMAP );cr4_clear_bits (X86_CR4_SMAP );#endif }
arch/x86/kernel/early-quirks.c +0 -6
@@ -714,12 +714,6 @@ static struct chipset early_qrk[] __initdata = {*/ {PCI_VENDOR_ID_INTEL ,0x0f00 , PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, - { PCI_VENDOR_ID_INTEL, 0x3e20, - PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, - { PCI_VENDOR_ID_INTEL, 0x3ec4, - PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, - { PCI_VENDOR_ID_INTEL, 0x8a12, - PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, force_disable_hpet}, { PCI_VENDOR_ID_BROADCOM, 0x4331, PCI_CLASS_NETWORK_OTHER, PCI_ANY_ID, 0, apple_airport_reset}, {}
arch/x86/kernel/fpu/signal.c +8 -3
@@ -379,9 +379,14 @@ static int __fpu_restore_sig(void __user *buf, void __user *buf_fx, sizeof(fpu->state.fxsave)))return -EFAULT ; -/* Reject invalid MXCSR values. */ -if (fpu->state.fxsave.mxcsr & ~mxcsr_feature_mask) -return -EINVAL ; +if (IS_ENABLED (CONFIG_X86_64 )) { +/* Reject invalid MXCSR values. */ +if (fpu->state.fxsave.mxcsr & ~mxcsr_feature_mask) +return -EINVAL ; + }else { +/* Mask invalid bits out for historical reasons (broken hardware). */ + fpu->state.fxsave.mxcsr &= ~mxcsr_feature_mask; + }/* Enforce XFEATURE_MASK_FPSSE when XSAVE is enabled */ if (use_xsave ())
arch/x86/kernel/hpet.c +81 -0
99 lines not on this page · raw message
arch/x86/kernel/sev-shared.c +2 -0
@@ -130,6 +130,8 @@ static enum es_result sev_es_ghcb_hv_call(struct ghcb *ghcb, }else { ret =ES_VMM_ERROR ; } + }else if (ghcb->save.sw_exit_info_1 &0xffffffff ) { + ret =ES_VMM_ERROR ; }else { ret =ES_OK ; }
arch/x86/platform/olpc/olpc.c +1 -1
@@ -274,7 +274,7 @@ static struct olpc_ec_driver ec_xo1_driver = {static struct olpc_ec_driver ec_xo1_5_driver = { .ec_cmd = olpc_xo1_ec_cmd, -#ifdef CONFIG_OLPC_XO1_5_SCI +#ifdef CONFIG_OLPC_XO15_SCI/* * XO-1.5 EC wakeups are available when olpc-xo15-sci driver is * compiled in
arch/xtensa/include/asm/kmem_layout.h +1 -1
@@ -78,7 +78,7 @@#endif #define XCHAL_KIO_SIZE 0x10000000 -#if (!XCHAL_HAVE_PTP_MMU ||XCHAL_HAVE_SPANNING_WAY ) && defined(CONFIG_OF ) +#if (!XCHAL_HAVE_PTP_MMU ||XCHAL_HAVE_SPANNING_WAY ) && defined(CONFIG_USE_OF )#define XCHAL_KIO_PADDR xtensa_get_kio_paddr()#ifndef __ASSEMBLY__extern unsigned long xtensa_kio_paddr;
arch/xtensa/kernel/irq.c +1 -1
@@ -145,7 +145,7 @@ unsigned xtensa_get_ext_irq_no(unsigned irq)void __init init_IRQ (void ) { -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF irqchip_init ();#else #ifdef CONFIG_HAVE_SMP
arch/xtensa/kernel/setup.c +6 -6
@@ -63,7 +63,7 @@ extern unsigned long initrd_end;extern int initrd_below_start_ok;#endif -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF void *dtb_start = __dtb_start;#endif
@@ -125,7 +125,7 @@ __tagtable(BP_TAG_INITRD, parse_tag_initrd);#endif /* CONFIG_BLK_DEV_INITRD */ -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF static int __init parse_tag_fdt (const bp_tag_t *tag) {
@@ -135,7 +135,7 @@ static int __init parse_tag_fdt(const bp_tag_t *tag)__tagtable (BP_TAG_FDT , parse_tag_fdt); -#endif /* CONFIG_OF */ +#endif /* CONFIG_USE_OF */ static int __init parse_tag_cmdline (const bp_tag_t * tag) {
@@ -183,7 +183,7 @@ static int __init parse_bootparam(const bp_tag_t *tag) }#endif -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF #if !XCHAL_HAVE_PTP_MMU ||XCHAL_HAVE_SPANNING_WAY unsigned long xtensa_kio_paddr =XCHAL_KIO_DEFAULT_PADDR ;
@@ -232,7 +232,7 @@ void __init early_init_devtree(void *params) strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); } -#endif /* CONFIG_OF */ +#endif /* CONFIG_USE_OF */ /* * Initialize architecture. (Early stage)
@@ -253,7 +253,7 @@ void __init init_arch(bp_tag_t *bp_start)if (bp_start)parse_bootparam (bp_start); -#ifdef CONFIG_OF +#ifdef CONFIG_USE_OF early_init_devtree (dtb_start);#endif
arch/xtensa/mm/mmu.c +1 -1
@@ -101,7 +101,7 @@ void init_mmu(void)void init_kio (void ) { -#if XCHAL_HAVE_PTP_MMU &&XCHAL_HAVE_SPANNING_WAY && defined(CONFIG_OF ) +#if XCHAL_HAVE_PTP_MMU &&XCHAL_HAVE_SPANNING_WAY && defined(CONFIG_USE_OF )/* * Update the IO area mapping in case xtensa_kio_paddr has changed */
drivers/bus/ti-sysc.c +4 -0
@@ -1468,6 +1468,9 @@ static const struct sysc_revision_quirk sysc_revision_quirks[] = {/* Quirks that need to be set based on detected module */ SYSC_QUIRK ("aess" ,0 ,0 ,0x10 , -ENODEV ,0x40000000 ,0xffffffff ,SYSC_MODULE_QUIRK_AESS ), +/* Errata i893 handling for dra7 dcan1 and 2 */ +SYSC_QUIRK ("dcan" ,0x4ae3c000 ,0x20 , -ENODEV , -ENODEV ,0xa3170504 ,0xffffffff , +SYSC_QUIRK_CLKDM_NOAUTO ),SYSC_QUIRK ("dcan" ,0x48480000 ,0x20 , -ENODEV , -ENODEV ,0xa3170504 ,0xffffffff ,SYSC_QUIRK_CLKDM_NOAUTO ), SYSC_QUIRK("dss", 0x4832a000, 0, 0x10, 0x14, 0x00000020, 0xffffffff,
@@ -2955,6 +2958,7 @@ static int sysc_init_soc(struct sysc *ddata)break ;case SOC_AM3 :sysc_add_disabled (0x48310000 );/* rng */ +break ;default :break ; }
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -0
@@ -1082,6 +1082,7 @@ struct amdgpu_device {bool no_hw_access;struct pci_saved_state *pci_state; +pci_channel_state_t pci_channel_state;struct amdgpu_reset_control *reset_cntl; };
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +1 -0
@@ -563,6 +563,7 @@ kfd_mem_dmaunmap_userptr(struct kgd_mem *mem,dma_unmap_sgtable (adev->dev, ttm->sg, direction,0 );sg_free_table (ttm->sg); +kfree (ttm->sg); ttm->sg =NULL ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +6 -0
@@ -5329,6 +5329,8 @@ pci_ers_result_t amdgpu_pci_error_detected(struct pci_dev *pdev, pci_channel_stareturn PCI_ERS_RESULT_DISCONNECT ; } + adev->pci_channel_state = state; +switch (state) {case pci_channel_io_normal:return PCI_ERS_RESULT_CAN_RECOVER ;
@@ -5471,6 +5473,10 @@ void amdgpu_pci_resume(struct pci_dev *pdev)DRM_INFO ("PCI error: resume callback!!\n" ); +/* Only continue execution for the case of pci_channel_io_frozen */ +if (adev->pci_channel_state != pci_channel_io_frozen) +return ; +for (i =0 ; i <AMDGPU_MAX_RINGS ; ++i) {struct amdgpu_ring *ring = adev->rings[i];
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +12 -2
@@ -31,6 +31,8 @@/* delay 0.1 second to enable gfx off feature */ #define GFX_OFF_DELAY_ENABLE msecs_to_jiffies(100) +#define GFX_OFF_NO_DELAY 0 +/* * GPU GFX IP block helpers function. */
@@ -558,6 +560,8 @@ int amdgpu_gfx_enable_kcq(struct amdgpu_device *adev)void amdgpu_gfx_off_ctrl (struct amdgpu_device *adev,bool enable) { +unsigned long delay =GFX_OFF_DELAY_ENABLE ; +if (!(adev->pm.pp_feature &PP_GFXOFF_MASK ))return ;
@@ -573,8 +577,14 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable) adev->gfx.gfx_off_req_count--; -if (adev->gfx.gfx_off_req_count ==0 && !adev->gfx.gfx_off_state) -schedule_delayed_work (&adev->gfx.gfx_off_delay_work,GFX_OFF_DELAY_ENABLE ); +if (adev->gfx.gfx_off_req_count ==0 && + !adev->gfx.gfx_off_state) { +/* If going to s2idle, no need to wait */ +if (adev->in_s0ix) + delay =GFX_OFF_NO_DELAY ; +schedule_delayed_work (&adev->gfx.gfx_off_delay_work, + delay); + } }else {if (adev->gfx.gfx_off_req_count ==0 ) {cancel_delayed_work_sync (&adev->gfx.gfx_off_delay_work);
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_link_encoder.h +1 -0
@@ -118,6 +118,7 @@ struct dcn10_link_enc_registers {uint32_t RDPCSTX_PHY_CNTL4 ;uint32_t RDPCSTX_PHY_CNTL5 ;uint32_t RDPCSTX_PHY_CNTL6 ; +uint32_t RDPCSPIPE_PHY_CNTL6 ;uint32_t RDPCSTX_PHY_CNTL7 ;uint32_t RDPCSTX_PHY_CNTL8 ;uint32_t RDPCSTX_PHY_CNTL9 ;
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.c +64 -2
87 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dio_link_encoder.h +13 -1
@@ -69,6 +69,7 @@SRI (RDPCSTX_PHY_CNTL4 ,RDPCSTX , id), \SRI (RDPCSTX_PHY_CNTL5 ,RDPCSTX , id), \SRI (RDPCSTX_PHY_CNTL6 ,RDPCSTX , id), \ +SRI (RDPCSPIPE_PHY_CNTL6 ,RDPCSPIPE , id), \SRI (RDPCSTX_PHY_CNTL7 ,RDPCSTX , id), \SRI (RDPCSTX_PHY_CNTL8 ,RDPCSTX , id), \ SRI(RDPCSTX_PHY_CNTL9, RDPCSTX, id), \
@@ -115,7 +116,9 @@LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL6 ,RDPCS_PHY_DP_TX2_MPLL_EN , mask_sh),\LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL6 ,RDPCS_PHY_DP_TX3_MPLL_EN , mask_sh),\LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL6 ,RDPCS_PHY_DPALT_DP4 , mask_sh),\ -LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL6 ,RDPCS_PHY_DPALT_DISABLE , mask_sh),\ +LE_SF (RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6 ,RDPCS_PHY_DPALT_DP4 , mask_sh),\ +LE_SF (RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6 ,RDPCS_PHY_DPALT_DISABLE , mask_sh),\ +LE_SF (RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6 ,RDPCS_PHY_DPALT_DISABLE_ACK , mask_sh),\LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL7 ,RDPCS_PHY_DP_MPLLB_FRACN_QUOT , mask_sh),\LE_SF (RDPCSTX0_RDPCSTX_PHY_CNTL7 ,RDPCS_PHY_DP_MPLLB_FRACN_DEN , mask_sh),\ LE_SF(RDPCSTX0_RDPCSTX_PHY_CNTL8, RDPCS_PHY_DP_MPLLB_SSC_PEAK, mask_sh),\
@@ -243,4 +246,13 @@ void dcn31_link_encoder_disable_output(struct link_encoder *enc, enum signal_type signal); +/* +* Check whether USB-C DP Alt mode is disabled +*/ +bool dcn31_link_encoder_is_in_alt_mode ( +struct link_encoder *enc); + +void dcn31_link_encoder_get_max_link_cap (struct link_encoder *enc, +struct dc_link_settings *link_settings); +#endif /* __DC_LINK_ENCODER__DCN31_H__ */
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_resource.c +7 -1
@@ -928,7 +928,7 @@ static const struct dc_debug_options debug_defaults_drv = { .disable_dcc = DCC_ENABLE, .vsr_support = true, .performance_trace = false, - .max_downscale_src_width = 7680,/*upto 8K*/ + .max_downscale_src_width = 3840,/*upto 4K*/ .disable_pplib_wm_range = false, .scl_reset_length10 = true, .sanity_checks = false,
@@ -1284,6 +1284,12 @@ static struct stream_encoder *dcn31_stream_encoder_create(if (!enc1 || !vpg || !afmt)return NULL ; +if (ctx->asic_id.chip_family ==FAMILY_YELLOW_CARP && + ctx->asic_id.hw_internal_rev ==YELLOW_CARP_B0 ) { +if ((eng_id ==ENGINE_ID_DIGC ) || (eng_id ==ENGINE_ID_DIGD )) + eng_id = eng_id +3 ;// For B0 only. C->F, D->G. + } + dcn30_dio_stream_encoder_construct(enc1, ctx, ctx->dc_bios, eng_id, vpg, afmt, &stream_enc_regs[eng_id],
drivers/gpu/drm/amd/display/include/dal_asic_id.h +1 -1
@@ -227,7 +227,7 @@ enum {#define FAMILY_YELLOW_CARP 146#define YELLOW_CARP_A0 0x01 -#define YELLOW_CARP_B0 0x02 // TODO: DCN31 - update with correct B0 ID +#define YELLOW_CARP_B0 0x1A#define YELLOW_CARP_UNKNOWN 0xFF#ifndef ASICREV_IS_YELLOW_CARP
drivers/gpu/drm/amd/include/asic_reg/dpcs/dpcs_4_2_0_offset.h +27 -0
@@ -11932,5 +11932,32 @@#define ixDPCSSYS_CR4_RAWLANEX_DIG_PCS_XF_RX_OVRD_OUT_2 0xe0c7#define ixDPCSSYS_CR4_RAWLANEX_DIG_PCS_XF_TX_OVRD_IN_2 0xe0c8 +//RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6 +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DP4__SHIFT 0x10 +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE__SHIFT 0x11 +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_ACK__SHIFT 0x12 +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DP4_MASK 0x00010000L +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_MASK 0x00020000L +#define RDPCSPIPE0_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_ACK_MASK 0x00040000L + +//RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6 +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DP4__SHIFT 0x10 +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE__SHIFT 0x11 +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_ACK__SHIFT 0x12 +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DP4_MASK 0x00010000L +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_MASK 0x00020000L +#define RDPCSPIPE1_RDPCSPIPE_PHY_CNTL6__RDPCS_PHY_DPALT_DISABLE_ACK_MASK 0x00040000L + +//[Note] Hack. RDPCSPIPE only has 2 instances. +#define regRDPCSPIPE0_RDPCSPIPE_PHY_CNTL6 0x2d73 +#define regRDPCSPIPE0_RDPCSPIPE_PHY_CNTL6_BASE_IDX 2 +#define regRDPCSPIPE1_RDPCSPIPE_PHY_CNTL6 0x2e4b +#define regRDPCSPIPE1_RDPCSPIPE_PHY_CNTL6_BASE_IDX 2 +#define regRDPCSPIPE2_RDPCSPIPE_PHY_CNTL6 0x2d73 +#define regRDPCSPIPE2_RDPCSPIPE_PHY_CNTL6_BASE_IDX 2 +#define regRDPCSPIPE3_RDPCSPIPE_PHY_CNTL6 0x2e4b +#define regRDPCSPIPE3_RDPCSPIPE_PHY_CNTL6_BASE_IDX 2 +#define regRDPCSPIPE4_RDPCSPIPE_PHY_CNTL6 0x2d73 +#define regRDPCSPIPE4_RDPCSPIPE_PHY_CNTL6_BASE_IDX 2#endif
drivers/gpu/drm/i915/display/icl_dsi.c +48 -0
87 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_audio.c +3 -2
@@ -1308,8 +1308,9 @@ static void i915_audio_component_init(struct drm_i915_private *dev_priv)else aud_freq = aud_freq_init; -/* use BIOS provided value for TGL unless it is a known bad value */ -if (IS_TIGERLAKE (dev_priv) && aud_freq_init !=AUD_FREQ_TGL_BROKEN ) +/* use BIOS provided value for TGL and RKL unless it is a known bad value */ +if ((IS_TIGERLAKE (dev_priv) ||IS_ROCKETLAKE (dev_priv)) && + aud_freq_init !=AUD_FREQ_TGL_BROKEN ) aud_freq = aud_freq_init; drm_dbg_kms(&dev_priv->drm, "use AUD_FREQ_CNTRL of 0x%x (init value 0x%x)\n",
drivers/gpu/drm/i915/display/intel_bios.c +16 -6
@@ -451,13 +451,23 @@ parse_lfp_backlight(struct drm_i915_private *i915, } i915->vbt.backlight.type =INTEL_BACKLIGHT_DISPLAY_DDI ; -if (bdb->version >=191 && -get_blocksize (backlight_data) >=sizeof (*backlight_data)) { -const struct lfp_backlight_control_method *method; +if (bdb->version >=191 ) { +size_t exp_size; - method = &backlight_data->backlight_control[panel_type]; - i915->vbt.backlight.type = method->type; - i915->vbt.backlight.controller = method->controller; +if (bdb->version >=236 ) + exp_size =sizeof (struct bdb_lfp_backlight_data ); +else if (bdb->version >=234 ) + exp_size =EXP_BDB_LFP_BL_DATA_SIZE_REV_234 ; +else + exp_size =EXP_BDB_LFP_BL_DATA_SIZE_REV_191 ; + +if (get_blocksize (backlight_data) >= exp_size) { +const struct lfp_backlight_control_method *method; + + method = &backlight_data->backlight_control[panel_type]; + i915->vbt.backlight.type = method->type; + i915->vbt.backlight.controller = method->controller; + } } i915->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
drivers/gpu/drm/i915/display/intel_ddi.c +7 -1
@@ -3899,7 +3899,13 @@ void hsw_ddi_get_config(struct intel_encoder *encoder,static void intel_ddi_sync_state (struct intel_encoder *encoder,const struct intel_crtc_state *crtc_state) { -if (intel_crtc_has_dp_encoder (crtc_state)) +struct drm_i915_private *i915 =to_i915 (encoder->base.dev); +enum phy phy =intel_port_to_phy (i915, encoder->port); + +if (intel_phy_is_tc (i915, phy)) +intel_tc_port_sanitize (enc_to_dig_port (encoder)); + +if (crtc_state &&intel_crtc_has_dp_encoder (crtc_state))intel_dp_sync_state (encoder, crtc_state); }
drivers/gpu/drm/i915/display/intel_display.c +5 -15
@@ -12933,18 +12933,16 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)readout_plane_state (dev_priv);for_each_intel_encoder (dev, encoder) { +struct intel_crtc_state *crtc_state =NULL ; + pipe =0 ;if (encoder->get_hw_state (encoder, &pipe)) { -struct intel_crtc_state *crtc_state; - crtc =intel_get_crtc_for_pipe (dev_priv, pipe); crtc_state =to_intel_crtc_state (crtc->base.state); encoder->base.crtc = &crtc->base;intel_encoder_get_config (encoder, crtc_state); -if (encoder->sync_state) - encoder->sync_state (encoder, crtc_state);/* read out to slave crtc as well for bigjoiner */ if (crtc_state->bigjoiner) {
@@ -12959,6 +12957,9 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) encoder->base.crtc =NULL ; } +if (encoder->sync_state) + encoder->sync_state (encoder, crtc_state); + drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] hw state readout: %s, pipe %c\n", encoder->base.base.id, encoder->base.name,
@@ -13241,17 +13242,6 @@ intel_modeset_setup_hw_state(struct drm_device *dev,intel_modeset_readout_hw_state (dev);/* HW state is read out, now we need to sanitize this mess. */ - -/* Sanitize the TypeC port mode upfront, encoders depend on this */ -for_each_intel_encoder (dev, encoder) { -enum phy phy =intel_port_to_phy (dev_priv, encoder->port); - -/* We need to sanitize only the MST primary port. */ -if (encoder->type !=INTEL_OUTPUT_DP_MST && -intel_phy_is_tc (dev_priv, phy)) -intel_tc_port_sanitize (enc_to_dig_port (encoder)); - } -get_encoder_power_domains (dev_priv);if (HAS_PCH_IBX (dev_priv))
drivers/gpu/drm/i915/display/intel_vbt_defs.h +5 -0
@@ -814,6 +814,11 @@ struct lfp_brightness_level {u16 reserved; } __packed; +#define EXP_BDB_LFP_BL_DATA_SIZE_REV_191 \ + offsetof(struct bdb_lfp_backlight_data, brightness_level) +#define EXP_BDB_LFP_BL_DATA_SIZE_REV_234 \ + offsetof(struct bdb_lfp_backlight_data, brightness_precision_bits) +struct bdb_lfp_backlight_data {u8 entry_size;struct lfp_backlight_data_entry data[16 ];
drivers/gpu/drm/i915/gem/i915_gem_shrinker.c +5 -2
@@ -118,7 +118,7 @@ i915_gem_shrink(struct i915_gem_ww_ctx *ww,intel_wakeref_t wakeref =0 ;unsigned long count =0 ;unsigned long scanned =0 ; -int err; +int err =0 ;/* CHV + VTD workaround use stop_machine(); need to trylock vm->mutex */ bool trylock_vm = !ww &&intel_vm_no_concurrent_access_wa (i915);
@@ -242,12 +242,15 @@ i915_gem_shrink(struct i915_gem_ww_ctx *ww,list_splice_tail (&still_in_list, phase->list);spin_unlock_irqrestore (&i915->mm.obj_lock, flags);if (err) -return err; +break ; }if (shrink &I915_SHRINK_BOUND )intel_runtime_pm_put (&i915->runtime_pm, wakeref); +if (err) +return err; +if (nr_scanned) *nr_scanned += scanned;return count;
drivers/gpu/drm/i915/i915_reg.h +6 -0
@@ -8113,6 +8113,7 @@ enum {# define CHICKEN3_DGMG_DONE_FIX_DISABLE (1 << 2)#define CHICKEN_PAR1_1 _MMIO(0x42080) +#define IGNORE_KVMR_PIPE_A REG_BIT(23)#define KBL_ARB_FILL_SPARE_22 REG_BIT(22)#define DIS_RAM_BYPASS_PSR2_MAN_TRACK (1 << 16)#define SKL_DE_COMPRESSED_HASH_MODE (1 << 15)
@@ -8150,6 +8151,11 @@ enum {#define HSW_SPR_STRETCH_MAX_X1 REG_FIELD_PREP(HSW_SPR_STRETCH_MAX_MASK, 3)#define HSW_FBCQ_DIS (1 << 22)#define BDW_DPRS_MASK_VBLANK_SRD (1 << 0) +#define SKL_PLANE1_STRETCH_MAX_MASK REG_GENMASK(1, 0) +#define SKL_PLANE1_STRETCH_MAX_X8 REG_FIELD_PREP(SKL_PLANE1_STRETCH_MAX_MASK, 0) +#define SKL_PLANE1_STRETCH_MAX_X4 REG_FIELD_PREP(SKL_PLANE1_STRETCH_MAX_MASK, 1) +#define SKL_PLANE1_STRETCH_MAX_X2 REG_FIELD_PREP(SKL_PLANE1_STRETCH_MAX_MASK, 2) +#define SKL_PLANE1_STRETCH_MAX_X1 REG_FIELD_PREP(SKL_PLANE1_STRETCH_MAX_MASK, 3)#define CHICKEN_PIPESL_1 (pipe) _MMIO_PIPE(pipe, _CHICKEN_PIPESL_1_A, _CHICKEN_PIPESL_1_B)#define _CHICKEN_TRANS_A 0x420c0
drivers/gpu/drm/i915/intel_pm.c +12 -0
@@ -76,6 +76,8 @@ struct intel_wm_config {static void gen9_init_clock_gating (struct drm_i915_private *dev_priv) { +enum pipe pipe; +if (HAS_LLC (dev_priv)) {/* * WaCompressedResourceDisplayNewHashMode:skl,kbl
@@ -89,6 +91,16 @@ static void gen9_init_clock_gating(struct drm_i915_private *dev_priv) SKL_DE_COMPRESSED_HASH_MODE); } +for_each_pipe (dev_priv, pipe) { +/* +* "Plane N strech max must be programmed to 11b (x1) +* when Async flips are enabled on that plane." +*/ +if (!IS_GEMINILAKE (dev_priv) &&intel_vtd_active ()) +intel_uncore_rmw (&dev_priv->uncore,CHICKEN_PIPESL_1 (pipe), +SKL_PLANE1_STRETCH_MAX_MASK ,SKL_PLANE1_STRETCH_MAX_X1 ); + } +/* See Bspec note for PSR2_CTL bit 31, Wa#828:skl,bxt,kbl,cfl */ intel_uncore_write (&dev_priv->uncore,CHICKEN_PAR1_1 ,intel_uncore_read (&dev_priv->uncore,CHICKEN_PAR1_1 ) |SKL_EDP_PSR_FIX_RDWRAP );
drivers/gpu/drm/nouveau/dispnv50/crc.c +1 -0
@@ -704,6 +704,7 @@ static const struct file_operations nv50_crc_flip_threshold_fops = { .open = nv50_crc_debugfs_flip_threshold_open, .read = seq_read, .write = nv50_crc_debugfs_flip_threshold_set, + .release = single_release, };int nv50_head_crc_late_register (struct nv50_head *head)
drivers/gpu/drm/nouveau/dispnv50/head.c +1 -1
@@ -52,6 +52,7 @@ nv50_head_flush_clr(struct nv50_head *head,void nv50_head_flush_set_wndw (struct nv50_head *head,struct nv50_head_atom *asyh) { +if (asyh->set.curs ) head->func->curs_set (head, asyh);if (asyh->set.olut ) { asyh->olut.offset = nv50_lut_load(&head->olut, asyh->olut.buffer,
@@ -67,7 +68,6 @@ nv50_head_flush_set(struct nv50_head *head, struct nv50_head_atom *asyh)if (asyh->set.view ) head->func->view (head, asyh);if (asyh->set.mode ) head->func->mode (head, asyh);if (asyh->set.core ) head->func->core_set (head, asyh); -if (asyh->set.curs ) head->func->curs_set (head, asyh);if (asyh->set.base ) head->func->base (head, asyh);if (asyh->set.ovly ) head->func->ovly (head, asyh);if (asyh->set.dither ) head->func->dither (head, asyh);
drivers/gpu/drm/nouveau/include/nvif/class.h +2 -0
@@ -71,6 +71,7 @@#define PASCAL_CHANNEL_GPFIFO_A /* cla06f.h */ 0x0000c06f#define VOLTA_CHANNEL_GPFIFO_A /* clc36f.h */ 0x0000c36f#define TURING_CHANNEL_GPFIFO_A /* clc36f.h */ 0x0000c46f +#define AMPERE_CHANNEL_GPFIFO_B /* clc36f.h */ 0x0000c76f#define NV50_DISP /* cl5070.h */ 0x00005070#define G82_DISP /* cl5070.h */ 0x00008270
@@ -200,6 +201,7 @@#define PASCAL_DMA_COPY_B 0x0000c1b5#define VOLTA_DMA_COPY_A 0x0000c3b5#define TURING_DMA_COPY_A 0x0000c5b5 +#define AMPERE_DMA_COPY_B 0x0000c7b5#define FERMI_DECOMPRESS 0x000090b8
drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h +1 -0
@@ -77,4 +77,5 @@ int gp100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, structint gp10b_fifo_new (struct nvkm_device *,enum nvkm_subdev_type ,int inst,struct nvkm_fifo **);int gv100_fifo_new (struct nvkm_device *,enum nvkm_subdev_type ,int inst,struct nvkm_fifo **);int tu102_fifo_new (struct nvkm_device *,enum nvkm_subdev_type ,int inst,struct nvkm_fifo **); +int ga102_fifo_new (struct nvkm_device *,enum nvkm_subdev_type ,int inst,struct nvkm_fifo **);#endif
drivers/gpu/drm/nouveau/nouveau_bo.c +1 -0
@@ -844,6 +844,7 @@ nouveau_bo_move_init(struct nouveau_drm *drm) struct ttm_resource *, struct ttm_resource *);int (*init)(struct nouveau_channel *,u32 handle); } _methods[] = { + { "COPY", 4, 0xc7b5, nve0_bo_move_copy, nve0_bo_move_init }, { "COPY", 4, 0xc5b5, nve0_bo_move_copy, nve0_bo_move_init }, { "GRCE", 0, 0xc5b5, nve0_bo_move_copy, nvc0_bo_move_init }, { "COPY", 4, 0xc3b5, nve0_bo_move_copy, nve0_bo_move_init },
drivers/gpu/drm/nouveau/nouveau_chan.c +4 -2
@@ -250,7 +250,8 @@ static int nouveau_channel_ind(struct nouveau_drm *drm, struct nvif_device *device, u64 runlist, bool priv, struct nouveau_channel **pchan) { - static const u16 oclasses[] = { TURING_CHANNEL_GPFIFO_A, + static const u16 oclasses[] = { AMPERE_CHANNEL_GPFIFO_B, + TURING_CHANNEL_GPFIFO_A, VOLTA_CHANNEL_GPFIFO_A, PASCAL_CHANNEL_GPFIFO_A, MAXWELL_CHANNEL_GPFIFO_A,
@@ -386,7 +387,8 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart)nvif_object_map (&chan->user,NULL ,0 ); -if (chan->user.oclass >=FERMI_CHANNEL_GPFIFO ) { +if (chan->user.oclass >=FERMI_CHANNEL_GPFIFO && + chan->user.oclass <AMPERE_CHANNEL_GPFIFO_B ) { ret = nvif_notify_ctor(&chan->user, "abi16ChanKilled", nouveau_channel_killed, true, NV906F_V0_NTFY_KILLED,
drivers/gpu/drm/nouveau/nouveau_debugfs.c +1 -0
@@ -207,6 +207,7 @@ static const struct file_operations nouveau_pstate_fops = { .open = nouveau_debugfs_pstate_open, .read = seq_read, .write = nouveau_debugfs_pstate_set, + .release = single_release, };static struct drm_info_list nouveau_debugfs_list[] = {
drivers/gpu/drm/nouveau/nouveau_drm.c +4 -0
@@ -345,6 +345,9 @@ nouveau_accel_gr_init(struct nouveau_drm *drm)u32 arg0, arg1;int ret; +if (device->info.family >=NV_DEVICE_INFO_V0_AMPERE ) +return ; +/* Allocate channel that has access to the graphics engine. */ if (device->info.family >=NV_DEVICE_INFO_V0_KEPLER ) { arg0 =nvif_fifo_runlist (device,NV_DEVICE_HOST_RUNLIST_ENGINES_GR );
@@ -469,6 +472,7 @@ nouveau_accel_init(struct nouveau_drm *drm)case PASCAL_CHANNEL_GPFIFO_A :case VOLTA_CHANNEL_GPFIFO_A :case TURING_CHANNEL_GPFIFO_A : +case AMPERE_CHANNEL_GPFIFO_B : ret =nvc0_fence_create (drm);break ;default :
drivers/gpu/drm/nouveau/nouveau_gem.c +1 -3
@@ -247,10 +247,8 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain, } ret =nouveau_bo_init (nvbo, size, align, domain,NULL ,NULL ); -if (ret) { -nouveau_bo_ref (NULL , &nvbo); +if (ret)return ret; - }/* we restrict allowed domains on nv50+ to only the types * that were requested at creation time. not possibly on
drivers/gpu/drm/nouveau/nv84_fence.c +1 -1
@@ -204,7 +204,7 @@ nv84_fence_create(struct nouveau_drm *drm) priv->base.context_new = nv84_fence_context_new; priv->base.context_del = nv84_fence_context_del; - priv->base.uevent = true; + priv->base.uevent = drm->client.device.info.family <NV_DEVICE_INFO_V0_AMPERE ;mutex_init (&priv->mutex);
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +3 -0
@@ -2602,6 +2602,7 @@ nv172_chipset = { .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
@@ -2622,6 +2623,7 @@ nv174_chipset = { .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
@@ -2642,6 +2644,7 @@ nv177_chipset = { .top = { 0x00000001, ga100_top_new }, .disp = { 0x00000001, ga102_disp_new }, .dma = { 0x00000001, gv100_dma_new }, + .fifo = { 0x00000001, ga102_fifo_new }, }; static int
drivers/gpu/drm/nouveau/nvkm/engine/fifo/Kbuild +1 -0
@@ -18,6 +18,7 @@ nvkm-y += nvkm/engine/fifo/gp100.o nvkm-y += nvkm/engine/fifo/gp10b.o nvkm-y += nvkm/engine/fifo/gv100.o nvkm-y += nvkm/engine/fifo/tu102.o +nvkm-y += nvkm/engine/fifo/ga102.o nvkm-y += nvkm/engine/fifo/chan.o nvkm-y += nvkm/engine/fifo/channv50.o
drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.c new file +311 -0
311 lines not on this page · raw message
drivers/gpu/drm/nouveau/nvkm/subdev/top/ga100.c +4 -3
@@ -54,7 +54,7 @@ ga100_top_oneinit(struct nvkm_top *top) info->reset = (data &0x0000001f );break ;case 2 : - info->runlist = (data &0x0000fc00 ) >>10 ; + info->runlist = (data &0x00fffc00 ); info->engine = (data &0x00000003 );break ;default :
@@ -85,9 +85,10 @@ ga100_top_oneinit(struct nvkm_top *top) }nvkm_debug (subdev,"%02x.%d (%8s): addr %06x fault %2d " -"runlist %2d engine %2d reset %2d\n" , type, inst, +"runlist %6x engine %2d reset %2d\n" , type, inst, info->type ==NVKM_SUBDEV_NR ?"????????" : nvkm_subdev_type[info->type], - info->addr, info->fault, info->runlist, info->engine, info->reset); + info->addr, info->fault, info->runlist <0 ?0 : info->runlist, + info->engine, info->reset); info =NULL ; }
drivers/gpu/drm/panel/panel-abt-y030xx067a.c +2 -2
@@ -146,8 +146,8 @@ static const struct reg_sequence y030xx067a_init_sequence[] = { { 0x09, REG09_SUB_BRIGHT_R(0x20) }, { 0x0a, REG0A_SUB_BRIGHT_B(0x20) }, { 0x0b, REG0B_HD_FREERUN | REG0B_VD_FREERUN }, - { 0x0c, REG0C_CONTRAST_R(0x10) }, - { 0x0d, REG0D_CONTRAST_G(0x10) }, + { 0x0c, REG0C_CONTRAST_R(0x00) }, + { 0x0d, REG0D_CONTRAST_G(0x00) }, { 0x0e, REG0E_CONTRAST_B(0x10) }, { 0x0f, 0 }, { 0x10, REG10_BRIGHT(0x7f) },
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +5 -2
@@ -216,11 +216,13 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master, goto err_disable_clk_tmds; } + ret =sun8i_hdmi_phy_init (hdmi->phy); +if (ret) + goto err_disable_clk_tmds; +drm_encoder_helper_add (encoder, &sun8i_dw_hdmi_encoder_helper_funcs);drm_simple_encoder_init (drm, encoder,DRM_MODE_ENCODER_TMDS ); -sun8i_hdmi_phy_init (hdmi->phy); - plat_data->mode_valid = hdmi->quirks->mode_valid; plat_data->use_drm_infoframe = hdmi->quirks->use_drm_infoframe;sun8i_hdmi_phy_set_ops (hdmi->phy, plat_data);
@@ -262,6 +264,7 @@ static void sun8i_dw_hdmi_unbind(struct device *dev, struct device *master,struct sun8i_dw_hdmi *hdmi =dev_get_drvdata (dev);dw_hdmi_unbind (hdmi->hdmi); +sun8i_hdmi_phy_deinit (hdmi->phy);clk_disable_unprepare (hdmi->clk_tmds);reset_control_assert (hdmi->rst_ctrl);gpiod_set_value (hdmi->ddc_en,0 );
drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h +3 -1
@@ -169,6 +169,7 @@ struct sun8i_hdmi_phy {struct clk *clk_phy;struct clk *clk_pll0;struct clk *clk_pll1; +struct device *dev;unsigned int rcal;struct regmap *regs;struct reset_control *rst_phy;
@@ -205,7 +206,8 @@ encoder_to_sun8i_dw_hdmi(struct drm_encoder *encoder)int sun8i_hdmi_phy_get (struct sun8i_dw_hdmi *hdmi,struct device_node *node); -void sun8i_hdmi_phy_init (struct sun8i_hdmi_phy *phy); +int sun8i_hdmi_phy_init (struct sun8i_hdmi_phy *phy); +void sun8i_hdmi_phy_deinit (struct sun8i_hdmi_phy *phy);void sun8i_hdmi_phy_set_ops (struct sun8i_hdmi_phy *phy,struct dw_hdmi_plat_data *plat_data);
drivers/gpu/drm/sun4i/sun8i_hdmi_phy.c +53 -44
127 lines not on this page · raw message
drivers/i2c/busses/i2c-mlxcpld.c +2 -2
@@ -49,7 +49,7 @@#define MLXCPLD_LPCI2C_NACK_IND 2#define MLXCPLD_I2C_FREQ_1000KHZ_SET 0x04 -#define MLXCPLD_I2C_FREQ_400KHZ_SET 0x0f +#define MLXCPLD_I2C_FREQ_400KHZ_SET 0x0c#define MLXCPLD_I2C_FREQ_100KHZ_SET 0x42enum mlxcpld_i2c_frequency {
@@ -495,7 +495,7 @@ mlxcpld_i2c_set_frequency(struct mlxcpld_i2c_priv *priv,return err;/* Set frequency only if it is not 100KHz, which is default. */ -switch ((data->reg & data->mask) >> data->bit) { +switch ((regval & data->mask) >> data->bit) {case MLXCPLD_I2C_FREQ_1000KHZ : freq =MLXCPLD_I2C_FREQ_1000KHZ_SET ;break ;
drivers/i2c/busses/i2c-mt65xx.c +10 -1
@@ -41,6 +41,8 @@#define I2C_HANDSHAKE_RST 0x0020#define I2C_FIFO_ADDR_CLR 0x0001#define I2C_DELAY_LEN 0x0002 +#define I2C_ST_START_CON 0x8001 +#define I2C_FS_START_CON 0x1800#define I2C_TIME_CLR_VALUE 0x0000#define I2C_TIME_DEFAULT_VALUE 0x0003#define I2C_WRRD_TRANAC_VALUE 0x0002
@@ -480,6 +482,7 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c) {u16 control_reg;u16 intr_stat_reg; +u16 ext_conf_val;mtk_i2c_writew (i2c,I2C_CHN_CLR_FLAG ,OFFSET_START ); intr_stat_reg =mtk_i2c_readw (i2c,OFFSET_INTR_STAT );
@@ -518,8 +521,13 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c)if (i2c->dev_comp->ltiming_adjust)mtk_i2c_writew (i2c, i2c->ltiming_reg,OFFSET_LTIMING ); +if (i2c->speed_hz <=I2C_MAX_STANDARD_MODE_FREQ ) + ext_conf_val =I2C_ST_START_CON ; +else + ext_conf_val =I2C_FS_START_CON ; +if (i2c->dev_comp->timing_adjust) { -mtk_i2c_writew (i2c, i2c->ac_timing.ext,OFFSET_EXT_CONF ); + ext_conf_val = i2c->ac_timing.ext;mtk_i2c_writew (i2c, i2c->ac_timing.inter_clk_div,OFFSET_CLOCK_DIV ); mtk_i2c_writew(i2c, I2C_SCL_MIS_COMP_VALUE,
@@ -544,6 +552,7 @@ static void mtk_i2c_init_hw(struct mtk_i2c *i2c) OFFSET_HS_STA_STO_AC_TIMING); } } +mtk_i2c_writew (i2c, ext_conf_val,OFFSET_EXT_CONF );/* If use i2c pin from PMIC mt6397 side, need set PATH_DIR first */ if (i2c->have_pmic)
drivers/i2c/i2c-core-acpi.c +1 -0
@@ -422,6 +422,7 @@ static int i2c_acpi_notify(struct notifier_block *nb, unsigned long value,break ;i2c_acpi_register_device (adapter, adev, &info); +put_device (&adapter->dev);break ;case ACPI_RECONFIG_DEVICE_REMOVE :if (!acpi_device_enumerated (adev))
drivers/mmc/host/meson-gx-mmc.c +59 -14
113 lines not on this page · raw message
drivers/mmc/host/sdhci-of-at91.c +11 -11
@@ -11,6 +11,7 @@#include <linux/delay.h> #include <linux/err.h> #include <linux/io.h> +#include <linux/iopoll.h> #include <linux/kernel.h> #include <linux/mmc/host.h> #include <linux/mmc/slot-gpio.h>
@@ -61,7 +62,6 @@ static void sdhci_at91_set_force_card_detect(struct sdhci_host *host)static void sdhci_at91_set_clock (struct sdhci_host *host,unsigned int clock) {u16 clk; -unsigned long timeout; host->mmc->actual_clock =0 ;
@@ -86,16 +86,11 @@ static void sdhci_at91_set_clock(struct sdhci_host *host, unsigned int clock)sdhci_writew (host, clk,SDHCI_CLOCK_CONTROL );/* Wait max 20 ms */ - timeout =20 ; -while (!((clk =sdhci_readw (host,SDHCI_CLOCK_CONTROL )) - &SDHCI_CLOCK_INT_STABLE )) { -if (timeout ==0 ) { -pr_err ("%s: Internal clock never stabilised.\n" , -mmc_hostname (host->mmc)); -return ; - } - timeout--; -mdelay (1 ); +if (read_poll_timeout (sdhci_readw, clk, (clk &SDHCI_CLOCK_INT_STABLE ), +1000 ,20000 , false, host,SDHCI_CLOCK_CONTROL )) { +pr_err ("%s: Internal clock never stabilised.\n" , +mmc_hostname (host->mmc)); +return ; } clk |=SDHCI_CLOCK_CARD_EN ;
@@ -114,6 +109,7 @@ static void sdhci_at91_reset(struct sdhci_host *host, u8 mask) {struct sdhci_pltfm_host *pltfm_host =sdhci_priv (host);struct sdhci_at91_priv *priv =sdhci_pltfm_priv (pltfm_host); +unsigned int tmp;sdhci_reset (host, mask);
@@ -126,6 +122,10 @@ static void sdhci_at91_reset(struct sdhci_host *host, u8 mask)sdhci_writel (host, calcr |SDMMC_CALCR_ALWYSON |SDMMC_CALCR_EN ,SDMMC_CALCR ); + +if (read_poll_timeout (sdhci_readl, tmp, !(tmp &SDMMC_CALCR_EN ), +10 ,20000 , false, host,SDMMC_CALCR )) +dev_err (mmc_dev (host->mmc),"Failed to calibrate\n" ); } }
drivers/net/ethernet/google/gve/gve.h +1 -1
@@ -780,7 +780,7 @@ struct gve_queue_page_list *gve_assign_rx_qpl(struct gve_priv *priv) gve_num_tx_qpls(priv));/* we are out of rx qpls */ -if (id == priv->qpl_cfg.qpl_map_size) +if (id ==gve_num_tx_qpls (priv) +gve_num_rx_qpls (priv))return NULL ;set_bit (id, priv->qpl_cfg.qpl_id_map);
drivers/net/ethernet/google/gve/gve_main.c +29 -16
94 lines not on this page · raw message
drivers/net/ethernet/google/gve/gve_rx.c +7 -1
@@ -104,8 +104,14 @@ static int gve_prefill_rx_pages(struct gve_rx_ring *rx)if (!rx->data.page_info)return -ENOMEM ; -if (!rx->data.raw_addressing) +if (!rx->data.raw_addressing) { rx->data.qpl =gve_assign_rx_qpl (priv); +if (!rx->data.qpl) { +kvfree (rx->data.page_info); + rx->data.page_info =NULL ; +return -ENOMEM ; + } + }for (i =0 ; i < slots; i++) {if (!rx->data.raw_addressing) {struct page *page = rx->data.qpl->pages[i];
drivers/net/ethernet/intel/i40e/i40e_main.c +3 -2
@@ -4868,7 +4868,8 @@ static void i40e_clear_interrupt_scheme(struct i40e_pf *pf) {int i; -i40e_free_misc_vector (pf); +if (test_bit (__I40E_MISC_IRQ_REQUESTED, pf->state)) +i40e_free_misc_vector (pf);i40e_put_lump (pf->irq_pile, pf->iwarp_base_vector,I40E_IWARP_IRQ_PILE_ID );
@@ -10110,7 +10111,7 @@ static int i40e_get_capabilities(struct i40e_pf *pf,if (pf->hw.aq.asq_last_status ==I40E_AQ_RC_ENOMEM ) {/* retry with a larger buffer */ buf_len = data_size; - }else if (pf->hw.aq.asq_last_status !=I40E_AQ_RC_OK ) { + }else if (pf->hw.aq.asq_last_status !=I40E_AQ_RC_OK || err) { dev_info(&pf->pdev->dev, "capability discovery failed, err %s aq_err %s\n", i40e_stat_str(&pf->hw, err),
drivers/net/ethernet/intel/iavf/iavf_main.c +0 -1
@@ -1965,7 +1965,6 @@ static void iavf_watchdog_task(struct work_struct *work) } adapter->aq_required =0 ; adapter->current_op =VIRTCHNL_OP_UNKNOWN ; -mutex_unlock (&adapter->crit_lock);queue_delayed_work (iavf_wq, &adapter->watchdog_task,msecs_to_jiffies (10 ));
drivers/net/ethernet/mellanox/mlx5/core/en.h +4 -7
@@ -863,6 +863,7 @@ struct mlx5e_priv {struct mlx5e_channel_stats channel_stats[MLX5E_MAX_NUM_CHANNELS ];struct mlx5e_channel_stats trap_stats;struct mlx5e_ptp_stats ptp_stats; +u16 stats_nch;u16 max_nch;u8 max_opened_tc;bool tx_ptp_opened;
@@ -1156,12 +1157,6 @@ int mlx5e_ethtool_set_pauseparam(struct mlx5e_priv *priv, struct ethtool_pauseparam *pauseparam);/* mlx5e generic netdev management API */ -static inline unsigned int -mlx5e_calc_max_nch (struct mlx5e_priv *priv,const struct mlx5e_profile *profile) -{ -return priv->netdev->num_rx_queues /max_t (u8, profile->rq_groups,1 ); -} -static inline bool mlx5e_tx_mpwqe_supported (struct mlx5_core_dev *mdev) {
@@ -1170,11 +1165,13 @@ mlx5e_tx_mpwqe_supported(struct mlx5_core_dev *mdev) }int mlx5e_priv_init (struct mlx5e_priv *priv, +const struct mlx5e_profile *profile,struct net_device *netdev,struct mlx5_core_dev *mdev);void mlx5e_priv_cleanup (struct mlx5e_priv *priv);struct net_device * -mlx5e_create_netdev (struct mlx5_core_dev *mdev,unsigned int txqs,unsigned int rxqs); +mlx5e_create_netdev (struct mlx5_core_dev *mdev,const struct mlx5e_profile *profile, +unsigned int txqs,unsigned int rxqs);int mlx5e_attach_netdev (struct mlx5e_priv *priv);void mlx5e_detach_netdev (struct mlx5e_priv *priv);void mlx5e_destroy_netdev (struct mlx5e_priv *priv);
drivers/net/ethernet/mellanox/mlx5/core/en/hv_vhca_stats.c +3 -3
@@ -35,7 +35,7 @@ static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, void *data, {int ch, i =0 ; -for (ch =0 ; ch < priv->max_nch; ch++) { +for (ch =0 ; ch < priv->stats_nch; ch++) {void *buf = data + i; if (WARN_ON_ONCE(buf +
@@ -51,7 +51,7 @@ static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, void *data,static int mlx5e_hv_vhca_stats_buf_size (struct mlx5e_priv *priv) {return (sizeof (struct mlx5e_hv_vhca_per_ring_stats ) * - priv->max_nch); + priv->stats_nch); }static void mlx5e_hv_vhca_stats_work (struct work_struct *work)
@@ -100,7 +100,7 @@ static void mlx5e_hv_vhca_stats_control(struct mlx5_hv_vhca_agent *agent, sagent = &priv->stats_agent; block->version =MLX5_HV_VHCA_STATS_VERSION ; - block->rings = priv->max_nch; + block->rings = priv->stats_nch;if (!block->command) {cancel_delayed_work_sync (&priv->stats_agent.work);
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c +1 -2
@@ -13,8 +13,6 @@ struct mlx5e_ptp_fs {bool valid; }; -#define MLX5E_PTP_CHANNEL_IX 0 -struct mlx5e_ptp_params {struct mlx5e_params params;struct mlx5e_sq_param txq_sq_param;
@@ -505,6 +503,7 @@ static int mlx5e_init_ptp_rq(struct mlx5e_ptp *c, struct mlx5e_params *params, rq->mdev = mdev; rq->hw_mtu =MLX5E_SW2HW_MTU (params, params->sw_mtu); rq->stats = &c->priv->ptp_stats.rq; + rq->ix =MLX5E_PTP_CHANNEL_IX ; rq->ptp_cyc2time =mlx5_rq_ts_translator (mdev); err =mlx5e_rq_set_handlers (rq, params, false);if (err)
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.h +2 -0
@@ -8,6 +8,8 @@#include "en_stats.h" #include <linux/ptp_classify.h> +#define MLX5E_PTP_CHANNEL_IX 0 +struct mlx5e_ptpsq {struct mlx5e_txqsq txqsq;struct mlx5e_cq ts_cq;
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +43 -16
100 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +1 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +6 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/egress_lgcy.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ingress_lgcy.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +16 -21
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +5 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot_vcap.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/pcs/pcs-xpcs.c +36 -9
45 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/ufs/ufshcd.c +22 -30
52 lines not on this page · raw message
include/net/netfilter/ipv6/nf_defrag_ipv6.h +0 -1
Lines of this file are not shown. View the raw message.
net/ipv6/netfilter/nf_conntrack_reasm.c +1 -1
Lines of this file are not shown. View the raw message.
net/ipv6/netfilter/nf_defrag_ipv6_hooks.c +9 -16
Lines of this file are not shown. View the raw message.
net/netfilter/nf_tables_api.c +64 -27
91 lines not on this page · 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.