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

Avoid duplicate IPC messages for interrupt delivery #116

Open
ALSchwalm opened this issue Jan 21, 2021 · 0 comments
Open

Avoid duplicate IPC messages for interrupt delivery #116

ALSchwalm opened this issue Jan 21, 2021 · 0 comments

Comments

@ALSchwalm
Copy link
Collaborator

Currently it is possible to send a VirtualMachineMsg for a GuestInterrupt for a vector that is already in the message queue of the guest. In many cases, this is incorrect. For example, if one guest core sends an IPI for an edge triggered interrupt to another core, this will cause a VMEXIT and the sending core will enqueue a message in the target cores rx buffer. If this happens again before the target core has serviced the first interrupt, we will enqueue another message. However, in real hardware this wouldn't be possible (I think) because the Delivery status register would not be cleared until the previous message was actually accepted by the target core.

I believe we should model this behavior by effectively preventing the guest virtual local apic from sending another interrupt when the previous one has not yet been serviced. However, it's also possible that my understanding is flawed.

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

No branches or pull requests

1 participant