TimeServer "IRQ already mapped" error
Hi all, I'm trying to add a timer to my CAmkES component (all I need is a timestamp). I've been using this example component as a reference: https://github.com/seL4/camkes/tree/master/apps/timeserver My problem is that when I declare an instance of the global TimeServer component in my ".camkes" file, I get an error at build-time: "parse-capDL: IRQ already mapped: 68". I'm not sure what to make of this error. The only major difference between my project and the reference above is that I am building atop the camkes-arm-vm project. Could the VM be interfering here? Thanks, Grant Jurgensen
Hi Grant,
I'm not sure what to make of this error. The only major difference between my project and the reference above is that I am building atop the camkes-arm-vm project. Could the VM be interfering here?
The interrupt is likely allocated already either because you are using a camkes-arm-vm configuration that's using a virtual console configuration and an instance of the TimeServer alreay exists as a dependency of the SerialServer component. Or as was already suggested, one of the devices being configured as passed through to the VM is the same timer device that the TimeServer is trying to use. Which platform are you targeting? Kent.
Hi Kent, It seems that the problem was indeed that the device was being passed through to the VM. In the `device.camkes` file, I had to remove `{"path": "/soc/pwm@12dd0000"}` from the `vm.dtb` list (I'm not sure what this corresponds to in hardware, I only found it through the process of elimination). I'm now able to build a camkes component using a TimeServer, and the VM is still able to boot. I'm surprised that removing the device from the VM didn't seem to have an adverse effect on its operation. This is all on an Odroid-XU4 (exynos5422 chip). Thanks, Grant Jurgensen On Thu, Apr 16, 2020 at 12:50 AM Mcleod, Kent (Data61, Kensington NSW) < Kent.Mcleod@data61.csiro.au> wrote:
Hi Grant,
I'm not sure what to make of this error. The only major difference between my project and the reference above is that I am building atop the camkes-arm-vm project. Could the VM be interfering here?
The interrupt is likely allocated already either because you are using a camkes-arm-vm configuration that's using a virtual console configuration and an instance of the TimeServer alreay exists as a dependency of the SerialServer component. Or as was already suggested, one of the devices being configured as passed through to the VM is the same timer device that the TimeServer is trying to use. Which platform are you targeting?
Kent.
I'm surprised that removing the device from the VM didn't seem to have an adverse effect on its operation.
The default configuration for the camkes-arm-vm VM component is to respond to guest faults on hardware device regions that aren't passed through by mapping in a page of memory so that the guest just gets to read back what they wrote. So often removing a device can still lead to the guest being able to continue running. It's helpful to mark the devices as disabled in the device tree that the guest sees to prevent Linux from trying to initialize the driver too, but sometimes this isn't possible if the device is a platform driver with too many other dependencies. Kent.
participants (2)
-
Grant Jurgensen
-
Mcleod, Kent (Data61, Kensington NSW)