All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/50] ia64/xen take 3: ia64/xen domU paravirtualization
@ 2008-03-05 18:18 Isaku Yamahata
  2008-03-05 18:18 ` [PATCH 01/50] xen: add missing __HYPERVISOR_arch_[0-7] definisions which ia64 needs Isaku Yamahata
                   ` (50 more replies)
  0 siblings, 51 replies; 67+ messages in thread
From: Isaku Yamahata @ 2008-03-05 18:18 UTC (permalink / raw)
  To: linux-ia64

Hi. This patchset implements xen/ia64 domU support.
Qing He and Eddie Dong also has been woring on pv_ops so that
I want to discuss before going further and avoid duplicated work.
I suppose that Eddie will also post his own patch. So reviewing both
patches, we can reach to better pv_ops interface.


- I didn't changed the ia64 intrinsic paravirtulization abi from
  the last post. Presumably it would be better to discuss with
  the Eddie's patch.

- I implemented The basic portion of domU pv_ops.
  They may need the interface refinement. Probably Eddie has
  his own opinion.

- This time I dropped the patches which hasn't been pv_ops'fied yet 
  because they aren't changed from the last post.

You can also get the full source from
http://people.valinux.co.jp/~yamahata/xen-ia64/linux-2.6-xen-ia64.git/
branch: xen-ia64-2008mar06

The patchset are organized as follows
- xen arch portability.
  Generalizes x86 xen patches for ia64 support.
- some preliminary patches.
  Make kernel paravirtualization friendly.
- introduce pv_ops and the definitions for native.
- basic helper functions for xen ia64 support.
- introduce the pv_ops instance for xen/ia64.


TODO:
- discuss and define intrinsic paravirtualization abi.
- discuss pv_ops.
- more pv_ops for domU
  - mca/sal call
  - timer
  - gate page
  - fsys
- support save/restore/live migration
- more clean ups
  - remove unnecessary if (is_running_on_xen()).
- Free xen_ivt areas somehow. No waste kernel space
  From Keith Owens idea.
  Probably after defining ABI because this is just optimization.
- dom0
  consider after finishing domU/ia64 merge.


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/Kconfig                                  |   72 +++
 arch/ia64/kernel/Makefile                          |   30 +-
 arch/ia64/kernel/acpi.c                            |    4 +
 arch/ia64/kernel/asm-offsets.c                     |   25 +
 arch/ia64/kernel/entry.S                           |  568 +------------------
 arch/ia64/kernel/head.S                            |    6 +
 arch/ia64/kernel/inst_native.h                     |  183 ++++++
 arch/ia64/kernel/inst_paravirt.h                   |   28 +
 arch/ia64/kernel/iosapic.c                         |   43 +-
 arch/ia64/kernel/irq_ia64.c                        |   21 +-
 arch/ia64/kernel/ivt.S                             |  153 +++---
 arch/ia64/kernel/minstate.h                        |   10 +-
 arch/ia64/kernel/module.c                          |   32 +
 arch/ia64/kernel/pal.S                             |    5 +-
 arch/ia64/kernel/paravirt.c                        |   94 +++
 arch/ia64/kernel/paravirt_alt.c                    |  118 ++++
 arch/ia64/kernel/paravirt_core.c                   |  201 +++++++
 arch/ia64/kernel/paravirt_entry.c                  |   99 ++++
 arch/ia64/kernel/paravirt_nop.c                    |   49 ++
 arch/ia64/kernel/paravirtentry.S                   |   37 ++
 arch/ia64/kernel/setup.c                           |   14 +
 arch/ia64/kernel/smpboot.c                         |    2 +
 arch/ia64/kernel/switch_leave.S                    |  603 +++++++++++++++++++
 arch/ia64/kernel/vmlinux.lds.S                     |   35 ++
 arch/ia64/xen/Makefile                             |    9 +
 arch/ia64/xen/hypercall.S                          |  141 +++++
 arch/ia64/xen/hypervisor.c                         |  235 ++++++++
 arch/ia64/xen/inst_xen.h                           |  503 ++++++++++++++++
 arch/ia64/xen/irq_xen.c                            |  435 ++++++++++++++
 arch/ia64/xen/irq_xen.h                            |    8 +
 arch/ia64/xen/machvec.c                            |    4 +
 arch/ia64/xen/paravirt_xen.c                       |  242 ++++++++
 arch/ia64/xen/privops_asm.S                        |  221 +++++++
 arch/ia64/xen/privops_c.c                          |  279 +++++++++
 arch/ia64/xen/util.c                               |  101 ++++
 arch/ia64/xen/xcom_asm.S                           |   27 +
 arch/ia64/xen/xcom_hcall.c                         |  458 +++++++++++++++
 arch/ia64/xen/xen_pv_ops.c                         |  319 ++++++++++
 arch/ia64/xen/xencomm.c                            |  108 ++++
 arch/ia64/xen/xenivt.S                             |   59 ++
 arch/ia64/{kernel/minstate.h => xen/xenminstate.h} |   96 +---
 arch/ia64/xen/xenpal.S                             |   76 +++
 arch/ia64/xen/xensetup.S                           |   60 ++
 arch/x86/xen/Makefile                              |    4 +-
 arch/x86/xen/grant-table.c                         |   91 +++
 arch/x86/xen/xen-ops.h                             |    2 +-
 drivers/xen/Makefile                               |    3 +-
 {arch/x86 => drivers}/xen/events.c                 |   33 +-
 {arch/x86 => drivers}/xen/features.c               |    0 
 drivers/xen/grant-table.c                          |   37 +--
 drivers/xen/xenbus/xenbus_client.c                 |    6 +-
 drivers/xen/xencomm.c                              |  232 ++++++++
 include/asm-ia64/gcc_intrin.h                      |   58 +-
 include/asm-ia64/hw_irq.h                          |   24 +-
 include/asm-ia64/intel_intrin.h                    |   64 +-
 include/asm-ia64/intrinsics.h                      |   12 +
 include/asm-ia64/iosapic.h                         |   18 +-
 include/asm-ia64/irq.h                             |   33 ++
 include/asm-ia64/machvec.h                         |    2 +
 include/asm-ia64/machvec_xen.h                     |   22 +
 include/asm-ia64/meminit.h                         |    3 +-
 include/asm-ia64/mmu_context.h                     |    6 +-
 include/asm-ia64/module.h                          |    6 +
 include/asm-ia64/page.h                            |    8 +
 include/asm-ia64/paravirt.h                        |  284 +++++++++
 include/asm-ia64/paravirt_alt.h                    |   82 +++
 include/asm-ia64/paravirt_core.h                   |   54 ++
 include/asm-ia64/paravirt_entry.h                  |   62 ++
 include/asm-ia64/paravirt_nop.h                    |   46 ++
 include/asm-ia64/privop.h                          |   67 +++
 include/asm-ia64/privop_paravirt.h                 |  587 +++++++++++++++++++
 include/asm-ia64/sync_bitops.h                     |   59 ++
 include/asm-ia64/system.h                          |    4 +-
 include/asm-ia64/xen/hypercall.h                   |  426 ++++++++++++++
 include/asm-ia64/xen/hypervisor.h                  |  249 ++++++++
 include/asm-ia64/xen/interface.h                   |  585 +++++++++++++++++++
 include/asm-ia64/xen/page.h                        |   41 ++
 include/asm-ia64/xen/privop.h                      |  609 ++++++++++++++++++++
 include/asm-ia64/xen/xcom_hcall.h                  |   55 ++
 include/asm-ia64/xen/xencomm.h                     |   33 ++
 include/asm-x86/xen/hypervisor.h                   |   10 +
 include/asm-x86/xen/interface.h                    |   24 +
 include/{ => asm-x86}/xen/page.h                   |    0 
 include/xen/events.h                               |    1 +
 include/xen/grant_table.h                          |    6 +
 include/xen/interface/callback.h                   |  119 ++++
 include/xen/interface/grant_table.h                |   11 +-
 include/xen/interface/vcpu.h                       |    5 +
 include/xen/interface/xen.h                        |   22 +-
 include/xen/interface/xencomm.h                    |   41 ++
 include/xen/page.h                                 |  181 +------
 include/xen/xen-ops.h                              |    6 +
 include/xen/xencomm.h                              |   77 +++
 93 files changed, 9174 insertions(+), 1049 deletions(-)

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

end of thread, other threads:[~2008-03-25 15:13 UTC | newest]

Thread overview: 67+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-05 18:18 [PATCH 00/50] ia64/xen take 3: ia64/xen domU paravirtualization Isaku Yamahata
2008-03-05 18:18 ` [PATCH 01/50] xen: add missing __HYPERVISOR_arch_[0-7] definisions which ia64 needs Isaku Yamahata
2008-03-05 18:18 ` [PATCH 02/50] xen: add missing VIRQ_ARCH_[0-7] definitions which ia64/xen needs Isaku Yamahata
2008-03-05 18:18 ` [PATCH 03/50] xen: add missing definitions for xen grant table " Isaku Yamahata
2008-03-05 18:18 ` [PATCH 04/50] xen: add missing definitions in include/xen/interface/vcpu.h " Isaku Yamahata
2008-03-05 18:18 ` [PATCH 05/50] xen: move features.c from arch/x86/xen/features.c to drivers/xen Isaku Yamahata
2008-03-05 18:18 ` [PATCH 06/50] xen: move arch/x86/xen/events.c undedr drivers/xen and split out arch specific part Isaku Yamahata
2008-03-05 18:18 ` [PATCH 07/50] xen: make include/xen/page.h portable moving those definitions under asm dir Isaku Yamahata
2008-03-05 18:18 ` [PATCH 08/50] xen: replace callers of alloc_vm_area()/free_vm_area() with xen_ prefixed one Isaku Yamahata
2008-03-05 18:18 ` [PATCH 09/50] xen: make grant table arch portable Isaku Yamahata
2008-03-05 18:18 ` [PATCH 10/50] xen: import include/xen/interface/callback.h which ia64/xen needs Isaku Yamahata
2008-03-05 18:18 ` [PATCH 11/50] xen: import arch generic part of xencomm Isaku Yamahata
2008-03-05 18:18 ` [PATCH 12/50] ia64/pv_ops: introduce ia64_set_rr0_to_rr4() to make kernel paravirtualization friendly Isaku Yamahata
2008-03-05 18:18 ` [PATCH 13/50] ia64/pv_ops: introduce ia64_get_psr_i() " Isaku Yamahata
2008-03-05 18:18 ` [PATCH 14/50] ia64/pv_ops: split out ia64_swtich_to(), ia64_leave_syscall() and ia64_leave_kernel from entry.S to switch_leave.S for paravirtualization Isaku Yamahata
2008-03-05 18:18 ` [PATCH 15/50] ia64/pv_ops: preparation for paravirtualizatin of switch_leave.S and ivt.S Isaku Yamahata
2008-03-05 18:18 ` [PATCH 16/50] ia64/pv_ops: hook pal_call_static() for paravirtualization Isaku Yamahata
2008-03-05 18:18 ` [PATCH 17/50] ia64/pv_ops: introduce basic facilities for binary patching Isaku Yamahata
2008-03-05 18:18 ` [PATCH 18/50] ia64/pv_ops: preparation for ia64 intrinsics operations paravirtualization Isaku Yamahata
2008-03-05 18:18 ` [PATCH 19/50] ia64/pv_ops: define ia64 privileged instruction intrinsics for paravirtualized guest kernel Isaku Yamahata
2008-03-05 18:18 ` [PATCH 20/50] ia64/pv_ops: paravirtualized instructions for hand written assembly code on native Isaku Yamahata
2008-03-05 18:18 ` [PATCH 21/50] ia64/pv_ops: header file to switch paravirtualized assembly instructions Isaku Yamahata
2008-03-05 18:18 ` [PATCH 22/50] ia64/pv_ops: paravirtualize minstate.h Isaku Yamahata
2008-03-05 18:18 ` [PATCH 23/50] ia64/pv_ops: paravirtualize arch/ia64/kernel/switch_leave.S Isaku Yamahata
2008-03-05 18:18 ` [PATCH 24/50] ia64/pv_ops: paravirtualize arch/ia64/kernel/ivt.S Isaku Yamahata
2008-03-05 18:18 ` [PATCH 25/50] ia64/pv_ops: introduce pv_info Isaku Yamahata
2008-03-05 18:18 ` [PATCH 26/50] ia64/pv_ops: introduce pv_init_ops and its hooks Isaku Yamahata
2008-03-05 18:18 ` [PATCH 27/50] ia64/pv_ops: introduce pv_iosapic_ops " Isaku Yamahata
2008-03-05 18:18 ` [PATCH 28/50] ia64/pv_ops: introduce pv_irq_ops " Isaku Yamahata
2008-03-05 18:18 ` [PATCH 29/50] ia64/xen: increase IA64_MAX_RSVD_REGIONS Isaku Yamahata
2008-03-05 18:18 ` [PATCH 30/50] ia64/xen: introduce synch bitops which is necessary for ia64/xen support Isaku Yamahata
2008-03-05 18:18 ` [PATCH 31/50] ia64/xen: import xen hypercall header file for domU Isaku Yamahata
2008-03-05 18:18 ` [PATCH 32/50] ia64/xen: define xen assembler constants which will be used later Isaku Yamahata
2008-03-05 18:18 ` [PATCH 33/50] ia64/xen: detect xen environment at early boot time and do minimal initialization Isaku Yamahata
2008-03-05 18:18 ` [PATCH 34/50] ia64/xen: helper functions for xen fault handlers Isaku Yamahata
2008-03-05 18:18 ` [PATCH 35/50] ia64/pv_ops/xen: paravirtualized instructions for hand written assembly code Isaku Yamahata
2008-03-05 18:18 ` [PATCH 36/50] ia64/pv_ops/xen: paravirtualize DO_SAVE_MIN Isaku Yamahata
2008-03-05 18:18 ` [PATCH 37/50] ia64/pv_ops/xen: multi compile switch_leave.S and ivt.S for xen Isaku Yamahata
2008-03-05 18:18 ` [PATCH 38/50] ia64/xen: paravirtualize pal_call_static() Isaku Yamahata
2008-03-05 18:18 ` [PATCH 39/50] ia64/xen: introduce xen paravirtualized intrinsic operations for privileged instruction Isaku Yamahata
2008-03-05 18:18 ` [PATCH 40/50] ia64/pv_ops/xen: xen privileged instruction intrinsics with binary patch Isaku Yamahata
2008-03-05 18:18 ` [PATCH 41/50] ia64/xen: introduce xen hypercall routines necessary for domU Isaku Yamahata
2008-03-05 18:18 ` [PATCH 42/50] ia64/xen: ia64 domU part of xencomm Isaku Yamahata
2008-03-05 18:18 ` [PATCH 43/50] ia64/xen: define xen_alloc_vm_area()/xen_free_vm_area() for ia64 arch Isaku Yamahata
2008-03-05 18:18 ` [PATCH 44/50] ia64/xen: basic helper routines for xen/ia64 Isaku Yamahata
2008-03-05 18:19 ` [PATCH 45/50] ia64/xen: domU xen machine vector without dma api Isaku Yamahata
2008-03-05 18:19 ` [PATCH 46/50] ia64/xen: define xen related address conversion helper functions for domU Isaku Yamahata
2008-03-05 18:19 ` [PATCH 47/50] ia64/pv_ops/xen: define xen pv_info Isaku Yamahata
2008-03-05 18:19 ` [PATCH 48/50] ia64/pv_ops/xen: define xen pv_init_ops Isaku Yamahata
2008-03-05 18:19 ` [PATCH 49/50] ia64/pv_ops/xen: define xen pv_iosapic_ops Isaku Yamahata
2008-03-05 18:19 ` [PATCH 50/50] ia64/pv_ops/xen: define xen pv_irq_ops Isaku Yamahata
2008-03-05 18:19 ` Isaku Yamahata
2008-03-20  9:13   ` Xen common code across architecture Dong, Eddie
2008-03-20  9:13   ` Dong, Eddie
2008-03-20  9:13     ` Dong, Eddie
2008-03-20 14:23     ` Jeremy Fitzhardinge
2008-03-20 14:23       ` Jeremy Fitzhardinge
2008-03-25  6:13       ` Dong, Eddie
2008-03-25  6:13         ` Dong, Eddie
2008-03-25  6:35         ` Dong, Eddie
2008-03-25  6:35           ` Dong, Eddie
2008-03-25  6:35         ` Dong, Eddie
2008-03-25 15:08         ` Jeremy Fitzhardinge
2008-03-25 15:08           ` Jeremy Fitzhardinge
2008-03-25 15:08         ` Jeremy Fitzhardinge
2008-03-25  6:13       ` Dong, Eddie
2008-03-20 14:23     ` Jeremy Fitzhardinge

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.