[git patches] major libata update

From: Jeff Garzik
Date: Fri Jun 23 2006 - 18:31:35 EST


[just sent this to Andrew and Linus]

Includes the following major changes:
* much improved exception handling infrastructure, which in turn
makes many other things possible, and/or fixes some hard-to-fix
categories of bugs.
* IRQ-driven PIO, rather then polling from kernel thread, by default
* tagged command queueing ("NCQ")
* device hotplug (all SATA is natively hotplug-capable)
* continued PATA improvements from Alan
* new controller support, mostly via new PCI IDs
* (NOTE NOTE) adds more nvidia support to drivers/ide, in addition to libata


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

to receive the following updates:

Documentation/DocBook/libata.tmpl | 104 -
drivers/ide/pci/amd74xx.c | 7
drivers/scsi/Makefile | 2
drivers/scsi/ahci.c | 503 +++---
drivers/scsi/ata_piix.c | 112 -
drivers/scsi/libata-bmdma.c | 160 +
drivers/scsi/libata-core.c | 3042 ++++++++++++++++++++++++--------------
drivers/scsi/libata-eh.c | 1907 +++++++++++++++++++++++
drivers/scsi/libata-scsi.c | 754 ++++++---
drivers/scsi/libata.h | 31
drivers/scsi/pdc_adma.c | 12
drivers/scsi/sata_mv.c | 71
drivers/scsi/sata_nv.c | 535 +++---
drivers/scsi/sata_promise.c | 40
drivers/scsi/sata_qstor.c | 15
drivers/scsi/sata_sil.c | 221 ++
drivers/scsi/sata_sil24.c | 646 ++++----
drivers/scsi/sata_sis.c | 13
drivers/scsi/sata_svw.c | 16
drivers/scsi/sata_sx4.c | 21
drivers/scsi/sata_uli.c | 14
drivers/scsi/sata_via.c | 16
drivers/scsi/sata_vsc.c | 25
drivers/scsi/scsi.c | 18
drivers/scsi/scsi_error.c | 24
drivers/scsi/scsi_lib.c | 2
drivers/scsi/scsi_transport_api.h | 6
include/linux/ata.h | 37
include/linux/libata.h | 473 ++++-
include/linux/pci_ids.h | 9
include/scsi/scsi_cmnd.h | 1
include/scsi/scsi_host.h | 1
32 files changed, 6505 insertions(+), 2333 deletions(-)

Alan Cox:
libata: PIO 0
libata - fix bracketing and DMA oops
PATCH: libata. Add ->data_xfer method
ata_piix formatting
libata: Remove obsolete flag
PCI identifiers for the pata_via update
libata: add pio_data_xfer_noirq

Albert Lee:
libata: interrupt driven pio for libata-core
libata: interrupt driven pio for LLD
libata irq-pio: add comments and cleanup
libata irq-pio: rename atapi_packet_task() and comments
libata irq-pio: simplify if condition in ata_dataout_task()
libata irq-pio: cleanup ata_qc_issue_prot()
libata: move atapi_send_cdb() and ata_dataout_task()
[libata irq-pio] reorganize ata_pio_sector() and __atapi_pio_bytes()
[libata irq-pio] reorganize "buf + offset" in ata_pio_sector()
[libata irq-pio] use PageHighMem() to optimize the kmap_atomic() usage
libata irq-pio: misc fixes
libata irq-pio: merge the ata_dataout_task workqueue with ata_pio_task workqueue
libata irq-pio: eliminate unnecessary queuing in ata_pio_first_block()
libata irq-pio: add read/write multiple support
libata-dev: determine err_mask when error is found
libata-dev: filter out noisy ATAPI error messages
libata-dev: Fix array index value in ata_rwcmd_protocol()
libata-dev: Use new ata_queue_pio_task() for PIO polling task
libata-dev: Use new AC_ERR_* flags
libata-dev: Minor comment fix
libata-dev: recognize WRITE_MULTI_FUA_EXT for r/w multiple
libata-dev: Remove trailing whitespaces
libata-dev: Fix merge problem with upstream
libata-dev: Remove atapi_packet_task()
libata-dev: Move out the HSM code from ata_host_intr()
libata-dev: Minor fix for ata_hsm_move() to work with ata_host_intr()
libata-dev: Let ata_hsm_move() work with both irq-pio and polling pio
libata-dev: Convert ata_pio_task() to use the new ata_hsm_move()
libata-dev: Cleanup unused enums/functions
libata-dev: ata_check_atapi_dma() fix for ATA_FLAG_PIO_POLLING LLDDs
libata-dev: Make the the in_wq check as an inline function
libata-dev: irq-pio minor fixes (respin)
libata-dev: fix the device err check sequence (respin)
libata-dev: wait idle after reading the last data block
libata-dev: print out information for ATAPI devices with CDB interrupts
libata-dev: handle DRQ=1 ERR=1 (revised)
libata-dev: irq-pio minor fix
libata-dev: irq-pio minor fix 2
libata: convert ATAPI_ENABLE_DMADIR to module parameter
libata: Fix the HSM error_mask mapping (was: Re: libata-tj and SMART)
libata: use qc->result_tf for temp taskfile storage
libata: minor fix for irq-pio merge
libata: add back ->data_xfer to ata_piix.c
libata-dev: move the CDB-intr DMA blacklisting

Alexey Dobriyan:
sata_sil24: endian anotations

Andrew Chew:
sata_nv: Add MCP61 support

Bastiaan Jacques:
ahci: add support for VIA VT8251

Borislav Petkov:
libata debugging: set initial dbg value
libata: Adjust initial debugging levels through preprocessor defines.
[libata] conversion to new debug scheme, part 1 of $N

Brian King:
libata: Setup nbytes in ata_sg_init_one
libata: Add ata_scsi_dev_disabled

Jeff Garzik:
[libata irq-pio] build fix
[libata pdc_adma] update for removal of ATA_FLAG_NOINTR
[libata pdc_adma] fix for new irq-driven PIO code
[libata sata_mv] IRQ PIO build fix
[libata] irq-pio: fix breakage related to err_mask merge
[libata sata_promise] irq_pio: fix merge bug
[libata] build fix after merging some pre-packet_task-removal code
[libata irq-pio] s/assert/WARN_ON/
[libata] build fix after cdb_len move
sata_vsc build fix
libata: irq-pio build fixes
[libata] irq-pio: fix build breakage
[libata] irq-pio: Fix merge mistake
[libata] kill bogus cut-n-pasted comments in three drivers
[libata] bump versions
libata: Fix EH merge difference between this branch and upstream.
libata: Add helper ata_shost_to_port()
[libata sata_promise] Add PATA cable detection.
[libata] libata-scsi, sata_mv: trim trailing whitespace
libata: more verbose request_irq() failure
libata: fix build, by adding required workqueue member to port struct
[libata] Update docs to reflect current driver API
[libata] sata_nv: s/spin_lock_irqsave/spin_lock/ in irq handler
[libata] ahci: Add NVIDIA PCI IDs.
[libata] sata_nv: add PCI IDs
[libata] ahci: add JMicron PCI IDs
[libata] Add host lock to struct ata_port

Luben Tuikov:
SCSI: Introduce scsi_req_abort_cmd (REPOST)

Mark Lord:
sata_mv: endian annotations

Tejun Heo:
libata: increase LBA48 max sectors to 65535
libata: fix ata_set_mode() return value
libata: make ata_bus_probe() return negative errno on failure
libata: separate out ata_spd_string()
libata: convert do_probe_reset() to ata_do_reset()
libata: implement ata_dev_enabled and disabled()
libata: make ata_set_mode() handle no-device case properly
libata: reorganize ata_set_mode()
libata: don't disable devices from ata_set_mode()
libata: preserve SATA SPD setting over hard resets
libata: implement ata_dev_absent()
libata: implement ap->sata_spd_limit and helpers
libata: use SATA speed down in ata_drive_probe_reset()
libata: add 5s sleep between resets
libata: implement ata_down_xfermask_limit()
libata: improve ata_bus_probe()
libata: consider disabled devices in ata_dev_xfermask()
libata: report device number when PIO fails
libata: ata_dev_revalidate() printk update
libata: ATA_FLAG_IN_EH is not used, kill it
libata: clean up constants
libata: rename ATA_FLAG_PORT_DISABLED to ATA_FLAG_DISABLED
libata: clear only affected flags during ata_dev_configure()
libata: clear ATA_DFLAG_PIO before setting it
libata: add ATA_QCFLAG_IO
libata: pass qc around intead of ap during PIO
libata: always generate sense if qc->err_mask is non-zero
libata: don't read TF directly from sense generation functions
libata: add @cdb to ata_exec_internal()
libata: dec scmd->retries for qcs with zero err_mask
libata: separate out libata-eh.c
libata: make some libata-core routines extern
libata: print SControl in SATA link status info message
ahci: do not fail softreset if PHY reports no device
libata: set default cbl in probeinit
libata: kill @verbose from ata_reset_fn_t
libata: make reset methods complain when they fail
sata_sil24: fix timeout calculation in sil24_softreset
sata_sil24: better error message from softreset
libata: implement ata_wait_register()
ahci: use ata_wait_register()
sata_sil24: use ata_wait_register()
libata: disable failed devices only once in ata_bus_probe()
libata: cosmetic update to ata_bus_probe()
libata: export ata_set_sata_spd()
sata_sil24: typo fix
sata_sil24: rename PORT_IRQ_SDB_FIS to PORT_IRQ_SDB_NOTIFY
sata_sil24: add more constants
sata_sil24: consolidate host flags into SIL24_COMMON_FLAGS
sata_sil24: implement loss of completion interrupt on PCI-X errta fix
sata_sil24: implement sil24_init_port()
sata_sil24: put port into known state before softresetting
sata_sil24: kill 10ms sleep in softreset
sata_sil24: reimplement hardreset
sata_sil24: don't do hardreset during driver initialization
sata_sil24: fix on-memory structure byteorder
sata_sil24: enable 64bit
SCSI: implement shost->host_eh_scheduled
libata: silly fix in ata_scsi_start_stop_xlat()
libata: rename ata_down_sata_spd_limit() and friends
ahci: hardreset classification fix
libata: unexport ata_scsi_error()
libata: kill duplicate prototypes
libata: fix ->phy_reset class code handling in ata_bus_probe()
libata: clear ap->active_tag atomically w.r.t. command completion
libata: hold host_set lock while finishing internal qc
libata: use preallocated buffers
libata: move ->set_mode() handling into ata_set_mode()
libata: remove postreset handling from ata_do_reset()
libata: implement qc->result_tf
sata_sil24: update TF image only when necessary
libata: init ap->cbl to ATA_CBL_SATA early
libata: implement new SCR handling and port on/offline functions
libata: use new SCR and on/offline functions
libata: kill old SCR functions and sata_dev_present()
libata: add dev->ap
libata: use dev->ap
libata: implement ATA printk helpers
libata: use ATA printk helpers
libata-eh-fw: add flags and operations for new EH
libata-eh-fw: clear SError in ata_std_postreset()
libata-eh-fw: use special reserved tag and qc for internal commands
libata-eh-fw: update ata_qc_from_tag() to enforce normal/EH qc ownership
libata-eh-fw: implement new EH scheduling via error completion
libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort()
libata-eh-fw: implement freeze/thaw
libata-eh-fw: implement new EH scheduling from PIO
libata-eh-fw: update ata_scsi_error() for new EH
libata-eh-fw: update ata_exec_internal() for new EH
libata-eh-fw: update SCSI command completion path for new EH
libata-eh: add ATA and libata flags for new EH
libata-eh: implement dev->ering
libata-eh: implement ata_eh_info and ata_eh_context
libata-eh: implement new EH
libata-eh: implement BMDMA EH
ata_piix: convert to new EH
sata_sil: convert to new EH
ahci: convert to new EH
ahci: add PIOS interim interrupt handling
sata_sil24: convert to new EH
libata: fix irq-pio merge
libata-ncq: add NCQ related ATA/libata constants and macros
libata-ncq: pass ata_scsi_translate() return value to SCSI midlayer
libata-ncq: rename ap->qactive to ap->qc_allocated
libata-ncq: implement ap->qc_active, ap->sactive and complete helper
libata-ncq: implement NCQ command translation and exclusion
libata-ncq: update EH to handle NCQ
libata-ncq: implement NCQ device configuration
ahci: clean up AHCI constants in preparation for NCQ
ahci: add HOST_CAP_NCQ constant
ahci: kill pp->cmd_tbl_sg
ahci: implement NCQ suppport
sata_sil24: implement NCQ support
libata: enforce default EH actions
SCSI: make scsi_implement_eh() generic API for SCSI transports
libata: set PIO-0 after successful EH reset
libata: shift host flag constants
libata: implement ata_eh_wait()
libata-hp-prep: add flags and eh_info/context fields for hotplug
libata-hp-prep: implement ata_dev_init()
libata-hp-prep: make some ata_device fields persistent
libata-hp-prep: update ata_scsi_find_dev() and friends
libata-hp-prep: use __ata_scsi_find_dev()
libata-hp-prep: implement ap->hw_sata_spd_limit
libata-hp-prep: store attached SCSI device
libata-hp-prep: add ata_aux_wq
libata-hp-prep: make probing related functions global
libata-hp-prep: implement sata_phy_debounce()
libata-hp-prep: add prereset() method and implement ata_std_prereset()
libata-hp-prep: implement followup softreset handling
libata: export ata_hsm_move()
sata_sil: add new constants in preparation for new interrupt handler
sata_sil: new interrupt handler
sata_sil24: rename PORT_PRB to PORT_LRAM and add PORT_LRAM_SLOT_SZ
sata_sil24: update sil24_hardreset()
libata-hp: implement ata_eh_detach_dev()
libata-hp: implement hotplug
libata-hp: implement SCSI part of hotplug
libata-hp: implement warmplug
libata-hp: hook warmplug
libata-hp: implement bootplug
libata-hp: update unload-unplug
ata_piix: convert ata_piix to new probing mechanism
sata_sil: convert to new probing mechanism and add hotplug support
ahci: convert to new probing mechanism and add hotplug support
sata_sil24: convert to new probing mechanism and add hotplug support
libata-hp: killl ops->probe_reset
libata-hp: move ata_do_reset() to libata-eh.c
libata: add missing finish_wait() call in ata_port_wait_eh()
libata: cosmetic change in struct ata_port
libata: add missing ->data_xfer for pdc_adma
sata_sil: add controller unplug detection in sil_interrupt()
libata: fix comment above ata_exec_internal()
libata: fix ATA_EH_REVALIDATE clearing
libata: fast exit from EH while unloading
sata_sil: update device hotplug handling, take #2
libata: fix oops caused rescanning NULL sdev
libata: add host_set->next for legacy two host_sets case, take #3
sata_nv: kill not-working hotplug code
sata_nv: kill struct nv_host_desc and nv_host
sata_nv: simplify constants
sata_nv: better irq handlers
sata_nv: convert to new EH
sata_nv: add hotplug support
sata_via: convert to new EH, take #3
libata: convert several bmdma-style controllers to new EH, take #3
ahci: disable NCQ support on vt8251
libata: implement per-dev EH action mask eh_info->dev_action[]

Thomas Glanzmann:
Add PCI ID for the Intel IDE Controller which is in the Intel Mac Minis shipped in first quarter 2006

zhao, forrest:
Snoop SET FEATURES - WRITE CACHE ENABLE/DISABLE command(v5)

[patch snipped due to size limits; regenerate with
'git diff master..upstream-linus'
]
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/