public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [sata]  libata update
@ 2004-03-23 18:04 Jeff Garzik
  0 siblings, 0 replies; 20+ messages in thread
From: Jeff Garzik @ 2004-03-23 18:04 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel, Andrew Morton, miquels


This adds a driver for SiS SATA, and updates Intel ICH5 (ata_piix) 
probing.  Particularly users with combined mode probing problems and 
modprobe+rmmod+modprobe problems.  Please test.

BK repositories (note that these URLs are BK not HTTP):
	http://gkernel.bkbits.net/libata-2.4
	http://gkernel.bkbits.net/libata-2.6

Patches:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.25-libata11.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc2-bk3-libata1.patch.bz2

This will go upstream once 2.6.5 is released.




^ permalink raw reply	[flat|nested] 20+ messages in thread
* [sata] libata update
@ 2004-03-27  2:27 Jeff Garzik
  2004-03-30 22:59 ` Petr Sebor
  0 siblings, 1 reply; 20+ messages in thread
From: Jeff Garzik @ 2004-03-27  2:27 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel

[-- Attachment #1: Type: text/plain, Size: 1041 bytes --]


More work on libata...  human-readable summary:
* scsi portion of command submission path now a lot more lightweight. 
Should reduce CPU usage a bit.
* improved documentation (see below)
* New SiS SATA driver.
* Promise: minor improvements in locking, error handling, and 
initialization.  Promise users, please test.
* Intel ICH5:  minor improvements in probing and combined mode handling. 
  Intel users, please test.

This is going to Linus after 2.6.5 is released.

BK repositories:
	http://gkernel.bkbits.net/libata-2.[46]

Patches:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.25-libata15.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc2-bk6-libata2.patch.bz2

And also, there are some PDF docs generated from the source code. 
Although this is always available via "make pdfdocs", I also post this 
document at
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/libata.pdf


I have attached the short and long changelogs for the above patches, 
versus upstream 2.6.x.




[-- Attachment #2: changelog.txt --]
[-- Type: text/plain, Size: 1150 bytes --]


<uwe.koziolek:gmx.net>:
  o [libata] Add driver for SiS 964/180 SATA

Jeff Garzik:
  o [libata sata_promise] better locking and error handling
  o [libata] more documentation
  o [libata] more cmd queue path cleanups
  o [libata] more command queue path cleanup
  o [libata] clean up command queue/submit path a bit
  o [libata sata_promise] minor initialization updates
  o [libata] documentation, and a couple tiny cleanups
  o [libata] use scsi host lock
  o [libata] reduce diff with 2.4 libata backport
  o [libata] pci_dma_error() was renamed to pci_dma_mapping_error()
  o [ata] move some generic stuff linux/libata.h -> linux/ata.h
  o [libata] consolidate data transfer mode handling
  o [libata] set up some of the per-command data beforehand
  o [libata sata_promise] check for PATA port on PDC20375
  o [libata ata_piix] fix combined mode device detection
  o [libata ata_piix] clean up combined mode handling
  o [libata ata_piix] do not disable SATA port on module unload
  o [libata] use kmap_atomic() rather than kmap()
  o [libata] use new pci_dma_error() to check for pci_map_single() failure
  o [libata sata_sis] minor cleanups


[-- Attachment #3: changelog-long.txt --]
[-- Type: text/plain, Size: 5886 bytes --]

ChangeSet@1.1694, 2004-03-26 20:40:58-05:00, jgarzik@redhat.com
  [libata sata_promise] better locking and error handling
  
  * Prefer spin_lock() to spin_lock_irq() in interrupt handler
  * Reset each port, before probing the SATA phy
  * Reset port when every time an error occurs

ChangeSet@1.1673.6.13, 2004-03-26 18:02:34-05:00, jgarzik@redhat.com
  [libata] more documentation
  
  libata-scsi.c should now be fully documented.

ChangeSet@1.1673.6.12, 2004-03-26 04:04:17-05:00, jgarzik@redhat.com
  [libata] more cmd queue path cleanups
  
  Final part in tonight's series of changes to clean up the
  command queueing path.
  
  The simulate-ATA-over-SCSI code is moved to a new function,
  ata_scsi_simulate(), and ata_scsi_rw_queue() is renamed to
  ata_scsi_translate().  With the SCSI CDB debugging dump function
  also moved into its own function, the queue-command path is now
  nice, compact, and readable.

ChangeSet@1.1673.6.11, 2004-03-26 03:32:10-05:00, jgarzik@redhat.com
  [libata] more command queue path cleanup
  
  A new helper ata_scsi_xlat_possible(), and the command queue path
  gets a bit more compact.
  
  As side effects we kill the 'cmd_size' argument from two functions,
  and mark ata_scsi_rw_queue() as static, as its only needed 
  in libata-scsi.c.

ChangeSet@1.1673.6.10, 2004-03-26 03:20:47-05:00, jgarzik@redhat.com
  [libata] clean up command queue/submit path a bit
  
  This change is part of a series that compartmentalizes and consolidates
  ATA taskfile submission.
  
  Here, the device-location-related checks are moved out of the ->queuecommand()
  hook and into an inline helper function.

ChangeSet@1.1673.6.9, 2004-03-26 01:13:20-05:00, jgarzik@redhat.com
  [libata sata_promise] minor initialization updates
  
  * remove incorrect PATA port check
  * enable undocumented bit 13 in flash control register,
    because the Promise driver does so.
  * wait 10 ms after setting TBG mode, for the same reason.

ChangeSet@1.1673.6.8, 2004-03-25 17:23:41-05:00, jgarzik@redhat.com
  [libata] documentation, and a couple tiny cleanups
  
  Add more per-function source code documentation.  Some of this stuff
  is esoteric ATA crapola, and definitely needed to be documented.
  
  Also, two tiny cleanups spotted while documenting:
  * kill unused arg from internal function ata_dev_try_classify()
  * kill unused return value from ata_dev_id_string()

ChangeSet@1.1673.6.7, 2004-03-25 14:40:17-05:00, jgarzik@redhat.com
  [libata] use scsi host lock
  
  In 2.4 we release io_request_lock and take our own per-host lock,
  in the ->queuecommand() hook.  In 2.6, the SCSI layer provides a
  useful to simply use the lock we already have, via scsi_assign_lock().

ChangeSet@1.1673.6.6, 2004-03-25 14:36:59-05:00, jgarzik@redhat.com
  [libata] reduce diff with 2.4 libata backport

ChangeSet@1.1673.6.5, 2004-03-25 14:36:27-05:00, jgarzik@redhat.com
  [libata] pci_dma_error() was renamed to pci_dma_mapping_error()

ChangeSet@1.1643.1.215, 2004-03-25 01:57:34-05:00, jgarzik@redhat.com
  [ata] move some generic stuff linux/libata.h -> linux/ata.h
  
  struct ata_taskfile is generic, and so far its flags (ATA_TFLAG_xxx)
  
  Also, move ATA_PROT_xxx definitions into their own enum.

ChangeSet@1.1643.1.214, 2004-03-25 01:44:08-05:00, jgarzik@redhat.com
  [libata] consolidate data transfer mode handling
  
  The various ways you can send data to/from your ATA device is
  known as the ATA taskfile protocol:  PIO single sector, PIO
  multiple sector, DMA, DMA TCQ, DMA NCQ, ...
  
  Prior to this change, the data direction (read/write) was encoded
  implicitly into the ATA_PROT_xxx value itself.  This increased
  complexity in some areas, and inhibited flexibility in others.
  
  This change separates data direction from taskfile protocol, and also
  moves the data direction flag (ATA_QCFLAG_WRITE) down to a lower
  level (ATA_TFLAG_WRITE).

ChangeSet@1.1643.1.213, 2004-03-25 00:53:07-05:00, jgarzik@redhat.com
  [libata] set up some of the per-command data beforehand
  
  The data transfer mode and the set of read/write commands we generate
  during normal operation remains constant until we change the data
  transfer mode.
  
  This removes a series of branches in the read/write fast path,
  and in general cleans up that particular spot of code.

ChangeSet@1.1643.1.212, 2004-03-24 23:50:34-05:00, jgarzik@redhat.com
  [libata sata_promise] check for PATA port on PDC20375
  
  We don't handle it yet, but this prints out a message in its presence,
  permitting verification of the check and informing users why their
  PATA device is not recognized.

ChangeSet@1.1643.1.211, 2004-03-23 12:35:54-05:00, jgarzik@redhat.com
  [libata ata_piix] fix combined mode device detection
  
  SATA port detection should not have assumed that a single SATA port
  mapped to a single struct ata_port.  Combined mode breaks this
  assumption.
  
  Change code to simply detect if one or more devices are present
  on the struct ata_port, which is what we really wanted to do.

ChangeSet@1.1643.1.210, 2004-03-23 11:52:00-05:00, jgarzik@redhat.com
  [libata ata_piix] clean up combined mode handling

ChangeSet@1.1643.1.209, 2004-03-23 11:14:06-05:00, jgarzik@redhat.com
  [libata ata_piix] do not disable SATA port on module unload
  
  We were disabling the SATA port, but not enabling it on module load.
  So, modprobe+rmmod+modprobe would fail.

ChangeSet@1.1643.1.208, 2004-03-23 09:20:14-05:00, jgarzik@redhat.com
  [libata] use kmap_atomic() rather than kmap()

ChangeSet@1.1643.1.207, 2004-03-22 23:40:01-05:00, jgarzik@redhat.com
  [libata] use new pci_dma_error() to check for pci_map_single() failure

ChangeSet@1.1643.39.2, 2004-03-21 12:15:16-05:00, jgarzik@redhat.com
  [libata sata_sis] minor cleanups

ChangeSet@1.1643.39.1, 2004-03-21 11:55:35-05:00, uwe.koziolek@gmx.net
  [libata] Add driver for SiS 964/180 SATA.


^ permalink raw reply	[flat|nested] 20+ messages in thread
* Re: [sata] libata update
@ 2004-03-27 22:07 Henrik Gustafsson
  2004-03-27 22:20 ` Jeff Garzik
  0 siblings, 1 reply; 20+ messages in thread
From: Henrik Gustafsson @ 2004-03-27 22:07 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: linux-kernel

(sorry for screwing with the thread, I was not subscribed when I read the 
original post)

The patch seems to work just fine. It's been running for six hours now 
with varying amounts of load and no catastrophes has occurred so far.

Only things are these lines saying 'abnormal status' (which has been there 
all along). I assume the codes mean 'device not present' (which would be 
correct, at least in my case) or something similar, but I don't know for 
sure so I leave it to someone better informed to patch :)

(also, there is the 'Unknown device'-thing in my lspci, but that's neither 
related to libata nor is it a 'real' problem)

Using a Promise FastTrack S150 SX4
Relevant piece of my dmesg, lspci follows (just let me know if you need 
the rest)

// Henrik Gustafsson

libata version 1.02 loaded.
sata_promise version 0.92
ata1: SATA max UDMA/133 cmd 0xE29D7200 ctl 0xE29D7238 bmdma 0x0 irq 10
ata2: SATA max UDMA/133 cmd 0xE29D7280 ctl 0xE29D72B8 bmdma 0x0 irq 10
ata3: SATA max UDMA/133 cmd 0xE29D7300 ctl 0xE29D7338 bmdma 0x0 irq 10
ata4: SATA max UDMA/133 cmd 0xE29D7380 ctl 0xE29D73B8 bmdma 0x0 irq 10
ata1: dev 0 cfg 49:2f00 82:7c6b 83:7f09 84:4003 85:7c69 86:3e01 87:4003 
88:207f
ata1: dev 0 ATA, max UDMA/133, 490234752 sectors (lba48)
ata1: dev 0 configured for UDMA/133
scsi0 : sata_promise
ATA: abnormal status 0x7F on port 0xE29D729C
ata2: thread exiting
scsi1 : sata_promise
ATA: abnormal status 0x7F on port 0xE29D731C
ata3: thread exiting
scsi2 : sata_promise
ATA: abnormal status 0x7F on port 0xE29D739C
ata4: thread exiting
scsi3 : sata_promise
   Vendor: ATA       Model: Maxtor 7Y250M0    Rev: 1.02
   Type:   Direct-Access                      ANSI SCSI revision: 05
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
SCSI device sda: drive cache: write through
  sda: sda1
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0

00:0b.0 RAID bus controller: Promise Technology, Inc.: Unknown device 6622 
(rev 01)
         Subsystem: Promise Technology, Inc.: Unknown device 6622
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR-
         Latency: 96 (1500ns min, 4500ns max), cache line size 08
         Interrupt: pin A routed to IRQ 10
         Region 0: I/O ports at c400 [size=256]
         Region 1: I/O ports at c800 [size=256]
         Region 2: I/O ports at cc00 [size=256]
         Region 3: Memory at da000000 (32-bit, non-prefetchable) [size=1M]
         Region 4: Memory at da140000 (32-bit, non-prefetchable) [size=32K]
         Expansion ROM at <unassigned> [disabled] [size=64K]
         Capabilities: [60] Power Management version 1
                 Flags: PMEClk- DSI+ D1+ D2- AuxCurrent=0mA 
PME(D0-,D1-,D2-,D3hot-,D3cold-)
                 Status: D0 PME-Enable- DSel=0 DScale=0 PME-


^ permalink raw reply	[flat|nested] 20+ messages in thread
* [sata] libata update
@ 2004-03-30 21:31 Jeff Garzik
  0 siblings, 0 replies; 20+ messages in thread
From: Jeff Garzik @ 2004-03-30 21:31 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel


A ton of SATA work in the past few weeks, but not a lot terribly new in 
this update.  The update is mainly to rediff against the latest 2.4 and 
2.6 kernels.  Note that this does not include experimental patches. 
Notably absent are

* lba48 (large transfer) requests
* splitting up Promise driver into sata_promise (tx2/tx4) and sata_sx4 
(sx4) drivers.
* adding better flush-cache / writeback caching support

The above are all experimental patches I have locally.

Finally, per user requests, I have started posting the associated 
changelog as well.

BK repositories:
	http://gkernel.bkbits.net/libata-2.[46]

2.6.x patch and changelog:
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc3-libata1.patch.bz2
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc3-libata1.log

2.4.x patch and changelog:
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.26-rc1-libata2.patch.bz2
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.26-rc1-libata2.log

Drivers for SATA-2 controllers have been in development, and should be 
making their appearance soon.




^ permalink raw reply	[flat|nested] 20+ messages in thread
* [sata] libata update
@ 2004-03-31 21:02 Jeff Garzik
  2004-04-03  0:45 ` Erik Andersen
  0 siblings, 1 reply; 20+ messages in thread
From: Jeff Garzik @ 2004-03-31 21:02 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel


Small update, to fix a couple important 2.4-only bugs:
* SMP kernels would lock up during probing
* Hardware delays were incorrect, due to HZ=100

2.6.x kernels are not affected.

Also included is a fix for sata_via device-1 detection, which does 
affect 2.6.x kernels.


BK repositories:
	http://gkernel.bkbits.net/libata-2.[46]

2.4.x patch and log:
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.26-rc1-libata3.patch.bz2
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.26-rc1-libata3.log

2.6.x patch and log:
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc3-libata2.patch.bz2
ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.5-rc3-libata2.log




^ permalink raw reply	[flat|nested] 20+ messages in thread
* [sata] libata update
@ 2004-04-25  2:48 Jeff Garzik
  2004-04-25  4:24 ` J. Ryan Earl
  0 siblings, 1 reply; 20+ messages in thread
From: Jeff Garzik @ 2004-04-25  2:48 UTC (permalink / raw)
  To: linux-ide; +Cc: Linux Kernel


I'm slowly and (somewhat) quietly cleaning up the libata internals. 
This is allow several interesting features to appear in rapid 
succession: hotplug, random taskfile submission (SMART!), and ATAPI.

This is the first step in cleaning up the internals.  Nothing terribly 
interesting for existing users, except for one key change:

Promise SATA driver has been split.  Promise TX2/TX4 SATA remains in 
"sata_promise".  The very-different Promise SX4 support is now found in 
a new driver "sata_sx4".  Promise users, please test and make sure I 
didn't break anything.  It seems to work on my Promise SATA h/w.


Linux 2.6.x patch and changelog:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.6-rc2-bk3-libata1.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.6.6-rc2-bk3-libata1.log

Linux 2.4.x patch and changelog:
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.27-pre1-libata1.patch.bz2
http://www.kernel.org/pub/linux/kernel/people/jgarzik/libata/2.4.27-pre1-libata1.log

BitKeeper repositories:
	http://gkernel.bkbits.net/libata-2.[46]




^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2004-04-25  4:23 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-23 18:04 [sata] libata update Jeff Garzik
  -- strict thread matches above, loose matches on Subject: below --
2004-03-27  2:27 Jeff Garzik
2004-03-30 22:59 ` Petr Sebor
2004-03-30 23:14   ` Jeff Garzik
2004-03-31  1:43     ` Jarno Paananen
2004-03-31  1:50       ` Jeff Garzik
2004-03-31  1:53         ` Jarno Paananen
2004-03-30 23:16   ` Jeff Garzik
2004-03-30 23:26     ` Petr Sebor
2004-03-30 23:39     ` Bartlomiej Zolnierkiewicz
2004-03-30 23:47       ` Jeff Garzik
2004-03-31  0:28         ` Bartlomiej Zolnierkiewicz
2004-03-31  2:33           ` Jeff Garzik
2004-03-27 22:07 Henrik Gustafsson
2004-03-27 22:20 ` Jeff Garzik
2004-03-30 21:31 Jeff Garzik
2004-03-31 21:02 Jeff Garzik
2004-04-03  0:45 ` Erik Andersen
2004-04-25  2:48 Jeff Garzik
2004-04-25  4:24 ` J. Ryan Earl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox