Skip to content
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

Multi core guest support #107

Merged
merged 15 commits into from
Jan 15, 2021
Merged

Multi core guest support #107

merged 15 commits into from
Jan 15, 2021

Conversation

ALSchwalm
Copy link
Collaborator

Fixes #86 #87

This is a more correct version of the work in #106. One of the big issues we need to overcome is that KVM does not permit a nested hypervisor to put a guest into a 'waiting-for-sipi' state. This means we can't just launch the VCPU in that state. Instead, we wait to launch the guest AP's until every core associated with a given VM is ready and they receive a signal from the guest BSP to start (at which point they are launch in a running state at the provided address).

In general, adding multi-core guest support required a more complete implementation of guest local apic emulation, particularly with respect to guest IPI support. To make some of this more clear, this MR makes a more explicit delineation between a GSI and an actual interrupt vector.

This also drastically reduces the coarseness of the locking. There is no longer a per-vm RwLock, instead the various shared components of the VM expose thread-safe interfaces, which allows VMEXITS to no longer be effectively serialized.

@ALSchwalm ALSchwalm changed the title Multi core guest Multi core guest support Jan 2, 2021
@ALSchwalm ALSchwalm requested a review from dlrobertson January 2, 2021 17:48
@ALSchwalm
Copy link
Collaborator Author

@dlrobertson Have you had a chance to look at this any more? I know it sounded like there were issues with QEMU on machines with fewer than 6 cores. If so, we could probably just switch to 4 (2 guests with 2 cores or something).

@dlrobertson
Copy link
Contributor

It was a little slow to start, but we can bump it down if we need to in another PR

@dlrobertson dlrobertson merged commit 9ed8d0a into master Jan 15, 2021
@dlrobertson
Copy link
Contributor

Sorry for taking so long to get back to this! I'm really excited to use this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create guest AP cores
2 participants