.. | .. |
---|
49 | 49 | */ |
---|
50 | 50 | const char ib_qib_version[] = QIB_DRIVER_VERSION "\n"; |
---|
51 | 51 | |
---|
52 | | -DEFINE_SPINLOCK(qib_devs_lock); |
---|
53 | | -LIST_HEAD(qib_dev_list); |
---|
54 | 52 | DEFINE_MUTEX(qib_mutex); /* general driver use */ |
---|
55 | 53 | |
---|
56 | 54 | unsigned qib_ibmtu; |
---|
.. | .. |
---|
96 | 94 | { |
---|
97 | 95 | struct qib_devdata *dd; |
---|
98 | 96 | struct qib_pportdata *ppd; |
---|
99 | | - unsigned long flags; |
---|
| 97 | + unsigned long index, flags; |
---|
100 | 98 | int pidx, nunits_active = 0; |
---|
101 | 99 | |
---|
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) { |
---|
104 | 102 | if (!(dd->flags & QIB_PRESENT) || !dd->kregbase) |
---|
105 | 103 | continue; |
---|
106 | 104 | for (pidx = 0; pidx < dd->num_pports; ++pidx) { |
---|
.. | .. |
---|
112 | 110 | } |
---|
113 | 111 | } |
---|
114 | 112 | } |
---|
115 | | - spin_unlock_irqrestore(&qib_devs_lock, flags); |
---|
| 113 | + xa_unlock_irqrestore(&qib_dev_table, flags); |
---|
116 | 114 | return nunits_active; |
---|
117 | 115 | } |
---|
118 | 116 | |
---|
.. | .. |
---|
125 | 123 | { |
---|
126 | 124 | int nunits = 0, npresent = 0, nup = 0; |
---|
127 | 125 | struct qib_devdata *dd; |
---|
128 | | - unsigned long flags; |
---|
| 126 | + unsigned long index, flags; |
---|
129 | 127 | int pidx; |
---|
130 | 128 | struct qib_pportdata *ppd; |
---|
131 | 129 | |
---|
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) { |
---|
135 | 132 | nunits++; |
---|
136 | 133 | if ((dd->flags & QIB_PRESENT) && dd->kregbase) |
---|
137 | 134 | npresent++; |
---|
.. | .. |
---|
142 | 139 | nup++; |
---|
143 | 140 | } |
---|
144 | 141 | } |
---|
145 | | - |
---|
146 | | - spin_unlock_irqrestore(&qib_devs_lock, flags); |
---|
| 142 | + xa_unlock_irqrestore(&qib_dev_table, flags); |
---|
147 | 143 | |
---|
148 | 144 | if (npresentp) |
---|
149 | 145 | *npresentp = npresent; |
---|