KernelVersion:  5.6.0
 Contact:        dmaengine@vger.kernel.org
 Description:    The largest number of work descriptors in a batch.
+                It's not visible when the device does not support batch.
 
 What:           /sys/bus/dsa/devices/dsa<m>/max_work_queues_size
 Date:           Oct 25, 2019
 Contact:       dmaengine@vger.kernel.org
 Description:   The max batch size for this workqueue. Cannot exceed device
                max batch size. Configurable parameter.
+               It's not visible when the device does not support batch.
 
 What:          /sys/bus/dsa/devices/wq<m>.<n>/ats_disable
 Date:          Nov 13, 2020
 
               !idxd->hw.wq_cap.op_config;
 }
 
+static bool idxd_wq_attr_max_batch_size_invisible(struct attribute *attr,
+                                                 struct idxd_device *idxd)
+{
+       /* Intel IAA does not support batch processing, make it invisible */
+       return attr == &dev_attr_wq_max_batch_size.attr &&
+              idxd->data->type == IDXD_TYPE_IAX;
+}
+
 static umode_t idxd_wq_attr_visible(struct kobject *kobj,
                                    struct attribute *attr, int n)
 {
        if (idxd_wq_attr_op_config_invisible(attr, idxd))
                return 0;
 
+       if (idxd_wq_attr_max_batch_size_invisible(attr, idxd))
+               return 0;
+
        return attr->mode;
 }
 
 }
 static DEVICE_ATTR_RW(cmd_status);
 
+static bool idxd_device_attr_max_batch_size_invisible(struct attribute *attr,
+                                                     struct idxd_device *idxd)
+{
+       /* Intel IAA does not support batch processing, make it invisible */
+       return attr == &dev_attr_max_batch_size.attr &&
+              idxd->data->type == IDXD_TYPE_IAX;
+}
+
+static umode_t idxd_device_attr_visible(struct kobject *kobj,
+                                       struct attribute *attr, int n)
+{
+       struct device *dev = container_of(kobj, struct device, kobj);
+       struct idxd_device *idxd = confdev_to_idxd(dev);
+
+       if (idxd_device_attr_max_batch_size_invisible(attr, idxd))
+               return 0;
+
+       return attr->mode;
+}
+
 static struct attribute *idxd_device_attributes[] = {
        &dev_attr_version.attr,
        &dev_attr_max_groups.attr,
 
 static const struct attribute_group idxd_device_attribute_group = {
        .attrs = idxd_device_attributes,
+       .is_visible = idxd_device_attr_visible,
 };
 
 static const struct attribute_group *idxd_attribute_groups[] = {