From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755685AbcBBQRd (ORCPT ); Tue, 2 Feb 2016 11:17:33 -0500 Received: from mx2.parallels.com ([199.115.105.18]:54482 "EHLO mx2.parallels.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754837AbcBBQRc (ORCPT ); Tue, 2 Feb 2016 11:17:32 -0500 Subject: Re: CONFIG_UBSAN_ALIGNMENT breaks x86-64 kernel with lockdep enabled To: Andrew Morton References: <20160130003645.GA30158@kmu-tp-x230> <56AF756E.9080102@virtuozzo.com> <20160201142107.c280954da0d1b8bdbdf6e0ee@linux-foundation.org> CC: Mike Krinkin , , Peter Zijlstra , Ingo Molnar From: Andrey Ryabinin Message-ID: <56B0D6D7.50901@virtuozzo.com> Date: Tue, 2 Feb 2016 19:18:31 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <20160201142107.c280954da0d1b8bdbdf6e0ee@linux-foundation.org> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: US-EXCH.sw.swsoft.com (10.255.249.47) To US-EXCH.sw.swsoft.com (10.255.249.47) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/02/2016 01:21 AM, Andrew Morton wrote: > On Mon, 1 Feb 2016 18:10:38 +0300 Andrey Ryabinin wrote: > >> On 01/30/2016 03:36 AM, Mike Krinkin wrote: >>> Hi, >>> >>> option CONFIG_UBSAN_ALIGNMENT breaks x86-64 kernel with lockdep enabled, >>> i. e kernel with CONFIG_UBSAN_ALIGNMENT fails to load without even any >>> error message. >>> >>> The problem is that ubsan callbacks use spinlocks and might be called >>> before lockdep is initialized. Particularly this line in the >>> reserve_ebda_region function causes problem: >>> >>> lowmem = *(unsigned short *)__va(BIOS_LOWMEM_KILOBYTES); >>> >>> If i put lockdep_init() before reserve_ebda_region call in >>> x86_64_start_reservations kernel loads well. Since CONFIG_UBSAN_ALIGNMENT >>> isn't useful for x86 anyway it might be better to disable this option for >>> x86 arch? >>> >> >> >> Alignment checks could be useful even on x86, because there are unaligned accesses in generic code. >> I think we can disable alignment instrumentation for arch/x86 directory only. > > It looks pretty simple to make lockdep self-initialize on demand. I > don't think it'll affect performance much at all and it takes away all > these "has lockdep initialized yet" concerns? > Yes, this seems a better choice. It also should protect us from possible undefined behavior that someday may appear in early code. Your patch works for me.