All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0 of 13] Basic infrastructure patches for a paravirtualized kernel
@ 2006-08-01 20:00 Jeremy Fitzhardinge
  2006-08-01 20:00 ` [PATCH 1 of 13] Add apply_to_page_range() which applies a function to a pte range Jeremy Fitzhardinge
                   ` (13 more replies)
  0 siblings, 14 replies; 49+ messages in thread
From: Jeremy Fitzhardinge @ 2006-08-01 20:00 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Virtualization, Zachary Amsden, Xen-devel, Jeremy Fitzhardinge,
	Hollis Blanchard, Rusty Russell, Linux Kernel, Chris Wright,
	Ian Pratt, Eric W. Biederman, Gerd Hoffmann, Christian Limpach,
	Christoph Lameter

[-- Attachment #1: Type: text/plain, Size: 2363 bytes --]

[ REPOST: Apologies to anyone who has seen this before.  It
  didn't make it onto any of the lists it should have. -J ]

Hi Andrew,

This series of patches lays the basic ground work for the
paravirtualized kernel patches coming later on.  I think this lot is
ready for the rough-and-tumble world of the -mm tree.

For the most part, these patches do nothing or very little.  The
patches should be self explanatory, but the overview is:

Helper functions for later use:
	1/13: Add apply_to_page_range()...
	3/13: Implement always-locked bit ops...
	13/13: Put .note.* sections into a PT_NOTE segment in vmlinux

Cleanups:
	2/13: Remove locally-defined ldt structure in favour of standard type
	4/13: Allow a kernel to not be in ring 0
	6/13: Roll all the cpuid asm into one __cpuid call
	9/13: Remove the read hazard from the COW path in copy_one_pte
	10/13: Change pte_clear_full to a more appropriately named...

Hooks:
	5/13: Replace sensitive instructions with macros
	7/13: Make __FIXADDR_TOP variable to allow it to make space...
	8/13: Add a bootparameter to reserve high linear address...
	11/13: Add lazy MMU mode hooks for batching PTE updates
	12/13: Pass the mm struct into the pgd_free code so the mm...


Probably the most subtle changes here are 11/13 and 9/13, since they
add a new constraint to page-table manipulation code.  In a
paravirtualized system, pte updates may be batched and performed
lazily, so their effects will not be immediately visible on the pte
itself.  To avoid this, code which modifies ptes in a loop needs to
avoid looking at the modified ptes.  9/13 fixes the one place where it
happens.

11/13 depends on removing these read hazards for correctness when running
under a direct page table hypervisor which batches updates.  However, it
is generally agreed that using an _explicit_, rather than an _implicit_
notion of batching makes it easy to find and reason about the paths which
are doing batching.  This allows easy inspection to remove read hazards
from the code.

13/13 "Put .note.* sections into a PT_NOTE segment in vmlinux" is
mostly here to shake out problems early.  It slightly changes the way
the vmlinux image is linked together, and it uses the somewhat
esoteric PHDRS command in vmlinux.lds.  I want to make sure that this
doesn't provoke any problems in the various binutils people are using.

Thanks,
	J

[-- Attachment #2: Type: text/plain, Size: 1464 bytes --]

30 files changed, 609 insertions(+), 92 deletions(-)
arch/i386/Kconfig                 |    1 
arch/i386/kernel/entry.S          |   43 +++++-----
arch/i386/kernel/process.c        |    2 
arch/i386/kernel/reboot.c         |   12 --
arch/i386/kernel/setup.c          |   13 +++
arch/i386/kernel/vmlinux.lds.S    |   12 ++
arch/i386/mm/extable.c            |    2 
arch/i386/mm/fault.c              |   11 --
arch/i386/mm/init.c               |   42 +++++++++
arch/i386/mm/pgtable.c            |   21 ++++
include/asm-generic/pgtable.h     |   24 +++++
include/asm-generic/vmlinux.lds.h |    3 
include/asm-i386/fixmap.h         |    7 +
include/asm-i386/page.h           |    2 
include/asm-i386/pgalloc.h        |    4 
include/asm-i386/pgtable.h        |    1 
include/asm-i386/processor.h      |   74 ++++++++---------
include/asm-i386/ptrace.h         |    5 -
include/asm-i386/segment.h        |   10 ++
include/asm-i386/spinlock.h       |    7 +
include/asm-i386/sync_bitops.h    |  156 +++++++++++++++++++++++++++++++++++++
include/asm-i386/system.h         |   36 ++++++++
include/linux/elfnote.h           |   88 ++++++++++++++++++++
include/linux/mm.h                |    9 ++
kernel/fork.c                     |    2 
mm/fremap.c                       |    2 
mm/memory.c                       |  106 ++++++++++++++++++++++++-
mm/mprotect.c                     |    2 
mm/mremap.c                       |    2 
mm/msync.c                        |    2 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2006-08-22 11:43 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-01 20:00 [PATCH 0 of 13] Basic infrastructure patches for a paravirtualized kernel Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 1 of 13] Add apply_to_page_range() which applies a function to a pte range Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 2 of 13] Remove locally-defined ldt structure in favour of standard type Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 3 of 13] Implement always-locked bit ops, for memory shared with an SMP hypervisor Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 4 of 13] Allow a kernel to not be in ring 0 Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 5 of 13] Replace sensitive instructions with macros Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 6 of 13] Roll all the cpuid asm into one __cpuid call Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 7 of 13] Make __FIXADDR_TOP variable to allow it to make space for a hypervisor Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 8 of 13] Add a bootparameter to reserve high linear address space for hypervisors Jeremy Fitzhardinge
2006-08-01 21:47   ` Andi Kleen
2006-08-01 21:47     ` Andi Kleen
2006-08-02  0:48     ` Rusty Russell
2006-08-02  2:59       ` Andi Kleen
2006-08-02  2:59         ` Andi Kleen
2006-08-02  3:54         ` [Xen-devel] " Rusty Russell
2006-08-02  3:54           ` Rusty Russell
2006-08-02  4:21           ` [Xen-devel] " Andi Kleen
2006-08-02  4:33             ` Rusty Russell
2006-08-02  4:33               ` Rusty Russell
2006-08-02  4:36               ` [Xen-devel] " Andi Kleen
2006-08-02  4:36                 ` Andi Kleen
2006-08-02  5:20                 ` [Xen-devel] " Rusty Russell
2006-08-02  5:20                   ` Rusty Russell
2006-08-02  5:24                   ` [Xen-devel] " Andi Kleen
2006-08-02  5:24                     ` Andi Kleen
2006-08-02  9:06                     ` [PATCH 1/2] Allow early_param and identical __setup to exist Rusty Russell
2006-08-02  9:06                       ` Rusty Russell
2006-08-02  9:08                     ` [PATCH 2/2] Replace i386 open-coded cmdline parsing with early_param/parse_early_param Rusty Russell
2006-08-02  9:08                       ` Rusty Russell
2006-08-02  9:24                       ` Andi Kleen
2006-08-01 20:00 ` [PATCH 9 of 13] Remove the read hazard from the COW path in copy_one_pte Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 10 of 13] Change pte_clear_full to a more appropriately named pte_clear_not_present, Jeremy Fitzhardinge
2006-08-01 21:48   ` Andi Kleen
2006-08-01 20:00 ` [PATCH 11 of 13] Implement lazy MMU update hooks which are SMP safe for both direct and Jeremy Fitzhardinge
2006-08-01 20:00 ` [PATCH 12 of 13] Pass the mm struct into the pgd_free code so the mm is available here Jeremy Fitzhardinge
2006-08-02  3:14   ` Andi Kleen
2006-08-02  3:14     ` Andi Kleen
2006-08-02  6:25     ` [Xen-devel] " Zachary Amsden
2006-08-02  7:13       ` Chris Wright
2006-08-02  7:13         ` Chris Wright
2006-08-01 20:00 ` [PATCH 13 of 13] Put .note.* sections into a PT_NOTE segment in vmlinux Jeremy Fitzhardinge
2006-08-22 11:14   ` [PATCH 1 of 1] x86_43: " Ian Campbell
2006-08-22 11:14     ` Ian Campbell
2006-08-22 11:33     ` Andi Kleen
2006-08-22 11:33       ` Andi Kleen
2006-08-22 11:43       ` Ian Campbell
2006-08-22 11:43         ` Ian Campbell
2006-08-02  3:18 ` [PATCH 0 of 13] Basic infrastructure patches for a paravirtualized kernel Andi Kleen
2006-08-02  3:18   ` Andi Kleen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.