[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <053191AD6E9023439BF3970DE870051856D1F164AF@APSHAXMS02.ap.sony.com>
Date: Fri, 5 Sep 2014 19:17:18 +0800
From: "Su, Friendy" <Friendy.Su@...y.com.cn>
To: "joro@...tes.org" <joro@...tes.org>
CC: "iommu@...ts.linux-foundation.org" <iommu@...ts.linux-foundation.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v1 1/1] iommu/amd: set iommu for early mapped ioapic/hpet
Hi, Joerg,
> -----Original Message-----
> From: joro@...tes.org [mailto:joro@...tes.org]
> Sent: Wednesday, September 03, 2014 11:06 PM
> To: Su, Friendy
> Cc: iommu@...ts.linux-foundation.org; linux-kernel@...r.kernel.org
> Subject: Re: [PATCH v1 1/1] iommu/amd: set iommu for early mapped
> ioapic/hpet
>
> On Mon, Sep 01, 2014 at 02:17:44PM +0800, Su, Friendy wrote:
> > diff --git a/drivers/iommu/amd_iommu_init.c
> b/drivers/iommu/amd_iommu_init.c
> > index 3783e0b..148ab61 100644
> > --- a/drivers/iommu/amd_iommu_init.c
> > +++ b/drivers/iommu/amd_iommu_init.c
> > @@ -747,7 +747,7 @@ static int __init add_special_device(u8 type, u8 id,
> u16 devid, bool cmd_line)
> > return 0;
> > }
> >
> > -static int __init add_early_maps(void)
> > +static int __init add_early_maps(struct amd_iommu *iommu)
> > {
> > int i, ret;
> >
> > @@ -758,6 +758,11 @@ static int __init add_early_maps(void)
> > early_ioapic_map[i].cmd_line);
> > if (ret)
> > return ret;
> > + /*
> > + * early mapped ioapci overrides ACPI IVRS,
> > + * they should be always controlled by iommu.
> > + */
> > + set_iommu_for_device(iommu, early_ioapic_map[i].devid);
> > }
> >
> > for (i = 0; i < early_hpet_map_size; ++i) {
> > @@ -767,6 +772,11 @@ static int __init add_early_maps(void)
> > early_hpet_map[i].cmd_line);
> > if (ret)
> > return ret;
> > + /*
> > + * early mapped hpet overrides ACPI IVRS,
> > + * they should be always controlled by iommu.
> > + */
> > + set_iommu_for_device(iommu, early_hpet_map[i].devid);
>
> This doesn't work on machines with multiple IOMMUs in it. Also the
> problem only exists if there is no IVHD entry in the IVRS table for the
> device containing IOAPIC and HPET.
>
> But if this IVHD entry is not present we can't reliably know which IOMMU
> is responsible for a given IOAPIC/HPET.
>
>
> Joerg
>
Thanks. You are correct, we should handle early mapped inside IOMMU whose IVHD reports the same ID. I will update.
Friendy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists