hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/drivers/infiniband/hw/qib/qib_sysfs.c
....@@ -442,6 +442,7 @@
442442 QIB_DIAGC_ATTR(unaligned);
443443 QIB_DIAGC_ATTR(rc_dupreq);
444444 QIB_DIAGC_ATTR(rc_seqnak);
445
+QIB_DIAGC_ATTR(rc_crwaits);
445446
446447 static struct attribute *diagc_default_attributes[] = {
447448 &qib_diagc_attr_rc_resends.attr,
....@@ -459,6 +460,7 @@
459460 &qib_diagc_attr_unaligned.attr,
460461 &qib_diagc_attr_rc_dupreq.attr,
461462 &qib_diagc_attr_rc_seqnak.attr,
463
+ &qib_diagc_attr_rc_crwaits.attr,
462464 NULL
463465 };
464466
....@@ -557,20 +559,21 @@
557559 * Start of per-unit (or driver, in some cases, but replicated
558560 * per unit) functions (these get a device *)
559561 */
560
-static ssize_t show_rev(struct device *device, struct device_attribute *attr,
561
- char *buf)
562
+static ssize_t hw_rev_show(struct device *device, struct device_attribute *attr,
563
+ char *buf)
562564 {
563565 struct qib_ibdev *dev =
564
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
566
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
565567
566568 return sprintf(buf, "%x\n", dd_from_dev(dev)->minrev);
567569 }
570
+static DEVICE_ATTR_RO(hw_rev);
568571
569
-static ssize_t show_hca(struct device *device, struct device_attribute *attr,
570
- char *buf)
572
+static ssize_t hca_type_show(struct device *device,
573
+ struct device_attribute *attr, char *buf)
571574 {
572575 struct qib_ibdev *dev =
573
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
576
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
574577 struct qib_devdata *dd = dd_from_dev(dev);
575578 int ret;
576579
....@@ -580,43 +583,46 @@
580583 ret = scnprintf(buf, PAGE_SIZE, "%s\n", dd->boardname);
581584 return ret;
582585 }
586
+static DEVICE_ATTR_RO(hca_type);
587
+static DEVICE_ATTR(board_id, 0444, hca_type_show, NULL);
583588
584
-static ssize_t show_version(struct device *device,
589
+static ssize_t version_show(struct device *device,
585590 struct device_attribute *attr, char *buf)
586591 {
587592 /* The string printed here is already newline-terminated. */
588593 return scnprintf(buf, PAGE_SIZE, "%s", (char *)ib_qib_version);
589594 }
595
+static DEVICE_ATTR_RO(version);
590596
591
-static ssize_t show_boardversion(struct device *device,
597
+static ssize_t boardversion_show(struct device *device,
592598 struct device_attribute *attr, char *buf)
593599 {
594600 struct qib_ibdev *dev =
595
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
601
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
596602 struct qib_devdata *dd = dd_from_dev(dev);
597603
598604 /* The string printed here is already newline-terminated. */
599605 return scnprintf(buf, PAGE_SIZE, "%s", dd->boardversion);
600606 }
607
+static DEVICE_ATTR_RO(boardversion);
601608
602
-
603
-static ssize_t show_localbus_info(struct device *device,
609
+static ssize_t localbus_info_show(struct device *device,
604610 struct device_attribute *attr, char *buf)
605611 {
606612 struct qib_ibdev *dev =
607
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
613
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
608614 struct qib_devdata *dd = dd_from_dev(dev);
609615
610616 /* The string printed here is already newline-terminated. */
611617 return scnprintf(buf, PAGE_SIZE, "%s", dd->lbus_info);
612618 }
619
+static DEVICE_ATTR_RO(localbus_info);
613620
614
-
615
-static ssize_t show_nctxts(struct device *device,
621
+static ssize_t nctxts_show(struct device *device,
616622 struct device_attribute *attr, char *buf)
617623 {
618624 struct qib_ibdev *dev =
619
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
625
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
620626 struct qib_devdata *dd = dd_from_dev(dev);
621627
622628 /* Return the number of user ports (contexts) available. */
....@@ -626,23 +632,25 @@
626632 (dd->first_user_ctxt > dd->cfgctxts) ? 0 :
627633 (dd->cfgctxts - dd->first_user_ctxt));
628634 }
635
+static DEVICE_ATTR_RO(nctxts);
629636
630
-static ssize_t show_nfreectxts(struct device *device,
631
- struct device_attribute *attr, char *buf)
637
+static ssize_t nfreectxts_show(struct device *device,
638
+ struct device_attribute *attr, char *buf)
632639 {
633640 struct qib_ibdev *dev =
634
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
641
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
635642 struct qib_devdata *dd = dd_from_dev(dev);
636643
637644 /* Return the number of free user ports (contexts) available. */
638645 return scnprintf(buf, PAGE_SIZE, "%u\n", dd->freectxts);
639646 }
647
+static DEVICE_ATTR_RO(nfreectxts);
640648
641
-static ssize_t show_serial(struct device *device,
649
+static ssize_t serial_show(struct device *device,
642650 struct device_attribute *attr, char *buf)
643651 {
644652 struct qib_ibdev *dev =
645
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
653
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
646654 struct qib_devdata *dd = dd_from_dev(dev);
647655
648656 buf[sizeof(dd->serial)] = '\0';
....@@ -650,13 +658,14 @@
650658 strcat(buf, "\n");
651659 return strlen(buf);
652660 }
661
+static DEVICE_ATTR_RO(serial);
653662
654
-static ssize_t store_chip_reset(struct device *device,
663
+static ssize_t chip_reset_store(struct device *device,
655664 struct device_attribute *attr, const char *buf,
656665 size_t count)
657666 {
658667 struct qib_ibdev *dev =
659
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
668
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
660669 struct qib_devdata *dd = dd_from_dev(dev);
661670 int ret;
662671
....@@ -669,15 +678,16 @@
669678 bail:
670679 return ret < 0 ? ret : count;
671680 }
681
+static DEVICE_ATTR_WO(chip_reset);
672682
673683 /*
674684 * Dump tempsense regs. in decimal, to ease shell-scripts.
675685 */
676
-static ssize_t show_tempsense(struct device *device,
686
+static ssize_t tempsense_show(struct device *device,
677687 struct device_attribute *attr, char *buf)
678688 {
679689 struct qib_ibdev *dev =
680
- container_of(device, struct qib_ibdev, rdi.ibdev.dev);
690
+ rdma_device_to_drv_device(device, struct qib_ibdev, rdi.ibdev);
681691 struct qib_devdata *dd = dd_from_dev(dev);
682692 int ret;
683693 int idx;
....@@ -701,6 +711,7 @@
701711 *(signed char *)(regvals + 7));
702712 return ret;
703713 }
714
+static DEVICE_ATTR_RO(tempsense);
704715
705716 /*
706717 * end of per-unit (or driver, in some cases, but replicated
....@@ -708,30 +719,23 @@
708719 */
709720
710721 /* start of per-unit file structures and support code */
711
-static DEVICE_ATTR(hw_rev, S_IRUGO, show_rev, NULL);
712
-static DEVICE_ATTR(hca_type, S_IRUGO, show_hca, NULL);
713
-static DEVICE_ATTR(board_id, S_IRUGO, show_hca, NULL);
714
-static DEVICE_ATTR(version, S_IRUGO, show_version, NULL);
715
-static DEVICE_ATTR(nctxts, S_IRUGO, show_nctxts, NULL);
716
-static DEVICE_ATTR(nfreectxts, S_IRUGO, show_nfreectxts, NULL);
717
-static DEVICE_ATTR(serial, S_IRUGO, show_serial, NULL);
718
-static DEVICE_ATTR(boardversion, S_IRUGO, show_boardversion, NULL);
719
-static DEVICE_ATTR(tempsense, S_IRUGO, show_tempsense, NULL);
720
-static DEVICE_ATTR(localbus_info, S_IRUGO, show_localbus_info, NULL);
721
-static DEVICE_ATTR(chip_reset, S_IWUSR, NULL, store_chip_reset);
722
+static struct attribute *qib_attributes[] = {
723
+ &dev_attr_hw_rev.attr,
724
+ &dev_attr_hca_type.attr,
725
+ &dev_attr_board_id.attr,
726
+ &dev_attr_version.attr,
727
+ &dev_attr_nctxts.attr,
728
+ &dev_attr_nfreectxts.attr,
729
+ &dev_attr_serial.attr,
730
+ &dev_attr_boardversion.attr,
731
+ &dev_attr_tempsense.attr,
732
+ &dev_attr_localbus_info.attr,
733
+ &dev_attr_chip_reset.attr,
734
+ NULL,
735
+};
722736
723
-static struct device_attribute *qib_attributes[] = {
724
- &dev_attr_hw_rev,
725
- &dev_attr_hca_type,
726
- &dev_attr_board_id,
727
- &dev_attr_version,
728
- &dev_attr_nctxts,
729
- &dev_attr_nfreectxts,
730
- &dev_attr_serial,
731
- &dev_attr_boardversion,
732
- &dev_attr_tempsense,
733
- &dev_attr_localbus_info,
734
- &dev_attr_chip_reset,
737
+const struct attribute_group qib_attr_group = {
738
+ .attrs = qib_attributes,
735739 };
736740
737741 int qib_create_port_files(struct ib_device *ibdev, u8 port_num,
....@@ -829,27 +833,6 @@
829833 bail_link:
830834 kobject_put(&ppd->pport_kobj);
831835 bail:
832
- return ret;
833
-}
834
-
835
-/*
836
- * Register and create our files in /sys/class/infiniband.
837
- */
838
-int qib_verbs_register_sysfs(struct qib_devdata *dd)
839
-{
840
- struct ib_device *dev = &dd->verbs_dev.rdi.ibdev;
841
- int i, ret;
842
-
843
- for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i) {
844
- ret = device_create_file(&dev->dev, qib_attributes[i]);
845
- if (ret)
846
- goto bail;
847
- }
848
-
849
- return 0;
850
-bail:
851
- for (i = 0; i < ARRAY_SIZE(qib_attributes); ++i)
852
- device_remove_file(&dev->dev, qib_attributes[i]);
853836 return ret;
854837 }
855838