On Thu, 2006-07-27 at 14:35 -0700, Jeremy Fitzhardinge wrote: > Zachary Amsden wrote: > > Jeremy Fitzhardinge wrote: > >> Single entry pros: > >> > >> * simpler control flow? > >> > > > > Simpler to maintain the code. Maintaining multiple intertwined entry > > points is a mess. It used to be done for Visual workstation, and the > > code got merged back together. > > They're not particularly complex or intertwined. The startup routine's > tasks are very simple: > > 1. get the CPU into a state where we can run C code (ie, basically > sane segments & stack) > 2. copy the right stuff into paravirt_ops > 3. jump into start_kernel > > One could imagine step 1 might be complex, depending on how the > hypervisor starts the world, but it should be fairly self-contained. As you can see in my patch, I chose an even *simpler* route: (1) then call paravirts[%ebx]->init(paravirts[%ebx]), which does the rest. Since this deliberately only uses %eax and %ebx, I can't see anyone having issues with this. When combined with Zach's "share startup_32" patch, I think it's a no-brainer. As far as who controls the magic numbers, the answer is simple: whatever's in the mainline kernel. I'm happy to maintain them, and push numbers into mainline even if the implementation isn't. Managing a dense number space becomes problematic when there are more than a few dozen, true. I'll buy you a case of beer if we get there 8) (BTW, I just wanted to note that I'm delighted to be arguing over details, so if my arguments are over-enthusiastic at times, that's probably why. Now back to our "IS TOO" "IS NOT" debate...) Cheers! Rusty. -- Help! Save Australia from the worst of the DMCA: http://linux.org.au/law