Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Feb 2012 00:50:17 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-scsi@FreeBSD.org
Subject:   Re: kern/163812: commit references a PR
Message-ID:  <201202240050.q1O0oHus075504@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/163812; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@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@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202240050.q1O0oHus075504>