With the latest microcde update, there's one big problem: size. I haven't gotten to work yet on the model_f* cpus, but with the model_6xx cpus, we're way over the size barrier. So, I'd like to propose some changes to the organization, mostly for the better. The directory structure, in the end, would look something like this:
cpu/intel/: /intel_generic/: contains generic intel init code, used by all intel cpus. Also contains a generic driver, with no microcode updates and _all_ intel CPU IDs, for using an OS microcode update. /microcode/: contains all microcode files from the most recent update (20070907), along with current microcode update code. /slot_1_p2/: contains CPU IDs and microcode updates for Slot 1 P2s, P2-based Celerons, and mobile P2/P2-based Celerons /slot_1_p3/: Same as above, except for P3s, no mobiles /socket_370/: Same as above, for Socket 370 and mobile CPUs etc, etc.
Benefits: * We gain the latest microcode updates and support for every current Intel CPU, including Core/Core 2 (on an experimental, but it should work, basis). * Removal of a bunch of repeated code, no more model_xxx folders/confusion, just select a socket
Side Effects: * The end user needs to select between p2 and p3 cpus for slot 1 systems. This may also come up in LGA775-based systems, due to size constraints * The code looks somewhat ugly
I've attached intel_init.c, which is the generic intel CPU init, and slot_1_p2.c, which uses it, so you can see what I'm talking about. slot_1_p2.c was formerly just slot_1.c, so commented microcode updates and the appropriate CPU IDs will be removed. Feedback greatly appreciated!