Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751820AbbKIUrO (ORCPT ); Mon, 9 Nov 2015 15:47:14 -0500 Received: from mail-wm0-f49.google.com ([74.125.82.49]:36887 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750819AbbKIUrN (ORCPT ); Mon, 9 Nov 2015 15:47:13 -0500 Date: Mon, 9 Nov 2015 22:47:10 +0200 From: "Kirill A. Shutemov" To: Boris Ostrovsky Cc: Toshi Kani , hpa@zytor.com, tglx@linutronix.de, mingo@redhat.com, akpm@linux-foundation.org, bp@alien8.de, linux-mm@kvack.org, linux-kernel@vger.kernel.org, x86@kernel.org, jgross@suse.com, konrad.wilk@oracle.com, elliott@hpe.com Subject: Re: [PATCH v4 RESEND 4/11] x86/asm: Fix pud/pmd interfaces to handle large PAT bit Message-ID: <20151109204710.GB5443@node.shutemov.name> References: <1442514264-12475-1-git-send-email-toshi.kani@hpe.com> <1442514264-12475-5-git-send-email-toshi.kani@hpe.com> <5640E08F.5020206@oracle.com> <1447096601.21443.15.camel@hpe.com> <5640F673.8070400@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5640F673.8070400@oracle.com> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3742 Lines: 108 On Mon, Nov 09, 2015 at 02:39:31PM -0500, Boris Ostrovsky wrote: > On 11/09/2015 02:16 PM, Toshi Kani wrote: > >On Mon, 2015-11-09 at 13:06 -0500, Boris Ostrovsky wrote: > >>On 09/17/2015 02:24 PM, Toshi Kani wrote: > >>>Now that we have pud/pmd mask interfaces, which handle pfn & flags > >>>mask properly for the large PAT bit. > >>> > >>>Fix pud/pmd pfn & flags interfaces by replacing PTE_PFN_MASK and > >>>PTE_FLAGS_MASK with the pud/pmd mask interfaces. > >>> > >>>Suggested-by: Juergen Gross > >>>Signed-off-by: Toshi Kani > >>>Cc: Juergen Gross > >>>Cc: Konrad Wilk > >>>Cc: Thomas Gleixner > >>>Cc: H. Peter Anvin > >>>Cc: Ingo Molnar > >>>Cc: Borislav Petkov > >>>--- > >>> arch/x86/include/asm/pgtable.h | 14 ++++++++------ > >>> arch/x86/include/asm/pgtable_types.h | 4 ++-- > >>> 2 files changed, 10 insertions(+), 8 deletions(-) > >>> > >> > >>Looks like this commit is causing this splat for 32-bit kernels. I am > >>attaching my config file, just in case. > >Thanks for the report! I'd like to reproduce the issue since I am not sure how > >this change caused it... > > > >I tried to build a kernel with the attached config file, and got the following > >error. Not sure what I am missing. > > > >---- > >$ make -j24 ARCH=i386 > > : > > LD drivers/built-in.o > > LINK vmlinux > >./.config: line 44: $'\r': command not found > > I wonder whether my email client added ^Ms to the file that I send. It > shouldn't have. > > >Makefile:929: recipe for target 'vmlinux' failed > >make: *** [vmlinux] Error 127 > >---- > > > >Do you have steps to reproduce the issue? Or do you see it during boot-time? > > This always happens just after system has booted, it may still be going over > init scripts. I am booting with ramdisk, don't know whether it has anything > to do with this problem. > > FWIW, it looks like pmd_pfn_mask() inline is causing this. Reverting it > alone makes this crash go away. Could you check the patch below? diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h index dd5b0aa9dd2f..c1e797266ce9 100644 --- a/arch/x86/include/asm/pgtable_types.h +++ b/arch/x86/include/asm/pgtable_types.h @@ -279,17 +279,14 @@ static inline pmdval_t native_pmd_val(pmd_t pmd) static inline pudval_t pud_pfn_mask(pud_t pud) { if (native_pud_val(pud) & _PAGE_PSE) - return PUD_PAGE_MASK & PHYSICAL_PAGE_MASK; + return ~((1ULL << PUD_SHIFT) - 1) & PHYSICAL_PAGE_MASK; else return PTE_PFN_MASK; } static inline pudval_t pud_flags_mask(pud_t pud) { - if (native_pud_val(pud) & _PAGE_PSE) - return ~(PUD_PAGE_MASK & (pudval_t)PHYSICAL_PAGE_MASK); - else - return ~PTE_PFN_MASK; + return ~pud_pfn_mask(pud); } static inline pudval_t pud_flags(pud_t pud) @@ -300,17 +297,14 @@ static inline pudval_t pud_flags(pud_t pud) static inline pmdval_t pmd_pfn_mask(pmd_t pmd) { if (native_pmd_val(pmd) & _PAGE_PSE) - return PMD_PAGE_MASK & PHYSICAL_PAGE_MASK; + return ~((1ULL << PMD_SHIFT) - 1) & PHYSICAL_PAGE_MASK; else return PTE_PFN_MASK; } static inline pmdval_t pmd_flags_mask(pmd_t pmd) { - if (native_pmd_val(pmd) & _PAGE_PSE) - return ~(PMD_PAGE_MASK & (pmdval_t)PHYSICAL_PAGE_MASK); - else - return ~PTE_PFN_MASK; + return ~pmd_pfn_mask(pmd); } static inline pmdval_t pmd_flags(pmd_t pmd) -- Kirill A. Shutemov -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/