Page MenuHomeFreeBSD

Implement AUXILIARY REGISTER
ClosedPublic

Authored by imp on Mar 9 2016, 9:58 PM.
Tags
None
Referenced Files
Unknown Object (File)
Jan 31 2024, 10:15 PM
Unknown Object (File)
Jan 21 2024, 8:55 AM
Unknown Object (File)
Jan 13 2024, 6:34 PM
Unknown Object (File)
Dec 11 2023, 2:16 PM
Unknown Object (File)
Nov 10 2023, 3:26 AM
Unknown Object (File)
Nov 8 2023, 3:17 AM
Unknown Object (File)
Nov 7 2023, 7:25 AM
Unknown Object (File)
Nov 6 2023, 12:45 PM
Subscribers
None

Details

Summary

tag_action is not used at all in ata. It's set to 1 for ordered
transactions, but that value isn't used. It's bogusly used to report
in devstat, due to a cut and paste error from SCSI. Mark it as unused
in cam_fill_ataio. Reclaim the memory as a new ata_flags. In addition,
tag_id and init_id are completely unused, so reclaim those as 'unused'
now too. These were needlessly copied when ata was split from scsi.

This allows us, in the future, to create structures that can
communicate AUXILIARY regsiter to the SIMs, which cannot be done now.

Implement Auxiliary register. Add PIM_ATA_EXT flag to flag that a SIM
can handle it, and add the code to add it to the FIS that's sent to
the drive. The mvs driver is the only other ATA driver in the system,
and its hardware doesn't appear to support setting the Auxiliary
register.

Test Plan

Note: This is done as two commits: 1 to GC the old members, and one to implement this.

Also, Scott and I talked about having a ata_cmd_ext that would have this new data. I'm still cooking on that idea.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

imp retitled this revision from to Implement AUXILIARY REGISTER.
imp updated this object.
imp edited the test plan for this revision. (Show Details)
imp added reviewers: scottl, ken.
  • tag_action is not used at all in ata. It's set to 1 for ordered
  • Implement Auxiliary register. Add PIM_ATA_EXT flag to flag that a SIM

If the PIM_ATA_EXT flag is getting set by the SIM and checked by the periph, it would be a programming error for the periph to set the ATA_FLAG_AUX flag if PIM_ATA_EXT was not set. Therefore, maybe make the check for ATA_FLAG_AUX be a KASSERT instead of a mandatory runtime check?

sys/dev/ahci/ahci.c
2428 โ†—(On Diff #14202)

My brain alway takes a long time to think about endianness. Will this be ok on big-endian architectures?

imp edited edge metadata.

Per scott, kassert programming error.

  • tag_action is not used at all in ata. It's set to 1 for ordered
  • Implement Auxiliary register. Add PIM_ATA_EXT flag to flag that a SIM
sys/dev/ahci/ahci.c
2428 โ†—(On Diff #14203)

No. This is how you don't break big endian architectures.

Turns out there's 4 ata drivers in the system, not 3. Make sure we
don't get any AUXILIARY requests.

This revision was automatically updated to reflect the committed changes.