From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754614AbaIKL6Q (ORCPT ); Thu, 11 Sep 2014 07:58:16 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:48709 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754226AbaIKL6O (ORCPT ); Thu, 11 Sep 2014 07:58:14 -0400 X-AuditID: cbfec7f4-b7f156d0000063c7-ec-54118e5429e4 Message-id: <54118CC9.8070405@samsung.com> Date: Thu, 11 Sep 2014 15:51:37 +0400 From: Andrey Ryabinin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 MIME-version: 1.0 To: Sasha Levin Cc: "H. Peter Anvin" , Dave Hansen , Andrey Ryabinin , LKML , Dmitry Vyukov , Konstantin Serebryany , Dmitry Chernenkov , Andrey Konovalov , Yuri Gribov , Konstantin Khlebnikov , Christoph Lameter , Joonsoo Kim , Andrew Morton , Andi Kleen , Vegard Nossum , "x86@kernel.org" , "linux-mm@kvack.org" , Thomas Gleixner , Ingo Molnar Subject: Re: [RFC/PATCH v2 02/10] x86_64: add KASan support References: <1404905415-9046-1-git-send-email-a.ryabinin@samsung.com> <1410359487-31938-1-git-send-email-a.ryabinin@samsung.com> <1410359487-31938-3-git-send-email-a.ryabinin@samsung.com> <5410724B.8000803@intel.com> <5410D486.4060200@intel.com> <9E98939B-E2C6-4530-A822-ED550FC3B9D2@zytor.com> <54112512.6040409@oracle.com> In-reply-to: <54112512.6040409@oracle.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA02RXUiTYRiGeb9/l7Nva9aLBwUDwRauJA9eZpQZxUcdVLCDkMCWDhWcrq1Z RoSxlDZFJPPvQ9D8g4mo2wxdpTgxXVqmqYWFvy1l0VbqUMvQ3BbU2f08XPdzHTwMLrYQUUxm 9k21LluVJaUExMj20ESsskSkPGb0Umirp5pENe2tFBp4v0GjD+vfAFr1zAO0vLBAo9KFQhpV WA8gS5GRQl1LXgxZTPMkmnhWQ6HZ1h0Sveurw9DQ004cNQx8wpFvqQxHdls5jqZanDTa7PhM Jkq4WscK4Bz8DM3V2QxcwwsPxtlaTBRnW31Ec2bvJMb5RkdpzlW1RXDuyUqMW/nykeC+905R 3JrtIOd64CcvRSQLTqSpszJz1bqjJ68JMpzF4dofotu19TydDzwRZhDGQDYeLrqK8VDeD8dm 2ykzEDBitglAZ9EcGRqMGBxsM1IBSsjK4EIFTwQywUZDh9+FBTLFyuE23xVkItkr8OfaOh3i RXCzbDbIS9gYOMw7gwacdZOw294YhPaxCdDa0/vXVo7DtxOe4NWwXdt8p3e3wew25HBuXBZY 4+whaG/14qWA5f9z8P8o/j+qDuAtIFJtSNXqr6dr4uR6lUZvyE6Xp+ZobCD0Xn83aBhU9AOW AdJw4Y3xvUoxqcrV52n6AWRwqUTYbRIpxcI0Vd4dtS4nRWfIUuv7AcaEReUD1dXEBIX9dGS6 uzFOiidVPWmWy5qjfw9bj5sfEudfRTuZesuer2nVrIXwGTeOKGIUXffOFs5hTfpf1tXl9rGB nZcpkpnn7uTYN1rv5RRYcOs1vN/x2BW/YZo+BQYv9iVVYm0j9dzmNA18JeFqPmao4O4FbVnm ov/cYc5xRkroM1RxMlynV/0BRrNaLrwCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/11/2014 08:29 AM, Sasha Levin wrote: > On 09/11/2014 12:26 AM, H. Peter Anvin wrote: >> Except you just broke PVop kernels. > > So is this why v2 refuses to boot on my KVM guest? (was digging > into that before I send a mail out). > Maybe this will help? From: Andrey Ryabinin Subject: [PATCH] x86_64: kasan: fix kernel boot with CONFIG_DEBUG_VIRTUAL=y Use __pa_nodebug instead of __pa before shadow initialized. __pa with CONFIG_DEBUG_VIRTUAL=y may result in __asan_load call before shadow area initialized. Signed-off-by: Andrey Ryabinin --- arch/x86/kernel/head64.c | 6 +++--- arch/x86/mm/kasan_init_64.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 9d97e3a..5669a8b 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -47,7 +47,7 @@ static void __init reset_early_page_tables(void) next_early_pgt = 0; - write_cr3(__pa(early_level4_pgt)); + write_cr3(__pa_nodebug(early_level4_pgt)); } /* Create a new PMD entry */ @@ -60,7 +60,7 @@ int __init early_make_pgtable(unsigned long address) pmdval_t pmd, *pmd_p; /* Invalid address or early pgt is done ? */ - if (physaddr >= MAXMEM || read_cr3() != __pa(early_level4_pgt)) + if (physaddr >= MAXMEM || read_cr3() != __pa_nodebug(early_level4_pgt)) return -1; again: @@ -160,7 +160,7 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) reset_early_page_tables(); kasan_map_zero_shadow(early_level4_pgt); - write_cr3(__pa(early_level4_pgt)); + write_cr3(__pa_nodebug(early_level4_pgt)); /* clear bss before set_intr_gate with early_idt_handler */ clear_bss(); diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c index b7c857e..6615bf1 100644 --- a/arch/x86/mm/kasan_init_64.c +++ b/arch/x86/mm/kasan_init_64.c @@ -35,7 +35,7 @@ void __init kasan_map_zero_shadow(pgd_t *pgd) unsigned long end = KASAN_SHADOW_END; for (i = pgd_index(start); start < end; i++) { - pgd[i] = __pgd(__pa(zero_pud) | __PAGE_KERNEL_RO); + pgd[i] = __pgd(__pa_nodebug(zero_pud) | __PAGE_KERNEL_RO); start += PGDIR_SIZE; } } -- 2.1.0