Date: Thu, 6 Jul 2006 05:33:40 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 100691 for review Message-ID: <200607060533.k665Xejs028716@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=100691 Change 100691 by kmacy@kmacy_storage:sun4v_work_stable on 2006/07/06 05:32:43 fix config add some debug info to pmap_ipi Affected files ... .. //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/conf/GENERIC#5 edit .. //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/pmap.c#8 edit Differences ... ==== //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/conf/GENERIC#5 (text+ko) ==== @@ -211,4 +211,4 @@ device ccd options SPIN_PROFILING -options HZ=100+options HZ=100 ==== //depot/projects/kmacy_sun4v_stable/src/sys/sun4v/sun4v/pmap.c#8 (text+ko) ==== @@ -1218,12 +1218,13 @@ pmap_ipi(pmap_t pmap, char *func, uint64_t arg1, uint64_t arg2) { - int i, cpu_count; + int i, cpu_count, retried; u_int cpus; cpumask_t cpumask, active, curactive; cpumask_t active_total, ackmask; uint16_t *cpulist; + retried = 0; if (!smp_started) return (0); @@ -1273,9 +1274,23 @@ while (ackmask != curactive) { membar(Sync); i++; - if (i > 10000000) - panic(" ackmask=0x%x active=0x%x\n", ackmask, curactive); + if (i > 10000000) { + uint64_t cpu_state; + printf("cpu with cpumask=0x%x appears to not be responding to ipis\n", + curactive & ~ackmask); + + hv_cpu_state((uint64_t)ffs64(curactive & ~ackmask), &cpu_state); + printf("cpu_state of %ld is %ld\n", ffs64(curactive & ~ackmask), cpu_state); + if (!retried) { + printf("I'm going to send off another ipi just to confirm that it isn't a memory barrier bug\n" + "and then I'm going to panic\n"); + + retried = 1; + goto retry; + } + panic(" ackmask=0x%x active=0x%x\n", ackmask, curactive); + } } active_total |= curactive;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607060533.k665Xejs028716>