* [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).