From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1Zk7YC-0003ZD-8G for mharc-grub-devel@gnu.org; Thu, 08 Oct 2015 05:31:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zhggm-0002pY-6I for grub-devel@gnu.org; Thu, 01 Oct 2015 12:26:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zhggi-0000MO-TL for grub-devel@gnu.org; Thu, 01 Oct 2015 12:26:36 -0400 Received: from mail-by2on0134.outbound.protection.outlook.com ([207.46.100.134]:25918 helo=na01-by2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zhggi-0000Lq-GT for grub-devel@gnu.org; Thu, 01 Oct 2015 12:26:32 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=amesh@juniper.net; Received: from juniper.net (66.129.239.11) by BY2PR0501MB1733.namprd05.prod.outlook.com (10.163.154.19) with Microsoft SMTP Server (TLS) id 15.1.280.20; Thu, 1 Oct 2015 14:55:07 +0000 Date: Thu, 1 Oct 2015 07:55:04 -0700 From: Arthur Mesh To: Subject: Re: [PATCH] Make UEFI watchdog behaviour configurable Message-ID: <20151001145504.GB16400@juniper.net> References: <20150922210103.GS9962@juniper.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="rwEMma7ioTxnRzrJ" Content-Disposition: inline In-Reply-To: <20150922210103.GS9962@juniper.net> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [66.129.239.11] X-ClientProxiedBy: CO2PR04CA034.namprd04.prod.outlook.com (10.141.240.162) To BY2PR0501MB1733.namprd05.prod.outlook.com (25.163.154.19) X-Microsoft-Exchange-Diagnostics: 1; BY2PR0501MB1733; 2:TbNx8X96P4kUT1fwQtrSIcX/GDnxR/AVfNGhCXuJir0svBx/3gVRlOOh3FAJ1XC38eII2qYc6oUxy9RvwhLmi1YQ08nvijqMxT3Lo5Al72LGEGZkN6z3nY6C+YYh4cnbbPWD+tuLClqTwbYO/EeiILNJjgTyPQ19Afu0zai2I/s=; 3:UCs749wcHi0HbLAtaaA52oXMtZ8kG5SmhTnjLeZuklR835deQVXKHSAvIwQjFY359XHhzsMIC9GJj4uWY4XtqwBZQ8CyaExJzSZxXOr4unkjtjYXp4mrOOFVAk0nBp/0H/6SNIT9/fPnCHn8kJhm9A==; 25:mhaw4KTW1F2IkFm/AOWf1TX3YEvfgna3F/M4JQ4p79F/l//52nQQluMDOCrvo8kE9vwII4lkLNCQoN6zsSGCs3N7CWwqHJt0q4b8zAfzsFMMuT0UZz7VAw+KSgl/NsBKsg1a5TQHudzTiczAlkuvIc1dZ/LVEOwl8xYdkluAya8GBdoO/PTEq6Mwlf6PHYpvEZzGIWrw5vBHbyd6QrfuV3PhhzH4HLnzy+YXogHrvhv8sWgcVdq7/WVMq9SMgaqcfRhSNDS37WnwpHVr+m+xfQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0501MB1733; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0501MB1733; 20:iedNdEJTDiNwaIjelsheBtyznzuW+6P7i+TOFI4/D3oRkSPxBbXbnaFBcDS4ZcZ4BqOwj0rVpcn0pWwkgehNzo+oXF2relWix0RyKRu7IVsphnPDgbx926GHOY8XLFBghqpaYoYfiP3v8wLx3+kWlNk49iD2cc73j8y+u0JMvKv7sAwHDHBmY059hR1hHEtQY0yG4wQ23MnHZQ0iFVLDgiOYB/H/1g/PwxUNPYxZi6f3g89AVNN7mqhZsd0xvTG+O/zdWyQ4GArbXtpmena27SengErnzYIANcCmo3uxxvDun+jtOwePnd3Oet6oxydI3Hjm0RY7KmhBpjrQw9T1CITFKzPQvyIgRbbFv94icUmzvsTa4YyYGY2ro/g6rJSsMlsOsVZ7h6HYBsH+q0TTy7y+6ee+SN18h0oK96I/6V8fWSySqqXK1NdgraUhd9AwC4lS/48nYQYIvRUeU29Hn9TUsdgJIP23o7G/hZrE6Web4xdpD0K0jVaoUu+YBk/z; 4:War0EjIzOvPbGteVAPKFj9mvYCjv0dVm9XlA2FREUt9LR0Czry1EG4TFI79uLzsLOuTgB4wO9IZEIvxATZmWbJxxAHxSwlXYOWnNY+Qnvv7n9uCv7g2JKo0M8jsZmcaK79liNEuU76WBn3Sx/dz3kuOq4Hp/XsAoibHkRgbwCF8lidhYo0bT8fUCbIUmICXjWrvt/55q5Ze+gzeF/KiegPA2WMoZ7W+z0fHTCNVAzoY0OTViXhRjr5Vduyfqsj4I2OU6ZAGVYWbu7m2612rThO2+R7Af1MPqNtzjiK1rwAqowIezzs77Higxz+ysIREjnCt3ujBgLeGnLRQKUO8NUGaJGKcf78gFD286vIuh8MI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001); SRVR:BY2PR0501MB1733; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0501MB1733; X-Forefront-PRVS: 0716E70AB6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(189002)(199003)(24454002)(64706001)(15975445007)(92566002)(105586002)(5001960100002)(87976001)(69596002)(66066001)(77096005)(42186005)(86362001)(2950100001)(21086003)(19580395003)(33026002)(575784001)(68736005)(450100001)(5001830100001)(84326002)(77156002)(40100003)(19580405001)(4001540100001)(5007970100001)(2351001)(106356001)(62966003)(83506001)(101416001)(76176999)(5001860100001)(4001350100001)(81156007)(97736004)(122386002)(107886002)(5008740100001)(46102003)(36756003)(5004730100002)(54356999)(189998001)(110136002)(21480400002)(33656002)(50986999)(512954002)(2700100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR0501MB1733; H:juniper.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: juniper.net does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0501MB1733; 23:6KZ+MKa474bfu+lbuCRR6eBSn4ibhYocanQYn64?= =?us-ascii?Q?krpTam+NvRdx4BU8YzsUJpnbGqxxaGqhPcMJN8GhB0v01dwj+o7Zbni7Z8Yq?= =?us-ascii?Q?QHJKTvFVmZ8UQbD0QC53SI7E/fGYD1F7mo9UpKSGWqf/dCQKI1Fh5sfpCsnd?= =?us-ascii?Q?8WUfG0bfS+GUagsa7EIZFBX8GlHXIg4poLCdrQUUYVgq9I4bxh+I9b7cN1py?= =?us-ascii?Q?iyYhkPlTlmddY1g/+7Q4tQF1mGvZ/qwytcmBegOW7jtPzGCcUvlkzydw7UWl?= =?us-ascii?Q?nL3pHc6UmigWpU7liL58ZOCuLWCp/1ZfjTMhy7HdRdKOw+vVfWI/cPDcMvdG?= =?us-ascii?Q?4pDC76e/hHsLL2wA4a/NACTk+SmdoGHu0wyvrblveRyZxHGz3Bdqza8jtHeM?= =?us-ascii?Q?Z/7wi1Ffx9c3j38pgHbn4YVa89olW/Ku3UPDNI6T0G6RU+ZXxY8ewaFCHwQc?= =?us-ascii?Q?i1sEeGGpDBDbkFLSOETmfL8zsLvKpqaD5Uq62rf6ybO1UphrqVzICxDSu1xw?= =?us-ascii?Q?E4nFwS3/1EGGcnocOe4wQuAa43oTRmN5T74CBfbPRMx71eX+R+i8ll37jhSk?= =?us-ascii?Q?4pbI70uVq1CimN3Doq478BUzG4k9xv6O8yMLf5IgJikKATAj/wNLwcEbE95N?= =?us-ascii?Q?JM29+3U/pusLudOdjDkmjobjSGubCVPOFUZoJXiTOH/EvrlgZ1vqsZKSJ/wS?= =?us-ascii?Q?nNBiWV3ZVpiNVfTtsSXVqbd6IFkNtW9wYnnoz11HBDe1lOb4JLX0wd1Fjtxu?= =?us-ascii?Q?x69S8KB5cnKaSMhC5H9Z8loudFCjyqZ9JPofV6sKyCr/1SCEtqU2rZjqnKo4?= =?us-ascii?Q?mpjUSRuQR1NanLARUjglAjPQimOPn0d61GU4Qn403ks8ED+uPraHolAdWVm/?= =?us-ascii?Q?2MXbpzspjiHCuQ1JGJldQ4n9ltF3Tv+XxJGIlXRHH9uaPgouiqAxvsh3by1G?= =?us-ascii?Q?UVSREC2q/hgsnx5kLwzLucfrvkqww41LINiLC8YndVu3VF7zkJsIiqhcByiB?= =?us-ascii?Q?pM1XjEmDTvz9mGcxSJRgyBAoZfcrtajaELnWlHp/Kdarf2gFW7J/lL1y9+Q0?= =?us-ascii?Q?nFYPXOB0WU5mWJW6DNDy4hYsA7esOLm6lAXCZhOWRGPx6jkl+txuOFuBm6t9?= =?us-ascii?Q?5gpcIv6HYJd4mY4nnyrQbxzyDPEF8VdiTfsqhif12jPRTd1wc+rep+/PQbB7?= =?us-ascii?Q?PEOVuRUjYi0sHszBxciutipL8VoT+QmjEW9IDtjN/wzJeNRcyN1qDnT9G0Yh?= =?us-ascii?Q?WINj2VT37uuO9Zl3RTpd22QphxN7mDVHv2nw+aIq+rj2NPeqfBN6XDQ3SDsz?= =?us-ascii?Q?+7BMZj9xbQ4+9GWjt0/E0OK7a05gNwIdDAHOXFitoIHJi+CRyQi2ycLLKp6G?= =?us-ascii?Q?XP2PVLJDdiTTtCMwIF4QF4UMRr6nT2oM7sYDj2TmBmWBimDF+pWfILaPqNC/?= =?us-ascii?Q?kipHER72G1Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0501MB1733; 5:BQZRWXeEO5WmoqV5cPfiluYzL6+VBzcbQyQknNnVlzod+TYZv38pbPyjpH2wXk+UvFBhTxbavzIR7KCpF0ljT6gHgTJkg91j8b8c/q9qhFn9/3QAWsAJjDH0yKqoVAE95fq6up42f+m4XhfqNk4wWg==; 24:uObH2fjF4nysz0AbDn+8V7BvEiPBWu0w2ICpOkuLk7pcsPwQMr/9GjGDqaswMUpdLQf21+ME3EVffKsgeDhwQ7BMgGqRvtLWME/bli2pMRw=; 20:sWY+j5BmukkQLXDkWA4KKzx2b1pcycqj5d5JbtgE/rtZE7n8XwU3oYHmRF+JMjO+EwnX0kspLakhc0cLZu5V/A== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: juniper.net X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2015 14:55:07.1117 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0501MB1733 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 207.46.100.134 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Oct 2015 16:26:37 -0000 --rwEMma7ioTxnRzrJ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Folks, May I please get some feedback on this? Thanks On Tue, Sep 22, 2015 at 02:01:03PM -0700, Arthur Mesh wrote: > Starting with d9a0c9413e81d3c0affc6383693bdd28dc863a5c, GRUB unconditiona= lly > disables watchdog on EFI platforms. This opens up a window (starting at G= RUB's > grub_efi_init(), until OS re-enables it) when EFI system operates w/o wat= chdog. > If an EFI system gets stuck in that window, the chipset will never reset = the > system. >=20 > Create a command line interface to enable/disable watchdog: > efi-watchdog (enable|disable) > --- > docs/grub.texi | 11 ++++++++ > grub-core/kern/efi/init.c | 68 +++++++++++++++++++++++++++++++++++++++= ++++++ > 2 files changed, 79 insertions(+) >=20 > diff --git a/docs/grub.texi b/docs/grub.texi > index b9f41a7..507e1c6 100644 > --- a/docs/grub.texi > +++ b/docs/grub.texi > @@ -3784,6 +3784,7 @@ you forget a command, you can run the command @comm= and{help} > * distrust:: Remove a pubkey from trusted keys > * drivemap:: Map a drive to another > * echo:: Display a line of text > +* efi-watchdog:: Manipulate EFI watchdog > * eval:: Evaluate agruments as GRUB commands > * export:: Export an environment variable > * false:: Do nothing, unsuccessfully > @@ -4192,6 +4193,16 @@ When interpreting backslash escapes, backslash fol= lowed by any other > character will print that character. > @end deffn > =20 > +@node efi-watchdog > +@subsection efi-watchdog > + > +@deffn Command efi-watchdog enable|disable > +Enable or disable the system's watchdog timer. Only available in EFI tar= geted > +GRUB. > +The is logged upon watchdog timeout event. The UEFI BIOS reserves= codes > +0x0000 to 0xFFFF. > +The represents number of seconds to set the watchdog timeout t= o. > +@end deffn > =20 > @node eval > @subsection eval > diff --git a/grub-core/kern/efi/init.c b/grub-core/kern/efi/init.c > index e9c85de..e3d8288 100644 > --- a/grub-core/kern/efi/init.c > +++ b/grub-core/kern/efi/init.c > @@ -25,9 +25,73 @@ > #include > #include > #include > +#include > +#include > =20 > grub_addr_t grub_modbase; > =20 > +static grub_command_t cmd_list; > + > +static grub_err_t > +grub_cmd_efi_watchdog (grub_command_t cmd __attribute__ ((unused)), > + int argc, char **args) > +{ > + long input; > + grub_efi_status_t status; > + grub_efi_uintn_t timeout; > + grub_efi_uint64_t code; > + > + if (argc < 1) > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_("usage: efi-watchdog (enable|disable) ")); > + > + if (grub_strcasecmp (args[0], "enable") =3D=3D 0) { > + > + if (argc !=3D 3) > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_("usage: efi-watchdog enable ")); > + > + input =3D grub_strtol (args[1], 0, 0); > + > + if (input >=3D 0) { > + code =3D input; > + } else { > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_(" must be non-negative")); > + } > + > + input =3D grub_strtol (args[2], 0, 0); > + > + if (input >=3D 0) { > + timeout =3D (grub_efi_uintn_t) input; > + } else { > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_(" must be non-negative")); > + } > + > + } else if (grub_strcasecmp (args[0], "disable") =3D=3D 0) { > + > + if (argc !=3D 1) > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_("usage: efi-watchdog disable")); > + timeout =3D 0; > + code =3D 0; > + > + } else { > + return grub_error (GRUB_ERR_BAD_ARGUMENT, > + N_("usage: efi-watchdog (enable|disable) ")); > + } > + > + status =3D efi_call_4 (grub_efi_system_table->boot_services->set_wat= chdog_timer, > + timeout, code, sizeof(L"GRUB"), L"GRUB"); > + > + if (status !=3D GRUB_EFI_SUCCESS) > + return grub_error (GRUB_ERR_BUG, > + N_("Unexpected UEFI SetWatchdogTimer() error")); > + else > + return GRUB_ERR_NONE; > +} > + > void > grub_efi_init (void) > { > @@ -43,6 +107,9 @@ grub_efi_init (void) > 0, 0, 0, NULL); > =20 > grub_efidisk_init (); > + > + cmd_list =3D grub_register_command ("efi-watchdog", grub_cmd_efi_watch= dog, 0, > + N_("Enable/Disable system's watchdog timer.")); > } > =20 > void (*grub_efi_net_config) (grub_efi_handle_t hnd,=20 > @@ -77,4 +144,5 @@ grub_efi_fini (void) > { > grub_efidisk_fini (); > grub_console_fini (); > + grub_unregister_command (cmd_list); > } > --=20 > 1.7.9.5 >=20 >=20 > --=20 > Arthur Mesh > Juniper Networks > +1 408 936-4968 > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2 >=20 > iQGcBAABCAAGBQJWAcGPAAoJEAi6IWerhQY4bQ8L/iAKVJCQdouysH/vytGcgzuY > Vewzpamm+ey0VXwve5nCgFaPhtXFppwt25obolfNPQyXnm5p7XX8fe8y4q34ZQ2S > 6LiGHSXHFk9YfJOimc9Qdm+FcdTsuTLfG7nx/nUGfVP5tMPseC/26j7imRHP83lb > lDIKvDErhVTQPFHlnQhNix3LM+EPAfhlM9IvbwQ38FNjg4dPuSb9PLEAu4SG2TAt > QmLWJ+M99LXOzRoppN+bsmsO7mlb+v8sd//UUK+PpuA6dN2RSD6K+pe5+y6a4Msx > SKvn6dsdALR7BlLgnars+7uX6/TF5gEh/8a1MF9z+Y2HuUVMQQJwzDXners297Qg > hnMn32lhR7dZWpL2IRMhyN6gdunI+nUFBVXTwmJlU78wMVVLIM1kgsfdi4Rn/diU > svdAX526gT3H6VUsFhgMuoqJ1nWmIWwfd/99Jf3Md746ZgB/BWCCs+MZzpkdjYz2 > wGPgi21eK6wGHJPXp8ho+Up6W6yoB+NpEEH1xlnHXg=3D=3D > =3DEcr5 > -----END PGP SIGNATURE----- > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel --=20 Arthur Mesh Juniper Networks +1 408 936-4968 --rwEMma7ioTxnRzrJ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQGcBAABCAAGBQJWDUlIAAoJEAi6IWerhQY4x64MALy7OJxxoJBpDu4HBHrTJhSz dqSdC0NLKFHEw61/RZJVLahcxMuBA7nIbkmJDX9Jl3zgeLLTknksemhiSRt7wON7 DLH9uw3NtNS39R+h5BSAV2LKvG4RznZN2j7TnNQM+GxNr8oDPBNmO9SypE09vit0 OVwebF6rLzu39rcS/g+uq3Yj9AvLkXwiPw6oiH63/5c7pi9tISZT3BQ6tlrkORtM n4k4Jr9t5wWveUnv0NEHyMZ9JH7ckOOqA+1jeAzBWfP4KHgzhBiQNbPRtRglTNvO g3GEqzsk1E1RML7aPDRueIAkRz4s9HW+B5EOM4LQKYkayQxb/pHeox50Bg5yfo5A wJ+znYCeg3Qsm+EskciXxPD3d7+rKDF0CqYTZyINgAZgGljqtNWTXafjB7Sj5Fgs USRoRnOOcXv1M+LLuAb4Ob7pk5irHzgnAA68ju9hU01q8PxQ6N1WacVmGLsAuxU2 QP48Zj6nrrd6xOO7FWhaQSfMxqgicdrA794iQSlcvA== =6Z3y -----END PGP SIGNATURE----- --rwEMma7ioTxnRzrJ--