Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 Nov 2015 11:57:26 +0000
From:      "jpa-semihalf.com (Jakub Palider)" <phabric-noreply@FreeBSD.org>
To:        freebsd-arm@freebsd.org
Subject:   [Differential] [Request, 35 lines] D4301: Disable MSI-x for AHCI on Alpine plaftrorm
Message-ID:  <differential-rev-PHID-DREV-boik72iv2f64smtes2dn-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_ceffba8be4d83b3b2c582c2b899af6b6
Content-Type: text/plain; charset = "utf-8"
Content-Transfer-Encoding: 8bit

jpa-semihalf.com created this revision.
jpa-semihalf.com added reviewers: imp, andrew, zbb.
jpa-semihalf.com added a subscriber: freebsd-arm-list.

REVISION SUMMARY
  Changes introduced to AHCI code adding support for MSI-x caused interrupt storm on Alpine boards. This is unintended behaviour so added quirk to omit this functionality. This is a small and non-intrusive patch so I hope no problems will arise, anyway, have a look at this, please.

REVISION DETAIL
  https://reviews.freebsd.org/D4301

AFFECTED FILES
  sys/dev/ahci/ahci.h
  sys/dev/ahci/ahci_pci.c

CHANGE DETAILS
  diff --git a/sys/dev/ahci/ahci_pci.c b/sys/dev/ahci/ahci_pci.c
  --- a/sys/dev/ahci/ahci_pci.c
  +++ b/sys/dev/ahci/ahci_pci.c
  @@ -293,7 +293,7 @@
   	{0x11851039, 0x00, "SiS 968",		0},
   	{0x01861039, 0x00, "SiS 968",		0},
   	{0xa01c177d, 0x00, "ThunderX",		AHCI_Q_ABAR0|AHCI_Q_1MSI},
  -	{0x00311c36, 0x00, "Annapurna",		AHCI_Q_FORCE_PI|AHCI_Q_RESTORE_CAP},
  +	{0x00311c36, 0x00, "Annapurna",		AHCI_Q_FORCE_PI|AHCI_Q_RESTORE_CAP|AHCI_Q_NOMSIX},
   	{0x00000000, 0x00, NULL,		0}
   };
   
  @@ -437,6 +437,9 @@
   	    &ctlr->r_rid, RF_ACTIVE)))
   		return ENXIO;
   
  +	if (ctlr->quirks & AHCI_Q_NOMSIX)
  +		msix_count = 0;
  +
   	/* Read MSI-x BAR IDs if supported */
   	if (msix_count > 0) {
   		error = ahci_pci_read_msix_bars(dev, &table_bar, &pba_bar);
  diff --git a/sys/dev/ahci/ahci.h b/sys/dev/ahci/ahci.h
  --- a/sys/dev/ahci/ahci.h
  +++ b/sys/dev/ahci/ahci.h
  @@ -576,13 +576,14 @@
   #define AHCI_Q_NOCOUNT		0x00000400
   #define AHCI_Q_ALTSIG		0x00000800
   #define AHCI_Q_NOMSI		0x00001000
  -#define AHCI_Q_ATI_PMP_BUG	0x00002000
  -#define AHCI_Q_MAXIO_64K	0x00004000
  -#define AHCI_Q_SATA1_UNIT0	0x00008000	/* need better method for this */
  -#define AHCI_Q_ABAR0		0x00010000
  -#define AHCI_Q_1MSI		0x00020000
  -#define AHCI_Q_FORCE_PI		0x00040000
  -#define AHCI_Q_RESTORE_CAP	0x00080000
  +#define AHCI_Q_NOMSIX		0x00002000
  +#define AHCI_Q_ATI_PMP_BUG	0x00004000
  +#define AHCI_Q_MAXIO_64K	0x00008000
  +#define AHCI_Q_SATA1_UNIT0	0x00010000	/* need better method for this */
  +#define AHCI_Q_ABAR0		0x00020000
  +#define AHCI_Q_1MSI		0x00040000
  +#define AHCI_Q_FORCE_PI		0x00080000
  +#define AHCI_Q_RESTORE_CAP	0x00100000
   
   #define AHCI_Q_BIT_STRING	\
   	"\020"			\
  @@ -599,13 +600,14 @@
   	"\013NOCOUNT"		\
   	"\014ALTSIG"		\
   	"\015NOMSI"		\
  -	"\016ATI_PMP_BUG"	\
  -	"\017MAXIO_64K"		\
  -	"\020SATA1_UNIT0"	\
  -	"\021ABAR0"		\
  -	"\0221MSI"              \
  -	"\023FORCE_PI"          \
  -	"\024RESTORE_CAP"
  +	"\016NOMSIX"		\
  +	"\017ATI_PMP_BUG"	\
  +	"\018MAXIO_64K"		\
  +	"\019SATA1_UNIT0"	\
  +	"\020ABAR0"		\
  +	"\0211MSI"              \
  +	"\022FORCE_PI"          \
  +	"\023RESTORE_CAP"
   
   int ahci_attach(device_t dev);
   int ahci_detach(device_t dev);

EMAIL PREFERENCES
  https://reviews.freebsd.org/settings/panel/emailpreferences/

To: jpa-semihalf.com, imp, andrew, zbb
Cc: freebsd-arm-list

--b1_ceffba8be4d83b3b2c582c2b899af6b6
Content-Type: text/x-patch; charset=utf-8; name="D4301.10542.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D4301.10542.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvYWhjaS9haGNpX3BjaS5jIGIvc3lzL2Rldi9haGNpL2FoY2lf
cGNpLmMKLS0tIGEvc3lzL2Rldi9haGNpL2FoY2lfcGNpLmMKKysrIGIvc3lzL2Rldi9haGNpL2Fo
Y2lfcGNpLmMKQEAgLTI5Myw3ICsyOTMsNyBAQAogCXsweDExODUxMDM5LCAweDAwLCAiU2lTIDk2
OCIsCQkwfSwKIAl7MHgwMTg2MTAzOSwgMHgwMCwgIlNpUyA5NjgiLAkJMH0sCiAJezB4YTAxYzE3
N2QsIDB4MDAsICJUaHVuZGVyWCIsCQlBSENJX1FfQUJBUjB8QUhDSV9RXzFNU0l9LAotCXsweDAw
MzExYzM2LCAweDAwLCAiQW5uYXB1cm5hIiwJCUFIQ0lfUV9GT1JDRV9QSXxBSENJX1FfUkVTVE9S
RV9DQVB9LAorCXsweDAwMzExYzM2LCAweDAwLCAiQW5uYXB1cm5hIiwJCUFIQ0lfUV9GT1JDRV9Q
SXxBSENJX1FfUkVTVE9SRV9DQVB8QUhDSV9RX05PTVNJWH0sCiAJezB4MDAwMDAwMDAsIDB4MDAs
IE5VTEwsCQkwfQogfTsKIApAQCAtNDM3LDYgKzQzNyw5IEBACiAJICAgICZjdGxyLT5yX3JpZCwg
UkZfQUNUSVZFKSkpCiAJCXJldHVybiBFTlhJTzsKIAorCWlmIChjdGxyLT5xdWlya3MgJiBBSENJ
X1FfTk9NU0lYKQorCQltc2l4X2NvdW50ID0gMDsKKwogCS8qIFJlYWQgTVNJLXggQkFSIElEcyBp
ZiBzdXBwb3J0ZWQgKi8KIAlpZiAobXNpeF9jb3VudCA+IDApIHsKIAkJZXJyb3IgPSBhaGNpX3Bj
aV9yZWFkX21zaXhfYmFycyhkZXYsICZ0YWJsZV9iYXIsICZwYmFfYmFyKTsKZGlmZiAtLWdpdCBh
L3N5cy9kZXYvYWhjaS9haGNpLmggYi9zeXMvZGV2L2FoY2kvYWhjaS5oCi0tLSBhL3N5cy9kZXYv
YWhjaS9haGNpLmgKKysrIGIvc3lzL2Rldi9haGNpL2FoY2kuaApAQCAtNTc2LDEzICs1NzYsMTQg
QEAKICNkZWZpbmUgQUhDSV9RX05PQ09VTlQJCTB4MDAwMDA0MDAKICNkZWZpbmUgQUhDSV9RX0FM
VFNJRwkJMHgwMDAwMDgwMAogI2RlZmluZSBBSENJX1FfTk9NU0kJCTB4MDAwMDEwMDAKLSNkZWZp
bmUgQUhDSV9RX0FUSV9QTVBfQlVHCTB4MDAwMDIwMDAKLSNkZWZpbmUgQUhDSV9RX01BWElPXzY0
SwkweDAwMDA0MDAwCi0jZGVmaW5lIEFIQ0lfUV9TQVRBMV9VTklUMAkweDAwMDA4MDAwCS8qIG5l
ZWQgYmV0dGVyIG1ldGhvZCBmb3IgdGhpcyAqLwotI2RlZmluZSBBSENJX1FfQUJBUjAJCTB4MDAw
MTAwMDAKLSNkZWZpbmUgQUhDSV9RXzFNU0kJCTB4MDAwMjAwMDAKLSNkZWZpbmUgQUhDSV9RX0ZP
UkNFX1BJCQkweDAwMDQwMDAwCi0jZGVmaW5lIEFIQ0lfUV9SRVNUT1JFX0NBUAkweDAwMDgwMDAw
CisjZGVmaW5lIEFIQ0lfUV9OT01TSVgJCTB4MDAwMDIwMDAKKyNkZWZpbmUgQUhDSV9RX0FUSV9Q
TVBfQlVHCTB4MDAwMDQwMDAKKyNkZWZpbmUgQUhDSV9RX01BWElPXzY0SwkweDAwMDA4MDAwCisj
ZGVmaW5lIEFIQ0lfUV9TQVRBMV9VTklUMAkweDAwMDEwMDAwCS8qIG5lZWQgYmV0dGVyIG1ldGhv
ZCBmb3IgdGhpcyAqLworI2RlZmluZSBBSENJX1FfQUJBUjAJCTB4MDAwMjAwMDAKKyNkZWZpbmUg
QUhDSV9RXzFNU0kJCTB4MDAwNDAwMDAKKyNkZWZpbmUgQUhDSV9RX0ZPUkNFX1BJCQkweDAwMDgw
MDAwCisjZGVmaW5lIEFIQ0lfUV9SRVNUT1JFX0NBUAkweDAwMTAwMDAwCiAKICNkZWZpbmUgQUhD
SV9RX0JJVF9TVFJJTkcJXAogCSJcMDIwIgkJCVwKQEAgLTU5OSwxMyArNjAwLDE0IEBACiAJIlww
MTNOT0NPVU5UIgkJXAogCSJcMDE0QUxUU0lHIgkJXAogCSJcMDE1Tk9NU0kiCQlcCi0JIlwwMTZB
VElfUE1QX0JVRyIJXAotCSJcMDE3TUFYSU9fNjRLIgkJXAotCSJcMDIwU0FUQTFfVU5JVDAiCVwK
LQkiXDAyMUFCQVIwIgkJXAotCSJcMDIyMU1TSSIgICAgICAgICAgICAgIFwKLQkiXDAyM0ZPUkNF
X1BJIiAgICAgICAgICBcCi0JIlwwMjRSRVNUT1JFX0NBUCIKKwkiXDAxNk5PTVNJWCIJCVwKKwki
XDAxN0FUSV9QTVBfQlVHIglcCisJIlwwMThNQVhJT182NEsiCQlcCisJIlwwMTlTQVRBMV9VTklU
MCIJXAorCSJcMDIwQUJBUjAiCQlcCisJIlwwMjExTVNJIiAgICAgICAgICAgICAgXAorCSJcMDIy
Rk9SQ0VfUEkiICAgICAgICAgIFwKKwkiXDAyM1JFU1RPUkVfQ0FQIgogCiBpbnQgYWhjaV9hdHRh
Y2goZGV2aWNlX3QgZGV2KTsKIGludCBhaGNpX2RldGFjaChkZXZpY2VfdCBkZXYpOwoK


--b1_ceffba8be4d83b3b2c582c2b899af6b6--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-boik72iv2f64smtes2dn-req>