508 /*
509 * The page has been retired, is in the process of being
510 * retired, or doesn't exist. The latter is valid if the page
511 * existed in the past but has been DR'd out.
512 */
513 retval = 1;
514 } else {
515 /*
516 * Errors are only signalled to the caller if they're the
517 * caller's fault. This isn't - it's a failure of the
518 * retirement-check code. We'll whine about it and tell
519 * the caller the page is unusable.
520 */
521 fmd_fmri_warn("failed to determine page %s=%llx usability: "
522 "rc=%d errno=%d\n", err1 == 0 ? FM_FMRI_MEM_OFFSET :
523 FM_FMRI_MEM_PHYSADDR, err1 == 0 ? (u_longlong_t)val1 :
524 (u_longlong_t)val2, rc, errno);
525 retval = 1;
526 }
527
528 if (nvlcp)
529 nvlist_free(nvlcp);
530
531 return (retval);
532 }
533
534 int
535 fmd_fmri_init(void)
536 {
537 return (mem_discover());
538 }
539
540 void
541 fmd_fmri_fini(void)
542 {
543 mem_dimm_map_t *dm, *em;
544 mem_bank_map_t *bm, *cm;
545 mem_grp_t *gm, *hm;
546 mem_seg_map_t *sm, *tm;
547
548 for (dm = mem.mem_dm; dm != NULL; dm = em) {
|
508 /*
509 * The page has been retired, is in the process of being
510 * retired, or doesn't exist. The latter is valid if the page
511 * existed in the past but has been DR'd out.
512 */
513 retval = 1;
514 } else {
515 /*
516 * Errors are only signalled to the caller if they're the
517 * caller's fault. This isn't - it's a failure of the
518 * retirement-check code. We'll whine about it and tell
519 * the caller the page is unusable.
520 */
521 fmd_fmri_warn("failed to determine page %s=%llx usability: "
522 "rc=%d errno=%d\n", err1 == 0 ? FM_FMRI_MEM_OFFSET :
523 FM_FMRI_MEM_PHYSADDR, err1 == 0 ? (u_longlong_t)val1 :
524 (u_longlong_t)val2, rc, errno);
525 retval = 1;
526 }
527
528 nvlist_free(nvlcp);
529
530 return (retval);
531 }
532
533 int
534 fmd_fmri_init(void)
535 {
536 return (mem_discover());
537 }
538
539 void
540 fmd_fmri_fini(void)
541 {
542 mem_dimm_map_t *dm, *em;
543 mem_bank_map_t *bm, *cm;
544 mem_grp_t *gm, *hm;
545 mem_seg_map_t *sm, *tm;
546
547 for (dm = mem.mem_dm; dm != NULL; dm = em) {
|