Hi. This patchset implements ia64/pv_ops support which is the framework for virtualization support. Please review and comments. On x86 various ways to support virtualization were proposed, and eventually pv_ops won. So on ia64 the pv_ops strategy is appropriate too. Later I'll post the patchset which implements xen domU based on ia64/pv_ops. Currently only ia64/xen pv_ops implementation exists, but I believe ia64/kvm can also obtain benefits from this ia64/pv_ops frame work. Eddie Dong also has been working on ia64/pv_ops and posted a mail requesting for suggestion/comments. The corresponding patch is "[10/15] ia64/pv_ops: paravirtualize entry.S" As discussed before, ivt.S was paravirtualized by single source and multi compile way. But he thinks other way is appropriate for other hand written assembly code. Which way is acceptable? This patchset does the followings. - some preparation work. Mainly make the kernel virtualization friendly. - introduce pv_info which describes the execution environment. - introduce macros for hand written assembly code to paravirtualize hand written code to replace sensitive/privileged instructions. - introduce various hooks to replace the implementation with paravirtualized. They are defined as function tables called, pv_init_ops, pv_cpu_ops, pv_irq_ops, pv_iosapic_ops and, pv_time_ops. They represent pv_init_ops: hooks for various initialization. pv_cpu_ops: hooks for ia64 intrinsics. pv_irq_ops: hooks for irq related operations. pv_iosapic_ops: hooks for paravirtualized iosapic. pv_time_ops: hooks for steal time accounting The working full source is available from http://people.valinux.co.jp/~yamahata/xen-ia64/linux-2.6-xen-ia64.git/ branch: xen-ia64-2008apr08 At this phase, we don't address the following issues. Those will be addressed after the first merge. - optimization by binary patch In fact, we had the patch to do that, but we intentionally dropped for patch size/readability/cleanness. - freeing the unused pages, i.e. pages for unused ivt.S. Changes from take 3: - split the patch set into pv_op part and xen domU part. - many clean ups. - introduced pv_ops: pv_cpu_ops and pv_time_ops. Changes from take 2: - many clean ups following to comments. - clean up:assembly instruction macro. - introduced pv_ops: pv_info, pv_init_ops, pv_iosapic_ops, pv_irq_ops. Changes from take 1: Single IVT source code. compile multitimes using assembler macros. thanks, Diffstat: arch/ia64/kernel/Makefile | 11 + arch/ia64/kernel/entry.S | 107 +++++++---- arch/ia64/kernel/iosapic.c | 45 +++-- arch/ia64/kernel/irq_ia64.c | 19 ++- arch/ia64/kernel/ivt.S | 223 +++++++++++----------- arch/ia64/kernel/minstate.h | 13 +- arch/ia64/kernel/paravirt.c | 367 ++++++++++++++++++++++++++++++++++++ arch/ia64/kernel/paravirt_inst.h | 29 +++ arch/ia64/kernel/paravirtentry.S | 60 ++++++ arch/ia64/kernel/setup.c | 10 + arch/ia64/kernel/smpboot.c | 2 + arch/ia64/kernel/time.c | 23 +++ include/asm-ia64/Kbuild | 2 +- include/asm-ia64/gcc_intrin.h | 24 ++-- include/asm-ia64/hw_irq.h | 23 ++- include/asm-ia64/intel_intrin.h | 41 ++-- include/asm-ia64/intrinsics.h | 55 ++++++ include/asm-ia64/iosapic.h | 18 ++- include/asm-ia64/irq.h | 10 +- include/asm-ia64/mmu_context.h | 6 +- include/asm-ia64/native/inst.h | 180 ++++++++++++++++++ include/asm-ia64/paravirt.h | 252 +++++++++++++++++++++++++ include/asm-ia64/paravirt_irq.h | 49 +++++ include/asm-ia64/paravirt_privop.h | 114 +++++++++++ include/asm-ia64/smp.h | 2 + include/asm-ia64/system.h | 4 +- 26 files changed, 1464 insertions(+), 225 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |