Author Topic: Documented Silicon Image 3124 data corruption problem  (Read 1952 times)

Offline (S)ATAman

  • Veteran Member
  • ****
  • Posts: 161
  • New Member
Documented Silicon Image 3124 data corruption problem
« on: January 05, 2020, 11:18:30 AM »
Straight from horse's mouth, 15+ year old errata.

DMA Context Switch Failure in Port Multiplier Mode

A DMA context switch failure can occur when operating with a port multiplier (PM), causing data destined to or from one PM port to be transferred to or from another PM port. The conditions required to produce this failure are:

1. The SiI3124 device port must be connected to a port multiplier.
2. Commands must be outstanding to 3 or more PM ports simultaneously.
3. One of the devices connected to a PM port returns error status.

When these conditions are met, it is possible that the SiI3124 will not properly switch DMA context upon a data transfer from one of the non-erring devices after the driver performs an error recovery resume operation. This can cause data corruption, since data to/from one device will be transferred to/from another device.

Workaround:

None. To prevent possible data corruption, the host driver should issue a device reset (port control set register, bit 1) if a command error is received while commands are outstanding to three or more devices simultaneously on a single SiI3124 SATA port.


(SiI3124-2 Rev 0.2 Errata, SiI-AN-0030-E)

Offline (S)ATAman

  • Veteran Member
  • ****
  • Posts: 161
  • New Member
Re: Documented Silicon Image 3124 data corruption problem
« Reply #1 on: January 05, 2020, 11:27:40 AM »
Straight from horse's mouth, 15+ year old errata.

DMA Context Switch Failure in Port Multiplier Mode

A DMA context switch failure can occur when operating with a port multiplier (PM), causing data destined to or from one PM port to be transferred to or from another PM port. The conditions required to produce this failure are:

1. The SiI3124 device port must be connected to a port multiplier.
2. Commands must be outstanding to 3 or more PM ports simultaneously.
3. One of the devices connected to a PM port returns error status.

When these conditions are met, it is possible that the SiI3124 will not properly switch DMA context upon a data transfer from one of the non-erring devices after the driver performs an error recovery resume operation. This can cause data corruption, since data to/from one device will be transferred to/from another device.

Workaround:

None. To prevent possible data corruption, the host driver should issue a device reset (port control set register, bit 1) if a command error is received while commands are outstanding to three or more devices simultaneously on a single SiI3124 SATA port.


(SiI3124-2 Rev 0.2 Errata, SiI-AN-0030-E)

My (temporary) workaround: never have more, than two PMP ports busy the same time on the same SATA channel.
That turned out to be a permanent one because Marvell 88SX7042 / 6042 is a much faster and more sophisticated chip without that shortcoming.

To bad, at the time the driver for 7042 was ready, the G5 was history.
So no FCode driver for 6042 / 7042.

Today the 7042 is very easy to come by - but the PCI-X sibling (6042) is very rare.

7042 is very much compatible with the last G5 with PCIe slots.