-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for the Xilinx ZCU102 #8
Conversation
7405393
to
f18c4de
Compare
a94744c
to
067a6c6
Compare
Linux kernel at least boots now. Now we have to figure out why Linux user-space isn't working:
|
I'm assuming the failure probably comes from the firmware failing:
|
Well it looked like the Microkit SDK changes for SMC forwarding I made were wrong - which is weird as seL4 should have at least printed an error. So that's one thing to investigate. The next thing to investigate is, now that the SMC forwarding is fixed, it looks like when the VMM makes the system call to perform the SMC call, seL4 halts for some reason:
|
Not sure if you are already past this one: Added some extra print statements and set CONFIG_ZYNQMP_FIRMWARE_DEBUG=y in linux_config, now getting an seL4_IllegalOperation. VMM|INFO: Handling SiP call with function number: 63 0 |
Thanks, it looks like that error is from me messing up the SMC cap number, which is fixed now Ivan-Velickovic/microkit@a1165fa. That got me to the latest update which is |
9db2d14
to
8bb2d2e
Compare
Okay so, on hardware, we get into user-space and can log into the buildroot/BusyBox CLI. The problem I observed with the kernel halting only happened on QEMU, and not on real hardware. I don't have the time to investigate but the first thing I would check is whether running this Linux kernel actually works on QEMU (without seL4 virtualisation), I assume it doesn't. There are a couple of remaining issues before this can be merged:
|
f7dac35
to
6ac1554
Compare
@@ -90,6 +91,69 @@ static void smc_set_arg(seL4_UserContext *u, size_t arg, size_t val) | |||
} | |||
} | |||
|
|||
static void dump_smc_request(seL4_ARM_SMCContext *request) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be smc_print_request
to be consistent with the TCB and VCPU functions.
6ac1554
to
b445eec
Compare
Co-authored-by: Nataliya Korovkina <[email protected]>
These devices are not passed through for the simple example. This commit should be changed to instead disable these devices in the overlay and leave the base `linux.dts` file unchanged from Linux source code.
b445eec
to
f35256a
Compare
@Ivan-Velickovic I was looking through the LionsOS source and noticed this PR.
I did notice something when running a 2018.3 Petalinux on the CAmkES-VM. In the device tree, if you specified the I noticed this when using the kernel dtb as a base v. a dtb outputted by Petalinux. https://github.com/seL4/seL4/blob/master/tools/dts/zynqmp.dts#L990 https://github.com/seL4/camkes-vm-images/blob/master/zynqmp/2018_3/linux.dts#L1899 Might be something worth looking into. Obviously, for any more complex passthrough devices, the |
For more specifics on the reason for why, see this doc: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842107/Arm+Trusted+Firmware Functions like Power Management, Clocking, Pin Control, and others are mainly done with co-processors that are accessed via ATF. If a Linux device driver needs to make a change to any of these values for initialization, then the driver will make an SMC call. |
Fairly out of date and the PR does a couple of other things in addition to support for the ZCU102. |
Current status: partially boots Linux and then faults for some reason I am yet to discover.
cc: @sitestudio