]> xenbits.xensource.com Git - people/liuw/stubdom.git/commitdiff
pvgrub: ignore NUL
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Thu, 6 Nov 2014 10:41:28 +0000 (10:41 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 10 Nov 2014 12:03:36 +0000 (12:03 +0000)
When using pvgrub in graphical mode with vnc, the grub timeout doesn't
work: the countdown doesn't even start. With a serial terminal the
problem doesn't occur and the countdown works as expected.

It turns out that the problem is that when using a graphical terminal,
checkkey () returns 0 instead of -1 when there is no activity on the
mouse or keyboard. As a consequence grub thinks that the user typed
something and interrupts the count down.

To fix the issue simply ignore keystrokes returning 0, that is the NUL
character anyway. Add a patch to grub.patches to do that.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Tested-by: Steven Haigh <netwiz@crc.id.au>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
grub.patches/11graphics-keyboard.diff [new file with mode: 0644]

diff --git a/grub.patches/11graphics-keyboard.diff b/grub.patches/11graphics-keyboard.diff
new file mode 100644 (file)
index 0000000..fe17b20
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/stage2/stage2.c b/stage2/stage2.c
+index 9d9fcc3..8353a3b 100644
+--- a/stage2/stage2.c
++++ b/stage2/stage2.c
+@@ -395,7 +395,7 @@ restart:
+        pressed.  
+        This avoids polling (relevant in the grub-shell and later on
+        in grub if interrupt driven I/O is done).  */
+-      if (checkkey () >= 0 || grub_timeout < 0)
++      if (checkkey () > 0 || grub_timeout < 0)
+       {
+         /* Key was pressed, show which entry is selected before GETKEY,
+            since we're comming in here also on GRUB_TIMEOUT == -1 and