Add hotplug support.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
        NV_INT_PORT_SHIFT               = 4,    /* each port occupies 4 bits */
 
        NV_INT_ALL                      = 0x0f,
-       NV_INT_MASK                     = NV_INT_DEV,
+       NV_INT_MASK                     = NV_INT_DEV |
+                                         NV_INT_ADDED | NV_INT_REMOVED,
 
        /* INT_CONFIG */
        NV_INT_CONFIG                   = 0x12,
        struct ata_queued_cmd *qc = ata_qc_from_tag(ap, ap->active_tag);
        int handled;
 
+       /* freeze if hotplugged */
+       if (unlikely(irq_stat & (NV_INT_ADDED | NV_INT_REMOVED))) {
+               ata_port_freeze(ap);
+               return 1;
+       }
+
        /* bail out if not our interrupt */
        if (!(irq_stat & NV_INT_DEV))
                return 0;