usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1020
shp->sh_addr = (Addr)(xkb->xkb_namelist + shp->sh_offset);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1030
shp->sh_addr = (Addr)(xkb->xkb_namelist + shp->sh_offset);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1039
shp->sh_addr = (Addr)(xkb->xkb_namelist + shp->sh_offset);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1043
buf = xkb->xkb_namelist + sizeof (xkb_namelist_t);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1045
if (!xkb_walk_syms(xkb, info->di_modules, &buf, sizes,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1048
if (!xkb_walk_syms(xkb, info->di_modules, &buf, sizes,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1051
if (!xkb_walk_syms(xkb, info->di_modules, &buf, sizes,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1059
xkb_open_core(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1061
xkb_core_t *xc = &xkb->xkb_core;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1066
xkb->xkb_type = XKB_FORMAT_CORE;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1068
if ((xkb->xkb_fd = open64(xkb->xkb_path, O_RDONLY)) == -1)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1069
return (xkb_fail(xkb, "cannot open %s", xkb->xkb_path));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1071
if (pread64(xkb->xkb_fd, &xc->xc_hdr, sizeof (xc->xc_hdr), 0) !=
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1073
return (xkb_fail(xkb, "invalid dump file"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1076
return (xkb_fail(xkb, "cannot process HVM images"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1079
return (xkb_fail(xkb, "invalid magic %d",
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1087
xkb->xkb_nr_pages = xc->xc_hdr.xch_nr_pages;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1088
xkb->xkb_pages_off = xc->xc_hdr.xch_pages_offset;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1089
xkb->xkb_max_pfn = xc->xc_hdr.xch_nr_pages - 1;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1090
xkb->xkb_nr_vcpus = xc->xc_hdr.xch_nr_vcpus;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1092
sz = xkb->xkb_nr_vcpus * sizeof (struct vcpu_guest_context);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1093
xkb->xkb_vcpu_data_sz = sz;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1094
xkb->xkb_vcpu_data = mdb_alloc(sz, UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1096
if (pread64(xkb->xkb_fd, xkb->xkb_vcpu_data, sz,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1098
return (xkb_fail(xkb, "cannot read VCPU contexts"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1100
sz = xkb->xkb_nr_vcpus * sizeof (struct vcpu_guest_context *);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1101
xkb->xkb_vcpus = mdb_alloc(sz, UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1103
vcp = xkb->xkb_vcpu_data;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1104
for (i = 0; i < xkb->xkb_nr_vcpus; i++)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1105
xkb->xkb_vcpus[i] = &vcp[i];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1111
xkb->xkb_pages = mmap(NULL, PAGE_SIZE * xkb->xkb_nr_pages,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1112
PROT_READ, MAP_SHARED, xkb->xkb_fd, xc->xc_hdr.xch_pages_offset);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1114
if (xkb->xkb_pages == (char *)MAP_FAILED)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1115
xkb->xkb_pages = NULL;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1121
xkb->xkb_is_pae = 1;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1123
if (!xkb_map_p2m(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1126
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1130
xkb_open_elf(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1132
xkb_elf_t *xe = &xkb->xkb_elf;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1141
if ((io = mdb_fdio_create_path(NULL, xkb->xkb_path,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1143
return (xkb_fail(xkb, "failed to open"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1149
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1152
xkb->xkb_fd = mdb_fdio_fileno(io);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1157
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1160
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1166
xkb->xkb_type = XKB_FORMAT_ELF;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1186
return (xkb_fail(xkb, "invalid ELF note "
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1196
return (xkb_fail(xkb, "invalid ELF note "
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1208
return (xkb_fail(xkb, "unknown major "
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1227
xkb->xkb_is_hvm = xe->xe_hdr.xeh_magic == XC_CORE_MAGIC_HVM;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1231
return (xkb_fail(xkb, "invalid magic %d",
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1235
xkb->xkb_nr_pages = xe->xe_hdr.xeh_nr_pages;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1236
xkb->xkb_is_pae = (strstr(xe->xe_version.xev_capabilities,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1242
return (xkb_fail(xkb, "cannot find section .xen_prstatus"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1245
return (xkb_fail(xkb, "invalid section .xen_prstatus"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1247
xkb->xkb_nr_vcpus = sect->gs_shdr.sh_size / sect->gs_shdr.sh_entsize;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1249
xkb->xkb_vcpu_data = mdb_gelf_sect_load(xe->xe_gelf, sect);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1250
if (xkb->xkb_vcpu_data == NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1251
return (xkb_fail(xkb, "cannot load section .xen_prstatus"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1252
xkb->xkb_vcpu_data_sz = sect->gs_shdr.sh_size;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1260
sz = xkb->xkb_nr_vcpus * sizeof (struct vcpu_guest_context *);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1261
xkb->xkb_vcpus = mdb_alloc(sz, UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1262
for (i = 0; i < xkb->xkb_nr_vcpus; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1263
dp = ((char *)xkb->xkb_vcpu_data +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1265
xkb->xkb_vcpus[i] = dp;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1271
return (xkb_fail(xkb, "cannot find section .xen_pages"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1274
return (xkb_fail(xkb, ".xen_pages is not page aligned"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1277
return (xkb_fail(xkb, "invalid section .xen_pages"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1279
xkb->xkb_pages_off = sect->gs_shdr.sh_offset;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1285
xkb->xkb_pages = mmap(NULL, PAGE_SIZE * xkb->xkb_nr_pages,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1286
PROT_READ, MAP_SHARED, xkb->xkb_fd, xkb->xkb_pages_off);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1288
if (xkb->xkb_pages == (char *)MAP_FAILED)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1289
xkb->xkb_pages = NULL;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1291
if (xkb->xkb_is_hvm) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1292
if (!xkb_build_fake_p2m(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1295
if (!xkb_build_p2m(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1299
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1303
xkb_init_mmu(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1306
xkb->xkb_mmu.mi_max = 3;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1307
xkb->xkb_mmu.mi_shift[0] = 12;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1308
xkb->xkb_mmu.mi_shift[1] = 21;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1309
xkb->xkb_mmu.mi_shift[2] = 30;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1310
xkb->xkb_mmu.mi_shift[3] = 39;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1311
xkb->xkb_mmu.mi_ptes = 512;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1312
xkb->xkb_mmu.mi_ptesize = 8;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1314
if (xkb->xkb_is_pae) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1315
xkb->xkb_mmu.mi_max = 2;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1316
xkb->xkb_mmu.mi_shift[0] = 12;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1317
xkb->xkb_mmu.mi_shift[1] = 21;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1318
xkb->xkb_mmu.mi_shift[2] = 30;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1319
xkb->xkb_mmu.mi_ptes = 512;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1320
xkb->xkb_mmu.mi_ptesize = 8;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1322
xkb->xkb_mmu.mi_max = 1;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1323
xkb->xkb_mmu.mi_shift[0] = 12;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1324
xkb->xkb_mmu.mi_shift[1] = 22;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1325
xkb->xkb_mmu.mi_ptes = 1024;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1326
xkb->xkb_mmu.mi_ptesize = 4;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1338
xkb_t *xkb = NULL;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1342
return (xkb_fail(xkb, "cannot stat %s", corefile));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1345
return (xkb_fail(xkb, "invalid open flags"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1347
xkb = mdb_zalloc(sizeof (*xkb), UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1350
xkb->xkb_pt_map[i].mm_mfn = MFN_INVALID;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1351
xkb->xkb_pt_map[i].mm_map = (char *)MAP_FAILED;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1354
xkb->xkb_type = XKB_FORMAT_UNKNOWN;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1355
xkb->xkb_map.mm_mfn = MFN_INVALID;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1356
xkb->xkb_map.mm_map = (char *)MAP_FAILED;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1357
xkb->xkb_core.xc_p2m_buf = (char *)MAP_FAILED;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1358
xkb->xkb_fd = -1;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1360
xkb->xkb_path = strdup(corefile);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1362
if ((xkb = xkb_open_elf(xkb)) == NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1365
if (xkb->xkb_type == XKB_FORMAT_UNKNOWN) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1366
if (!xkb_open_core(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1370
xkb_init_mmu(xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1372
if (!xkb_build_m2p(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1375
if (xkb->xkb_is_hvm)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1378
if (xkb_read(xkb, debug_info, &xkb->xkb_info,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1379
sizeof (xkb->xkb_info)) != sizeof (xkb->xkb_info))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1380
return (xkb_fail(xkb, "cannot read debug_info"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1382
if (xkb->xkb_info.di_magic != DEBUG_INFO_MAGIC) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1383
return (xkb_fail(xkb, "invalid debug info magic %d",
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1384
xkb->xkb_info.di_magic));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1387
if (xkb->xkb_info.di_version != DEBUG_INFO_VERSION) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1388
return (xkb_fail(xkb, "unknown debug info version %d",
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1389
xkb->xkb_info.di_version));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1392
if (!xkb_build_ksyms(xkb))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1393
return (xkb_fail(xkb, "cannot construct namelist"));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1395
return (xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1399
xkb_close(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1403
if (xkb == NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1406
if (xkb->xkb_m2p != NULL) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1407
mdb_free(xkb->xkb_m2p,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1408
(xkb->xkb_max_mfn + 1) * sizeof (xen_pfn_t));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1411
if (xkb->xkb_pages != NULL) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1412
(void) munmap((void *)xkb->xkb_pages,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1413
PAGE_SIZE * xkb->xkb_nr_pages);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1416
char *addr = xkb->xkb_pt_map[i].mm_map;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1420
if (xkb->xkb_map.mm_map != (char *)MAP_FAILED) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1421
(void) munmap((void *)xkb->xkb_map.mm_map,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1426
if (xkb->xkb_namelist != NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1427
mdb_free(xkb->xkb_namelist, xkb->xkb_namesize);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1429
if (xkb->xkb_type == XKB_FORMAT_ELF) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1430
xkb_elf_t *xe = &xkb->xkb_elf;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1435
sz = sizeof (xen_pfn_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1437
if (xkb->xkb_p2m != NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1438
mdb_free(xkb->xkb_p2m, sz);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1440
sz = sizeof (size_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1445
} else if (xkb->xkb_type == XKB_FORMAT_CORE) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1446
xkb_core_t *xc = &xkb->xkb_core;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1448
if (xkb->xkb_fd != -1)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1449
(void) close(xkb->xkb_fd);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1451
sz = (xkb->xkb_nr_pages * sizeof (mfn_t)) + (PAGE_SIZE * 2);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1457
if (xkb->xkb_vcpu_data != NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1458
mdb_free(xkb->xkb_vcpu_data, xkb->xkb_vcpu_data_sz);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1461
if (xkb->xkb_vcpus != NULL) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1463
xkb->xkb_nr_vcpus;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1464
mdb_free(xkb->xkb_vcpus, sz);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1467
free(xkb->xkb_path);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1469
mdb_free(xkb, sizeof (*xkb));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1475
xkb_sym_io(xkb_t *xkb, const char *symfile)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1477
mdb_io_t *io = mdb_memio_create(xkb->xkb_namelist, xkb->xkb_namesize);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1480
mdb_warn("failed to create namelist from %s", xkb->xkb_path);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1486
xkb_vtop(xkb_t *xkb, struct as *as, uintptr_t addr)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1488
mfn_t tlmfn = xkb_cr3_to_pfn(xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1491
if (as != NULL && (tlmfn = xkb_as_to_mfn(xkb, as)) == MFN_INVALID)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1494
mfn = xkb_va_to_mfn(xkb, addr, tlmfn);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1496
if (mfn == MFN_INVALID || mfn > xkb->xkb_max_mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1499
return (((uint64_t)xkb->xkb_m2p[mfn] << PAGE_SHIFT)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1504
xkb_getmregs(xkb_t *xkb, uint_t cpu, struct privmregs *mregs)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1510
if (cpu >= xkb->xkb_nr_vcpus) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
1517
vcpu = xkb->xkb_vcpus[cpu];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
338
xkb_fail(xkb_t *xkb, const char *msg, ...)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
343
if (xkb != NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
344
(void) fprintf(stderr, "%s: ", xkb->xkb_path);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
348
if (xkb != NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
349
(void) xkb_close(xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
357
xkb_build_m2p(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
361
for (i = 0; i <= xkb->xkb_max_pfn; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
362
if (xkb->xkb_p2m[i] != MFN_INVALID &&
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
363
xkb->xkb_p2m[i] > xkb->xkb_max_mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
364
xkb->xkb_max_mfn = xkb->xkb_p2m[i];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
367
xkb->xkb_m2p = mdb_alloc((xkb->xkb_max_mfn + 1) * sizeof (xen_pfn_t),
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
370
for (i = 0; i <= xkb->xkb_max_mfn; i++)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
371
xkb->xkb_m2p[i] = PFN_INVALID;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
373
for (i = 0; i <= xkb->xkb_max_pfn; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
374
if (xkb->xkb_p2m[i] != MFN_INVALID)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
375
xkb->xkb_m2p[xkb->xkb_p2m[i]] = i;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
386
xkb_map_p2m(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
390
xkb_core_t *xc = &xkb->xkb_core;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
391
size_t count = xkb->xkb_nr_pages;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
400
MAP_SHARED, xkb->xkb_fd, off);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
403
(void) xkb_fail(xkb, "cannot map p2m table");
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
408
xkb->xkb_p2m = (mfn_t *)((char *)xc->xc_p2m_buf +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
421
xkb_build_p2m(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
423
xkb_elf_t *xe = &xkb->xkb_elf;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
436
(void) xkb_fail(xkb, "cannot find section .xen_p2m");
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
441
(void) xkb_fail(xkb, "couldn't read .xen_p2m");
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
445
for (i = 0; i < xkb->xkb_nr_pages; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
446
if (p2m[i].pfn > xkb->xkb_max_pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
447
xkb->xkb_max_pfn = p2m[i].pfn;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
450
size = sizeof (xen_pfn_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
451
xkb->xkb_p2m = mdb_alloc(size, UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
452
size = sizeof (size_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
455
for (i = 0; i <= xkb->xkb_max_pfn; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
456
xkb->xkb_p2m[i] = PFN_INVALID;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
460
for (i = 0; i < xkb->xkb_nr_pages; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
461
xkb->xkb_p2m[p2m[i].pfn] = p2m[i].gmfn;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
475
xkb_build_fake_p2m(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
477
xkb_elf_t *xe = &xkb->xkb_elf;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
487
(void) xkb_fail(xkb, "cannot find section .xen_pfn");
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
492
(void) xkb_fail(xkb, "couldn't read .xen_pfn");
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
496
for (i = 0; i < xkb->xkb_nr_pages; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
497
if (p2pfn[i] != PFN_INVALID && p2pfn[i] > xkb->xkb_max_pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
498
xkb->xkb_max_pfn = p2pfn[i];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
501
size = sizeof (xen_pfn_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
502
xkb->xkb_p2m = mdb_alloc(size, UM_SLEEP);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
504
size = sizeof (size_t) * (xkb->xkb_max_pfn + 1);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
507
for (i = 0; i <= xkb->xkb_max_pfn; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
508
xkb->xkb_p2m[i] = PFN_INVALID;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
512
for (i = 0; i < xkb->xkb_nr_pages; i++) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
515
xkb->xkb_p2m[p2pfn[i]] = p2pfn[i];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
526
xkb_as_to_mfn(xkb_t *xkb, struct as *as)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
533
if (!xkb_read_word(xkb, asp + offsetof(struct as, a_hat), &hatp))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
535
if (!xkb_read_word(xkb, hatp + xkb->xkb_info.di_hat_htable_off,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
538
if (!xkb_read_word(xkb, htablep + xkb->xkb_info.di_ht_pfn_off,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
542
if (pfn > xkb->xkb_max_pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
545
return (xkb->xkb_p2m[pfn]);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
549
xkb_cr3_to_pfn(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
551
uint64_t cr3 = xkb->xkb_vcpus[0]->ctrlreg[3];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
552
if (xkb->xkb_is_hvm)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
558
xkb_read_helper(xkb_t *xkb, struct as *as, int phys, uint64_t addr,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
562
int windowed = (xkb->xkb_pages == NULL);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
563
mfn_t tlmfn = xkb_cr3_to_pfn(xkb);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
565
if (as != NULL && (tlmfn = xkb_as_to_mfn(xkb, as)) == MFN_INVALID)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
576
mfn = xkb_va_to_mfn(xkb, pos, tlmfn);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
581
if (pfn > xkb->xkb_max_pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
583
mfn = xkb->xkb_p2m[pfn];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
592
offset_t off = xkb_mfn_to_offset(xkb, mfn);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
600
ret = pread64(xkb->xkb_fd, outpos, sz, off);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
608
if (xkb_map_mfn(xkb, mfn, &xkb->xkb_map) == NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
611
bcopy(xkb->xkb_map.mm_map + pageoff, outpos, sz);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
621
xkb_pread(xkb_t *xkb, uint64_t addr, void *buf, size_t size)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
623
return (xkb_read_helper(xkb, NULL, 1, addr, buf, size));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
627
xkb_aread(xkb_t *xkb, uintptr_t addr, void *buf, size_t size, struct as *as)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
629
return (xkb_read_helper(xkb, as, 0, addr, buf, size));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
633
xkb_read(xkb_t *xkb, uintptr_t addr, void *buf, size_t size)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
635
return (xkb_aread(xkb, addr, buf, size, NULL));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
639
xkb_read_word(xkb_t *xkb, uintptr_t addr, uintptr_t *buf)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
641
if (xkb_read(xkb, addr, buf, sizeof (uintptr_t)) !=
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
648
xkb_readstr(xkb_t *xkb, uintptr_t addr)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
654
if (xkb_read(xkb, addr + i, &str[i], 1) != 1) {
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
672
xkb_pfn_to_off(xkb_t *xkb, xen_pfn_t pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
674
if (pfn == PFN_INVALID || pfn > xkb->xkb_max_pfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
677
if (xkb->xkb_type == XKB_FORMAT_CORE)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
680
return (PAGE_SIZE * (xkb->xkb_elf.xe_off[pfn]));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
684
xkb_mfn_to_offset(xkb_t *xkb, mfn_t mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
688
if (mfn > xkb->xkb_max_mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
691
pfn = xkb->xkb_m2p[mfn];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
696
return (xkb->xkb_pages_off + xkb_pfn_to_off(xkb, pfn));
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
700
xkb_map_mfn(xkb_t *xkb, mfn_t mfn, mfn_map_t *mm)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
702
int windowed = (xkb->xkb_pages == NULL);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
716
if ((off = xkb_mfn_to_offset(xkb, mfn)) == (-1ULL))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
720
xkb->xkb_fd, off);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
729
if (mfn > xkb->xkb_max_mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
732
pfn = xkb->xkb_m2p[mfn];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
737
mm->mm_map = xkb->xkb_pages + xkb_pfn_to_off(xkb, pfn);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
776
xkb_va_to_mfn(xkb_t *xkb, uintptr_t va, mfn_t mfn)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
778
mmu_info_t *mmu = &xkb->xkb_mmu;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
785
if (xkb_map_mfn(xkb, mfn, &xkb->xkb_pt_map[level]) == NULL)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
790
pte = xkb_get_pte(mmu, (char *)xkb->xkb_pt_map[level].mm_map +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
816
xkb_read_module(xkb_t *xkb, uintptr_t modulep, struct module *module,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
819
if (xkb_read(xkb, modulep, module, sizeof (struct module)) !=
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
823
if (!xkb_read_word(xkb, (uintptr_t)module->symhdr +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
827
if (!xkb_read_word(xkb, (uintptr_t)module->strhdr +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
831
if (!xkb_read_word(xkb, (uintptr_t)module->symhdr +
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
840
xkb_read_modsyms(xkb_t *xkb, char **buf, size_t *sizes, int types,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
851
if (xkb_read(xkb, sym_addr + i * sizeof (sym), &sym,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
858
name = xkb_readstr(xkb, str_addr + sym.st_name);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
885
xkb_walk_syms(xkb_t *xkb, uintptr_t modhead, char **buf,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
918
if (!xkb_read_word(xkb,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
925
if (!xkb_read_module(xkb, modulep, &module, &sym_addr,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
932
if (!xkb_read_modsyms(xkb, buf, sizes, types, sym_addr,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
937
if (!xkb_read_word(xkb,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
959
xkb_build_ksyms(xkb_t *xkb)
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
961
debug_info_t *info = &xkb->xkb_info;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
969
if (xkb_read(xkb, info->di_modules, &modules,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
975
if (!xkb_walk_syms(xkb, info->di_modules, NULL, sizes,
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
979
xkb->xkb_namesize = sizeof (xkb_namelist_t);
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
980
xkb->xkb_namesize += sizes[XKB_WALK_LOCAL];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
981
xkb->xkb_namesize += sizes[XKB_WALK_GLOBAL];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
982
xkb->xkb_namesize += sizes[XKB_WALK_STR];
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
984
if ((xkb->xkb_namelist = mdb_zalloc(xkb->xkb_namesize, UM_SLEEP))
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
989
hdr = (xkb_namelist_t *)xkb->xkb_namelist;
usr/src/cmd/mdb/intel/modules/mdb_kb/mdb_kb.c
991
if (xkb_read(xkb, module + offsetof(struct module, hdr),