mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
The PciController class lacks a configuration method to re-generate the
configuration of an existing domain. This is needed for a domain to be able to reboot and retain its PCI device configuration. This patch adds such support. Thanks to Mike Wright for reporting this problem and working with me to fix it. Signed-off-by: Ryan Wilson <hap9@epoch.ncsc.mil>
This commit is contained in:
1 parent
4886fcc749
commit
cf6a9db5e6
1 file changed
+25
@@ -31,6 +31,7 @@ import xen.lowlevel.xc
|
||||
|
||||
from xen.util.pci import PciDevice
|
||||
import resource
|
||||
import re
|
||||
|
||||
xc = xen.lowlevel.xc.xc()
|
||||
|
||||
@@ -106,6 +107,30 @@ class PciController(DevController):
|
||||
|
||||
return (0, back, {})
|
||||
|
||||
def configuration(self, devid):
|
||||
"""@see DevController.configuration"""
|
||||
|
||||
result = DevController.configuration(self, devid)
|
||||
|
||||
(num_devs) = self.readBackend(devid, 'num_devs')
|
||||
|
||||
for i in range(int(num_devs)):
|
||||
(dev_config) = self.readBackend(devid, 'dev-%d'%(i))
|
||||
|
||||
pci_match = re.match(r"((?P<domain>[0-9a-fA-F]{1,4})[:,])?" + \
|
||||
r"(?P<bus>[0-9a-fA-F]{1,2})[:,]" + \
|
||||
r"(?P<slot>[0-9a-fA-F]{1,2})[.,]" + \
|
||||
r"(?P<func>[0-9a-fA-F]{1,2})", dev_config)
|
||||
if pci_match!=None:
|
||||
pci_dev_info = pci_match.groupdict('0')
|
||||
result.append( ['dev', \
|
||||
['domain', '0x'+pci_dev_info['domain']], \
|
||||
['bus', '0x'+pci_dev_info['bus']], \
|
||||
['slot', '0x'+pci_dev_info['slot']], \
|
||||
['func', '0x'+pci_dev_info['func']]])
|
||||
|
||||
return result
|
||||
|
||||
def setupDevice(self, domain, bus, slot, func):
|
||||
""" Attach I/O resources for device to frontend domain
|
||||
"""
|
||||
|
||||