167 }
168 }
169 if (dnpath) {
170 di_devfs_path_free(dnpath);
171 }
172 /* T5440 device type is always "pciex" */
173 if (topo_prop_set_string(rcn, TOPO_PGROUP_IO, TOPO_IO_DEVTYPE,
174 TOPO_PROP_IMMUTABLE, CPUBOARD_PX_DEVTYPE, &err) != 0) {
175 topo_mod_dprintf(mp, "Failed to set DEVTYPE property\n");
176 }
177 /* T5440 driver is always "px" */
178 if (topo_prop_set_string(rcn, TOPO_PGROUP_IO, TOPO_IO_DRIVER,
179 TOPO_PROP_IMMUTABLE, CPUBOARD_PX_DRV, &err) != 0) {
180 topo_mod_dprintf(mp, "Failed to set DRIVER property\n");
181 }
182 if ((mod = topo_mod_modfmri(mp, FM_MOD_SCHEME_VERSION, CPUBOARD_PX_DRV))
183 == NULL || topo_prop_set_fmri(rcn, TOPO_PGROUP_IO,
184 TOPO_IO_MODULE, TOPO_PROP_IMMUTABLE, mod, &err) != 0) {
185 topo_mod_dprintf(mp, "Failed to set MODULE property\n");
186 }
187 if (mod != NULL)
188 nvlist_free(mod);
189
190 /* This is a PCIEX Root Complex */
191 if (topo_prop_set_string(rcn, TOPO_PGROUP_PCI, TOPO_PCI_EXCAP,
192 TOPO_PROP_IMMUTABLE, PCIEX_ROOT, &err) != 0) {
193 topo_mod_dprintf(mp, "Failed to set EXCAP property\n");
194 }
195 /* BDF of T5440 root complex is constant */
196 if (topo_prop_set_string(rcn, TOPO_PGROUP_PCI,
197 TOPO_PCI_BDF, TOPO_PROP_IMMUTABLE, CPUBOARD_PX_BDF, &err) != 0) {
198 topo_mod_dprintf(mp, "Failed to set EXCAP property\n");
199 }
200
201 /* Make room for children */
202 (void) topo_node_range_create(mp, rcn, PCIEX_BUS, 0, CPUBOARD_MAX);
203 return (rcn);
204 }
205
206 /*
207 * Create a hostbridge node.
|
167 }
168 }
169 if (dnpath) {
170 di_devfs_path_free(dnpath);
171 }
172 /* T5440 device type is always "pciex" */
173 if (topo_prop_set_string(rcn, TOPO_PGROUP_IO, TOPO_IO_DEVTYPE,
174 TOPO_PROP_IMMUTABLE, CPUBOARD_PX_DEVTYPE, &err) != 0) {
175 topo_mod_dprintf(mp, "Failed to set DEVTYPE property\n");
176 }
177 /* T5440 driver is always "px" */
178 if (topo_prop_set_string(rcn, TOPO_PGROUP_IO, TOPO_IO_DRIVER,
179 TOPO_PROP_IMMUTABLE, CPUBOARD_PX_DRV, &err) != 0) {
180 topo_mod_dprintf(mp, "Failed to set DRIVER property\n");
181 }
182 if ((mod = topo_mod_modfmri(mp, FM_MOD_SCHEME_VERSION, CPUBOARD_PX_DRV))
183 == NULL || topo_prop_set_fmri(rcn, TOPO_PGROUP_IO,
184 TOPO_IO_MODULE, TOPO_PROP_IMMUTABLE, mod, &err) != 0) {
185 topo_mod_dprintf(mp, "Failed to set MODULE property\n");
186 }
187 nvlist_free(mod);
188
189 /* This is a PCIEX Root Complex */
190 if (topo_prop_set_string(rcn, TOPO_PGROUP_PCI, TOPO_PCI_EXCAP,
191 TOPO_PROP_IMMUTABLE, PCIEX_ROOT, &err) != 0) {
192 topo_mod_dprintf(mp, "Failed to set EXCAP property\n");
193 }
194 /* BDF of T5440 root complex is constant */
195 if (topo_prop_set_string(rcn, TOPO_PGROUP_PCI,
196 TOPO_PCI_BDF, TOPO_PROP_IMMUTABLE, CPUBOARD_PX_BDF, &err) != 0) {
197 topo_mod_dprintf(mp, "Failed to set EXCAP property\n");
198 }
199
200 /* Make room for children */
201 (void) topo_node_range_create(mp, rcn, PCIEX_BUS, 0, CPUBOARD_MAX);
202 return (rcn);
203 }
204
205 /*
206 * Create a hostbridge node.
|