On Wed, Mar 26, 2014 at 03:09:18PM +0100, Sebastian Hesselbarth wrote: > On 03/26/2014 02:55 PM, Andrew Lunn wrote: > >>* Martin Waschbuesch <mar...@waschbuesch.de> [2013-07-04 19:12]: > >>>Package: src:linux Version: 3.2.46-1 Severity: normal Tags: > >>>upstream patch > >>> > >>>Dear Maintainer, > >>> > >>>On my QNAP TS-412, after a clean install of Wheezy, the kernel > >>>fails to bring up all sata ports (using Marvell 88SX7042 via > >>>sata_mv driver) before md/raid tries to assemble the array. The > >>>same disks/array work in a different model (TS-410) and the > >>>drives/array from said TS-410 also fail in my TS-412. At the same > >>>time, using the original QNAP firmware, everything works as > >>>expected. > > > >I _guess_ the real problem here is the power supply. It cannot > >supply enough power to get all the drives spinning if they all start > >at the same time. Many of the multi-bay NAS boxes have GPIO lines > >which are used to individually power up each driver in a staggered > >way. The QNAP kernel patch is doing something similar. However in its > >current form it cannot be accepted. This delay needs to be made > >conditional and only applied on hardware with a weak power supply. > > > >I will take a look at the code and see how the platform can pass a > >flag to the driver that it needs to stagger port initialization. > > Actually, the code in question is not SoC's mvsata but PCI's mvsata, > I guess.
Yes, it is a 4 port controller on the PCI bus, not the two ports in the SoC. Same problem though. It also seems like this is not the first board with this problem: drivers/ata/libata-core.c: static void async_port_probe(void *data, async_cookie_t cookie) { struct ata_port *ap = data; /* * If we're not allowed to scan this host in parallel, * we need to wait until all previous scans have completed * before going further. * Jeff Garzik says this is only within a controller, so we * don't need to wait for port 0, only for later ports. */ if (!(ap->host->flags & ATA_HOST_PARALLEL_SCAN) && ap->port_no != 0) async_synchronize_cookie(cookie); I need to check if sata_mv is using this code, and what flags it has set. Andrew -- To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20140326140807.gf25...@lunn.ch