hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/qib/qib_driver.c
....@@ -49,8 +49,6 @@
4949 */
5050 const char ib_qib_version[] = QIB_DRIVER_VERSION "\n";
5151
52
-DEFINE_SPINLOCK(qib_devs_lock);
53
-LIST_HEAD(qib_dev_list);
5452 DEFINE_MUTEX(qib_mutex); /* general driver use */
5553
5654 unsigned qib_ibmtu;
....@@ -96,11 +94,11 @@
9694 {
9795 struct qib_devdata *dd;
9896 struct qib_pportdata *ppd;
99
- unsigned long flags;
97
+ unsigned long index, flags;
10098 int pidx, nunits_active = 0;
10199
102
- spin_lock_irqsave(&qib_devs_lock, flags);
103
- list_for_each_entry(dd, &qib_dev_list, list) {
100
+ xa_lock_irqsave(&qib_dev_table, flags);
101
+ xa_for_each(&qib_dev_table, index, dd) {
104102 if (!(dd->flags & QIB_PRESENT) || !dd->kregbase)
105103 continue;
106104 for (pidx = 0; pidx < dd->num_pports; ++pidx) {
....@@ -112,7 +110,7 @@
112110 }
113111 }
114112 }
115
- spin_unlock_irqrestore(&qib_devs_lock, flags);
113
+ xa_unlock_irqrestore(&qib_dev_table, flags);
116114 return nunits_active;
117115 }
118116
....@@ -125,13 +123,12 @@
125123 {
126124 int nunits = 0, npresent = 0, nup = 0;
127125 struct qib_devdata *dd;
128
- unsigned long flags;
126
+ unsigned long index, flags;
129127 int pidx;
130128 struct qib_pportdata *ppd;
131129
132
- spin_lock_irqsave(&qib_devs_lock, flags);
133
-
134
- list_for_each_entry(dd, &qib_dev_list, list) {
130
+ xa_lock_irqsave(&qib_dev_table, flags);
131
+ xa_for_each(&qib_dev_table, index, dd) {
135132 nunits++;
136133 if ((dd->flags & QIB_PRESENT) && dd->kregbase)
137134 npresent++;
....@@ -142,8 +139,7 @@
142139 nup++;
143140 }
144141 }
145
-
146
- spin_unlock_irqrestore(&qib_devs_lock, flags);
142
+ xa_unlock_irqrestore(&qib_dev_table, flags);
147143
148144 if (npresentp)
149145 *npresentp = npresent;