diff mbox

[Xen-devel] xen/arm: Blacklist the memory mapped timer (armv7-timer-mem)

Message ID 1421179673-30754-1-git-send-email-julien.grall@linaro.org
State Superseded, archived
Headers show

Commit Message

Julien Grall Jan. 13, 2015, 8:07 p.m. UTC
Some platform (such as the VFP Base AEMv8 model) has a memory mapped
timer. We don't want DOM0 use this timer rather than the generic ARM
timer. So blacklist it for all platforms.

Signed-off-by: Julien Grall <julien.grall@linaro.org>

---
    This patch is candidate to backport for Xen 4.5 and Xen 4.4.

    It may not apply correctly for Xen 4.4.
---
 xen/arch/arm/domain_build.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Julien Grall Jan. 14, 2015, 4:03 p.m. UTC | #1
Hi Ian,

On 14/01/15 11:02, Ian Campbell wrote:
> On Tue, 2015-01-13 at 20:07 +0000, Julien Grall wrote:
>> Some platform (such as the VFP Base AEMv8 model) has a memory mapped
>> timer. We don't want DOM0 use this timer rather than the generic ARM
>> timer. So blacklist it for all platforms.
> 
> It seems that these registers contain things like the ability to stop
> the counter or change its frequency. So we certainly don't want dom0
> getting at those!
> 
> It's not clear to me if accesses to these registers are trapped
> according to the controls available for the CP registers, or if we would
> have to resort to trapping the entire MMIO page if we wanted to support
> access to these registers (I don't think we would want to anyway).

I didn't find any spec for the memory mapped timer. But looking to the
driver, it looks like they also have the concept of physical/virtual. So
we may not need to trap.

Anyway, before implementing anything I'd like to find the corresponding
spec.

>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>>
>> ---
>>     This patch is candidate to backport for Xen 4.5 and Xen 4.4.
>>
>>     It may not apply correctly for Xen 4.4.
>> ---
>>  xen/arch/arm/domain_build.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index bf8dc78..16ce248 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -1047,6 +1047,7 @@ static int handle_node(struct domain *d, struct kernel_info *kinfo,
>>          DT_MATCH_COMPATIBLE("arm,psci"),
>>          DT_MATCH_PATH("/cpus"),
>>          DT_MATCH_TYPE("memory"),
>> +        DT_MATCH_COMPATIBLE("arm,armv7-timer-mem"),
> 
> This is a bit less obvious that the other things in this list. Could you
> perhaps add a comment?

Sure. I will send a new version.

Regards,
diff mbox

Patch

diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index bf8dc78..16ce248 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1047,6 +1047,7 @@  static int handle_node(struct domain *d, struct kernel_info *kinfo,
         DT_MATCH_COMPATIBLE("arm,psci"),
         DT_MATCH_PATH("/cpus"),
         DT_MATCH_TYPE("memory"),
+        DT_MATCH_COMPATIBLE("arm,armv7-timer-mem"),
         { /* sentinel */ },
     };
     static const struct dt_device_match gic_matches[] __initconst =