svn commit: r209371 - in head/sys: amd64/amd64 amd64/include conf dev/acpica i386/i386 i386/include isa kern pc98/cbus sys x86/isa x86/x86

Alexander Motin mav at FreeBSD.org
Mon Jun 21 20:46:17 UTC 2010


Kostik Belousov wrote:
> On Mon, Jun 21, 2010 at 11:09:05PM +0300, Alexander Motin wrote:
>> Alexander Motin wrote:
>>> Kostik Belousov wrote:
>>>> On Sun, Jun 20, 2010 at 09:33:29PM +0000, Alexander Motin wrote:
>>>>> Author: mav
>>>>> Date: Sun Jun 20 21:33:29 2010
>>>>> New Revision: 209371
>>>>> URL: http://svn.freebsd.org/changeset/base/209371
>>>>>
>>>>> Log:
>>>>>   Implement new event timers infrastructure. It provides unified APIs for
>>>>>   writing event timer drivers, for choosing best possible drivers by machine
>>>>>   independent code and for operating them to supply kernel with hardclock(),
>>>>>   statclock() and profclock() events in unified fashion on various hardware.
>>>> This broke QEMU for me. I cannot boot FreeBSD guest under QEMU anymore.
>>>> QEMU (not FreeBSD kernel) panics with
>>>> qemu: level-triggered hpet not supported
>>>> message.
>>> According to specification, it is not optional. No more cookies!
> Is there a way to disable hpet at all ? It would be fine with me.
> Does hint below supposed to do this ?

Yes. Hint below disables HPET event timers, leaving only time counter
part, almost same as it was before.

>>>> Setting kern.eventtimer.timer1 to LAPIC or i8254, and timer2 to NONE
>>>> does not help.
>>> Try `hint.apic.0.clock=0` and send me verbose dmesg, I'll try to make
>>> workaround if possible.
>> Sorry, 'hint.hpet.0.clock=0'.
>>
> Setting the hint results in
> panic: lock (time lock) sleep mutex does not match earlier (spin mutex) lock,
> with the backtrace
> enroll()
> witness_init()
> lock_init()
> mtx_init()
> initclocks()
> mi_startup()
> (transribed by hand).

I am surprised that none of my systems fired it. Try this:

--- subr_witness.c.prev 2010-06-17 14:07:36.000000000 +0300
+++ subr_witness.c      2010-06-21 23:43:14.000000000 +0300
@@ -495,6 +495,7 @@ static struct witness_order_list_entry o
 #ifdef HWPMC_HOOKS
        { "pmc-sleep", &lock_class_mtx_sleep },
 #endif
+       { "time lock", &lock_class_mtx_sleep },
        { NULL, NULL },
        /*
         * Sockets
@@ -654,7 +655,6 @@ static struct witness_order_list_entry o
        { "callout", &lock_class_mtx_spin },
        { "entropy harvest mutex", &lock_class_mtx_spin },
        { "syscons video lock", &lock_class_mtx_spin },
-       { "time lock", &lock_class_mtx_spin },
 #ifdef SMP
        { "smp rendezvous", &lock_class_mtx_spin },
 #endif

-- 
Alexander Motin


More information about the svn-src-head mailing list