xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] Re-enable LTR/OBFF when device is owned by pciback
@ 2012-05-04  7:49 Hao, Xudong
  2012-05-04  8:07 ` Jan Beulich
  2012-05-04 13:20 ` Konrad Rzeszutek Wilk
  0 siblings, 2 replies; 18+ messages in thread
From: Hao, Xudong @ 2012-05-04  7:49 UTC (permalink / raw)
  To: konrad.wilk@oracle.com, xen-devel@lists.xensource.com

When PCIE device which has LTR/OBFF capabilities is owned by pciback, LTR/OBFF feature may be disabled. This patch re-enable LTR and OBFF, so that guest with device assigned can be benefitted.

Changes from v1:
- put the variable definition at the start of function
- add error log report

Signed-off-by: Xudong Hao <xudong.hao@intel.com>

diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index 097e536..74fbf23 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -313,6 +313,10 @@ static int __devinit pcistub_init_device(struct pci_dev *dev)
 	struct xen_pcibk_dev_data *dev_data;
 	int err = 0;
 
+	/* set default value */
+	unsigned long type = PCI_EXP_OBFF_SIGNAL_ALWAYS;
+	int snoop_lat_ns = 1024, nosnoop_lat_ns = 1024;
+
 	dev_dbg(&dev->dev, "initializing...\n");
 
 	/* The PCI backend is not intended to be a module (or to work with
@@ -369,6 +373,28 @@ static int __devinit pcistub_init_device(struct pci_dev *dev)
 	dev_dbg(&dev->dev, "reset device\n");
 	xen_pcibk_reset_device(dev);
 
+	/* Enable LTR and OBFF before do device assignment */
+	/* LTR(Latency tolerance reporting) allows devices to send
+	 * messages to the root complex indicating their latency tolerance
+	 * for snooped & unsnooped memory transactions.
+	 */
+	err = pci_enable_ltr(dev);
+	if (err)
+		dev_err(&dev->dev, "Counld not enalbe LTR for device!\n");
+
+	err = pci_set_ltr(dev, snoop_lat_ns, nosnoop_lat_ns);
+	if (err)
+		dev_err(&dev->dev, "Set LTR latency values failed.\n");
+
+	/* OBFF (optimized buffer flush/fill), where supported, can help
+	 * improve energy efficiency by giving devices information about
+	 * when interrupts and other activity will have a reduced power
+	 * impact.
+	 */
+	err = pci_enable_obff(dev, type);
+	if (err)
+		dev_err(&dev->dev, "Counld not enalbe OBFF for device!\n");
+
 	dev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED;
 	return 0;

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2012-05-25  3:42 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-04  7:49 [PATCH v2] Re-enable LTR/OBFF when device is owned by pciback Hao, Xudong
2012-05-04  8:07 ` Jan Beulich
2012-05-06  8:10   ` Hao, Xudong
2012-05-07  7:24     ` Jan Beulich
2012-05-07  7:39       ` Hao, Xudong
2012-05-04 13:20 ` Konrad Rzeszutek Wilk
2012-05-06  7:35   ` Hao, Xudong
2012-05-07 13:54     ` Konrad Rzeszutek Wilk
2012-05-08  9:05       ` Hao, Xudong
2012-05-08  9:41         ` Jan Beulich
2012-05-09  6:25           ` Hao, Xudong
2012-05-22  1:57             ` Zhang, Xiantao
2012-05-22  7:21               ` Jan Beulich
2012-05-23 14:45                 ` Zhang, Xiantao
2012-05-23 15:07                   ` Jan Beulich
2012-05-25  3:42                     ` Zhang, Xiantao
2012-05-22 20:34               ` Konrad Rzeszutek Wilk
2012-05-23 14:50                 ` Zhang, Xiantao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).