----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/12098/#review24763 -----------------------------------------------------------
Can you rebase against latest master? How does this apply to Xenserver? - Chiradeep Vittal On July 2, 2013, 7:12 a.m., Pawit Pornkitprasan wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/12098/ > ----------------------------------------------------------- > > (Updated July 2, 2013, 7:12 a.m.) > > > Review request for cloudstack. > > > Repository: cloudstack-git > > > Description > ------- > > This patch adds PCI Passthrough support to CloudStack on the KVM Hypervisor > as previously mentioned on the mailing list > > PCI Passthrough may be useful for high-performance networking devices > or other hardware accelerators. This patch does not care what kind of > the device it is or attempt to configure it, leaving it to the guest. > > Because the devices available at each agent may be different, the > available devices for passthrough are configured at the agent > configuration file (/etc/cloudstack/agent/agent.properties). > Configuration is a comma separated list of available PCI devices and > its given name. > > pci.devices=28:00.1|10GE,28:00.2|10GE,28:00.3|10GE,28:00.4|10GE,28:00.5|10GE,28:00.6|10GE,28:00.7|10GE,28:01.0|10GE > > At agent startup, the list of PCI devices is parsed and sent together > with StartupRoutingCommand (in a new field, not in details). The > management server then stores it in a new table “op_host_pci_devices”. > If a device is added, removed, or renamed, the table is updated > accordingly. The agent also probes libvirt which devices are currently > in-use and send it with the command in attempt to synchronize any > potential difference between the database and the actual status. > > The “name” of the PCI device is what is used to assign a device. In a > compute offering, the user can specify the name of one or more PCI > devices (as a comma-separated list) and CloudStack will find a host > with the PCI device of the specified name available and assign it. > > A new manager, PciDeviceManager, is created to handle the > allocation of PCI device. The manager implements StateListener and > assigns PCI devices on state change to “starting” and also release the > devices VM stop. First fit allocator and first fit planner are also > modified to check for PCI device availability accordingly. > > For migration, intrusive migration is implementated. The PCI device is > detached before migration and attached it again at the target host. > This will interrupt whatever is using the device on the VM. However, > it may be desirable for networking devices where the VM can use a > bonding device to channel network traffic through the normal > virtualized network device while the PCI Passthrough device is down. > > > Diffs > ----- > > api/src/com/cloud/agent/api/to/PciDeviceTO.java PRE-CREATION > api/src/com/cloud/agent/api/to/VirtualMachineTO.java e6240ff > api/src/com/cloud/offering/ServiceOffering.java 45d5f38 > api/src/com/cloud/pci/PciDevice.java PRE-CREATION > api/src/org/apache/cloudstack/api/ApiConstants.java 8ac7c3f > > api/src/org/apache/cloudstack/api/command/admin/offering/CreateServiceOfferingCmd.java > decac29 > api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java > 288f76b > client/WEB-INF/classes/resources/messages.properties ad8d29d > client/tomcatconf/applicationContext.xml.in ac1f3e4 > core/src/com/cloud/agent/api/AttachPciDevicesCommand.java PRE-CREATION > core/src/com/cloud/agent/api/StartupRoutingCommand.java 5961ab0 > engine/schema/src/com/cloud/host/HostPciDeviceVO.java PRE-CREATION > engine/schema/src/com/cloud/host/HostVO.java c814b94 > engine/schema/src/com/cloud/host/dao/HostDaoImpl.java 810b973 > engine/schema/src/com/cloud/host/dao/HostPciDevicesDao.java PRE-CREATION > engine/schema/src/com/cloud/host/dao/HostPciDevicesDaoImpl.java > PRE-CREATION > engine/schema/src/com/cloud/migration/ServiceOffering21VO.java 7a49e63 > engine/schema/src/com/cloud/service/ServiceOfferingVO.java 9a262c5 > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java > 60cde8c > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtDomainXMLParser.java > a283768 > > plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java > 5120870 > server/src/com/cloud/agent/manager/allocator/impl/FirstFitAllocator.java > b6286aa > server/src/com/cloud/alert/AlertManagerImpl.java 9b7cd27 > server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java 6f6e277 > server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java 05ff5f3 > server/src/com/cloud/configuration/ConfigurationManager.java 98eae37 > server/src/com/cloud/configuration/ConfigurationManagerImpl.java 704162e > server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java 4ef2152 > server/src/com/cloud/hypervisor/HypervisorGuruBase.java 50bfb30 > server/src/com/cloud/pci/PciDeviceManager.java PRE-CREATION > server/src/com/cloud/pci/PciDeviceManagerImpl.java PRE-CREATION > server/src/com/cloud/resource/ResourceManagerImpl.java fe91cb3 > server/src/com/cloud/vm/UserVmManagerImpl.java 66103fb > server/test/com/cloud/vpc/MockConfigurationManagerImpl.java 95230a5 > setup/db/db/schema-410to420.sql 325924b > ui/dictionary.jsp 7809cdb > ui/scripts/configuration.js 7f0e1a5 > ui/scripts/docs.js 5aa352a > > Diff: https://reviews.apache.org/r/12098/diff/ > > > Testing > ------- > > Testing done with Mellanox ConnectX-2 NIC with SR-IOV on Ubuntu Raring. > > > Thanks, > > Pawit Pornkitprasan > >