+10 second timeout in CAM
+
+
+-----
+
DELAY's might tsleep, so interrupts might run. fix poll loop to detect
completion via other interrupts.
when soft-resetting through a port multiplier, between the first and second
FISes. We need to be able to lock access to the port.
+------ serial number -----------
+
+OpenBSD /etc/devtab
+
+name type serialnumber
+ naa
+ wwn
+ serno
+ etc
+
------ Misc probe info --------
<AHCI-PCI-SATA> port
ahci0: AHCI 1.2 capabilities 0xe3229f05
<S64A,NCQ,SSNTF,SAL,SCLO,SPM,PMD>, 6 ports, 32 tags/port, gen 1 (1.5Gbps) and 2 (3Gbps)
+0xf722ff83<S64A,NCQ,SSNTF,SMPS,SALP,SAL,SCLO,SPM,PMD,SSC,PSC,CCCS> 4 ports, 32
+
Chipsets supporting FBSS (FIS-Based Switching):
SB800
if (ccb->ccb_xa.flags & ATA_F_NCQ) {
xa->resid = 0;
} else {
- if (ccb->ccb_cmd_hdr->prdbc == 0) {
+ if (ccb->ccb_cmd_hdr->prdbc == 0 &&
+ ccb->ccb_xa.state == ATA_S_COMPLETE) {
kprintf("%s: WARNING! Unload prdbc resid "
"was zero! tag=%d\n",
ATANAME(ap, xa->at), ccb->ccb_slot);
ahci_port_start(ap);
need = NEED_RESTART;
- kprintf("%s: TFES slot %d ci_saved = %08x\n",
- PORTNAME(ap), err_slot, ci_saved);
+ /*
+ * ATAPI errors are fairly common from probing, just
+ * report disk errors or if bootverbose is on.
+ */
+ if (bootverbose || ap->ap_type != ATA_PORT_T_ATAPI) {
+ kprintf("%s: TFES slot %d ci_saved = %08x\n",
+ PORTNAME(ap), err_slot, ci_saved);
+ }
/*
* If we got an error on an error CCB just complete it
ccb_at = ccb->ccb_xa.at;
memcpy(&ccb->ccb_xa.rfis, ap->ap_rfis->rfis,
sizeof(struct ata_fis_d2h));
- kprintf("%s: Copying error rfis slot %d\n",
- ATANAME(ap, ccb_at), err_slot);
+ if (bootverbose) {
+ kprintf("%s: Copying rfis slot %d\n",
+ ATANAME(ap, ccb_at), err_slot);
+ }
} else {
kprintf("%s: Cannot copy rfis, CCB slot "
"%d is not on-chip (state=%d)\n",