From: "Radim Krčmář" <rkrcmar@redhat.com>
To: James Sullivan <sullivan.james.f@gmail.com>
Cc: pbonzini@redhat.com, mst@redhat.com, qemu-devel@nongnu.org,
jan.kiszka@siemens.com
Subject: Re: [Qemu-devel] [PATCH v2 RESEND 5/5] apic: Implement handling of RH=1 for MSI interrupt delivery
Date: Thu, 23 Apr 2015 16:14:07 +0200 [thread overview]
Message-ID: <20150423141407.GA3349@potion.brq.redhat.com> (raw)
In-Reply-To: <1428363937-19003-6-git-send-email-sullivan.james.f@gmail.com>
2015-04-06 17:45-0600, James Sullivan:
> Added argument to apic_get_delivery_bitmask() for msi_redir_hint,
> and changed calls to the function accordingly (using 0 as a default
> value for non-MSI interrupts).
>
> Modified the implementation of apic_get_delivery_bitmask() to account
> for the RH bit of an MSI IRQ. The RH bit indicates that the message
> should target only the lowest-priority processor among those specified
> by the logical destination of the IRQ.
>
> Signed-off-by: James Sullivan <sullivan.james.f@gmail.com>
> ---
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> @@ -519,23 +521,27 @@ static void apic_get_delivery_bitmask(uint32_t *deliver_bitmask,
> }
> } else {
> /* XXX: cluster mode */
> + int l = -1;
> memset(deliver_bitmask, 0x00, MAX_APIC_WORDS * sizeof(uint32_t));
> for(i = 0; i < MAX_APICS; i++) {
> apic_iter = local_apics[i];
> + if (!apic_iter) {
> + break;
> + }
(I wonder if QEMU would allow
'for(i = 0; i < MAX_APICS && (apic_iter = local_apics[i]); i++) {')
> + if (apic_match_dest(apic_iter, dest_mode, dest)) {
> + if (msi_redir_hint) {
You could check for APIC_DM_LOWPRI here as well and save the
apic_lowest_prio() loop in patch [1/4].
LOWPRI would be delivered like FIXED.
> + if (l < 0 ||
> + apic_compare_prio(apic_iter, local_apics[l]) < 0) {
> + l = i;
(Btw. lowest priority has a lot of cases that are forbidden ...
- in combination with physical broadcast
- in combination with clustered logical broadcast
- to invalid/disabled destinations
These most likely won't work correctly in real hardware.
Lowest priority is a bad concept for large systems, which is why Intel
stopped implementing it.)
next prev parent reply other threads:[~2015-04-23 14:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-06 23:45 [Qemu-devel] [PATCH v2 RESEND 0/5] apic: Implement MSI RH bit handling, lowpri IRQ James Sullivan
2015-04-06 23:45 ` [Qemu-devel] [PATCH v2 RESEND 1/5] apic: Implement LAPIC low priority arbitration functions James Sullivan
2015-04-23 13:49 ` Radim Krčmář
2015-04-23 18:34 ` James Sullivan
2015-04-24 12:27 ` Radim Krčmář
2015-04-06 23:45 ` [Qemu-devel] [PATCH v2 RESEND 2/5] apic: Implement low priority arbitration for IRQ delivery James Sullivan
2015-04-06 23:45 ` [Qemu-devel] [PATCH v2 RESEND 3/5] apic: Added helper function apic_match_dest, apic_match_[physical, logical]_dest James Sullivan
2015-04-06 23:45 ` [Qemu-devel] [PATCH v2 RESEND 4/5] apic: Set and pass in RH bit for MSI interrupts James Sullivan
2015-04-06 23:45 ` [Qemu-devel] [PATCH v2 RESEND 5/5] apic: Implement handling of RH=1 for MSI interrupt delivery James Sullivan
2015-04-23 14:14 ` Radim Krčmář [this message]
2015-04-23 19:08 ` James Sullivan
2015-04-24 12:41 ` Radim Krčmář
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=20150423141407.GA3349@potion.brq.redhat.com \
--to=rkrcmar@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sullivan.james.f@gmail.com \
/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.