[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] [PATCH 0/5] pcie io space multiplexing for bootable pass through HVM domain



Curious question. :-)

Is this very virtualization specific usage? How about same box used
in native environment, where how admin can judge which PCI-e slot
is allocated with I/O ports for bootable purpose?

Thanks,
Kevin

>From: Isaku Yamahata
>Sent: 2009年5月28日 11:47
>
>This patch series is for PCIe IO space multiplexing patch for commit.
>
>It is not uncommon that a big iron for server consolidation has
>many (e.g. > 16) PCIe slots. It will hold many domains, and
>the administrator wants them to boot from pass through devices.
>But currently up to 16 hvm domains can boot from pass through device.
>This patch series address it by multiplexing PCI IO space access.
>
>Usage:
>Add the following options to dom0 kernel command line
>
>  guestdev=<device path>+iomul
>  (append "+iomul")
>or
>  guestiomuldev=[<segment>:]<bus>:<dev>[,[<segment:><bus>:dev]][,...]
>  (In this case, don't forget to add related options. pciback.hide,
>   reassign_resources or guestdev.)
>
>Then dom0 Linux will allocate IO ports which are shared by 
>specified devices.
>And ioemu will automatically recognize IO-port-shared devices.
>The unspecified devices will be treated same as before.
>Note: Specifying unit to share IO port is PCI slot (device), 
>on the other
>      hand the unit of guestdev is function.
>      If you specify a function to guestdev with "+iomul", all the
>      functions of the given slot will share IO port even if 
>you specify
>      some of functions.
>
>
>This patch series addresses the issue by multiplexing IO space access.
>The patches are composed of
>       Linux part: backport: preliminary patch
>       Linux part: IO space ressignment code and multiplexing driver
>       Linux part: guestdev kernel parameter support.
>       Linux part: add kernel command line to reserve io/memory space
>       xen part:   udev script for the driver
>       ioemu part: make use of the PCIe io space multiplexing driver
>
>
>Details:
>PCI expansion ROM BIOS often uses IO port access to boot from 
>its device
>and Linux as dom0 exclusively assigns IO space to downstream 
>PCI bridges
>and the assignment unit of PCI bridge IO space is 4K. So the only up to
>16 PCIe device can be accessed via IO space within 64K IO ports.
>So on virtualized environment, it means only up to 16 guest domains
>can boot from such pass-through devices.
>
>The solution is to assign the same IO port region to pci devices
>under same PCIe switch and disable IO bit in command register.
>When accessing to one of IO port shared devices, the IO bit
>of the device is enabled, and then issues IOIO.
>
>
>Limitation:
>- PCI devices or root complex integrated endpoints aren't supported.
>- IO port of IO shared devices can't be accessed from dom0 Linux device
>  driver.
>  But those wouldn't be big issues because PCIe specification 
>discourages
>  the use of IO space and recommends that IO space should be used only
>  for bootable device with ROM code. OS device driver should 
>work without
>  IO space access.
>
>Test:
>I don't have a machine with complicated PCIe topology nor many 
>PCIe cards.
>- PCI hotplug was tested with Linux fakephp.
>- Only pci device (not bridge) hot plug/remove was tested.
>- I have tested with only single multifunction PCIe
>
>Changes from take2:
>- rebased
>- add kernel command line to reserve memory/io space for 
>unused pci slot
>
>change take 2:
>- support PCI hotplug
>- guestdev kernel paremeter.
>
>thanks 
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@xxxxxxxxxxxxxxxxxxx
>http://lists.xensource.com/xen-devel
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.