--- TODO ------------- 5. Make things N-cpu instead of 2-cpu. 9. Write a good file. 10. Get rid of the idle procs. 11. Get timer irqs on secondary cpus. 12. Get other irqs on secondary cpus (sysctl!!) 13. Send APIC->APIC irq when process is killed. 14. Send APIC->APIC irq when debugger or panic 15. Make statistics look sensible for SMP. 16. Move apic_startup before pmap_bootstrap. 17. Add handshake so that all cpu's have paging enabled before pmap_bootstrap 18. Rewrite apic_startup in 'C', and have it take CPU# as argument 19. Patch the address of the real GDT into the mpboot trampoline and use that instead. 20. Make mpboot PIC and include it in mpcore.s 21. Make sysctl var for MP-desc structure from bios. (For easier examination) 22. Make cpu-id stuff an array[NCPU]. 23. Make ldt stuff an array[NCPU] 24. Kludge: start 2nd cpu as (0x01000000 - cpunumber()) 25. --- DONE ------------- 1. Get Peter to make a smp alias on freefall, I can't remember erics email :-) > Done. 2. Add a "whoami" to the cpu-private data, compare with apic_id at strategic points in time-space and complain bitterly if it's not the same. > Obsolete 3. If we try to get_mplock, and we already have it, we have a bug I think, and we should panic. Alternatively we need a counter to go with mp_lock to make it a real semaphore. > Counter was needed. 4. All the stuff in the cpu-private page should be put in a struct for the benefit of debuggers and so on. > CPU private pages are gone. 6. Does anybody actually prevent the VM system from using 0x98000..0x9d000 ? > Peter says yes. 7. Put the PDE[MPPTDI] value in the cpu-private page, that way the cpu can move if from one PDE to the next, and we can N'ify a lot of code by replacing the get apic_id if zero PDE[MPPTDI] = SMP_PT0|PG_RW|PG_V else PDE[MPPTDI] = SMP_PT0|PG_RW|PG_V by PDE[MPPTDI] = CPU_P0[MyPT]; Needs to go with 2 or chance of terrible mistake too big. > CPU private pages are gone. 8. What is the SMP_U[01] pages for ? User-mode data per cpu ? Are they used at this time ? > They're gone.