From: Suravee Suthikulanit <suravee.suthikulpanit@amd.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Jacob Shin <jacob.shin@amd.com>,
xiantao.zhang@intel.com, xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH v3 0/3] x86/IOMMU: multi-vector MSI prerequisites
Date: Mon, 22 Apr 2013 18:58:18 -0500 [thread overview]
Message-ID: <5175CE9A.3020900@amd.com> (raw)
In-Reply-To: <51710E9502000078000CED3E@nat28.tlf.novell.com>
On 4/19/2013 2:29 AM, Jan Beulich wrote:
>>>> On 18.04.13 at 19:25, Suravee Suthikulanit <suravee.suthikulpanit@amd.com>
> wrote:
>> On 4/16/2013 1:43 AM, Jan Beulich wrote:
>>>> On another topic, in arch/x86/msi.c, in the function
>>>>> "setup_msi_affinity()", the code does:
>>>>> 1. "read_msi_msg"
>>>>> 2. Modify the affitity mask
>>>>> 3. "write_msi_msg" back the register value.
>>>>>
>>>>> In read, if the interrupt remapping is enabled, from the patch, the
>>>>> function returns the MSI data with remapped information from IOMMU. Then
>>>>> in write, if the interrupt remapping is enabled, the function will
>>>>> update the IOMMU interrupt remapping entries with the already "remapped"
>>>>> vector. In this case, you would be updating the incorrect IOMMU IRTE.
>>> Where did you spot that?
>> This is in xen/arch/x86/msi.c
> That's not precise enough, the more that the same model has
> been working for VT-d for a long time.
>
> Are you perhaps getting confused by the slightly odd way
> things get stored/passed: write_msi_msg() specifically asserts
> that "msg" doesn't point to the stored version (entry->msg), i.e.
> the modification done to *msg by iommu_update_ire_from_msi()
> won't be used as input on a subsequent invocation.
>
>>> To prevent this from happening is exactly
>>> why amd_iommu_read_msi_from_ire() isn't empty anymore (this is
>>> where the original MSI message information gets reconstructed - or
>>> at least is intended to be). The only modification done by
>>> update_intremap_entry_from_msi_msg() are the low 11 data bits,
>>> and that's what gets overwritten upon read.
>> Sorry, I am not quite following this. Why do we need to reconstruct MSI
>> message? Why was not it required in the past?
> Previously the write path didn't modify the message, and hence
> the read path didn't need to reconstruct the original. With the
> switch to allocating IRTEs (rather than calculating the used one
> from vector and delivery mode), the model now matches VT-d's,
> and hence the behavior also needs to be adjusted accordingly.
Thanks for clarification. I misunderstood the code that manage the
interrupt remapping entry. Sorry for confusion.
>
> Anyway - did you make any progress towards identifying the
> problems with the USB controller? I didn't see any more complete
> output, so I have nothing to work with to find where the
> problem is. In any case I'm going to post the full multi-vector
> MSI series later today, as it's working fine for me on VT-d.
>
> Jan
Some how I could no longer reproduce this case. I'll keep an eye on
this for the future.
Suravee
>
>
prev parent reply other threads:[~2013-04-22 23:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-12 10:18 [PATCH v3 0/3] x86/IOMMU: multi-vector MSI prerequisites Jan Beulich
2013-04-12 10:22 ` [PATCH v3 1/3] IOMMU: allow MSI message to IRTE propagation to fail Jan Beulich
2013-04-15 6:38 ` Zhang, Xiantao
2013-04-12 10:23 ` [PATCH v3 2/3] AMD IOMMU: allocate IRTE entries instead of using a static mapping Jan Beulich
2013-04-12 10:23 ` [PATCH v3 3/3] AMD IOMMU: untie remap and vector maps Jan Beulich
2013-04-13 1:16 ` [PATCH v3 0/3] x86/IOMMU: multi-vector MSI prerequisites Suravee Suthikulpanit
2013-04-15 14:43 ` Jan Beulich
2013-04-15 16:14 ` Suravee Suthikulanit
2013-04-16 6:43 ` Jan Beulich
2013-04-18 17:25 ` Suravee Suthikulanit
2013-04-19 7:29 ` Jan Beulich
2013-04-22 23:58 ` Suravee Suthikulanit [this message]
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=5175CE9A.3020900@amd.com \
--to=suravee.suthikulpanit@amd.com \
--cc=JBeulich@suse.com \
--cc=jacob.shin@amd.com \
--cc=xen-devel@lists.xen.org \
--cc=xiantao.zhang@intel.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.