unsigned short features;
        struct dasd_device *device;
        struct dasd_copy_relation *copy;
+       unsigned int aq_mask;
 };
 
 /*
 
 static DEVICE_ATTR(eer_enabled, 0644, dasd_eer_show, dasd_eer_store);
 
+/*
+ * aq_mask controls if the DASD should be quiesced on certain triggers
+ * The aq_mask attribute is interpreted as bitmap of the DASD_EER_* triggers.
+ */
+static ssize_t dasd_aq_mask_show(struct device *dev, struct device_attribute *attr,
+                                char *buf)
+{
+       struct dasd_devmap *devmap;
+       unsigned int aq_mask = 0;
+
+       devmap = dasd_find_busid(dev_name(dev));
+       if (!IS_ERR(devmap))
+               aq_mask = devmap->aq_mask;
+
+       return sysfs_emit(buf, "%d\n", aq_mask);
+}
+
+static ssize_t dasd_aq_mask_store(struct device *dev, struct device_attribute *attr,
+                                 const char *buf, size_t count)
+{
+       struct dasd_devmap *devmap;
+       unsigned int val;
+
+       if (kstrtouint(buf, 0, &val) || val > DASD_EER_VALID)
+               return -EINVAL;
+
+       devmap = dasd_devmap_from_cdev(to_ccwdev(dev));
+       if (IS_ERR(devmap))
+               return PTR_ERR(devmap);
+
+       spin_lock(&dasd_devmap_lock);
+       devmap->aq_mask = val;
+       if (devmap->device)
+               devmap->device->aq_mask = devmap->aq_mask;
+       spin_unlock(&dasd_devmap_lock);
+
+       return count;
+}
+
+static DEVICE_ATTR(aq_mask, 0644, dasd_aq_mask_show, dasd_aq_mask_store);
+
 /*
  * expiration time for default requests
  */
        &dev_attr_copy_pair.attr,
        &dev_attr_copy_role.attr,
        &dev_attr_ping.attr,
+       &dev_attr_aq_mask.attr,
        NULL,
 };
 
 
 
 extern struct dasd_discipline *dasd_diag_discipline_pointer;
 
-/* Trigger IDs for extended error reporting */
-#define DASD_EER_FATALERROR  1
-#define DASD_EER_NOPATH      2
-#define DASD_EER_STATECHANGE 3
-#define DASD_EER_PPRCSUSPEND 4
-#define DASD_EER_NOSPC      5
-#define DASD_EER_AUTOQUIESCE 31
+/* Trigger IDs for extended error reporting DASD EER and autoquiesce */
+enum eer_trigger {
+       DASD_EER_FATALERROR = 1,
+       DASD_EER_NOPATH,
+       DASD_EER_STATECHANGE,
+       DASD_EER_PPRCSUSPEND,
+       DASD_EER_NOSPC,
+       DASD_EER_TIMEOUTS,
+       DASD_EER_STARTIO,
+
+       /* enum end marker, only add new trigger above */
+       DASD_EER_MAX,
+       DASD_EER_AUTOQUIESCE = 31, /* internal only */
+};
+
+#define DASD_EER_VALID ((1U << DASD_EER_MAX) - 1)
 
 /* DASD path handling */