public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Eli Collins <ecollins@vmware.com>
To: Chris Wright <chrisw@sous-sol.org>
Cc: Xen-devel <xen-devel@lists.xensource.com>,
	Wim Coekaerts <wim.coekaerts@oracle.com>,
	Christopher Li <chrisl@vmware.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Virtualization Mailing List <virtualization@lists.osdl.org>,
	Linus Torvalds <torvalds@osdl.org>, Anne Holler <anne@vmware.com>,
	Jan Beulich <jbeulich@novell.com>,
	Jyothy Reddy <jreddy@vmware.com>, Kip Macy <kmacy@fsmware.com>,
	Ky Srinivasan <ksrinivasan@novell.com>,
	Leendert van Doorn <leendert@watson.ibm.com>
Subject: Re: [RFC, PATCH 1/24] i386 Vmi documentation
Date: Wed, 15 Mar 2006 19:40:23 -0800	[thread overview]
Message-ID: <4418DE27.2060804@vmware.com> (raw)
In-Reply-To: <20060316011601.GF15997@sorel.sous-sol.org>

Chris Wright wrote:
> * Chris Wright (chrisw@sous-sol.org) wrote:

<snip>

> - HYPERVISOR_event_channel_op(EVTCHNOP_send, ...)
> 
> Send an event to the remote end of the channel whose local endpoint is <port>.
> 
> [ ]

VMI_APICWrite is used to send IPIs. In general all the event channel 
calls (modulo referencing other guests) are not needed when using a 
virtual APIC. Using calls rather than a struct shared between the 
hypervisor and the guest is a cleaner interface (no messy changes to 
entry.S) and easier to maintain and version. This is true of 
shared_info_t in general, not just the event channel.

> 
> - HYPERVISOR_vcpu_op(VCPUOP_get_runstate_info, ...)
> 
> Return information about the state and running time of a VCPU.
> 
> [ ]

See the VMI timer interface. Note that the runstate interface above was 
added recently after Dan Hecht pointed out the need for properly 
paravirtualizing time (reporting stolen time correctly), the Xen 3.0.0/1 
interfaces do not include runstate info.

http://lists.xensource.com/archives/html/xen-devel/2006-02/msg00836.html

It's too bad that Xen's vcpu_time_info_t presents the guest with the 
variables used to calculate time rather than time itself; requiring that 
the guest calculate time complicates the Linux patches and constrains 
future changes to time calculation in the hypervisor.

> - HYPERVISOR_set_trap_table(struct trap_info *table)
> 
> Load the interrupt descriptor table.
> 
> The trap table is in a format which allows easier access from C code.
> It's easier to build and easier to use in software trap despatch code.
> It can easily be converted into a hardware interrupt descriptor table.
> 
> [ VMI_SetIDT, VMI_WriteIDTEntry ]

Passing in trap_info structs (like much of the Xen interface) requires 
copying to/from the guest when it's not necessary. To handle VT/Pacifica 
Xen needs to understand the hardware table format anyway, so it's 
simpler to just use the hardware format.

> - HYPERVISOR_set_timer_op(...)
> 
> Set timeout when to trigger timer interrupt even if guest is blocked.

See VMI_SetAlarm and VMI_CancelAlarm.

> - HYPERVISOR_memory_op(XENMEM_increase_reservation, ...)
> 
> Increase number of frames
> 
> [ ]
> 
> - HYPERVISOR_memory_op(XENMEM_decrease_reservation, ...)
> 
> Drop frames from reservation
> 
> [ ]

Ballooning for VMI guests is currently handled by a driver which uses a 
special port in the virtual IO space.

The Xen increase reservation interface would be nicer if it took the 
pfns that the guest gave up as an argument (better for this logic to be 
in the balloon driver than the hypervisor). Relying on the hypervisor's 
allocator to get contiguous pages is also gross. From what I can tell 
extent_order is always 0 in XenLinux, an interface that just took a list 
of pages would be simpler.

> - HYPERVISOR_xen_version(XENVER_compile_info)
> 
> Return hypervisor compile information.

This kind of information seems gratuitous.

> - HYPERVISOR_set_callbacks
> 
> Set entry points for upcalls to the guest from the hypervisor.
> Used for event delivery and fatal condition notification.

In the VMI "events" are just interrupts, delivered via the virtual IDT.

> - HYPERVISOR_nmi_op(XENNMI_register_callback)
> 
> Register NMI callback for this (calling) VCPU. Currently this only makes
> sense for domain 0, vcpu 0. All other callers will be returned EINVAL.

Like the event callback, this could be integrated into the virtual IDT.

  reply	other threads:[~2006-03-16  3:40 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200603131759.k2DHxeep005627@zach-dev.vmware.com>
     [not found] ` <20060313224902.GD12807@sorel.sous-sol.org>
2006-03-14  0:00   ` [RFC, PATCH 1/24] i386 Vmi documentation Zachary Amsden
2006-03-14 21:27     ` Chris Wright
     [not found]       ` <441743BD.1070108@vmware.com>
2006-03-15  2:57         ` Chris Wright
2006-03-15  5:44           ` Zachary Amsden
2006-03-15 22:56           ` Daniel Arai
2006-03-16  1:16       ` Chris Wright
2006-03-16  3:40         ` Eli Collins [this message]
2006-03-14  4:11 ` Rik van Riel
2006-03-22 20:05 ` Andi Kleen
2006-03-22 21:34   ` Chris Wright
2006-03-22 21:13     ` Andi Kleen
2006-03-22 21:57       ` Chris Wright
2006-03-23  0:06       ` Zachary Amsden
2006-03-22 21:39   ` [RFC, PATCH 1/24] i386 Vmi documentation II Andi Kleen
2006-03-22 22:43     ` Daniel Arai
2006-03-22 22:45     ` Zachary Amsden
2006-03-22 22:38       ` Andi Kleen
2006-03-22 23:54         ` Zachary Amsden
2006-03-22 23:37           ` Andi Kleen
2006-03-22 22:04   ` [RFC, PATCH 1/24] i386 Vmi documentation Zachary Amsden
2006-03-22 21:58     ` Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4418DE27.2060804@vmware.com \
    --to=ecollins@vmware.com \
    --cc=anne@vmware.com \
    --cc=chrisl@vmware.com \
    --cc=chrisw@sous-sol.org \
    --cc=jbeulich@novell.com \
    --cc=jreddy@vmware.com \
    --cc=kmacy@fsmware.com \
    --cc=ksrinivasan@novell.com \
    --cc=leendert@watson.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@osdl.org \
    --cc=virtualization@lists.osdl.org \
    --cc=wim.coekaerts@oracle.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox