uint32_t build_nr);
diff --git a/xenstore.c b/xenstore.c
-index 99b31fd..6f5b073 100644
+index 99b31fd..dd65438 100644
--- a/xenstore.c
+++ b/xenstore.c
@@ -27,6 +27,7 @@
static int xenstore_extended_power_mgmt_write(const char *key, const char *value)
{
int ret;
-@@ -1425,6 +1459,24 @@ int xenstore_refresh_battery_status(void)
+@@ -1425,6 +1459,37 @@ int xenstore_refresh_battery_status(void)
return xenstore_extended_power_mgmt_event_trigger("refreshbatterystatus", "1");
}
+void xenstore_register_for_pm_events(void)
+{
-+ xs_watch(xsh, "/pm/events/acadapterstatechanged", "acadapterstatechangeevt");
-+ xs_watch(xsh, "/pm/events/lidstatechanged", "lidstatechangeevt");
-+ xs_watch(xsh, "/pm/events/powerbuttonpressed", "pwrbuttonpressedevt");
-+ xs_watch(xsh, "/pm/events/sleepbuttonpressed", "slpbuttonpressedevt");
++ char *inject_sci_buffer;
++ uint inject_sci = 0;
++
++ xs_watch(xsh, "/pm/events/acadapterstatechanged", "acadapterstatechangeevt");
++ inject_sci_buffer = xenstore_device_model_read(domid, "inject-sci", NULL);
++ if ( inject_sci_buffer == NULL )
++ return;
++
++ inject_sci = strtoull(inject_sci, NULL, 10);
++ if ( inject_sci != 0 )
++ {
++ xs_watch(xsh, "/pm/events/lidstatechanged", "lidstatechangeevt");
++ xs_watch(xsh, "/pm/events/powerbuttonpressed", "pwrbuttonpressedevt");
++ xs_watch(xsh, "/pm/events/sleepbuttonpressed", "slpbuttonpressedevt");
++ }
++
++ free(inject_sci_buffer);
+}
+
+int xenstore_read_ac_adapter_state(void)