Print this page
patch tsoome-feedback


 595                 return (e);
 596         } else if (strcmp(nm, PCI_DEVICE) == 0 ||
 597             strcmp(nm, PCIEX_DEVICE) == 0 || strcmp(nm, PCIEX_BUS) == 0) {
 598                 nvlist_t *in, *out;
 599 
 600                 mp = did_mod(pd);
 601                 if (topo_mod_nvalloc(mp, &in, NV_UNIQUE_NAME) != 0)
 602                         return (topo_mod_seterrno(mp, EMOD_FMRI_NVL));
 603                 if (nvlist_add_uint64(in, "nv1", (uintptr_t)pd) != 0) {
 604                         nvlist_free(in);
 605                         return (topo_mod_seterrno(mp, EMOD_NOMEM));
 606                 }
 607                 if (topo_method_invoke(tn,
 608                     TOPO_METH_FRU_COMPUTE, TOPO_METH_FRU_COMPUTE_VERSION,
 609                     in, &out, &err) != 0) {
 610                         nvlist_free(in);
 611                         return (topo_mod_seterrno(mp, err));
 612                 }
 613                 nvlist_free(in);
 614                 (void) topo_node_fru_set(tn, out, 0, &err);
 615                 if (out != NULL)
 616                         nvlist_free(out);
 617         } else
 618                 (void) topo_node_fru_set(tn, NULL, 0, &err);
 619 
 620         return (0);
 621 }
 622 
 623 /*ARGSUSED*/
 624 static int
 625 label_set(tnode_t *tn, did_t *pd,
 626     const char *dpnm, const char *tpgrp, const char *tpnm)
 627 {
 628         topo_mod_t *mp;
 629         nvlist_t *in, *out;
 630         char *label;
 631         int err;
 632 
 633         mp = did_mod(pd);
 634         /*
 635          * If this is a PCIEX_BUS and its parent is a PCIEX_ROOT,




 595                 return (e);
 596         } else if (strcmp(nm, PCI_DEVICE) == 0 ||
 597             strcmp(nm, PCIEX_DEVICE) == 0 || strcmp(nm, PCIEX_BUS) == 0) {
 598                 nvlist_t *in, *out;
 599 
 600                 mp = did_mod(pd);
 601                 if (topo_mod_nvalloc(mp, &in, NV_UNIQUE_NAME) != 0)
 602                         return (topo_mod_seterrno(mp, EMOD_FMRI_NVL));
 603                 if (nvlist_add_uint64(in, "nv1", (uintptr_t)pd) != 0) {
 604                         nvlist_free(in);
 605                         return (topo_mod_seterrno(mp, EMOD_NOMEM));
 606                 }
 607                 if (topo_method_invoke(tn,
 608                     TOPO_METH_FRU_COMPUTE, TOPO_METH_FRU_COMPUTE_VERSION,
 609                     in, &out, &err) != 0) {
 610                         nvlist_free(in);
 611                         return (topo_mod_seterrno(mp, err));
 612                 }
 613                 nvlist_free(in);
 614                 (void) topo_node_fru_set(tn, out, 0, &err);

 615                 nvlist_free(out);
 616         } else
 617                 (void) topo_node_fru_set(tn, NULL, 0, &err);
 618 
 619         return (0);
 620 }
 621 
 622 /*ARGSUSED*/
 623 static int
 624 label_set(tnode_t *tn, did_t *pd,
 625     const char *dpnm, const char *tpgrp, const char *tpnm)
 626 {
 627         topo_mod_t *mp;
 628         nvlist_t *in, *out;
 629         char *label;
 630         int err;
 631 
 632         mp = did_mod(pd);
 633         /*
 634          * If this is a PCIEX_BUS and its parent is a PCIEX_ROOT,