From mboxrd@z Thu Jan 1 00:00:00 1970 From: Trammell Hudson Subject: Re: Switching to user mode from domU kernel Date: Mon, 22 Oct 2007 18:00:22 -0400 Message-ID: <20071022220022.GD7806@osresearch.net> References: <20071022195215.GE18929@osresearch.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On Mon, Oct 22, 2007 at 09:12:05PM +0100, Keir Fraser wrote: > On 22/10/07 20:52, "Trammell Hudson" wrote: > > I've masked all events and the pending field in the shared_info > > structure is zero. There are no waiting characters in the incoming > > xen_console->in_prod array. > > Perhaps the page you think is shared_info isn't really? If Xen is calling > you back repeatedly then it thinks events are pending. That was it! I had misunderstood the comment in the start_info structure in xen.h: unsigned long shared_info; /* MACHINE address of shared info struct. */ xen_pfn_t store_mfn; /* MACHINE page number of shared page. */ I thought that the store_mfn was the machine page number for the shared info structure and had used that as my xen_shared_info pointer. Mapping the address pointed to by shared_info instead makes it work perfectly. Now my kernel transfers into the user code and faults as expected. Thank you! -- Trammell