AcpiExecSingleCPU: Spinlock is not released
src\acpi\psd\acpicpu.c, routine "AcpiExecSingleCPU":
around line: 802
if (ExeFlag & SMPEXEC_IPITIME), a CPU spinlock is aquired, then the user function executed but the CPU spinlock is not released thereafter.
I believe the code should be corrected to read:
if (ExeFlag & SMPEXEC_IPITIME)
{
while ( __lxchg((volatile int*)&CPULock, 1) ); // Wait if we are here
CPUMask &= (~(1 << pPSDPLMA->procnum)); // Clear bit, this CPU was execute
Status = Execute ( (void *)Context ); // call function
__lxchg((volatile int*)&CPULock, 0) ; // give way to next CPU -> ADD THIS !
return Status;
}
Change History
(5)
Milestone: |
Release version 3.17 → eCS 2.x
|
Version: |
3.16 → 3.17
|
Owner: |
changed from eco to Lars Erdmann
|
Resolution: |
→ fixed
|
Status: |
new → closed
|
Is now incorporated into trunk.