On 09/19/2017 12:52 PM, Christoph Hellwig wrote: > On Tue, Sep 19, 2017 at 12:49:21PM -0300, Guilherme G. Piccoli wrote: >> On 09/19/2017 12:37 PM, Christoph Hellwig wrote: >>> On Tue, Sep 19, 2017 at 12:11:55PM -0300, Guilherme G. Piccoli wrote: >>>> src_writel(dev, MUnit.IDR, IOP_SRC_RESET_MASK); >>>> + >>>> + msleep(5000); >>> >>> src_writel is a writel, and thus a posted MMIO write. You'll need >>> to have to a read first to make it a reliable timing base. >>> >> >> Just for my full understanding - you're saying a readl BEFORE >> src_writel() or AFTER src_writel() ? > > AFTER. Thanks! > >> I could add a read to some dummy register, but notice it was a sequence >> of readl's on aac_is_ctrl_up_and_running() that caused the failure of >> reset... > > Oh, ouch. I guess in that case we'll need to do the writel and pray, > but that would need a big comment explaining what's going on there. > Heheh you're right! But do you remember that quirk added on nvme? Basically, it was a similar scenario in which some adapters weren't happy in poll a register in nvme_wait_ready() right after we wrote in the Controller Config register when disabling a controller. Seems the same thing here, the controller is not being able to handle a read right after some internal procedure (reset) were initiated. If you have suggestion to improve the commit msg, let me know :) Thanks!