[lkml]   [2008]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [patch 1/4] firewire: fix race of bus reset with request transmission
    I wrote:
    > Contexts which access an instance of struct fw_transaction are:
    > 1. the submitter, until it inserted the packet which is embedded in the
    > transaction into the AT req DMA,
    > 2. the AsReqTrContext tasklet when the request packet was acked by the
    > responder node or transmission to the responder failed,
    > 3. the AsRspRcvContext tasklet when it found a request which matched
    > an incoming response,
    > 4. the card->flush_timer when it picks up timed-out transactions to
    > cancel them,
    > 5. the bus reset tasklet when it cancels transactions (this access is
    > eliminated by this patch),
    > 6. a process which shuts down an fw_card (unregisters it from fw-core
    > when the controller is unbound from fw-ohci) --- although in this
    > case there shouldn't really be any transactions anymore because we
    > wait until all card users finished their business with the card.
    > All of these contexts run concurrently (except for the 6th, presumably).

    PS: Actually the three tasklets (2nd, 3rd, 5th context) are all
    scheduled on the same CPU, hence are serialized. Therefore

    > The 5th looks safe against 2nd, 3rd [...] but is unsafe against 1st.

    5th is serialized against 4th and 6th by lock protection of
    card->transaction_list accesses.
    Stefan Richter
    -=====-==--- -=== -==--

     \ /
      Last update: 2008-07-12 15:03    [W:0.022 / U:34.512 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site