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
Show replies by date
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(a)sel4.systems> on behalf of Chris Guikema
<Chris.Guikema(a)dornerworks.com>
Sent: Thursday, November 16, 2017 3:27 AM
To: devel(a)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