On Fri, 2006-07-28 at 03:11 -0700, Zachary Amsden wrote: > > Zach, I think we should (1) check for ring 0, then (2) check for paging. > > That way we don't read CR0 unless we're in ring0, and we keep close to > > our general guarantee of "no sensitive insns". > > > > I agree. If you are not running in ring zero, or have paging already > enabled, you are almost guaranteed to be running on a hypervisor (*). Well, you're either running on a hypervisor or using VT or whatever to hide it and so you can presumably handle the normal path... > And by the way, mov to and from control registers are _not_ sensitive > instructions as Jeremy said earlier. They trap, and any reasonable > hypervisor should handle those traps. My ideal is to be able to write a hypervisor without having to handle any traps, and by simply filling in paravirt_ops on the Linux side. Don't know if this is achievable, but we'll see... > (*) We need to check with the Visual Workstation maintainers. They used > to enter the kernel from the BIOS with paging already enabled. > > > (BTW, I committed your previous patch, please mod...). > > > > Ack. Err-- which patch? The #ifdef CONFIG_PARAVIRT in startup_32 which checked for ring != 0. It wasn't a patch, but a code snippet, sorry... Cheers, Rusty. -- Help! Save Australia from the worst of the DMCA: http://linux.org.au/law