Hi. This patchset implements ia64/pv_ops support which is the framework for virtualization support. Changes from take 5 are rebased to Linux 2.6.26-rc3, bug fix ivt.S paravirtualization and multi entry point support. I believe these patches can be applied to the linux ia64 repository. 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. linux/ia64 has the machine vector interface and another approach might be to utilize it. However pv_ops is better for some reasons. Please see the thread of the mailing list from http://www.spinics.net/lists/linux-ia64/msg05238.html This patchset does the followings. - some preparation work. Mainly make the kernel virtualization friendly. - introduce multi entry point support. - 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-2008may19 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 5: - rebased to Linux 2.6.26-rc3 - fix ivt.S paravirtualization. One instruction was wrongly paravirtualized. It wasn't revealed with Xen HVM domain so far, but with real hw - multi entry point support. - revised changelog to add CCs. Changes from take 4: - refined NR_IRQS paravirtualization according to Jes Soresen's comment - rebased and fixed the breakage due to the upstream change. - fixed various compilation errors. 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, arch/ia64/Makefile | 6 + arch/ia64/kernel/Makefile | 44 +++++ arch/ia64/kernel/entry.S | 115 +++++++---- arch/ia64/kernel/head.S | 41 ++++ arch/ia64/kernel/iosapic.c | 45 +++-- arch/ia64/kernel/irq_ia64.c | 19 ++- arch/ia64/kernel/ivt.S | 249 ++++++++++++------------ arch/ia64/kernel/minstate.h | 13 +- arch/ia64/kernel/nr-irqs.c | 24 +++ arch/ia64/kernel/paravirt.c | 369 ++++++++++++++++++++++++++++++++++++ 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 +++ arch/ia64/kernel/vmlinux.lds.S | 1 - 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 | 9 +- include/asm-ia64/mmu_context.h | 6 +- include/asm-ia64/native/inst.h | 175 +++++++++++++++++ include/asm-ia64/native/irq.h | 35 ++++ include/asm-ia64/paravirt.h | 255 +++++++++++++++++++++++++ include/asm-ia64/paravirt_privop.h | 114 +++++++++++ include/asm-ia64/smp.h | 2 + include/asm-ia64/system.h | 11 +- 30 files changed, 1567 insertions(+), 253 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
![]() |