From owner-svn-src-head@freebsd.org Sun Mar 11 19:58:12 2018 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5E9FF4A868; Sun, 11 Mar 2018 19:58:12 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 13EF77BF80; Sun, 11 Mar 2018 19:58:11 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w2BJw0Rl066292 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sun, 11 Mar 2018 21:58:04 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w2BJw0Rl066292 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w2BJw00A066291; Sun, 11 Mar 2018 21:58:00 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 11 Mar 2018 21:58:00 +0200 From: Konstantin Belousov To: Ian Lepore Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r330780 - in head/sys: amd64/include isa x86/isa Message-ID: <20180311195800.GC76926@kib.kiev.ua> References: <201803111922.w2BJMwr8043084@repo.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201803111922.w2BJMwr8043084@repo.freebsd.org> User-Agent: Mutt/1.9.4 (2018-02-28) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Mar 2018 19:58:12 -0000 On Sun, Mar 11, 2018 at 07:22:58PM +0000, Ian Lepore wrote: > Author: ian > Date: Sun Mar 11 19:22:58 2018 > New Revision: 330780 > URL: https://svnweb.freebsd.org/changeset/base/330780 > > Log: > Eliminate atrtc_time_lock, and use atrtc_lock for efirtc locking. > > Modified: > head/sys/amd64/include/efi.h > head/sys/isa/rtc.h > head/sys/x86/isa/atrtc.c > > Modified: head/sys/amd64/include/efi.h > ============================================================================== > --- head/sys/amd64/include/efi.h Sun Mar 11 19:14:01 2018 (r330779) > +++ head/sys/amd64/include/efi.h Sun Mar 11 19:22:58 2018 (r330780) > @@ -48,9 +48,9 @@ > #ifdef _KERNEL > #include > > -#define EFI_TIME_LOCK() mtx_lock(&atrtc_time_lock); > -#define EFI_TIME_UNLOCK() mtx_unlock(&atrtc_time_lock); > -#define EFI_TIME_OWNED() mtx_assert(&atrtc_time_lock, MA_OWNED); > +#define EFI_TIME_LOCK() mtx_lock_spin(&atrtc_lock); > +#define EFI_TIME_UNLOCK() mtx_unlock_spin(&atrtc_lock); > +#define EFI_TIME_OWNED() mtx_assert(&atrtc_lock, MA_OWNED); I do not understand how this can work. You changed EFI_TIME_LOCK() to spinlock. As result, the spinlock is taken before efi_enter() is called. efi_enter() locks the pmap and efi_lock, both of which are sleepable mutexes. Also, arch efirt code is allowed to take arch-specific sleepable mutexes and perhaps some spinlocks (but currently does not). The first context switch when either of the listed sleepable mutexes are contested and the thread is taken off CPU would panic. I suspect that some invariants check might fire earlier.