Opened 4 years ago

Closed 4 years ago

Last modified 12 months ago

#478 closed defect (fixed)

AcpiExecSingleCPU: Spinlock is not released

Reported by: erdmann Owned by: erdmann
Priority: major Milestone:
Component: ACPI PSD Version: 3.17
Keywords: Cc:

Description

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)

comment:1 Changed 4 years ago by erdmann

  • Milestone changed from Release version 3.17 to eCS 2.x
  • Version changed from 3.16 to 3.17

comment:2 Changed 4 years ago by erdmann

  • Owner changed from eco to erdmann

comment:3 Changed 4 years ago by erdmann

Is now incorporated into trunk.

comment:4 Changed 4 years ago by erdmann

  • Resolution set to fixed
  • Status changed from new to closed

comment:5 Changed 12 months ago by dazarewicz

  • Milestone eCS 2.x deleted

Milestone eCS 2.x deleted

Note: See TracTickets for help on using tickets.