From: Ingo Molnar <mingo@elte.hu>
To: "Eric W. Biederman" <ebiederm@xmission.com>,
Yinghai Lu <yinghai@kernel.org>,
Joerg Roedel <joerg.roedel@amd.com>
Cc: Weidong Han <weidong.han@intel.com>,
dwmw2@infradead.org, suresh.b.siddha@intel.com,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
kvm@vger.kernel.org
Subject: Re: [PATCH v2 2/2] Intel-IOMMU, intr-remap: source-id checking
Date: Wed, 20 May 2009 10:21:14 +0200 [thread overview]
Message-ID: <20090520082114.GC6736@elte.hu> (raw)
In-Reply-To: <m1k54cj3iz.fsf@fess.ebiederm.org>
* Eric W. Biederman <ebiederm@xmission.com> wrote:
> Ingo Molnar <mingo@elte.hu> writes:
>
> > * Weidong Han <weidong.han@intel.com> wrote:
> >
> >> To support domain-isolation usages, the platform hardware must be
> >> capable of uniquely identifying the requestor (source-id) for each
> >> interrupt message. Without source-id checking for interrupt
> >> remapping , a rouge guest/VM with assigned devices can launch
> >> interrupt attacks to bring down anothe guest/VM or the VMM itself.
> >>
> >> This patch adds source-id checking for interrupt remapping, and
> >> then really isolates interrupts for guests/VMs with assigned
> >> devices.
> >>
> >> Because PCI subsystem is not initialized yet when set up IOAPIC
> >> entries, use read_pci_config_byte to access PCI config space
> >> directly.
> >>
> >> Signed-off-by: Weidong Han <weidong.han@intel.com>
> >> ---
> >> arch/x86/kernel/apic/io_apic.c | 6 +++
> >> drivers/pci/intr_remapping.c | 90 ++++++++++++++++++++++++++++++++++++++-
> >> drivers/pci/intr_remapping.h | 2 +
> >> include/linux/dmar.h | 11 +++++
> >> 4 files changed, 106 insertions(+), 3 deletions(-)
> >
> > Code structure looks nice now. (and i susect you have tested this on
> > real and relevant hardware?) I've Cc:-ed Eric too ... does this
> > direction look good to you too Eric?
>
> Being a major nitpick, I have to point out that the code is not
> structured to support other iommus, and I think AMD has one that
> can do this as well.
(Joerg Cc:-ed)
> The early pci reading of the bus is just wrong. What happens if
> the pci layer decided to renumber things? It looks like we have a
> real dependency on pci there and are avoiding sorting it out with
> this.
Yes ... but is there much we can do about this bootstrap dependency?
We want to enable the IO-APIC very early in its final form. There's
quite a bit of IRQ functionality that doesnt go via the PCI layer,
and which is being relied on by early bootup. The timer irq must
work, etc.
> Hmm. But that is what we use in setup_ioapic_sid.... I expect the
> right solution is to delay enabling ioapic entries until driver
> enable them. That could also reduce screaming irqs during bootup
> in the kdump case.
Yes, and note that we are moving in that direction in tip:irq/numa
(Yinghai Cc:-ed) - we are delaying IRQ setup to the very last
moment. We recently got rid of 32-bit IRQ compression in that branch
as well and the IRQ vectoring code is now unified between 64-bit and
32-bit so it's nify and you might want to check it and look for
holes ...
( The motivation there was different: delay allocation of the
irq_desc so that we can make it NUMA-local - but it has the same
general effect. )
> set_msi_sid looks wrong. The comment are unhelpful. irte->svt
> should get an enum value or a deine (removing the repeated
> explanations of the magic value) and then we could have room to
> explain why we are doing what we are doing.
(yes, it probably wants a helper method - i pointed these smaller
details out in my review.)
> Not finding an upstream pcie_bridge and then concluding we are a
> pcie device seems bogus.
>
> Why if we do have an upstream pcie bridge do we only want to do a
> bus range verification instead of checking just for the bus
> :devfn?
>
> The legacy PCI case seems even stranger.
Good points. Would be nice to get an ack from the PCI folks to make
sure these bits are sane.
> ....
>
> The table of apic information by apic_id also seems wrong. Don't
> we have chip_data or something that should point it that we can
> get from the irq?
->chip_data is already used for io-apic configuration bits - if it's
reused then the right way to do it is to extend struct irq_cfg in
arch/x86/kernel/apic/io_apic.c.
Ingo
next prev parent reply other threads:[~2009-05-20 8:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-19 18:31 [PATCH v2 0/2] Intel-IOMMU: source-id checking for interrupt remapping Weidong Han
2009-05-19 18:31 ` [PATCH v2 1/2] Intel-IOMMU, intr-remap: set the whole 128bits of irte when modify/free it Weidong Han
2009-05-19 12:14 ` Ingo Molnar
2009-05-19 14:15 ` Han, Weidong
2009-05-19 18:31 ` [PATCH v2 2/2] Intel-IOMMU, intr-remap: source-id checking Weidong Han
2009-05-19 11:50 ` Ingo Molnar
2009-05-19 14:12 ` Han, Weidong
2009-05-19 19:28 ` Eric W. Biederman
2009-05-20 8:21 ` Ingo Molnar [this message]
2009-05-20 8:38 ` Han, Weidong
2009-05-20 12:13 ` Eric W. Biederman
2009-05-20 9:43 ` Joerg Roedel
2009-05-20 12:02 ` Eric W. Biederman
2009-05-20 12:24 ` Eric W. Biederman
2009-05-21 9:00 ` Han, Weidong
2009-05-21 10:04 ` Eric W. Biederman
2009-05-21 13:37 ` Han, Weidong
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=20090520082114.GC6736@elte.hu \
--to=mingo@elte.hu \
--cc=dwmw2@infradead.org \
--cc=ebiederm@xmission.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joerg.roedel@amd.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=suresh.b.siddha@intel.com \
--cc=weidong.han@intel.com \
--cc=yinghai@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 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.