[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] early_cpu_init() and identify_cpu()
>>> Keir Fraser <keir@xxxxxxxxxxxxx> 13.07.07 18:26 >>>
>On 13/7/07 17:16, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:
>> Is there any reason (other than having things inherited this way from Linux)
>> we cannot call identify_cpu() for the boot CPU at the end of early_cpu_init()
>> rather than explicitly from __start_xen()? And if not, it would seem
>> to me to at once move the two CR4 twiddling pieces out of __start_xen, too.
>> (I'm not asking because I want to beautify the code, but because I want the
>> identify to happen earlier, namely I want to fully set up the VESA console as
>> early as possible, but there I'd like to be able to set MTRRs, which in turn
>> depends on identify_cpu() having executed.
>Isn't it a fairly safe bet that the BIOS will have done this for us and, if
>not, that the penalty is a performance loss (probably using WB or UC instead
>of WC) rather than a correctness issue? And hence, if we bother to update
>the MTRRs at all, then it can at least be left until later in the boot?
I've never seen a BIOS set the frame buffer to WC (or anything other than
uncachable), presumably not the least because the address space may get
laid out anew by the OS. And the performance loss in our case is quite
significant (though I assume WC would at best help a little, I'm considering
other approaches, too): Scrolling a 1280x1024x16 screen takes, on the test
system I'm primarily trying this out on, on the order of a second. This is
because we will want to not disturb what dom0 may have written to the
screen, and hence we can't simply redraw. And I'm not certain I want to
special case boot time here (although I may have no other option - delay
in that order can easily lead to other failures [like CPUs not properly coming
Of course, I could make the two stage vesafb initialization as it is right now
a three stage one, doing just the MTRR request in the last. But I wanted to
avoid making the code more spaghetti like than necessary just because of
this little feature...
Xen-devel mailing list