On Thu, May 10, 2012 at 12:35:53PM +0000, Christoph Egger wrote: > Module Name: src > Committed By: cegger > Date: Thu May 10 12:35:53 UTC 2012 > > Modified Files: > src/sys/arch/x86/x86: cpu_ucode_amd.c > > Log Message: > xc_wait() does not wait for all cpus to finish > their callback. That means the ucode buffer is released while still in use > and this causes a crash. > Quick fix: check if the ucode buffer has been freed and abort. > You may need to run 'cpuctl ucode' twice to apply it to all cpus. > > Per discussion with rmind@ use low priority xcalls and splhigh.
Why don't you just provide each CPU with a copy of the ucode and let it free it once done? Even for 256 CPU with 16KB ucode, it would be only 4MB of temporary memory. Joerg