-
Notifications
You must be signed in to change notification settings - Fork 27
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
Add Multiple OS Support #31
base: master
Are you sure you want to change the base?
Conversation
This commit performed a find/replace to replace Linux references with generic VM/Kernel references, due to the VMM's ability to run other Operating Systems. Signed-off-by: Chris Guikema <[email protected]>
Previously, CMake variables would apply to each VM. This commit configures each VM based on their need. Signed-off-by: Chris Guikema <[email protected]>
Signed-off-by: Chris Guikema <[email protected]>
f4ef426
to
5c64b10
Compare
@WellMcGarnicle any idea why the Armv7 tests are failing but the Armv8 tests are working fine? It seems like its not pulling in the changes from the |
This might be unrelated to your PR. |
It has been fixed already. |
Can you add |
The VMM will calculate the entry address, but it should be explicitly set by the user. Signed-off-by: Chris Guikema <[email protected]>
I added |
We have the test passing, but It seem this does not execute anything on the hardware. Is there a way to test this, @lsf37 ? |
The runs @wom-bat have your concerns been addressed, i.e. can this be merged now? |
Is this good to be merged now? The changes are really useful. |
ram_offset and initrd_max_size are not used by the VMM, so we can safely remove them from the configuration. Signed-off-by: Chris Guikema <[email protected]>
a6e63ed
to
7d03878
Compare
@kent-mcleod will this PR get merged too? |
I had this open request to move the types from Potential reasons why these should be strings are, that this allow putting more in here than just numbers, e.g. the empty string so one does not have to use |
Right. If we were modifying the types to avoid using |
Yea, I was just waiting to see if any tests failed running the examples using the |
I don't quite follow what you mean about the ability to add offsets requiring strings? |
By keeping the parameters as strings, you can do this:
and the output is
Not sure if you change the parameters to |
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.
Testing this on hardware with seL4/camkes-vm#93 gives errors:
- https://github.com/seL4/camkes-vm/actions/runs/4916139523/jobs/8779673386?pr=93
- vm_minimal_tk1 FAILED
[email protected]:702 module name: map_frame_hack
[email protected]:702 module name: init_ram
[email protected]:702 module name: plat
Loading Kernel: 'linux'
<<seL4(CPU 0) [decodeARMFrameInvocation/2473 T0xfc59fc00 "vm0:control" @78868]: Page Flush: Overlaps kernel region.>>
guest_write_address@guest_image.c:148 [Err seL4_IllegalOperation]:
seL4_ARM_Page_CleanInvalidate_Data failed
[[Timeout]]
- https://github.com/seL4/camkes-vm/actions/runs/4916139523/jobs/8779673546?pr=93
- vm_virtio_net_arping_tx2 FAILED
OnDemandInstall: Created device-backed memory for addr 0x2439000
[ 3.159552] eqos_get_mac_address_dtb: bad mac address at /chosen/nvidia,ether-mac: null.
[ 3.176303] NET: Registered protocol family 10
[ 3.180783] ether-mac read from DT failed -99
[ 3.187675] eqos: MDIO is not present
[ 3.187675]
[ 3.192863] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 3.201588] sit: IPv6 over IPv4 tunneling driver
[ 3.206241] pgd = ffff8000005df000
[ 3.213499] [00000000] *pgd=00000000f7802003
[ 3.219721] NET: Registered protocol family 17
[ 3.224379] , *pud=00000000f7803003, *pmd=00000000f7804003, *pte=00e8000003881707
[ 3.231918] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[ 3.237482] Modules linked in:
[ 3.240544] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.4.38L4T kernel 4.4.38 #8
[ 3.248186] Hardware name: quill (DT)
[ 3.251843] Workqueue: events_unbound 0xffff8000000a8b40
[ 3.257152] task: ffff80000686c000 ti: ffff800006870000 task.ti: ffff800006870000
[ 3.264620] pc : [<ffff8000002581b0>] lr : [<ffff8000002581ac>] pstate: 80000145
[ 3.272001] sp : ffff800006873b80
[ 3.275308] x29: ffff800006873b80 x28: ffff800000400471
[ 3.280628] x27: ffff800007d55c20 x26: ffff8000003bb6d0
[ 3.285945] x25: ffff8000005ca000 x24: 0000000000000001
[ 3.291265] x23: ffff8000064fe080 x22: ffff8000064fe090
[ 3.296584] x21: ffff80000165c000 x20: 00000000ffffff9d
[ 3.301902] x19: ffff80000165c780 x18: 0000000000000010
[ 3.307218] x17: 000000000000000e x16: 0000000000000007
[ 3.312537] x15: 0000000000000000 x14: 0ffffffffffffffe
[ 3.317857] x13: 0000000000000028 x12: 0101010101010101
[ 3.323174] x11: 7f7f7f7f7f7f7f7f x10: 00000000000005e0
[ 3.328492] x9 : ffff800006873980 x8 : ffff80000686c640
[ 3.333808] x7 : ffff800007d112e0 x6 : 0000000000000400
[ 3.339124] x5 : 0000000000000001 x4 : 0000000000000000
[ 3.344441] x3 : 0000000000000000 x2 : ffff80000053963c
[ 3.349758] x1 : 0000000000000000 x0 : 0000000000000000
[ 3.355078]
[ 3.356567] Process kworker/u2:0 (pid: 6, stack limit = 0xffff800006870020)
[ 3.363512] Call trace:
[ 3.365954] [<ffff8000002581b0>] 0xffff8000002581b0
[ 3.370821] [<ffff800000236f90>] 0xffff800000236f90
[ 3.375688] [<ffff800000235948>] 0xffff800000235948
[ 3.380556] [<ffff800000235a4c>] 0xffff800000235a4c
[ 3.385424] [<ffff800000234014>] 0xffff800000234014
[ 3.390292] [<ffff800000235490>] 0xffff800000235490
[ 3.395159] [<ffff80000023443c>] 0xffff80000023443c
[ 3.400026] [<ffff8000000a8b88>] 0xffff8000000a8b88
[ 3.404892] [<ffff8000000a188c>] 0xffff8000000a188c
[ 3.409759] [<ffff8000000a2600>] 0xffff8000000a2600
[ 3.414627] [<ffff8000000a6c54>] 0xffff8000000a6c54
[ 3.419493] [<ffff800000084790>] 0xffff800000084790
[ 3.424563] ---[ end trace f6b6e2d40bd25d63 ]---
[ 3.429535] NET: Registered protocol family 15
[ 3.460254] Unable to handle kernel paging request at virtual address ffffffffffffffd8
[ 3.468162] pgd = ffff8000005df000
[ 3.471558] [ffffffffffffffd8] *pgd=0000000000000000
[ 3.476525] Internal error: Oops: 96000004 [#2] PREEMPT SMP
[ 3.482086] Modules linked in:
[ 3.485148] CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G D 4.4.38L4T kernel 4.4.38 #8
[ 3.494002] Hardware name: quill (DT)
[ 3.497666] task: ffff80000686c000 ti: ffff800006870000 task.ti: ffff800006870000
[ 3.505133] pc : [<ffff8000000a70e0>] lr : [<ffff8000000a2d78>] pstate: 600001c5
[ 3.512514] sp : ffff800006873780
[ 3.515821] x29: ffff800006873780 x28: ffff800006870000
[ 3.521140] x27: ffff800007d55c20 x26: 0000000000000000
[ 3.526458] x25: 0000000000000000 x24: ffff80000052a9e8
[ 3.531779] x23: ffff80000686c420 x22: ffff80000051e280
[ 3.537100] x21: 0000000000000000 x20: ffff80000686c000
[ 3.542418] x19: 0000000000000000 x18: 0000000000000028
[ 3.547736] x17: 000000000000000e x16: 0000000000000007
[ 3.553054] x15: 0000000000000001 x14: 0000000000000007
[ 3.558375] x13: 000000000000000e x12: 0000000000000013
[ 3.563693] x11: 000000000000001a x10: ffff8000003b7ed8
[ 3.569011] x9 : ffff80000052a9e8 x8 : 0000000000004960
[ 3.574328] x7 : ffff800007d112e0 x6 : 0000000000000400
[ 3.579644] x5 : 00ffffffffffffff x4 : ffff80000686c060
[ 3.584964] x3 : 0000000000000000 x2 : 00000000b9c29b62
[ 3.590283] x1 : 0000000000000000 x0 : 0000000000000000
[ 3.595598]
[ 3.597087] Process kworker/u2:0 (pid: 6, stack limit = 0xffff800006870020)
[ 3.604035] Call trace:
[ 3.606476] [<ffff8000000a70e0>] 0xffff8000000a70e0
[ 3.611343] [<ffff800000370530>] 0xffff800000370530
[ 3.616209] [<ffff8000003708a8>] 0xffff8000003708a8
[ 3.621077] [<ffff800000093354>] 0xffff800000093354
[ 3.[6259](https://github.com/seL4/camkes-vm/actions/runs/4916139523/jobs/8779673546?pr=93#step:4:6265)45] [<ffff800000086f70>] 0xffff800000086f70
[ 3.630812] [<ffff80000008e324>] 0xffff80000008e324
[ 3.635678] [<ffff80000008e580>] 0xffff80000008e580
[ 3.640545] [<ffff80000008e5b8>] 0xffff80000008e5b8
[ 3.645412] [<ffff800000080aa4>] 0xffff800000080aa4
[ 3.650278] [<ffff800000083d40>] 0xffff800000083d40
[ 3.655145] [<ffff800000236f90>] 0xffff800000236f90
[ 3.660012] [<ffff800000235948>] 0xffff800000235948
[ 3.664878] [<ffff800000235a4c>] 0xffff800000235a4c
[ 3.669745] [<ffff800000234014>] 0xffff800000234014
[ 3.674611] [<ffff800000235490>] 0xffff800000235490
[ 3.679479] [<ffff80000023443c>] 0xffff80000023443c
[ 3.684346] [<ffff8000000a8b88>] 0xffff8000000a8b88
[ 3.689212] [<ffff8000000a188c>] 0xffff8000000a188c
[ 3.694079] [<ffff8000000a2600>] 0xffff8000000a2600
[ 3.698946] [<ffff8000000a6c54>] 0xffff8000000a6c54
[ 3.703812] [<ffff800000084790>] 0xffff800000084790
[ 3.708855] ---[ end trace f6b6e2d40bd25d65 ]---
[ 3.713463] Fixing recursive fault but reboot is needed!
[[Timeout]]
- vm_virtio_net_ping_tx2 FAILED
OnDemandInstall: Created device-backed memory for addr 0x2439000
[ 3.159458] eqos_get_mac_address_dtb: bad mac address at /chosen/nvidia,ether-mac: null.
[ 3.176385] NET: Registered protocol family 10
[ 3.180846] ether-mac read from DT failed -99
[ 3.187787] eqos: MDIO is not present
[ 3.187787]
[ 3.192975] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 3.201703] sit: IPv6 over IPv4 tunneling driver
[ 3.206355] pgd = ffff8000005df000
[ 3.213698] [00000000] *pgd=00000000f7802003
[ 3.219940] NET: Registered protocol family 17
[ 3.224600] , *pud=00000000f7803003, *pmd=00000000f7804003, *pte=00e8000003881707
[ 3.232126] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[ 3.237690] Modules linked in:
[ 3.240750] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.4.38L4T kernel 4.4.38 #8
[ 3.248391] Hardware name: quill (DT)
[ 3.252048] Workqueue: events_unbound 0xffff8000000a8b40
[ 3.257360] task: ffff80000686c000 ti: ffff800006870000 task.ti: ffff800006870000
[ 3.264829] pc : [<ffff8000002581b0>] lr : [<ffff8000002581ac>] pstate: 80000145
[ 3.272208] sp : ffff800006873b80
[ 3.275515] x29: ffff800006873b80 x28: ffff800000400471
[ 3.280837] x27: ffff800007d55c20 x26: ffff8000003bb6d0
[ 3.286155] x25: ffff8000005ca000 x24: 0000000000000001
[ 3.291474] x23: ffff8000064fe080 x22: ffff8000064fe090
[ 3.296794] x21: ffff80000165e000 x20: 00000000ffffff9d
[ 3.302112] x19: ffff80000165e780 x18: 0000000000000010
[ 3.307429] x17: 000000000000000e x16: 0000000000000007
[ 3.312748] x15: 0000000000000000 x14: 0ffffffffffffffe
[ 3.318068] x13: 0000000000000028 x12: 0101010101010101
[ 3.323384] x11: 7f7f7f7f7f7f7f7f x10: 00000000000005e0
[ 3.328703] x9 : ffff800006873980 x8 : ffff80000686c640
[ 3.334020] x7 : ffff800007d112e0 x6 : 0000000000000400
[ 3.339339] x5 : 0000000000000001 x4 : 0000000000000000
[ 3.344657] x3 : 0000000000000000 x2 : ffff80000053963c
[ 3.349975] x1 : 0000000000000000 x0 : 0000000000000000
[ 3.355293]
[ 3.356782] Process kworker/u2:0 (pid: 6, stack limit = 0xffff800006870020)
[ 3.363729] Call trace:
[ 3.366170] [<ffff8000002581b0>] 0xffff8000002581b0
[ 3.371038] [<ffff800000236f90>] 0xffff800000236f90
[ 3.375906] [<ffff800000235948>] 0xffff800000235948
[ 3.380774] [<ffff800000235a4c>] 0xffff800000235a4c
[ 3.385642] [<ffff800000234014>] 0xffff800000234014
[ 3.390509] [<ffff800000235490>] 0xffff800000235490
[ 3.395374] [<ffff80000023443c>] 0xffff80000023443c
[ 3.400241] [<ffff8000000a8b88>] 0xffff8000000a8b88
[ 3.405107] [<ffff8000000a188c>] 0xffff8000000a188c
[ 3.409973] [<ffff8000000a2600>] 0xffff8000000a2600
[ 3.414840] [<ffff8000000a6c54>] 0xffff8000000a6c54
[ 3.419706] [<ffff800000084790>] 0xffff800000084790
[ 3.424775] ---[ end trace bb19a9da89dc376a ]---
[ 3.429745] NET: Registered protocol family 15
[ 3.460596] Unable to handle kernel paging request at virtual address ffffffffffffffd8
[ 3.468504] pgd = ffff8000005df000
[ 3.471898] [ffffffffffffffd8] *pgd=0000000000000000
[ 3.476862] Internal error: Oops: 96000004 [#2] PREEMPT SMP
[ 3.482423] Modules linked in:
[ 3.485481] CPU: 0 PID: 6 Comm: kworker/u2:0 Tainted: G D 4.4.38L4T kernel 4.4.38 #8
[ 3.494336] Hardware name: quill (DT)
[ 3.497998] task: ffff80000686c000 ti: ffff800006870000 task.ti: ffff800006870000
[ 3.505466] pc : [<ffff8000000a70e0>] lr : [<ffff8000000a2d78>] pstate: 600001c5
[ 3.512847] sp : ffff800006873780
[ 3.516154] x29: ffff800006873780 x28: ffff800006870000
[ 3.521472] x27: ffff800007d55c20 x26: 0000000000000000
[ 3.526789] x25: 0000000000000000 x24: ffff80000052a9e8
[ 3.532106] x23: ffff80000686c420 x22: ffff80000051e280
[ 3.537422] x21: 0000000000000000 x20: ffff80000686c000
[ 3.542740] x19: 0000000000000000 x18: 0000000000000028
[ 3.548056] x17: 000000000000000e x16: 0000000000000007
[ 3.553373] x15: 0000000000000001 x14: 0000000000000007
[ 3.558691] x13: 000000000000000e x12: 0000000000000013
[ 3.564010] x11: 000000000000001a x10: ffff8000003b7ed8
[ 3.569326] x9 : ffff80000052a9e8 x8 : 0000000000004820
[ 3.574642] x7 : ffff800007d112e0 x6 : 0000000000000400
[ 3.579961] x5 : 00ffffffffffffff x4 : ffff80000686c060
[ 3.585278] x3 : 0000000000000000 x2 : 00000000b9cfe522
[ 3.590595] x1 : 0000000000000000 x0 : 0000000000000000
[ 3.595912]
[ 3.597400] Process kworker/u2:0 (pid: 6, stack limit = 0xffff800006870020)
[ 3.604346] Call trace:
[ 3.606787] [<ffff8000000a70e0>] 0xffff8000000a70e0
[ 3.611654] [<ffff800000370530>] 0xffff800000370530
[ 3.616520] [<ffff8000003708a8>] 0xffff8000003708a8
[ 3.621387] [<ffff800000093354>] 0xffff800000093354
[ 3.626254] [<ffff800000086f70>] 0xffff800000086f70
[ 3.631120] [<ffff80000008e324>] 0xffff80000008e324
[ 3.635988] [<ffff80000008e580>] 0xffff80000008e580
[ 3.640854] [<ffff80000008e5b8>] 0xffff80000008e5b8
[ 3.645720] [<ffff800000080aa4>] 0xffff800000080aa4
[ 3.650586] [<ffff800000083d40>] 0xffff800000083d40
[ 3.655452] [<ffff800000236f90>] 0xffff800000236f90
[ 3.660319] [<ffff800000235948>] 0xffff800000235948
[ 3.665186] [<ffff800000235a4c>] 0xffff800000235a4c
[ 3.670053] [<ffff800000234014>] 0xffff800000234014
[ 3.674920] [<ffff800000235490>] 0xffff800000235490
[ 3.679787] [<ffff80000023443c>] 0xffff80000023443c
[ 3.684654] [<ffff8000000a8b88>] 0xffff8000000a8b88
[ 3.689520] [<ffff8000000a188c>] 0xffff8000000a188c
[ 3.694388] [<ffff8000000a2600>] 0xffff8000000a2600
[ 3.699255] [<ffff8000000a6c54>] 0xffff8000000a6c54
[ 3.704122] [<ffff800000084790>] 0xffff800000084790
[ 3.709169] ---[ end trace bb19a9da89dc376c ]---
[ 3.[7137](https://github.com/seL4/camkes-vm/actions/runs/4916139523/jobs/8779673546?pr=93#step:4:7144)77] Fixing recursive fault but reboot is needed!
[[Timeout]]
@chrisguikema where are we with this set of PRs actually. It seems to work basically, just need to pass the CI runs or clarify what they fail temporarily until everything is merged? |
Yeah the changes do seem to work, except for the cases you mentioned. I'm assuming those do work using the old setup? It would be nice to get these merged and remove all of the outdated things |
Can you rebase this, so it's possible to build it again? I'm getting some strange errors now due to other changes. The rebase seems trivial, the conflict with |
API change configuring each VM individually. This allows for a configuration supporting different Operating Systems, getting closer to a universal VMM.
Test with: seL4/seL4_projects_libs#81, seL4/camkes-vm#48