RE: ATA_16 support on mptsas

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

 



On Monday, June 23, 2008 10:00 AM, Krzysztof Błaszkowski wrote:
>
> I found that any HDIO_DRIVE_CMD ioctl on sata drive connected
> through mpsas
> and backplane will fail. Basically the scsi_host_template structure is
> missing ioctl callback. after adding it and temporary
> tweaking domain_device
> structure associated to scsi_device (rphy only) i reached a
> point where
> ata_scsi_ioctl returns EIO and this why i need some clue on a
> way of adding
> such support similar way to aic94 where it has been done.
>
> I found also that mptsas leaves domain_device rather
> uninitialized. the
> example is rphy but there more fields i don't know if they
> are revelant to
> proper processing of HDIO_DRIVE_CMD.
> i need additional references on libata design, call flow and
> structures
> relationship.
>
> probably it would be the best to design mptsas from scratch
> using libsas but
> this seems to me as huge work although if i was guided i
> would probably
> complete this.
>

We have no plans to implement HDIO ioctls in our driver.   The SATL implementation is inside the mpt fusion firmware, and from the driver, we don't care whether the underlying protocal is SAS, SATA, Fibre Channel, or SPI.   For all protocals, we send scsi commands to the controller firmware using SCSI_IO opcode, with the following struct:

typedef struct _MSG_SCSI_IO_REQUEST
{
    U8                      TargetID;           /* 00h */
    U8                      Bus;                /* 01h */
    U8                      ChainOffset;        /* 02h */
    U8                      Function;           /* 03h */
    U8                      CDBLength;          /* 04h */
    U8                      SenseBufferLength;  /* 05h */
    U8                      Reserved;           /* 06h */
    U8                      MsgFlags;           /* 07h */
    U32                     MsgContext;         /* 08h */
    U8                      LUN[8];             /* 0Ch */
    U32                     Control;            /* 14h */
    U8                      CDB[16];            /* 18h */
    U32                     DataLength;         /* 28h */
    U32                     SenseBufferLowAddr; /* 2Ch */
    SGE_IO_UNION            SGL;                /* 30h */
} MSG_SCSI_IO_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_REQUEST,
  SCSIIORequest_t, MPI_POINTER pSCSIIORequest_t;

>
> I tried another approach where i used SG_IO ioctl and
> prepared ATA_16 cdb
> (just like libata does) but this failed on mptsas connected drives too
> altough this way works on drives connected to ICH6.
>

The SG tools will work with mpt fusion if your passing the ATA_12 (opcode=0xA1) and ATA_16 (opcode=0x85).   This is implemented in fusion firmware.  If your failing, then your probably having old firmware.  I suggest that you upgrading by going to the download site  located here: http://www.lsi.com/cm/DownloadSearch.do?locale=EN.    Ken Stewart is from support, he should be able to assist you with upgrading the firmware if you encounter any problems.

Eric Moore








--
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