Re: [PATCH] x86 (64): make calibrate_APIC_clock() SMI-safe (take3)

From: Martin Wilck
Date: Fri Jul 25 2008 - 10:01:19 EST


Cyrill Gorcunov wrote:

Martin, if I understood you right - this means your patch is not
needed?

The patch would still be needed. Just the reported failure of my simplified patch on the old kernel would not have occurred in the current kernel. IOW, the patch is fine for the current kernel, but not for the old one.

Actually on 64bit mode APIC_DIVISOR is a bit hidden in
__setup_APIC_LVTT - you may see it as APIC_TDR_DIV_16 while setting
up divisor register. I was proposing patch for that but it leaded
to potetntial overflow (thanks Ingo for catching) so we leave it as
is. Maybe I miss something?

The problem was not that the divisor 16 was used for the counter speed (APIC_TDR_DIV_16), but that the old code set the counter start value to (250000000/16) rather than just 250000000. That means the counter will underflow earlier.

I am attaching a "take 3" patch which minimizes the risk of an underflow by using the maximum possible initial value for the APIC timer.

Martin

--
Martin Wilck
PRIMERGY System Software Engineer
FSC IP ESP DEV 6

Fujitsu Siemens Computers GmbH
Heinz-Nixdorf-Ring 1
33106 Paderborn
Germany

Tel: ++49 5251 8 15113
Fax: ++49 5251 8 20209
Email: mailto:martin.wilck@xxxxxxxxxxxxxxxxxxx
Internet: http://www.fujitsu-siemens.com
Company Details: http://www.fujitsu-siemens.com/imprint.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/