summaryrefslogtreecommitdiff
path: root/usr/src/cmd/picl
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/picl')
-rw-r--r--usr/src/cmd/picl/picld/picl.xml1
-rw-r--r--usr/src/cmd/picl/plugins/common/devtree/picldevtree.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/usr/src/cmd/picl/picld/picl.xml b/usr/src/cmd/picl/picld/picl.xml
index f09368fb5c..5a8f38d988 100644
--- a/usr/src/cmd/picl/picld/picl.xml
+++ b/usr/src/cmd/picl/picld/picl.xml
@@ -48,6 +48,7 @@
grouping='require_all'
restart_on='none'>
<service_fmri value='svc:/system/filesystem/minimal' />
+ <service_fmri value='svc:/system/sysevent' />
</dependency>
<dependency
diff --git a/usr/src/cmd/picl/plugins/common/devtree/picldevtree.c b/usr/src/cmd/picl/plugins/common/devtree/picldevtree.c
index 61435cd0fd..6ae36fed36 100644
--- a/usr/src/cmd/picl/plugins/common/devtree/picldevtree.c
+++ b/usr/src/cmd/picl/plugins/common/devtree/picldevtree.c
@@ -1517,8 +1517,14 @@ libdevinfo_init(picl_nodehdl_t rooth)
picl_nodehdl_t obph;
int err;
-
- if ((di_root = di_init("/", DINFOCPYALL)) == DI_NODE_NIL)
+ /*
+ * Use DINFOCACHE so that we obtain all attributes for all
+ * device instances (without necessarily doing a load/attach
+ * of all drivers). Once the (on-disk) cache file is built, it
+ * exists over a reboot and can be read into memory at a very
+ * low cost.
+ */
+ if ((di_root = di_init("/", DINFOCACHE)) == DI_NODE_NIL)
return (PICL_FAILURE);
if ((ph = di_prom_init()) == NULL)