Linux-mm Archive on lore.kernel.org
 help / color / Atom feed
From: Steven Price <steven.price@arm.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Qian Cai" <cai@lca.pw>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	Linux-MM <linux-mm@kvack.org>,
	"Mark Rutland" <Mark.Rutland@arm.com>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Ard Biesheuvel" <ard.biesheuvel@linaro.org>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Catalin Marinas" <Catalin.Marinas@arm.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Jérôme Glisse" <jglisse@redhat.com>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Borislav Petkov" <bp@alien8.de>,
	"Andy Lutomirski" <luto@kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"James Morse" <James.Morse@arm.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Will Deacon" <will@kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Liang, Kan" <kan.liang@linux.intel.com>,
	"Thomas Hellstrom" <thellstrom@vmware.com>
Subject: Re: [PATCH v15 00/23] Generic page walk and ptdump
Date: Wed, 4 Dec 2019 16:32:35 +0000
Message-ID: <20191204163235.GA1597@arm.com> (raw)
In-Reply-To: <9d5f1689-db82-a6da-d51d-08070aa4bad5@redhat.com>

On Wed, Dec 04, 2019 at 02:56:58PM +0000, David Hildenbrand wrote:
> On 04.12.19 15:54, Qian Cai wrote:
> > 
> > 
> >> On Dec 3, 2019, at 6:02 AM, David Hildenbrand <david@redhat.com> wrote:
> >>
> >> On 06.11.19 16:05, Steven Price wrote:
> >>> On 06/11/2019 13:31, Qian Cai wrote:
> >>>>
> >>>>
> >>>>> On Nov 4, 2019, at 2:35 PM, Qian Cai <cai@lca.pw> wrote:
> >>>>>
> >>>>> On Fri, 2019-11-01 at 14:09 +0000, Steven Price wrote:
> >>> [...]
> >>>>>> Changes since v14:
> >>>>>> https://lore.kernel.org/lkml/20191028135910.33253-1-steven.price@arm.com/
> >>>>>> * Switch walk_page_range() into two functions, the existing
> >>>>>>   walk_page_range() now still requires VMAs (and treats areas without a
> >>>>>>   VMA as a 'hole'). The new walk_page_range_novma() ignores VMAs and
> >>>>>>   will report the actual page table layout. This fixes the previous
> >>>>>>   breakage of /proc/<pid>/pagemap
> >>>>>> * New patch at the end of the series which reduces the 'level' numbers
> >>>>>>   by 1 to simplify the code slightly
> >>>>>> * Added tags
> >>>>>
> >>>>> Does this new version also take care of this boot crash seen with v14? Suppose
> >>>>> it is now breaking CONFIG_EFI_PGT_DUMP=y? The full config is,
> >>>>>
> >>>>> https://raw.githubusercontent.com/cailca/linux-mm/master/x86.config
> >>>>>
> >>>>
> >>>> V15 is indeed DOA here.
> >>>
> >>> Thanks for finding this, it looks like EFI causes issues here. The below fixes
> >>> this for me (booting in QEMU).
> >>>
> >>> Andrew: do you want me to send out the entire series again for this fix, or
> >>> can you squash this into mm-pagewalk-allow-walking-without-vma.patch?
> >>>
> >>> Thanks,
> >>>
> >>> Steve
> >>>
> >>> ---8<---
> >>> diff --git a/mm/pagewalk.c b/mm/pagewalk.c
> >>> index c7529dc4f82b..70dcaa23598f 100644
> >>> --- a/mm/pagewalk.c
> >>> +++ b/mm/pagewalk.c
> >>> @@ -90,7 +90,7 @@ static int walk_pmd_range(pud_t *pud, unsigned long addr, unsigned long end,
> >>>  			split_huge_pmd(walk->vma, pmd, addr);
> >>>  			if (pmd_trans_unstable(pmd))
> >>>  				goto again;
> >>> -		} else if (pmd_leaf(*pmd)) {
> >>> +		} else if (pmd_leaf(*pmd) || !pmd_present(*pmd)) {
> >>>  			continue;
> >>>  		}
> >>>
> >>> @@ -141,7 +141,7 @@ static int walk_pud_range(p4d_t *p4d, unsigned long addr, unsigned long end,
> >>>  			split_huge_pud(walk->vma, pud, addr);
> >>>  			if (pud_none(*pud))
> >>>  				goto again;
> >>> -		} else if (pud_leaf(*pud)) {
> >>> +		} else if (pud_leaf(*pud) || !pud_present(*pud)) {
> >>>  			continue;
> >>>  		}
> >>>
> >>>
> >>
> >> Even with this fix, booting for me under QEMU fails. See
> >>
> >> https://lore.kernel.org/linux-mm/b7ce62f2-9a48-6e48-6685-003431e521aa@redhat.com/
> >>
> > 
> > Yes, for some reasons, this starts to crash on almost all arches here, so it might be worth
> > for Andrew to revert those in the meantime while allowing Steven to rework.
> 
> I agree, this produces too much noise.

I've bisected this problem and it's a merge conflict with:

ace88f1018b8 ("mm: pagewalk: Take the pagetable lock in walk_pte_range()")

Reverting that commit "fixes" the problem. That commit adds a call to
pte_offset_map_lock(), however that isn't necessarily safe when
considering an "unusual" mapping in the kernel. Combined with my patch
set this leads to the BUG when walking the kernel's page tables.

At this stage I think it's best if Andrew drops my series and I'll try
to rework it on top -rc1 fixing up this conflict and the other x86
32-bit issue that has cropped up.

Steve


  reply index

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-01 14:09 Steven Price
2019-11-01 14:09 ` [PATCH v15 01/23] mm: Add generic p?d_leaf() macros Steven Price
2019-11-01 14:09 ` [PATCH v15 02/23] arc: mm: Add p?d_leaf() definitions Steven Price
2019-11-01 14:09 ` [PATCH v15 03/23] arm: " Steven Price
2019-11-01 14:09 ` [PATCH v15 04/23] arm64: " Steven Price
2019-11-01 14:09 ` [PATCH v15 05/23] mips: " Steven Price
2019-11-01 14:09 ` [PATCH v15 06/23] powerpc: " Steven Price
2019-11-01 14:09 ` [PATCH v15 07/23] riscv: " Steven Price
2019-11-01 14:09 ` [PATCH v15 08/23] s390: " Steven Price
2019-11-01 14:09 ` [PATCH v15 09/23] sparc: " Steven Price
2019-11-01 14:09 ` [PATCH v15 10/23] x86: " Steven Price
2019-11-01 14:09 ` [PATCH v15 11/23] mm: pagewalk: Add p4d_entry() and pgd_entry() Steven Price
2019-11-01 14:09 ` [PATCH v15 12/23] mm: pagewalk: Allow walking without vma Steven Price
2019-11-01 14:09 ` [PATCH v15 13/23] mm: pagewalk: Add test_p?d callbacks Steven Price
2019-11-01 14:09 ` [PATCH v15 14/23] mm: pagewalk: Add 'depth' parameter to pte_hole Steven Price
2019-11-01 14:09 ` [PATCH v15 15/23] x86: mm: Point to struct seq_file from struct pg_state Steven Price
2019-11-01 14:09 ` [PATCH v15 16/23] x86: mm+efi: Convert ptdump_walk_pgd_level() to take a mm_struct Steven Price
2019-11-01 14:09 ` [PATCH v15 17/23] x86: mm: Convert ptdump_walk_pgd_level_debugfs() to take an mm_struct Steven Price
2019-11-01 14:09 ` [PATCH v15 18/23] x86: mm: Convert ptdump_walk_pgd_level_core() " Steven Price
2019-11-01 14:09 ` [PATCH v15 19/23] mm: Add generic ptdump Steven Price
2019-11-01 14:09 ` [PATCH v15 20/23] x86: mm: Convert dump_pagetables to use walk_page_range Steven Price
2019-11-01 14:09 ` [PATCH v15 21/23] arm64: mm: Convert mm/dump.c to use walk_page_range() Steven Price
2019-11-01 14:09 ` [PATCH v15 22/23] arm64: mm: Display non-present entries in ptdump Steven Price
2019-11-01 14:09 ` [PATCH v15 23/23] mm: ptdump: Reduce level numbers by 1 in note_page() Steven Price
2019-11-04 19:35 ` [PATCH v15 00/23] Generic page walk and ptdump Qian Cai
2019-11-06 13:31   ` Qian Cai
2019-11-06 15:05     ` Steven Price
2019-12-03 11:02       ` David Hildenbrand
2019-12-04 14:54         ` Qian Cai
2019-12-04 14:56           ` David Hildenbrand
2019-12-04 16:32             ` Steven Price [this message]
2019-12-04 17:51               ` Thomas Hellstrom
2019-12-05 13:15               ` Qian Cai
2019-12-05 14:32                 ` Thomas Hellstrom
2019-12-05 14:38                   ` Qian Cai

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191204163235.GA1597@arm.com \
    --to=steven.price@arm.com \
    --cc=Catalin.Marinas@arm.com \
    --cc=James.Morse@arm.com \
    --cc=Mark.Rutland@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=ard.biesheuvel@linaro.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=cai@lca.pw \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jglisse@redhat.com \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=thellstrom@vmware.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-mm Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-mm/0 linux-mm/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-mm linux-mm/ https://lore.kernel.org/linux-mm \
		linux-mm@kvack.org
	public-inbox-index linux-mm

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kvack.linux-mm


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git