Hi, > How come ap->lock can get set to bogus address? Can you please printk > &host->lock and ap->lock after ata_host_alloc() without the patch? Here is the output of printk. Strangely, without the patch, the pata_pcmcia problem happens again. ata_piix 0000:00:1f.1: version 2.12 ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11 ACPI: PCI Interrupt 0000:00:1f.1[A] -> Link [LNKC] -> GSI 11 (level, low) -> IRQ 11 &host->lock = d6c288b4 ap->lock = d6c288b4 ap->lock = d6c288b4 PCI: Setting latency timer of device 0000:00:1f.1 to 64 scsi0 : ata_piix scsi1 : ata_piix .... pcmcia: registering new device pcmcia1.0 &host->lock = d70ee534 ap->lock = d70ee534 scsi2 : pata_pcmcia host = devres_alloc(ata_host_release, sz, GFP_KERNEL); if (!host) goto err_out; devres_add(dev, host); dev_set_drvdata(dev, host); spin_lock_init(&host->lock); printk("&host->lock = %x\n", &host->lock); host->dev = dev; host->n_ports = max_ports; /* allocate ports bound to this host */ for (i = 0; i < max_ports; i++) { struct ata_port *ap; ap = ata_port_alloc(host); if (!ap) goto err_out; ap->port_no = i; /* ap->lock = &ap->__lock; spin_lock_init(ap->lock); */ printk("ap->lock = %x\n", ap->lock); host->ports[i] = ap; } Best Regards Komuro -- 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