From: David Woodhouse <dwmw2@infradead.org>
To: x86@kernel.org
Cc: linux-hyperv@vger.kernel.org, kvm <kvm@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
iommu@lists.linux-foundation.org, maz@misterjones.org,
Paolo Bonzini <pbonzini@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: [PATCH 0/9] Remove irq_remapping_get_irq_domain()
Date: Tue, 13 Oct 2020 09:11:30 +0100 [thread overview]
Message-ID: <20201013081139.1558200-1-dwmw2@infradead.org> (raw)
In-Reply-To: <0de733f6384874d68afba2606119d0d9b1e8b34e.camel@infradead.org>
I didn't much like the I/OAPIC and HPET drivers having magical knowledge
that they had to substitute x86_vector_domain if their call to
irq_remapping_get_irq_domain() returned NULL.
When Thomas tried to make it handle error returns from …get_irq_domain()
distinctly from the NULL case too, it made me even sadder. So I killed
it with fire.
Now they just use irq_find_matching_fwspec() to find an appropriate
irqdomain. Each remapping irqdomain just needs to say 'yep, that's me'
for the HPETs or I/OAPICs which are within their scope, while the
x86_vector_domain accepts them all but only if interrupt remapping
is *disabled*. No more special knowledge in the caller.
If IR is enabled and there's a child device which escapes the scope of
all remapping units, it gets NULL for its parent irqdomain and will
fail to initialise, which is the correct thing to do in that "should
never happen" case. For HPET that'll mean that it just doesn't support
MSI, while I/OAPIC will refuse to initialise and trigger a BUG_ON
because Linux quite likes it when *all* the I/OAPICs it knows about get
initialised successfully.
This is on top of the previous 'ext_dest_id' series at
https://patchwork.kernel.org/project/kvm/list/?series=362037
https://git.infradead.org/users/dwmw2/linux.git/shortlog/refs/heads/ext_dest_id
David Woodhouse (9):
genirq/irqdomain: Implement get_name() method on irqchip fwnodes
x86/apic: Add select() method on vector irqdomain
iommu/amd: Implement select() method on remapping irqdomain
iommu/vt-d: Implement select() method on remapping irqdomain
iommu/hyper-v: Implement select() method on remapping irqdomain
x86/hpet: Use irq_find_matching_fwspec() to find remapping irqdomain
x86/ioapic: Use irq_find_matching_fwspec() to find remapping irqdomain
x86: Kill all traces of irq_remapping_get_irq_domain()
iommu/vt-d: Simplify intel_irq_remapping_select()
arch/x86/include/asm/hw_irq.h | 2 --
arch/x86/include/asm/irq_remapping.h | 9 ---------
arch/x86/include/asm/irqdomain.h | 3 +++
arch/x86/kernel/apic/io_apic.c | 24 ++++++++++++------------
arch/x86/kernel/apic/vector.c | 43 +++++++++++++++++++++++++++++++++++++++++++
arch/x86/kernel/hpet.c | 23 +++++++++++++----------
drivers/iommu/amd/iommu.c | 53 +++++++++++++++++++----------------------------------
drivers/iommu/hyperv-iommu.c | 18 +++++++++---------
drivers/iommu/intel/irq_remapping.c | 43 +++++++++++++++++--------------------------
drivers/iommu/irq_remapping.c | 14 --------------
drivers/iommu/irq_remapping.h | 3 ---
kernel/irq/irqdomain.c | 11 ++++++++++-
12 files changed, 126 insertions(+), 120 deletions(-)
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
next parent reply other threads:[~2020-10-13 8:12 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <0de733f6384874d68afba2606119d0d9b1e8b34e.camel@infradead.org>
2020-10-13 8:11 ` David Woodhouse [this message]
2020-10-13 8:11 ` [PATCH 1/9] genirq/irqdomain: Implement get_name() method on irqchip fwnodes David Woodhouse
2020-10-13 8:11 ` [PATCH 2/9] x86/apic: Add select() method on vector irqdomain David Woodhouse
2020-10-13 8:11 ` [PATCH 3/9] iommu/amd: Implement select() method on remapping irqdomain David Woodhouse
2020-10-13 8:11 ` [PATCH 4/9] iommu/vt-d: " David Woodhouse
2020-10-13 8:11 ` [PATCH 5/9] iommu/hyper-v: " David Woodhouse
2020-10-13 8:11 ` [PATCH 6/9] x86/hpet: Use irq_find_matching_fwspec() to find " David Woodhouse
2020-10-13 8:11 ` [PATCH 7/9] x86/ioapic: " David Woodhouse
2020-10-13 8:11 ` [PATCH 8/9] x86: Kill all traces of irq_remapping_get_irq_domain() David Woodhouse
2020-10-13 8:11 ` [PATCH 9/9] iommu/vt-d: Simplify intel_irq_remapping_select() David Woodhouse
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=20201013081139.1558200-1-dwmw2@infradead.org \
--to=dwmw2@infradead.org \
--cc=iommu@lists.linux-foundation.org \
--cc=kvm@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@misterjones.org \
--cc=pbonzini@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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).