Messages in this thread | | | Date | Sat, 15 Dec 2007 12:17:39 -0500 | From | "David P. Reed" <> | Subject | Re: [PATCH] x86_64: fix problems due to use of "outb" to port 80 on some AMD64x2 laptops, etc. |
| |
H. Peter Anvin wrote: > David P. Reed wrote: >> Just a thought for a way to fix the "very early" timing needed to set >> up udelay to work in a way that works on all machines. Perhaps we >> haven't exploited the BIOS enough: The PC BIOS since the PC AT >> (286) has always had a standard "countdown timer" way to delay for n >> microseconds, which as far as I know still works. This can be used >> to measure the speed of a delay loop, without using ANY in/out >> instructions directly (the ones in the BIOS are presumably correctly >> delayed...). > > If we enter from the 32-bit entrypoint, we already don't have access > to the BIOS, though. > My understanding is that the linux starts in real mode, and uses the BIOS for such things as reading the very first image. arch/x86/boot/main.c seems to use BIOS calls, and one can do what I wrote in C or asm. Good place to measure the appropriate delay timing, and pass it on forward. That's what I was suggesting, which is why I copied the ASM routine from my old code listing as I did.
| |