Skip to content

Xen-pv_ops: Xen guest implementation for paravirt_ops interface

Jeremy Fitzhardinge lkml netdev virtualization xen-devel 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest34 patches 4 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/34Xen-pv_ops: Fix typo in sync_constant_test_bit()s name.include/asm-i386/sync_bitops.h+1 -10 replies
2/34Xen-pv_ops: ignore vgacon if hardware not presentdrivers/video/console/vgacon.c+2 -10 replies
3/34Xen-pv_ops: update MAINTAINERSMAINTAINERS+22 -00 replies
4/34Xen-pv_ops: use paravirt_nop to consistently mark no-op operationsarch/i386/kernel/paravirt.c include/asm-i386/paravirt.h+16 -130 replies
5/34Xen-pv_ops: Add pagetable accessors to pack and unpack pagetable entriesarch/i386/kernel/paravirt.c arch/i386/kernel/vmi.c include/asm-i386/page.h +4 more+179 -1310 replies
6/34Xen-pv_ops: Hooks to set up initial pagetablearch/i386/kernel/paravirt.c arch/i386/mm/init.c include/asm-i386/paravirt.h +1 more+143 -520 replies
7/34Xen-pv_ops: Allocate a fixmap slotinclude/asm-i386/fixmap.h+3 -00 replies
8/34Xen-pv_ops: Allow paravirt backend to choose kernel PMD sharingarch/i386/kernel/paravirt.c arch/i386/mm/fault.c arch/i386/mm/init.c +8 more+105 -260 replies
9/34Xen-pv_ops: add hooks to intercept mm creation and destructionarch/i386/kernel/paravirt.c include/asm-alpha/mmu_context.h include/asm-arm/mmu_context.h +27 more+96 -30 replies
10/34Xen-pv_ops: Simplify smp_call_function*() by using common implementationarch/i386/kernel/smp.c+102 -1111 reply
11/34Xen-pv_ops: Add smp_ops interfacearch/i386/kernel/smp.c arch/i386/kernel/smpboot.c include/asm-i386/smp.h+73 -90 replies
12/34Xen-pv_ops: rename struct paravirt_patch to paravirt_patch_site for clarityarch/i386/kernel/alternative.c arch/i386/kernel/vmi.c include/asm-i386/alternative.h +1 more+10 -130 replies
13/34Xen-pv_ops: Use patch site IDs computed from offset in paravirt_ops structurearch/i386/kernel/asm-offsets.c arch/i386/kernel/paravirt.c arch/i386/kernel/vmi.c +1 more+70 -950 replies
14/34Xen-pv_ops: Fix patch site clobbers to include return registerinclude/asm-i386/paravirt.h+2 -20 replies
15/34Xen-pv_ops: Consistently wrap paravirt ops callsites to make them patchableinclude/asm-i386/paravirt.h+445 -1350 replies
16/34Xen-pv_ops: add common patching machineryarch/i386/kernel/alternative.c arch/i386/kernel/paravirt.c include/asm-i386/paravirt.h+147 -300 replies
17/34Xen-pv_ops: add flush_tlb_others paravirt_oparch/i386/kernel/paravirt.c arch/i386/kernel/smp.c include/asm-i386/paravirt.h +1 more+34 -90 replies
18/34Xen-pv_ops: revert map_pt_hook.arch/i386/kernel/paravirt.c arch/i386/kernel/vmi.c include/asm-i386/paravirt.h +1 more+6 -280 replies
19/34Xen-pv_ops: add kmap_atomic_pte for mapping highpte pagesarch/i386/kernel/paravirt.c arch/i386/mm/highmem.c include/asm-i386/highmem.h +4 more+55 -50 replies
20/34Xen-pv_ops: Add apply_to_page_range() which applies a function to a pte range.include/linux/mm.h mm/memory.c+99 -00 replies
21/34Xen-pv_ops: Allocate and free vmalloc areasarch/i386/mm/fault.c include/linux/vmalloc.h+47 -00 replies
22/34Xen-pv_ops: Add nosegneg capability to the vsyscall page notesarch/i386/kernel/vsyscall-note.S+28 -00 replies
23/34Xen-pv_ops: Add XEN config optionsarch/i386/Kconfig arch/i386/xen/Kconfig+12 -00 replies
24/34Xen-pv_ops: Add Xen interface header filesinclude/asm-i386/xen/hypercall.h include/asm-i386/xen/hypervisor.h include/asm-i386/xen/interface.h +16 more+2957 -00 replies
25/34Xen-pv_ops: Core Xen implementationarch/i386/Makefile arch/i386/kernel/cpu/common.c arch/i386/kernel/entry.S +22 more+2829 -260 replies
26/34Xen-pv_ops: Complete pagetable pinning for Xenarch/i386/kernel/setup.c arch/i386/kernel/vmi.c arch/i386/mm/init.c +9 more+284 -1500 replies
27/34Xen-pv_ops: Implement Xen clockevent devicearch/i386/xen/Kconfig arch/i386/xen/enlighten.c arch/i386/xen/time.c +1 more+225 -2640 replies
28/34Xen-pv_ops: Xen SMP guest supportarch/i386/kernel/smpboot.c arch/i386/xen/Makefile arch/i386/xen/enlighten.c +10 more+650 -563 replies
29/34Xen-pv_ops: Use the hvc console infrastructure for Xen consolearch/i386/xen/Kconfig arch/i386/xen/events.c drivers/Makefile +3 more+142 -10 replies
30/34Xen-pv_ops: Add early printk support via hvc consolearch/x86_64/kernel/early_printk.c drivers/xen/hvc-console.c include/xen/hvc-console.h+36 -00 replies
31/34Xen-pv_ops: Add Xen grant table supportdrivers/xen/Makefile drivers/xen/grant-table.c include/xen/grant_table.h+562 -00 replies
32/34Xen-pv_ops: Add the Xenbus sysfs and virtual device hotplug driver.arch/i386/xen/Kconfig drivers/xen/Makefile drivers/xen/xenbus/Makefile +9 more+3121 -00 replies
33/34Xen-pv_ops: Add Xen virtual block device driver.drivers/block/Kconfig drivers/block/Makefile drivers/block/xen/Kconfig +5 more+1232 -00 replies
34/34Xen-pv_ops: Add the Xen virtual network device driver.drivers/net/Kconfig drivers/net/Makefile drivers/net/xen-netfront.c+1997 -00 replies

Reviews trailers per patch

2 of 34 patches have a Reviewed-by or Acked-by.

PatchWilliam IrwinZachary Amsden
1/34
2/34
3/34
4/34
5/34
6/34A-b
7/34
8/34
9/34
10/34
11/34
12/34
13/34
14/34
15/34
16/34
17/34
18/34
19/34
20/34
21/34
22/34A-b
23/34
24/34
25/34
26/34
27/34
28/34
29/34
30/34
31/34
32/34
33/34
34/34

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [patch 00/34] Xen-pv_ops: Xen guest implementation for paravirt_ops interface

Hi Andi,

This patch series implements the Linux Xen guest as a paravirt_ops backend. The features in implemented this patch series are:
* domU only
* UP and SMP guest support (NEW!)
* dynamic ticks (NEW!)
* writable pagetables, with late pinning/early unpinning (no shadow pagetable support)
* supports both PAE and non-PAE modes
(non-PAE may be broken at the moment)
* xen hvc console (console=hvc0)
* virtual block device (blockfront)
* virtual network device (netfront)

The patch series is in three parts:
1-2 Cleanup patches to various parts of the kernel
3-19 Extensions to the core code and/or paravirt ops, needed to support
Xen. Includes hooks into get/setting pte values and the new patching machinery.
19-34 The Xen paravirt_ops implementation itself.

(Some of the earlier patches in the series have already been posted,
but are included to make the series self-contained.)

I've tried to make each patch as self-explanatory as possible. The series is based on 2.6.21-rc3-git7.

Changes since the previous posting:
- SMP support
- Implemented xen_clockevent, so Xen is fully compatible with CONFIG_NO_HZ and HIGH_RES_TIMERS.
- Finished implementing late pinning/early unpinning of pagetables, which should now be equivalent to xen-unstable in performance.
- Add kmap_atomic_pte for mapping ptes, and therefore support for HIGHPTE
- Fixed crash on systems with >= 4G memory
- Cleanup netfront (Stephen Hemminger)
- Add MAINTAINERS entries
- Fold kill-HAVE_ARCH_MM_LIFETIME.patch into mm-lifetime-hooks.patch
- rebased

Thanks,
J