Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a650ccd6 authored by Sergey Shtylyov's avatar Sergey Shtylyov Committed by Greg Kroah-Hartman
Browse files

ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files



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: d9027470 ("[libata] Add ATA transport class")
Signed-off-by: default avatarSergey Shtylyov <s.shtylyov@omp.ru>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDamien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4a31e05b
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -107,13 +107,14 @@ Description:
				described in ATA8 7.16 and 7.17. Only valid if
				the device is not a PM.

		pio_mode:	(RO) Transfer modes supported by the device when
				in PIO mode. Mostly used by PATA device.
		pio_mode:	(RO) PIO transfer mode used by the device.
				Mostly used by PATA devices.

		xfer_mode:	(RO) Current transfer mode
		xfer_mode:	(RO) Current transfer mode. Mostly used by
				PATA devices.

		dma_mode:	(RO) Transfer modes supported by the device when
				in DMA mode. Mostly used by PATA device.
		dma_mode:	(RO) DMA transfer mode used by the device.
				Mostly used by PATA devices.

		class:		(RO) Device class. Can be "ata" for disk,
				"atapi" for packet device, "pmp" for PM, or
+1 −1
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ static struct {
	{ XFER_PIO_0,			"XFER_PIO_0" },
	{ XFER_PIO_SLOW,		"XFER_PIO_SLOW" }
};
ata_bitfield_name_match(xfer,ata_xfer_names)
ata_bitfield_name_search(xfer, ata_xfer_names)

/*
 * ATA Port attributes