[so2] [Tema2] spin_lock_irqsave?

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sun Apr 3 17:27:04 EEST 2016


Ionel Popescu <ionel.popescu93 at gmail.com> writes:
> Salut,
>
> În data de 3 aprilie 2016, 11:51, Razvan Deaconescu via so2 <
> so2 at cursuri.cs.pub.ro> a scris:
>
>> Ionel Popescu via so2 <so2 at cursuri.cs.pub.ro> writes:
>> > Salut,
>> >
>> > Am si eu o nelamurire: cum este posibil ca handlerul unei intreruperi sa
>> > fie apelat pe acelasi procesor, desi am folosit spin_lock_irqsave pentru
>> a
>> > dezactiva intreruperile local?
>>
>> Handler-ul unei întreruperi _nu_ poate fi apelat pe același procesor în
>> regiunea critică marcată de spin_lock_irqsave() și
>> spin_unlock_irqrestore(). Apare undeva precizat altceva de ai tras
>> concluzia că se poate și ai pus întrebarea aici?
>
> Facand debug am observat ca handler-ul intreruperii este apelat, desi
> executia se afla in regiunea critica a lui spin_lock_irqsave(), astfel din
> aceasta pauza primesc " BUG: spinlock cpu recursion".

Ești sigur că este apelat handler-ul când ești _în_ regiunea critică? Ai
pus un mesaj la intrarea și la ieșirea din regiunea critică și atunci
este rulat handler-ul de tratare a întreruperii?

Impresia mea este că nu faci unlock bine la spinlock și/sau ai o
problemă în handler-ul de întrerupere la folosirea spinlock-ului.

Răzvan


More information about the so2 mailing list