linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [sata]  libata update
@ 2004-03-23 18:04 Jeff Garzik
  0 siblings, 0 replies; 7+ 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] 7+ messages in thread

* [sata] libata update
@ 2004-03-27  2:27 Jeff Garzik
  0 siblings, 0 replies; 7+ 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] 7+ messages in thread

* [sata] libata update
@ 2004-03-30 21:31 Jeff Garzik
  0 siblings, 0 replies; 7+ 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] 7+ messages in thread

* [sata] libata update
@ 2004-03-31 21:02 Jeff Garzik
  2004-04-03  0:45 ` Erik Andersen
  0 siblings, 1 reply; 7+ 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] 7+ messages in thread

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

On Wed Mar 31, 2004 at 04:02:43PM -0500, Jeff Garzik wrote:
> 
> 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

I have a Soyo P4 motherboard with built in Intel ICH5, Sil, and I have
"IDE + SATA" enabled in the bios, presumably meaning the ICH5 is in
combined mode.  I usually boot with my rootfs on a ordinary IDE drive
(pata on ICH5 ide0), a cdrom (pata on ICH5 ide1) and a sata drive (sata1
on ICH5), which has all been working nicely.  Many thanks.  :-)  Here is
what I usually see from the ICH5:

    Uniform Multi-Platform E-IDE driver Revision: 7.00beta5-2.4
    ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
    ICH5: IDE controller at PCI slot 00:1f.1
    ICH5: chipset revision 2
    ICH5: not 100% native mode: will probe irqs later
	ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:pio
	ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
    hda: WDC WD2000JB-32EVA0, ATA DISK drive
    hdc: SONY DVD RW DRU-510A, ATAPI CD/DVD-ROM drive
    ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
    ide1 at 0x170-0x177,0x376 on irq 15
    hda: attached ide-disk driver.
    hda: 390721968 sectors (200049 MB) w/8192KiB Cache, CHS=24321/255/63, UDMA(100)
    Partition check:
     hda: hda1 hda2
    SCSI subsystem driver Revision: 1.00
    libata version 1.02 loaded.
    ata_piix version 1.02
    PCI: Setting latency timer of device 00:1f.2 to 64
    ata1: SATA max UDMA/133 cmd 0xC000 ctl 0xC402 bmdma 0xD000 irq 18
    ata2: SATA max UDMA/133 cmd 0xC800 ctl 0xCC02 bmdma 0xD008 irq 18
    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, 398297088 sectors (lba48)
    ata1: dev 0 configured for UDMA/133
    ata2: SATA port has no device.
    ata2: thread exiting
    scsi0 : ata_piix
    scsi1 : ata_piix
      Vendor: ATA       Model: Maxtor 6Y200M0    Rev: 1.02
      Type:   Direct-Access                      ANSI SCSI revision: 05

Yesterday while doing some testing, I made a CD with the same kernel on
it as shown above, i.e. latest 2.4.26-rc1 + the current
2.4.26-rc1-libata3 patch.  I then unplugged the power connector to my
usual rootfs drive (the WDC WD2000JB on ide0) to make sure I wouldn't
screw it up ;-).  

Booting from CD (the SONY on ide1) with only the Maxtor 6Y200M0 (on the
ICH5 sata1), the libata driver wedged solid on bootup.  After printing

    ata1: SATA max UDMA/133 cmd 0xC000 ctl 0xC402 bmdma 0xD000 irq 18
    ata2: SATA max UDMA/133 cmd 0xC800 ctl 0xCC02 bmdma 0xD008 irq 18

the box was dead dead dead.  I can't test this setup with the bios set
to SATA only, since I don't own any SATA cdrom drives.  Simply plugging
the WDC WD2000JB on ide0 back in allowed the system to boot normally.
As nearly as I can tell, one has to have a pata drive installed or the
ata_piix driver will wedge solid.

 -Erik

--
Erik B. Andersen             http://codepoet-consulting.com/
--This message was written using 73% post-consumer electrons--

^ permalink raw reply	[flat|nested] 7+ 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; 7+ 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] 7+ messages in thread

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

Jeff Garzik wrote:

> interesting features to appear in rapid succession: hotplug, random 
> taskfile submission (SMART!), and ATAPI.

Nice.  Many will love you for hotplug.

-ryan

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

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

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-30 21:31 [sata] libata update Jeff Garzik
  -- strict thread matches above, loose matches on Subject: below --
2004-04-25  2:48 Jeff Garzik
2004-04-25  4:24 ` J. Ryan Earl
2004-03-31 21:02 Jeff Garzik
2004-04-03  0:45 ` Erik Andersen
2004-03-27  2:27 Jeff Garzik
2004-03-23 18:04 Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).