This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Mini-OS interrupt handling (broken?)

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] Mini-OS interrupt handling (broken?)
From: "Dave Pacheco" <dap@xxxxxxxxxxxx>
Date: Thu, 17 May 2007 22:39:14 -0400
Cc: Joel Weinberger <joel@xxxxxxxxxxxx>
Delivery-date: Thu, 17 May 2007 19:37:42 -0700
Dkim-signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:mime-version:content-type:x-google-sender-auth; b=qZsVdfC8gvsWEoVM70VH2YeLMoQZvvdid3C7fd9ZVDHAQ4xj9OfgsbgSAHP4eNe2PoDdPKA4O235CFWmsx0lPIXs6+SWuMgJt1kSZ/GEOHs95st8M7B6qjqe5vvcboA/QqsSLW4Jy8OgWN2tJsjDEuiiZkOpquiD8TCxVN0Aw/U=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:mime-version:content-type:x-google-sender-auth; b=cX9iH/vadI9l90HDdo2ZNt9Be8RZ5QoGsJSHd/7OKOReP0tx5CL+AEBK2oIBjSZS7MVZsIJfjbIJyGWRAboWMIOX1+95G+9J2hSyPfmoxY+OF9A+qKNSsqj+wCz5UH1qW/QxRR0B2UDoOdjxoRGdlDvA+/wpnw5LF8HDHT2lVd4=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
We're writing the pagefault handler for our OS, which is based more and more loosely on the Mini-OS. As the handler exits, however, it raises a GPF. After staring at the assembly in x86_32.S for a while and playing a bit, I started wondering whether this code works. It's not inconceivable that it might not work because most of the interrupts never occur in practice, and the implementations halt the kernel anyway. Moreover, the GPF is raised even when I replace do_page_fault with an empty function (so I've obviously not changed the state of the system), which I don't think is proper behavior (but then, I'm not intimately familiar with the x86 spec).

The GPF occurs on line 138 of x86_32.S (same code in 3.0.3 and 3.0.4), where it appears to be testing whether more events need to be processed. (This is also sort of bizarre, because it's in the middle of hypervisor_callback, a function I didn't think actually got called in this code path, based on the comment at the top of trap.c in the Mini-OS.)

Any insight would be appreciated. Why might the GPF be raised? Does this code actually get run? Is it known to work?

Dave Pacheco
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] Mini-OS interrupt handling (broken?), Dave Pacheco <=