135 static uint32_t pci_type_ra2pci(char *type);
136 static boolean_t is_pcie_fabric(dev_info_t *dip);
137
138 #define PCI_ADDR_TYPE_MASK (PCI_REG_ADDR_M | PCI_REG_PF_M)
139 #define PCI_ADDR_TYPE_INVAL 0xffffffff
140
141 #define RA_INSERT(prev, el) \
142 el->ra_next = *prev; \
143 *prev = el;
144
145 #define RA_REMOVE(prev, el) \
146 *prev = el->ra_next;
147
148
149 static struct modlmisc modlmisc = {
150 &mod_miscops, /* Type of module. This one is a module */
151 "Bus Resource Allocator (BUSRA)", /* Name of the module. */
152 };
153
154 static struct modlinkage modlinkage = {
155 MODREV_1, (void *)&modlmisc, NULL
156 };
157
158 int
159 _init()
160 {
161 int ret;
162
163 mutex_init(&ra_lock, NULL, MUTEX_DRIVER,
164 (void *)(intptr_t)__ipltospl(SPL7 - 1));
165 if ((ret = mod_install(&modlinkage)) != 0) {
166 mutex_destroy(&ra_lock);
167 }
168 return (ret);
169 }
170
171 int
172 _fini()
173 {
174 int ret;
175
|
135 static uint32_t pci_type_ra2pci(char *type);
136 static boolean_t is_pcie_fabric(dev_info_t *dip);
137
138 #define PCI_ADDR_TYPE_MASK (PCI_REG_ADDR_M | PCI_REG_PF_M)
139 #define PCI_ADDR_TYPE_INVAL 0xffffffff
140
141 #define RA_INSERT(prev, el) \
142 el->ra_next = *prev; \
143 *prev = el;
144
145 #define RA_REMOVE(prev, el) \
146 *prev = el->ra_next;
147
148
149 static struct modlmisc modlmisc = {
150 &mod_miscops, /* Type of module. This one is a module */
151 "Bus Resource Allocator (BUSRA)", /* Name of the module. */
152 };
153
154 static struct modlinkage modlinkage = {
155 MODREV_1, { (void *)&modlmisc, NULL }
156 };
157
158 int
159 _init()
160 {
161 int ret;
162
163 mutex_init(&ra_lock, NULL, MUTEX_DRIVER,
164 (void *)(intptr_t)__ipltospl(SPL7 - 1));
165 if ((ret = mod_install(&modlinkage)) != 0) {
166 mutex_destroy(&ra_lock);
167 }
168 return (ret);
169 }
170
171 int
172 _fini()
173 {
174 int ret;
175
|