On 6/13/22 1:10 PM, Greg Kroah-Hartman wrote:
From: Sergey Shtylyov s.shtylyov@omp.ru
commit 72aad489f992871e908ff6d9055b26c6366fb864 upstream.
The {dma|pio}_mode sysfs files are incorrectly documented as having a list of the supported DMA/PIO transfer modes, while the corresponding fields of the *struct* ata_device hold the transfer mode IDs, not masks.
To match these docs, the {dma|pio}_mode (and even xfer_mode!) sysfs files are handled by the ata_bitfield_name_match() macro which leads to reading such kind of nonsense from them:
$ cat /sys/class/ata_device/dev3.0/pio_mode XFER_UDMA_7, XFER_UDMA_6, XFER_UDMA_5, XFER_UDMA_4, XFER_MW_DMA_4, XFER_PIO_6, XFER_PIO_5, XFER_PIO_4, XFER_PIO_3, XFER_PIO_2, XFER_PIO_1, XFER_PIO_0
Using the correct ata_bitfield_name_search() macro fixes that:
$ cat /sys/class/ata_device/dev3.0/pio_mode XFER_PIO_4
While fixing the file documentation, somewhat reword the {dma|pio}_mode file doc and add a note about being mostly useful for PATA devices to the xfer_mode file doc...
Fixes: d9027470b886 ("[libata] Add ATA transport class") Signed-off-by: Sergey Shtylyov s.shtylyov@omp.ru Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal damien.lemoal@opensource.wdc.com Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org
Documentation/ABI/testing/sysfs-ata | 5 +++-- drivers/ata/libata-transport.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-)
--- a/Documentation/ABI/testing/sysfs-ata +++ b/Documentation/ABI/testing/sysfs-ata @@ -59,17 +59,18 @@ class dma_mode
- Transfer modes supported by the device when in DMA mode.
- DMA transfer mode used by the device. Mostly used by PATA device.
pio_mode
- Transfer modes supported by the device when in PIO mode.
- PIO transfer mode used by the device. Mostly used by PATA device.
xfer_mode Current transfer mode.
- Mostly used by PATA device.
Again, needs s/device/devices/ as reported already...
MBR, Sergey