Lines Matching +full:sub +full:- +full:node
34 * --------------------
37 * flexibility when required (e.g. show-cfgspace needs full privs to read from
77 static const char *msg = "attempted to re-initialize privileges"; in pcieadm_init_privs()
78 if (pcip->pia_priv_init == NULL) { in pcieadm_init_privs()
82 priv_intersect(pcip->pia_priv_init, pcip->pia_priv_eff); in pcieadm_init_privs()
92 priv_freeset(pcip->pia_priv_init); in pcieadm_init_privs()
93 pcip->pia_priv_init = NULL; in pcieadm_init_privs()
106 pcieadm.pia_indent -= 2; in pcieadm_deindent()
133 * We determine if a node is PCI in a two step process. The first is to see if
134 * the node's name starts with pci, and has an additional character that
135 * indicates it's not the synthetic root of the tree. However, the node name
147 pcieadm_di_node_is_pci(di_node_t node) in pcieadm_di_node_is_pci() argument
153 name = di_node_name(node); in pcieadm_di_node_is_pci()
158 nents = di_prop_lookup_strings(DDI_DEV_T_ANY, node, "compatible", in pcieadm_di_node_is_pci()
178 pcieadm_di_walk_cb(di_node_t node, void *arg) in pcieadm_di_walk_cb() argument
182 if (!pcieadm_di_node_is_pci(node)) { in pcieadm_di_walk_cb()
186 return (walk->pdw_func(node, walk->pdw_arg)); in pcieadm_di_walk_cb()
192 (void) di_walk_node(pcip->pia_root, DI_WALK_CLDFIRST, arg, in pcieadm_di_walk()
205 for (cur = di_parent_node(pia->pia_devi); cur != DI_NODE_NIL; in pcieadm_find_nexus()
212 pia->pia_nexus = cur; in pcieadm_find_nexus()
220 pcieadm_find_dip_cb(di_node_t node, void *arg) in pcieadm_find_dip_cb() argument
227 path = di_devfs_path(node); in pcieadm_find_dip_cb()
229 err(EXIT_FAILURE, "failed to construct devfs path for node: " in pcieadm_find_dip_cb()
230 "%s", di_node_name(node)); in pcieadm_find_dip_cb()
233 driver = di_driver_name(node); in pcieadm_find_dip_cb()
234 inst = di_instance(node); in pcieadm_find_dip_cb()
235 if (driver != NULL && inst != -1) { in pcieadm_find_dip_cb()
239 nprop = di_prop_lookup_ints(DDI_DEV_T_ANY, node, "reg", ®s); in pcieadm_find_dip_cb()
250 if (strcmp(pia->pia_devstr, path) == 0 || in pcieadm_find_dip_cb()
251 strcmp(pia->pia_devstr, bdf) == 0 || in pcieadm_find_dip_cb()
252 strcmp(pia->pia_devstr, altbdf) == 0 || in pcieadm_find_dip_cb()
253 (driver != NULL && inst != -1 && in pcieadm_find_dip_cb()
254 strcmp(pia->pia_devstr, dinst) == 0)) { in pcieadm_find_dip_cb()
255 if (pia->pia_devi != DI_NODE_NIL) { in pcieadm_find_dip_cb()
257 "nodes: %s and %s", di_node_name(pia->pia_devi), in pcieadm_find_dip_cb()
258 di_node_name(node)); in pcieadm_find_dip_cb()
261 pia->pia_devi = node; in pcieadm_find_dip_cb()
279 pcip->pia_devstr = device; in pcieadm_find_dip()
281 pcip->pia_devstr += strlen("/devices"); in pcieadm_find_dip()
284 pcip->pia_devi = DI_NODE_NIL; in pcieadm_find_dip()
289 if (pcip->pia_devi == DI_NODE_NIL) { in pcieadm_find_dip()
290 errx(EXIT_FAILURE, "failed to find device node %s", device); in pcieadm_find_dip()
293 pcip->pia_nexus = DI_NODE_NIL; in pcieadm_find_dip()
295 if (pcip->pia_nexus == DI_NODE_NIL) { in pcieadm_find_dip()
311 ssize_t ret = pread(pcfi->pcfi_fd, buf + bufoff, len, off); in pcieadm_read_cfgspace_file()
321 len -= ret; in pcieadm_read_cfgspace_file()
339 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_eff) != 0) { in pcieadm_init_cfgspace_file()
352 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_min) != 0) { in pcieadm_init_cfgspace_file()
386 pcfi->pcfi_fd = fd; in pcieadm_init_cfgspace_file()
395 VERIFY0(close(pcfi->pcfi_fd)); in pcieadm_fini_cfgspace_file()
411 pcieadm_t *pcip = pck->pck_pci; in pcieadm_read_cfgspace_kernel()
416 pci_reg.bus_no = pck->pck_bus; in pcieadm_read_cfgspace_kernel()
417 pci_reg.dev_no = pck->pck_dev; in pcieadm_read_cfgspace_kernel()
418 pci_reg.func_no = pck->pck_func; in pcieadm_read_cfgspace_kernel()
441 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_eff) != 0) { in pcieadm_read_cfgspace_kernel()
445 if (ioctl(pck->pck_fd, PCITOOL_DEVICE_GET_REG, &pci_reg) != 0) { in pcieadm_read_cfgspace_kernel()
449 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_min) != 0) { in pcieadm_read_cfgspace_kernel()
480 if ((nexus_base = di_devfs_path(pcip->pia_nexus)) == NULL) { in pcieadm_init_cfgspace_kernel()
481 err(EXIT_FAILURE, "failed to get path to nexus node"); in pcieadm_init_cfgspace_kernel()
491 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_eff) != 0) { in pcieadm_init_cfgspace_kernel()
499 if (setppriv(PRIV_SET, PRIV_EFFECTIVE, pcip->pia_priv_min) != 0) { in pcieadm_init_cfgspace_kernel()
503 nregs = di_prop_lookup_ints(DDI_DEV_T_ANY, pcip->pia_devi, "reg", in pcieadm_init_cfgspace_kernel()
507 pcip->pia_devstr); in pcieadm_init_cfgspace_kernel()
516 pck->pck_pci = pcip; in pcieadm_init_cfgspace_kernel()
517 pck->pck_fd = fd; in pcieadm_init_cfgspace_kernel()
518 pck->pck_bus = PCI_REG_BUS_G(regs[0]); in pcieadm_init_cfgspace_kernel()
519 pck->pck_dev = PCI_REG_DEV_G(regs[0]); in pcieadm_init_cfgspace_kernel()
520 pck->pck_func = PCI_REG_FUNC_G(regs[0]); in pcieadm_init_cfgspace_kernel()
531 VERIFY0(close(pck->pck_fd)); in pcieadm_fini_cfgspace_kernel()
536 { "save-cfgspace", pcieadm_save_cfgspace, pcieadm_save_cfgspace_usage },
537 { "show-cfgspace", pcieadm_show_cfgspace, pcieadm_show_cfgspace_usage },
538 { "show-devs", pcieadm_show_devs, pcieadm_show_devs_usage },
573 pcieadm_usage("missing required sub-command"); in main()
584 pcieadm_usage("unknown sub-command: %s", argv[1]); in main()
587 argc -= 2; in main()
594 * a specific sub-command. in main()
650 return (pcieadm.pia_cmdtab->pct_func(&pcieadm, argc, argv)); in main()