-
-
Notifications
You must be signed in to change notification settings - Fork 65
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
Implement the multiprocessor wakeup mechanism. #225
Conversation
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.
Thanks for working on this! I've not tried to use the new mailbox interface myself, but it'd be cool to have support in the crate.
I've added some review comments around the implementation.
acpi/src/madt.rs
Outdated
impl Madt { | ||
pub fn wakeup_aps( |
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.
It feels odd to me to implement high-level functionality like booting APs directly on the MADT
. This should probably be implemented in the platform
layer - this should extract the physical address of the mailbox during its existing MADT parsing, and then provide this method on PlatformInfo
I feel
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.
I wonder if it can be a separate function in the platform
layer? It doesn't seem to belong to PlatformInfo
.
8ac4fac
to
e023d9d
Compare
Hi @IsaacWoods , could you review this PR again when you have time? Thanks~ |
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.
Thanks - this is organisationally good to go, just one remaining point re volatile writes to the mailbox.
The issue has been fixed. Thanks for your comments. @IsaacWoods |
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.
Great, thanks very much!
ACPI specification r6.4 introduced the Multiprocessor Wakeup Structure to let the bootstrap processor wake up application processors with a mailbox.
This PR follows the design and definition of ACPI specification and has been verified in my project.