Am 07.09.2010 01:23, schrieb Kevin O'Connor:
Enable TSC_X86RDTSC_CALIBRATE_WITH_TIMER2 by default. Without this set, almost all boards use the inb(0x80) method. Unfortunately, that method takes over a second to calibrate, and it's results are not as reliable.
There is a chance that some boards may not work well with the timer2 method. This is likely rare, because both libpayload and seabios use the timer2 method unconditionally and there has not been reports of an issue. Should a board not support the more accurate timer2 mechanism, it will need to be updated to actively disable it.
How about this instead? It allows boards that require the workaround to simply "select" it.
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
On Tue, Sep 07, 2010 at 09:07:36AM +0200, Patrick Georgi wrote:
Am 07.09.2010 01:23, schrieb Kevin O'Connor:
Enable TSC_X86RDTSC_CALIBRATE_WITH_TIMER2 by default. Without this set, almost all boards use the inb(0x80) method. Unfortunately, that method takes over a second to calibrate, and it's results are not as reliable.
There is a chance that some boards may not work well with the timer2 method. This is likely rare, because both libpayload and seabios use the timer2 method unconditionally and there has not been reports of an issue. Should a board not support the more accurate timer2 mechanism, it will need to be updated to actively disable it.
How about this instead? It allows boards that require the workaround to simply "select" it.
Signed-off-by: Patrick Georgi patrick.georgi@coresystems.de
That looks like a better approach.
Acked-by: Kevin O'Connor kevin@koconnor.net
As an aside, I'm not sure of the value of TSC based delays if inb(0x80) is used to time it. If the code assumes inb(0x80) is 1 usecond, I'd think it could as easily use UDELAY_IO instead. I guess we'll need to see if any boards need the new TSC_CALIBRATE_WITH_IO setting.
-Kevin
Am 08.09.2010 02:23, schrieb Kevin O'Connor:
As an aside, I'm not sure of the value of TSC based delays if inb(0x80) is used to time it. If the code assumes inb(0x80) is 1 usecond, I'd think it could as easily use UDELAY_IO instead. I guess we'll need to see if any boards need the new TSC_CALIBRATE_WITH_IO setting.
As I understand it, TSC from IO is still more reliable than UDELAY_IO as it uses a _large_ sampling of IO accesses to average out timing.
But I'm not sure how much difference that really makes.
Patrick