xenbusb_nop_confighook_cb timeout

Egoitz Aurrekoetxea Aurre egoitz at ramattack.net
Wed Oct 10 20:24:25 UTC 2012


mmmm...

one thing mates… I need to check this in a more slower and conscientiously way but...

I think… in subr_autoconf.c file in function boot_run_interrupt_driven_config_hooks it's entering in a while causing to be looped there forever… because it doesn't see the NULL it's awaiting the while and apart of this, seems nothing changes in the given structures when calling msleep…. because perhaps… nothing should change and it's always basically not seen NULL too….. So loops six times and gets there…. panicked… Look…

root at pruebas:/root # diff -u /usr/src/sys/kern/subr_autoconf.c-defecto /usr/src/sys/kern/subr_autoconf.c
--- /usr/src/sys/kern/subr_autoconf.c-defecto	2012-10-10 13:51:27.000000000 +0200
+++ /usr/src/sys/kern/subr_autoconf.c	2012-10-10 18:21:51.000000000 +0200
@@ -133,16 +133,17 @@
 	/* Block boot processing until all hooks are disestablished. */
 	mtx_lock(&intr_config_hook_lock);
 	warned = 0;
-	while (!TAILQ_EMPTY(&intr_config_hook_list)) {
+	/* while (!TAILQ_EMPTY(&intr_config_hook_list)) { */
 		if (msleep(&intr_config_hook_list, &intr_config_hook_lock,
 		    0, "conifhk", WARNING_INTERVAL_SECS * hz) ==
 		    EWOULDBLOCK) {
+			printf("\n\n SARENET Individual lock name antes de unlock es : %s", intr_config_hook_lock.lock_object.lo_name);
 			mtx_unlock(&intr_config_hook_lock);
 			warned++;
 			run_interrupt_driven_config_hooks_warning(warned);
 			mtx_lock(&intr_config_hook_lock);
 		}
-	}
+	/* } */
 	mtx_unlock(&intr_config_hook_lock);
 }
 
TAILQ_EMPTY is at queue.h : 

#define	STAILQ_EMPTY(head)	((head)->stqh_first == NULL)

With the printf line entered by me… have not seen any text in intr_config_hook_lock.lock_object.lo_name struct element… So…. I commented the while as seen in the patch….

and the system is booting :)

root at pruebas:/root # 
root at pruebas:/root # 
root at pruebas:/root # 
root at pruebas:/root # uptime
 7:08PM  up 23 secs, 1 user, load averages: 0.96, 0.25, 0.09
root at pruebas:/root # uname -ar
FreeBSD pruebas.sare.net 9.1-RC2 FreeBSD 9.1-RC2 #0: Wed Oct 10 18:33:54 CEST 2012     root at pruebas.sare.net:/usr/obj/usr/src/sys/XENHVM11  amd64
root at pruebas:/root # 

So…. I'm guessing perhaps enters in the loop because the value is not exactly NULL and stays there till it attempts six times… and get there indefinitely like panicked….

Have tried it too with FreeBSD 9.0 RELENG_9_0….

As said at the beginning need to investigate further… but seems like we're going in the proper direction…. 

Cheers,



El 10/10/2012, a las 20:56, Mark Felder <feld at feld.me> escribió:

> This is also preventing my XCP 1.5beta to 1.6 testing :-(
> 
> 
> Any suggestions are appreciated!



More information about the freebsd-xen mailing list