Skip to content

libata: irq_on/off restructuring

Albert Lee linux-ide 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest9 patches 2 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/9libata: remove irq_on from ata_bus_reset() and ata_std_postreset()drivers/ata/libata-core.c drivers/ata/pata_scc.c+0 -110 replies
2/9libata: add irq_off() for symmetrydrivers/ata/libata-core.c drivers/ata/libata-sff.c drivers/ata/libata.h +1 more+38 -20 replies
3/9libata: add ->irq_off() to LLDDsdrivers/ata/ahci.c drivers/ata/ata_generic.c drivers/ata/ata_piix.c +60 more+129 -00 replies
4/9libata: call irq_off from bmdma_freeze()drivers/ata/libata-sff.c drivers/ata/pata_scc.c+2 -280 replies
5/9libata: use freeze()/thaw() for pollingdrivers/ata/libata-core.c include/linux/libata.h+5 -101 reply
6/9libata: add freeze()/thaw() to old EH LLDDsdrivers/ata/pata_ixp4xx_cf.c drivers/ata/pata_scc.c drivers/ata/pdc_adma.c +3 more+31 -00 replies
7/9libata: pdc_freeze() semantic changedrivers/ata/sata_promise.c+0 -11 reply
8/9libata: remove writing of tf->ctl from ata_tf_load()drivers/ata/libata-sff.c drivers/ata/pata_scc.c drivers/ata/sata_svw.c +1 more+7 -410 replies
9/9libata: remove irq_on/off and rename freeze()/thaw() to irq_on/offinclude/linux/libata.h+2 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH/RFC 0/9] libata: irq_on/off restructuring

For ATA, there are two levels of mechanism available to turn irq on/off.
- device level: nIEN bit in the control register. nIEN masks INTRQ from the device.
- host adapter level: some controller can mask out per-port irq from the host adapter.

Currently various parts of libata deal with irq on/off.
ex. tf_load() can alter the nIEN bit.
ex. irq_on() also alters the device level nIEN bit. ex. freeze()/thaw() deal with the host adapter irq mask.

It seems these irq on/off codes could be better structured. Draft patches for your review/advice, thanks.

1/9: remove irq_on from ata_bus_reset() and ata_std_postreset() 2/9: add ->irq_off() for symmetry
3/9: implement ->irq_off() in LLDDs
4/9: call irq_off from bmdma_freeze()
5/9: use freeze()/thaw() for polling
6/9: add freeze()/thaw() to old EH LLDDs
7/9: pdc_freeze() semantic change
8/9: remove writing of tf->ctl from ata_tf_load() 9/9: Remove irq_on/off. Rename freeze()/thaw() to irq_on/off.