Hi Richard, I was looking for inspiration in sim710 when I found what appears to me to be a bug. Your implementation of sim710_device_remove does: sim710_device_remove(struct device *dev) { struct Scsi_Host *host = dev_to_shost(dev); Now, this is going to be called with the struct device corresponding to either the MCA or EISA device which is the *parent* of the shost. dev_to_shost only looks upwards in the tree, so it will never find the shost. Unfortunately, I don't have a good idea about how to solve this. The least lame perhaps is to have separate routines for EISA and MCA devices, each of which passes the shost to this routine. -- "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html