[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Mach hangs during boot, triggered by -no-kvm-irqchip

From: Brent W. Baccala
Subject: Mach hangs during boot, triggered by -no-kvm-irqchip
Date: Thu, 4 Aug 2016 13:27:57 -1000

Hi -

I'm running Mach/Hurd in qemu/kvm, on a Linux 4.4.0 host (Ubuntu 16.04), with the -no-kvm-irqchip option, as suggested here:  https://www.gnu.org/software/hurd/contributing.html

Mach is 1.7+git20160607-486-dbg; the Hurd is from debian-hurd-20160325.

I've been having intermittent hangs during boot, which I've finally isolated to a disk image that will always trigger a hang, but only if kvm is enabled and -no-kvm-irqchip is specified.  Running qemu without kvm, or with kvm and without -no-kvm-irqchip, everything seems to work fine.

The problem always occurs right after the system enters runlevel 2:

Configuring network interfaces...Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on Socket//dev/eth0
Sending on   Socket//dev/eth0
DHCPDISCOVER on /dev/eth0 to port 67 interval 8
DHCPREQUEST of on /dev/eth0 to port 67
DHCPACK of from
bound to -- renewal in 33681 seconds.
Cleaning up temporary files....
Setting up X socket directories... /tmp/.X11-unix /tmp/.ICE-unix.
INIT: Entering runlevel: 2
Using makefile-style concurrent boot in runlevel 2.

At this point, Mach freezes.  I can not enter the debugger - cntl-alt-d does nothing.  I can attach with remote GDB, and it shows the processor halted in machine_idle().  I can inspect memory, but if I try to do something like "call db_command_loop()", it just sits there.  Breaking back into the debugger, the instruction pointer is pointing to the first instruction of db_command_loop().

GDB on qemu itself shows the emulator waiting in a ppoll() system call.  The instruction pointer moves (unlike the emulated processor), but it just loops around in main_loop_wait().

If I run without -no-kvm-irqchip, the boot now continues as follows:

unexpected ACK from keyboard
Starting enhanced syslogd: rsyslogd.
Starting periodic command scheduler: cron.
Starting system message bus: dbus.
Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Hurd stretch/sid debian console


I found something on bug-hurd from several years ago suggesting that we need -no-kvm-irqchip because Mach uses a mode of the interrupt controller that isn't properly emulated by qemu.  I also found http://lists.gnu.org/archive/html/bug-hurd/2011-08/msg00067.html, which suggests that this switch is not needed on recent Linux kernels.

So, can I drop -no-kvm-irqchip because it isn't needed anymore, or is more effort suggested to track down this problem?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]