All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Wang <wei.wang2@amd.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xen.org>
Subject: Re: [PATCH] AMD IOMMU: fix find_iommu_from_bdf_cap()
Date: Tue, 9 Oct 2012 10:14:06 +0200	[thread overview]
Message-ID: <5073DCCE.1000504@amd.com> (raw)
In-Reply-To: <506B1758020000780009F1CD@nat28.tlf.novell.com>

Acked. Thanks.
Wei

On 10/02/2012 04:33 PM, Jan Beulich wrote:
> The arguments passed for the "cap_offset" parameter get read from 16-
> bit fields, so the parameter should also have (at least) 16 bits.
>
> While fixing this I also noticed that this was yet another case where
> PCI segment information wasn't properly propagated, so a respective
> first parameter gets added to the function at once.
>
> Signed-off-by: Jan Beulich<jbeulich@suse.com>
>
> --- a/xen/drivers/passthrough/amd/iommu_acpi.c
> +++ b/xen/drivers/passthrough/amd/iommu_acpi.c
> @@ -86,12 +86,13 @@ static void __init add_ivrs_mapping_entr
>   }
>
>   static struct amd_iommu * __init find_iommu_from_bdf_cap(
> -    u16 bdf, u8 cap_offset)
> +    u16 seg, u16 bdf, u16 cap_offset)
>   {
>       struct amd_iommu *iommu;
>
>       for_each_amd_iommu ( iommu )
> -        if ( (iommu->bdf == bdf)&&  (iommu->cap_offset == cap_offset) )
> +        if ( (iommu->seg == seg)&&  (iommu->bdf == bdf)&&
> +             (iommu->cap_offset == cap_offset) )
>               return iommu;
>
>       return NULL;
> @@ -319,10 +320,11 @@ static int __init parse_ivmd_device_iomm
>       const struct acpi_ivrs_memory *ivmd_block,
>       unsigned long base, unsigned long limit, u8 iw, u8 ir)
>   {
> +    int seg = 0; /* XXX */
>       struct amd_iommu *iommu;
>
>       /* find target IOMMU */
> -    iommu = find_iommu_from_bdf_cap(ivmd_block->header.device_id,
> +    iommu = find_iommu_from_bdf_cap(seg, ivmd_block->header.device_id,
>                                       ivmd_block->aux_data);
>       if ( !iommu )
>       {
> @@ -669,7 +671,8 @@ static int __init parse_ivhd_block(const
>           return -ENODEV;
>       }
>
> -    iommu = find_iommu_from_bdf_cap(ivhd_block->header.device_id,
> +    iommu = find_iommu_from_bdf_cap(ivhd_block->pci_segment_group,
> +                                    ivhd_block->header.device_id,
>                                       ivhd_block->capability_offset);
>       if ( !iommu )
>       {
>
>
>

      reply	other threads:[~2012-10-09  8:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-02 14:33 [PATCH] AMD IOMMU: fix find_iommu_from_bdf_cap() Jan Beulich
2012-10-09  8:14 ` Wei Wang [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=5073DCCE.1000504@amd.com \
    --to=wei.wang2@amd.com \
    --cc=JBeulich@suse.com \
    --cc=xen-devel@lists.xen.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.