Date: Tue, 24 Nov 2020 00:30:47 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: svn commit: r367974 - in stable/12/sys/dev: ahci mvs siis Message-ID: <202011240030.0AO0Ulur069511@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mav Date: Tue Nov 24 00:30:47 2020 New Revision: 367974 URL: https://svnweb.freebsd.org/changeset/base/367974 Log: MFC r366922, r367915, r367916: Pass lower 3 bits of sector_count for FPDMA commands. When this code was written those bits were N/A, but now the lowest bit is Rebuild Assist Recovery Control (RARC). Modified: stable/12/sys/dev/ahci/ahci.c stable/12/sys/dev/mvs/mvs.c stable/12/sys/dev/siis/siis.c Directory Properties: stable/12/ (props changed) Modified: stable/12/sys/dev/ahci/ahci.c ============================================================================== --- stable/12/sys/dev/ahci/ahci.c Tue Nov 24 00:27:21 2020 (r367973) +++ stable/12/sys/dev/ahci/ahci.c Tue Nov 24 00:30:47 2020 (r367974) @@ -2579,10 +2579,10 @@ ahci_setup_fis(struct ahci_channel *ch, struct ahci_cm fis[9] = ccb->ataio.cmd.lba_mid_exp; fis[10] = ccb->ataio.cmd.lba_high_exp; fis[11] = ccb->ataio.cmd.features_exp; + fis[12] = ccb->ataio.cmd.sector_count; if (ccb->ataio.cmd.flags & CAM_ATAIO_FPDMA) { - fis[12] = tag << 3; - } else { - fis[12] = ccb->ataio.cmd.sector_count; + fis[12] &= 0x07; + fis[12] |= tag << 3; } fis[13] = ccb->ataio.cmd.sector_count_exp; if (ccb->ataio.ata_flags & ATA_FLAG_ICC) Modified: stable/12/sys/dev/mvs/mvs.c ============================================================================== --- stable/12/sys/dev/mvs/mvs.c Tue Nov 24 00:27:21 2020 (r367973) +++ stable/12/sys/dev/mvs/mvs.c Tue Nov 24 00:30:47 2020 (r367974) @@ -1495,7 +1495,8 @@ mvs_execute_transaction(struct mvs_slot *slot) crqb->cmd[i++] = ccb->ataio.cmd.features; crqb->cmd[i++] = 0x11; if (ccb->ataio.cmd.flags & CAM_ATAIO_FPDMA) { - crqb->cmd[i++] = slot->tag << 3; + crqb->cmd[i++] = (slot->tag << 3) | + (ccb->ataio.cmd.sector_count & 0x07); crqb->cmd[i++] = 0x12; } else { crqb->cmd[i++] = ccb->ataio.cmd.sector_count_exp; Modified: stable/12/sys/dev/siis/siis.c ============================================================================== --- stable/12/sys/dev/siis/siis.c Tue Nov 24 00:27:21 2020 (r367973) +++ stable/12/sys/dev/siis/siis.c Tue Nov 24 00:30:47 2020 (r367974) @@ -1722,13 +1722,12 @@ siis_setup_fis(device_t dev, struct siis_cmd *ctp, uni fis[9] = ccb->ataio.cmd.lba_mid_exp; fis[10] = ccb->ataio.cmd.lba_high_exp; fis[11] = ccb->ataio.cmd.features_exp; + fis[12] = ccb->ataio.cmd.sector_count; if (ccb->ataio.cmd.flags & CAM_ATAIO_FPDMA) { - fis[12] = tag << 3; - fis[13] = 0; - } else { - fis[12] = ccb->ataio.cmd.sector_count; - fis[13] = ccb->ataio.cmd.sector_count_exp; + fis[12] &= 0x07; + fis[12] |= tag << 3; } + fis[13] = ccb->ataio.cmd.sector_count_exp; if (ccb->ataio.ata_flags & ATA_FLAG_ICC) fis[14] = ccb->ataio.icc; fis[15] = ATA_A_4BIT;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011240030.0AO0Ulur069511>