--- /dev/null
+From: Suresh Siddha <suresh.b.siddha@intel.com>
+Subject: dmar: fix dmar_parse_dev() devices_cnt error condition check
+References: fate #303948 and fate #303984
+Patch-Mainline: queued for .28
+Commit-ID: 0f4896665a02b465ddca59a560983b24ec28c64b
+
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+
+It is possible that,
+instead of PCI endpoint/sub-hierarchy structures, only IO-APIC/HPET
+devices may be reported under device scope structures. Fix the devices_cnt
+error check, which cares about only PCI structures and removes the
+dma-remapping unit structure (dmaru) when the devices_cnt is zero
+and include_all flag is not set.
+
+Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
+Acked-by: Yinghai Lu <yhlu.kernel@gmail.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+
+---
+ drivers/pci/dmar.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6.26/drivers/pci/dmar.c
+===================================================================
+--- linux-2.6.26.orig/drivers/pci/dmar.c
++++ linux-2.6.26/drivers/pci/dmar.c
+@@ -212,7 +212,7 @@ dmar_parse_dev(struct dmar_drhd_unit *dm
+ include_all = 1;
+ }
+
+- if (ret || (dmaru->devices_cnt == 0 && !dmaru->include_all)) {
++ if (ret) {
+ list_del(&dmaru->list);
+ kfree(dmaru);
+ }