shost->active_mode = sht->supported_mode;
        shost->use_sg_chaining = sht->use_sg_chaining;
 
+       if (sht->supported_mode == MODE_UNKNOWN)
+               /* means we didn't set it ... default to INITIATOR */
+               shost->active_mode = MODE_INITIATOR;
+       else
+               shost->active_mode = sht->supported_mode;
+
        if (sht->max_host_blocked)
                shost->max_host_blocked = sht->max_host_blocked;
        else
 
 static ssize_t show_shost_supported_mode(struct class_device *class_dev, char *buf)
 {
        struct Scsi_Host *shost = class_to_shost(class_dev);
+       unsigned int supported_mode = shost->hostt->supported_mode;
 
-       if (shost->hostt->supported_mode == MODE_UNKNOWN)
-               return snprintf(buf, 20, "unknown\n");
-       else
-               return show_shost_mode(shost->hostt->supported_mode, buf);
+       if (supported_mode == MODE_UNKNOWN)
+               /* by default this should be initiator */
+               supported_mode = MODE_INITIATOR;
+
+       return show_shost_mode(supported_mode, buf);
 }
 
 static CLASS_DEVICE_ATTR(supported_mode, S_IRUGO | S_IWUSR, show_shost_supported_mode, NULL);