Christopher Guikema
Christopher Guikema
Hey Kent, our basic setup was a CAmkES-VM running on Core 1, with all the servers running on Core 0. A previous PR fixed the issue we were seeing with...
I did my best to answer any questions. Please let me know if you need any more clarification.
Here's where the prints are: ``` diff --git a/src/arch/x86/c_traps.c b/src/arch/x86/c_traps.c index 33df38ea8..de671ffa5 100644 --- a/src/arch/x86/c_traps.c +++ b/src/arch/x86/c_traps.c @@ -108,6 +108,7 @@ void NORETURN slowpath(syscall_t syscall) vcpu_update_state_sysvmenter(NODE_STATE(ksCurThread)->tcbArch.tcbVCPU); if (NODE_STATE(ksCurThread)->tcbBoundNotification && notification_ptr_get_state(NODE_STATE(ksCurThread)->tcbBoundNotification)...
``` [email protected]:264 vm1:core0 has gotten 20 notifications [email protected]:264 vm1:core0 has gotten 30 notifications vm1:control: notification exit 50 times [email protected]:264 vm1:core0 has gotten 40 notifications ``` I put a `num_notification` variable...
In `handleVmexit`, the thread state would still be `ThreadState_RunningVM`, as that isn't updated til `handleVmxFault`, which is the last function called in `handleVmexit`. Additionally, the thread does not claim the...
Ah, you may be right! ``` diff --git a/src/arch/x86/object/vcpu.c b/src/arch/x86/object/vcpu.c index 8deacd8b1..a85142e30 100644 --- a/src/arch/x86/object/vcpu.c +++ b/src/arch/x86/object/vcpu.c @@ -1317,6 +1317,8 @@ exception_t handleVmexit(void) NODE_LOCK_SYS; + assert(thread_state_get_tsType(NODE_STATE(ksCurThread)->tcbState) == ThreadState_RunningVM); + if...
That didn't work. Both seemingly got stuck in a `x64_sys_send_recv` syscall.
It seems to break right away. Here is the scheduler dump: ``` Dumping all tcbs on Core 1! Name State IP Prio Core ---------------------------------------------------------------------------------------------------------------------- vm0:control running 0x40eb7e 100 1 ```...
Oh, and here is my `restore_user_context` adds. Was this what you were expecting? ``` diff --git a/include/smp/lock.h b/include/smp/lock.h index 9f9717e3d..d90044374 100644 --- a/include/smp/lock.h +++ b/include/smp/lock.h @@ -76,6 +76,7 @@ static...
Like this? ``` diff --git a/include/smp/lock.h b/include/smp/lock.h index 9f9717e3d..47711d93c 100644 --- a/include/smp/lock.h +++ b/include/smp/lock.h @@ -61,6 +61,7 @@ static inline void *sel4_atomic_exchange(void *ptr, bool_t irqPath, word_t cpu, int memorder) {...