Re: [PATCH] x86: Construct 32 bit boot time page tables in nativeformat.

From: H. Peter Anvin
Date: Mon Jan 28 2008 - 14:56:21 EST


Pavel Machek wrote:
Hi!

/*
* Swap suspend & friends need this for resume because things like the intel-agp
* driver might have split up a kernel 4MB mapping.
*/
-char __nosavedata swsusp_pg_dir[PAGE_SIZE]
+char swsusp_pg_dir[PAGE_SIZE]
thanks, applied.

Sorry, this is subtle and I've overlooked it before.

(I thought you were only changing ifdef).

Now you memcpy() over pg_dir when that pgdir is in use during swsusp
resume. Granted, you memcpy() with same data that already are there,
but it may still do some funny effects.

Hmm, but same argument applies to lower levels of paging in 64-bit and
PAE cases, and we still do that memcpy-over-active-pagetables there...
:-(.


This really comes down to the concept that we should keep an identity-mapped page table set around and keep it maintained. Maintenance should be relatively cheap -- we don't care about the vmalloc area (but if it's easier to have it, it won't cause any harm), and we already have to have code to synchronize the PGDs on !PAE and the PMDs on Xen (although that was supposedly getting fixed). This is nothing very different than synchronizing yet another PGD[*] offset.

This obviously relates to (and needs to be on top of) the always-native-pagetables work.

[*] = Almost. There is one exception: for 3 GB kernel:1 GB userspace, we must ensure that only 1 GB of the kernel area is synced.

-hpa


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/