2007-10-12 19:40:24

by Jeff Garzik

[permalink] [raw]
Subject: [git patches] libata update


[ I just sent this upstream to Andrew and Linus ]

Now that I have nailed down the corruption problem, I can attend to
this... Fun stuff:

* port multiplier support (like an ethernet hub, only dumber)

* Asynchronous notification -- finally userspace CD-ROM polling can go away!
(NOTE: waiting on James B to apply the piece that actually makes this
work...)

* Alan continues to hammer out edge cases in generic ATA support. An
amazing amount of ancient and/or obscure hardware works with libata thanks to him :)

* Turn on ACPI by default (watch for bug reports!). This should make
suspend/resume work a lot better.

* New drivers for embedded ATA chips.


Please pull from 'upstream-linus' branch of
master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git upstream-linus

to receive the following updates:

Documentation/kernel-parameters.txt | 8 +-
drivers/ata/Kconfig | 59 ++-
drivers/ata/Makefile | 8 +-
drivers/ata/ahci.c | 451 +++++++---
drivers/ata/ata_generic.c | 16 +-
drivers/ata/ata_piix.c | 71 +-
drivers/ata/libata-acpi.c | 165 +++-
drivers/ata/libata-core.c | 1329 ++++++++++++++++++----------
drivers/ata/libata-eh.c | 922 ++++++++++++++------
drivers/ata/libata-pmp.c | 1191 +++++++++++++++++++++++++
drivers/ata/libata-scsi.c | 496 +++++++----
drivers/ata/libata-sff.c | 69 +-
drivers/ata/libata.h | 41 +-
drivers/ata/pata_acpi.c | 395 ++++++++
drivers/ata/pata_ali.c | 17 +-
drivers/ata/pata_amd.c | 43 +-
drivers/ata/pata_artop.c | 20 +-
drivers/ata/pata_at32.c | 441 +++++++++
drivers/ata/pata_atiixp.c | 15 +-
drivers/ata/pata_bf54x.c | 1627 ++++++++++++++++++++++++++++++++++
drivers/ata/pata_cmd640.c | 4 +-
drivers/ata/pata_cmd64x.c | 43 +-
drivers/ata/pata_cs5520.c | 47 +-
drivers/ata/pata_cs5530.c | 4 +-
drivers/ata/pata_cs5535.c | 4 +-
drivers/ata/pata_cypress.c | 4 +-
drivers/ata/pata_efar.c | 11 +-
drivers/ata/pata_hpt366.c | 4 +-
drivers/ata/pata_hpt37x.c | 28 +-
drivers/ata/pata_hpt3x2n.c | 11 +-
drivers/ata/pata_hpt3x3.c | 10 +-
drivers/ata/pata_icside.c | 39 +-
drivers/ata/pata_isapnp.c | 8 +-
drivers/ata/pata_it8213.c | 11 +-
drivers/ata/pata_it821x.c | 17 +-
drivers/ata/pata_ixp4xx_cf.c | 24 +-
drivers/ata/pata_jmicron.c | 24 +-
drivers/ata/pata_legacy.c | 27 +-
drivers/ata/pata_marvell.c | 12 +-
drivers/ata/pata_mpc52xx.c | 9 +-
drivers/ata/pata_mpiix.c | 25 +-
drivers/ata/pata_netcell.c | 5 +-
drivers/ata/pata_ns87410.c | 11 +-
drivers/ata/pata_ns87415.c | 467 ++++++++++
drivers/ata/pata_oldpiix.c | 11 +-
drivers/ata/pata_opti.c | 11 +-
drivers/ata/pata_optidma.c | 26 +-
drivers/ata/pata_pcmcia.c | 16 +-
drivers/ata/pata_pdc2027x.c | 114 ++--
drivers/ata/pata_pdc202xx_old.c | 23 +-
drivers/ata/pata_platform.c | 16 +-
drivers/ata/pata_qdi.c | 15 +-
drivers/ata/pata_radisys.c | 4 +-
drivers/ata/pata_rz1000.c | 13 +-
drivers/ata/pata_sc1200.c | 4 +-
drivers/ata/pata_scc.c | 66 +-
drivers/ata/pata_serverworks.c | 8 +-
drivers/ata/pata_sil680.c | 11 +-
drivers/ata/pata_sis.c | 33 +-
drivers/ata/pata_sl82c105.c | 11 +-
drivers/ata/pata_triflex.c | 11 +-
drivers/ata/pata_via.c | 16 +-
drivers/ata/pata_winbond.c | 13 +-
drivers/ata/pdc_adma.c | 103 ++-
drivers/ata/sata_inic162x.c | 34 +-
drivers/ata/sata_mv.c | 68 +-
drivers/ata/sata_nv.c | 53 +-
drivers/ata/sata_promise.c | 27 +-
drivers/ata/sata_qstor.c | 17 +-
drivers/ata/sata_sil.c | 53 +-
drivers/ata/sata_sil24.c | 341 ++++++--
drivers/ata/sata_sis.c | 2 -
drivers/ata/sata_svw.c | 14 +-
drivers/ata/sata_sx4.c | 25 +-
drivers/ata/sata_uli.c | 16 +-
drivers/ata/sata_via.c | 35 +-
drivers/ata/sata_vsc.c | 16 +-
drivers/scsi/ipr.c | 19 +-
drivers/scsi/libsas/sas_ata.c | 11 +-
include/asm-generic/libata-portmap.h | 5 -
include/linux/ata.h | 116 +++-
include/linux/libata.h | 320 +++++--
82 files changed, 7866 insertions(+), 2064 deletions(-)
create mode 100644 drivers/ata/libata-pmp.c
create mode 100644 drivers/ata/pata_acpi.c
create mode 100644 drivers/ata/pata_at32.c
create mode 100644 drivers/ata/pata_bf54x.c
create mode 100644 drivers/ata/pata_ns87415.c

Alan Cox (22):
libata: Correct IORDY handling
libata-core: Document some limits/assumptions about ID_ATA
libata: Note that our cache flush code needs fixing up
pata_cmd64x: Set up MWDMA modes properly
[libata] add ACPI cable detect API
libata pata_amd: ACPI checks for 80wire cable
libata pata_via: ACPI checks for 80wire cable
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
libata-portmap: Remove unused definitions
libata: Spot bridge chips
libata: Strict checking for identify reporting
libata: Update experimental tags to reflect reality better
pdc2027x: Switch properly to ioread/iowrite
pata_atiixp: Audit notes on locking
pata_pdc202xx_old MWDMA fixes, and notes
pata_ns87415: Initial cut at 87415/87560 IDE support
libata: Fix HPA handling regression
libata: Add a drivers/ide style DMA disable
libata: correct handling of SRST reset sequences
libata_scsi: Fix ATAPI transfer lengths
libata-core: Expose gtm methods for driver use
pata_acpi: ACPI driver support

Albert Lee (2):
libata: move ata_altstatus() to pio data xfer functions
libata: pata_pdc2027x PLL detection minor cleanup

Andrew Morton (1):
libata-add-irq_flags-to-struct-pata_platform_info-fix

Boaz Harrosh (2):
libata-scsi: Remove !use_sg code paths
libata-scsi: convert to use the data buffer accessors

Christian Lamparter (1):
ata_piix: disallow UDMA 133 on ICH5 & ICH7

Dave Jones (1):
libata: correct kernel parameter in documentation.

David Milburn (1):
libata-core: blacklist HITACHI HDS drives using wildcard blacklist matching

Jason Gaston (2):
ata_piix: replace spaces with tabs
ahci: RAID mode SATA patch for Intel Tolapai

Jeff Garzik (14):
[libata] pdc_adma: convert to new exception handling (EH) framework
[libata] Remove ->irq_ack() hook, and ata_dummy_irq_on()
[libata] Remove ->port_disable() hook
[libata] ata_piix: Use more-robust form of array initialization
[libata] blacklist Maxtor*BANC* using new wildcard blacklist matching
[libata] SCSI: support INQUIRY page 89h (ATA info page)
[libata] Slightly improved no-op REQUEST SENSE, SEND DIAGNOSTIC
[libata] SCSI: improve FORMAT UNIT; minor code cleanups
[libata] SCSI: clean up R/W recovery mode page
[libata] SCSI: simulator version, not device version, belongs in VPD
[libata] AHCI: enable AHCI mode, before using AHCI reset
[libata] ata_piix: add HP compaq laptop to short cable list
[libata] Turn on ACPI by default
[libata] struct pci_dev related cleanups

Kristen Carlson Accardi (4):
[libata] check for SATA async notify support
[libata] ahci: send event when AN received
ahci: Store interrupt value
ata: increase allowed config flags

Kristoffer Nyborg Gregertsen (1):
AVR32 PATA driver

Mark Lord (1):
libata: add support for ATA_16 on ATAPI

Matthew Garrett (1):
libata: Integrate ACPI-based PATA/SATA hotplug - version 5

Paolo Ornati (1):
libata: blacklist NCQ on Seagate Barracuda ST380817AS

Peer Chen (1):
ahci: Add MCP79 support to AHCI driver

Robert Hancock (1):
libata: add human-readable error value decoding

Satyam Sharma (1):
libata: Fix build failure on ppc64 drivers/ata/pata_scc.c

Sonic Zhang (1):
libata driver for bf548 on chip ATAPI controller.

Tejun Heo (61):
libata-link: introduce ata_link
libata-link: implement and use link/device iterators
libata-link: linkify PHY-related functions
libata-link: linkify EH action helpers
libata-link: linkify reset
libata-link: linkify config/EH related functions
libata-link: make two port flags HRST_TO_RESUME and SKIP_D2H_BSY link flags
libata-link: separate out link initialization functions
libata-link: implement ata_link_abort()
libata-link: add PMP links
libata-link: update ata_scsi_error() to handle PMP links
libata-link: update EH to deal with PMP links
libata-link: update hotplug to handle PMP links
libata-link: update Power Management to handle PMP links
libata: use ata_port_printk() in ata_wait_idle()
libata: add printf format attribute to ehi desc functions
libata: implement and use ata_port_desc() to report port configuration
libata: move EH repeat reporting into ata_eh_report()
libata: move ata_id_n_sectors() upward
libata: clean up read/set native_max address functions
libata: remiplement ata_hpa_resize()
ahci: reimplement port_map handling
libata: update ata_dev_try_classify() arguments
libata: assume ATA_DEV_ATA on diagnostic failure
libata: misc updates for AN
libata-pmp-prep: add PMP related constants, fields, ops and update helpers
libata-pmp-prep: add @new_class to ata_dev_revalidate()
libata-pmp-prep: make a number of functions global to libata
libata-pmp-prep: implement ops->qc_defer()
libata-pmp-prep: implement qc_defer helpers
libata-pmp-prep: implement ATA_LFLAG_NO_SRST, ASSUME_ATA and ASSUME_SEMB
libata-pmp-prep: implement ATA_LFLAG_NO_RETRY
libata-pmp-prep: implement ATA_LFLAG_DISABLED
libata-pmp-prep: implement EH fast-fail path
libata-pmp-prep: implement ATA_HORKAGE_SKIP_PM
libata-pmp-prep: implement sata_async_notification()
libata: fix ata_set_max_sectors()
sata_via: kill SATA_PATA_SHARING register handling
libata: update spurious NCQ completion blacklist
libata-pmp: update ata_eh_reset() for PMP
libata-pmp: implement Port Multiplier support
libata-pmp: hook PMP support and enable it
libata-pmp: extend ACPI support to cover PMP
libata-pmp: implement qc_defer for command switching PMP support
sata_sil24: implement PMP support
sata_sil24: implement PORT_RST
ahci: implement PMP support
ahci: move host flags over to pi.private_data
ahci: implement AHCI_HFLAG_NO_PMP
libata: add HDT722516DLA380 to NCQ blacklist
libata: add ST9160821AS / 3.ALD to NCQ blacklist
pata_jmicron: match vendor and class code only
libata: clear ehi description after initial host report
libata: skip suppress reporting if ATA_EHI_QUIET
libata: wrap schedule_timeout_uninterruptible() in loop
ahci: kill leftover from enabling NCQ over PMP
ahci: clean up PORT_IRQ_BAD_PMP enabling
ahci: fix notification handling
libata: add @timeout to ata_exec_internal[_sg]()
libata: implement ATA_PFLAG_RESETTING
libata: use ata_exec_internal() for PMP register access

[patch snipped due to size; grab it from git]


2007-10-13 00:06:34

by Luben Tuikov

[permalink] [raw]
Subject: Re: [git patches] libata update

You should run "git-update-server-info" in
pub/scm/linux/kernel/git/jgarzik/libata-dev.git.

info/refs disagrees with refs/heads/* .

Luben

--- Jeff Garzik <[email protected]> wrote:

>
> [ I just sent this upstream to Andrew and Linus ]
>
> Now that I have nailed down the corruption problem, I can attend to
> this... Fun stuff:
>
> * port multiplier support (like an ethernet hub, only dumber)
>
> * Asynchronous notification -- finally userspace CD-ROM polling can go away!
> (NOTE: waiting on James B to apply the piece that actually makes this
> work...)
>
> * Alan continues to hammer out edge cases in generic ATA support. An
> amazing amount of ancient and/or obscure hardware works with libata thanks to him :)
>
> * Turn on ACPI by default (watch for bug reports!). This should make
> suspend/resume work a lot better.
>
> * New drivers for embedded ATA chips.
>
>
> Please pull from 'upstream-linus' branch of
> master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git upstream-linus
>
> to receive the following updates:
>
> Documentation/kernel-parameters.txt | 8 +-
> drivers/ata/Kconfig | 59 ++-
> drivers/ata/Makefile | 8 +-
> drivers/ata/ahci.c | 451 +++++++---
> drivers/ata/ata_generic.c | 16 +-
> drivers/ata/ata_piix.c | 71 +-
> drivers/ata/libata-acpi.c | 165 +++-
> drivers/ata/libata-core.c | 1329 ++++++++++++++++++----------
> drivers/ata/libata-eh.c | 922 ++++++++++++++------
> drivers/ata/libata-pmp.c | 1191 +++++++++++++++++++++++++
> drivers/ata/libata-scsi.c | 496 +++++++----
> drivers/ata/libata-sff.c | 69 +-
> drivers/ata/libata.h | 41 +-
> drivers/ata/pata_acpi.c | 395 ++++++++
> drivers/ata/pata_ali.c | 17 +-
> drivers/ata/pata_amd.c | 43 +-
> drivers/ata/pata_artop.c | 20 +-
> drivers/ata/pata_at32.c | 441 +++++++++
> drivers/ata/pata_atiixp.c | 15 +-
> drivers/ata/pata_bf54x.c | 1627 ++++++++++++++++++++++++++++++++++
> drivers/ata/pata_cmd640.c | 4 +-
> drivers/ata/pata_cmd64x.c | 43 +-
> drivers/ata/pata_cs5520.c | 47 +-
> drivers/ata/pata_cs5530.c | 4 +-
> drivers/ata/pata_cs5535.c | 4 +-
> drivers/ata/pata_cypress.c | 4 +-
> drivers/ata/pata_efar.c | 11 +-
> drivers/ata/pata_hpt366.c | 4 +-
> drivers/ata/pata_hpt37x.c | 28 +-
> drivers/ata/pata_hpt3x2n.c | 11 +-
> drivers/ata/pata_hpt3x3.c | 10 +-
> drivers/ata/pata_icside.c | 39 +-
> drivers/ata/pata_isapnp.c | 8 +-
> drivers/ata/pata_it8213.c | 11 +-
> drivers/ata/pata_it821x.c | 17 +-
> drivers/ata/pata_ixp4xx_cf.c | 24 +-
> drivers/ata/pata_jmicron.c | 24 +-
> drivers/ata/pata_legacy.c | 27 +-
> drivers/ata/pata_marvell.c | 12 +-
> drivers/ata/pata_mpc52xx.c | 9 +-
> drivers/ata/pata_mpiix.c | 25 +-
> drivers/ata/pata_netcell.c | 5 +-
> drivers/ata/pata_ns87410.c | 11 +-
> drivers/ata/pata_ns87415.c | 467 ++++++++++
> drivers/ata/pata_oldpiix.c | 11 +-
> drivers/ata/pata_opti.c | 11 +-
> drivers/ata/pata_optidma.c | 26 +-
> drivers/ata/pata_pcmcia.c | 16 +-
> drivers/ata/pata_pdc2027x.c | 114 ++--
> drivers/ata/pata_pdc202xx_old.c | 23 +-
> drivers/ata/pata_platform.c | 16 +-
> drivers/ata/pata_qdi.c | 15 +-
> drivers/ata/pata_radisys.c | 4 +-
> drivers/ata/pata_rz1000.c | 13 +-
> drivers/ata/pata_sc1200.c | 4 +-
> drivers/ata/pata_scc.c | 66 +-
> drivers/ata/pata_serverworks.c | 8 +-
> drivers/ata/pata_sil680.c | 11 +-
> drivers/ata/pata_sis.c | 33 +-
> drivers/ata/pata_sl82c105.c | 11 +-
> drivers/ata/pata_triflex.c | 11 +-
> drivers/ata/pata_via.c | 16 +-
> drivers/ata/pata_winbond.c | 13 +-
> drivers/ata/pdc_adma.c | 103 ++-
> drivers/ata/sata_inic162x.c | 34 +-
> drivers/ata/sata_mv.c | 68 +-
> drivers/ata/sata_nv.c | 53 +-
> drivers/ata/sata_promise.c | 27 +-
> drivers/ata/sata_qstor.c | 17 +-
> drivers/ata/sata_sil.c | 53 +-
> drivers/ata/sata_sil24.c | 341 ++++++--
> drivers/ata/sata_sis.c | 2 -
> drivers/ata/sata_svw.c | 14 +-
> drivers/ata/sata_sx4.c | 25 +-
> drivers/ata/sata_uli.c | 16 +-
> drivers/ata/sata_via.c | 35 +-
> drivers/ata/sata_vsc.c | 16 +-
> drivers/scsi/ipr.c | 19 +-
> drivers/scsi/libsas/sas_ata.c | 11 +-
> include/asm-generic/libata-portmap.h | 5 -
> include/linux/ata.h | 116 +++-
> include/linux/libata.h | 320 +++++--
> 82 files changed, 7866 insertions(+), 2064 deletions(-)
> create mode 100644 drivers/ata/libata-pmp.c
> create mode 100644 drivers/ata/pata_acpi.c
> create mode 100644 drivers/ata/pata_at32.c
> create mode 100644 drivers/ata/pata_bf54x.c
> create mode 100644 drivers/ata/pata_ns87415.c
>
> Alan Cox (22):
> libata: Correct IORDY handling
> libata-core: Document some limits/assumptions about ID_ATA
> libata: Note that our cache flush code needs fixing up
> pata_cmd64x: Set up MWDMA modes properly
> [libata] add ACPI cable detect API
> libata pata_amd: ACPI checks for 80wire cable
> libata pata_via: ACPI checks for 80wire cable
> libata: Switch most of the remaining SFF drivers to ata_sff_port_start
> libata-portmap: Remove unused definitions
> libata: Spot bridge chips
> libata: Strict checking for identify reporting
> libata: Update experimental tags to reflect reality better
> pdc2027x: Switch properly to ioread/iowrite
> pata_atiixp: Audit notes on locking
> pata_pdc202xx_old MWDMA fixes, and notes
> pata_ns87415: Initial cut at 87415/87560 IDE support
> libata: Fix HPA handling regression
> libata: Add a drivers/ide style DMA disable
> libata: correct handling of SRST reset sequences
> libata_scsi: Fix ATAPI transfer lengths
> libata-core: Expose gtm methods for driver use
> pata_acpi: ACPI driver support
>
> Albert Lee (2):
> libata: move ata_altstatus() to pio data xfer functions
> libata: pata_pdc2027x PLL detection minor cleanup
>
> Andrew Morton (1):
> libata-add-irq_flags-to-struct-pata_platform_info-fix
>
> Boaz Harrosh (2):
> libata-scsi: Remove !use_sg code paths
> libata-scsi: convert to use the data buffer accessors
>
> Christian Lamparter (1):
> ata_piix: disallow UDMA 133 on ICH5 & ICH7
>
> Dave Jones (1):
> libata: correct kernel parameter in documentation.
>
> David Milburn (1):
> libata-core: blacklist HITACHI HDS drives using wildcard blacklist matching
>
> Jason Gaston (2):
> ata_piix: replace spaces with tabs
> ahci: RAID mode SATA patch for Intel Tolapai
>
> Jeff Garzik (14):
> [libata] pdc_adma: convert to new exception handling (EH) framework
> [libata] Remove ->irq_ack() hook, and ata_dummy_irq_on()
> [libata] Remove ->port_disable() hook
> [libata] ata_piix: Use more-robust form of array initialization
> [libata] blacklist Maxtor*BANC* using new wildcard blacklist matching
> [libata] SCSI: support INQUIRY page 89h (ATA info page)
> [libata] Slightly improved no-op REQUEST SENSE, SEND DIAGNOSTIC
> [libata] SCSI: improve FORMAT UNIT; minor code cleanups
> [libata] SCSI: clean up R/W recovery mode page
> [libata] SCSI: simulator version, not device version, belongs in VPD
> [libata] AHCI: enable AHCI mode, before using AHCI reset
> [libata] ata_piix: add HP compaq laptop to short cable list
> [libata] Turn on ACPI by default
> [libata] struct pci_dev related cleanups
>
> Kristen Carlson Accardi (4):
> [libata] check for SATA async notify support
> [libata] ahci: send event when AN received
> ahci: Store interrupt value
> ata: increase allowed config flags
>
> Kristoffer Nyborg Gregertsen (1):
> AVR32 PATA driver
>
> Mark Lord (1):
> libata: add support for ATA_16 on ATAPI
>
> Matthew Garrett (1):
> libata: Integrate ACPI-based PATA/SATA hotplug - version 5
>
> Paolo Ornati (1):
> libata: blacklist NCQ on Seagate Barracuda ST380817AS
>
> Peer Chen (1):
> ahci: Add MCP79 support to AHCI driver
>
> Robert Hancock (1):
> libata: add human-readable error value decoding
>
> Satyam Sharma (1):
> libata: Fix build failure on ppc64 drivers/ata/pata_scc.c
>
> Sonic Zhang (1):
> libata driver for bf548 on chip ATAPI controller.
>
> Tejun Heo (61):
> libata-link: introduce ata_link
> libata-link: implement and use link/device iterators
> libata-link: linkify PHY-related functions
> libata-link: linkify EH action helpers
> libata-link: linkify reset
> libata-link: linkify config/EH related functions
> libata-link: make two port flags HRST_TO_RESUME and SKIP_D2H_BSY link flags
> libata-link: separate out link initialization functions
> libata-link: implement ata_link_abort()
> libata-link: add PMP links
> libata-link: update ata_scsi_error() to handle PMP links
> libata-link: update EH to deal with PMP links
> libata-link: update hotplug to handle PMP links
> libata-link: update Power Management to handle PMP links
> libata: use ata_port_printk() in ata_wait_idle()
> libata: add printf format attribute to ehi desc functions
> libata: implement and use ata_port_desc() to report port configuration
> libata: move EH repeat reporting into ata_eh_report()
> libata: move ata_id_n_sectors() upward
> libata: clean up read/set native_max address functions
> libata: remiplement ata_hpa_resize()
> ahci: reimplement port_map handling
> libata: update ata_dev_try_classify() arguments
> libata: assume ATA_DEV_ATA on diagnostic failure
> libata: misc updates for AN
> libata-pmp-prep: add PMP related constants, fields, ops and update helpers
> libata-pmp-prep: add @new_class to ata_dev_revalidate()
> libata-pmp-prep: make a number of functions global to libata
> libata-pmp-prep: implement ops->qc_defer()
> libata-pmp-prep: implement qc_defer helpers
> libata-pmp-prep: implement ATA_LFLAG_NO_SRST, ASSUME_ATA and ASSUME_SEMB
> libata-pmp-prep: implement ATA_LFLAG_NO_RETRY
> libata-pmp-prep: implement ATA_LFLAG_DISABLED
> libata-pmp-prep: implement EH fast-fail path
> libata-pmp-prep: implement ATA_HORKAGE_SKIP_PM
> libata-pmp-prep: implement sata_async_notification()
> libata: fix ata_set_max_sectors()
> sata_via: kill SATA_PATA_SHARING register handling
> libata: update spurious NCQ completion blacklist
> libata-pmp: update ata_eh_reset() for PMP
> libata-pmp: implement Port Multiplier support
> libata-pmp: hook PMP support and enable it
> libata-pmp: extend ACPI support to cover PMP
> libata-pmp: implement qc_defer for command switching PMP support
> sata_sil24: implement PMP support
> sata_sil24: implement PORT_RST
> ahci: implement PMP support
> ahci: move host flags over to pi.private_data
> ahci: implement AHCI_HFLAG_NO_PMP
> libata: add HDT722516DLA380 to NCQ blacklist
> libata: add ST9160821AS / 3.ALD to NCQ blacklist
> pata_jmicron: match vendor and class code only
> libata: clear ehi description after initial host report
> libata: skip suppress reporting if ATA_EHI_QUIET
> libata: wrap schedule_timeout_uninterruptible() in loop
> ahci: kill leftover from enabling NCQ over PMP
> ahci: clean up PORT_IRQ_BAD_PMP enabling
> ahci: fix notification handling
> libata: add @timeout to ata_exec_internal[_sg]()
> libata: implement ATA_PFLAG_RESETTING
> libata: use ata_exec_internal() for PMP register access
>
> [patch snipped due to size; grab it from git]
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

Subject: Re: [git patches] libata update


On Friday 12 October 2007, Jeff Garzik wrote:
>
> [ I just sent this upstream to Andrew and Linus ]
>
> Now that I have nailed down the corruption problem, I can attend to
> this... Fun stuff:
>
> * port multiplier support (like an ethernet hub, only dumber)

Great to see this here.

> * Asynchronous notification -- finally userspace CD-ROM polling can go away!

Is this AHCI specific or could be used by some other SATA hosts?

> (NOTE: waiting on James B to apply the piece that actually makes this
> work...)
>
> * Alan continues to hammer out edge cases in generic ATA support. An
> amazing amount of ancient and/or obscure hardware works with libata thanks to him :)

Worth to mention that this update also contains two new drivers from Alan,
pata_acpi and pata_ns87415. :)

> * Turn on ACPI by default (watch for bug reports!). This should make
> suspend/resume work a lot better.
>
> * New drivers for embedded ATA chips.

Unfortunately both are broken ATM, details below.

[ added Sonic Zhang and Kristoffer Nyborg Gregertsen to cc: ]

> Please pull from 'upstream-linus' branch of
> master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git upstream-linus

[ ... ]

> Alan Cox (22):
> pata_cmd64x: Set up MWDMA modes properly

two minor things:

a.

@@ -88,14 +88,15 @@ static int cmd648_cable_detect(struct ata_port *ap)
}

/**
- * cmd64x_set_piomode - set initial PIO mode data
+ * cmd64x_set_piomode - set PIO and MWDMA timing
* @ap: ATA interface
* @adev: ATA device
+ * @mode: mode
*
- * Called to do the PIO mode setup.
+ * Called to do the PIO and MWDMA mode setup.
*/

-static void cmd64x_set_piomode(struct ata_port *ap, struct ata_device *adev)
+static void cmd64x_set_timing(struct ata_port *ap, struct ata_device *adev, u8 mode)
{
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
struct ata_timing t;

function name in the documentation needs fixing

b.

regD fiddling in cmd64x_set_dmamode() could be removed completly

> libata: correct handling of SRST reset sequences

This potentially adds a regression for nVidia boxes (but ACPI cable
detection should compensate for it):

pata_amd's ->cable_detect checks UDMA timings to get the cable type
(cable detection is done before the SRST) but pata_amd's ->set_piomode
messes with UDMA timings. It seems that both methods need fixing.

> Jeff Garzik (14):

> [libata] Turn on ACPI by default

-MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in suspend/resume when set");
+MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in probe/suspend/resume when set");

Would be nice to have Documentation/kernel-parameters.txt updated as well.

> Kristoffer Nyborg Gregertsen (1):
> AVR32 PATA driver

Won't build because this libata update removes ->irq_ack and ->port_disable
methods from struct ata_port.

> Sonic Zhang (1):
> libata driver for bf548 on chip ATAPI controller.

Won't build, same problem as with AVR32 PATA driver + needs update to
accomodate for libata-link patches.

There are some other problems:

a.

+config PATA_BF54X_DMA
+ bool "DMA mode"
+ depends on PATA_BF54X
+ default y
+ help
+ Enable DMA mode for Blackfin ATAPI controller.

The preferred solution would be to use module parameter.

If this option is on by default it may be even possible to remove it
completly since this libata update also contains patch from Alan allowing
DMA disable per different classes of ATA devices.

b.

+static struct ata_port_info bfin_port_info[] = {
+ {
+ .sht = &bfin_sht,
+ .flags = ATA_FLAG_SLAVE_POSS
+ | ATA_FLAG_MMIO
+ | ATA_FLAG_NO_LEGACY,
+ .pio_mask = 0x1f, /* pio0-4 */
+ .mwdma_mask = 0,
+#ifdef CONFIG_PATA_BF54X_DMA
+ .udma_mask = ATA_UDMA5,
+#else
+ .udma_mask = 0,
+#endif
+ .port_ops = &bfin_pata_ops,
+ },
+};

MWDMA is never enabled (even if CONFIG_PATA_BF54X_DMA=y) but the driver
contains MWDMA support...

c.

+/**
+ *
+ * Function: wait_complete
+ *
+ * Description: Waits the interrupt from device
+ *
+ */
+static inline void wait_complete(void __iomem *base, unsigned short mask)
+{
+ unsigned short status;
+ unsigned int i = 0;
+
+#define PATA_BF54X_WAIT_TIMEOUT 10000
+
+ for (i = 0; i < PATA_BF54X_WAIT_TIMEOUT; i++) {
+ status = ATAPI_GET_INT_STATUS(base) & mask;
+ if (status)
+ break;
+ }
+
+ ATAPI_SET_INT_STATUS(base, mask);
+}

udelay() between retries?

d.

* write_atapi_register()
* read_atapi_register()
* write_atapi_data()
* read_atapi_data()

and

* wait_complete()

need a proper documentation (DocBook-ized etc).

Thanks,
Bart

2007-10-13 07:05:56

by Andrey Borzenkov

[permalink] [raw]
Subject: Re: [git patches] libata update

Jeff Garzik wrote:

> * Asynchronous notification -- finally userspace CD-ROM polling can go
> away!
> (NOTE: waiting on James B to apply the piece that actually makes this
> work...)

Does it depend on hardware offering suitable support? What are chances for
it to work on 5 years old DVD-ROM?

2007-10-13 10:55:45

by Jeff Garzik

[permalink] [raw]
Subject: Re: [git patches] libata update

Andrey Borzenkov wrote:
> Jeff Garzik wrote:
>
>> * Asynchronous notification -- finally userspace CD-ROM polling can go
>> away!
>> (NOTE: waiting on James B to apply the piece that actually makes this
>> work...)
>
> Does it depend on hardware offering suitable support? What are chances for
> it to work on 5 years old DVD-ROM?

Correct -- it requires a new SATA CD-ROM with the AN capability.

Jeff



2007-10-14 10:35:28

by Torsten Kaiser

[permalink] [raw]
Subject: Re: [git patches] libata update

On 10/12/07, Jeff Garzik <[email protected]> wrote:
> [ I just sent this upstream to Andrew and Linus ]
> * Turn on ACPI by default (watch for bug reports!). This should make
> suspend/resume work a lot better.

Bug report for 2.6.23-mm1:
scsi8 : pata_amd
scsi9 : pata_amd
ata9: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14
ata10: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15
ACPI Exception (exoparg2-0442): AE_AML_PACKAGE_LIMIT, Index
(0FFFFFFFF) is beyond end of object [20070126]
ACPI Error (psparse-0537): Method parse/execution failed
[\_SB_.PCI0.IDE0.GTM_] (Node ffff810100318a20), AE_AML_PACKAGE_LIMIT
ACPI Error (psparse-0537): Method parse/execution failed
[\_SB_.PCI0.IDE0.CHN0._GTM] (Node ffff8101003187c0),
AE_AML_PACKAGE_LIMIT
ata9: ACPI get timing mode failed (AE 0x300d)
ata9.01: ATA-7: Maxtor 6L250R0, BAH41G10, max UDMA/133
ata9.01: 490234752 sectors, multi 16: LBA48
ata9.01: limited to UDMA/33 due to 40-wire cable
ata9.01: configured for UDMA/33
ata10: port disabled. ignoring.

libata-Bug, ACPI-Bug or just bad code in the BIOS?
The detection of the 40-wire cable is correct, also that there is only
one drive at this IDE port.

pata_amd is build as module and is driving the IDE part of a nVidia MCP55.

Torsten

2007-10-14 12:18:15

by Alan

[permalink] [raw]
Subject: Re: [git patches] libata update

> ACPI Exception (exoparg2-0442): AE_AML_PACKAGE_LIMIT, Index
> (0FFFFFFFF) is beyond end of object [20070126]
> ACPI Error (psparse-0537): Method parse/execution failed
> [\_SB_.PCI0.IDE0.GTM_] (Node ffff810100318a20), AE_AML_PACKAGE_LIMIT
> ACPI Error (psparse-0537): Method parse/execution failed
> [\_SB_.PCI0.IDE0.CHN0._GTM] (Node ffff8101003187c0),
> AE_AML_PACKAGE_LIMIT
> ata9: ACPI get timing mode failed (AE 0x300d)

Looks like an ACPI BIOS problem. In that situation we'll just give up on
using ACPI information

Not much else we can do as Nvidia don't document how to do a reliable
40/80 wire test and just told us to use the BIOS.

2007-10-15 22:32:17

by Jeff Garzik

[permalink] [raw]
Subject: Re: [git patches] libata update

Bartlomiej Zolnierkiewicz wrote:
> On Friday 12 October 2007, Jeff Garzik wrote:
>> [ I just sent this upstream to Andrew and Linus ]
>>
>> Now that I have nailed down the corruption problem, I can attend to
>> this... Fun stuff:
>>
>> * port multiplier support (like an ethernet hub, only dumber)
>
> Great to see this here.
>
>> * Asynchronous notification -- finally userspace CD-ROM polling can go away!
>
> Is this AHCI specific or could be used by some other SATA hosts?

Can be used by any controller that supports SNotification (or is able to
capture and parse the raw FIS's).

And FWIW, Tejun's PMP work also uses a few bits of same async-notify stuff.

I agree with your review items, and will look at those if others don't
beat me to it.

Jeff



2007-10-26 03:02:56

by Tejun Heo

[permalink] [raw]
Subject: Re: [git patches] libata update

Jeff Garzik wrote:
> Andrey Borzenkov wrote:
>> Jeff Garzik wrote:
>>
>>> * Asynchronous notification -- finally userspace CD-ROM polling can go
>>> away!
>>> (NOTE: waiting on James B to apply the piece that actually makes this
>>> work...)
>>
>> Does it depend on hardware offering suitable support? What are chances
>> for
>> it to work on 5 years old DVD-ROM?
>
> Correct -- it requires a new SATA CD-ROM with the AN capability.

And some SATA CD-ROMs lie about AN capability and sends nothing when
media event occurs. Do we need to start a blacklist or whitelist? :-)

--
tejun