Skip to content

Commit 6861eaf

Browse files
committed
Merge tag 'ata-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata
Pull ATA updates from Damien Le Moal: - Small cleanup of the pata_octeon driver to drop a useless platform callback (Uwe) - Simplify ata_scsi_cmd_error_handler() code using the fact that ap->ops->error_handler is NULL most of the time (Wenchao) - Several patches improving libata error handling. This is in preparation for supporting the command duration limits (CDL) feature. The changes allow handling corner cases of ATA NCQ errors which do not happen with regular drives but will be triggered with CDL drives (Niklas) - Simplify the qc_fill_rtf operation (me) - Improve SCSI command translation for REPORT_SUPPORTED_OPERATION_CODES command (me) - Cleanup of libata FUA handling. This falls short of enabling FUA for ATA drives that support it by default as there were concerns that old drives would break. The series however fixes several issues with the FUA support to ensure that FUA is reported as being supported only for drives that can handle all possible write cases (NCQ and non-NCQ). A check in the block layer is also added to ensure that we never see read FUA commands (current behavior) (me) - Several patches to move the old PARIDE (parallel port IDE) driver to libata as pata_parport. Given that this driver also needs protocol modules, the driver code resides in its own pata_parport directoy under drivers/ata (Ondrej) * tag 'ata-6.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata: ata: pata_parport: Fix ida_alloc return value error check drivers/block: Move PARIDE protocol modules to drivers/ata/pata_parport drivers/block: Remove PARIDE core and high-level protocols ata: pata_parport: add driver (PARIDE replacement) ata: libata: exclude FUA support for known buggy drives ata: libata: Fix FUA handling in ata_build_rw_tf() ata: libata: cleanup fua support detection ata: libata: Rename and cleanup ata_rwcmd_protocol() ata: libata: Introduce ata_ncq_supported() block: add a sanity check for non-write flush/fua bios ata: libata-scsi: improve ata_scsiop_maint_in() ata: libata-scsi: do not overwrite SCSI ML and status bytes ata: libata: move NCQ related ATA_DFLAGs ata: libata: respect successfully completed commands during errors ata: libata: read the shared status for successful NCQ commands once ata: libata: simplify qc_fill_rtf port operation interface ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH ata: libata-eh: Cleanup ata_scsi_cmd_error_handler() ata: octeon: Drop empty platform remove function
2 parents f0b2769 + 8844f0a commit 6861eaf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1483
-6742
lines changed

Documentation/admin-guide/blockdev/paride.rst

Lines changed: 78 additions & 310 deletions
Large diffs are not rendered by default.

Documentation/admin-guide/kernel-parameters.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ parameter is applicable::
142142
NFS Appropriate NFS support is enabled.
143143
OF Devicetree is enabled.
144144
PV_OPS A paravirtualized kernel is enabled.
145-
PARIDE The ParIDE (parallel port IDE) subsystem is enabled.
146145
PARISC The PA-RISC architecture is enabled.
147146
PCI PCI bus support is enabled.
148147
PCIE PCI Express support is enabled.

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2788,6 +2788,9 @@
27882788
* [no]setxfer: Indicate if transfer speed mode setting
27892789
should be skipped.
27902790

2791+
* [no]fua: Disable or enable FUA (Force Unit Access)
2792+
support for devices supporting this feature.
2793+
27912794
* dump_id: Dump IDENTIFY data.
27922795

27932796
* disable: Disable this device.
@@ -4114,10 +4117,6 @@
41144117

41154118
pcbit= [HW,ISDN]
41164119

4117-
pcd. [PARIDE]
4118-
See header of drivers/block/paride/pcd.c.
4119-
See also Documentation/admin-guide/blockdev/paride.rst.
4120-
41214120
pci=option[,option...] [PCI] various PCI subsystem options.
41224121

41234122
Some options herein operate on a specific device
@@ -4380,9 +4379,6 @@
43804379
for debug and development, but should not be
43814380
needed on a platform with proper driver support.
43824381

4383-
pd. [PARIDE]
4384-
See Documentation/admin-guide/blockdev/paride.rst.
4385-
43864382
pdcchassis= [PARISC,HW] Disable/Enable PDC Chassis Status codes at
43874383
boot time.
43884384
Format: { 0 | 1 }
@@ -4395,12 +4391,6 @@
43954391
allocator. This parameter is primarily for debugging
43964392
and performance comparison.
43974393

4398-
pf. [PARIDE]
4399-
See Documentation/admin-guide/blockdev/paride.rst.
4400-
4401-
pg. [PARIDE]
4402-
See Documentation/admin-guide/blockdev/paride.rst.
4403-
44044394
pirq= [SMP,APIC] Manual mp-table setup
44054395
See Documentation/x86/i386/IO-APIC.rst.
44064396

@@ -4562,9 +4552,6 @@
45624552

45634553
pstore.backend= Specify the name of the pstore backend to use
45644554

4565-
pt. [PARIDE]
4566-
See Documentation/admin-guide/blockdev/paride.rst.
4567-
45684555
pti= [X86-64] Control Page Table Isolation of user and
45694556
kernel address spaces. Disabling this feature
45704557
removes hardening, but improves performance of

MAINTAINERS

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15770,13 +15770,6 @@ F: arch/*/include/asm/paravirt*.h
1577015770
F: arch/*/kernel/paravirt*
1577115771
F: include/linux/hypervisor.h
1577215772

15773-
PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
15774-
M: Tim Waugh <[email protected]>
15775-
L: [email protected] (subscribers-only)
15776-
S: Maintained
15777-
F: Documentation/admin-guide/blockdev/paride.rst
15778-
F: drivers/block/paride/
15779-
1578015773
PARISC ARCHITECTURE
1578115774
M: "James E.J. Bottomley" <[email protected]>
1578215775
M: Helge Deller <[email protected]>

block/blk-core.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -753,12 +753,16 @@ void submit_bio_noacct(struct bio *bio)
753753
* Filter flush bio's early so that bio based drivers without flush
754754
* support don't have to worry about them.
755755
*/
756-
if (op_is_flush(bio->bi_opf) &&
757-
!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) {
758-
bio->bi_opf &= ~(REQ_PREFLUSH | REQ_FUA);
759-
if (!bio_sectors(bio)) {
760-
status = BLK_STS_OK;
756+
if (op_is_flush(bio->bi_opf)) {
757+
if (WARN_ON_ONCE(bio_op(bio) != REQ_OP_WRITE &&
758+
bio_op(bio) != REQ_OP_ZONE_APPEND))
761759
goto end_io;
760+
if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) {
761+
bio->bi_opf &= ~(REQ_PREFLUSH | REQ_FUA);
762+
if (!bio_sectors(bio)) {
763+
status = BLK_STS_OK;
764+
goto end_io;
765+
}
762766
}
763767
}
764768

drivers/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ obj-$(CONFIG_DIO) += dio/
9898
obj-$(CONFIG_SBUS) += sbus/
9999
obj-$(CONFIG_ZORRO) += zorro/
100100
obj-$(CONFIG_ATA_OVER_ETH) += block/aoe/
101-
obj-$(CONFIG_PARIDE) += block/paride/
102101
obj-$(CONFIG_TC) += tc/
103102
obj-$(CONFIG_USB_PHY) += usb/
104103
obj-$(CONFIG_USB) += usb/

drivers/ata/Kconfig

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,20 @@ config PATA_WINBOND_VLB
11441144
Support for the Winbond W83759A controller on Vesa Local Bus
11451145
systems.
11461146

1147+
config PATA_PARPORT
1148+
tristate "Parallel port IDE device support"
1149+
depends on PARPORT_PC
1150+
help
1151+
There are many external CD-ROM and disk devices that connect through
1152+
your computer's parallel port. Most of them are actually IDE devices
1153+
using a parallel port IDE adapter. This option enables the
1154+
PATA_PARPORT subsystem which contains drivers for many of these
1155+
external drives.
1156+
Read <file:Documentation/admin-guide/blockdev/paride.rst> for more
1157+
information.
1158+
1159+
source "drivers/ata/pata_parport/Kconfig"
1160+
11471161
comment "Generic fallback / legacy drivers"
11481162

11491163
config PATA_ACPI

drivers/ata/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ obj-$(CONFIG_PATA_RZ1000) += pata_rz1000.o
112112

113113
obj-$(CONFIG_PATA_PXA) += pata_pxa.o
114114

115+
obj-$(CONFIG_PATA_PARPORT) += pata_parport/
116+
115117
# Should be last but two libata driver
116118
obj-$(CONFIG_PATA_ACPI) += pata_acpi.o
117119
# Should be last but one libata driver

drivers/ata/acard-ahci.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ struct acard_sg {
5757
};
5858

5959
static enum ata_completion_errors acard_ahci_qc_prep(struct ata_queued_cmd *qc);
60-
static bool acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc);
60+
static void acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc);
6161
static int acard_ahci_port_start(struct ata_port *ap);
6262
static int acard_ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent);
6363

@@ -248,7 +248,7 @@ static enum ata_completion_errors acard_ahci_qc_prep(struct ata_queued_cmd *qc)
248248
return AC_ERR_OK;
249249
}
250250

251-
static bool acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc)
251+
static void acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc)
252252
{
253253
struct ahci_port_priv *pp = qc->ap->private_data;
254254
u8 *rx_fis = pp->rx_fis;
@@ -263,13 +263,11 @@ static bool acard_ahci_qc_fill_rtf(struct ata_queued_cmd *qc)
263263
* Setup FIS.
264264
*/
265265
if (qc->tf.protocol == ATA_PROT_PIO && qc->dma_dir == DMA_FROM_DEVICE &&
266-
!(qc->flags & ATA_QCFLAG_FAILED)) {
266+
!(qc->flags & ATA_QCFLAG_EH)) {
267267
ata_tf_from_fis(rx_fis + RX_FIS_PIO_SETUP, &qc->result_tf);
268268
qc->result_tf.status = (rx_fis + RX_FIS_PIO_SETUP)[15];
269269
} else
270270
ata_tf_from_fis(rx_fis + RX_FIS_D2H_REG, &qc->result_tf);
271-
272-
return true;
273271
}
274272

275273
static int acard_ahci_port_start(struct ata_port *ap)

drivers/ata/ahci_octeon.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,6 @@ static int ahci_octeon_probe(struct platform_device *pdev)
7373
return 0;
7474
}
7575

76-
static int ahci_octeon_remove(struct platform_device *pdev)
77-
{
78-
return 0;
79-
}
80-
8176
static const struct of_device_id octeon_ahci_match[] = {
8277
{ .compatible = "cavium,octeon-7130-sata-uctl", },
8378
{ /* sentinel */ }
@@ -86,7 +81,6 @@ MODULE_DEVICE_TABLE(of, octeon_ahci_match);
8681

8782
static struct platform_driver ahci_octeon_driver = {
8883
.probe = ahci_octeon_probe,
89-
.remove = ahci_octeon_remove,
9084
.driver = {
9185
.name = "octeon-ahci",
9286
.of_match_table = octeon_ahci_match,

0 commit comments

Comments
 (0)