Re: [PATCH] ARM: mach-shmobile: Don't configure ARCH timer if PSCI is enabled

From: Oleksandr
Date: Fri Apr 26 2019 - 15:51:13 EST



On 24.04.19 15:31, Julien Grall wrote:
Hi,

Hi Julien




As I answered in a previous email:

Â> But "#if !defined(CONFIG_ARM_PSCI)" wraps secure_cntvoff_init() call as
Â> well, which resets CNTVOFF,

Â> and this is something I tried to avoid the first from being executed on
Â> a CPU, which is in SVC mode (when running on top of Xen).

What would be a proper way to avoid calling secure_cntvoff_init() at runtime?

Check that we are already in non-secure mode and/or cntvoff is already 0?

CNTVOFF is controlled by the hypervisor, so you cannot access it from Dom0.

If none of this code should be necessary when PSCI is enabled, then you can check the presence of PSCI (see psci_smp_available()).


If I am not mistaken, U-Boot resets CNTVOFF before leaving monitor mode (switching to non-secure state). This happens if "support for booting in non-secure mode" is enabled.

This is a mandatory option for PSCI support as well as for support for hardware virtualization.

So the presence of PSCI would be an indicator, if CNTVOFF was configured in U-Boot and we don't need to.

From other hand, Gen2 Linux may be booted in non-secure mode, without PSCI support...


I was thinking about checking the presence of "enable-method = psci" in CPU node, but probably psci_smp_available() is better option.

Also, there is a specific device-tree property "arm,cpu-registers-not-fw-configured" [1], but I am not sure whether it is appropriate to use here.



Another solution is to check whether we are running on xen (see xen_domain()).

In any case, I would still surround the two checks because the "armgcnt" should really not be touched by Dom0.

Agree.

I will add two checks in V2.


Thank you!


[1]

https://elixir.bootlin.com/linux/v5.1-rc6/source/Documentation/devicetree/bindings/timer/arm,arch_timer.yaml#L68



Cheers,

--
Regards,

Oleksandr Tyshchenko