From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752701AbcE1Naz (ORCPT ); Sat, 28 May 2016 09:30:55 -0400 Received: from mr213139.mail.yeah.net ([223.252.213.139]:62708 "EHLO mr213139.mail.yeah.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751378AbcE1Nay (ORCPT ); Sat, 28 May 2016 09:30:54 -0400 Subject: Re: [Patch v4 9/9] iommu/amd: Check the validation of irq table and domain id To: Baoquan He , joro@8bytes.org References: <1464157735-8865-1-git-send-email-bhe@redhat.com> <1464157735-8865-10-git-send-email-bhe@redhat.com> Cc: linux-kernel@vger.kernel.org, vincent.wan@amd.com, iommu@lists.linux-foundation.org, dyoung@redhat.com From: Wan Zongshun Message-ID: <4da4c13e-1dc8-1096-f05a-e6d172c07df2@iommu.org> Date: Sat, 28 May 2016 21:30:41 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 MIME-Version: 1.0 In-Reply-To: <1464157735-8865-10-git-send-email-bhe@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-HM-Spam-Status: e1koWUFPN1dZCBgUCR5ZQUpPVUhNQktLSkhDQ05PQkNLTldZCQ4XHghZQV koKz0kNTQ1PiQyNSQzPjo*PilBS1VLQDYjJCI#KCQyNSQzPjo*PilBS1VLQCsvKSQiPigkMjUkMz 46Pz4pQUtVS0A4NC41LykiJDg1QUtVS0ApPjwyNDUkOigyOkFLVUtAKyk0LTI1OD4kKDM6NTwzOj JBS1VLQD8iNTo2MjgkMiskNTQkMjUkMz46Pz4pQUtVS0ApPjo3JDIrJDI1JCk5NyQyNSQzPjo*Pi lBSklVS0A2LjcvMiQpOCsvJD8yPT0#KT41LyQyNSQzPjo*PilBSVVLQDIrJEhLJDYyNS4vPiQ4NS 8kSyROS0FLVUtAMiskSiQ2MjUuLz4kODUvJEskSktBS1VLQDIrJC80PzoiJDg1LyRLJEpLS0FLVU tAMiskTiQ2MjUuLz4kODUvJEskSktBS1VLQDIrJEokMzQuKSQ4NS8kSyRKS0tBS1VLQCguOTE#OC 8kLzQ*OiIkODUvJEskSktLQUtVS0AoLjkxPjgvJE4kNjI1Li8#JDg1LyRLJEpLQUtVS0AoLjkxPj gvJEokMzQuKSQ4NS8kSyRKS0tBS1VLQCg5MSQ3PjUkT0skI0FLVUtLSktALz4jLyQ3PjUkSklDSy QjQUtVS0tKS0A4NS8kMy82NyQ3PjUkSjAkTjBBS1VLS0pLQC8#Iy8uKTckPiMyKC9BS1VLS0pLQC 8#Iy8uKTckKCs6OD5BS1VLS0pLQCk#OD4yLT4pJDg1LyROJCNBS1VLS0pLQCM2OjI3PikkNS43N0 FLVUtLSktAPz43Mi0#KSQ3PjUkS0FLVUtLSktANzo1PCQ#NUFLVUtLSktAPzovPiQyNT00JDI1JD g0NS8#NS8kPTQ0Lz4pQUhVS0A9NSQ2OiIkT0pCJDM3MSRKJEtDS0hLT0FLVUhIQD0rJCk#JD0sJD M3MSRLQ0tIS01BVkxVTkA9KyQhMy44PiQ9JDM3MSRLTEpJSk5BVktVT05APTUkKC45JD41LDQpPy gkMzcxJEpLS0lLSkFLVUlDQCguOSQ#QUpVTk5APTUkOTIvTCQzNzEkS0xKSUtJQUhVSk5APTUkNj oiJE9KQiQzNzEkSSRLQ0tIS09BS1VLWQY+ X-HM-Sender-Digest: e1kSHx4VD1lBWUc6MlE6FDo5KTozM0M3Dg4PPzUIIRJPC0pVSlVKT01P T09JSU9PSUpCVTMWGhIXVQ0MOxIUFhYOVRQJHEVZV1kMHhlZQR0aFwgeV1kIAVlBT0tJSjdXWRIL WUFZSUpDVUNJVUJOVUlPTVkG X-HM-Tid: 0a54f78f4c2f7d8b11de81c129a Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org -------- Original Message -------- > From: Baoquan HE > > If not valid just skip reserving the old domain id. > > Signed-off-by: Baoquan He > --- > drivers/iommu/amd_iommu.c | 4 ---- > drivers/iommu/amd_iommu_init.c | 5 +++-- > drivers/iommu/amd_iommu_types.h | 5 +++++ > 3 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c > index f3bd7fd..40c4a05 100644 > --- a/drivers/iommu/amd_iommu.c > +++ b/drivers/iommu/amd_iommu.c > @@ -3697,10 +3697,6 @@ struct amd_ir_data { > > static struct irq_chip amd_ir_chip; > > -#define DTE_IRQ_PHYS_ADDR_MASK (((1ULL << 45)-1) << 6) > -#define DTE_IRQ_REMAP_INTCTL (2ULL << 60) > -#define DTE_IRQ_TABLE_LEN (8ULL << 1) > -#define DTE_IRQ_REMAP_ENABLE 1ULL At least, you should give reason comments to why you want move it. Any drivers files you want to use them as well? > > static void set_dte_irq_entry(u16 devid, struct irq_remap_table *table) > { > diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c > index 47e5972..263704a 100644 > --- a/drivers/iommu/amd_iommu_init.c > +++ b/drivers/iommu/amd_iommu_init.c > @@ -670,7 +670,7 @@ static int copy_dev_tables(void) > u32 lo, hi, devid; > phys_addr_t old_devtb_phys; > struct dev_table_entry *old_devtb; > - u16 dom_id, dte_v; > + u16 dom_id, dte_v, irq_v; > struct amd_iommu *iommu; > static int copied; > > @@ -692,7 +692,8 @@ static int copy_dev_tables(void) > amd_iommu_dev_table[devid] = old_devtb[devid]; > dom_id = amd_iommu_dev_table[devid].data[1] & DEV_DOMID_MASK; > dte_v = amd_iommu_dev_table[devid].data[0] & DTE_FLAG_V; > - if (!dte_v) > + irq_v = amd_iommu_dev_table[devid].data[2] & DTE_IRQ_REMAP_ENABLE; > + if (!dte_v || !irq_v || !dom_id) > continue; > __set_bit(dom_id, amd_iommu_pd_alloc_bitmap); > } > diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h > index 34acd73..08340f5 100644 > --- a/drivers/iommu/amd_iommu_types.h > +++ b/drivers/iommu/amd_iommu_types.h > @@ -224,6 +224,11 @@ > > #define PPR_REQ_FAULT 0x01 > > +#define DTE_IRQ_PHYS_ADDR_MASK (((1ULL << 45)-1) << 6) > +#define DTE_IRQ_REMAP_INTCTL (2ULL << 60) > +#define DTE_IRQ_TABLE_LEN (8ULL << 1) > +#define DTE_IRQ_REMAP_ENABLE 1ULL > + > #define PAGE_MODE_NONE 0x00 > #define PAGE_MODE_1_LEVEL 0x01 > #define PAGE_MODE_2_LEVEL 0x02 >