--- drivers/ata/ahci.c | 6 ++++ drivers/ata/ata_generic.c | 4 +++ drivers/ata/ata_piix.c | 8 ++++++ drivers/ata/libata-core.c | 52 ++++++++++++++++++++++++++++++++++++++++ drivers/ata/pata_acpi.c | 4 +++ drivers/ata/pata_ali.c | 7 +++++ drivers/ata/pata_amd.c | 9 ++++++ drivers/ata/pata_artop.c | 5 +++ drivers/ata/pata_at32.c | 4 +++ drivers/ata/pata_atiixp.c | 4 +++ drivers/ata/pata_bf54x.c | 4 +++ drivers/ata/pata_cmd640.c | 4 +++ drivers/ata/pata_cmd64x.c | 6 ++++ drivers/ata/pata_cs5520.c | 4 +++ drivers/ata/pata_cs5530.c | 4 +++ drivers/ata/pata_cs5535.c | 4 +++ drivers/ata/pata_cs5536.c | 4 +++ drivers/ata/pata_cypress.c | 4 +++ drivers/ata/pata_efar.c | 4 +++ drivers/ata/pata_hpt366.c | 4 +++ drivers/ata/pata_hpt37x.c | 7 +++++ drivers/ata/pata_hpt3x2n.c | 4 +++ drivers/ata/pata_hpt3x3.c | 4 +++ drivers/ata/pata_icside.c | 4 +++ drivers/ata/pata_isapnp.c | 4 +++ drivers/ata/pata_it8213.c | 4 +++ drivers/ata/pata_it821x.c | 5 +++ drivers/ata/pata_ixp4xx_cf.c | 4 +++ drivers/ata/pata_jmicron.c | 4 +++ drivers/ata/pata_legacy.c | 14 ++++++++++ drivers/ata/pata_marvell.c | 4 +++ drivers/ata/pata_mpc52xx.c | 4 +++ drivers/ata/pata_mpiix.c | 4 +++ drivers/ata/pata_netcell.c | 4 +++ drivers/ata/pata_ninja32.c | 4 +++ drivers/ata/pata_ns87410.c | 4 +++ drivers/ata/pata_ns87415.c | 5 +++ drivers/ata/pata_oldpiix.c | 4 +++ drivers/ata/pata_opti.c | 4 +++ drivers/ata/pata_optidma.c | 5 +++ drivers/ata/pata_pcmcia.c | 5 +++ drivers/ata/pata_pdc2027x.c | 5 +++ drivers/ata/pata_pdc202xx_old.c | 5 +++ drivers/ata/pata_platform.c | 4 +++ drivers/ata/pata_qdi.c | 5 +++ drivers/ata/pata_radisys.c | 4 +++ drivers/ata/pata_rz1000.c | 4 +++ drivers/ata/pata_sc1200.c | 4 +++ drivers/ata/pata_scc.c | 4 +++ drivers/ata/pata_serverworks.c | 5 +++ drivers/ata/pata_sil680.c | 4 +++ drivers/ata/pata_sis.c | 9 ++++++ drivers/ata/pata_sl82c105.c | 4 +++ drivers/ata/pata_triflex.c | 4 +++ drivers/ata/pata_via.c | 5 +++ drivers/ata/pata_winbond.c | 4 +++ drivers/ata/pdc_adma.c | 4 +++ drivers/ata/sata_fsl.c | 4 +++ drivers/ata/sata_inic162x.c | 4 +++ drivers/ata/sata_mv.c | 7 +++++ drivers/ata/sata_nv.c | 10 +++++++ drivers/ata/sata_promise.c | 6 ++++ drivers/ata/sata_qstor.c | 4 +++ drivers/ata/sata_sil.c | 4 +++ drivers/ata/sata_sil24.c | 4 +++ drivers/ata/sata_sis.c | 4 +++ drivers/ata/sata_svw.c | 4 +++ drivers/ata/sata_sx4.c | 4 +++ drivers/ata/sata_uli.c | 4 +++ drivers/ata/sata_via.c | 6 ++++ drivers/ata/sata_vsc.c | 4 +++ include/linux/libata.h | 3 ++ kernel/kallsyms.c | 1 73 files changed, 393 insertions(+) Index: work/drivers/ata/ahci.c =================================================================== --- work.orig/drivers/ata/ahci.c +++ work/drivers/ata/ahci.c @@ -2293,6 +2293,12 @@ static int ahci_init_one(struct pci_dev static int __init ahci_init(void) { + { + ata_dump_sht(DRV_NAME, &ahci_sht); + ata_dump_ops(DRV_NAME, &ahci_ops); + ata_dump_ops(DRV_NAME, &ahci_vt8251_ops); + ata_dump_ops(DRV_NAME, &ahci_p5wdh_ops); + } return pci_register_driver(&ahci_pci_driver); } Index: work/drivers/ata/ata_generic.c =================================================================== --- work.orig/drivers/ata/ata_generic.c +++ work/drivers/ata/ata_generic.c @@ -228,6 +228,10 @@ static struct pci_driver ata_generic_pci static int __init ata_generic_init(void) { + { + ata_dump_sht(DRV_NAME, &generic_sht); + ata_dump_ops(DRV_NAME, &generic_port_ops); + } return pci_register_driver(&ata_generic_pci_driver); } Index: work/drivers/ata/ata_piix.c =================================================================== --- work.orig/drivers/ata/ata_piix.c +++ work/drivers/ata/ata_piix.c @@ -1693,6 +1693,14 @@ static int __init piix_init(void) in_module_init = 0; DPRINTK("done\n"); + { + ata_dump_sht(DRV_NAME, &piix_sht); + ata_dump_ops(DRV_NAME, &piix_pata_ops); + ata_dump_ops(DRV_NAME, &ich_pata_ops); + ata_dump_ops(DRV_NAME, &piix_sata_ops); + ata_dump_ops(DRV_NAME, &piix_vmw_ops); + ata_dump_ops(DRV_NAME, &piix_sidpr_sata_ops); + } return 0; } Index: work/drivers/ata/libata-core.c =================================================================== --- work.orig/drivers/ata/libata-core.c +++ work/drivers/ata/libata-core.c @@ -7660,3 +7660,55 @@ EXPORT_SYMBOL_GPL(ata_cable_80wire); EXPORT_SYMBOL_GPL(ata_cable_unknown); EXPORT_SYMBOL_GPL(ata_cable_ignore); EXPORT_SYMBOL_GPL(ata_cable_sata); + +#include + +void ata_dump_sht(const char *drv_name, const struct scsi_host_template *sht) +{ + const int begin_off = offsetof(struct scsi_host_template, detect); + const int end_off = offsetof(struct scsi_host_template, eh_timed_out) + sizeof(void *); + char symname[KSYM_NAME_LEN]; + void **pp; + + if (lookup_symbol_name((unsigned long)sht, symname)) + snprintf(symname, KSYM_NAME_LEN, "%p", sht); + printk("SHT %s %s: %s", drv_name, symname, sht->name); + + for (pp = (void *)sht + begin_off; pp < (void **)((void *)sht + end_off); pp++) { + if (lookup_symbol_name((unsigned long)*pp, symname)) + snprintf(symname, KSYM_NAME_LEN, "%p", *pp); + printk(" <%s>", symname); + } + + printk(" %s %d %d %u %u %lu %d %u %u %u %u %u %u %u %u %u\n", + sht->proc_name, sht->can_queue, sht->this_id, + sht->sg_tablesize, sht->max_sectors, sht->dma_boundary, + sht->cmd_per_lun, sht->present, sht->supported_mode, + sht->unchecked_isa_dma, sht->use_clustering, sht->emulated, + sht->skip_settle_delay, sht->ordered_tag, sht->use_sg_chaining, + sht->max_host_blocked); +} +EXPORT_SYMBOL_GPL(ata_dump_sht); + +void ata_dump_ops(const char *drv_name, const struct ata_port_operations *ops) +{ + const int begin_off = 0; + const int end_off = offsetof(struct ata_port_operations, eng_timeout) + sizeof(void *); + struct ata_port_operations my_ops = *ops; + char symname[KSYM_NAME_LEN]; + void **pp; + + if (lookup_symbol_name((unsigned long)ops, symname)) + snprintf(symname, KSYM_NAME_LEN, "%p", ops); + printk("OPS %s %s:", drv_name, symname); + + //ata_finalize_port_ops(&my_ops); + + for (pp = (void *)&my_ops + begin_off; pp < (void **)((void *)&my_ops + end_off); pp++) { + if (lookup_symbol_name((unsigned long)*pp, symname)) + snprintf(symname, KSYM_NAME_LEN, "%p", *pp); + printk(" <%s>", symname); + } + printk("\n"); +} +EXPORT_SYMBOL_GPL(ata_dump_ops); Index: work/drivers/ata/pata_acpi.c =================================================================== --- work.orig/drivers/ata/pata_acpi.c +++ work/drivers/ata/pata_acpi.c @@ -335,6 +335,10 @@ static struct pci_driver pacpi_pci_drive static int __init pacpi_init(void) { + { + ata_dump_sht(DRV_NAME, &pacpi_sht); + ata_dump_ops(DRV_NAME, &pacpi_ops); + } return pci_register_driver(&pacpi_pci_driver); } Index: work/drivers/ata/pata_ali.c =================================================================== --- work.orig/drivers/ata/pata_ali.c +++ work/drivers/ata/pata_ali.c @@ -669,6 +669,13 @@ static struct pci_driver ali_pci_driver static int __init ali_init(void) { + { + ata_dump_sht(DRV_NAME, &ali_sht); + ata_dump_ops(DRV_NAME, &ali_early_port_ops); + ata_dump_ops(DRV_NAME, &ali_20_port_ops); + ata_dump_ops(DRV_NAME, &ali_c2_port_ops); + ata_dump_ops(DRV_NAME, &ali_c5_port_ops); + } return pci_register_driver(&ali_pci_driver); } Index: work/drivers/ata/pata_amd.c =================================================================== --- work.orig/drivers/ata/pata_amd.c +++ work/drivers/ata/pata_amd.c @@ -777,6 +777,15 @@ static struct pci_driver amd_pci_driver static int __init amd_init(void) { + { + ata_dump_sht(DRV_NAME, &amd_sht); + ata_dump_ops(DRV_NAME, &amd33_port_ops); + ata_dump_ops(DRV_NAME, &amd66_port_ops); + ata_dump_ops(DRV_NAME, &amd100_port_ops); + ata_dump_ops(DRV_NAME, &amd133_port_ops); + ata_dump_ops(DRV_NAME, &nv100_port_ops); + ata_dump_ops(DRV_NAME, &nv133_port_ops); + } return pci_register_driver(&amd_pci_driver); } Index: work/drivers/ata/pata_artop.c =================================================================== --- work.orig/drivers/ata/pata_artop.c +++ work/drivers/ata/pata_artop.c @@ -519,6 +519,11 @@ static struct pci_driver artop_pci_drive static int __init artop_init(void) { + { + ata_dump_sht(DRV_NAME, &artop_sht); + ata_dump_ops(DRV_NAME, &artop6210_ops); + ata_dump_ops(DRV_NAME, &artop6260_ops); + } return pci_register_driver(&artop_pci_driver); } Index: work/drivers/ata/pata_at32.c =================================================================== --- work.orig/drivers/ata/pata_at32.c +++ work/drivers/ata/pata_at32.c @@ -424,6 +424,10 @@ static struct platform_driver pata_at32_ static int __init pata_at32_init(void) { + { + ata_dump_sht(DRV_NAME, &at32_sht); + ata_dump_ops(DRV_NAME, &at32_port_ops); + } return platform_driver_probe(&pata_at32_driver, pata_at32_probe); } Index: work/drivers/ata/pata_atiixp.c =================================================================== --- work.orig/drivers/ata/pata_atiixp.c +++ work/drivers/ata/pata_atiixp.c @@ -308,6 +308,10 @@ static struct pci_driver atiixp_pci_driv static int __init atiixp_init(void) { + { + ata_dump_sht(DRV_NAME, &atiixp_sht); + ata_dump_ops(DRV_NAME, &atiixp_port_ops); + } return pci_register_driver(&atiixp_pci_driver); } Index: work/drivers/ata/pata_bf54x.c =================================================================== --- work.orig/drivers/ata/pata_bf54x.c +++ work/drivers/ata/pata_bf54x.c @@ -1608,6 +1608,10 @@ static int __init bfin_atapi_init(void) bfin_port_info[0].udma_mask = ATA_UDMA5; }; + { + ata_dump_sht(DRV_NAME, &bfin_sht); + ata_dump_ops(DRV_NAME, &bfin_pata_ops); + } return platform_driver_register(&bfin_atapi_driver); } Index: work/drivers/ata/pata_cmd640.c =================================================================== --- work.orig/drivers/ata/pata_cmd640.c +++ work/drivers/ata/pata_cmd640.c @@ -298,6 +298,10 @@ static struct pci_driver cmd640_pci_driv static int __init cmd640_init(void) { + { + ata_dump_sht(DRV_NAME, &cmd640_sht); + ata_dump_ops(DRV_NAME, &cmd640_port_ops); + } return pci_register_driver(&cmd640_pci_driver); } Index: work/drivers/ata/pata_cmd64x.c =================================================================== --- work.orig/drivers/ata/pata_cmd64x.c +++ work/drivers/ata/pata_cmd64x.c @@ -518,6 +518,12 @@ static struct pci_driver cmd64x_pci_driv static int __init cmd64x_init(void) { + { + ata_dump_sht(DRV_NAME, &cmd64x_sht); + ata_dump_ops(DRV_NAME, &cmd64x_port_ops); + ata_dump_ops(DRV_NAME, &cmd646r1_port_ops); + ata_dump_ops(DRV_NAME, &cmd648_port_ops); + } return pci_register_driver(&cmd64x_pci_driver); } Index: work/drivers/ata/pata_cs5520.c =================================================================== --- work.orig/drivers/ata/pata_cs5520.c +++ work/drivers/ata/pata_cs5520.c @@ -378,6 +378,10 @@ static struct pci_driver cs5520_pci_driv static int __init cs5520_init(void) { + { + ata_dump_sht(DRV_NAME, &cs5520_sht); + ata_dump_ops(DRV_NAME, &cs5520_port_ops); + } return pci_register_driver(&cs5520_pci_driver); } Index: work/drivers/ata/pata_cs5530.c =================================================================== --- work.orig/drivers/ata/pata_cs5530.c +++ work/drivers/ata/pata_cs5530.c @@ -404,6 +404,10 @@ static struct pci_driver cs5530_pci_driv static int __init cs5530_init(void) { + { + ata_dump_sht(DRV_NAME, &cs5530_sht); + ata_dump_ops(DRV_NAME, &cs5530_port_ops); + } return pci_register_driver(&cs5530_pci_driver); } Index: work/drivers/ata/pata_cs5535.c =================================================================== --- work.orig/drivers/ata/pata_cs5535.c +++ work/drivers/ata/pata_cs5535.c @@ -263,6 +263,10 @@ static struct pci_driver cs5535_pci_driv static int __init cs5535_init(void) { + { + ata_dump_sht(DRV_NAME, &cs5535_sht); + ata_dump_ops(DRV_NAME, &cs5535_port_ops); + } return pci_register_driver(&cs5535_pci_driver); } Index: work/drivers/ata/pata_cs5536.c =================================================================== --- work.orig/drivers/ata/pata_cs5536.c +++ work/drivers/ata/pata_cs5536.c @@ -324,6 +324,10 @@ static struct pci_driver cs5536_pci_driv static int __init cs5536_init(void) { + { + ata_dump_sht(DRV_NAME, &cs5536_sht); + ata_dump_ops(DRV_NAME, &cs5536_port_ops); + } return pci_register_driver(&cs5536_pci_driver); } Index: work/drivers/ata/pata_cypress.c =================================================================== --- work.orig/drivers/ata/pata_cypress.c +++ work/drivers/ata/pata_cypress.c @@ -200,6 +200,10 @@ static struct pci_driver cy82c693_pci_dr static int __init cy82c693_init(void) { + { + ata_dump_sht(DRV_NAME, &cy82c693_sht); + ata_dump_ops(DRV_NAME, &cy82c693_port_ops); + } return pci_register_driver(&cy82c693_pci_driver); } Index: work/drivers/ata/pata_efar.c =================================================================== --- work.orig/drivers/ata/pata_efar.c +++ work/drivers/ata/pata_efar.c @@ -336,6 +336,10 @@ static struct pci_driver efar_pci_driver static int __init efar_init(void) { + { + ata_dump_sht(DRV_NAME, &efar_sht); + ata_dump_ops(DRV_NAME, &efar_ops); + } return pci_register_driver(&efar_pci_driver); } Index: work/drivers/ata/pata_hpt366.c =================================================================== --- work.orig/drivers/ata/pata_hpt366.c +++ work/drivers/ata/pata_hpt366.c @@ -470,6 +470,10 @@ static struct pci_driver hpt36x_pci_driv static int __init hpt36x_init(void) { + { + ata_dump_sht(DRV_NAME, &hpt36x_sht); + ata_dump_ops(DRV_NAME, &hpt366_port_ops); + } return pci_register_driver(&hpt36x_pci_driver); } Index: work/drivers/ata/pata_hpt37x.c =================================================================== --- work.orig/drivers/ata/pata_hpt37x.c +++ work/drivers/ata/pata_hpt37x.c @@ -1187,6 +1187,13 @@ static struct pci_driver hpt37x_pci_driv static int __init hpt37x_init(void) { + { + ata_dump_sht(DRV_NAME, &hpt37x_sht); + ata_dump_ops(DRV_NAME, &hpt370_port_ops); + ata_dump_ops(DRV_NAME, &hpt370a_port_ops); + ata_dump_ops(DRV_NAME, &hpt372_port_ops); + ata_dump_ops(DRV_NAME, &hpt374_port_ops); + } return pci_register_driver(&hpt37x_pci_driver); } Index: work/drivers/ata/pata_hpt3x2n.c =================================================================== --- work.orig/drivers/ata/pata_hpt3x2n.c +++ work/drivers/ata/pata_hpt3x2n.c @@ -626,6 +626,10 @@ static struct pci_driver hpt3x2n_pci_dri static int __init hpt3x2n_init(void) { + { + ata_dump_sht(DRV_NAME, &hpt3x2n_sht); + ata_dump_ops(DRV_NAME, &hpt3x2n_port_ops); + } return pci_register_driver(&hpt3x2n_pci_driver); } Index: work/drivers/ata/pata_hpt3x3.c =================================================================== --- work.orig/drivers/ata/pata_hpt3x3.c +++ work/drivers/ata/pata_hpt3x3.c @@ -281,6 +281,10 @@ static struct pci_driver hpt3x3_pci_driv static int __init hpt3x3_init(void) { + { + ata_dump_sht(DRV_NAME, &hpt3x3_sht); + ata_dump_ops(DRV_NAME, &hpt3x3_port_ops); + } return pci_register_driver(&hpt3x3_pci_driver); } Index: work/drivers/ata/pata_icside.c =================================================================== --- work.orig/drivers/ata/pata_icside.c +++ work/drivers/ata/pata_icside.c @@ -665,6 +665,10 @@ static struct ecard_driver pata_icside_d static int __init pata_icside_init(void) { + { + ata_dump_sht(DRV_NAME, &pata_icside_sht); + ata_dump_ops(DRV_NAME, &pata_icside_port_ops); + } return ecard_register_driver(&pata_icside_driver); } Index: work/drivers/ata/pata_isapnp.c =================================================================== --- work.orig/drivers/ata/pata_isapnp.c +++ work/drivers/ata/pata_isapnp.c @@ -155,6 +155,10 @@ static struct pnp_driver isapnp_driver = static int __init isapnp_init(void) { + { + ata_dump_sht(DRV_NAME, &isapnp_sht); + ata_dump_ops(DRV_NAME, &isapnp_port_ops); + } return pnp_register_driver(&isapnp_driver); } Index: work/drivers/ata/pata_it8213.c =================================================================== --- work.orig/drivers/ata/pata_it8213.c +++ work/drivers/ata/pata_it8213.c @@ -347,6 +347,10 @@ static struct pci_driver it8213_pci_driv static int __init it8213_init(void) { + { + ata_dump_sht(DRV_NAME, &it8213_sht); + ata_dump_ops(DRV_NAME, &it8213_ops); + } return pci_register_driver(&it8213_pci_driver); } Index: work/drivers/ata/pata_it821x.c =================================================================== --- work.orig/drivers/ata/pata_it821x.c +++ work/drivers/ata/pata_it821x.c @@ -819,6 +819,11 @@ static struct pci_driver it821x_pci_driv static int __init it821x_init(void) { + { + ata_dump_sht(DRV_NAME, &it821x_sht); + ata_dump_ops(DRV_NAME, &it821x_smart_port_ops); + ata_dump_ops(DRV_NAME, &it821x_passthru_port_ops); + } return pci_register_driver(&it821x_pci_driver); } Index: work/drivers/ata/pata_ixp4xx_cf.c =================================================================== --- work.orig/drivers/ata/pata_ixp4xx_cf.c +++ work/drivers/ata/pata_ixp4xx_cf.c @@ -242,6 +242,10 @@ static struct platform_driver ixp4xx_pat static int __init ixp4xx_pata_init(void) { + { + ata_dump_sht(DRV_NAME, &ixp4xx_sht); + ata_dump_ops(DRV_NAME, &ixp4xx_port_ops); + } return platform_driver_register(&ixp4xx_pata_platform_driver); } Index: work/drivers/ata/pata_jmicron.c =================================================================== --- work.orig/drivers/ata/pata_jmicron.c +++ work/drivers/ata/pata_jmicron.c @@ -222,6 +222,10 @@ static struct pci_driver jmicron_pci_dri static int __init jmicron_init(void) { + { + ata_dump_sht(DRV_NAME, &jmicron_sht); + ata_dump_ops(DRV_NAME, &jmicron_ops); + } return pci_register_driver(&jmicron_pci_driver); } Index: work/drivers/ata/pata_legacy.c =================================================================== --- work.orig/drivers/ata/pata_legacy.c +++ work/drivers/ata/pata_legacy.c @@ -1507,6 +1507,20 @@ static __init int legacy_init(void) } if (ct != 0) return 0; + { + ata_dump_sht(DRV_NAME, &legacy_sht); + ata_dump_ops(DRV_NAME, &simple_port_ops); + ata_dump_ops(DRV_NAME, &legacy_port_ops); + ata_dump_ops(DRV_NAME, &pdc20230_port_ops); + ata_dump_ops(DRV_NAME, &ht6560a_port_ops); + ata_dump_ops(DRV_NAME, &ht6560b_port_ops); + ata_dump_ops(DRV_NAME, &opti82c611a_port_ops); + ata_dump_ops(DRV_NAME, &opti82c46x_port_ops); + ata_dump_ops(DRV_NAME, &qdi6500_port_ops); + ata_dump_ops(DRV_NAME, &qdi6580_port_ops); + ata_dump_ops(DRV_NAME, &qdi6580dp_port_ops); + ata_dump_ops(DRV_NAME, &winbond_port_ops); + } return -ENODEV; } Index: work/drivers/ata/pata_marvell.c =================================================================== --- work.orig/drivers/ata/pata_marvell.c +++ work/drivers/ata/pata_marvell.c @@ -210,6 +210,10 @@ static struct pci_driver marvell_pci_dri static int __init marvell_init(void) { + { + ata_dump_sht(DRV_NAME, &marvell_sht); + ata_dump_ops(DRV_NAME, &marvell_ops); + } return pci_register_driver(&marvell_pci_driver); } Index: work/drivers/ata/pata_mpc52xx.c =================================================================== --- work.orig/drivers/ata/pata_mpc52xx.c +++ work/drivers/ata/pata_mpc52xx.c @@ -527,6 +527,10 @@ static int __init mpc52xx_ata_init(void) { printk(KERN_INFO "ata: MPC52xx IDE/ATA libata driver\n"); + { + ata_dump_sht(DRV_NAME, &mpc52xx_ata_sht); + ata_dump_ops(DRV_NAME, &mpc52xx_ata_port_ops); + } return of_register_platform_driver(&mpc52xx_ata_of_platform_driver); } Index: work/drivers/ata/pata_mpiix.c =================================================================== --- work.orig/drivers/ata/pata_mpiix.c +++ work/drivers/ata/pata_mpiix.c @@ -278,6 +278,10 @@ static struct pci_driver mpiix_pci_drive static int __init mpiix_init(void) { + { + ata_dump_sht(DRV_NAME, &mpiix_sht); + ata_dump_ops(DRV_NAME, &mpiix_port_ops); + } return pci_register_driver(&mpiix_pci_driver); } Index: work/drivers/ata/pata_netcell.c =================================================================== --- work.orig/drivers/ata/pata_netcell.c +++ work/drivers/ata/pata_netcell.c @@ -137,6 +137,10 @@ static struct pci_driver netcell_pci_dri static int __init netcell_init(void) { + { + ata_dump_sht(DRV_NAME, &netcell_sht); + ata_dump_ops(DRV_NAME, &netcell_ops); + } return pci_register_driver(&netcell_pci_driver); } Index: work/drivers/ata/pata_ninja32.c =================================================================== --- work.orig/drivers/ata/pata_ninja32.c +++ work/drivers/ata/pata_ninja32.c @@ -196,6 +196,10 @@ static struct pci_driver ninja32_pci_dri static int __init ninja32_init(void) { + { + ata_dump_sht(DRV_NAME, &ninja32_sht); + ata_dump_ops(DRV_NAME, &ninja32_port_ops); + } return pci_register_driver(&ninja32_pci_driver); } Index: work/drivers/ata/pata_ns87410.c =================================================================== --- work.orig/drivers/ata/pata_ns87410.c +++ work/drivers/ata/pata_ns87410.c @@ -219,6 +219,10 @@ static struct pci_driver ns87410_pci_dri static int __init ns87410_init(void) { + { + ata_dump_sht(DRV_NAME, &ns87410_sht); + ata_dump_ops(DRV_NAME, &ns87410_port_ops); + } return pci_register_driver(&ns87410_pci_driver); } Index: work/drivers/ata/pata_ns87415.c =================================================================== --- work.orig/drivers/ata/pata_ns87415.c +++ work/drivers/ata/pata_ns87415.c @@ -457,6 +457,11 @@ static struct pci_driver ns87415_pci_dri static int __init ns87415_init(void) { + { + ata_dump_sht(DRV_NAME, &ns87415_sht); + //ata_dump_ops(DRV_NAME, &ns87560_pata_ops); + ata_dump_ops(DRV_NAME, &ns87415_pata_ops); + } return pci_register_driver(&ns87415_pci_driver); } Index: work/drivers/ata/pata_oldpiix.c =================================================================== --- work.orig/drivers/ata/pata_oldpiix.c +++ work/drivers/ata/pata_oldpiix.c @@ -323,6 +323,10 @@ static struct pci_driver oldpiix_pci_dri static int __init oldpiix_init(void) { + { + ata_dump_sht(DRV_NAME, &oldpiix_sht); + ata_dump_ops(DRV_NAME, &oldpiix_pata_ops); + } return pci_register_driver(&oldpiix_pci_driver); } Index: work/drivers/ata/pata_opti.c =================================================================== --- work.orig/drivers/ata/pata_opti.c +++ work/drivers/ata/pata_opti.c @@ -251,6 +251,10 @@ static struct pci_driver opti_pci_driver static int __init opti_init(void) { + { + ata_dump_sht(DRV_NAME, &opti_sht); + ata_dump_ops(DRV_NAME, &opti_port_ops); + } return pci_register_driver(&opti_pci_driver); } Index: work/drivers/ata/pata_optidma.c =================================================================== --- work.orig/drivers/ata/pata_optidma.c +++ work/drivers/ata/pata_optidma.c @@ -538,6 +538,11 @@ static struct pci_driver optidma_pci_dri static int __init optidma_init(void) { + { + ata_dump_sht(DRV_NAME, &optidma_sht); + ata_dump_ops(DRV_NAME, &optidma_port_ops); + ata_dump_ops(DRV_NAME, &optiplus_port_ops); + } return pci_register_driver(&optidma_pci_driver); } Index: work/drivers/ata/pata_pcmcia.c =================================================================== --- work.orig/drivers/ata/pata_pcmcia.c +++ work/drivers/ata/pata_pcmcia.c @@ -499,6 +499,11 @@ static struct pcmcia_driver pcmcia_drive static int __init pcmcia_init(void) { + { + ata_dump_sht(DRV_NAME, &pcmcia_sht); + ata_dump_ops(DRV_NAME, &pcmcia_port_ops); + ata_dump_ops(DRV_NAME, &pcmcia_8bit_port_ops); + } return pcmcia_register_driver(&pcmcia_driver); } Index: work/drivers/ata/pata_pdc2027x.c =================================================================== --- work.orig/drivers/ata/pata_pdc2027x.c +++ work/drivers/ata/pata_pdc2027x.c @@ -845,6 +845,11 @@ static int __devinit pdc2027x_init_one(s */ static int __init pdc2027x_init(void) { + { + ata_dump_sht(DRV_NAME, &pdc2027x_sht); + ata_dump_ops(DRV_NAME, &pdc2027x_pata100_ops); + ata_dump_ops(DRV_NAME, &pdc2027x_pata133_ops); + } return pci_register_driver(&pdc2027x_pci_driver); } Index: work/drivers/ata/pata_pdc202xx_old.c =================================================================== --- work.orig/drivers/ata/pata_pdc202xx_old.c +++ work/drivers/ata/pata_pdc202xx_old.c @@ -412,6 +412,11 @@ static struct pci_driver pdc202xx_pci_dr static int __init pdc202xx_init(void) { + { + ata_dump_sht(DRV_NAME, &pdc202xx_sht); + ata_dump_ops(DRV_NAME, &pdc2024x_port_ops); + ata_dump_ops(DRV_NAME, &pdc2026x_port_ops); + } return pci_register_driver(&pdc202xx_pci_driver); } Index: work/drivers/ata/pata_platform.c =================================================================== --- work.orig/drivers/ata/pata_platform.c +++ work/drivers/ata/pata_platform.c @@ -263,6 +263,10 @@ static struct platform_driver pata_platf static int __init pata_platform_init(void) { + { + ata_dump_sht(DRV_NAME, &pata_platform_sht); + ata_dump_ops(DRV_NAME, &pata_platform_port_ops); + } return platform_driver_register(&pata_platform_driver); } Index: work/drivers/ata/pata_qdi.c =================================================================== --- work.orig/drivers/ata/pata_qdi.c +++ work/drivers/ata/pata_qdi.c @@ -390,6 +390,11 @@ static __init int qdi_init(void) } if (ct != 0) return 0; + { + ata_dump_sht(DRV_NAME, &qdi_sht); + ata_dump_ops(DRV_NAME, &qdi6500_port_ops); + ata_dump_ops(DRV_NAME, &qdi6580_port_ops); + } return -ENODEV; } Index: work/drivers/ata/pata_radisys.c =================================================================== --- work.orig/drivers/ata/pata_radisys.c +++ work/drivers/ata/pata_radisys.c @@ -289,6 +289,10 @@ static struct pci_driver radisys_pci_dri static int __init radisys_init(void) { + { + ata_dump_sht(DRV_NAME, &radisys_sht); + ata_dump_ops(DRV_NAME, &radisys_pata_ops); + } return pci_register_driver(&radisys_pci_driver); } Index: work/drivers/ata/pata_rz1000.c =================================================================== --- work.orig/drivers/ata/pata_rz1000.c +++ work/drivers/ata/pata_rz1000.c @@ -179,6 +179,10 @@ static struct pci_driver rz1000_pci_driv static int __init rz1000_init(void) { + { + ata_dump_sht(DRV_NAME, &rz1000_sht); + ata_dump_ops(DRV_NAME, &rz1000_port_ops); + } return pci_register_driver(&rz1000_pci_driver); } Index: work/drivers/ata/pata_sc1200.c =================================================================== --- work.orig/drivers/ata/pata_sc1200.c +++ work/drivers/ata/pata_sc1200.c @@ -274,6 +274,10 @@ static struct pci_driver sc1200_pci_driv static int __init sc1200_init(void) { + { + ata_dump_sht(DRV_NAME, &sc1200_sht); + ata_dump_ops(DRV_NAME, &sc1200_port_ops); + } return pci_register_driver(&sc1200_pci_driver); } Index: work/drivers/ata/pata_scc.c =================================================================== --- work.orig/drivers/ata/pata_scc.c +++ work/drivers/ata/pata_scc.c @@ -1189,6 +1189,10 @@ static int __init scc_init (void) return rc; DPRINTK("done\n"); + { + ata_dump_sht(DRV_NAME, &scc_sht); + ata_dump_ops(DRV_NAME, &scc_pata_ops); + } return 0; } Index: work/drivers/ata/pata_serverworks.c =================================================================== --- work.orig/drivers/ata/pata_serverworks.c +++ work/drivers/ata/pata_serverworks.c @@ -594,6 +594,11 @@ static struct pci_driver serverworks_pci static int __init serverworks_init(void) { + { + ata_dump_sht(DRV_NAME, &serverworks_sht); + ata_dump_ops(DRV_NAME, &serverworks_osb4_port_ops); + ata_dump_ops(DRV_NAME, &serverworks_csb_port_ops); + } return pci_register_driver(&serverworks_pci_driver); } Index: work/drivers/ata/pata_sil680.c =================================================================== --- work.orig/drivers/ata/pata_sil680.c +++ work/drivers/ata/pata_sil680.c @@ -437,6 +437,10 @@ static struct pci_driver sil680_pci_driv static int __init sil680_init(void) { + { + ata_dump_sht(DRV_NAME, &sil680_sht); + ata_dump_ops(DRV_NAME, &sil680_port_ops); + } return pci_register_driver(&sil680_pci_driver); } Index: work/drivers/ata/pata_sis.c =================================================================== --- work.orig/drivers/ata/pata_sis.c +++ work/drivers/ata/pata_sis.c @@ -1027,6 +1027,15 @@ static struct pci_driver sis_pci_driver static int __init sis_init(void) { + { + ata_dump_sht(DRV_NAME, &sis_sht); + ata_dump_ops(DRV_NAME, &sis_133_ops); + ata_dump_ops(DRV_NAME, &sis_133_for_sata_ops); + ata_dump_ops(DRV_NAME, &sis_133_early_ops); + ata_dump_ops(DRV_NAME, &sis_100_ops); + ata_dump_ops(DRV_NAME, &sis_66_ops); + ata_dump_ops(DRV_NAME, &sis_old_ops); + } return pci_register_driver(&sis_pci_driver); } Index: work/drivers/ata/pata_sl82c105.c =================================================================== --- work.orig/drivers/ata/pata_sl82c105.c +++ work/drivers/ata/pata_sl82c105.c @@ -352,6 +352,10 @@ static struct pci_driver sl82c105_pci_dr static int __init sl82c105_init(void) { + { + ata_dump_sht(DRV_NAME, &sl82c105_sht); + ata_dump_ops(DRV_NAME, &sl82c105_port_ops); + } return pci_register_driver(&sl82c105_pci_driver); } Index: work/drivers/ata/pata_triflex.c =================================================================== --- work.orig/drivers/ata/pata_triflex.c +++ work/drivers/ata/pata_triflex.c @@ -267,6 +267,10 @@ static struct pci_driver triflex_pci_dri static int __init triflex_init(void) { + { + ata_dump_sht(DRV_NAME, &triflex_sht); + ata_dump_ops(DRV_NAME, &triflex_port_ops); + } return pci_register_driver(&triflex_pci_driver); } Index: work/drivers/ata/pata_via.c =================================================================== --- work.orig/drivers/ata/pata_via.c +++ work/drivers/ata/pata_via.c @@ -665,6 +665,11 @@ static struct pci_driver via_pci_driver static int __init via_init(void) { + { + ata_dump_sht(DRV_NAME, &via_sht); + ata_dump_ops(DRV_NAME, &via_port_ops); + ata_dump_ops(DRV_NAME, &via_port_ops_noirq); + } return pci_register_driver(&via_pci_driver); } Index: work/drivers/ata/pata_winbond.c =================================================================== --- work.orig/drivers/ata/pata_winbond.c +++ work/drivers/ata/pata_winbond.c @@ -289,6 +289,10 @@ static __init int winbond_init(void) } if (ct != 0) return 0; + { + ata_dump_sht(DRV_NAME, &winbond_sht); + ata_dump_ops(DRV_NAME, &winbond_port_ops); + } return -ENODEV; } Index: work/drivers/ata/pdc_adma.c =================================================================== --- work.orig/drivers/ata/pdc_adma.c +++ work/drivers/ata/pdc_adma.c @@ -723,6 +723,10 @@ static int adma_ata_init_one(struct pci_ static int __init adma_ata_init(void) { + { + ata_dump_sht(DRV_NAME, &adma_ata_sht); + ata_dump_ops(DRV_NAME, &adma_ata_ops); + } return pci_register_driver(&adma_ata_pci_driver); } Index: work/drivers/ata/sata_fsl.c =================================================================== --- work.orig/drivers/ata/sata_fsl.c +++ work/drivers/ata/sata_fsl.c @@ -1373,6 +1373,10 @@ static struct of_platform_driver fsl_sat static int __init sata_fsl_init(void) { of_register_platform_driver(&fsl_sata_driver); + { + ata_dump_sht(DRV_NAME, &sata_fsl_sht); + ata_dump_ops(DRV_NAME, &sata_fsl_ops); + } return 0; } Index: work/drivers/ata/sata_inic162x.c =================================================================== --- work.orig/drivers/ata/sata_inic162x.c +++ work/drivers/ata/sata_inic162x.c @@ -755,6 +755,10 @@ static struct pci_driver inic_pci_driver static int __init inic_init(void) { + { + ata_dump_sht(DRV_NAME, &inic_sht); + ata_dump_ops(DRV_NAME, &inic_port_ops); + } return pci_register_driver(&inic_pci_driver); } Index: work/drivers/ata/sata_mv.c =================================================================== --- work.orig/drivers/ata/sata_mv.c +++ work/drivers/ata/sata_mv.c @@ -2755,6 +2755,13 @@ static int mv_init_one(struct pci_dev *p static int __init mv_init(void) { + { + ata_dump_sht(DRV_NAME, &mv5_sht); + ata_dump_sht(DRV_NAME, &mv6_sht); + ata_dump_ops(DRV_NAME, &mv5_ops); + ata_dump_ops(DRV_NAME, &mv6_ops); + ata_dump_ops(DRV_NAME, &mv_iie_ops); + } return pci_register_driver(&mv_pci_driver); } Index: work/drivers/ata/sata_nv.c =================================================================== --- work.orig/drivers/ata/sata_nv.c +++ work/drivers/ata/sata_nv.c @@ -2529,6 +2529,16 @@ static void nv_adma_host_stop(struct ata static int __init nv_init(void) { + { + ata_dump_sht(DRV_NAME, &nv_sht); + ata_dump_sht(DRV_NAME, &nv_adma_sht); + ata_dump_sht(DRV_NAME, &nv_swncq_sht); + ata_dump_ops(DRV_NAME, &nv_generic_ops); + ata_dump_ops(DRV_NAME, &nv_nf2_ops); + ata_dump_ops(DRV_NAME, &nv_ck804_ops); + ata_dump_ops(DRV_NAME, &nv_adma_ops); + ata_dump_ops(DRV_NAME, &nv_swncq_ops); + } return pci_register_driver(&nv_pci_driver); } Index: work/drivers/ata/sata_promise.c =================================================================== --- work.orig/drivers/ata/sata_promise.c +++ work/drivers/ata/sata_promise.c @@ -1106,6 +1106,12 @@ static int pdc_ata_init_one(struct pci_d static int __init pdc_ata_init(void) { + { + ata_dump_sht(DRV_NAME, &pdc_ata_sht); + ata_dump_ops(DRV_NAME, &pdc_sata_ops); + ata_dump_ops(DRV_NAME, &pdc_old_sata_ops); + ata_dump_ops(DRV_NAME, &pdc_pata_ops); + } return pci_register_driver(&pdc_ata_pci_driver); } Index: work/drivers/ata/sata_qstor.c =================================================================== --- work.orig/drivers/ata/sata_qstor.c +++ work/drivers/ata/sata_qstor.c @@ -677,6 +677,10 @@ static int qs_ata_init_one(struct pci_de static int __init qs_ata_init(void) { + { + ata_dump_sht(DRV_NAME, &qs_ata_sht); + ata_dump_ops(DRV_NAME, &qs_ata_ops); + } return pci_register_driver(&qs_ata_pci_driver); } Index: work/drivers/ata/sata_sil.c =================================================================== --- work.orig/drivers/ata/sata_sil.c +++ work/drivers/ata/sata_sil.c @@ -719,6 +719,10 @@ static int sil_pci_device_resume(struct static int __init sil_init(void) { + { + ata_dump_sht(DRV_NAME, &sil_sht); + ata_dump_ops(DRV_NAME, &sil_ops); + } return pci_register_driver(&sil_pci_driver); } Index: work/drivers/ata/sata_sil24.c =================================================================== --- work.orig/drivers/ata/sata_sil24.c +++ work/drivers/ata/sata_sil24.c @@ -1412,6 +1412,10 @@ static int sil24_port_resume(struct ata_ static int __init sil24_init(void) { + { + ata_dump_sht(DRV_NAME, &sil24_sht); + ata_dump_ops(DRV_NAME, &sil24_ops); + } return pci_register_driver(&sil24_pci_driver); } Index: work/drivers/ata/sata_sis.c =================================================================== --- work.orig/drivers/ata/sata_sis.c +++ work/drivers/ata/sata_sis.c @@ -366,6 +366,10 @@ static int sis_init_one(struct pci_dev * static int __init sis_init(void) { + { + ata_dump_sht(DRV_NAME, &sis_sht); + ata_dump_ops(DRV_NAME, &sis_ops); + } return pci_register_driver(&sis_pci_driver); } Index: work/drivers/ata/sata_svw.c =================================================================== --- work.orig/drivers/ata/sata_svw.c +++ work/drivers/ata/sata_svw.c @@ -502,6 +502,10 @@ static struct pci_driver k2_sata_pci_dri static int __init k2_sata_init(void) { + { + ata_dump_sht(DRV_NAME, &k2_sata_sht); + ata_dump_ops(DRV_NAME, &k2_sata_ops); + } return pci_register_driver(&k2_sata_pci_driver); } Index: work/drivers/ata/sata_sx4.c =================================================================== --- work.orig/drivers/ata/sata_sx4.c +++ work/drivers/ata/sata_sx4.c @@ -1444,6 +1444,10 @@ static int pdc_sata_init_one(struct pci_ static int __init pdc_sata_init(void) { + { + ata_dump_sht(DRV_NAME, &pdc_sata_sht); + ata_dump_ops(DRV_NAME, &pdc_20621_ops); + } return pci_register_driver(&pdc_sata_pci_driver); } Index: work/drivers/ata/sata_uli.c =================================================================== --- work.orig/drivers/ata/sata_uli.c +++ work/drivers/ata/sata_uli.c @@ -286,6 +286,10 @@ static int uli_init_one(struct pci_dev * static int __init uli_init(void) { + { + ata_dump_sht(DRV_NAME, &uli_sht); + ata_dump_ops(DRV_NAME, &uli_ops); + } return pci_register_driver(&uli_pci_driver); } Index: work/drivers/ata/sata_via.c =================================================================== --- work.orig/drivers/ata/sata_via.c +++ work/drivers/ata/sata_via.c @@ -550,6 +550,12 @@ static int svia_init_one(struct pci_dev static int __init svia_init(void) { + { + ata_dump_sht(DRV_NAME, &svia_sht); + ata_dump_ops(DRV_NAME, &vt6420_sata_ops); + ata_dump_ops(DRV_NAME, &vt6421_pata_ops); + ata_dump_ops(DRV_NAME, &vt6421_sata_ops); + } return pci_register_driver(&svia_pci_driver); } Index: work/drivers/ata/sata_vsc.c =================================================================== --- work.orig/drivers/ata/sata_vsc.c +++ work/drivers/ata/sata_vsc.c @@ -472,6 +472,10 @@ static struct pci_driver vsc_sata_pci_dr static int __init vsc_sata_init(void) { + { + ata_dump_sht(DRV_NAME, &vsc_sata_sht); + ata_dump_ops(DRV_NAME, &vsc_sata_ops); + } return pci_register_driver(&vsc_sata_pci_driver); } Index: work/include/linux/libata.h =================================================================== --- work.orig/include/linux/libata.h +++ work/include/linux/libata.h @@ -790,6 +790,9 @@ static inline int ata_port_is_dummy(stru return ap->ops == &ata_dummy_port_ops; } +extern void ata_dump_sht(const char *drv_name, const struct scsi_host_template *sht); +extern void ata_dump_ops(const char *drv_name, const struct ata_port_operations *ops); + extern void sata_print_link_status(struct ata_link *link); extern void ata_port_probe(struct ata_port *); extern void ata_bus_reset(struct ata_port *ap); Index: work/kernel/kallsyms.c =================================================================== --- work.orig/kernel/kallsyms.c +++ work/kernel/kallsyms.c @@ -291,6 +291,7 @@ int lookup_symbol_name(unsigned long add /* see if it's in a module */ return lookup_module_symbol_name(addr, symname); } +EXPORT_SYMBOL_GPL(lookup_symbol_name); int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name)