# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1236365921 0
# Node ID ec671455fb05ca6714deeaca78aacb1026ca4752
# Parent 6c7ae9c859f5705b50580d0d359d263599dff66d
tool: make management of PCI D-states by guest optional
D3hot state in some PCI devices causes the failure of domain
creation/destruction.
The default is "pci_power_mgmt=3D0" which disables the guest OS from
managing D-states because it would be better to avoid the trouble than
advantage of low power consumption.
Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
---
tools/examples/xmexample.hvm | 9 +++++++++
tools/python/xen/xend/XendConfig.py | 1 +
tools/python/xen/xend/server/pciif.py | 2 ++
tools/python/xen/xm/create.py | 14 ++++++++++----
tools/python/xen/xm/xenapi_create.py | 1 +
5 files changed, 23 insertions(+), 4 deletions(-)
diff -r 6c7ae9c859f5 -r ec671455fb05 tools/examples/xmexample.hvm
--- a/tools/examples/xmexample.hvm Fri Mar 06 18:56:28 2009 +0000
+++ b/tools/examples/xmexample.hvm Fri Mar 06 18:58:41 2009 +0000
@@ -308,6 +308,8 @@ serial='pty'
# available options are:
# - msitranslate=0|1
# per-device overriden of pci_msitranslate, see below
+# - power_mgmt=0|1
+# per-device overriden of pci_power_mgmt, see below
#
#pci=[ '07:00.0', '07:00.1' ]
@@ -321,6 +323,13 @@ serial='pty'
# turned off.
#
#pci_msitranslate=1
+
+# PCI Power Management:
+#
+# If it's set, the guest OS will be able to program D0-D3hot states of the
+# PCI device for the purpose of low power consumption.
+#
+#pci_power_mgmt=0
#-----------------------------------------------------------------------------
# Configure PVSCSI devices:
diff -r 6c7ae9c859f5 -r ec671455fb05 tools/python/xen/xend/XendConfig.py
--- a/tools/python/xen/xend/XendConfig.py Fri Mar 06 18:56:28 2009 +0000
+++ b/tools/python/xen/xend/XendConfig.py Fri Mar 06 18:58:41 2009 +0000
@@ -169,6 +169,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
'hap': int,
'xen_extended_power_mgmt': int,
'pci_msitranslate': int,
+ 'pci_power_mgmt': int,
}
# Xen API console 'other_config' keys.
diff -r 6c7ae9c859f5 -r ec671455fb05 tools/python/xen/xend/server/pciif.py
--- a/tools/python/xen/xend/server/pciif.py Fri Mar 06 18:56:28 2009 +0000
+++ b/tools/python/xen/xend/server/pciif.py Fri Mar 06 18:58:41 2009 +0000
@@ -97,6 +97,8 @@ class PciController(DevController):
back['uuid'] = config.get('uuid','')
if 'pci_msitranslate' in self.vm.info['platform']:
back['msitranslate']=str(self.vm.info['platform']['pci_msitranslate'])
+ if 'pci_power_mgmt' in self.vm.info['platform']:
+ back['power_mgmt']=str(self.vm.info['platform']['pci_power_mgmt'])
return (0, back, {})
diff -r 6c7ae9c859f5 -r ec671455fb05 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py Fri Mar 06 18:56:28 2009 +0000
+++ b/tools/python/xen/xm/create.py Fri Mar 06 18:58:41 2009 +0000
@@ -322,14 +322,16 @@ gopts.var('disk', val='phy:DEV,VDEV,MODE
backend driver domain to use for the disk.
The option may be repeated to add more than one disk.""")
-gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1]',
+gopts.var('pci', val='BUS:DEV.FUNC[,msitranslate=0|1][,power_mgmt=0|1]',
fn=append_value, default=[],
use="""Add a PCI device to a domain, using given params (in hex).
For example 'pci=c0:02.1'.
If msitranslate is set, MSI-INTx translation is enabled if possible.
Guest that doesn't support MSI will get IO-APIC type IRQs
translated from physical MSI, HVM only. Default is 1.
- The option may be repeated to add more than one pci device.""")
+ The option may be repeated to add more than one pci device.
+ If power_mgmt is set, the guest OS will be able to program the power
+ states D0-D3hot of the device, HVM only. Default=0.""")
gopts.var('vscsi', val='PDEV,VDEV[,DOM]',
fn=append_value, default=[],
@@ -604,6 +606,10 @@ gopts.var('pci_msitranslate', val='TRANS
fn=set_int, default=1,
use="""Global PCI MSI-INTx translation flag (0=disable;
1=enable.""")
+
+gopts.var('pci_power_mgmt', val='POWERMGMT',
+ fn=set_int, default=0,
+ use="""Global PCI Power Management flag (0=disable;1=enable).""")
def err(msg):
"""Print an error to stderr and exit.
@@ -691,7 +697,7 @@ def configure_pci(config_devs, vals):
d = comma_sep_kv_to_dict(opts)
def f(k):
- if k not in ['msitranslate']:
+ if k not in ['msitranslate', 'power_mgmt']:
err('Invalid pci option: ' + k)
config_pci_opts.append([k, d[k]])
@@ -913,7 +919,7 @@ def configure_hvm(config_image, vals):
'acpi', 'apic', 'usb', 'usbdevice', 'keymap', 'pci', 'hpet',
'guest_os_type', 'hap', 'opengl', 'cpuid', 'cpuid_check',
'viridian', 'xen_extended_power_mgmt', 'pci_msitranslate',
- 'vpt_align' ]
+ 'vpt_align', 'pci_power_mgmt' ]
for a in args:
if a in vals.__dict__ and vals.__dict__[a] is not None:
diff -r 6c7ae9c859f5 -r ec671455fb05 tools/python/xen/xm/xenapi_create.py
--- a/tools/python/xen/xm/xenapi_create.py Fri Mar 06 18:56:28 2009 +0000
+++ b/tools/python/xen/xm/xenapi_create.py Fri Mar 06 18:58:41 2009 +0000
@@ -1047,6 +1047,7 @@ class sxp2xml:
'guest_os_type',
'hap',
'pci_msitranslate',
+ 'pci_power_mgmt',
]
platform_configs = []
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|