From: Anton Ivanov <anton.ivanov@kot-begemot.co.uk>
To: user-mode-linux-devel@lists.sourceforge.net
Subject: Re: [uml-devel] [PATCH v2] EPOLL Interrupt Controller V2.0
Date: Wed, 18 Nov 2015 08:33:36 +0000 [thread overview]
Message-ID: <564C37E0.6080204@kot-begemot.co.uk> (raw)
In-Reply-To: <56498F4C.6080706@kot-begemot.co.uk>
Hi all,
I have looked through this and I still have not figured it out
completely. Moving from the old poll controller to the new epoll one
triggers deep recursive invocations of the interrupt handlers. I still
do not understand why it does it so I will park it for now and come back
to it next week.
I did, however, find a number of small issues. Namely, various patches
and fixes over the years have used calls to block/unblock signals and
block/unblock irqs in a few places where these can create a recursion
race (even with the old controller).
If I understand os-Linux/irq.c correctly, block/unblock in UML does not
block or unblock the signals. It blocks/unblocks the processing of them
and unblock can (and will) result in the immediate processing any
pending signals. So in most places, that should not be block/unblock
(and respectively local_irq_enable/local_irq_disable which invoke that).
It should be save+block and restore. Otherwise you recurse by invoking
the IRQ handler the moment you unblock_signals().
Additionally, if you want just to wait and be interrupted by a signal,
you do not need to enable/disable IRQs - signals are always received at
present. If I understand the situation correctly, irq on/off only
changes if they are processed or not.
I am going to roll my tree back to the timer patch now and go through
the ones I found so far one by one and submit them separately. Once that
is out of the way we can look again at the epoll controller patch. It
has potential, but it makes all gremlins come out of the woodwork so we
might as well get the gremlins out of the way first.
[snip]
A.
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
prev parent reply other threads:[~2015-11-18 8:33 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-09 14:33 [uml-devel] [PATCH v2] EPOLL Interrupt Controller V2.0 Anton Ivanov
2015-11-09 15:03 ` Anton Ivanov
2015-11-10 18:42 ` Anton Ivanov
2015-11-10 20:24 ` Richard Weinberger
2015-11-11 20:46 ` Thomas Meyer
2015-11-11 21:05 ` Richard Weinberger
2015-11-11 21:39 ` Anton Ivanov
2015-11-11 21:49 ` stian
2015-11-11 23:25 ` Anton Ivanov
2015-11-12 12:29 ` Anton Ivanov
2015-11-12 15:23 ` Anton Ivanov
2015-11-12 16:03 ` Anton Ivanov
2015-11-16 8:09 ` Anton Ivanov
2015-11-18 8:33 ` Anton Ivanov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=564C37E0.6080204@kot-begemot.co.uk \
--to=anton.ivanov@kot-begemot.co.uk \
--cc=user-mode-linux-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.