Hi Chris,


I am afraid not. For a hyp kernel, we reserve an entry in the first level page directory to store its associated ASID. If we were able to store this elsewhere, the application would have full use of the virtual address space.


You might be able to convince Linux that the devices are at a more appropriate location by changing their address in the device tree.


 - Alex



From: Devel <devel-bounces@sel4.systems> on behalf of Chris Guikema <Chris.Guikema@dornerworks.com>
Sent: Thursday, November 16, 2017 3:27 AM
To: devel@sel4.systems
Subject: [seL4] 1:1 Mapping of Zynqmp devices
 

Hello,

 

I am attempting to port the camkes-arm-vm to the zynqmp platform. For the TK1 and Exynos platforms, the physical address of the hardware devices are well below the kernelBase of 0xe0000000. However, for the zynqmp, these hardware devices are greater than the kernel base. This causes the “map_emulated_device” function call to fail for the GIC and any other passthrough devices.

 

sel4utils_reserve_range_at_no_alloc@vspace.c:589 Range not available at 0xff010000, size 0x1000

Assertion failed: res.res (/home/chrisguikema/seL4/NAMC/camkes-arm-vm/libs/libsel4arm-vmm/src/devices.c: map_device: 160)

 

Is there a way to 1:1 map these devices, even if they are above the kernelBase?

 

Thanks,

Chris