Huang, Shane wrote: > Hi Tejun, > > >> -----Original Message----- >> From: Tejun Heo [mailto:tj@xxxxxxxxxx] >>> I find that ahci_pmp_detach() will be called for each SATA port >>> during the initialization, right after print: >>>> ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp fbs... >>> so will ahci_disable_fbs() be called, which leads to the trigger >>> of WARN_ON(). >> Ah.. right. ahci_port_resume() does that to make sure that all PMP >> bits are cleared on init. Hmmm... probably it would be better to make >> ahci_disable_fbs() to just do it regardless of libata thinks whether >> PMP is attached or not. After resume from STR, we shouldn't be >> assuming anything about the controller state. > > > I have added sata_pmp_attached() check for both ahci_enable_fbs() > and ahci_disable_fbs(), because I believe it's necessary. > > if (!pp->fbs_supported || !sata_pmp_attached(ap)) > return; > > What do you mean to make it better? How to? I do not catch your > above words very much... I meant that sata_pmp_attached() is a driver state and might not match the controller state after resume which is why the ahci driver calls detach in the first place regardless of sata_pmp_attached(), so it might be better to check the register directly and set or clear it regardless of sata_pmp_attached(). Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html