Add IPMI 2.0 ColdReset command support
* Implement reset by reboot command issued in a shell
* Work with related changes in phosphor-host-ipmid repo
Resolves openbmc/openbmc#437
Change-Id: I8143b1ee9c0d547ee47e5bd3659a5126b6e5af98
Signed-off-by: Nan Li <william.bjlinan@hotmail.com>
diff --git a/libopenbmc_intf/openbmc_intf.c b/libopenbmc_intf/openbmc_intf.c
index 7a15116..f682ade 100644
--- a/libopenbmc_intf/openbmc_intf.c
+++ b/libopenbmc_intf/openbmc_intf.c
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.42.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.40.2. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
@@ -1233,7 +1233,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _hwmon_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _hwmon_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -3104,7 +3103,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _fan_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _fan_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -5240,7 +5238,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_value_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_value_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -7058,7 +7055,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_threshold_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_threshold_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -8245,7 +8241,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_i2c_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_i2c_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -9462,7 +9457,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_match_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_match_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -11969,7 +11963,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shared_resource_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _shared_resource_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -13475,7 +13468,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -13605,6 +13597,19 @@
/* ---- Introspection data for org.openbmc.control.Bmc ---- */
+static const _ExtendedGDBusMethodInfo _control_bmc_method_info_cold_reset =
+{
+ {
+ -1,
+ (gchar *) "coldReset",
+ NULL,
+ NULL,
+ NULL
+ },
+ "handle-cold-reset",
+ FALSE
+};
+
static const _ExtendedGDBusMethodInfo _control_bmc_method_info_warm_reset =
{
{
@@ -13620,6 +13625,7 @@
static const _ExtendedGDBusMethodInfo * const _control_bmc_method_info_pointers[] =
{
+ &_control_bmc_method_info_cold_reset,
&_control_bmc_method_info_warm_reset,
NULL
};
@@ -13678,6 +13684,7 @@
/**
* ControlBmcIface:
* @parent_iface: The parent interface.
+ * @handle_cold_reset: Handler for the #ControlBmc::handle-cold-reset signal.
* @handle_warm_reset: Handler for the #ControlBmc::handle-warm-reset signal.
*
* Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>.
@@ -13691,6 +13698,28 @@
{
/* GObject signals for incoming D-Bus method calls: */
/**
+ * ControlBmc::handle-cold-reset:
+ * @object: A #ControlBmc.
+ * @invocation: A #GDBusMethodInvocation.
+ *
+ * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method.
+ *
+ * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call control_bmc_complete_cold_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+ *
+ * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+ */
+ g_signal_new ("handle-cold-reset",
+ G_TYPE_FROM_INTERFACE (iface),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (ControlBmcIface, handle_cold_reset),
+ g_signal_accumulator_true_handled,
+ NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_BOOLEAN,
+ 1,
+ G_TYPE_DBUS_METHOD_INVOCATION);
+
+ /**
* ControlBmc::handle-warm-reset:
* @object: A #ControlBmc.
* @invocation: A #GDBusMethodInvocation.
@@ -13715,6 +13744,98 @@
}
/**
+ * control_bmc_call_cold_reset:
+ * @proxy: A #ControlBmcProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call control_bmc_call_cold_reset_finish() to get the result of the operation.
+ *
+ * See control_bmc_call_cold_reset_sync() for the synchronous, blocking version of this method.
+ */
+void
+control_bmc_call_cold_reset (
+ ControlBmc *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+ "coldReset",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ callback,
+ user_data);
+}
+
+/**
+ * control_bmc_call_cold_reset_finish:
+ * @proxy: A #ControlBmcProxy.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_call_cold_reset().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with control_bmc_call_cold_reset().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+control_bmc_call_cold_reset_finish (
+ ControlBmc *proxy,
+ GAsyncResult *res,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
+ * control_bmc_call_cold_reset_sync:
+ * @proxy: A #ControlBmcProxy.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See control_bmc_call_cold_reset() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+control_bmc_call_cold_reset_sync (
+ ControlBmc *proxy,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GVariant *_ret;
+ _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+ "coldReset",
+ g_variant_new ("()"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ cancellable,
+ error);
+ if (_ret == NULL)
+ goto _out;
+ g_variant_get (_ret,
+ "()");
+ g_variant_unref (_ret);
+_out:
+ return _ret != NULL;
+}
+
+/**
* control_bmc_call_warm_reset:
* @proxy: A #ControlBmcProxy.
* @cancellable: (allow-none): A #GCancellable or %NULL.
@@ -13807,6 +13928,24 @@
}
/**
+ * control_bmc_complete_cold_reset:
+ * @object: A #ControlBmc.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+control_bmc_complete_cold_reset (
+ ControlBmc *object,
+ GDBusMethodInvocation *invocation)
+{
+ g_dbus_method_invocation_return_value (invocation,
+ g_variant_new ("()"));
+}
+
+/**
* control_bmc_complete_warm_reset:
* @object: A #ControlBmc.
* @invocation: (transfer full): A #GDBusMethodInvocation.
@@ -15985,7 +16124,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_host_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_host_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -17651,7 +17789,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_power_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_power_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -20171,7 +20308,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _watchdog_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _watchdog_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -23620,7 +23756,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -25289,7 +25424,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_control_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -27074,7 +27208,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _button_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _button_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
@@ -28888,7 +29021,6 @@
skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
g_source_set_callback (skeleton->priv->changed_properties_idle_source, _led_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
- g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _led_emit_changed");
g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
g_source_unref (skeleton->priv->changed_properties_idle_source);
}
diff --git a/libopenbmc_intf/openbmc_intf.h b/libopenbmc_intf/openbmc_intf.h
index 4a1d7d6..a5e82a3 100644
--- a/libopenbmc_intf/openbmc_intf.h
+++ b/libopenbmc_intf/openbmc_intf.h
@@ -1,5 +1,5 @@
/*
- * Generated by gdbus-codegen 2.42.2. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.40.2. DO NOT EDIT.
*
* The license of this code is the same as for the source it was derived from.
*/
@@ -1717,6 +1717,10 @@
{
GTypeInterface parent_iface;
+ gboolean (*handle_cold_reset) (
+ ControlBmc *object,
+ GDBusMethodInvocation *invocation);
+
gboolean (*handle_warm_reset) (
ControlBmc *object,
GDBusMethodInvocation *invocation);
@@ -1730,6 +1734,10 @@
/* D-Bus method call completion functions: */
+void control_bmc_complete_cold_reset (
+ ControlBmc *object,
+ GDBusMethodInvocation *invocation);
+
void control_bmc_complete_warm_reset (
ControlBmc *object,
GDBusMethodInvocation *invocation);
@@ -1737,6 +1745,22 @@
/* D-Bus method calls: */
+void control_bmc_call_cold_reset (
+ ControlBmc *proxy,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean control_bmc_call_cold_reset_finish (
+ ControlBmc *proxy,
+ GAsyncResult *res,
+ GError **error);
+
+gboolean control_bmc_call_cold_reset_sync (
+ ControlBmc *proxy,
+ GCancellable *cancellable,
+ GError **error);
+
void control_bmc_call_warm_reset (
ControlBmc *proxy,
GCancellable *cancellable,
diff --git a/libopenbmc_intf/openbmc_intf.xml b/libopenbmc_intf/openbmc_intf.xml
index cabe910..81445a3 100644
--- a/libopenbmc_intf/openbmc_intf.xml
+++ b/libopenbmc_intf/openbmc_intf.xml
@@ -101,6 +101,7 @@
<signal name="Started"/>
</interface>
<interface name="org.openbmc.control.Bmc">
+ <method name="coldReset"/>
<method name="warmReset"/>
</interface>
<interface name="org.openbmc.control.Host">