-
Notifications
You must be signed in to change notification settings - Fork 77
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
Use VTL-aware direct hypercall to get/set registers when possible #125
base: main
Are you sure you want to change the base?
Conversation
62d8c75
to
7b2f4d2
Compare
Probably don't want to merge this until the VMM tests are back online, given that past iterations have definitely broken them |
341b249
to
fff8705
Compare
2024-10-25T17:36:30.4833152Z 2024-10-25T17:36:23.768666Z INFO openvmm_log: 18.837411200s INFO underhill_log: inner_level="6" inner_target="kmsg" "[U] task 'set_idle_task', thread 'tp' panicked at openhcl/hcl/src/ioctl.rs:1238:17:" fields={} extra={"timestamp": "16.373058000s"} |
fff8705
to
7a07050
Compare
a67516a
to
511e94d
Compare
511e94d
to
e76c720
Compare
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.
see comments
Thanks John! Will handle batching and adding TODO comments tomorrow. |
b363255
to
815206c
Compare
Modify ProcessorRunner::get_reg and ProcessorRunner::set_reg to use a direct hypercall when possible, instead of our dedicated get/set-register ioctl. Certain registers have special handling in the kernel ioctl handler. Those are left as-is. Get/set for other registers is now made with a direct hypercall. This has the benefit of being VTL-aware, so this change also adds a VTL parameter. This change also removes some proliferation of (g|s)et_vp_registers?(_inner)?, hopefully making it simpler and cleaner. The singular (g|s)et_vp_register is left as an ergonomic convenience. One unaddressed capability is making ioctls/hypercalls on a batch of registers. This is not strictly a regression, because MSHV_VP_MAX_REGISTERS was previously 1.
2d344f0
to
9c8c7ee
Compare
Modify ProcessorRunner::get_reg and ProcessorRunner::set_reg to use a direct hypercall when possible, instead of our dedicated get/set-register ioctl. Certain registers have special handling in the kernel ioctl handler. Those are left as-is. Get/set for other registers is now made with a direct hypercall.
This has the benefit of being VTL-aware, so this change also adds a VTL parameter.
This change also removes some proliferation of
(g|s)et_vp_registers?(_inner)?, hopefully making it simpler and cleaner. The singular (g|s)et_vp_register is left as an ergonomic convenience.
One unaddressed capability is making ioctls/hypercalls on a batch of registers. This is not strictly a regression, because MSHV_VP_MAX_REGISTERS was previously 1.