struct mptsas_devinfo sas_device;
        VirtTarget *vtarget;
        int i;
+       struct mptsas_portinfo *port_info;
 
        switch (hot_plug_info->event_type) {
 
                        return;
 
                phy_info = mptsas_refreshing_device_handles(ioc, &sas_device);
-               if (!phy_info)
+               /* Only For SATA Device ADD */
+               if (!phy_info && (sas_device.device_info &
+                               MPI_SAS_DEVICE_INFO_SATA_DEVICE)) {
+                       devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT
+                               "%s %d SATA HOT PLUG: "
+                               "parent handle of device %x\n", ioc->name,
+                               __func__, __LINE__, sas_device.handle_parent));
+                       port_info = mptsas_find_portinfo_by_handle(ioc,
+                               sas_device.handle_parent);
+
+                       if (port_info == ioc->hba_port_info)
+                               mptsas_probe_hba_phys(ioc);
+                       else if (port_info)
+                               mptsas_expander_refresh(ioc, port_info);
+                       else {
+                               dfailprintk(ioc, printk(MYIOC_s_ERR_FMT
+                                       "%s %d port info is NULL\n",
+                                       ioc->name, __func__, __LINE__));
+                               break;
+                       }
+                       phy_info = mptsas_refreshing_device_handles
+                               (ioc, &sas_device);
+               }
+
+               if (!phy_info) {
+                       dfailprintk(ioc, printk(MYIOC_s_ERR_FMT
+                               "%s %d phy info is NULL\n",
+                               ioc->name, __func__, __LINE__));
                        break;
+               }
 
                if (mptsas_get_rphy(phy_info))
                        break;