Loading arch/s390/pci/pci_sysfs.c +23 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/stat.h> #include <linux/pci.h> #include <asm/sclp.h> #define zpci_attr(name, fmt, member) \ static ssize_t name##_show(struct device *dev, \ struct device_attribute *attr, char *buf) \ Loading Loading @@ -77,8 +79,29 @@ static ssize_t util_string_read(struct file *filp, struct kobject *kobj, sizeof(zdev->util_str)); } static BIN_ATTR_RO(util_string, CLP_UTIL_STR_LEN); static ssize_t report_error_write(struct file *filp, struct kobject *kobj, struct bin_attribute *attr, char *buf, loff_t off, size_t count) { struct zpci_report_error_header *report = (void *) buf; struct device *dev = kobj_to_dev(kobj); struct pci_dev *pdev = to_pci_dev(dev); struct zpci_dev *zdev = to_zpci(pdev); int ret; if (off || (count < sizeof(*report))) return -EINVAL; ret = sclp_pci_report(report, zdev->fh, zdev->fid); return ret ? ret : count; } static BIN_ATTR(report_error, S_IWUSR, NULL, report_error_write, PAGE_SIZE); static struct bin_attribute *zpci_bin_attrs[] = { &bin_attr_util_string, &bin_attr_report_error, NULL, }; Loading Loading
arch/s390/pci/pci_sysfs.c +23 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/stat.h> #include <linux/pci.h> #include <asm/sclp.h> #define zpci_attr(name, fmt, member) \ static ssize_t name##_show(struct device *dev, \ struct device_attribute *attr, char *buf) \ Loading Loading @@ -77,8 +79,29 @@ static ssize_t util_string_read(struct file *filp, struct kobject *kobj, sizeof(zdev->util_str)); } static BIN_ATTR_RO(util_string, CLP_UTIL_STR_LEN); static ssize_t report_error_write(struct file *filp, struct kobject *kobj, struct bin_attribute *attr, char *buf, loff_t off, size_t count) { struct zpci_report_error_header *report = (void *) buf; struct device *dev = kobj_to_dev(kobj); struct pci_dev *pdev = to_pci_dev(dev); struct zpci_dev *zdev = to_zpci(pdev); int ret; if (off || (count < sizeof(*report))) return -EINVAL; ret = sclp_pci_report(report, zdev->fh, zdev->fid); return ret ? ret : count; } static BIN_ATTR(report_error, S_IWUSR, NULL, report_error_write, PAGE_SIZE); static struct bin_attribute *zpci_bin_attrs[] = { &bin_attr_util_string, &bin_attr_report_error, NULL, }; Loading