Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757534Ab3DXTo3 (ORCPT ); Wed, 24 Apr 2013 15:44:29 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:49782 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757438Ab3DXTo2 (ORCPT ); Wed, 24 Apr 2013 15:44:28 -0400 X-IronPort-AV: E=Sophos;i="4.87,545,1363132800"; d="scan'208";a="20369884" From: Stefano Stabellini To: CC: , , , , , Stefano Stabellini , Marc Zyngier , , , Subject: [PATCH v4 7/7] mach-virt: support Xen hypercalls for shutdown and reboot Date: Wed, 24 Apr 2013 20:28:15 +0100 Message-ID: <1366831695-13214-7-git-send-email-stefano.stabellini@eu.citrix.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1862 Lines: 72 Signed-off-by: Stefano Stabellini CC: Marc Zyngier CC: will.deacon@arm.com CC: arnd@arndb.de CC: rob.herring@calxeda.com --- arch/arm/mach-virt/virt.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c index 528c05e..ba14321 100644 --- a/arch/arm/mach-virt/virt.c +++ b/arch/arm/mach-virt/virt.c @@ -23,13 +23,44 @@ #include #include +#include +#include + #include #include #include +#include + +static void virt_restart(char str, const char *cmd) +{ +#ifdef CONFIG_XEN + if (xen_domain()) { + struct sched_shutdown r = { .reason = SHUTDOWN_reboot }; + int rc; + rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &r); + if (rc) + BUG(); + } +#endif +} + +static void virt_power_off(void) +{ +#ifdef CONFIG_XEN + if (xen_domain()) { + struct sched_shutdown r = { .reason = SHUTDOWN_poweroff }; + int rc; + rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &r); + if (rc) + BUG(); + } +#endif +} static void __init virt_init(void) { of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); + pm_power_off = virt_power_off; } static void __init virt_timer_init(void) @@ -52,4 +83,5 @@ DT_MACHINE_START(VIRT, "Dummy Virtual Machine") .init_machine = virt_init, .smp = smp_ops(virt_smp_ops), .dt_compat = virt_dt_match, + .restart = virt_restart, MACHINE_END -- 1.7.2.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/