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] [PATCH] Don't disable I/O decoding on reassigning resource

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] Don't disable I/O decoding on reassigning resource
From: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx>
Date: Fri, 03 Apr 2009 13:33:03 +0900
Delivery-date: Thu, 02 Apr 2009 21:33:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
This patch does not disable I/O decoding on reassigning resource.

When I reserve UHCI for guest domain with "guestdev=" and
"reassign_resources" parameters, spurious interrupts occurred.
The reason is that UHCI is not reset by uhci_check_and_reset_hc
because I/O decoding is disabled. UHCI keeps asserting the interrupt
line. As a result spurious interrupts occur.

The patch does not disable I/O decoding. It disables only memory
decoding. So UHCI is reset and spurious interrupts do not occur.

Yuji Shimada

Signed-off-by: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx>

diff -r 67a7ffcc5067 drivers/pci/quirks.c
--- a/drivers/pci/quirks.c      Wed Apr 01 11:43:01 2009 +0100
+++ b/drivers/pci/quirks.c      Fri Apr 03 13:10:53 2009 +0900
@@ -26,15 +26,16 @@
- * This quirk function disables the device and releases resources
- * which is specified by kernel's boot parameter 'reassigndev'.
+ * This quirk function disables memory decoding and releases memory 
+ * resources which is specified by kernel's boot parameter 'reassigndev'.
  * Later on, kernel will assign page-aligned memory resource back
- * to that device.
+ * to the device.
 static void __devinit quirk_release_resources(struct pci_dev *dev)
        int i;
        struct resource *r;
+       u16 command;
        if (pci_is_reassigndev(dev)) {
                if (dev->hdr_type == PCI_HEADER_TYPE_NORMAL &&
@@ -43,9 +44,11 @@ static void __devinit quirk_release_reso
-                       "PCI: Disable device and release resources [%s].\n",
+                       "PCI: Disable memory decoding and release memory 
resources [%s].\n",
-               pci_disable_device(dev);
+               pci_read_config_word(dev, PCI_COMMAND, &command);
+               command &= ~PCI_COMMAND_MEMORY;
+               pci_write_config_word(dev, PCI_COMMAND, command);
                for (i=0; i < PCI_NUM_RESOURCES; i++) {
                        r = &dev->resource[i];

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH] Don't disable I/O decoding on reassigning resource, Yuji Shimada <=