# Marvell 88SX7042 controller only shows 2 drives instead of 4



## Redguy (Jul 31, 2017)

I'm trying to convert a QNAP TS-419P NAS to a FreeNAS setup.

The little 4 drive box contains a mini ITX size arm based mother board connected to the hard disk backplane through a PCI-E x4 connector.  The actual SATA controller for the 4 drives is on the backplane itself! It contains a Marvel 88SX4072 SATA2 controller.
So my hobby project is to ditch the ARM based motherboard, and hookup the harddisk backplane to something Intel based through the PCI-E connector. (Just for the fun of it)

In my case, it's a little Intel NUC board. I first plugged in an M.2 -> PCI-E x4 converter board. After supplying the board with an external 5V/12V power feed (there a floppy drive header on the converter board for that) I plugged in an Intel based PCI-E x4 NIC and this works great!
Next was to plug the QNAP harddisk backplane in to the NUC. 

The NAS was still functioning as it should, with all 4 drives operational before i began the operation, and i have tested it a few times during as well. All drives show up if i boot the original setup using the ARM based motherboard.

When I boot up FreeNAS on the NUC connected to the harddisk backplane however, the Marvel chip shows up nicely, and so do the first 2 harddisk drives plugged in ! 

Boot output : 

```
mvs0: <Marvell 88SX7042 SATA controller> port 0xe000-0xe0ff mem 0xdf000000-0xdf0fffff irq 16 at device 0.0 on pci1
mvs0: Gen-IIe, 4 3Gbps ports, Port Multiplier supported with FBS
mvsch0: <Marvell SATA channel> at channel 0 on mvs0
mvsch1: <Marvell SATA channel> at channel 1 on mvs0
mvsch2: <Marvell SATA channel> at channel 2 on mvs0
mvsch3: <Marvell SATA channel> at channel 3 on mvs0
..
..
ada0 at mvsch0 bus 0 scbus1 target 0 lun 0
ada0: <WDC WD2002FYPS-01U1B1 04.05G05> ATA8-ACS SATA 2.x device
ada0: Serial Number WD-WCAVY4816819
ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 1907729MB (3907029168 512 byte sectors)
ada1 at mvsch1 bus 0 scbus2 target 0 lun 0
ada1: <WDC WD2002FYPS-02W3B0 04.01G01> ATA8-ACS SATA 2.x device
ada1: Serial Number WD-WCAVY6793666
ada1: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada1: Command Queueing enabled
ada1: 1907729MB (3907029168 512 byte sectors)
..
```
Problem is, only the first 2 drives show up. The drives plugged into slots 3 and 4 don't show up.  The marvel chip is recognized as itself :

```
lspci -vv output : 

01:00.0 SCSI storage controller: Marvell Technology Group Ltd. 88SX7042 PCI-e 4-port SATA-II (rev 02)
        Subsystem: Marvell Technology Group Ltd. Device 11ab
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at df000000 (64-bit, non-prefetchable)
        Region 2: I/O ports at e000
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME+
        Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
                Address: 0000000000000000  Data: 0000
        Capabilities: [60] Express (v1) Legacy Endpoint, MSI 00
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <256ns, L1 <1us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE- FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s, Exit Latency L0s <256ns, L1 unlimited
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM Disabled; RCB 128 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
```

I have not been able to find a datasheet for the 88sx7042 chip, but i think it contains a SATA multiplier. Which is fine with me, this thing does not have to be lightning fast.   But why only see the first 2 channels? Only drives plugged in to the first 2 channels are recognized, drives in the last 2 channels are always ignored, even with the first to empty.

Any clues on this? Google searches show the 88SX7042 to be fairly common and well supported. Perhaps I need to tweak some settings?


----------



## SirDice (Jul 31, 2017)

PC-BSD, FreeNAS, NAS4Free, and all other FreeBSD Derivatives


----------

