* [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
@ 2006-07-29 19:42 Andi Kleen
2006-08-01 13:04 ` Sergio Monteiro Basto
0 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2006-07-29 19:42 UTC (permalink / raw)
To: torvalds; +Cc: discuss, linux-kernel
On Intel systems generally the TSC stops in C3 or deeper,
so don't use it there. Follows similar logic on i386.
This should fix problems on Meroms.
Signed-off-by: Andi Kleen <ak@suse.de>
---
arch/x86_64/kernel/time.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
Index: linux-2.6.18-rc2-git7/arch/x86_64/kernel/time.c
===================================================================
--- linux-2.6.18-rc2-git7.orig/arch/x86_64/kernel/time.c
+++ linux-2.6.18-rc2-git7/arch/x86_64/kernel/time.c
@@ -28,6 +28,7 @@
#include <linux/acpi.h>
#ifdef CONFIG_ACPI
#include <acpi/achware.h> /* for PM timer frequency */
+#include <acpi/acpi_bus.h>
#endif
#include <asm/8253pit.h>
#include <asm/pgtable.h>
@@ -953,11 +954,18 @@ __cpuinit int unsynchronized_tsc(void)
#ifdef CONFIG_SMP
if (apic_is_clustered_box())
return 1;
- /* Intel systems are normally all synchronized. Exceptions
- are handled in the check above. */
- if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)
- return 0;
#endif
+ /* Most intel systems have synchronized TSCs except for
+ multi node systems */
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
+#ifdef CONFIG_ACPI
+ /* But TSC doesn't tick in C3 so don't use it there */
+ if (acpi_fadt.length > 0 && acpi_fadt.plvl3_lat < 100)
+ return 1;
+#endif
+ return 0;
+ }
+
/* Assume multi socket systems are not synchronized */
return num_present_cpus() > 1;
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
2006-07-29 19:42 [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC Andi Kleen
@ 2006-08-01 13:04 ` Sergio Monteiro Basto
2006-08-01 17:10 ` [discuss] " Andi Kleen
0 siblings, 1 reply; 7+ messages in thread
From: Sergio Monteiro Basto @ 2006-08-01 13:04 UTC (permalink / raw)
To: Andi Kleen; +Cc: torvalds, discuss, linux-kernel
On Sat, 2006-07-29 at 21:42 +0200, Andi Kleen wrote:
> On Intel systems generally the TSC stops in C3 or deeper,
> so don't use it there. Follows similar logic on i386.
>
> This should fix problems on Meroms.
>
> Signed-off-by: Andi Kleen <ak@suse.de>
>
...
> + /* Most intel systems have synchronized TSCs except for
> + multi node systems */
> + if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
> +#ifdef CONFIG_ACPI
> + /* But TSC doesn't tick in C3 so don't use it there */
> + if (acpi_fadt.length > 0 && acpi_fadt.plvl3_lat < 100)
> + return 1;
> +#endif
> + return 0;
> + }
> +
> /* Assume multi socket systems are not synchronized */
> return num_present_cpus() > 1;
> }
Hi,
I had some faith in this patch , but this just enable boot parameter
notsc (which I already use). And "just" disable tsc don't solve all the
problems.
After "Using ACPI (MADT) for SMP configuration information"
my acpi_fadt.length is great than 0
acpi_fadt.plvl3_lat is 1001
On BIOS 1.40 update description of ASRock, claims this VIA chipset have
C1 stepping support.
this is a Pentium Dual Core on a 775Dual-880Pro
http://www.asrock.com/product/775Dual-880Pro.htm
http://bugme.osdl.org/show_bug.cgi?id=6419
Thanks,
Sérgio M. B.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [discuss] Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
2006-08-01 13:04 ` Sergio Monteiro Basto
@ 2006-08-01 17:10 ` Andi Kleen
2006-08-01 21:40 ` Sergio Monteiro Basto
0 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2006-08-01 17:10 UTC (permalink / raw)
To: discuss; +Cc: Sergio Monteiro Basto, torvalds, linux-kernel
> I had some faith in this patch , but this just enable boot parameter
> notsc (which I already use). And "just" disable tsc don't solve all the
> problems.
What problems do you have?
>
>
> After "Using ACPI (MADT) for SMP configuration information"
> my acpi_fadt.length is great than 0
> acpi_fadt.plvl3_lat is 1001
You don't have C3 support so the patch doesn't apply to you.
> On BIOS 1.40 update description of ASRock, claims this VIA chipset have
> C1 stepping support.
C1 stepping is a processor revision; it has nothing to do with
ACPI C* power states.
-Andi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [discuss] Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
2006-08-01 17:10 ` [discuss] " Andi Kleen
@ 2006-08-01 21:40 ` Sergio Monteiro Basto
2006-08-01 21:56 ` Andi Kleen
0 siblings, 1 reply; 7+ messages in thread
From: Sergio Monteiro Basto @ 2006-08-01 21:40 UTC (permalink / raw)
To: Andi Kleen; +Cc: discuss, torvalds, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 704 bytes --]
On Tue, 2006-08-01 at 19:10 +0200, Andi Kleen wrote:
> > I had some faith in this patch , but this just enable boot parameter
> > notsc (which I already use). And "just" disable tsc don't solve all
> the
> > problems.
>
> What problems do you have?
>
Hi Andi ,
if I boot without notsc , I have many lost timer tickets.
if I boot with notsc , I have,at begging, a few lost timer ticket, and
after some stress usb modem I got
uhci_hcd 0000:00:10.1: host controller process error, something bad
happened!
uhci_hcd 0000:00:10.1: host controller halted, very bad!
uhci_hcd 0000:00:10.1: HC died; cleaning up
usb 3-2: USB disconnect, address 2
Thanks for your reply
--
Sérgio M. B.
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2166 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [discuss] Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
2006-08-01 21:40 ` Sergio Monteiro Basto
@ 2006-08-01 21:56 ` Andi Kleen
[not found] ` <1154470000.5123.1.camel@localhost.portugal>
0 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2006-08-01 21:56 UTC (permalink / raw)
To: discuss, sergio; +Cc: torvalds, linux-kernel
On Tuesday 01 August 2006 23:40, Sergio Monteiro Basto wrote:
> On Tue, 2006-08-01 at 19:10 +0200, Andi Kleen wrote:
> > > I had some faith in this patch , but this just enable boot parameter
> > > notsc (which I already use). And "just" disable tsc don't solve all
> > the
> > > problems.
> >
> > What problems do you have?
> >
> Hi Andi ,
> if I boot without notsc , I have many lost timer tickets.
Lost timer ticks print a rip. Do you have some samples?
Anyways, for a single socket Intel dual core TSCs should be definitely
synced so I don't know what could be wrong on your system.
Please post full boot.msg at least.
-Andi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [discuss] Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
[not found] ` <1154470000.5123.1.camel@localhost.portugal>
@ 2006-08-01 22:21 ` Andi Kleen
2006-08-01 22:52 ` Sergio Monteiro Basto
0 siblings, 1 reply; 7+ messages in thread
From: Andi Kleen @ 2006-08-01 22:21 UTC (permalink / raw)
To: discuss, sergio; +Cc: torvalds, linux-kernel, Siddha, Suresh B
On Wednesday 02 August 2006 00:06, Sergio Monteiro Basto wrote:
> On Tue, 2006-08-01 at 23:56 +0200, Andi Kleen wrote:
> > Lost timer ticks print a rip. Do you have some samples?
Can you send dmesg with the following patch applied too?
cc'ing Suresh because he might have an explanation too then.
-Andi
Index: linux-2.6.18-rc3-work/arch/x86_64/kernel/smpboot.c
===================================================================
--- linux-2.6.18-rc3-work.orig/arch/x86_64/kernel/smpboot.c
+++ linux-2.6.18-rc3-work/arch/x86_64/kernel/smpboot.c
@@ -345,7 +345,7 @@ static void __cpuinit tsc_sync_wait(void
* mess up a possible perfect synchronization with a
* not-quite-perfect algorithm.
*/
- if (notscsync || !cpu_has_tsc || !unsynchronized_tsc())
+ if (0 && (notscsync || !cpu_has_tsc || !unsynchronized_tsc()))
return;
sync_tsc(0);
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [discuss] Re: [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC
2006-08-01 22:21 ` Andi Kleen
@ 2006-08-01 22:52 ` Sergio Monteiro Basto
0 siblings, 0 replies; 7+ messages in thread
From: Sergio Monteiro Basto @ 2006-08-01 22:52 UTC (permalink / raw)
To: Andi Kleen; +Cc: discuss, torvalds, linux-kernel, Siddha, Suresh B
[-- Attachment #1.1: Type: text/plain, Size: 2043 bytes --]
ok , here it is dmesg version 16
I just add this printtk
--- linux-2.6.17.x86_64/arch/x86_64/kernel/time.c.orig 2006-08-01
01:34:29.000000000 +0100
+++ linux-2.6.17.x86_64/arch/x86_64/kernel/time.c 2006-08-01 23:31:29.000000000 +0100
@@ -959,6 +959,9 @@ __cpuinit int unsynchronized_tsc(void)
multi node systems */
if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
#ifdef CONFIG_ACPI
+ printk(KERN_INFO "time.c:SB acpi_fadt.length=%d, acpi_fadt.plvl3_lat=%d unsynchronized_tsc=%d\n",
+ acpi_fadt.length, acpi_fadt.plvl3_lat,(acpi_fadt.length > 0 && acpi_fadt.plvl3_lat <
+ 100) );
/* But TSC doesn't tick in C3 so don't use it there */
if (acpi_fadt.length > 0 && acpi_fadt.plvl3_lat < 100)
return 1;
but this time the function unsynchronized_tsc was just call one time.
time.c:SB acpi_fadt.length=0, acpi_fadt.plvl3_lat=0 unsynchronized_tsc=0
The patch works like I have use boot parameter notsc, which is better.
Now I don't need any parameter to boot.
Big Thanks
On Wed, 2006-08-02 at 00:21 +0200, Andi Kleen wrote:
> On Wednesday 02 August 2006 00:06, Sergio Monteiro Basto wrote:
> > On Tue, 2006-08-01 at 23:56 +0200, Andi Kleen wrote:
> > > Lost timer ticks print a rip. Do you have some samples?
>
> Can you send dmesg with the following patch applied too?
>
> cc'ing Suresh because he might have an explanation too then.
>
> -Andi
>
> Index: linux-2.6.18-rc3-work/arch/x86_64/kernel/smpboot.c
> ===================================================================
> --- linux-2.6.18-rc3-work.orig/arch/x86_64/kernel/smpboot.c
> +++ linux-2.6.18-rc3-work/arch/x86_64/kernel/smpboot.c
> @@ -345,7 +345,7 @@ static void __cpuinit tsc_sync_wait(void
> * mess up a possible perfect synchronization with a
> * not-quite-perfect algorithm.
> */
> - if (notscsync || !cpu_has_tsc || !unsynchronized_tsc())
> + if (0 && (notscsync || !cpu_has_tsc || !unsynchronized_tsc()))
> return;
> sync_tsc(0);
> }
--
Sérgio M. B.
[-- Attachment #1.2: dmesg16.bz2 --]
[-- Type: application/x-bzip, Size: 7845 bytes --]
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2166 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2006-08-01 22:52 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-29 19:42 [PATCH for 2.6.18] [2/8] x86_64: On Intel systems when CPU has C3 don't use TSC Andi Kleen
2006-08-01 13:04 ` Sergio Monteiro Basto
2006-08-01 17:10 ` [discuss] " Andi Kleen
2006-08-01 21:40 ` Sergio Monteiro Basto
2006-08-01 21:56 ` Andi Kleen
[not found] ` <1154470000.5123.1.camel@localhost.portugal>
2006-08-01 22:21 ` Andi Kleen
2006-08-01 22:52 ` Sergio Monteiro Basto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox