From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
To: Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
eric.auger-qxv4g6HH51o@public.gmane.org,
alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org,
joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org,
tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org,
marc.zyngier-5wv7dgnIgG8@public.gmane.org,
christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Cc: julien.grall-5wv7dgnIgG8@public.gmane.org,
patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
p.fedin-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
pranav.sawargaonkar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH v7 01/10] iommu: Add DOMAIN_ATTR_MSI_MAPPING attribute
Date: Fri, 22 Apr 2016 15:49:52 +0100 [thread overview]
Message-ID: <571A3A10.70601@arm.com> (raw)
In-Reply-To: <571A1273.9060808-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
On 22/04/16 13:00, Eric Auger wrote:
> Hi Robin,
> On 04/22/2016 01:31 PM, Robin Murphy wrote:
>> On 20/04/16 16:58, Eric Auger wrote:
>>> Hi Robin,
>>> On 04/20/2016 02:47 PM, Robin Murphy wrote:
>>>> Hi Eric,
>>>>
>>>> On 19/04/16 17:56, Eric Auger wrote:
>>>>> Introduce a new DOMAIN_ATTR_MSI_MAPPING domain attribute. If supported,
>>>>> this means the MSI addresses need to be mapped in the IOMMU.
>>>>>
>>>>> x86 IOMMUs typically don't expose the attribute since on x86, MSI write
>>>>> transaction addresses always are within the 1MB PA region [FEE0_0000h -
>>>>> FEF0_000h] window which directly targets the APIC configuration
>>>>> space and
>>>>> hence bypass the sMMU. On ARM and PowerPC however MSI transactions are
>>>>> conveyed through the IOMMU.
>>>>
>>>> What's stopping us from simply inferring this from the domain's IOMMU
>>>> not advertising interrupt remapping capabilities?
>>> My current understanding is it is not possible:
>>> on x86 CAP_INTR_REMAP is not systematically exposed (the feature can be
>>> disabled) and MSIs are never mapped in the IOMMU I think.
>>
>> Not sure I follow - if the feature is disabled such that the IOMMU
>> doesn't isolate MSIs, then it's no different a situation from the SMMU, no?
>
> sorry I understood you wanted to use IOMMU_CAP_INTR_REMAP as the sole
> criteria to detect whether MSI mapping was requested.
>>
>> My point was that this logic:
>>
>> if (IOMMU_CAP_INTR_REMAP)
>> we're good
>> else if (DOMAIN_ATTR_MSI_MAPPING)
>> if (acquire_msi_remapping_resources(domain))
>> we're good
>> else
>> oh no!
>> else
>> oh no!
>>
>> should be easily reducible to this:
>>
>> if (IOMMU_CAP_INTR_REMAP)
>> we're good
>> else if (acquire_msi_remapping_resources(domain))
>
> But Can't we imagine a mix of smmus on the same platform, some
> requesting MSI mapping and some which don't. As soon as an smmu requires
> MSI mapping, CONFIG_IOMMU_DMA_RESERVED is set and
> acquire_msi_remapping_resources(domain) will be implemented & succeed.
> Doesn't it lead to a wrong decision. Do I miss something, or do you
> consider this situation as far-fetched?
Sorry, what was implicit there was that the imaginary
acquire_msi_remapping_resources(*IOMMU* domian) call still involves
going all the way down to check for MSI_FLAG_IRQ_REMAPPING in the
relevant place.
Either way, now that I consider it further, a flag on the IOMMU domain
is not just unnecessary, I think it's actually fundamentally incorrect:
picture a system which for some crazy reason has both a GICv3 ITS plus
some other dumb v2m-like MMIO-SPI bridge - whether a device's MSI domain
targets the (safe) ITS or the (unsafe) bridge isn't a property of the
IOMMU domain it's trying to attach to; if you can't rely on the IOMMU
itself to isolate MSIs, then you can only know whether to allow or
reject any given group by inspecting every device in that group to make
sure they all have isolation provided by their MSI domains and that the
IOMMU domain has all the relevant doorbell mappings ready.
I guess the allow_unsafe_interrupts case might complicate matters beyond
the logic I sketched out, because then we might actually care about the
difference between "is isolation provided?" and "are sufficient
IOVA/descriptor resources available?", but the main point still stands.
Robin.
> Thanks
>
> Eric
>
>> we're good
>> else
>> oh no! // Don't care whether the domain ran out of
>> // resources or simply doesn't support it,
>> // either way we can't proceed.
>>
>> Robin.
>>
>>> Best Regards
>>>
>>> Eric
>>>>
>>>> Robin.
>>>>
>>>>> Signed-off-by: Bharat Bhushan <Bharat.Bhushan-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
>>>>> Signed-off-by: Eric Auger <eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>>>>>
>>>>> ---
>>>>>
>>>>> v4 -> v5:
>>>>> - introduce the user in the next patch
>>>>>
>>>>> RFC v1 -> v1:
>>>>> - the data field is not used
>>>>> - for this attribute domain_get_attr simply returns 0 if the
>>>>> MSI_MAPPING
>>>>> capability if needed or <0 if not.
>>>>> - removed struct iommu_domain_msi_maps
>>>>> ---
>>>>> include/linux/iommu.h | 1 +
>>>>> 1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/include/linux/iommu.h b/include/linux/iommu.h
>>>>> index 62a5eae..b3e8c5b 100644
>>>>> --- a/include/linux/iommu.h
>>>>> +++ b/include/linux/iommu.h
>>>>> @@ -113,6 +113,7 @@ enum iommu_attr {
>>>>> DOMAIN_ATTR_FSL_PAMU_ENABLE,
>>>>> DOMAIN_ATTR_FSL_PAMUV1,
>>>>> DOMAIN_ATTR_NESTING, /* two stages of translation */
>>>>> + DOMAIN_ATTR_MSI_MAPPING, /* Require MSIs mapping in iommu */
>>>>> DOMAIN_ATTR_MAX,
>>>>> };
>>>>>
>>>>>
>>>>
>>>
>>
>
next prev parent reply other threads:[~2016-04-22 14:49 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-19 16:56 [PATCH v7 00/10] KVM PCIe/MSI passthrough on ARM/ARM64: kernel part 1/3: iommu changes Eric Auger
2016-04-19 16:56 ` [PATCH v7 07/10] iommu/dma-reserved-iommu: delete bindings in iommu_free_reserved_iova_domain Eric Auger
[not found] ` <1461084994-2355-8-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 17:05 ` Robin Murphy
[not found] ` <5717B6D7.4010307-5wv7dgnIgG8@public.gmane.org>
2016-04-21 8:40 ` Eric Auger
[not found] ` <1461084994-2355-1-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-19 16:56 ` [PATCH v7 01/10] iommu: Add DOMAIN_ATTR_MSI_MAPPING attribute Eric Auger
[not found] ` <1461084994-2355-2-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 12:47 ` Robin Murphy
[not found] ` <57177A4E.4090804-5wv7dgnIgG8@public.gmane.org>
2016-04-20 15:58 ` Eric Auger
[not found] ` <5717A738.9090904-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 11:31 ` Robin Murphy
[not found] ` <571A0B78.6070509-5wv7dgnIgG8@public.gmane.org>
2016-04-22 12:00 ` Eric Auger
[not found] ` <571A1273.9060808-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 14:49 ` Robin Murphy [this message]
[not found] ` <571A3A10.70601-5wv7dgnIgG8@public.gmane.org>
2016-04-22 15:33 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 02/10] iommu/arm-smmu: advertise " Eric Auger
2016-04-19 16:56 ` [PATCH v7 03/10] iommu: introduce a reserved iova cookie Eric Auger
[not found] ` <1461084994-2355-4-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 12:55 ` Robin Murphy
[not found] ` <57177C31.9090004-5wv7dgnIgG8@public.gmane.org>
2016-04-20 16:14 ` Eric Auger
[not found] ` <5717AAC9.10505-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 12:36 ` Robin Murphy
[not found] ` <571A1AC5.9030905-5wv7dgnIgG8@public.gmane.org>
2016-04-22 13:02 ` Eric Auger
[not found] ` <571A20C9.9010508-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 14:53 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 04/10] iommu/dma-reserved-iommu: alloc/free_reserved_iova_domain Eric Auger
[not found] ` <1461084994-2355-5-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 13:03 ` Robin Murphy
[not found] ` <57177E2A.9090602-5wv7dgnIgG8@public.gmane.org>
2016-04-20 13:11 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 05/10] iommu/dma-reserved-iommu: reserved binding rb-tree and helpers Eric Auger
[not found] ` <1461084994-2355-6-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 13:12 ` Robin Murphy
[not found] ` <5717805A.3070602-5wv7dgnIgG8@public.gmane.org>
2016-04-20 16:18 ` Eric Auger
[not found] ` <5717ABF2.1030204-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 13:05 ` Robin Murphy
2016-04-19 16:56 ` [PATCH v7 06/10] iommu/dma-reserved-iommu: iommu_get/put_reserved_iova Eric Auger
[not found] ` <1461084994-2355-7-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 16:58 ` Robin Murphy
[not found] ` <5717B541.7090003-5wv7dgnIgG8@public.gmane.org>
2016-04-21 8:43 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 08/10] iommu/dma-reserved_iommu: iommu_msi_mapping_desc_to_domain Eric Auger
[not found] ` <1461084994-2355-9-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 17:19 ` Robin Murphy
[not found] ` <5717BA3E.8050901-5wv7dgnIgG8@public.gmane.org>
2016-04-21 8:40 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 09/10] iommu/dma-reserved-iommu: iommu_msi_mapping_translate_msg Eric Auger
2016-04-20 9:38 ` Marc Zyngier
[not found] ` <57174E16.1050004-5wv7dgnIgG8@public.gmane.org>
2016-04-20 12:50 ` Eric Auger
[not found] ` <1461084994-2355-10-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 17:28 ` Robin Murphy
[not found] ` <5717BC43.5070005-5wv7dgnIgG8@public.gmane.org>
2016-04-21 8:40 ` Eric Auger
2016-04-19 16:56 ` [PATCH v7 10/10] iommu/arm-smmu: call iommu_free_reserved_iova_domain on domain destruction Eric Auger
[not found] ` <1461084994-2355-11-git-send-email-eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-20 17:35 ` Robin Murphy
[not found] ` <5717BDF1.7030400-5wv7dgnIgG8@public.gmane.org>
2016-04-21 8:39 ` Eric Auger
2016-04-21 12:18 ` [PATCH v7 00/10] KVM PCIe/MSI passthrough on ARM/ARM64: kernel part 1/3: iommu changes Eric Auger
[not found] ` <5718C501.20906-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-21 19:32 ` Alex Williamson
[not found] ` <20160421133222.76e45596-1yVPhWWZRC1BDLzU/O5InQ@public.gmane.org>
2016-04-22 12:31 ` Eric Auger
[not found] ` <571A1996.5010009-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-04-22 19:07 ` Alex Williamson
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=571A3A10.70601@arm.com \
--to=robin.murphy-5wv7dgnigg8@public.gmane.org \
--cc=alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=eric.auger-qxv4g6HH51o@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org \
--cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
--cc=julien.grall-5wv7dgnIgG8@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=marc.zyngier-5wv7dgnIgG8@public.gmane.org \
--cc=p.fedin-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=patches-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=pranav.sawargaonkar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@public.gmane.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).