• Mark Lord's avatar
    libata-pmp: clear hob for pmp register accesses · 39f25e70
    Mark Lord authored
    >> Mark Lord wrote:
    >>> Tejun, I've added PMP to sata_mv, and am now trying to get it
    >>> to work with a Marvell PM attached.
    
    > >>> And the behaviour I see is very bizarre.
    
    >>> After hard+soft resets, the PM signature is found,
    >>> and libata interrogates the PM registers.
    >>>
    >>> It successfully reads register 0, and then register 1.
    >>> But all subsequent registers read out (incorrectly) as zeros.
    ...
    
    This behavior has been confirmed by Marvell with a SATA analyzer.
    The Marvell port-multiplier apparently likes to see clean HOB
    information when accessing PMP registers.
    
    Since sata_mv uses PIO shadow register access, this doesn't happen
    automatically, as it might in a more purely FIS-based driver (eg. ahci).
    
    One way to fix this is to flag these commands with ATA_TFLAG_LBA48,
    forcing libata to write out the HOB fields with known (zero) values.
    Signed-off-by: default avatarSaeed Bishara <saeed@marvell.com>
    Acked-by: default avatarMark Lord <mlord@pobox.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    39f25e70
libata-pmp.c 28.9 KB