On 11/12/15 18:38, Richard Weinberger wrote:
> Am 11.12.2015 um 12:24 schrieb Anton Ivanov:
>> On 11/12/15 08:16, Richard Weinberger wrote:
>>> Am 11.12.2015 um 07:58 schrieb Anton Ivanov:
>>>>>> 2. I cannot catch what is wrong with the current code in signal.c. When
>>>>>> I read it, it should not produce re-entrancy. But it does.
>>>>> Sorry for the delay. Until now I did not find the time to dig into that.
>>>>> Did you find the offending code in signal.c?
>>>> Yes.
>>>>
>>>> Unblock signals is logically incorrect - it will re-trigger an
>>>> interrupts even if there is an interrupt in flight whose processing has
>>>> not been finished.
>>>>
>>>> I tried several approaches both with the original poll() controller and
>>>> with my epoll() based version, some show promise.
>>>>
>>>> I had to put it aside until next Friday as I have some stuff due at work
>>>> so I cannot spare time to work on it until then. Once I get that out of
>>>> the way I should be able to spare it a day or two which should be enough
>>>> to finish it.
>>>>
>>>> Ditto for the UBD improvements.
>>> One thing we have to consider is that's legit to have SIGIO nested.
>> Correct. That is considered :)
>>
>> Both when looking at poll() and epoll()
>>
>> However, it is not legit to have sigio on a specific fd nested. That is 
>> mostly safe for the poll() version, but will need to be accounted for in any 
>> surgery on the irq controller.
> So, the current code is fine unless you switch to epoll()?

Correct. It looks OK, though I have not looked at it in depth to make 
sure there is no race somewhere.

> Is it because you use epoll() in edge-triggered mode?

For now it is level which means it should be identical to poll().

I want to be able (long term) to use either - have the user set what 
they want for a particular IRQ. There are a couple of use cases like 
packet mmap and can-write IRQs where edge allows for better code.

I have a working POC which sets per - fd flag to avoid reentrancy on a 
per-fd basis so it behaves identically to the poll one - similar to the 
"reactivate fd" semantics.

What I see with it however is some weird stalls on ubd and I am not 100% 
sure that they are epoll specific, it just tends to make them easily 
reproducible as it is faster.

I will pick it Monday-Tuesday the week before Xmas after I get some work 
stuff out of the way.

A.

>
> Thanks,
> //richard
>


------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to