On Fri, 2006-07-28 at 13:45 -0700, Zachary Amsden wrote: > Jeremy Fitzhardinge wrote > > > >> Why do you insist that Xen have a separate kernel entry point? > > > > Because if you're going to distinguish hypervisors by putting a magic > > value in a register, you get the best bang for the buck if the > > register is EIP. > > I think the larger issue that Eric pointed out is that there is only a > single entry field in the ELF header. I think this has been useful discussion, but I think we're starting to go in circles. (1) We can make startup_32 work for every known and future reasonable hypervisor as well as native, by testing if ring isn't 0 and paging is enabled and jumping to the paravirt entry path. (2) Xen 3.0's boot process uses %esi and sets all other regs to 0. We should not break this. If we use %ebx to indicate what paravirt_ops to use, and assign Xen 0, this works fine. We only clobber %ebx, %eax and %esp before calling paravirts[%ebx]->init(). (3) If a hypervisor wants another entry point, this scheme doesn't prohibit it, of course. If every hypervisor does this, we've wasted some effort, but not for lack of trying. My question for Eric is: will this fit with kexec (which I know v. little about)? Thanks, Rusty. -- Help! Save Australia from the worst of the DMCA: http://linux.org.au/law