Author: mav
Date: Tue Apr 18 08:04:15 2017
New Revision: 317080
URL: https://svnweb.freebsd.org/changeset/base/317080

Log:
  Block FPDMA TRIM for ASMedia HBAs.
  
  Experiments show FPDMA TRIM command timeouts on ASMedia HBAs, while the
  same SSDs working fine on Intel HBAs.
  
  MFC after:    2 weeks

Modified:
  head/sys/dev/ahci/ahci.c
  head/sys/dev/ahci/ahci.h
  head/sys/dev/ahci/ahci_pci.c

Modified: head/sys/dev/ahci/ahci.c
==============================================================================
--- head/sys/dev/ahci/ahci.c    Tue Apr 18 07:02:12 2017        (r317079)
+++ head/sys/dev/ahci/ahci.c    Tue Apr 18 08:04:15 2017        (r317080)
@@ -2692,7 +2692,9 @@ ahciaction(struct cam_sim *sim, union cc
                if (ch->caps & AHCI_CAP_SPM)
                        cpi->hba_inquiry |= PI_SATAPM;
                cpi->target_sprt = 0;
-               cpi->hba_misc = PIM_SEQSCAN | PIM_UNMAPPED | PIM_ATA_EXT;
+               cpi->hba_misc = PIM_SEQSCAN | PIM_UNMAPPED;
+               if ((ch->quirks & AHCI_Q_NOAUX) == 0)
+                       cpi->hba_misc |= PIM_ATA_EXT;
                cpi->hba_eng_cnt = 0;
                if (ch->caps & AHCI_CAP_SPM)
                        cpi->max_target = 15;

Modified: head/sys/dev/ahci/ahci.h
==============================================================================
--- head/sys/dev/ahci/ahci.h    Tue Apr 18 07:02:12 2017        (r317079)
+++ head/sys/dev/ahci/ahci.h    Tue Apr 18 08:04:15 2017        (r317080)
@@ -600,6 +600,7 @@ enum ahci_err_type {
 #define AHCI_Q_NOMSIX          0x00100000
 #define AHCI_Q_MRVL_SR_DEL     0x00200000
 #define AHCI_Q_NOCCS           0x00400000
+#define AHCI_Q_NOAUX           0x00800000
 
 #define AHCI_Q_BIT_STRING      \
        "\020"                  \
@@ -625,7 +626,8 @@ enum ahci_err_type {
        "\024RESTORE_CAP"       \
        "\025NOMSIX"            \
        "\026MRVL_SR_DEL"       \
-       "\027NOCCS"
+       "\027NOCCS"             \
+       "\030NOAUX"
 
 int ahci_attach(device_t dev);
 int ahci_detach(device_t dev);

Modified: head/sys/dev/ahci/ahci_pci.c
==============================================================================
--- head/sys/dev/ahci/ahci_pci.c        Tue Apr 18 07:02:12 2017        
(r317079)
+++ head/sys/dev/ahci/ahci_pci.c        Tue Apr 18 08:04:15 2017        
(r317080)
@@ -73,15 +73,15 @@ static const struct {
        {0x78021022, 0x00, "AMD Hudson-2",      0},
        {0x78031022, 0x00, "AMD Hudson-2",      0},
        {0x78041022, 0x00, "AMD Hudson-2",      0},
-       {0x06011b21, 0x00, "ASMedia ASM1060",   AHCI_Q_NOCCS},
-       {0x06021b21, 0x00, "ASMedia ASM1060",   AHCI_Q_NOCCS},
-       {0x06111b21, 0x00, "ASMedia ASM1061",   AHCI_Q_NOCCS},
-       {0x06121b21, 0x00, "ASMedia ASM1062",   AHCI_Q_NOCCS},
-       {0x06201b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS},
-       {0x06211b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS},
-       {0x06221b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS},
-       {0x06241b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS},
-       {0x06251b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS},
+       {0x06011b21, 0x00, "ASMedia ASM1060",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06021b21, 0x00, "ASMedia ASM1060",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06111b21, 0x00, "ASMedia ASM1061",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06121b21, 0x00, "ASMedia ASM1062",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06201b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06211b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06221b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06241b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
+       {0x06251b21, 0x00, "ASMedia ASM106x",   AHCI_Q_NOCCS|AHCI_Q_NOAUX},
        {0x26528086, 0x00, "Intel ICH6",        AHCI_Q_NOFORCE},
        {0x26538086, 0x00, "Intel ICH6M",       AHCI_Q_NOFORCE},
        {0x26818086, 0x00, "Intel ESB2",        0},
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to