WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [Experimental patch] PCI emulation layer

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [Experimental patch] PCI emulation layer
From: Stefan Berger <stefanb@xxxxxxxxxx>
Date: Wed, 7 Sep 2005 17:13:42 -0400
Delivery-date: Wed, 07 Sep 2005 21:12:28 +0000
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/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
Hello!

  I have experimented a bit further with the emulation of the PCI layer. 
The attached patches allow to hide a PCI device from domain 0 by passing a 
'hide=' argument to the grub module line of the domain 0 kernel (i.e., 
module /vmlinuz-2.6.12-xen0 root=/dev/hda2 ro hide=02:09.0). For example 
to hide the second ethernet card in my system, I pass 'hide=02:09.0', 
where '2' indicates the bus number, '9' the device number and '0' the 
function. 'lspci' or 'cat /proc/pci' can tell which devices are available 
in a system. The hidden device becomes automatically visible to the first 
user domain that is started or to any subsequent domain that is started 
after the previously owning domain is killed (this is hardcoded for now). 
That PCI device's config space is not emulated, but its config space 
'shines through', meaning that all inb/w/l and outb/w/l from the kernel 
are first intercepted by Xen and then issued again in the PCI emulation 
code. The Host and ISA bridge PCI entries are emulated by the QEMU code, 
though (see below).

If you want to try the patches, apply them *after* one full XEN compile - 
the reason being that the Linux patch applies against the 
linux-2.6.12-xen0 directory. The .config file is my domU configuration 
file.

A 'cat /proc/pci' in the user domain shows the 2nd PCI card of the system:


PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 2).
  Bus  0, device   1, function  0:
    ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 
(rev 0).
  Bus  0, device   9, function  0:
    Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] 
(rev 8).
      IRQ 9.
      Master Capable.  Latency=66.  Min Gnt=8.Max Lat=56.
      Non-prefetchable 32 bit memory at 0xc0101000 [0xc0101fff].
      I/O at 0x2040 [0x207f].
      Non-prefetchable 32 bit memory at 0xc0200000 [0xc02fffff].

Although the device appears on bus '0', it is internally correctly handled 
as being on 'bus 2'.
One problem is certainly that the IRQ number is not correct for the device 
to function - it should be '21' on that machine. 


The positive side I think is that so far the changes to Linux are minimal. 
The hiding of PCI devices could be done in Xen if also domain 0 received 
an emulated PCI layer, which would completely eliminate changes to Linux - 
at least for making PCI devices visible.


Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx>


Attachment: .config
Description: Binary data

Attachment: pci_emu_xen.diff
Description: Binary data

Attachment: pci_hide.diff
Description: Binary data

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [Experimental patch] PCI emulation layer, Stefan Berger <=