Re: SiI3124 + SiI3726 pm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2006/5/25 Tejun Heo <htejun@xxxxxxxxx>:
> saeed bishara wrote:
>>
>> Hi,
>>      I think the 6th port is for the SEMB(Sata Enclosure Management
>> Bridge) device, this device reportssignature with lbam=0x3c and lbah
>> 0xc3, but the linux classifies it as a disk:
>>
>>  if (((tf->lbam == 0) && (tf->lbah == 0)) ||
>>  ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))) {
>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> DPRINTK("found ATA device by sig\n");
>> return ATA_DEV_ATA;
>>
>> Can you print the signature of the device on that port?
>> Anyway, the 0x3C, 0xC3 signature should be classifies as a SEMB device
>> and not a disk according to the SATA standard.
>
> I haven't actually checked that signature but that's probably the same class
> code mix up described for PM in the classification function.  For the time
> being, libata is just ignoring the extra port.  It probably should be
> exported as a SCSI device without HLD attached (/dev/sgX only).  I'll try
> that once hotplug stuff settles.

A few months ago I updated my kernel since it now supports port
multipliers without patch, and the issue of a supplementary port on
the SiI3727 port multiplier rose again. Since I completely forgot
about that 3 year old issue, I started exploring the web again before
remembering that thread.

I found something interesting in the SiI3726 datasheet
(http://www.siliconimage.com/docs/SiI-DS-0121-C1.pdf). You can see on
PDF page 14/41, in the description of the GSCR[2] register, that the 4
least significant bits of the register are labelled "Number of Fan-out
ports". In the description besides, it is explained that the initial
value is 6, and it represents the 5 downstream device ports plus the
upstream host port.

I don't have access to the SATA Port Multiplier specification, but it
would be interesting to check it to verify whether that 4-bit field of
the GSCR[2] register is supposed to contain the number of device ports
(and in that case the problem comes from the SiI3726 firmware) or if
that value is the total number of up+down ports of the multiplier. In
the latter case another mechanism to detect the number of device ports
would be needed (unless multipliers can have several host ports, for
multipath or device sharing, a simple substraction of 1 could be
enough).

In the meantime I'll re-apply the patch Tejun Heo proposed earlier in
that thread. It seems I didn't notice Saeed Bishara request for tests
last time. Tell me if you're still interested in that information, or
if you need any other information to help improve the SiI3726 driver.
I have 6 of these port multipliers (and I suspect some of these are
damaged), and 15 to 20 SATA disks available, so there's plenty of room
for tests.
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux