diff for duplicates of <541BD202.5080200@huawei.com> diff --git a/a/1.txt b/N1/1.txt index a2c9a24..e9f8c9f 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -2,9 +2,9 @@ On 2014/9/19 13:18, Jiang Liu wrote: > Implement required callback functions for intel_irq_remapping driver > to support DMAR unit hotplug. > -> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com> +> Signed-off-by: Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> -Reviewed-by: Yijing Wang <wangyijing@huawei.com> +Reviewed-by: Yijing Wang <wangyijing-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> > --- > drivers/iommu/intel_irq_remapping.c | 226 ++++++++++++++++++++++++++--------- @@ -26,8 +26,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > int i; > > for (i = 0; i < MAX_HPET_TBS; i++) -> - if (ir_hpet[i].id = hpet_id) -> + if (ir_hpet[i].id = hpet_id && ir_hpet[i].iommu) +> - if (ir_hpet[i].id == hpet_id) +> + if (ir_hpet[i].id == hpet_id && ir_hpet[i].iommu) > return ir_hpet[i].iommu; > return NULL; > } @@ -35,8 +35,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > int i; > > for (i = 0; i < MAX_IO_APICS; i++) -> - if (ir_ioapic[i].id = apic) -> + if (ir_ioapic[i].id = apic && ir_ioapic[i].iommu) +> - if (ir_ioapic[i].id == apic) +> + if (ir_ioapic[i].id == apic && ir_ioapic[i].iommu) > return ir_ioapic[i].iommu; > return NULL; > } @@ -44,8 +44,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > > down_read(&dmar_global_lock); > for (i = 0; i < MAX_IO_APICS; i++) { -> - if (ir_ioapic[i].id = apic) { -> + if (ir_ioapic[i].iommu && ir_ioapic[i].id = apic) { +> - if (ir_ioapic[i].id == apic) { +> + if (ir_ioapic[i].iommu && ir_ioapic[i].id == apic) { > sid = (ir_ioapic[i].bus << 8) | ir_ioapic[i].devfn; > break; > } @@ -53,8 +53,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > > down_read(&dmar_global_lock); > for (i = 0; i < MAX_HPET_TBS; i++) { -> - if (ir_hpet[i].id = id) { -> + if (ir_hpet[i].iommu && ir_hpet[i].id = id) { +> - if (ir_hpet[i].id == id) { +> + if (ir_hpet[i].iommu && ir_hpet[i].id == id) { > sid = (ir_hpet[i].bus << 8) | ir_hpet[i].devfn; > break; > } @@ -154,13 +154,13 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - ir_hpet_num++; > + > + for (count = 0; count < MAX_HPET_TBS; count++) { -> + if (ir_hpet[count].iommu = iommu && -> + ir_hpet[count].id = scope->enumeration_id) +> + if (ir_hpet[count].iommu == iommu && +> + ir_hpet[count].id == scope->enumeration_id) > + return 0; -> + else if (ir_hpet[count].iommu = NULL && free = -1) +> + else if (ir_hpet[count].iommu == NULL && free == -1) > + free = count; > + } -> + if (free = -1) { +> + if (free == -1) { > + pr_warn("Exceeded Max HPET blocks\n"); > + return -ENOSPC; > + } @@ -198,13 +198,13 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - ir_ioapic[ir_ioapic_num].id = scope->enumeration_id; > - ir_ioapic_num++; > + for (count = 0; count < MAX_IO_APICS; count++) { -> + if (ir_ioapic[count].iommu = iommu && -> + ir_ioapic[count].id = scope->enumeration_id) +> + if (ir_ioapic[count].iommu == iommu && +> + ir_ioapic[count].id == scope->enumeration_id) > + return 0; -> + else if (ir_ioapic[count].iommu = NULL && free = -1) +> + else if (ir_ioapic[count].iommu == NULL && free == -1) > + free = count; > + } -> + if (free = -1) { +> + if (free == -1) { > + pr_warn("Exceeded Max IO APICS\n"); > + return -ENOSPC; > + } @@ -233,10 +233,10 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > end = ((void *)drhd) + header->length; > > - while (start < end) { -> + while (start < end && ret = 0) { +> + while (start < end && ret == 0) { > scope = start; -> - if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) { -> - if (ir_ioapic_num = MAX_IO_APICS) { +> - if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) { +> - if (ir_ioapic_num == MAX_IO_APICS) { > - printk(KERN_WARNING "Exceeded Max IO APICS\n"); > - return -1; > - } @@ -244,16 +244,16 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - printk(KERN_INFO "IOAPIC id %d under DRHD base " > - " 0x%Lx IOMMU %d\n", scope->enumeration_id, > - drhd->address, iommu->seq_id); -> + if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) +> + if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) > + ret = ir_parse_one_ioapic_scope(scope, iommu, drhd); -> + else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) +> + else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) > + ret = ir_parse_one_hpet_scope(scope, iommu, drhd); > + start += scope->length; > + } > > - ir_parse_one_ioapic_scope(scope, iommu); -> - } else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) { -> - if (ir_hpet_num = MAX_HPET_TBS) { +> - } else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) { +> - if (ir_hpet_num == MAX_HPET_TBS) { > - printk(KERN_WARNING "Exceeded Max HPET blocks\n"); > - return -1; > - } @@ -272,12 +272,12 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - start += scope->length; > - } > + for (i = 0; i < MAX_HPET_TBS; i++) -> + if (ir_hpet[i].iommu = iommu) +> + if (ir_hpet[i].iommu == iommu) > + ir_hpet[i].iommu = NULL; > > - return 0; > + for (i = 0; i < MAX_IO_APICS; i++) -> + if (ir_ioapic[i].iommu = iommu) +> + if (ir_ioapic[i].iommu == iommu) > + ir_ioapic[i].iommu = NULL; > } > @@ -346,7 +346,7 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > + > + if (!irq_remapping_enabled) > + return 0; -> + if (iommu = NULL) +> + if (iommu == NULL) > + return -EINVAL; > + if (!ecap_ir_support(iommu->ecap)) > + return 0; diff --git a/a/content_digest b/N1/content_digest index b914222..84474d0 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,32 +1,32 @@ "ref\01411103935-31301-1-git-send-email-jiang.liu@linux.intel.com\0" "ref\01411103935-31301-6-git-send-email-jiang.liu@linux.intel.com\0" - "From\0Yijing Wang <wangyijing@huawei.com>\0" + "ref\01411103935-31301-6-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org\0" + "From\0Yijing Wang <wangyijing-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>\0" "Subject\0Re: [Patch Part3 V6 5/8] iommu/vt-d: Enhance intel_irq_remapping driver to support DMAR unit hotplug\0" - "Date\0Fri, 19 Sep 2014 06:49:38 +0000\0" - "To\0Jiang Liu <jiang.liu@linux.intel.com>" - Joerg Roedel <joro@8bytes.org> - David Woodhouse <dwmw2@infradead.org> - Yinghai Lu <yinghai@kernel.org> - Bjorn Helgaas <bhelgaas@google.com> - Dan Williams <dan.j.williams@intel.com> - Vinod Koul <vinod.koul@intel.com> - " Rafael J . Wysocki <rafael.j.wysocki@intel.com>\0" - "Cc\0Ashok Raj <ashok.raj@intel.com>" - Tony Luck <tony.luck@intel.com> - iommu@lists.linux-foundation.org - linux-pci@vger.kernel.org - linux-hotplug@vger.kernel.org - linux-kernel@vger.kernel.org - " dmaengine@vger.kernel.org\0" + "Date\0Fri, 19 Sep 2014 14:49:38 +0800\0" + "To\0Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>" + Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> + David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> + Yinghai Lu <yinghai-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> + Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> + Dan Williams <dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> + Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> + " Rafael J . Wysocki <rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>\0" + "Cc\0Tony Luck <tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>" + linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + linux-hotplug-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org + iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org + " dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\0" "\00:1\0" "b\0" "On 2014/9/19 13:18, Jiang Liu wrote:\n" "> Implement required callback functions for intel_irq_remapping driver\n" "> to support DMAR unit hotplug.\n" "> \n" - "> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>\n" + "> Signed-off-by: Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>\n" "\n" - "Reviewed-by: Yijing Wang <wangyijing@huawei.com>\n" + "Reviewed-by: Yijing Wang <wangyijing-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>\n" "\n" "> ---\n" "> drivers/iommu/intel_irq_remapping.c | 226 ++++++++++++++++++++++++++---------\n" @@ -48,8 +48,8 @@ "> \tint i;\n" "> \n" "> \tfor (i = 0; i < MAX_HPET_TBS; i++)\n" - "> -\t\tif (ir_hpet[i].id = hpet_id)\n" - "> +\t\tif (ir_hpet[i].id = hpet_id && ir_hpet[i].iommu)\n" + "> -\t\tif (ir_hpet[i].id == hpet_id)\n" + "> +\t\tif (ir_hpet[i].id == hpet_id && ir_hpet[i].iommu)\n" "> \t\t\treturn ir_hpet[i].iommu;\n" "> \treturn NULL;\n" "> }\n" @@ -57,8 +57,8 @@ "> \tint i;\n" "> \n" "> \tfor (i = 0; i < MAX_IO_APICS; i++)\n" - "> -\t\tif (ir_ioapic[i].id = apic)\n" - "> +\t\tif (ir_ioapic[i].id = apic && ir_ioapic[i].iommu)\n" + "> -\t\tif (ir_ioapic[i].id == apic)\n" + "> +\t\tif (ir_ioapic[i].id == apic && ir_ioapic[i].iommu)\n" "> \t\t\treturn ir_ioapic[i].iommu;\n" "> \treturn NULL;\n" "> }\n" @@ -66,8 +66,8 @@ "> \n" "> \tdown_read(&dmar_global_lock);\n" "> \tfor (i = 0; i < MAX_IO_APICS; i++) {\n" - "> -\t\tif (ir_ioapic[i].id = apic) {\n" - "> +\t\tif (ir_ioapic[i].iommu && ir_ioapic[i].id = apic) {\n" + "> -\t\tif (ir_ioapic[i].id == apic) {\n" + "> +\t\tif (ir_ioapic[i].iommu && ir_ioapic[i].id == apic) {\n" "> \t\t\tsid = (ir_ioapic[i].bus << 8) | ir_ioapic[i].devfn;\n" "> \t\t\tbreak;\n" "> \t\t}\n" @@ -75,8 +75,8 @@ "> \n" "> \tdown_read(&dmar_global_lock);\n" "> \tfor (i = 0; i < MAX_HPET_TBS; i++) {\n" - "> -\t\tif (ir_hpet[i].id = id) {\n" - "> +\t\tif (ir_hpet[i].iommu && ir_hpet[i].id = id) {\n" + "> -\t\tif (ir_hpet[i].id == id) {\n" + "> +\t\tif (ir_hpet[i].iommu && ir_hpet[i].id == id) {\n" "> \t\t\tsid = (ir_hpet[i].bus << 8) | ir_hpet[i].devfn;\n" "> \t\t\tbreak;\n" "> \t\t}\n" @@ -176,13 +176,13 @@ "> -\tir_hpet_num++;\n" "> +\n" "> +\tfor (count = 0; count < MAX_HPET_TBS; count++) {\n" - "> +\t\tif (ir_hpet[count].iommu = iommu &&\n" - "> +\t\t ir_hpet[count].id = scope->enumeration_id)\n" + "> +\t\tif (ir_hpet[count].iommu == iommu &&\n" + "> +\t\t ir_hpet[count].id == scope->enumeration_id)\n" "> +\t\t\treturn 0;\n" - "> +\t\telse if (ir_hpet[count].iommu = NULL && free = -1)\n" + "> +\t\telse if (ir_hpet[count].iommu == NULL && free == -1)\n" "> +\t\t\tfree = count;\n" "> +\t}\n" - "> +\tif (free = -1) {\n" + "> +\tif (free == -1) {\n" "> +\t\tpr_warn(\"Exceeded Max HPET blocks\\n\");\n" "> +\t\treturn -ENOSPC;\n" "> +\t}\n" @@ -220,13 +220,13 @@ "> -\tir_ioapic[ir_ioapic_num].id = scope->enumeration_id;\n" "> -\tir_ioapic_num++;\n" "> +\tfor (count = 0; count < MAX_IO_APICS; count++) {\n" - "> +\t\tif (ir_ioapic[count].iommu = iommu &&\n" - "> +\t\t ir_ioapic[count].id = scope->enumeration_id)\n" + "> +\t\tif (ir_ioapic[count].iommu == iommu &&\n" + "> +\t\t ir_ioapic[count].id == scope->enumeration_id)\n" "> +\t\t\treturn 0;\n" - "> +\t\telse if (ir_ioapic[count].iommu = NULL && free = -1)\n" + "> +\t\telse if (ir_ioapic[count].iommu == NULL && free == -1)\n" "> +\t\t\tfree = count;\n" "> +\t}\n" - "> +\tif (free = -1) {\n" + "> +\tif (free == -1) {\n" "> +\t\tpr_warn(\"Exceeded Max IO APICS\\n\");\n" "> +\t\treturn -ENOSPC;\n" "> +\t}\n" @@ -255,10 +255,10 @@ "> \tend = ((void *)drhd) + header->length;\n" "> \n" "> -\twhile (start < end) {\n" - "> +\twhile (start < end && ret = 0) {\n" + "> +\twhile (start < end && ret == 0) {\n" "> \t\tscope = start;\n" - "> -\t\tif (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) {\n" - "> -\t\t\tif (ir_ioapic_num = MAX_IO_APICS) {\n" + "> -\t\tif (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) {\n" + "> -\t\t\tif (ir_ioapic_num == MAX_IO_APICS) {\n" "> -\t\t\t\tprintk(KERN_WARNING \"Exceeded Max IO APICS\\n\");\n" "> -\t\t\t\treturn -1;\n" "> -\t\t\t}\n" @@ -266,16 +266,16 @@ "> -\t\t\tprintk(KERN_INFO \"IOAPIC id %d under DRHD base \"\n" "> -\t\t\t \" 0x%Lx IOMMU %d\\n\", scope->enumeration_id,\n" "> -\t\t\t drhd->address, iommu->seq_id);\n" - "> +\t\tif (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC)\n" + "> +\t\tif (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC)\n" "> +\t\t\tret = ir_parse_one_ioapic_scope(scope, iommu, drhd);\n" - "> +\t\telse if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET)\n" + "> +\t\telse if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET)\n" "> +\t\t\tret = ir_parse_one_hpet_scope(scope, iommu, drhd);\n" "> +\t\tstart += scope->length;\n" "> +\t}\n" "> \n" "> -\t\t\tir_parse_one_ioapic_scope(scope, iommu);\n" - "> -\t\t} else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) {\n" - "> -\t\t\tif (ir_hpet_num = MAX_HPET_TBS) {\n" + "> -\t\t} else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) {\n" + "> -\t\t\tif (ir_hpet_num == MAX_HPET_TBS) {\n" "> -\t\t\t\tprintk(KERN_WARNING \"Exceeded Max HPET blocks\\n\");\n" "> -\t\t\t\treturn -1;\n" "> -\t\t\t}\n" @@ -294,12 +294,12 @@ "> -\t\tstart += scope->length;\n" "> -\t}\n" "> +\tfor (i = 0; i < MAX_HPET_TBS; i++)\n" - "> +\t\tif (ir_hpet[i].iommu = iommu)\n" + "> +\t\tif (ir_hpet[i].iommu == iommu)\n" "> +\t\t\tir_hpet[i].iommu = NULL;\n" "> \n" "> -\treturn 0;\n" "> +\tfor (i = 0; i < MAX_IO_APICS; i++)\n" - "> +\t\tif (ir_ioapic[i].iommu = iommu)\n" + "> +\t\tif (ir_ioapic[i].iommu == iommu)\n" "> +\t\t\tir_ioapic[i].iommu = NULL;\n" "> }\n" "> \n" @@ -368,7 +368,7 @@ "> +\n" "> +\tif (!irq_remapping_enabled)\n" "> +\t\treturn 0;\n" - "> +\tif (iommu = NULL)\n" + "> +\tif (iommu == NULL)\n" "> +\t\treturn -EINVAL;\n" "> +\tif (!ecap_ir_support(iommu->ecap))\n" "> +\t\treturn 0;\n" @@ -398,4 +398,4 @@ "Thanks!\n" Yijing -e8ee28e3854ab2e3d217f3052fd4efd0df61f4afb715a8480fff9586edf5c71c +b702c5be9ddcf68910072bca2556049fa82d75fce41a06ad648d81c9a6118502
diff --git a/a/1.txt b/N2/1.txt index a2c9a24..22d85c2 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -26,8 +26,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > int i; > > for (i = 0; i < MAX_HPET_TBS; i++) -> - if (ir_hpet[i].id = hpet_id) -> + if (ir_hpet[i].id = hpet_id && ir_hpet[i].iommu) +> - if (ir_hpet[i].id == hpet_id) +> + if (ir_hpet[i].id == hpet_id && ir_hpet[i].iommu) > return ir_hpet[i].iommu; > return NULL; > } @@ -35,8 +35,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > int i; > > for (i = 0; i < MAX_IO_APICS; i++) -> - if (ir_ioapic[i].id = apic) -> + if (ir_ioapic[i].id = apic && ir_ioapic[i].iommu) +> - if (ir_ioapic[i].id == apic) +> + if (ir_ioapic[i].id == apic && ir_ioapic[i].iommu) > return ir_ioapic[i].iommu; > return NULL; > } @@ -44,8 +44,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > > down_read(&dmar_global_lock); > for (i = 0; i < MAX_IO_APICS; i++) { -> - if (ir_ioapic[i].id = apic) { -> + if (ir_ioapic[i].iommu && ir_ioapic[i].id = apic) { +> - if (ir_ioapic[i].id == apic) { +> + if (ir_ioapic[i].iommu && ir_ioapic[i].id == apic) { > sid = (ir_ioapic[i].bus << 8) | ir_ioapic[i].devfn; > break; > } @@ -53,8 +53,8 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > > down_read(&dmar_global_lock); > for (i = 0; i < MAX_HPET_TBS; i++) { -> - if (ir_hpet[i].id = id) { -> + if (ir_hpet[i].iommu && ir_hpet[i].id = id) { +> - if (ir_hpet[i].id == id) { +> + if (ir_hpet[i].iommu && ir_hpet[i].id == id) { > sid = (ir_hpet[i].bus << 8) | ir_hpet[i].devfn; > break; > } @@ -154,13 +154,13 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - ir_hpet_num++; > + > + for (count = 0; count < MAX_HPET_TBS; count++) { -> + if (ir_hpet[count].iommu = iommu && -> + ir_hpet[count].id = scope->enumeration_id) +> + if (ir_hpet[count].iommu == iommu && +> + ir_hpet[count].id == scope->enumeration_id) > + return 0; -> + else if (ir_hpet[count].iommu = NULL && free = -1) +> + else if (ir_hpet[count].iommu == NULL && free == -1) > + free = count; > + } -> + if (free = -1) { +> + if (free == -1) { > + pr_warn("Exceeded Max HPET blocks\n"); > + return -ENOSPC; > + } @@ -198,13 +198,13 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - ir_ioapic[ir_ioapic_num].id = scope->enumeration_id; > - ir_ioapic_num++; > + for (count = 0; count < MAX_IO_APICS; count++) { -> + if (ir_ioapic[count].iommu = iommu && -> + ir_ioapic[count].id = scope->enumeration_id) +> + if (ir_ioapic[count].iommu == iommu && +> + ir_ioapic[count].id == scope->enumeration_id) > + return 0; -> + else if (ir_ioapic[count].iommu = NULL && free = -1) +> + else if (ir_ioapic[count].iommu == NULL && free == -1) > + free = count; > + } -> + if (free = -1) { +> + if (free == -1) { > + pr_warn("Exceeded Max IO APICS\n"); > + return -ENOSPC; > + } @@ -233,10 +233,10 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > end = ((void *)drhd) + header->length; > > - while (start < end) { -> + while (start < end && ret = 0) { +> + while (start < end && ret == 0) { > scope = start; -> - if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) { -> - if (ir_ioapic_num = MAX_IO_APICS) { +> - if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) { +> - if (ir_ioapic_num == MAX_IO_APICS) { > - printk(KERN_WARNING "Exceeded Max IO APICS\n"); > - return -1; > - } @@ -244,16 +244,16 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - printk(KERN_INFO "IOAPIC id %d under DRHD base " > - " 0x%Lx IOMMU %d\n", scope->enumeration_id, > - drhd->address, iommu->seq_id); -> + if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) +> + if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) > + ret = ir_parse_one_ioapic_scope(scope, iommu, drhd); -> + else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) +> + else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) > + ret = ir_parse_one_hpet_scope(scope, iommu, drhd); > + start += scope->length; > + } > > - ir_parse_one_ioapic_scope(scope, iommu); -> - } else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) { -> - if (ir_hpet_num = MAX_HPET_TBS) { +> - } else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) { +> - if (ir_hpet_num == MAX_HPET_TBS) { > - printk(KERN_WARNING "Exceeded Max HPET blocks\n"); > - return -1; > - } @@ -272,12 +272,12 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > - start += scope->length; > - } > + for (i = 0; i < MAX_HPET_TBS; i++) -> + if (ir_hpet[i].iommu = iommu) +> + if (ir_hpet[i].iommu == iommu) > + ir_hpet[i].iommu = NULL; > > - return 0; > + for (i = 0; i < MAX_IO_APICS; i++) -> + if (ir_ioapic[i].iommu = iommu) +> + if (ir_ioapic[i].iommu == iommu) > + ir_ioapic[i].iommu = NULL; > } > @@ -346,7 +346,7 @@ Reviewed-by: Yijing Wang <wangyijing@huawei.com> > + > + if (!irq_remapping_enabled) > + return 0; -> + if (iommu = NULL) +> + if (iommu == NULL) > + return -EINVAL; > + if (!ecap_ir_support(iommu->ecap)) > + return 0; diff --git a/a/content_digest b/N2/content_digest index b914222..8c4500c 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -2,7 +2,7 @@ "ref\01411103935-31301-6-git-send-email-jiang.liu@linux.intel.com\0" "From\0Yijing Wang <wangyijing@huawei.com>\0" "Subject\0Re: [Patch Part3 V6 5/8] iommu/vt-d: Enhance intel_irq_remapping driver to support DMAR unit hotplug\0" - "Date\0Fri, 19 Sep 2014 06:49:38 +0000\0" + "Date\0Fri, 19 Sep 2014 14:49:38 +0800\0" "To\0Jiang Liu <jiang.liu@linux.intel.com>" Joerg Roedel <joro@8bytes.org> David Woodhouse <dwmw2@infradead.org> @@ -13,11 +13,11 @@ " Rafael J . Wysocki <rafael.j.wysocki@intel.com>\0" "Cc\0Ashok Raj <ashok.raj@intel.com>" Tony Luck <tony.luck@intel.com> - iommu@lists.linux-foundation.org - linux-pci@vger.kernel.org - linux-hotplug@vger.kernel.org - linux-kernel@vger.kernel.org - " dmaengine@vger.kernel.org\0" + <iommu@lists.linux-foundation.org> + <linux-pci@vger.kernel.org> + <linux-hotplug@vger.kernel.org> + <linux-kernel@vger.kernel.org> + " <dmaengine@vger.kernel.org>\0" "\00:1\0" "b\0" "On 2014/9/19 13:18, Jiang Liu wrote:\n" @@ -48,8 +48,8 @@ "> \tint i;\n" "> \n" "> \tfor (i = 0; i < MAX_HPET_TBS; i++)\n" - "> -\t\tif (ir_hpet[i].id = hpet_id)\n" - "> +\t\tif (ir_hpet[i].id = hpet_id && ir_hpet[i].iommu)\n" + "> -\t\tif (ir_hpet[i].id == hpet_id)\n" + "> +\t\tif (ir_hpet[i].id == hpet_id && ir_hpet[i].iommu)\n" "> \t\t\treturn ir_hpet[i].iommu;\n" "> \treturn NULL;\n" "> }\n" @@ -57,8 +57,8 @@ "> \tint i;\n" "> \n" "> \tfor (i = 0; i < MAX_IO_APICS; i++)\n" - "> -\t\tif (ir_ioapic[i].id = apic)\n" - "> +\t\tif (ir_ioapic[i].id = apic && ir_ioapic[i].iommu)\n" + "> -\t\tif (ir_ioapic[i].id == apic)\n" + "> +\t\tif (ir_ioapic[i].id == apic && ir_ioapic[i].iommu)\n" "> \t\t\treturn ir_ioapic[i].iommu;\n" "> \treturn NULL;\n" "> }\n" @@ -66,8 +66,8 @@ "> \n" "> \tdown_read(&dmar_global_lock);\n" "> \tfor (i = 0; i < MAX_IO_APICS; i++) {\n" - "> -\t\tif (ir_ioapic[i].id = apic) {\n" - "> +\t\tif (ir_ioapic[i].iommu && ir_ioapic[i].id = apic) {\n" + "> -\t\tif (ir_ioapic[i].id == apic) {\n" + "> +\t\tif (ir_ioapic[i].iommu && ir_ioapic[i].id == apic) {\n" "> \t\t\tsid = (ir_ioapic[i].bus << 8) | ir_ioapic[i].devfn;\n" "> \t\t\tbreak;\n" "> \t\t}\n" @@ -75,8 +75,8 @@ "> \n" "> \tdown_read(&dmar_global_lock);\n" "> \tfor (i = 0; i < MAX_HPET_TBS; i++) {\n" - "> -\t\tif (ir_hpet[i].id = id) {\n" - "> +\t\tif (ir_hpet[i].iommu && ir_hpet[i].id = id) {\n" + "> -\t\tif (ir_hpet[i].id == id) {\n" + "> +\t\tif (ir_hpet[i].iommu && ir_hpet[i].id == id) {\n" "> \t\t\tsid = (ir_hpet[i].bus << 8) | ir_hpet[i].devfn;\n" "> \t\t\tbreak;\n" "> \t\t}\n" @@ -176,13 +176,13 @@ "> -\tir_hpet_num++;\n" "> +\n" "> +\tfor (count = 0; count < MAX_HPET_TBS; count++) {\n" - "> +\t\tif (ir_hpet[count].iommu = iommu &&\n" - "> +\t\t ir_hpet[count].id = scope->enumeration_id)\n" + "> +\t\tif (ir_hpet[count].iommu == iommu &&\n" + "> +\t\t ir_hpet[count].id == scope->enumeration_id)\n" "> +\t\t\treturn 0;\n" - "> +\t\telse if (ir_hpet[count].iommu = NULL && free = -1)\n" + "> +\t\telse if (ir_hpet[count].iommu == NULL && free == -1)\n" "> +\t\t\tfree = count;\n" "> +\t}\n" - "> +\tif (free = -1) {\n" + "> +\tif (free == -1) {\n" "> +\t\tpr_warn(\"Exceeded Max HPET blocks\\n\");\n" "> +\t\treturn -ENOSPC;\n" "> +\t}\n" @@ -220,13 +220,13 @@ "> -\tir_ioapic[ir_ioapic_num].id = scope->enumeration_id;\n" "> -\tir_ioapic_num++;\n" "> +\tfor (count = 0; count < MAX_IO_APICS; count++) {\n" - "> +\t\tif (ir_ioapic[count].iommu = iommu &&\n" - "> +\t\t ir_ioapic[count].id = scope->enumeration_id)\n" + "> +\t\tif (ir_ioapic[count].iommu == iommu &&\n" + "> +\t\t ir_ioapic[count].id == scope->enumeration_id)\n" "> +\t\t\treturn 0;\n" - "> +\t\telse if (ir_ioapic[count].iommu = NULL && free = -1)\n" + "> +\t\telse if (ir_ioapic[count].iommu == NULL && free == -1)\n" "> +\t\t\tfree = count;\n" "> +\t}\n" - "> +\tif (free = -1) {\n" + "> +\tif (free == -1) {\n" "> +\t\tpr_warn(\"Exceeded Max IO APICS\\n\");\n" "> +\t\treturn -ENOSPC;\n" "> +\t}\n" @@ -255,10 +255,10 @@ "> \tend = ((void *)drhd) + header->length;\n" "> \n" "> -\twhile (start < end) {\n" - "> +\twhile (start < end && ret = 0) {\n" + "> +\twhile (start < end && ret == 0) {\n" "> \t\tscope = start;\n" - "> -\t\tif (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC) {\n" - "> -\t\t\tif (ir_ioapic_num = MAX_IO_APICS) {\n" + "> -\t\tif (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC) {\n" + "> -\t\t\tif (ir_ioapic_num == MAX_IO_APICS) {\n" "> -\t\t\t\tprintk(KERN_WARNING \"Exceeded Max IO APICS\\n\");\n" "> -\t\t\t\treturn -1;\n" "> -\t\t\t}\n" @@ -266,16 +266,16 @@ "> -\t\t\tprintk(KERN_INFO \"IOAPIC id %d under DRHD base \"\n" "> -\t\t\t \" 0x%Lx IOMMU %d\\n\", scope->enumeration_id,\n" "> -\t\t\t drhd->address, iommu->seq_id);\n" - "> +\t\tif (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_IOAPIC)\n" + "> +\t\tif (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_IOAPIC)\n" "> +\t\t\tret = ir_parse_one_ioapic_scope(scope, iommu, drhd);\n" - "> +\t\telse if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET)\n" + "> +\t\telse if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET)\n" "> +\t\t\tret = ir_parse_one_hpet_scope(scope, iommu, drhd);\n" "> +\t\tstart += scope->length;\n" "> +\t}\n" "> \n" "> -\t\t\tir_parse_one_ioapic_scope(scope, iommu);\n" - "> -\t\t} else if (scope->entry_type = ACPI_DMAR_SCOPE_TYPE_HPET) {\n" - "> -\t\t\tif (ir_hpet_num = MAX_HPET_TBS) {\n" + "> -\t\t} else if (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_HPET) {\n" + "> -\t\t\tif (ir_hpet_num == MAX_HPET_TBS) {\n" "> -\t\t\t\tprintk(KERN_WARNING \"Exceeded Max HPET blocks\\n\");\n" "> -\t\t\t\treturn -1;\n" "> -\t\t\t}\n" @@ -294,12 +294,12 @@ "> -\t\tstart += scope->length;\n" "> -\t}\n" "> +\tfor (i = 0; i < MAX_HPET_TBS; i++)\n" - "> +\t\tif (ir_hpet[i].iommu = iommu)\n" + "> +\t\tif (ir_hpet[i].iommu == iommu)\n" "> +\t\t\tir_hpet[i].iommu = NULL;\n" "> \n" "> -\treturn 0;\n" "> +\tfor (i = 0; i < MAX_IO_APICS; i++)\n" - "> +\t\tif (ir_ioapic[i].iommu = iommu)\n" + "> +\t\tif (ir_ioapic[i].iommu == iommu)\n" "> +\t\t\tir_ioapic[i].iommu = NULL;\n" "> }\n" "> \n" @@ -368,7 +368,7 @@ "> +\n" "> +\tif (!irq_remapping_enabled)\n" "> +\t\treturn 0;\n" - "> +\tif (iommu = NULL)\n" + "> +\tif (iommu == NULL)\n" "> +\t\treturn -EINVAL;\n" "> +\tif (!ecap_ir_support(iommu->ecap))\n" "> +\t\treturn 0;\n" @@ -398,4 +398,4 @@ "Thanks!\n" Yijing -e8ee28e3854ab2e3d217f3052fd4efd0df61f4afb715a8480fff9586edf5c71c +745a878078615fe780ff0351329e84bd9bf195289cd3cb8ba5c2f21ce84f861c
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.