From owner-freebsd-hackers@FreeBSD.ORG Mon Aug 15 21:23:34 2011 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B70731065672 for ; Mon, 15 Aug 2011 21:23:34 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 44A3C8FC14 for ; Mon, 15 Aug 2011 21:23:33 +0000 (UTC) Received: by fxe4 with SMTP id 4so4972775fxe.13 for ; Mon, 15 Aug 2011 14:23:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=LL1JayKJQOHbC7f/VmDjKF9H7bDvZDTLC7bOUPYAWmw=; b=qCgmEcwV+t7xL0c1YRMOdbTxa2A3k+X7+6mMPHQfn3INhFjpl4OjW2Po7Ulr3X1LaF n03VzyUpwFh24S+Pb7CkDzcVVdfy7MQcePIdvUJXJSCgHMwLn08EqadictUTYl4B2nEl Ct0M1TPoJds70NqogtbrK67C2XmSwAjCoGjZg= Received: by 10.223.143.18 with SMTP id s18mr5930090fau.134.1313443413017; Mon, 15 Aug 2011 14:23:33 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id w16sm2223761fah.44.2011.08.15.14.23.25 (version=SSLv3 cipher=OTHER); Mon, 15 Aug 2011 14:23:26 -0700 (PDT) Sender: Alexander Motin Message-ID: <4E498E3D.7050100@FreeBSD.org> Date: Tue, 16 Aug 2011 00:23:09 +0300 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110709 Thunderbird/5.0 MIME-Version: 1.0 To: Joe Schaefer References: <4E498326.2060308@FreeBSD.org> <4E4988F0.7060000@FreeBSD.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: hackers@freebsd.org Subject: Re: Clock stalls on Sabertooth 990FX X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Aug 2011 21:23:34 -0000 On 16.08.2011 00:13, Joe Schaefer wrote: > On Mon, Aug 15, 2011 at 5:00 PM, Alexander Motin wrote: >> On 15.08.2011 23:57, Joe Schaefer wrote: >>> >>> On Mon, Aug 15, 2011 at 4:35 PM, Alexander Motin wrote: >>>> >>>> On 15.08.2011 22:18, Joe Schaefer wrote: >>>>> >>>>> On Mon, Aug 15, 2011 at 9:31 AM, Joe Schaefer >>>>> wrote: >>>>>> >>>>>> On Mon, Aug 15, 2011 at 8:32 AM, Andriy Gapon >>>>>> wrote: >>>>>>> >>>>>>> on 13/08/2011 20:16 Joe Schaefer said the following: >>>>>>>> >>>>>>>> Brand new machine with a Phenom II X6 1100T and under chronic load >>>>>>>> the clock will stop running periodically until the machine eventually >>>>>>>> completely >>>>>>>> freezes. Note: during these stalls the kernel is still running, the >>>>>>>> machine is still >>>>>>>> mostly responsive, it's just that the clock is frozen in time. >>>>>>>> >>>>>>>> I've disabled Turbo mode in the bios and toyed with just about every >>>>>>>> other setting but nothing seems to resolve this problem. Based on >>>>>>>> the >>>>>>>> behavior >>>>>>>> of the machine (just making buildworld will eventually kill it, >>>>>>>> upping >>>>>>>> the -j flag >>>>>>>> just kills it faster), I'm guessing it has something to do with the >>>>>>>> Digi+ VRM features >>>>>>>> but again nothing I've tried modifying in the bios seems to help. >>>>>>>> >>>>>>>> I've tried both 8.2-RELEASE and FreeBSD 9 (head). Running head now >>>>>>>> with >>>>>>>> a dtrace enabled kernel. >>>>>>>> >>>>>>>> Suggestions? >>>>>>> >>>>>>> On head, start with checking what source is used for driving clocks: >>>>>>> sysctl kern.eventtimer >>>>>> >>>>>> % sysctl kern.eventtimer [master] >>>>>> kern.eventtimer.choice: HPET(450) HPET1(450) HPET2(450) LAPIC(400) >>>>>> i8254(100) RTC(0) >>>>>> kern.eventtimer.et.LAPIC.flags: 15 >>>>>> kern.eventtimer.et.LAPIC.frequency: 0 >>>>>> kern.eventtimer.et.LAPIC.quality: 400 >>>>>> kern.eventtimer.et.HPET.flags: 3 >>>>>> kern.eventtimer.et.HPET.frequency: 14318180 >>>>>> kern.eventtimer.et.HPET.quality: 450 >>>>>> kern.eventtimer.et.HPET1.flags: 3 >>>>>> kern.eventtimer.et.HPET1.frequency: 14318180 >>>>>> kern.eventtimer.et.HPET1.quality: 450 >>>>>> kern.eventtimer.et.HPET2.flags: 3 >>>>>> kern.eventtimer.et.HPET2.frequency: 14318180 >>>>>> kern.eventtimer.et.HPET2.quality: 450 >>>>>> kern.eventtimer.et.i8254.flags: 1 >>>>>> kern.eventtimer.et.i8254.frequency: 1193182 >>>>>> kern.eventtimer.et.i8254.quality: 100 >>>>>> kern.eventtimer.et.RTC.flags: 17 >>>>>> kern.eventtimer.et.RTC.frequency: 32768 >>>>>> kern.eventtimer.et.RTC.quality: 0 >>>>>> kern.eventtimer.periodic: 0 >>>>>> kern.eventtimer.timer: HPET >>>>> >>>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>>> Changing this to "i8254" seems to have resolved the stalls. >>>>> I'm running buildworld -j12 without issue. More than willing >>>>> to test out a patch or two against head if anyone's still >>>>> interested, otherwise I've thrown the change into loader.conf >>>>> and will move along quietly. >>>> >>>> 8.2-RELEASE you've mentioned doesn't have event timers subsystem and HPET >>>> timer driver. That makes me think it is strange at least. Can you try >>>> also >>>> LAPIC timer and do alike experiments with kern.timeocunter? >>> >>> My problems with 8.2-RELEASE may have been network based. I don't recall >>> precisely if the clock was stalling there, my guess is no based on >>> what you wrote. >>> >>> I'll test LAPIC next ... so far so good. Just so I'm clear, you'd >>> like me to tweak >>> kern.timecounter.hardware as well? (Currently it's HPET). >> >> Yes. Instead. Ticking clock depends on both timecounter and eventtimer. > > Haven't found a combination that hangs my machine other than with the > eventtimer at HPET. I mean trying eventtimer HPET and different timecounters. If changing timecounter won't help, try please this patch: --- acpi_hpet.c.prev 2010-12-25 11:28:45.000000000 +0200 +++ acpi_hpet.c 2011-05-11 14:30:59.000000000 +0300 @@ -190,7 +190,7 @@ restart: bus_write_4(sc->mem_res, HPET_TIMER_COMPARATOR(t->num), t->next); } - if (fdiv < 5000) { + if (1 || fdiv < 5000) { bus_read_4(sc->mem_res, HPET_TIMER_COMPARATOR(t->num)); now = bus_read_4(sc->mem_res, HPET_MAIN_COUNTER); -- Alexander Motin