All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] Alternate p2m: support multiple copies of host p2m
@ 2015-01-09 21:26 Ed White
  2015-01-09 21:26 ` [PATCH 01/11] VMX: VMFUNC and #VE definitions and detection Ed White
                   ` (14 more replies)
  0 siblings, 15 replies; 135+ messages in thread
From: Ed White @ 2015-01-09 21:26 UTC (permalink / raw)
  To: xen-devel; +Cc: keir, ian.campbell, tim, ian.jackson, Ed White, jbeulich

This set of patches adds support to hvm domains for EPTP switching by creating
multiple copies of the host p2m (currently limited to 10 copies).

The primary use of this capability is expected to be in scenarios where access
to memory needs to be monitored and/or restricted below the level at which the
guest OS page tables operate. Two examples that were discussed at the 2014 Xen
developer summit are:

    VM introspection: 
        http://www.slideshare.net/xen_com_mgr/
        zero-footprint-guest-memory-introspection-from-xen

    Secure inter-VM communication:
        http://www.slideshare.net/xen_com_mgr/nakajima-nvf

Each p2m copy is populated lazily on EPT violations, and only contains entries for
ram p2m types. Permissions for pages in alternate p2m's can be changed in a similar
way to the existing memory access interface, and gfn->mfn mappings can be changed.

All this is done through extra HVMOP types.

The cross-domain HVMOP code has been compile-tested only. Also, the cross-domain
code is hypervisor-only, the toolstack has not been modified.

The intra-domain code has been tested. Violation notifications can only be received
for pages that have been modified (access permissions and/or gfn->mfn mapping) 
intra-domain, and only on VCPU's that have enabled notification.

VMFUNC and #VE will both be emulated on hardware without native support.

This code is not compatible with nested hvm functionality and will refuse to work
with nested hvm active. It is also not compatible with migration. It should be
considered experimental.

Ed White (11):
  VMX: VMFUNC and #VE definitions and detection.
  VMX: implement suppress #VE.
  x86/HVM: Hardware alternate p2m support detection.
  x86/MM: Improve p2m type checks.
  x86/altp2m: basic data structures and support routines.
  VMX/altp2m: add code to support EPTP switching and #VE.
  x86/altp2m: introduce p2m_ram_rw_ve type.
  x86/altp2m: add remaining support routines.
  x86/altp2m: define and implement alternate p2m HVMOP types.
  x86/altp2m: fix log-dirty handling.
  x86/altp2m: alternate p2m memory events.

 docs/misc/xen-command-line.markdown |   7 +
 xen/arch/x86/hvm/Makefile           |   3 +-
 xen/arch/x86/hvm/altp2mhvm.c        |  77 ++++++
 xen/arch/x86/hvm/hvm.c              | 264 +++++++++++++++++++-
 xen/arch/x86/hvm/vmx/vmcs.c         |  40 +++
 xen/arch/x86/hvm/vmx/vmx.c          | 139 +++++++++++
 xen/arch/x86/mm/guest_walk.c        |   2 +-
 xen/arch/x86/mm/hap/Makefile        |   1 +
 xen/arch/x86/mm/hap/altp2m_hap.c    | 191 +++++++++++++++
 xen/arch/x86/mm/hap/guest_walk.c    |   4 +-
 xen/arch/x86/mm/hap/hap.c           |  30 ++-
 xen/arch/x86/mm/mm-locks.h          |   4 +
 xen/arch/x86/mm/p2m-ept.c           |  40 ++-
 xen/arch/x86/mm/p2m.c               | 472 +++++++++++++++++++++++++++++++++++-
 xen/arch/x86/mm/paging.c            |   5 -
 xen/common/mem_access.c             |   1 +
 xen/include/asm-arm/p2m.h           |   7 +
 xen/include/asm-x86/domain.h        |   7 +
 xen/include/asm-x86/hvm/altp2mhvm.h |  42 ++++
 xen/include/asm-x86/hvm/hvm.h       |  23 ++
 xen/include/asm-x86/hvm/vcpu.h      |   9 +
 xen/include/asm-x86/hvm/vmx/vmcs.h  |  16 ++
 xen/include/asm-x86/hvm/vmx/vmx.h   |  14 +-
 xen/include/asm-x86/msr-index.h     |   1 +
 xen/include/asm-x86/p2m.h           |  61 ++++-
 xen/include/public/hvm/hvm_op.h     |  68 ++++++
 xen/include/public/mem_event.h      |   9 +
 27 files changed, 1513 insertions(+), 24 deletions(-)
 create mode 100644 xen/arch/x86/hvm/altp2mhvm.c
 create mode 100644 xen/arch/x86/mm/hap/altp2m_hap.c
 create mode 100644 xen/include/asm-x86/hvm/altp2mhvm.h

-- 
1.9.1

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

end of thread, other threads:[~2015-03-26 18:00 UTC | newest]

Thread overview: 135+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-09 21:26 [PATCH 00/11] Alternate p2m: support multiple copies of host p2m Ed White
2015-01-09 21:26 ` [PATCH 01/11] VMX: VMFUNC and #VE definitions and detection Ed White
2015-01-12 13:06   ` Andrew Cooper
2015-01-13 18:50     ` Ed White
2015-01-14 14:38       ` Andrew Cooper
2015-01-09 21:26 ` [PATCH 02/11] VMX: implement suppress #VE Ed White
2015-01-12 16:43   ` Andrew Cooper
2015-01-12 17:45     ` Ed White
2015-01-13 18:36       ` Ed White
2015-01-15 16:25   ` Tim Deegan
2015-01-15 18:46     ` Ed White
2015-01-16 17:22       ` Tim Deegan
2015-03-25 17:30       ` Ed White
2015-03-26 10:15         ` Tim Deegan
2015-01-09 21:26 ` [PATCH 03/11] x86/HVM: Hardware alternate p2m support detection Ed White
2015-01-12 17:08   ` Andrew Cooper
2015-01-12 17:46     ` Ed White
2015-01-15 16:32   ` Tim Deegan
2015-01-09 21:26 ` [PATCH 04/11] x86/MM: Improve p2m type checks Ed White
2015-01-12 17:48   ` Andrew Cooper
2015-01-13 19:39     ` Ed White
2015-01-15 16:36   ` Tim Deegan
2015-01-09 21:26 ` [PATCH 05/11] x86/altp2m: basic data structures and support routines Ed White
2015-01-13 11:28   ` Andrew Cooper
2015-01-13 19:49     ` Ed White
2015-03-25 20:59       ` Ed White
2015-03-26 10:48         ` Tim Deegan
2015-03-26 18:00           ` Ed White
2015-01-15 16:48   ` Tim Deegan
2015-01-15 16:53     ` Jan Beulich
2015-01-15 18:49       ` Ed White
2015-01-16  7:37         ` Jan Beulich
2015-01-16 17:23         ` Tim Deegan
2015-01-09 21:26 ` [PATCH 06/11] VMX/altp2m: add code to support EPTP switching and #VE Ed White
2015-01-13 11:58   ` Andrew Cooper
2015-01-15 16:56   ` Tim Deegan
2015-01-15 18:55     ` Ed White
2015-01-16 17:50       ` Tim Deegan
2015-01-16 17:57         ` Ed White
2015-01-09 21:26 ` [PATCH 07/11] x86/altp2m: introduce p2m_ram_rw_ve type Ed White
2015-01-15 17:03   ` Tim Deegan
2015-01-15 20:38     ` Ed White
2015-01-16  8:20       ` Jan Beulich
2015-01-16 17:14         ` Ed White
2015-01-19  8:49           ` Jan Beulich
2015-01-19 19:53             ` Ed White
2015-01-16 17:52       ` Tim Deegan
2015-01-16 18:35         ` Ed White
2015-01-17  9:37           ` Tim Deegan
2015-01-09 21:26 ` [PATCH 08/11] x86/altp2m: add remaining support routines Ed White
2015-01-15 17:25   ` Tim Deegan
2015-01-15 20:57     ` Ed White
2015-01-16 18:04       ` Tim Deegan
2015-01-15 17:33   ` Tim Deegan
2015-01-15 21:00     ` Ed White
2015-01-16  8:24       ` Jan Beulich
2015-01-16 17:17         ` Ed White
2015-01-19  8:52           ` Jan Beulich
2015-01-16 18:09       ` Tim Deegan
2015-01-09 21:26 ` [PATCH 09/11] x86/altp2m: define and implement alternate p2m HVMOP types Ed White
2015-01-15 17:09   ` Tim Deegan
2015-01-15 20:43     ` Ed White
2015-01-16 17:57       ` Tim Deegan
2015-01-09 21:26 ` [PATCH 10/11] x86/altp2m: fix log-dirty handling Ed White
2015-01-15 17:20   ` Tim Deegan
2015-01-15 20:49     ` Ed White
2015-01-16 17:59       ` Tim Deegan
2015-01-09 21:26 ` [PATCH 11/11] x86/altp2m: alternate p2m memory events Ed White
2015-01-09 22:06 ` [PATCH 00/11] Alternate p2m: support multiple copies of host p2m Andrew Cooper
2015-01-09 22:21   ` Ed White
2015-01-09 22:41     ` Andrew Cooper
2015-01-09 23:04       ` Ed White
2015-01-12 10:00         ` Jan Beulich
2015-01-12 17:36           ` Ed White
2015-01-13  8:56             ` Jan Beulich
2015-01-13 11:28               ` Ian Jackson
2015-01-13 17:42               ` Ed White
2015-01-12 12:17 ` Ian Jackson
2015-01-12 17:39   ` Ed White
2015-01-12 17:43     ` Ian Jackson
2015-01-12 17:50       ` Ed White
2015-01-12 18:00         ` Ian Jackson
2015-01-12 18:31           ` Ed White
2015-01-13 10:21             ` Tamas K Lengyel
2015-01-13 18:25               ` Ed White
2015-01-13 11:16             ` Ian Jackson
2015-01-12 17:51       ` Andrew Cooper
2015-01-13 19:01 ` Andrew Cooper
2015-01-13 20:02   ` Ed White
2015-01-13 20:45     ` Andrew Cooper
2015-01-13 21:30       ` Ed White
2015-01-14  7:04         ` Jan Beulich
2015-01-14 10:31           ` Tamas K Lengyel
2015-01-14 11:09             ` Jan Beulich
2015-01-14 11:28               ` Tamas K Lengyel
2015-01-14 17:35                 ` Ed White
2015-01-15  8:16                   ` Jan Beulich
2015-01-15 17:28                     ` Ed White
2015-01-15 17:45                       ` Tim Deegan
2015-01-15 18:44                         ` Ed White
2015-03-04 23:06                           ` Tamas K Lengyel
2015-03-04 23:41                             ` Ed White
2015-03-05 10:51                               ` Tamas K Lengyel
2015-03-13 17:38                                 ` Ed White
2015-03-05 10:36                             ` Tim Deegan
2015-03-05 10:58                               ` Tamas K Lengyel
2015-03-05 11:13                                 ` Tim Deegan
2015-01-16  7:35                       ` Jan Beulich
2015-01-16 16:54                         ` Ed White
2015-01-15 10:39                   ` Tamas K Lengyel
2015-01-15 17:31                     ` Ed White
2015-01-16 10:43                       ` Tamas K Lengyel
2015-01-16 17:21                         ` Ed White
2015-03-05 13:45       ` Egger, Christoph
2015-01-14  7:01     ` Jan Beulich
2015-01-15 16:15 ` Tim Deegan
2015-01-15 18:23   ` Ed White
2015-01-16  8:12     ` Jan Beulich
2015-01-16 17:01       ` Ed White
2015-01-16 18:33     ` Tim Deegan
2015-01-16 20:32       ` Ed White
2015-01-17  9:34         ` Tim Deegan
2015-01-16 21:43       ` Ed White
2015-01-17  9:49         ` Tim Deegan
2015-01-19 19:35           ` Ed White
2015-01-17  9:31       ` Tim Deegan
2015-01-17 15:01         ` Andrew Cooper
2015-01-19 12:17           ` Tim Deegan
2015-01-19 21:54             ` Ed White
2015-01-20  8:47               ` Jan Beulich
2015-01-20 18:43                 ` Ed White
2015-01-22 15:42               ` Tim Deegan
2015-01-22 19:15                 ` Ed White
2015-03-25 17:41     ` Ed White
2015-03-26 10:40       ` Tim Deegan

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.