Hello, Shane. Huang, Shane wrote: > Quoting myself: >> static void ahci_disable_fbs(struct ata_port *ap) >> { >> struct ahci_port_priv *pp = ap->private_data; >> void __iomem *port_mmio = ahci_port_base(ap); >> u32 fbs; >> int rc; >> >> if (!pp->fbs_supported) >> return; >> >> WARN_ON(!pp->fbs_enabled); >> >> rc = ahci_stop_engine(ap); > > 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. 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