From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id E86D96B000D for ; Fri, 20 Jul 2018 15:32:33 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id j4-v6so6557196pgq.16 for ; Fri, 20 Jul 2018 12:32:33 -0700 (PDT) Received: from mail.kernel.org (mail.kernel.org. [198.145.29.99]) by mx.google.com with ESMTPS id a36-v6si2332348pla.207.2018.07.20.12.32.32 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Jul 2018 12:32:32 -0700 (PDT) Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 421932086E for ; Fri, 20 Jul 2018 19:32:32 +0000 (UTC) Received: by mail-wm0-f42.google.com with SMTP id s14-v6so10875014wmc.1 for ; Fri, 20 Jul 2018 12:32:32 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20180720174846.GF18541@8bytes.org> References: <1532103744-31902-1-git-send-email-joro@8bytes.org> <1532103744-31902-2-git-send-email-joro@8bytes.org> <20180720174846.GF18541@8bytes.org> From: Andy Lutomirski Date: Fri, 20 Jul 2018 12:32:10 -0700 Message-ID: Subject: Re: [PATCH 1/3] perf/core: Make sure the ring-buffer is mapped in all page-tables Content-Type: text/plain; charset="UTF-8" Sender: owner-linux-mm@kvack.org List-ID: To: Joerg Roedel Cc: Andy Lutomirski , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , X86 ML , LKML , Linux-MM , Linus Torvalds , Dave Hansen , Josh Poimboeuf , Juergen Gross , Peter Zijlstra , Borislav Petkov , Jiri Kosina , Boris Ostrovsky , Brian Gerst , David Laight , Denys Vlasenko , Eduardo Valentin , Greg KH , Will Deacon , "Liguori, Anthony" , Daniel Gruss , Hugh Dickins , Kees Cook , Andrea Arcangeli , Waiman Long , Pavel Machek , "David H . Gutteridge" , Joerg Roedel , Arnaldo Carvalho de Melo , Alexander Shishkin , Jiri Olsa , Namhyung Kim On Fri, Jul 20, 2018 at 10:48 AM, Joerg Roedel wrote: > On Fri, Jul 20, 2018 at 10:06:54AM -0700, Andy Lutomirski wrote: >> > On Jul 20, 2018, at 6:22 AM, Joerg Roedel wrote: >> > >> > From: Joerg Roedel >> > >> > The ring-buffer is accessed in the NMI handler, so we better >> > avoid faulting on it. Sync the vmalloc range with all >> > page-tables in system to make sure everyone has it mapped. >> > >> > This fixes a WARN_ON_ONCE() that can be triggered with PTI >> > enabled on x86-32: >> > >> > WARNING: CPU: 4 PID: 0 at arch/x86/mm/fault.c:320 vmalloc_fault+0x220/0x230 >> > >> > This triggers because with PTI enabled on an PAE kernel the >> > PMDs are no longer shared between the page-tables, so the >> > vmalloc changes do not propagate automatically. >> >> It seems like it would be much more robust to fix the vmalloc_fault() >> code instead. > > The question is whether the NMI path is nesting-safe, then we can remove > the WARN_ON_ONCE(in_nmi()) in the vmalloc_fault path. It should be > nesting-safe on x86-32 because of the way the stack-switch happens > there. If its also nesting-safe on x86-64 the warning there can be > removed. > > Or did you think of something else to fix there? I'm just reading your changelog, and you said the PMDs are no longer shared between the page tables. So this presumably means that vmalloc_fault() no longer actually works correctly on PTI systems. I didn't read the code to figure out *why* it doesn't work, but throwing random vmalloc_sync_all() calls around is wrong. Or maybe the bug really just is the warning. The warning can probably go. > > > Thanks, > > Joerg >