MDB provides the ::prtconf dcmd to display the kernel device tree. The output of this dcmd is similar to the output of the prtconf(1M) command:
> ::prtconf DEVINFO NAME 704c9f00 SUNW,Ultra-1 704c9e00 packages (driver not attached) 704c9c00 terminal-emulator (driver not attached) 704c9b00 deblocker (driver not attached) 704c9a00 obp-tftp (driver not attached) 704c9900 disk-label (driver not attached) 704c9800 sun-keyboard (driver not attached) 704c9700 ufs-file-system (driver not attached) 704c9d00 chosen (driver not attached) 704c9600 openprom (driver not attached) 704c9400 client-services (driver not attached) 704c9500 options, instance #0 704c9300 aliases (driver not attached) 704c9200 memory (driver not attached) 704c9100 virtual-memory (driver not attached) 704c9000 counter-timer (driver not attached) 704c8f00 sbus, instance #0 704c8d00 SUNW,CS4231 (driver not attached) 704c8c00 auxio (driver not attached) 704c8b00 flashprom (driver not attached) 704c8a00 SUNW,fdtwo (driver not attached) ...
Each line of output represents a node in the kernel's device tree. The address to the left of each node name is the address of the devinfo node. The node can then be displayed using the $<devinfo macro or the ::devinfo dcmd:
> 704c9f00::devinfo 704c9f00 SUNW,Ultra-1 Driver properties at 0x704bb208: pm-hardware-state: "no-suspend-resume" System properties at 0x704bb190: relative-addressing: 0x1 MMU_PAGEOFFSET: 0x1fff MMU_PAGESIZE: 0x2000 PAGESIZE: 0x2000 > 704c9f00$<devinfo 0x704cbd20: name: SUNW,Ultra-1 0x704c9f00: parent child sibling 0 704c9e00 0 0x704c9f10: addr nodeid instance 704be758 f00297e4 ffffffff 0x704c9f1c: ops parent_data driver_data rootnex_ops 702baad0 0 0x704c9f28: drv_prop_ptr sys_prop_ptr minor 704bb208 704bb190 0 0x704c9f34: next 0
Use ::prtconf to see where your driver has attached in the device tree, and to display device properties. You can also specify the verbose (-v) flag to ::prtconf to display the properties for each device node:
> ::prtconf -v DEVINFO NAME 704c9f00 SUNW,Ultra-1 Driver properties at 0x704bb208: pm-hardware-state: "no-suspend-resume" System properties at 0x704bb190: relative-addressing: 0x1 MMU_PAGEOFFSET: 0x1fff MMU_PAGESIZE: 0x2000 PAGESIZE: 0x2000 ... 704c8400 espdma, instance #0 704c8200 esp, instance #0 Driver properties at 0x702ba7d8: target0-sync-speed: 0x2710 target0-TQ scsi-selection-timeout: <000000fa.> (device: <0x3d/0x 00000000>) scsi-options: <00001ff8.> (device: <0x3d/0x00000000>) scsi-watchdog-tick: <0000000a.> (device: <0x3d/0x00000000>) scsi-tag-age-limit: <00000002.> (device: <0x3d/0x00000000>) scsi-reset-delay: <00000bb8.> (device: <0x3d/0x00000000>) ... 704c7c00 sd, instance #1 (driver not attached) System properties at 0x704ba4e8: lun: 0x0 target: 0x1 class_prop: "atapi" class: "scsi" ...
Another way to locate instances of your driver is the ::devbindings dcmd. Given a driver name, it displays a list of all instances of the named driver:
> ::devbindings sd 704c8100 sd (driver not attached) 704c7d00 sd, instance #0 Driver properties at 0x702ba5a8: pm-hardware-state: "needs-suspend-resume" ddi-kernel-ioctl System properties at 0x704ba588: lun: 0x0 target: 0x0 class_prop: "atapi" class: "scsi" 704c7c00 sd, instance #1 (driver not attached) System properties at 0x704ba4e8: lun: 0x0 target: 0x1 class_prop: "atapi" class: "scsi" 704c7b00 sd, instance #2 (driver not attached) System properties at 0x704ba448: lun: 0x0 target: 0x2 class_prop: "atapi" class: "scsi" ...