From 1a81e38b17144624415d252a521fd5a06079d681 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 11 Jan 2011 13:01:13 -0500 Subject: make new code like old code Variable declarations at top of function, separate from initialization. Use == 0 instead of ! for checking pointers. Consistent spacing around {, *, casts. Declare 0-parameter functions as (void) not (). Integer valued functions return -1 on failure, 0 on success. --- mp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'mp.c') diff --git a/mp.c b/mp.c index d2f828a..edabdd6 100644 --- a/mp.c +++ b/mp.c @@ -113,8 +113,8 @@ mpinit(void) switch(*p){ case MPPROC: proc = (struct mpproc*)p; - if(ncpu != proc->apicid) { - cprintf("mpinit: ncpu=%d apicpid=%d", ncpu, proc->apicid); + if(ncpu != proc->apicid){ + cprintf("mpinit: ncpu=%d apicpid=%d\n", ncpu, proc->apicid); panic("mpinit"); } if(proc->flags & MPBOOT) -- cgit v1.2.3 From af6a6a477531aefa6e961c464de495e0c09af673 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Tue, 11 Jan 2011 13:16:28 -0500 Subject: mp: do not panic on surprising hw --- mp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'mp.c') diff --git a/mp.c b/mp.c index edabdd6..44ee020 100644 --- a/mp.c +++ b/mp.c @@ -113,9 +113,10 @@ mpinit(void) switch(*p){ case MPPROC: proc = (struct mpproc*)p; + cprintf("mpproc %d\n", proc->apicid); if(ncpu != proc->apicid){ - cprintf("mpinit: ncpu=%d apicpid=%d\n", ncpu, proc->apicid); - panic("mpinit"); + cprintf("mpinit: ncpu=%d apicid=%d\n", ncpu, proc->apicid); + ismp = 0; } if(proc->flags & MPBOOT) bcpu = &cpus[ncpu]; @@ -135,9 +136,17 @@ mpinit(void) continue; default: cprintf("mpinit: unknown config type %x\n", *p); - panic("mpinit"); + ismp = 0; } } + if(!ismp){ + // Didn't like what we found; fall back to no MP. + ncpu = 1; + lapic = 0; + ioapicid = 0; + return; + } + if(mp->imcrp){ // Bochs doesn't support IMCR, so this doesn't run on Bochs. // But it would on real hardware. -- cgit v1.2.3 From cf4b1ad90bcaeeb0c8458098c87948f61d408f94 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sat, 19 Feb 2011 21:17:55 -0500 Subject: xv6: formatting, cleanup, rev5 (take 2) --- mp.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'mp.c') diff --git a/mp.c b/mp.c index 44ee020..5ab348e 100644 --- a/mp.c +++ b/mp.c @@ -39,7 +39,6 @@ mpsearch1(uchar *addr, int len) { uchar *e, *p; - cprintf("mpsearch1 0x%x %d\n", addr, len); e = addr+len; for(p = addr; p < e; p += sizeof(struct mp)) if(memcmp(p, "_MP_", 4) == 0 && sum(p, sizeof(struct mp)) == 0) @@ -113,7 +112,6 @@ mpinit(void) switch(*p){ case MPPROC: proc = (struct mpproc*)p; - cprintf("mpproc %d\n", proc->apicid); if(ncpu != proc->apicid){ cprintf("mpinit: ncpu=%d apicid=%d\n", ncpu, proc->apicid); ismp = 0; -- cgit v1.2.3