[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] pv-grub: fix boot crash when no fb is available
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1270534381 -3600 # Node ID a3f7352d83eb6332aa89874ca58863807e8efacd # Parent 4822f82acec6d36e651f6c205ddf8a8109262423 pv-grub: fix boot crash when no fb is available When no fb is available, init_fbfront will return, so the local semaphore for synchronization with the kbd thread would get dropped. Using a global static semaphore instead fixes this. Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> --- stubdom/grub/mini-os.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) diff -r 4822f82acec6 -r a3f7352d83eb stubdom/grub/mini-os.c --- a/stubdom/grub/mini-os.c Tue Apr 06 07:12:39 2010 +0100 +++ b/stubdom/grub/mini-os.c Tue Apr 06 07:13:01 2010 +0100 @@ -651,12 +651,11 @@ int console_getkey (void) return 0; } +static DECLARE_MUTEX_LOCKED(kbd_sem); static void kbd_thread(void *p) { - struct semaphore *sem = p; - kbd_dev = init_kbdfront(NULL, 1); - up(sem); + up(&kbd_sem); } struct fbfront_dev *fb_open(void *fb, int width, int height, int depth) @@ -665,10 +664,9 @@ struct fbfront_dev *fb_open(void *fb, in int linesize = width * (depth / 8); int memsize = linesize * height; int numpages = (memsize + PAGE_SIZE - 1) / PAGE_SIZE; - DECLARE_MUTEX_LOCKED(sem); int i; - create_thread("kbdfront", kbd_thread, &sem); + create_thread("kbdfront", kbd_thread, &kbd_sem); mfns = malloc(numpages * sizeof(*mfns)); for (i = 0; i < numpages; i++) { @@ -681,7 +679,7 @@ struct fbfront_dev *fb_open(void *fb, in if (!fb_dev) return NULL; - down(&sem); + down(&kbd_sem); if (!kbd_dev) return NULL; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |