diff --git a/kern/arch/x86/apic.c b/kern/arch/x86/apic.c
index 9eadd5b..bdf71f5 100644
--- a/kern/arch/x86/apic.c
+++ b/kern/arch/x86/apic.c
@@ -142,6 +142,15 @@
 	 * the desired time. */
 	uint64_t ticks64 = (usec * __proc_global_info.bus_freq)
 	                   / LAPIC_TIMER_DIVISOR_VAL / 1000000;
+
+	// XXX had a bus_freq that was too small.  we used
+	// LAPIC_TIMER_DIVISOR_VAL and whatnot for the highest granularity or
+	// whatever, but this is really supposed to be based on bus freq. 
+	// 	actually, 32 was supposed to be reasonable
+	// 	12505216 = 12 MHz.  that is probably wrong... (computed)
+	if (!ticks64)
+		ticks64 = 1;
+
 	uint32_t ticks32 = ((ticks64 >> 32) ? 0xffffffff : ticks64);
 
 	assert(ticks32 > 0);
diff --git a/kern/arch/x86/apic9.c b/kern/arch/x86/apic9.c
index e5eb11e..49ab773 100644
--- a/kern/arch/x86/apic9.c
+++ b/kern/arch/x86/apic9.c
@@ -172,6 +172,7 @@
 		printd("apicinit%d: already initialised\n", apicno);
 		return;
 	}
+	// XXX we don't even use the old LAPIC_BASE anymore...?
 	assert(pa == LAPIC_PBASE);
 	apic->useable = 1;
 
@@ -181,6 +182,14 @@
 	 * akaros does its own remapping of hw <-> os coreid during smp_boot */
 
 	//X2APIC INIT
+	//XXX i think this is useless and wrong
+	//uh  which core are we running on?  this is core 0...  and all this
+	//function does is mark the apic usable if it wasn't before?
+	//also, this is the first time we jhaven't had an mp table, right?
+	//which might fuck up all of the shit
+	//	i.e. first time called from mpacpi or whatever
+	//	looks OK
+	//apiconline does this too, which is the real one
 	msr_val = read_msr(IA32_APIC_BASE);
 	write_msr(IA32_APIC_BASE, msr_val | (3<<10));
 }
@@ -248,11 +257,14 @@
 		printk("Bad apicno %d on HW core %d!!\n", apicno, hw_core_id());
 		return 0;
 	}
+	// XXX if we don't get this, we're fucked.  how are we even running?
+	// 	leftover turds from pre-x2apic?
+	// 	(do we need the lapic again, for AMD?
 	apic = &xlapic[apicno];
 	/* The addr check tells us if it is an IOAPIC or not... */
 	if (!apic->useable || apic->addr) {
-		printk("Unsuitable apicno %d on HW core %d!!\n", apicno,
-		       hw_core_id());
+		printk("Bad apic struct for apicno %d on HW core %d!! (useable %d, addr %p)\n",
+		       apicno, hw_core_id(), apic->useable, apic->addr);
 		return 0;
 	}
 	/* Things that can only be done when on the processor owning the APIC,
diff --git a/kern/arch/x86/mp.c b/kern/arch/x86/mp.c
index 5733be9..4312287 100644
--- a/kern/arch/x86/mp.c
+++ b/kern/arch/x86/mp.c
@@ -455,6 +455,7 @@
 		return r;
 #endif
 	r = sigscan(KADDR(0xe0000), 0x20000, signature);
+	// XXX found at 0
 	printk("Found MP table at %p\n", r);
 	if (r != NULL)
 		return r;
diff --git a/kern/arch/x86/mpacpi.c b/kern/arch/x86/mpacpi.c
index a5407a0..2fbaf7e 100644
--- a/kern/arch/x86/mpacpi.c
+++ b/kern/arch/x86/mpacpi.c
@@ -69,6 +69,28 @@
 			printd("apic proc %d/%d apicid %d %s\n", np - 1,
 			       apic->machno, st->lapic.id, already);
 			break;
+		case ASlx2apic:
+			// XXX hacked version of above
+			printd("ASlx2apic %d\n", st->lx2apic.id);
+			/* this table is supposed to have all of them if it
+			 * exists */
+			if (st->lx2apic.id > MaxAPICNO)
+				break;
+			apic = xlapic + st->lx2apic.id;
+			bp = (np++ == 0);
+			if (apic->useable) {
+				already = "(mp)";
+			} else if (ncleft != 0) {
+				ncleft--;
+				apicinit(st->lx2apic.id, mt->lapicpa, bp);
+			} else
+				already = "(off)";
+
+			// XXX machno is 0.  looks like an old plan9 thing
+			printd("apic proc %d/%d apicid %d %s\n", np - 1,
+			       apic->machno, st->lx2apic.id, already);
+			break;
+
 		case ASioapic:
 			printd("ASioapic %d\n", st->ioapic.id);
 			if (st->ioapic.id > Napic)
diff --git a/kern/arch/x86/topology.c b/kern/arch/x86/topology.c
index ea2a8c0..08101cf 100644
--- a/kern/arch/x86/topology.c
+++ b/kern/arch/x86/topology.c
@@ -110,11 +110,16 @@
 	for (int i = 0; i < apics->nchildren; i++) {
 		struct Apicst *temp = apics->children[i]->tbl;
 
-		if (temp != NULL && temp->type == ASlapic)
+		// XXX
+		if (temp != NULL && (temp->type == ASlapic || temp->type == ASlx2apic))
 			num_cores++;
 	}
-	if (num_cores < old_num_cores)
-		warn("Topology found less cores than early MADT parsing!");
+	if (num_cores < old_num_cores) {
+		warn("Topology found less cores (%d) than early MADT parsing! (%d)", num_cores, old_num_cores);
+		// XXX fucked
+		if (!num_cores)
+			num_cores = 2;
+	}
 	/* Too many cores will be a problem for some data structures. */
 	if (num_cores > old_num_cores)
 		panic("Topology found more cores than early MADT parsing!");
@@ -174,9 +179,15 @@
 	for (int i = 0; i < apics->nchildren; i++) {
 		struct Apicst *temp = apics->children[i]->tbl;
 
-		if (temp->type == ASlapic) {
+		switch (temp->type) {
+		case ASlapic:
 			if (temp->lapic.id > max_apic_id)
 				max_apic_id = temp->lapic.id;
+			break;
+		case ASlx2apic:
+			if (temp->lx2apic.id > max_apic_id)
+				max_apic_id = temp->lx2apic.id;
+			break;
 		}
 	}
 }
@@ -201,8 +212,14 @@
 	for (int i = 0; i < apics->nchildren; i++) {
 		struct Apicst *temp = apics->children[i]->tbl;
 
-		if (temp->type == ASlapic)
+		switch (temp->type) {
+		case ASlapic:
 			os_coreid_lookup[temp->lapic.id] = 0;
+			break;
+		case ASlx2apic:
+			os_coreid_lookup[temp->lx2apic.id] = 0;
+			break;
+		}
 	}
 	int os_coreid = 0;
 
@@ -380,6 +397,7 @@
 		build_flat_topology();
 }
 
+// XXX busted on cta9.  should be 2 sockets.  probably ACPI vs cpuid?
 void print_cpu_topology(void)
 {
 	printk("num_numa: %d, num_sockets: %d, num_cpus: %d, num_cores: %d\n",
diff --git a/kern/drivers/dev/acpi.c b/kern/drivers/dev/acpi.c
index cdac431..e4719db 100644
--- a/kern/drivers/dev/acpi.c
+++ b/kern/drivers/dev/acpi.c
@@ -1672,6 +1672,7 @@
 	return NULL;
 }
 
+// XXX wrong comment
 /* This may be an overestimate, if some LAPICS are present but disabled */
 static int madt_get_nr_cores(struct Sdthdr *madt)
 {
@@ -1684,7 +1685,15 @@
 	for (p += 44; p < madt_end; p += entry_len) {
 		entry_len = p[1];
 		switch (p[0]) {
+			// XXX NASTY
 		case ASlapic:
+			if (l32get(p + 4) == 0)
+				break;
+			nr_cores++;
+			break;
+		case ASlx2apic:
+			if (l32get(p + 8) == 0)
+				break;
 			nr_cores++;
 			break;
 		default:
diff --git a/kern/src/init.c b/kern/src/init.c
index a5e6349..83d54b5 100644
--- a/kern/src/init.c
+++ b/kern/src/init.c
@@ -133,6 +133,8 @@
 
 	exception_table_init();
 	num_cores = get_early_num_cores();
+	// XXX
+	printk("EARLY NUM CORES %d\n", num_cores);
 	pmem_init(multiboot_kaddr);
 	kmalloc_init();
 	vmap_init();
diff --git a/kern/src/ns/devtab.c b/kern/src/ns/devtab.c
index e88df66..660c671 100644
--- a/kern/src/ns/devtab.c
+++ b/kern/src/ns/devtab.c
@@ -27,10 +27,12 @@
 		return;
 	}
 	for (i = 0; &devtab[i] < __devtabend; i++) {
+		printk("%s: #%s\n", __func__, devtab[i].name);
 		if (devtab[i].reset)
 			devtab[i].reset();
 	}
 	poperror();
+	printk("%s complete\n", __func__);
 }
 
 void devtabinit(void)
@@ -48,10 +50,12 @@
 		 */
 		printd("i %d, '%s', dev %p, init %p\n", i, devtab[i].name,
 		       &devtab[i], devtab[i].init);
+		printk("%s: #%s\n", __func__, devtab[i].name);
 		if (devtab[i].init)
 			devtab[i].init();
 	}
 	poperror();
+	printk("%s complete\n", __func__);
 }
 
 void devtabshutdown(void)
