kern/163812: commit references a PR
dfilter service
dfilter at FreeBSD.ORG
Fri Feb 24 00:50:17 UTC 2012
The following reply was made to PR kern/163812; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: kern/163812: commit references a PR
Date: Fri, 24 Feb 2012 00:49:31 +0000 (UTC)
Author: marius
Date: Fri Feb 24 00:49:18 2012
New Revision: 232094
URL: http://svn.freebsd.org/changeset/base/232094
Log:
MFC: r231621
- As it turns out, MSI-X is broken for at least LSI SAS1068E when passed
through by VMware so blacklist their PCI-PCI bridge for MSI/MSI-X here.
Note that besides currently there not being a quirk type that disables
MSI-X only and there's no evidence that MSI doesn't work with the VMware
pass-through, it's really questionable whether MSI generally works in
that setup as VMware only mention three know working devices [1, p. 4].
Also not that this quirk entry currently doesn't affect the devices
emulated by VMware in any way as these don't claim support MSI/MSI-X to
begin with. [2]
While at it, make the PCI quirk table const and static.
- Remove some duplicated empty lines.
- Use DEVMETHOD_END.
PR: 163812, http://forums.freebsd.org/showthread.php?t=27899 [2]
Reviewed by: jhb
[1]: http://www.vmware.com/pdf/vsp_4_vmdirectpath_host.pdf
Modified:
stable/7/sys/dev/pci/pci.c
Directory Properties:
stable/7/sys/ (props changed)
stable/7/sys/cddl/contrib/opensolaris/ (props changed)
stable/7/sys/contrib/dev/acpica/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
Modified: stable/7/sys/dev/pci/pci.c
==============================================================================
--- stable/7/sys/dev/pci/pci.c Fri Feb 24 00:48:27 2012 (r232093)
+++ stable/7/sys/dev/pci/pci.c Fri Feb 24 00:49:18 2012 (r232094)
@@ -160,7 +160,7 @@ static device_method_t pci_methods[] = {
DEVMETHOD(pci_msi_count, pci_msi_count_method),
DEVMETHOD(pci_msix_count, pci_msix_count_method),
- { 0, 0 }
+ DEVMETHOD_END
};
DEFINE_CLASS_0(pci, pci_driver, pci_methods, 0);
@@ -172,7 +172,6 @@ MODULE_VERSION(pci, 1);
static char *pci_vendordata;
static size_t pci_vendordata_size;
-
struct pci_quirk {
uint32_t devid; /* Vendor/device of the card */
int type;
@@ -183,7 +182,7 @@ struct pci_quirk {
int arg2;
};
-struct pci_quirk pci_quirks[] = {
+static const struct pci_quirk const pci_quirks[] = {
/* The Intel 82371AB and 82443MX has a map register at offset 0x90. */
{ 0x71138086, PCI_QUIRK_MAP_REG, 0x90, 0 },
{ 0x719b8086, PCI_QUIRK_MAP_REG, 0x90, 0 },
@@ -216,6 +215,12 @@ struct pci_quirk pci_quirks[] = {
{ 0x74501022, PCI_QUIRK_DISABLE_MSI, 0, 0 },
/*
+ * MSI-X doesn't work with at least LSI SAS1068E passed through by
+ * VMware.
+ */
+ { 0x079015ad, PCI_QUIRK_DISABLE_MSI, 0, 0 },
+
+ /*
* Some virtualization environments emulate an older chipset
* but support MSI just fine. QEMU uses the Intel 82440.
*/
@@ -1767,7 +1772,7 @@ pci_remap_msi_irq(device_t dev, u_int ir
int
pci_msi_device_blacklisted(device_t dev)
{
- struct pci_quirk *q;
+ const struct pci_quirk *q;
if (!pci_honor_msi_blacklist)
return (0);
@@ -1787,7 +1792,7 @@ pci_msi_device_blacklisted(device_t dev)
static int
pci_msi_vm_chipset(device_t dev)
{
- struct pci_quirk *q;
+ const struct pci_quirk *q;
for (q = &pci_quirks[0]; q->devid; q++) {
if (q->devid == pci_get_devid(dev) &&
@@ -2627,7 +2632,7 @@ pci_add_resources(device_t bus, device_t
struct pci_devinfo *dinfo = device_get_ivars(dev);
pcicfgregs *cfg = &dinfo->cfg;
struct resource_list *rl = &dinfo->resources;
- struct pci_quirk *q;
+ const struct pci_quirk *q;
int i;
/* ATA devices needs special map treatment */
@@ -3423,7 +3428,6 @@ pci_write_ivar(device_t dev, device_t ch
}
}
-
#include "opt_ddb.h"
#ifdef DDB
#include <ddb/ddb.h>
@@ -3564,7 +3568,6 @@ out:;
return (res);
}
-
struct resource *
pci_alloc_resource(device_t dev, device_t child, int type, int *rid,
u_long start, u_long end, u_long count, u_int flags)
_______________________________________________
svn-src-all at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"
More information about the freebsd-scsi
mailing list