Hello, all. This is the first take of new-init-model patchset. This patchset implements new init model for libata LLDs. The new init model has the following benefits. * Consistency across different LLDs Provide helpers such that common codes live in one place and init sequence doesn't have to be creative. * Flexibility and easy code sharing with suspend/resume Instead of using probe_ent, allocate host_set and initialize it directly. This removes many restrictions of probe_ent and allows LLDs to share init/remove codes with suspend/resume easily as they use the same target data structure. IRQ management is also moved out of libata-core into libata-pci helpers which LLDs can use or override at will. * More bookkeeping in libata-core, less in LLDDs Acquired resources are tracked by libata-core and helpers. e.g. LLD doesn't have to remember which resources it has acquired, it can simply tell libata to release all resources on error path and driver detachments. This simplies LLDs and fixes several dangling resource and double-free bugs. * Support for iomap As with all other PCI resources, both PIO and mmio areas are managed by libata PCI helpers. iomaps are automatically created on IO resource acqusition and destroyed on release. LLDs can simply request which BARs it intends to use. The rest is handled by libata PCI helpers. This patchset has been tested on * ata_piix : ICH7R, most combinations and w/ induced resource allocation errors * ahci : ICH7R * sata_sil : sil3112, sil3114 * sata_sil24 : sil3124, sil3132 * sata_via : vt6420 (via C3) * pdc_adma : as broken as previous * sata_promise : PDC20375, tested w/ PATA port too (PATA bits not included in this post) If you have any controller which use one of the following drivers, please test and report. * sata_svw * sata_sx4 * sata_uli * sata_vsc * sata_sis * sata_qstor * sata_nv (I can do this later) * sata_mv If this patchset is agreed upon, I'll update #pata-drivers accordingly. This patchset is against [U] upstream [1] + #upstream-fixes + several-fixes-against-upstream-fixes merged [2] + improve-initialization-and-legacy-handling patchset, take #2 [3] + ahci-remove-irq-clearing-from-init_controller [U] + [1] + [2] is #tj-upstream which is available at the following URLs. http://htj.dyndns.org/git/?p=libata-tj.git;a=shortlog;h=tj-upstream git://htj.dyndns.org/libata-tj tj-upstream Thanks. -- tejun [U] 236a686b56428a8967a057a2396f9be74e2ee652 [1] http://article.gmane.org/gmane.linux.ide/12393 [2] http://article.gmane.org/gmane.linux.ide/12422 [3] http://article.gmane.org/gmane.linux.ide/12423 - : 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