• Kashyap, Desai's avatar
    [SCSI] mpt fusion: Fixing 1078 data corruption issue for 36GB memory region · 14d0f0b0
    Kashyap, Desai authored
    The reason for this change is there is a data corruption when four different
    physical memory regions in the 36GB to 37GB region are
    accessed. This is only affecting 1078.
    
    The solution is we need to use different addressing when filling in
    the scatter gather table for the effected memory regions.  So instead
    of snooping on all four different memory holes, we treat any physical
    addresses in the 36GB address with the same algorithm.
    
    The fix is explained below
    1) Ensure that the message frames are NOT located in the trouble
    region. There is no remapping available for message frames, they must
    be allocated outside the problem region.
    2) Ensure that Sense buffers are NOT in the trouble region. There is
    no remapping available.
    3) Walk through the SGE entries and if any are inside the trouble region
       then they need to be remapped as discussed below.
    	1) Set the Local Address bit in the SGE Flags field.
      	MPI_SGE_FLAGS_LOCAL_ADDRESS
      	2) Ensure we are using 64-bit SGEs
      	3) Set MSb (Bit 63) of the 64-bit address, this will indicate buffer
    	location is Host Memory.
    Signed-off-by: default avatarKashyap Desai <kadesai@lsi.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    14d0f0b0
mptscsih.c 95 KB