From: Jan Kiszka <jan.kiszka@siemens.com>
To: "Maciej W. Rozycki" <macro@linux-mips.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Matthew Ogilvie <mmogilvi_qemu@miniinfo.net>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v4 5/5] i8259: fix dynamically masking slave IRQs with IMR register
Date: Tue, 04 Sep 2012 20:39:02 +0200 [thread overview]
Message-ID: <50464AC6.1010806@siemens.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1209041902510.8926@eddie.linux-mips.org>
On 2012-09-04 20:27, Maciej W. Rozycki wrote:
> On Tue, 4 Sep 2012, Jan Kiszka wrote:
>
>>>> What I'm trying to understand and translate from the description is
>>>> rather "note that for inputs a high-to-low transition cancels the
>>>> interrupt as in the level-triggered mode." This is surely not what we do
>>>> right now. OTOH, I'm afraid that switching to this mode in the PIC can
>>>> cause problems elsewhere, with devices that actually inject short
>>>> low-high-low signals. Still wrapping my head around it...
>>>
>>> That won't work reliably with true 8259A hardware -- for an
>>
>> Ok, then we have to scan our code base for such device models that won't
>> survive with real 8259A hardware. That can only be devices attached to
>> edge-only inputs of the PIC, namely the PIT, the keyboard controller,
>> the RTC and FPU emulation. They basically need to generate high-low-high
>> transitions on new events, instead of low-high-low (via qemu_irq_pulse
>> e.g.). I'm I on the right track?
>
> They shouldn't be the problem unless we've got an implementation problem:
>
> * The 8254 PIT is normally configured in mode 2 or 3 in the PC/AT
> architecture. In the former its output is high (active) all the time
> except from one (last) clock cycle. In the latter a wave that has a
> duty cycle close or equal to 0.5 (depending on whether the divider is
> odd or even) is produced, so no short pulses either. I don't remember
> the other four modes -- have a look at the datasheet if interested, but
> I reckon they're not really compatible with the wiring anyway, e.g. the
> gate is hardwired enabled.
>
> * The 8042 keyboard controller requires an interrupt acknowledge (by
> reading its data port, normally at the address 0x60 in the PC/AT port
> I/O space) to clear its output, so no concern here either (this is BTW
> how many years ago I actually learnt the hard way how the
> edge-triggered mode works in the 8259A -- reading the KBC's data port
> in the main program a tight loop with the keyboard interrupt enabled
> will lead to a spurious interrupt each time data is supplied). I
> believe it's otherwise edge-triggered though (I don't have an 8042
> datasheet handy, I would have to dig for a hardcopy that I left
> abroad).
>
> * The MC146818 RTC interrupt is level triggered and has to be
> acknowledged by reading Register C.
>
> * The i287/i387 FPU interrupt (in the PC/AT compatibility mode) is
> latched and requires the location at the address 0xf0 in the PC/AT port
> I/O space to be poked at to acknowledge. It can therefore be
> considered level-triggered (overall the design is busted and you have
> to be very careful not to freeze the system when handling the FPU error
> this way rather than via the FPU exception).
>
> Did I miss anything?
Nope, and it looks like I was too pessimistic. I've checked PIT, 8042,
and RTC, and they all set their output levels properly. So it should be
safe to start clearing an IRQ on falling edges at a PIC input.
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2012-09-04 18:39 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-03 2:56 [Qemu-devel] [PATCH v4 0/5] Running Microport UNIX (ca 1987) Matthew Ogilvie
2012-09-03 2:56 ` [Qemu-devel] [PATCH v4 1/5] fix some debug printf format strings Matthew Ogilvie
2012-09-03 2:56 ` [Qemu-devel] [PATCH v4 2/5] vl: fix -hdachs/-hda argument order parsing issues Matthew Ogilvie
2012-09-03 2:56 ` [Qemu-devel] [PATCH v4 3/5] qemu-options.hx: mention retrace= VGA option Matthew Ogilvie
2012-09-03 2:56 ` [Qemu-devel] [PATCH v4 4/5] vga: add some optional CGA compatibility hacks Matthew Ogilvie
2012-09-03 2:56 ` [Qemu-devel] [PATCH v4 5/5] i8259: fix dynamically masking slave IRQs with IMR register Matthew Ogilvie
2012-09-03 7:08 ` Paolo Bonzini
2012-09-03 8:40 ` Andreas Färber
2012-09-03 14:39 ` Avi Kivity
2012-09-03 15:42 ` Juan Quintela
2012-09-03 15:45 ` Jan Kiszka
2012-09-03 15:52 ` Avi Kivity
2012-09-03 15:54 ` Jan Kiszka
2012-09-03 15:57 ` Avi Kivity
2012-09-03 16:02 ` Jan Kiszka
2012-09-03 16:15 ` Avi Kivity
2012-09-03 16:23 ` Paolo Bonzini
2012-09-03 16:30 ` Avi Kivity
2012-09-03 16:33 ` Paolo Bonzini
2012-09-03 16:40 ` Jan Kiszka
2012-09-03 16:56 ` Paolo Bonzini
2012-09-04 8:16 ` Avi Kivity
2012-09-04 9:15 ` Paolo Bonzini
2012-09-04 9:20 ` Avi Kivity
2012-09-04 9:29 ` BALATON Zoltan
2012-09-04 9:37 ` Avi Kivity
2012-09-04 9:51 ` Jan Kiszka
2012-09-04 10:06 ` Paolo Bonzini
2012-09-04 10:44 ` Avi Kivity
2012-09-03 16:30 ` Jan Kiszka
2012-09-03 8:51 ` Jan Kiszka
2012-09-03 8:53 ` Jan Kiszka
2012-09-03 9:34 ` Paolo Bonzini
2012-09-03 10:34 ` Jan Kiszka
2012-09-03 11:11 ` Paolo Bonzini
2012-09-03 11:26 ` Jan Kiszka
2012-09-04 14:29 ` Maciej W. Rozycki
2012-09-04 14:42 ` Paolo Bonzini
2012-09-04 16:01 ` Jan Kiszka
2012-09-04 17:41 ` Maciej W. Rozycki
2012-09-04 17:55 ` Jan Kiszka
2012-09-04 18:27 ` Maciej W. Rozycki
2012-09-04 18:39 ` Jan Kiszka [this message]
2012-09-05 4:33 ` Matthew Ogilvie
2012-09-05 15:43 ` Jan Kiszka
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=50464AC6.1010806@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=macro@linux-mips.org \
--cc=mmogilvi_qemu@miniinfo.net \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).