I think you could gain a tiny amount of efficiency if the OS (super) >>allowed the user to set up handle certain classes of exceptions, e.g. >>divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt >delivery. Particuarly with respect to potential impacts on other
processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from
user-mode.
External interrupts are indeed a lot harder unless you know a whole lot
about the thing that's interrupting.
According to Scott Lurndal <slp53@pacbell.net>:
I think you could gain a tiny amount of efficiency if the OS (super)
allowed the user to set up handle certain classes of exceptions, e.g.
divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt
delivery. Particuarly with respect to potential impacts on other
processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from
user-mode.
I think he was talking about exceptions, not interrupts.
I don't see much
danger in reflecting divide faults and supervisor calls directly back
to the virtual machine. I gather that IBM's virtualization microcode has done that for decades.
External interrupts are indeed a lot harder unless you know a whole lot
about the thing that's interrupting.
According to Scott Lurndal <slp53@pacbell.net>:
I think you could gain a tiny amount of efficiency if the OS (super) >>>allowed the user to set up handle certain classes of exceptions, e.g. >>>divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt >>delivery. Particuarly with respect to potential impacts on other
processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from
user-mode.
I think he was talking about exceptions, not interrupts. I don't see much >danger in reflecting divide faults and supervisor calls directly back
to the virtual machine. I gather that IBM's virtualization microcode has >done that for decades.
External interrupts are indeed a lot harder unless you know a whole lot
about the thing that's interrupting.
According to Scott Lurndal <slp53@pacbell.net>:
I think you could gain a tiny amount of efficiency if the OS (super) >>>allowed the user to set up handle certain classes of exceptions, e.g. >>>divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt >>delivery. Particuarly with respect to potential impacts on other
processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from
user-mode.
I think he was talking about exceptions, not interrupts. I don't see
much danger in reflecting divide faults and supervisor calls directly
back
to the virtual machine. I gather that IBM's virtualization microcode
has done that for decades.
External interrupts are indeed a lot harder unless you know a whole lot
about the thing that's interrupting.
On Thu, 17 Apr 2025 1:04:10 +0000, John Levine wrote:
According to Scott Lurndal <slp53@pacbell.net>:
I think you could gain a tiny amount of efficiency if the OS (super) >>>>allowed the user to set up handle certain classes of exceptions, e.g. >>>>divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt >>>delivery. Particuarly with respect to potential impacts on other >>>processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from >>>user-mode.
I think he was talking about exceptions, not interrupts. I don't see
much danger in reflecting divide faults and supervisor calls directly
back
to the virtual machine. I gather that IBM's virtualization microcode
has done that for decades.
I used (I think) the word interrupted as in "the thread currently in
control
has its instruction stream interrupted" which could stand in for
interrupts
or exceptions or faults; to see how the conversation develops.
It seems to me that to "take" and interrupt at user layer in SW-stack,
that the 3-upper layers have to be in the same state as when that User
thread is in control of a core. But, It also seems to me that to "take"
an interrupt into Super, the 2 higher layers of SW-stack also have to
be as they were when that Super thread has control. You don't want >HV[j].GuestOS[k] to take an interrupt when Hyper != HV[j] && Super != >GuestOS[k] -- because the various translation tables are not properly >available to perform the nested MMU VAS->UAS translation.
mitchalsup@aol.com (MitchAlsup1) writes:
On Thu, 17 Apr 2025 1:04:10 +0000, John Levine wrote:
According to Scott Lurndal <slp53@pacbell.net>:
I think you could gain a tiny amount of efficiency if the OS (super) >>>>>allowed the user to set up handle certain classes of exceptions, e.g. >>>>>divide faults) itself rather than having to go through the super.
Think carefully about the security implications of user-mode interrupt >>>>delivery. Particuarly with respect to potential impacts on other >>>>processes running on the system, and to overall system functionality.
Handling interrupts requires direct access to the hardware from >>>>user-mode.
I think he was talking about exceptions, not interrupts. I don't see
much danger in reflecting divide faults and supervisor calls directly
back
to the virtual machine. I gather that IBM's virtualization microcode
has done that for decades.
I used (I think) the word interrupted as in "the thread currently in >>control
has its instruction stream interrupted" which could stand in for
interrupts
or exceptions or faults; to see how the conversation develops.
In ARM64, an interrupt is just a maskable asynchronous exception.
It seems to me that to "take" and interrupt at user layer in SW-stack,
that the 3-upper layers have to be in the same state as when that User >>thread is in control of a core. But, It also seems to me that to "take"
an interrupt into Super, the 2 higher layers of SW-stack also have to
be as they were when that Super thread has control. You don't want >>HV[j].GuestOS[k] to take an interrupt when Hyper != HV[j] && Super != >>GuestOS[k] -- because the various translation tables are not properly >>available to perform the nested MMU VAS->UAS translation.
Note that while any one layer is executing _on a core/hardware thread_,
the other layers aren't running on that core,
by definition. However,
there is
no synchronization with other cores, so other cores in the same system
may be executing in any one or all of the privilege levels/security
layers
while a given core is taking an exception (synchronous or asynchronous).
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 11:04:35 |
Calls: | 10,389 |
Calls today: | 4 |
Files: | 14,061 |
Messages: | 6,416,857 |
Posted today: | 1 |