Allow the system process and a process without a parent process to use all cpus on a smp machine, even if only the boot cpu is running. Modified: trunk/reactos/ntoskrnl/ps/process.c Modified: trunk/reactos/ntoskrnl/ps/psmgr.c _____
Modified: trunk/reactos/ntoskrnl/ps/process.c --- trunk/reactos/ntoskrnl/ps/process.c 2005-09-24 19:30:12 UTC (rev 18034) +++ trunk/reactos/ntoskrnl/ps/process.c 2005-09-24 19:34:54 UTC (rev 18035) @@ -220,7 +220,14 @@
else { pParentProcess = NULL; +#ifdef CONFIG_SMP + /* FIXME: + * Only the boot cpu is initialized in the early boot phase. + */ + Affinity = 0xffffffff; +#else Affinity = KeActiveProcessors; +#endif }
/* Add the debug port */ _____
Modified: trunk/reactos/ntoskrnl/ps/psmgr.c --- trunk/reactos/ntoskrnl/ps/psmgr.c 2005-09-24 19:30:12 UTC (rev 18034) +++ trunk/reactos/ntoskrnl/ps/psmgr.c 2005-09-24 19:34:54 UTC (rev 18035) @@ -220,7 +220,15 @@
/* System threads may run on any processor. */ RtlZeroMemory(PsInitialSystemProcess, sizeof(EPROCESS)); +#ifdef CONFIG_SMP + /* FIXME: + * Only the boot cpu is initialized. Threads of the + * system process should be able to run on all cpus. + */ + PsInitialSystemProcess->Pcb.Affinity = 0xffffffff; +#else PsInitialSystemProcess->Pcb.Affinity = KeActiveProcessors; +#endif PsInitialSystemProcess->Pcb.IopmOffset = 0xffff; PsInitialSystemProcess->Pcb.BasePriority = PROCESS_PRIORITY_NORMAL; PsInitialSystemProcess->Pcb.QuantumReset = 6;