... | ... | @@ -21,7 +21,7 @@ |
|
|
|
|
|
* The LCD parent thread or the first thread that gets created does most of the
|
|
|
work, from setting up the memory to initializing the device. The control
|
|
|
plane is taken care by LCD parent thread.
|
|
|
plane is taken care of by LCD parent thread.
|
|
|
|
|
|
* During the setup phase, each LCD child thread creates a communication channel to
|
|
|
communicate with KLCD.
|
... | ... | @@ -40,7 +40,7 @@ |
|
|
### Locks
|
|
|
|
|
|
* **Spinlocks**: All memory allocation routines need to have locks (kmalloc and
|
|
|
friends). The locks are already in-place but just elided by macros from
|
|
|
friends). The locks are already in place but just elided by macros from
|
|
|
`post_hook.h`
|
|
|
|
|
|
* **mutexes**: Mutexes should be converted to spin locks for LCDs as mutexes
|
... | ... | @@ -48,13 +48,13 @@ |
|
|
|
|
|
### EPTs
|
|
|
|
|
|
* We need two LCD threads to be entering VT-x domain. Ideally they should have
|
|
|
two different VMCS. Microkernel creates two VMCS structures and enter VT-x
|
|
|
* We need two LCD threads to be entering VT-x domain. Ideally, they should have
|
|
|
two different VMCS. Microkernel creates two VMCS structures and enters VT-x
|
|
|
using them on two separate CPUs
|
|
|
|
|
|
### Hypercalls
|
|
|
|
|
|
* When operating on the same LCD structure, all hypercalls should be protected
|
|
|
by a lock in the microkernel. Normally, control plane of the driver would be
|
|
|
by a lock in the microkernel. Normally, the control plane of the driver would be
|
|
|
taken care by the parent thread, we should protect the LCD struct in
|
|
|
microkernel as we don't trust the isolated code. |