17107 Commits

Author SHA1 Message Date
Heiko Stuebner
5dcbe7e386 arm64: dts: rockchip: move mmc aliases to board dts on rk3399
As suggested by Arnd Bergmann, the newly added mmc aliases
should be board specific, so move them from the general dtsi
to the individual boards.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Link: https://lore.kernel.org/r/20210324122235.1059292-7-heiko@sntech.de
2021-04-11 11:13:07 +02:00
Heiko Stuebner
751a78a8bd arm64: dts: rockchip: move mmc aliases to board dts on rk3368
As suggested by Arnd Bergmann, the newly added mmc aliases
should be board specific, so move them from the general dtsi
to the individual boards.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Link: https://lore.kernel.org/r/20210324122235.1059292-6-heiko@sntech.de
2021-04-11 11:13:07 +02:00
Heiko Stuebner
28869aa535 arm64: dts: rockchip: move mmc aliases to board dts on rk3328
As suggested by Arnd Bergmann, the newly added mmc aliases
should be board specific, so move them from the general dtsi
to the individual boards.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Link: https://lore.kernel.org/r/20210324122235.1059292-5-heiko@sntech.de
2021-04-11 11:13:06 +02:00
Heiko Stuebner
3f6c22987c arm64: dts: rockchip: move mmc aliases to board dts on rk3308
As suggested by Arnd Bergmann, the newly added mmc aliases
should be board specific, so move them from the general dtsi
to the individual boards.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Link: https://lore.kernel.org/r/20210324122235.1059292-4-heiko@sntech.de
2021-04-11 11:13:06 +02:00
Heiko Stuebner
78b8513b76 arm64: dts: rockchip: move mmc aliases to board dts on px30
As suggested by Arnd Bergmann, the newly added mmc aliases
should be board specific, so move them from the general dtsi
to the individual boards.

For the Engicam-boards this means a split as the core
boards contains the emmc while the commit baseboard handles
sdmmc and sdio.

Suggested-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Heiko Stuebner <heiko.stuebner@theobroma-systems.com>
Link: https://lore.kernel.org/r/20210324122235.1059292-3-heiko@sntech.de
2021-04-11 11:13:06 +02:00
Alexandru Elisei
96f4f6809b KVM: arm64: Don't advertise FEAT_SPE to guests
Even though KVM sets up MDCR_EL2 to trap accesses to the SPE buffer and
sampling control registers and to inject an undefined exception, the
presence of FEAT_SPE is still advertised in the ID_AA64DFR0_EL1 register,
if the hardware supports it. Getting an undefined exception when accessing
a register usually happens for a hardware feature which is not implemented,
and indeed this is how PMU emulation is handled when the virtual machine
has been created without the KVM_ARM_VCPU_PMU_V3 feature. Let's be
consistent and never advertise FEAT_SPE, because KVM doesn't have support
for emulating it yet.

Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210409152154.198566-3-alexandru.elisei@arm.com
2021-04-11 09:46:13 +01:00
Alexandru Elisei
13611bc80d KVM: arm64: Don't print warning when trapping SPE registers
KVM sets up MDCR_EL2 to trap accesses to the SPE buffer and sampling
control registers and it relies on the fact that KVM injects an undefined
exception for unknown registers. This mechanism of injecting undefined
exceptions also prints a warning message for the host kernel; for example,
when a guest tries to access PMSIDR_EL1:

[    2.691830] kvm [142]: Unsupported guest sys_reg access at: 80009e78 [800003c5]
[    2.691830]  { Op0( 3), Op1( 0), CRn( 9), CRm( 9), Op2( 7), func_read },

This is unnecessary, because KVM has explicitly configured trapping of
those registers and is well aware of their existence. Prevent the warning
by adding the SPE registers to the list of registers that KVM emulates.
The access function will inject the undefined exception.

Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210409152154.198566-2-alexandru.elisei@arm.com
2021-04-11 09:46:12 +01:00
Marek Behún
b37c384843 treewide: change my e-mail address, fix my name
Change my e-mail address to kabel@kernel.org, and fix my name in
non-code parts (add diacritical mark).

Link: https://lkml.kernel.org/r/20210325171123.28093-2-kabel@kernel.org
Signed-off-by: Marek Behún <kabel@kernel.org>
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-04-09 14:54:23 -07:00
Arnd Bergmann
db7a033f2b arm64: dts: amlogic: updates for v5.13 (round 2)
- updates/cleanups for Hardkernel Odroid N2/N2+
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEe4dGDhaSf6n1v/EMWTcYmtP7xmUFAmBwl9UACgkQWTcYmtP7
 xmWAOQ//cjq606dV0TvZ0mg940KhkHRCxVJQ0K/mZleE4USCNBgpSNHiEzJT3fva
 C0QN8+81cfn4fkaAGnwHFDbpbEQ0Z0EF3OFdSIwcH3VBse5eOStVbLYSFFgk9FB2
 s4JHLLOeUsoQKeU5GUH4BlEJOZ9IR9dvCPqeRG3PnLXx0sfg9WYc2m5GlDePr8V4
 FQq4CUnqFqOK+UYdaoDn1Wvl3YkBHHtRpqJQQQt8ilQTSMjYfSy3/o1f6u2LFjSF
 NX86HyDkhEO9nGdITVkOnVgx5waEUMNdhkQixdygAMkJAacbi33wBE7gEAFmWDXy
 WFp0gGd0/9h+XosW+X37ssMPmDDmWjY9F39wdNhG7RMUx+srl1t82m3UYdkd2yaV
 Jo1u2dCuOSR0pZzHfxLAoKZXlfC6Fyj8PTsRQEh0UKZ1TaDZqcD4jZ/RscSzujMX
 OpH7oUR6RqjqXTSH0SJIlv1mjACYasDl8y1CvML5YP5aU1f67aFlmHc98fwt1vQS
 0IG7DPrk1DLccEdJh2sBDZ3HoYZCYUK/Fn6lgPnlepM7POSIx6ofdd/k9gVxiYeI
 BDNM/UTKEgEnhq9u+xxI3rPxF1RPqNXgvAsbB5GzuUaNeNDEJnEgKTr1ga4+Qsrx
 JBMpjR+2iMcYqPI1tWx1AGJYb/kP3YxpN7YG7rHTsAwpNbAqIgY=
 =+7cS
 -----END PGP SIGNATURE-----

Merge tag 'amlogic-dt64-2' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into arm/dt

arm64: dts: amlogic: updates for v5.13 (round 2)
- updates/cleanups for Hardkernel Odroid N2/N2+

* tag 'amlogic-dt64-2' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic:
  arm64: dts: meson: add GPIO line names to ODROID N2/N2+
  arm64: dts: meson: add saradc node to ODROID N2/N2+
  arm64: dts: meson: remove extra tab from ODROID N2/N2+ ext_mdio node

Link: https://lore.kernel.org/r/7htuofgwaz.fsf@baylibre.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-09 21:43:47 +02:00
Arnd Bergmann
a8f6ba2825 More Qualcomm ARM64 DT updates for 5.13
This adds RPMh regulators, coresight, AOSS qmp, ipcc, llcc for the
 SC7280. It adds interconnect, PRNG and thermal pieces to SM8350. It
 specifies the now required clocks for the SDM845 gcc, corrects the
 firmware-name for adsp and cdsp on the db845c and defines DSI and panel
 bits for Xiaomi Pocophone F1.
 
 SM8150 gains iommu settings and the remaining I2C controllers and SM8250
 gains Venus and the QMP PHY is updated to include the DP portion.
 
 It adds the MSM8998 based OnePlus 5/5T device and enables sound support
 on the Trogdor device family.
 
 Lastly it adds the GIC hypervisor registers & interrupt for when Linux
 is booted in EL2 on MSM8916.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmBwgw4bHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FWXoQAKpPf+oQc+wVvoGCk35T
 Xq5MFxJvm69Ad2TjCgRkyKrb1Op02PlrzJT5CNTt8d2OZjiLH4VZnv6b6e5z8sEA
 1PbAID09tCLxE6j2KV6RCt4L9JGslT6eQ2HQWCCIjte8ygI3meyjjsGr3j1BJcJM
 0GdLp1UTvlcItQcVymf6OLw0z69hvNuOiEAaQ1BNF+Y9VRhM940nS35D/0vhZpdQ
 fP8aeCslAnu020g88P0uJESEsCQPLjywBHK2JlyYmzZzr9/OZnJvETUG6fkMjxQ/
 TnJiuaGBDk//yhULYxt0t2Xi1gK76snkTLKx09p6a/GBIyNgTUW7MdEPw3n14FL9
 cuFpFTZTTKw0HtaHtu2HtM/WFlBE92XlWKSKTfsVI/qR9LJn+6p6Ewi61evsg04U
 +z8RI+rOD/lOXbU6VtYbdPE7wTkNk4+vTTPzAWSsNr7GtuGoNR3Qb693PwV2gsdl
 BgkxR5sZDZAesa7tfpeZnB57fOq3N9iZHbdQWx/JaEyvou24LjHchWQv8o0xN8Av
 P67PlfMM6tqt5jFSs8aLp9C6bsZjkzX4OnhP7p6ah39YlR6/pNh32pk74+DSspF2
 e/XyH4gO0zTJ6DgPozPBz70epH5ToDXQQEbcKQ+huFUtSOjNDdlrSKouGPcRufIn
 c8fgySvA9ChVIFwxju9+/Urs
 =7juS
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-for-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt

More Qualcomm ARM64 DT updates for 5.13

This adds RPMh regulators, coresight, AOSS qmp, ipcc, llcc for the
SC7280. It adds interconnect, PRNG and thermal pieces to SM8350. It
specifies the now required clocks for the SDM845 gcc, corrects the
firmware-name for adsp and cdsp on the db845c and defines DSI and panel
bits for Xiaomi Pocophone F1.

SM8150 gains iommu settings and the remaining I2C controllers and SM8250
gains Venus and the QMP PHY is updated to include the DP portion.

It adds the MSM8998 based OnePlus 5/5T device and enables sound support
on the Trogdor device family.

Lastly it adds the GIC hypervisor registers & interrupt for when Linux
is booted in EL2 on MSM8916.

* tag 'qcom-arm64-for-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (25 commits)
  arm64: dts: qcom: update usb qmp phy clock-cells property
  arm64: dts: qcom: msm8916: Add GICv2 hypervisor registers/interrupt
  arm64: dts: sdm845-db845c: make firmware filenames follow linux-firmware
  arm64: dts: qcom: sdm845-xiaomi-beryllium: Add DSI and panel bits
  arm64: dts: qcom: sc7280: Add Coresight support
  arm64: dts: qcom: sc7280: Add AOSS QMP node
  arm64: dts: qcom: sc7280: Add IPCC for SC7280 SoC
  arm64: dts: qcom: sc7280: Add device tree node for LLCC
  arm64: dts: qcom: Add support for OnePlus 5/5T
  arm64: dts: qcom: msm8998: Disable MSS remoteproc by default
  arm64: dts: qcom: Move rmtfs memory region
  arm64: dts: qcom: Add sound node for sc7180-trogdor-coachz
  arm64: dts: qcom: sc7180-trogdor: Add lpass dai link for I2S driver
  arm64: dts: qcom: use dp_phy to provide clocks to dispcc
  arm64: dts: qcom: sm8250: switch usb1 qmp phy to USB3+DP mode
  arm64: dts: qcom: sm8250: Add venus DT node
  arm64: dts: qcom: sm8250: Add videocc DT node
  arm64: dts: qcom: sm8350: Add interconnects
  arm64: dts: qcom: sm8350: Add support for PRNG EE
  arm64: dts: qcom: sc7280: Add RPMh regulators for sc7280-idp
  ...

Link: https://lore.kernel.org/r/20210409163949.776530-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-09 21:42:05 +02:00
Marc Zyngier
85d7037461 KVM: arm64: Fully zero the vcpu state on reset
On vcpu reset, we expect all the registers to be brought back
to their initial state, which happens to be a bunch of zeroes.

However, some recent commit broke this, and is now leaving a bunch
of registers (such as the FP state) with whatever was left by the
guest. My bad.

Zero the reset of the state (32bit SPSRs and FPSIMD state).

Cc: stable@vger.kernel.org
Fixes: e47c2055c68e ("KVM: arm64: Make struct kvm_regs userspace-only")
Signed-off-by: Marc Zyngier <maz@kernel.org>
2021-04-09 18:26:25 +01:00
Sami Tolvanen
9186ad8e66 arm64: allow CONFIG_CFI_CLANG to be selected
Select ARCH_SUPPORTS_CFI_CLANG to allow CFI to be enabled.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-19-samitolvanen@google.com
2021-04-08 16:04:23 -07:00
Sami Tolvanen
67dfd72b3e KVM: arm64: Disable CFI for nVHE
Disable CFI for the nVHE code to avoid address space confusion.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-18-samitolvanen@google.com
2021-04-08 16:04:23 -07:00
Sami Tolvanen
800618f955 arm64: ftrace: use function_nocfi for ftrace_call
With CONFIG_CFI_CLANG, the compiler replaces function pointers with
jump table addresses, which breaks dynamic ftrace as the address of
ftrace_call is replaced with the address of ftrace_call.cfi_jt. Use
function_nocfi() to get the address of the actual function instead.

Suggested-by: Ben Dai <ben.dai@unisoc.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-17-samitolvanen@google.com
2021-04-08 16:04:23 -07:00
Sami Tolvanen
9562f3dc6f arm64: add __nocfi to __apply_alternatives
__apply_alternatives makes indirect calls to functions whose address
is taken in assembly code using the alternative_cb macro. With
non-canonical CFI, the compiler won't replace these function
references with the jump table addresses, which trips CFI. Disable CFI
checking in the function to work around the issue.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-16-samitolvanen@google.com
2021-04-08 16:04:23 -07:00
Sami Tolvanen
cbdac8413e arm64: add __nocfi to functions that jump to a physical address
Disable CFI checking for functions that switch to linear mapping and
make an indirect call to a physical address, since the compiler only
understands virtual addresses and the CFI check for such indirect calls
would always fail.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-15-samitolvanen@google.com
2021-04-08 16:04:22 -07:00
Sami Tolvanen
bde33977bf arm64: use function_nocfi with __pa_symbol
With CONFIG_CFI_CLANG, the compiler replaces function address
references with the address of the function's CFI jump table
entry. This means that __pa_symbol(function) returns the physical
address of the jump table entry, which can lead to address space
confusion as the jump table points to the function's virtual
address. Therefore, use the function_nocfi() macro to ensure we are
always taking the address of the actual function instead.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-14-samitolvanen@google.com
2021-04-08 16:04:22 -07:00
Sami Tolvanen
4ecfca8989 arm64: implement function_nocfi
With CONFIG_CFI_CLANG, the compiler replaces function addresses in
instrumented C code with jump table addresses. This change implements
the function_nocfi() macro, which returns the actual function address
instead.

Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-13-samitolvanen@google.com
2021-04-08 16:04:22 -07:00
Sami Tolvanen
4f0f586bf0 treewide: Change list_sort to use const pointers
list_sort() internally casts the comparison function passed to it
to a different type with constant struct list_head pointers, and
uses this pointer to call the functions, which trips indirect call
Control-Flow Integrity (CFI) checking.

Instead of removing the consts, this change defines the
list_cmp_func_t type and changes the comparison function types of
all list_sort() callers to use const pointers, thus avoiding type
mismatches.

Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Tested-by: Nick Desaulniers <ndesaulniers@google.com>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20210408182843.1754385-10-samitolvanen@google.com
2021-04-08 16:04:22 -07:00
Arnd Bergmann
d515102f56 Qualcomm ARM64 defconfig udpate for 5.13
This enables the SM8350 TLMM and GCC drivers, needed to boot the
 platform.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmBp7XsbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FH8YP/0eBFr+4HDacw90lt5cy
 vWkEX+yXymuFb9HtHRG69bgNMUPNRPDl6sR7Jdq6Clb5LaE541XdhrHYeWtdNCNK
 LSZyuqgMj3+kqtIsvNKCOQ1vxuwfd893dlX0mOKIMHl7OW4ti6MDsl9uFQZyVfeG
 yuPYo2iIgmZYPssLKUfOkUWc41mV1M7RWeOXGPawbmtwb1BjjJ8dNtngvpV0sQTZ
 YOqx+fivcI0v5wUfBNQs5zYa1pzDb6+7WxLLyJfqZ8qO3DJRAO7KIXhCoSKDnhAr
 wYTJpvK26a09q1jW5MRaMHBQdELbd+1C8WCJyogxvXWTMUV/X7WbctoLZ/Y1dmqO
 difsC6a3Vxj7NXxpeFvhz0ZmBYV53N4eMEHnU6wcKtSse2lPNZN//8+ohj+cC7hK
 pca3B1p6o7S5Y3bL9Iy/T+zEuSAXu41vpzUI5dqmuSjkex38el/ymxzKM6wzEZU2
 OHp9Lrcbek+jd1hjwixN/4KISO8HjWqAsWvGMLUCoMao/lQqP03kmE8AOJq0IKMm
 YpsafVq1pUbjDc6KDgs8wxPOIAwQUXM0quF+2Bo8z0madeKxVAuz6t8A8DrxATaG
 8BRvk1MWMAEKrQ6ycThFy2cNjr9BY3liI/r0j78Ote9K1xMSC+cFt0fnG5fr+JUT
 /aZl/9lpE68RuOK7IKUIJF0h
 =3aF9
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-defconfig-for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/defconfig

Qualcomm ARM64 defconfig udpate for 5.13

This enables the SM8350 TLMM and GCC drivers, needed to boot the
platform.

* tag 'qcom-arm64-defconfig-for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  arm64: defconfig: Enable Qualcomm SM8350 TLMM and GCC

Link: https://lore.kernel.org/r/20210404164841.712845-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-08 22:04:21 +02:00
Marc Zyngier
2d726d0db6 arm64: Get rid of CONFIG_ARM64_VHE
CONFIG_ARM64_VHE was introduced with ARMv8.1 (some 7 years ago),
and has been enabled by default for almost all that time.

Given that newer systems that are VHE capable are finally becoming
available, and that some systems are even incapable of not running VHE,
drop the configuration altogether.

Anyone willing to stick to non-VHE on VHE hardware for obscure
reasons should use the 'kvm-arm.mode=nvhe' command-line option.

Suggested-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20210408131010.1109027-4-maz@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 18:45:16 +01:00
Marc Zyngier
31a32b49b8 arm64: Cope with CPUs stuck in VHE mode
It seems that the CPUs part of the SoC known as Apple M1 have the
terrible habit of being stuck with HCR_EL2.E2H==1, in violation
of the architecture.

Try and work around this deplorable state of affairs by detecting
the stuck bit early and short-circuit the nVHE dance. Additional
filtering code ensures that attempts at switching to nVHE from
the command-line are also ignored.

It is still unknown whether there are many more such nuggets
to be found...

Reported-by: Hector Martin <marcan@marcan.st>
Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210408131010.1109027-3-maz@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 18:45:16 +01:00
Marc Zyngier
cac642c12a arm64: cpufeature: Allow early filtering of feature override
Some CPUs are broken enough that some overrides need to be rejected
at the earliest opportunity. In some cases, that's right at cpu
feature override time.

Provide the necessary infrastructure to filter out overrides,
and to report such filtered out overrides to the core cpufeature code.

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210408131010.1109027-2-maz@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 18:45:16 +01:00
Mark Brown
31c00d2aea arm64: Disable fine grained traps on boot
The arm64 FEAT_FGT extension introduces a set of traps to EL2 for accesses
to small sets of registers and instructions from EL1 and EL0.  Currently
Linux makes no use of this feature, ensure that it is not active at boot by
disabling the traps during EL2 setup.

Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210401180942.35815-3-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 18:39:18 +01:00
Vincenzo Frascino
df652a16a6 arm64: mte: Remove unused mte_assign_mem_tag_range()
mte_assign_mem_tag_range() was added in commit 85f49cae4dfc
("arm64: mte: add in-kernel MTE helpers") in 5.11 but moved out of
mte.S by commit 2cb34276427a ("arm64: kasan: simplify and inline
MTE functions") in 5.12 and renamed to mte_set_mem_tag_range().
2cb34276427a did not delete the old function prototypes in mte.h.

Remove the unused prototype from mte.h.

Cc: Will Deacon <will@kernel.org>
Reported-by: Derrick McKee <derrick.mckee@gmail.com>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
Link: https://lore.kernel.org/r/20210407133817.23053-1-vincenzo.frascino@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 17:45:43 +01:00
Jisheng Zhang
a7dcf58ae5 arm64: Add __init section marker to some functions
They are not needed after booting, so mark them as __init to move them
to the .init section.

Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Link: https://lore.kernel.org/r/20210330135449.4dcffd7f@xhacker.debian
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 17:45:10 +01:00
Mark Brown
cccb78ce89 arm64/sve: Rework SVE access trap to convert state in registers
When we enable SVE usage in userspace after taking a SVE access trap we
need to ensure that the portions of the register state that are not
shared with the FPSIMD registers are zeroed. Currently we do this by
forcing the FPSIMD registers to be saved to the task struct and converting
them there. This is wasteful in the common case where the task state is
loaded into the registers and we will immediately return to userspace
since we can initialise the SVE state directly in registers instead of
accessing multiple copies of the register state in memory.

Instead in that common case do the conversion in the registers and
update the task metadata so that we can return to userspace without
spilling the register state to memory unless there is some other reason
to do so.

Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20210312190313.24598-1-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2021-04-08 17:43:43 +01:00
Arnd Bergmann
974be36e1c One 32kHz clock fix for the beelink gs1, a CD polarity fix for the SoPine, some
MAINTAINERS maintainance, and a clk / reset switch to our headers.
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCYG2bAQAKCRDj7w1vZxhR
 xW/cAQDpP3oAyk00M6ZMKIMefm/DQI3qbf9cA0P9JsPa1inNbAEA0WlHJt2zdGRT
 ISRW7PI1TyHxMcVteyiw7gE5BvU7kAQ=
 =Jgu5
 -----END PGP SIGNATURE-----

Merge tag 'sunxi-fixes-for-5.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/fixes

One 32kHz clock fix for the beelink gs1, a CD polarity fix for the SoPine, some
MAINTAINERS maintainance, and a clk / reset switch to our headers.

* tag 'sunxi-fixes-for-5.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
  arm64: dts: allwinner: h6: beelink-gs1: Remove ext. 32 kHz osc reference
  MAINTAINERS: Match on allwinner keyword
  MAINTAINERS: Add our new mailing-list
  arm64: dts: allwinner: Fix SD card CD GPIO for SOPine systems
  arm64: dts: allwinner: h6: Switch to macros for RSB clock/reset indices

Link: https://lore.kernel.org/r/9972a85e-60b7-49f4-a246-db3396dd4764.lettre@localhost
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-08 17:35:52 +02:00
Jonathan Marek
7178d4cc07 arm64: dts: qcom: update usb qmp phy clock-cells property
The top-level node doesn't provide any clocks, the subnode provides a
single clock with of_clk_hw_simple_get.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Link: https://lore.kernel.org/r/20201123143705.14277-1-jonathan@marek.ca
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2021-04-08 10:23:25 -05:00
Stephan Gerhold
8385119b32 arm64: dts: qcom: msm8916: Add GICv2 hypervisor registers/interrupt
The ARM Cortex-A53 CPU cores and QGIC2 interrupt controller
(an implementation of the ARM GIC 2.0 specification) used in MSM8916
support virtualization, e.g. for KVM on Linux. However, so far it was
not possible to make use of this functionality, because Qualcomm's
proprietary "hyp" firmware blocks the EL2 mode of the CPU and only
allows booting Linux in EL1.

However, on devices without (firmware) secure boot there is no need
to rely on all of Qualcomm's firmware. The "hyp" firmware on MSM8916
seems simple enough that it can be replaced with an open-source
alternative created only based on trial and error - with some similar
EL2/EL1 initialization code adapted from Linux and U-Boot.

qhypstub [1] is such an open-source firmware for MSM8916 that
can be used as drop-in replacement for Qualcomm's "hyp" firmware.
It does not implement any hypervisor functionality.
Instead, it allows booting Linux/KVM (or other hypervisors) in EL2.

With Linux booting in EL2, KVM seems to be working just fine on MSM8916.
However, so far it is not possible to make use of the virtualization
features in the GICv2. To use KVM's VGICv2 code, the QGIC2 device tree
node needs additional resources (according to binding documentation):

  - The CPU interface region (second reg) must be at least 8 KiB large
    to access the GICC_DIR register (mapped at 0x1000 offset)
  - Virtual control/CPU interface register base and size
  - Hypervisor maintenance interrupt

Fortunately, the public APQ8016E TRM [2] provides the required information:

  - The CPU interface region (at 0x0B002000) actually has a size of 8 KiB
  - Virtual control/CPU interface register is at 0x0B001000/0x0B004000
  - Hypervisor maintenance interrupt is "PPI #0"
      Note: This is a bit strange since almost all other ARM SoCs use
            GIC_PPI 9 for this. However, I have verified that this is
            indeed the interrupt that fires when bits are set in GICH_HCR.

Add the additional resources to the QGIC2 device tree node in msm8916.dtsi.
There is no functional difference when Linux is started in EL1 since the
additional resources are ignored in that case.

With these changes (and qhypstub), KVM seems to be fully working on
the DragonBoard 410c (apq8016-sbc) and BQ Aquaris X5 (longcheer-l8910).

[1]: https://github.com/msm8916-mainline/qhypstub
[2]: https://developer.qualcomm.com/download/sd410/snapdragon-410e-technical-reference-manual.pdf

Acked-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Link: https://lore.kernel.org/r/20210407163648.4708-1-stephan@gerhold.net
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2021-04-08 10:23:12 -05:00
Kees Cook
70918779ae arm64: entry: Enable random_kstack_offset support
Allow for a randomized stack offset on a per-syscall basis, with roughly
5 bits of entropy. (And include AAPCS rationale AAPCS thanks to Mark
Rutland.)

In order to avoid unconditional stack canaries on syscall entry (due to
the use of alloca()), also disable stack protector to avoid triggering
needless checks and slowing down the entry path. As there is no general
way to control stack protector coverage with a function attribute[1],
this must be disabled at the compilation unit level. This isn't a problem
here, though, since stack protector was not triggered before: examining
the resulting syscall.o, there are no changes in canary coverage (none
before, none now).

[1] a working __attribute__((no_stack_protector)) has been added to GCC
and Clang but has not been released in any version yet:
https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=346b302d09c1e6db56d9fe69048acb32fbb97845
https://reviews.llvm.org/rG4fbf84c1732fca596ad1d6e96015e19760eb8a9b

Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20210401232347.2791257-6-keescook@chromium.org
2021-04-08 14:12:19 +02:00
Hector Martin
7d2d16ccf1 arm64: apple: Add initial Apple Mac mini (M1, 2020) devicetree
This currently supports:

* SMP (via spin-tables)
* AIC IRQs
* Serial (with earlycon)
* Framebuffer

A number of properties are dynamic, and based on system firmware
decisions that vary from version to version. These are expected
to be filled in by the loader.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:41 +09:00
Hector Martin
aea5f69f2e arm64: Kconfig: Introduce CONFIG_ARCH_APPLE
This adds a Kconfig option to toggle support for Apple ARM SoCs.
At this time this targets the M1 and later "Apple Silicon" Mac SoCs.

Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:41 +09:00
Hector Martin
8a657f7170 arm64: Move ICH_ sysreg bits from arm-gic-v3.h to sysreg.h
These definitions are in arm-gic-v3.h for historical reasons which no
longer apply. Move them to sysreg.h so the AIC driver can use them, as
it needs to peek into vGIC registers to deal with the GIC maintentance
interrupt.

Acked-by: Marc Zyngier <maz@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:41 +09:00
Hector Martin
b10eb2d509 asm-generic/io.h: implement pci_remap_cfgspace using ioremap_np
Now that we have ioremap_np(), we can make pci_remap_cfgspace() default
to it, falling back to ioremap() on platforms where it is not available.

Remove the arm64 implementation, since that is now redundant. Future
cleanups should be able to do the same for other arches, and eventually
make the generic pci_remap_cfgspace() unconditional.

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:38 +09:00
Hector Martin
9a63ae8502 arm64: Implement ioremap_np() to map MMIO as nGnRnE
This is used on Apple ARM platforms, which require most MMIO
(except PCI devices) to be mapped as nGnRnE.

Acked-by: Marc Zyngier <maz@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:38 +09:00
Hector Martin
11ecdad722 arm64: cputype: Add CPU implementor & types for the Apple M1 cores
The implementor will be used to condition the FIQ support quirk.

The specific CPU types are not used at the moment, but let's add them
for documentation purposes.

Acked-by: Will Deacon <will@kernel.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
2021-04-08 20:18:38 +09:00
Linus Torvalds
3a22981230 ARM SoC fixes for v5.12, part 2
Most of the changes again are devicetree fixes, but there are also five
 trivial build fixes for issues I found when test building with gcc-11 or
 when running 'make W=1', and some OMAP platform specific code fixups.
 
 Broadcom
   - One revert for a Raspberry pi interrupt controller change that
     caused a regression.
 
 TI OMAP:
   - Remove unused duplicate sha2md5_fck clock node that can race with the
     OMAP4_SHA2MD5_CLKCTRL clock node for disable for unused clocks
 
   - Add aliases for omap4/5 mmc to put the slots back into the right
     order again
 
   - Fix typo for bionic voltage controllers that accidentally use mpu
     for all instances instead of mpu, core and iva
 
   - Fix random hangs for droid4 caused by missing fix from TI Android
     kernel tree to do a dummy smc call on cpuidle wakeup path
 
 NXP i.MX:
   - Fix a system failure on imx6qdl-phytec-pfla02 board when booting from
     SD, by adding missing vmmc supply for SD interfaces.
 
   - Fix address typo in i.MX8MM/Q IOMUXC_SD1_DATA0_GPIO2_IO2 definition.
 
 Marvell mvebu:
   - Fix storm interrupt on Turris Omnia
 
   - Enable hardware buffer management as it should be
 
 Build fixes for PXA, Freescale, Marvell, OMAP1 an Keystone.
 
 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmBs0OgACgkQYKtH/8kJ
 UifdEBAAiD3JebS8a1jsgL+/va/ptOuBZP2l4sCH3P/bczsNKeAn+BvwAy4jNJ4b
 C55ZFnz6tX37CGY7e1Pe7LC8WhVd1LGfCm/gSreKUTkETZd/87PoR1xM4GxbhmBQ
 8HNJOVDBSes6tHgWTAgQ7rHGQQ71JoRYc9FJPOH2JDsk8SaeL8Z+Bjay3O3nlBQw
 RU0zoWv/khkdRvzt4oDTmW6pPDQh5c9twv2ORZM92+tXhSeF2AAY08GdAAmiZL5W
 Lq30YozGSJHPcIYSN+jSWPJNtzmrF3oZVTqDzqTN/aIVoH+8MFZHSmCd3iM1RWkT
 wkanNiqF7CRYAdLmC00YTToJUQxsbOYugfUMWYC04VocVbeEDAhnITFVF1zrJLZ4
 q4E/S5WSZjLPUsiDhSK+d0S2bFVrEyQUaDaFWrC6Aet5wA6pI/8X0Q3ZSMV7jzq+
 NkZYuA2oKoW0vwnH+7432/1g33CpCxKRVr/zBhesjCpB3Ymj0OWfqGeHA2fyjFQq
 fNvUnG6LyXE+NBgIfgZTGbBr1gCT/XHqd0GcYrBy4v0L3x8qJSh1ClA0qlpWr+Zl
 mY5jMC6MrGGuHXEhqIoS38mO0RTyx9i2iDjge2CrAMmRxdVR453Z4VIbDnSwGDAe
 K8lASQKHEyvRzdmJDVhaesHqwU9BDtWULY8Q2+3jKqv3wwf6d0I=
 =YY35
 -----END PGP SIGNATURE-----

Merge tag 'arm-fixes-5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
 "Most of the changes again are devicetree fixes, but there are also
  five trivial build fixes for issues I found when test building with
  gcc-11 or when running 'make W=1', and some OMAP platform specific
  code fixups.

  Broadcom:
   - One revert for a Raspberry pi interrupt controller change that
     caused a regression.

  TI OMAP:
   - Remove unused duplicate sha2md5_fck clock node that can race with
     the OMAP4_SHA2MD5_CLKCTRL clock node for disable for unused clocks

   - Add aliases for omap4/5 mmc to put the slots back into the right
     order again

   - Fix typo for bionic voltage controllers that accidentally use mpu
     for all instances instead of mpu, core and iva

   - Fix random hangs for droid4 caused by missing fix from TI Android
     kernel tree to do a dummy smc call on cpuidle wakeup path

  NXP i.MX:
   - Fix a system failure on imx6qdl-phytec-pfla02 board when booting
     from SD, by adding missing vmmc supply for SD interfaces.

   - Fix address typo in i.MX8MM/Q IOMUXC_SD1_DATA0_GPIO2_IO2
     definition.

  Marvell mvebu:
   - Fix storm interrupt on Turris Omnia

   - Enable hardware buffer management as it should be

  ... and build fixes for PXA, Freescale, Marvell, OMAP1 and Keystone"

* tag 'arm-fixes-5.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  ARM: dts: turris-omnia: configure LED[2]/INTn pin as interrupt pin
  ARM: dts: turris-omnia: fix hardware buffer management
  Revert "arm64: dts: marvell: armada-cp110: Switch to per-port SATA interrupts"
  ARM: mvebu: avoid clang -Wtautological-constant warning
  ARM: pxa: mainstone: avoid -Woverride-init warning
  ARM: omap1: fix building with clang IAS
  soc/fsl: qbman: fix conflicting alignment attributes
  ARM: keystone: fix integer overflow warning
  ARM: dts: imx6: pbab01: Set vmmc supply for both SD interfaces
  arm64: dts: imx8mm/q: Fix pad control of SD1_DATA0
  ARM: OMAP4: PM: update ROM return address for OSWR and OFF
  ARM: OMAP4: Fix PMIC voltage domains for bionic
  ARM: dts: Fix moving mmc devices with aliases for omap4 & 5
  ARM: dts: Drop duplicate sha2md5_fck to fix clk_disable race
  Revert "ARM: dts: bcm2711: Add the BSC interrupt controller"
2021-04-07 09:26:50 -07:00
Hyeonki Hong
412c8fa8c3 arm64: dts: meson: add GPIO line names to ODROID N2/N2+
Add GPIO line-name identifiers to the ODROID N2/N2+ common dtsi.

Signed-off-by: Hyeonki Hong <hhk7734@gmail.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Link: https://lore.kernel.org/r/20210407042609.9736-4-christianshewitt@gmail.com
2021-04-07 09:18:41 -07:00
Hyeonki Hong
cfa303d99e arm64: dts: meson: add saradc node to ODROID N2/N2+
Add the meson saradc node to the ODROID N2/N2+ common dtsi.

Signed-off-by: Hyeonki Hong <hhk7734@gmail.com>
Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Link: https://lore.kernel.org/r/20210407042609.9736-3-christianshewitt@gmail.com
2021-04-07 09:18:40 -07:00
Christian Hewitt
7d9158bcb3 arm64: dts: meson: remove extra tab from ODROID N2/N2+ ext_mdio node
Remove an extra tab from the ext_mdio node in the ODROID N2/N2+ common
dtsi file.

Signed-off-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
Link: https://lore.kernel.org/r/20210407042609.9736-2-christianshewitt@gmail.com
2021-04-07 09:18:40 -07:00
Alexandru Elisei
263d6287da KVM: arm64: Initialize VCPU mdcr_el2 before loading it
When a VCPU is created, the kvm_vcpu struct is initialized to zero in
kvm_vm_ioctl_create_vcpu(). On VHE systems, the first time
vcpu.arch.mdcr_el2 is loaded on hardware is in vcpu_load(), before it is
set to a sensible value in kvm_arm_setup_debug() later in the run loop. The
result is that KVM executes for a short time with MDCR_EL2 set to zero.

This has several unintended consequences:

* Setting MDCR_EL2.HPMN to 0 is constrained unpredictable according to ARM
  DDI 0487G.a, page D13-3820. The behavior specified by the architecture
  in this case is for the PE to behave as if MDCR_EL2.HPMN is set to a
  value less than or equal to PMCR_EL0.N, which means that an unknown
  number of counters are now disabled by MDCR_EL2.HPME, which is zero.

* The host configuration for the other debug features controlled by
  MDCR_EL2 is temporarily lost. This has been harmless so far, as Linux
  doesn't use the other fields, but that might change in the future.

Let's avoid both issues by initializing the VCPU's mdcr_el2 field in
kvm_vcpu_vcpu_first_run_init(), thus making sure that the MDCR_EL2 register
has a consistent value after each vcpu_load().

Fixes: d5a21bcc2995 ("KVM: arm64: Move common VHE/non-VHE trap config in separate functions")
Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210407144857.199746-3-alexandru.elisei@arm.com
2021-04-07 16:40:03 +01:00
Arnd Bergmann
2ce5e1b010 Samsung DTS ARM64 changes for v5.13
Two cleanups in DTS without expected impact.
 -----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEE3dJiKD0RGyM7briowTdm5oaLg9cFAmBtVQgQHGtyemtAa2Vy
 bmVsLm9yZwAKCRDBN2bmhouD1xcnD/41gX5O2hkbbeMu1QLBapUlWWRhiK/NgLV6
 xonZmKFgPpdcdr/BtJY+8TO1aiRieIPBPxWTwtEaQysiifxvX0F/F85eLIh/Yjnm
 ShVe57jKNaYjNWST97/lVRl8m3UEaG+f3UUEr3hvbkXbMmFea4zYipp3O9wPAX9L
 dbandqWLyX56ew0mxPIc/sWpSGBv60W9edkuQxx9+26757CEbsaPuQDUjr768DWc
 ZcDXpg7/9wpzCmxsiF2qIb5Oq8qOZ3qxR6nTQHvk2nY2ZvvES/9jCeZbJndYQgfk
 fKadFaa3feoxfMALGsUDhh4dznVvGRo1UlduZMazCQk/Fb7IWRYOmYfqqyn9I0xH
 qsGkkm4LXYPsvD7r8uaHET1OTrG1tfqtLCX+DrXIZK5lSVnMdf6kBEsBrwOxVPx6
 DaR3ogLvD81dDKsEUJee3u8d8uLTLtgWXKkIOsfZ7G9+p7bSJX7UL/1iuV9Z0sIB
 dCA8ctYh2vsqjSJb7vB6twuXXRrf5feRrdpl6aiPNovCztAa7/ZES99eJADUIGmZ
 2hwRMzwz/haVeD3Q+YvWSVXFuhLfyxBv8LbE+ehazTdB2eedeE20cKPpZEr+JZf+
 sE4VKN4R+FdplpaU1qTPxa9LNeI2tGvek9uXCZCGkchKPBcCipONeVKZiSPFSO8a
 d/UVjysegQ==
 =h4md
 -----END PGP SIGNATURE-----

Merge tag 'samsung-dt64-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into arm/dt

Samsung DTS ARM64 changes for v5.13

Two cleanups in DTS without expected impact.

* tag 'samsung-dt64-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux:
  arm64: dts: exynos: white-space cleanups
  arm64: dts: exynos: re-order Slim SSS clocks to match dtschema

Link: https://lore.kernel.org/r/20210407065828.7213-2-krzysztof.kozlowski@canonical.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-07 17:39:30 +02:00
Jianyong Wu
3bf725699b KVM: arm64: Add support for the KVM PTP service
Implement the hypervisor side of the KVM PTP interface.

The service offers wall time and cycle count from host to guest.
The caller must specify whether they want the host's view of
either the virtual or physical counter.

Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20201209060932.212364-7-jianyong.wu@arm.com
2021-04-07 16:33:20 +01:00
Arnd Bergmann
aa1e345ade arm64: dts: amlogic updates for v5.13
- new boards: MeCool KII & KIII, Minix NEO U9-H
 - used fixed index for MMC devices
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEe4dGDhaSf6n1v/EMWTcYmtP7xmUFAmBrkxcACgkQWTcYmtP7
 xmWSrw//eIBIAD4LLv1FTJacGSxeoyk0QcrDUv2Z70Fik1V7nkh46+L2Am5vjSy4
 uey9Y+sScDhRjnQmclB1x7aoZ7JsPjmK9bkh7QpzEya+U9Cnm6OR+4/pHfYrv7XV
 JDTjAhCx2zULYnfCXxMPV00tDbt9wHt9TNHF1eJmDjeHYovpYd8VU0CjraAzNGRj
 1oAXhefdMFWpfWznOKkY5nRaPSVHA4rmTt1L+h18aaMHlOrQVYb3aJV6rwSn98aM
 Kx9AVE+WlxjfL/g4zMIUG7p5B+BGwa8bnVpjlYts1VUhCqx86XfJjqE/wX0U+r14
 nscV2fwXZW098Q57xmc14lFSKLsQFfj58Wj95+HCqIN7gzkHgZ6+Hd+6ZEh0Dq/a
 m2rwmZdsDlBvxOReHKAUswxwKARTodVOdikRSIm1I3k/1nkED/3llRTyxf78H7ke
 7SfhLSqZbsAF6xUBqFKsauPudWVbtglcLlb7CABShJdpGaEGdijTwcRVRN8FTcie
 rXIXIpQZvILS7EBjcjQeNEHhmspIhsXn0Yyh6P27/fff83XCOlCuEnlnZP6UbV/9
 tPe9ZCUJT4Ua/IJYH1sX2xkubLrheRP4td38Opui2iyTXEMDgnN6M9lyXAFqGQzB
 DtcV26gZrN/aTf4H1Npldedrk42iw/GiB0KpiOvsRT2XRx73JdI=
 =CSRd
 -----END PGP SIGNATURE-----

Merge tag 'amlogic-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into arm/dt

arm64: dts: amlogic updates for v5.13
- new boards: MeCool KII & KIII, Minix NEO U9-H
- used fixed index for MMC devices

* tag 'amlogic-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic:
  arm64: dts: meson: add initial device-tree for MeCool KIII Pro
  arm64: dts: meson: add initial device-tree for MeCool KII Pro
  dt-bindings: arm: amlogic: add MeCool KII/KIII Pro bindings
  arm64: dts: amlogic: Assign a fixed index to mmc devices
  arm64: dts: meson: add initial device-tree for Minix NEO U9-H
  dt-bindings: arm: amlogic: add support for the Minix NEO U9-H

Link: https://lore.kernel.org/r/7h5z10mjpp.fsf@baylibre.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-07 17:32:20 +02:00
Arnd Bergmann
4b8cf90637 Devicetree changes for TI K3 platforms for v5.13 merge window:
* New SoCs:
   - AM642 mean for industrial control, motor control, remote IO, IoT gateway etc.
 * New Boards:
   - AM65: Siemens SIMATIC IOT2050 advanced and basic boards
   - AM64: EVM and SK boards
 * New peripherals:
   - AM65: watchdog
   - AM65,J721E: ICSSG
   - J7200: OSPI, GPIO
 * Fixes:
   - AM65: pcie node fixup, ospi speed updates
   - J721e, J7200: MMC speed updates, ospi speed updates and compatibles fixups.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE+KKGk1TrgjIXoxo03bWEnRc2JJ0FAmBrMDYACgkQ3bWEnRc2
 JJ3v6BAAq6iVnQz5jGZXMP1SQcZyhRMFG5K3kEp/NHA6v4Sth4Knudd9s+aGPeHM
 tZvilR4pNCl+oXTohktXBcs81BOzcJAiSIEQqWMo/7OkOxvpA5dseYXzeDmlZBl1
 98NwqgE2vXnxy1o9acWLHh2kWzdPr6N7zl/7hPrXKX8ohFi4MAGCZpwRvUsfj8e7
 jzr5oC1WEtiB8i7YASKaLOhpMFjBlMc7++mU9P6SqTyDd7IfjI4Q5vquP0Gtakay
 mGd2lSwlqDdaXcemVDHfcKOToS/WoHyiwBt8nf+AByDnLtCxY/jOxNrEgvXS5Zkh
 Xk9uRhuYhNv/OJz3JQ92SCGUjIIjHeBc+KuUcJ9mP0WyLZlAfc+ZYmeYXaHyLAS5
 QnBiFbvbJpasOA1mk2ePcYOzI3hvSTrbEO0bzoxsvAP0QENmmc8RGbT0mqi/u7RO
 kOa10SvNl5O0eHl7Z3t+lCyph6hUcN+0wJAdz/6z57rm2U7Vv4NJ6jIL998j8RSs
 dYe+fAT3lEyfKQCtj0p8mKcwAglQw8fhjhWJ8FVdpVKYkh/hKrJuMNFF9usCl8Rh
 S9xZieGA3LxldtEIOCEJJFKvo+XkJRozHRHo3dL+YBZVDjyJViFbrzqNZsYpOPrk
 3GPF4GDjuuDfJsNoV6lHEnQ7urQ0zruSm6cCSM55HF6FdSxHhBE=
 =FXts
 -----END PGP SIGNATURE-----

Merge tag 'ti-k3-dt-for-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/nmenon/linux into arm/dt

Devicetree changes for TI K3 platforms for v5.13 merge window:

* New SoCs:
  - AM642 mean for industrial control, motor control, remote IO, IoT gateway etc.
* New Boards:
  - AM65: Siemens SIMATIC IOT2050 advanced and basic boards
  - AM64: EVM and SK boards
* New peripherals:
  - AM65: watchdog
  - AM65,J721E: ICSSG
  - J7200: OSPI, GPIO
* Fixes:
  - AM65: pcie node fixup, ospi speed updates
  - J721e, J7200: MMC speed updates, ospi speed updates and compatibles fixups.

* tag 'ti-k3-dt-for-v5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/nmenon/linux: (39 commits)
  arm64: dts: ti: k3-am64-main: Fix ospi compatible
  arm64: dts: ti: k3-j7200-mcu: Fix ospi compatible
  arm64: dts: ti: k3-j721e-mcu: Fix ospi compatible
  arm64: dts: ti: k3-j7200: Add support for higher speed modes and update delay select values for MMCSD subsystems
  arm64: dts: ti: k3-j7200-common-proc-board: Disable unused gpio modules
  arm64: dts: ti: k3-j7200: Add gpio nodes
  arm64: dts: ti: k3-am642-evm/sk: Add IPC sub-mailbox nodes
  arm64: dts: ti: k3-am64-main: Add mailbox cluster nodes
  arm64: dts: ti: k3-am64-main: Add hwspinlock node
  arm64: dts: ti: k3-am642: reserve gpio in mcu domain for firmware usage
  arm64: dts: ti: k3-am64: Add GPIO DT nodes
  arm64: dts: ti: k3-am64-evm/sk: Add OSPI flash DT node
  arm64: dts: ti: k3-am64-main: Add OSPI node
  arm64: dts: ti: k3-am64-main: Add ADC nodes
  arm64: dts: ti: k3-am642-evm: Add USB support
  arm64: dts: ti: k3-am64-main: Add DT node for USB subsystem
  arm64: dts: ti: Add support for Siemens IOT2050 boards
  dt-bindings: arm: ti: Add bindings for Siemens IOT2050 boards
  dt-bindings: Add Siemens vendor prefix
  arm64: dts: ti: k3-am642-evm: Add support for SPI EEPROM
  ...

Link: https://lore.kernel.org/r/20210405155336.smohb7uzkperqwuz@reflex
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-07 17:28:11 +02:00
Gavin Shan
10ba2d17d2 KVM: arm64: Don't retrieve memory slot again in page fault handler
We needn't retrieve the memory slot again in user_mem_abort() because
the corresponding memory slot has been passed from the caller. This
would save some CPU cycles. For example, the time used to write 1GB
memory, which is backed by 2MB hugetlb pages and write-protected, is
dropped by 6.8% from 928ms to 864ms.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Keqian Zhu <zhukeqian1@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210316041126.81860-4-gshan@redhat.com
2021-04-07 14:33:22 +01:00
Gavin Shan
c728fd4ce7 KVM: arm64: Use find_vma_intersection()
find_vma_intersection() has been existing to search the intersected
vma. This uses the function where it's applicable, to simplify the
code.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Keqian Zhu <zhukeqian1@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210316041126.81860-3-gshan@redhat.com
2021-04-07 14:33:22 +01:00
Gavin Shan
eab6214847 KVM: arm64: Hide kvm_mmu_wp_memory_region()
We needn't expose the function as it's only used by mmu.c since it
was introduced by commit c64735554c0a ("KVM: arm: Add initial dirty
page locking support").

Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Keqian Zhu <zhukeqian1@huawei.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210316041126.81860-2-gshan@redhat.com
2021-04-07 14:33:22 +01:00
Arnd Bergmann
61bac46eed Qualcomm ARM64 DT updates for 5.13
This extends the initial SM8350 description merged in v5.12 with
 CPUfreq, SMMU, UFS, RPMHPD, SPMI, USB and remoteproc support. It adds
 initial PMIC definitions for the 6 PMICs found on the MTP and it
 introduces the new SM8350 Hardware Development Kit (HDK).
 
 SC7180 is further polished, the DisplayPort portion of the QMP phy is
 defined and several new SKUs of the Trogdor devices are introduced.
 
 The new SC7280 platform is introduced, with RPMH, RPMHPD, RPMCC, SPMI,
 CPU idle, SMMU and watchdog defined.
 
 SDM845 gains the camera related nodes and some cleanups.
 
 For SM8250 it brings some cleanups and migrates SPI0 to use GPIO for
 chip select.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmBp7RwbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FQJsP/RI7bv+1TtFlzxUSnhxy
 AOhvA7siJLIOxsfoeUZPsG4bxsuRL0mkDeu/NyuZfmpp0CUcYs4/fZUascmYGT1J
 bRiBUWq9Iscfd9GIO3IRS9YOteUJu8NQi1GCHjlfxiet+cqG/enKa5Xdqh7qgtpw
 E+tIM5NOe+06u1gU5h+6hbJTlZgK3s74JQ4ui5aO9VBVi8VyPwxIxZS5/li1M7pg
 AEVJZ3zVhQfmxiEjO1ljTYf4HdD4K4f4e3qiBabhlFaHjly0FIDxtl9GT3vjee3Z
 nMVNG3LZauNcw2MRwGWRB8t1gheUJG4M3e3XgTazPIbyNx1zpyypMGzF7w/je6cR
 YVtlKorQ7HEqx3Pd8nc0oMXeRS4ZrzDeHWz0kJoa9eOr67fdDpz/3HJEgTp+VgUI
 D8KcLeWxg5LfJe53rXLg+Vga0AFYLu62hQC91RaH2ksS6AV3A9b7W7puRSJHiFhU
 ncsCOiFb2yNHP9v9JIvP8Dek0cx99rIX0BzvCb2GqAke+9JZhsAteua8eN0otMoq
 XRiRJP3mgL9F+MKwrgbWIKrethrM6UGKEzB5Afv/yitRLDUAKcTSTYIRr8Du51qH
 vmT2FKk9iJ7X1LKm32SPh40ScxuHAv1DG6xxHGEPtcuG6c/Af7wnyytXiuDPwBLj
 ZkOThaE7Yh2mMvhZGBrW+/VC
 =a6Po
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt

Qualcomm ARM64 DT updates for 5.13

This extends the initial SM8350 description merged in v5.12 with
CPUfreq, SMMU, UFS, RPMHPD, SPMI, USB and remoteproc support. It adds
initial PMIC definitions for the 6 PMICs found on the MTP and it
introduces the new SM8350 Hardware Development Kit (HDK).

SC7180 is further polished, the DisplayPort portion of the QMP phy is
defined and several new SKUs of the Trogdor devices are introduced.

The new SC7280 platform is introduced, with RPMH, RPMHPD, RPMCC, SPMI,
CPU idle, SMMU and watchdog defined.

SDM845 gains the camera related nodes and some cleanups.

For SM8250 it brings some cleanups and migrates SPI0 to use GPIO for
chip select.

* tag 'qcom-arm64-for-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (79 commits)
  arm64: dts: qcom: qrb5165-rb5: switch into using GPIO for SPI0 CS
  arm64: dts: qcom: sm8250: add pinctrl for SPI using GPIO as a CS
  arm64: dts: qcom: sm8250: further split of spi pinctrl config
  arm64: dts: qcom: sm8250: split spi pinctrl config
  arm64: dts: qcom: sdm845-db845c: Enable ov8856 sensor and connect to ISP
  arm64: dts: qcom: sdm845-db845c: Configure regulators for camss node
  arm64: dts: qcom: sdm845: Add CAMSS ISP node
  arm64: dts: qcom: pm8150: Enable RTC
  arm64: dts: qcom: sm8350-mtp: Add PMICs
  arm64: dts: qcom: pmr735B: Add base dts file
  arm64: dts: qcom: pmr735a: Add base dts file
  arm64: dts: qcom: pm8350c: Add base dts file
  arm64: dts: qcom: pm8350b: Add base dts file
  arm64: dts: qcom: pm8350: Add base dts file
  arm64: dts: qcom: pmk8350: Add base dts file
  arm64: dts: qcom: sm8350: Add spmi node
  arm64: dts: qcom: db845c: fix correct powerdown pin for WSA881x
  dt-bindings: arm: qcom: Add SM8350 HDK
  arm64: dts: qcom: sc7180: Drop duplicate dp_hot_plug_det node in trogdor
  arm64: dts: qcom: sm8350: fix number of pins in 'gpio-ranges'
  ...

Link: https://lore.kernel.org/r/20210404164914.712946-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-07 14:01:09 +02:00