On Tue, Jan 3, 2017 at 6:37 AM, Nico Huber nico.huber@secunet.com wrote:
Hi Tank,
On 03.01.2017 04:20, Tang Tank wrote:
Hi all,
For smm handler (func smm_handler_start) in coreboot/src/cpu/x86/smm/smm_module_handler.c, there may be a logical error.
If I have 4 cores in my mainboard in the following special conditions:
- core0 run into smm_handler_start and smi_handler_status will be SMI_LOCKED.
- core1/2 run into smm_handler_start and pause since smi_handler_status is locked.
- core0 release smi_handler_status and then core4 run into smm_handler_start, it will do southbridge_smi_handler again.
looking at the code, I too see that possible race. But...
So is there have a reliable way of doing smm multi processors services in coreboot?
...IMO, this isn't unreliable. After the first run of a cpu/northbridge /southbridge_smi_handler() function, the cause of the SMI should be handled and thus the second run should do nothing (but checking for the SMI's cause).
Does that help? I wasn't sure if I got your question right.
Or you have to wait for all the CPUs to check in before dealing with the SMM handler logic. One would also have to deal with SMIs that were not broadcast since the other CPUs would never check in.
Nico
-- coreboot mailing list: coreboot@coreboot.org https://www.coreboot.org/mailman/listinfo/coreboot