Author: mav
Date: Fri Mar 27 08:41:49 2015
New Revision: 280731
URL: https://svnweb.freebsd.org/changeset/base/280731

Log:
  MFC r279975: Use ahci_write_fis_d2h() for commands completion.

Modified:
  stable/10/usr.sbin/bhyve/pci_ahci.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/bhyve/pci_ahci.c
==============================================================================
--- stable/10/usr.sbin/bhyve/pci_ahci.c Fri Mar 27 03:55:04 2015        
(r280730)
+++ stable/10/usr.sbin/bhyve/pci_ahci.c Fri Mar 27 08:41:49 2015        
(r280731)
@@ -773,8 +773,8 @@ handle_identify(struct ahci_port *p, int
 
        hdr = (struct ahci_cmd_hdr *)(p->cmd_lst + slot * AHCI_CL_SIZE);
        if (p->atapi || hdr->prdtl == 0) {
-               p->tfd = (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR;
-               p->is |= AHCI_P_IX_TFE;
+               ahci_write_fis_d2h(p, slot, cfis,
+                   (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR);
        } else {
                uint16_t buf[256];
                uint64_t sectors;
@@ -852,19 +852,16 @@ handle_identify(struct ahci_port *p, int
                }
                ahci_write_fis_piosetup(p);
                write_prdt(p, slot, cfis, (void *)buf, sizeof(buf));
-               p->tfd = ATA_S_DSC | ATA_S_READY;
-               p->is |= AHCI_P_IX_DP;
-               p->ci &= ~(1 << slot);
+               ahci_write_fis_d2h(p, slot, cfis, ATA_S_DSC | ATA_S_READY);
        }
-       ahci_generate_intr(p->pr_sc);
 }
 
 static void
 handle_atapi_identify(struct ahci_port *p, int slot, uint8_t *cfis)
 {
        if (!p->atapi) {
-               p->tfd = (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR;
-               p->is |= AHCI_P_IX_TFE;
+               ahci_write_fis_d2h(p, slot, cfis,
+                   (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR);
        } else {
                uint16_t buf[256];
 
@@ -895,11 +892,8 @@ handle_atapi_identify(struct ahci_port *
                buf[88] = (1 << 14 | 0x7f);
                ahci_write_fis_piosetup(p);
                write_prdt(p, slot, cfis, (void *)buf, sizeof(buf));
-               p->tfd = ATA_S_DSC | ATA_S_READY;
-               p->is |= AHCI_P_IX_DHR;
-               p->ci &= ~(1 << slot);
+               ahci_write_fis_d2h(p, slot, cfis, ATA_S_DSC | ATA_S_READY);
        }
-       ahci_generate_intr(p->pr_sc);
 }
 
 static void
@@ -1480,9 +1474,7 @@ ahci_handle_cmd(struct ahci_port *p, int
                        p->mult_sectors = cfis[12];
                        p->tfd = ATA_S_DSC | ATA_S_READY;
                }
-               p->is |= AHCI_P_IX_DP;
-               p->ci &= ~(1 << slot);
-               ahci_generate_intr(p->pr_sc);
+               ahci_write_fis_d2h(p, slot, cfis, p->tfd);
                break;
        case ATA_READ_DMA:
        case ATA_WRITE_DMA:
@@ -1518,17 +1510,15 @@ ahci_handle_cmd(struct ahci_port *p, int
                break;
        case ATA_PACKET_CMD:
                if (!p->atapi) {
-                       p->tfd = (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR;
-                       p->is |= AHCI_P_IX_TFE;
-                       ahci_generate_intr(p->pr_sc);
+                       ahci_write_fis_d2h(p, slot, cfis,
+                           (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR);
                } else
                        handle_packet_cmd(p, slot, cfis);
                break;
        default:
                WPRINTF("Unsupported cmd:%02x\n", cfis[2]);
-               p->tfd = (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR;
-               p->is |= AHCI_P_IX_TFE;
-               ahci_generate_intr(p->pr_sc);
+               ahci_write_fis_d2h(p, slot, cfis,
+                   (ATA_E_ABORT << 8) | ATA_S_READY | ATA_S_ERROR);
                break;
        }
 }
_______________________________________________
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-unsubscr...@freebsd.org"

Reply via email to