pc/pc64: backing out new mp startup code (caused issues with ramnode)

apparently, this causes some quadcore ramnode vm to hang on boot,
even tho all cores successfully started up and are operational.

i suspect some side effect from timersinit()... this would also
mean *notsc= would break it (syncclock() would continue)...
its unclear.

i'm reverting this for now until the problem is better understood.
This commit is contained in:
cinap_lenrek 2016-01-13 23:18:25 +01:00
parent 21b70c782a
commit ed4c812765
3 changed files with 5 additions and 15 deletions

View file

@ -196,7 +196,9 @@ mpinit(void)
ncpu = MAXMACH;
memmove((void*)APBOOTSTRAP, apbootstrap, sizeof(apbootstrap));
for(i=0; i<nelem(mpapic); i++){
if((apic = mpapic[i]) == nil || apic->machno == 0 || apic->machno >= MAXMACH)
if((apic = mpapic[i]) == nil)
continue;
if(apic->machno >= MAXMACH)
continue;
if(ncpu <= 1)
break;
@ -204,17 +206,6 @@ mpinit(void)
mpstartap(apic);
conf.nmach++;
ncpu--;
if(!apic->online){
print("LAPIC%d: cpu%d did not startup\n", i, apic->machno);
continue;
}
/* update tscticks for ap's syncclock() */
while(!active.machs[apic->machno]){
if(arch->fastclock == tscticks)
cycles(&m->tscticks);
}
}
}

View file

@ -34,7 +34,7 @@ squidboy(Apic* apic)
unlock(&active);
while(!active.thunderbirdsarego)
idlehands();
microdelay(100);
schedinit();
}

View file

@ -15,7 +15,6 @@ squidboy(Apic* apic)
mmuinit();
cpuidentify();
cpuidprint();
apic->online = 1;
coherence();
@ -29,7 +28,7 @@ squidboy(Apic* apic)
unlock(&active);
while(!active.thunderbirdsarego)
idlehands();
microdelay(100);
schedinit();
}