All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/15] RFC: ia64/pv_ops take 4
@ 2008-04-09  4:48 Isaku Yamahata
  2008-04-09  4:48 ` [PATCH 01/15] ia64: preparation: remove extern in irq_ia64.c Isaku Yamahata
                   ` (16 more replies)
  0 siblings, 17 replies; 53+ messages in thread
From: Isaku Yamahata @ 2008-04-09  4:48 UTC (permalink / raw)
  To: linux-ia64

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(-)

^ permalink raw reply	[flat|nested] 53+ messages in thread
* [PATCH 00/15] ia64/pv_ops take 5
@ 2008-04-30 12:29 Isaku Yamahata
  2008-04-30 12:29 ` [PATCH 11/15] ia64/pv_ops: paravirtualize NR_IRQS Isaku Yamahata
  0 siblings, 1 reply; 53+ messages in thread
From: Isaku Yamahata @ 2008-04-30 12:29 UTC (permalink / raw)
  To: linux-ia64

Hi. This patchset implements ia64/pv_ops support which is the
framework for virtualization support.
Now all the comments so far have been addressed, but only a few exceptions.

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 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-2008apr30

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 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,

Diffstat:
 arch/ia64/Makefile                 |    6 +
 arch/ia64/kernel/Makefile          |   44 +++++
 arch/ia64/kernel/entry.S           |  115 +++++++----
 arch/ia64/kernel/iosapic.c         |   45 +++--
 arch/ia64/kernel/irq_ia64.c        |   19 ++-
 arch/ia64/kernel/ivt.S             |  227 +++++++++++-----------
 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 +++
 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     |  180 ++++++++++++++++++
 include/asm-ia64/native/irq.h      |   35 ++++
 include/asm-ia64/paravirt.h        |  252 ++++++++++++++++++++++++
 include/asm-ia64/paravirt_privop.h |  114 +++++++++++
 include/asm-ia64/smp.h             |    2 +
 include/asm-ia64/system.h          |   10 +-
 28 files changed, 1520 insertions(+), 237 deletions(-)

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

end of thread, other threads:[~2008-04-30 12:29 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-09  4:48 [PATCH 00/15] RFC: ia64/pv_ops take 4 Isaku Yamahata
2008-04-09  4:48 ` [PATCH 01/15] ia64: preparation: remove extern in irq_ia64.c Isaku Yamahata
2008-04-09  4:48 ` [PATCH 02/15] ia64/pv_ops: preparation: introduce ia64_set_rr0_to_rr4() to make kernel paravirtualization friendly Isaku Yamahata
2008-04-09  4:48 ` [PATCH 03/15] ia64/pv_ops: preparation: introduce ia64_get_psr_i() " Isaku Yamahata
2008-04-09  4:48 ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes some random info Isaku Yamahata
2008-04-22  9:16   ` Jes Sorensen
2008-04-22 10:02     ` Isaku Yamahata
2008-04-22  9:16   ` Jes Sorensen
2008-04-22 10:02   ` Isaku Yamahata
2008-04-22 10:37     ` Jes Sorensen
2008-04-22 10:37   ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes Jes Sorensen
2008-04-22 10:41     ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes some random info Dong, Eddie
2008-04-22 11:02     ` Isaku Yamahata
2008-04-22 10:41   ` Dong, Eddie
2008-04-22 11:30     ` Jes Sorensen
2008-04-22 11:02   ` Isaku Yamahata
2008-04-22 11:30   ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes Jes Sorensen
2008-04-22 13:15     ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes some random info Dong, Eddie
2008-04-22 13:15   ` Dong, Eddie
2008-04-22 13:55     ` Jes Sorensen
2008-04-22 13:55   ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes Jes Sorensen
2008-04-30 12:29   ` [PATCH 04/15] ia64/pv_ops: introduce pv_info which describes some random info Isaku Yamahata
2008-04-09  4:48 ` Isaku Yamahata
2008-04-09  4:48 ` [PATCH 05/15] ia64/pv_ops: introduce pv_cpu_ops to paravirtualize privileged instructions Isaku Yamahata
2008-04-09  4:48 ` [PATCH 06/15] ia64/pv_ops: preparation for paravirtulization of hand written assembly code Isaku Yamahata
2008-04-09  4:49 ` [PATCH 07/15] ia64/pv_ops: define paravirtualized instructions for native Isaku Yamahata
2008-04-09  4:49 ` [PATCH 08/15] ia64/pv_ops: paravirtualize minstate.h Isaku Yamahata
2008-04-09  4:49 ` [PATCH 09/15] ia64/pv_ops: paravirtualize ivt.S Isaku Yamahata
2008-04-09  4:49 ` [PATCH 10/15] ia64/pv_ops: paravirtualize entry.S Isaku Yamahata
2008-04-09  4:49 ` [PATCH 11/15] ia64/pv_ops: paravirtualize NR_IRQS Isaku Yamahata
2008-04-09  4:49 ` Isaku Yamahata
2008-04-22  9:08   ` Jes Sorensen
2008-04-22 10:11     ` Isaku Yamahata
2008-04-22  9:08   ` Jes Sorensen
2008-04-22 10:11   ` Isaku Yamahata
2008-04-22 12:05     ` Jes Sorensen
2008-04-22 12:05   ` Jes Sorensen
2008-04-23  2:54     ` Isaku Yamahata
2008-04-23  2:54   ` Isaku Yamahata
2008-04-23 14:03     ` Jes Sorensen
2008-04-23 14:03   ` Jes Sorensen
2008-04-24 11:19     ` Isaku Yamahata
2008-04-24 11:19   ` Isaku Yamahata
2008-04-24 11:52     ` Jes Sorensen
2008-04-24 11:52   ` Jes Sorensen
2008-04-24 12:21     ` Isaku Yamahata
2008-04-24 12:21   ` Isaku Yamahata
2008-04-30 12:29   ` Isaku Yamahata
2008-04-09  4:49 ` [PATCH 12/15] ia64/pv_ops: define initialization hooks, pv_init_ops, for paravirtualized environment Isaku Yamahata
2008-04-09  4:49 ` [PATCH 13/15] ia64/pv_ops: add hooks, pv_iosapic_ops, to paravirtualize iosapic Isaku Yamahata
2008-04-09  4:49 ` [PATCH 14/15] ia64/pv_ops: add hooks, pv_irq_ops, to paravirtualized irq related operations Isaku Yamahata
2008-04-09  4:49 ` [PATCH 15/15] ia64/pv_ops: add to hooks, pv_time_ops, for steal time accounting Isaku Yamahata
  -- strict thread matches above, loose matches on Subject: below --
2008-04-30 12:29 [PATCH 00/15] ia64/pv_ops take 5 Isaku Yamahata
2008-04-30 12:29 ` [PATCH 11/15] ia64/pv_ops: paravirtualize NR_IRQS Isaku Yamahata

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.