Changes between Initial Version and Version 1 of Ticket #700, comment 2


Ignore:
Timestamp:
2017-10-31T23:00:38Z (7 years ago)
Author:
Jakub Jermář

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #700, comment 2

    initial v1  
    77  1. `locsrv` for some reason does not reply to the LOC_SERVICE_REGISTER request; since there is no IPC on which LOC_SERVICE_REGISTER depends directly, this could mean that the request in `locsrv` is blocking on a synchronization primitive
    88  1. `locsrv` itself has 4 (!) active calls (method=1024) to ethip; had it been a single request, I would say this is LOC_EVENT_CAT_CHANGE(1024), but in this case I am not sure.
    9   1. `ethip` is itself not answering any of the four 1024 calls from `locsrv` and sends IPC method 1029 to `e1k`
     9  1. `ethip` is itself not answering any of the four 1024 calls from `locsrv` and sends NIC_SET_STATE(NIC_STATE_ACTIVE) to `e1k`; it blocks in ethip_nic_check_new()->ethip_nic_open()->nic_set_state() and holds ethip_discovery_lock to prevent other invocations of ethip_nic_check_new()
    1010  1. `e1k` sends HW_RES_ENABLE_INTERRUPT for IRQ 11 to `pciintel`
    1111  1. `pciintel` sends IPC_CONNECT_ME_TO(2) to `ns` which in turn forwards it to `devman`
     
    1515
    1616If in step 6 the four messages sent by `locsrv` to `ethip` are indeed LOC_SERVICE_REGISTER, then they are sent from loc_category_change_event(), which takes the callback_sess_mutex. Currently, there can be IPC_MAX_ASYNC_CALLS=4 active calls per one phone. This means that if there are more than 4 callback sessions in the callback_sess_list all going to a single destination, the whole fibril will be blocked inside the callback_sess_mutex-protected critical section. This would correspond to the blocked `nconfsrv` which is waiting for LOC_CALLBACK_CREATE reply from `locsrv`. This message could not be answered at this point because callback_sess_mutex is held. I don't, however, see how `ethip` could have over 4 callbacks registered at `locsrv`.
    17 
    18 I also don't know yet, what the communication between `ethip` and `e1k` represents. Any tips?