Re: [PATCH v2 07/13] powerpc: add support for folded p4d page tables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Le 26/02/2020 à 11:56, Mike Rapoport a écrit :
On Wed, Feb 26, 2020 at 10:46:13AM +0100, Christophe Leroy wrote:


Le 26/02/2020 à 10:13, Mike Rapoport a écrit :
On Tue, Feb 18, 2020 at 12:54:40PM +0200, Mike Rapoport wrote:
On Sun, Feb 16, 2020 at 11:41:07AM +0100, Christophe Leroy wrote:


Le 16/02/2020 à 09:18, Mike Rapoport a écrit :
From: Mike Rapoport <rppt@xxxxxxxxxxxxx>

Implement primitives necessary for the 4th level folding, add walks of p4d
level where appropriate and replace 5level-fixup.h with pgtable-nop4d.h.

I don't think it is worth adding all this additionnals walks of p4d, this
patch could be limited to changes like:

-		pud = pud_offset(pgd, gpa);
+		pud = pud_offset(p4d_offset(pgd, gpa), gpa);

The additionnal walks should be added through another patch the day powerpc
need them.

Ok, I'll update the patch to reduce walking the p4d.

Here's what I have with more direct acceses from pgd to pud.

I went quickly through. This looks promising.

Do we need the walk_p4d() in arch/powerpc/mm/ptdump/hashpagetable.c ?
Can't we just do

@@ -445,7 +459,7 @@ static void walk_pagetables(struct pg_state *st)
  		addr = KERN_VIRT_START + i * PGDIR_SIZE;
  		if (!pgd_none(*pgd))
  			/* pgd exists */
-			walk_pud(st, pgd, addr);
+			walk_pud(st, p4d_offset(pgd, addr), addr);

We can do

	addr = KERN_VIRT_START + i * PGDIR_SIZE;
	p4d = p4d_offset(pgd, addr);
	if (!p4d_none(*pgd))
		walk_pud()

But I don't think this is really essential. Again, we are trading off code
consistency vs line count. I don't think line count is that important.

Ok.

Christophe
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm




[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux