2008年1月2日 星期三

Port Multiplier support for sata_sil24 and ahci 核心修補 libata-tj

This is README for libata-tj-2.6.23-20071011
Latest information can be found at the following URL.
http://home-tj.org/wiki/index.php/Libata-tj-stable
You can contact me at
htejun@gmail.com
If the contained information isn't confidential, please cc the
following address.
linux-ide@vger.kernel.org
NOTE: hotplug-by-poll is dropped for now.
This archive contains a patch to update libata of 2.6.23 to libata
devel branch.
* Port Multiplier support for sata_sil24 and ahci
* Bunch of other libata stuff scheduled for 2.6.24 merge
Patches are against Linux v2.6.23.
Apply the contained patch by executing the following in your kernel
tree.
$ patch -p1 < 2.6.23-to-acc27ff7f1262c40d26adc834df8be57f8c4c0d0.patch
PMP support is tested with the following controllers.
* Silicon Image 3124 (1095:3124)
* Silicon Image 3132 (1095:3132)
* Intel ICH9R (8086:2922)
* JMicron JMB360 (197b:2360)
* JMicron JMB363 (197b:2363)
With the following Port Multipliers.
* Silicon Image 3726 (1095:3726)
* Silicon Image 4726 (1095:4726)
* Silicon Image 5744 (1095:5744)
* Marvell 88SM4140 (11ab:4140)

Various disks from all major vendors have been tested and ATAPI device
works too. With the patch applied, things should just work when you
plug things in.
PMP port number corresponds to SCSI ID, so if the controller the PM is
attached to is ata2 and a harddrive is connected to the third port of
the PM, it will be identified as 'ata2.03' and the corresponding SCSI
H:C:I:L would probably be '1:0:3:0'. Please note that mapping between
ATA and SCSI host numbers is not fixed.
PMP support is fully compatible with Power Management and ATA-ACPI.
If you have the correct setup, libata will happily suspend and resume
with PMP attached.
Caveats/notes:
* Sil4726 is a bit too quirky. Without the first fan-out port
occupied, the thing acts really weirdly. As long as the first port
is occupied, it works okay. This is reportedly fixed by new
firmware. I tried to update the firmware but installing 3124 driver
on Windows was just too difficult for me and I gave up after thirty
painful minutes. Anyone up for testing?
* Again, Sil4726 doesn't like ahci driver initialization sequence.
During driver initialization, the whole controller is reset and the
PHY goes offline and comes back. Sil4726 doesn't like it and goes
out for lunch for several secs after that which makes initial
probing think that the port is empty. After probing is complete,
Sil4726 comes back and gets detected but at that point detection is
asynchronous and if boot device is on one of fan-out ports, it can
be a problem. Again, this might have been fixed by new firmware.
Anyone up for testing?
* The long boot delay on ASUS boards with on-board PMP chips should be
fixed by this patchset but I don't have such a board or Sil4723
which is used on those boards, so I'm not sure. Anyone up for
testing?
* ICH9R has six ports. The last two sometimes behave erratically.
If Sil3726 is attached to one of those ports during probing, the
controller causes IRQ storm even though all IRQs are masked off.
The controller doesn't even set IRQ status bit for the port. It
looks like a hardware bug.
* Resume might take some time as libata spins up each disk
sequentially. This will be improved in future.
* AHCI controllers + SIMG 5744 doesn't work. Have no idea whatsoever.
Have fun.
--
tejun

沒有留言: