return mcfg_res.flags;
 }
 
-static bool is_efi_mmio(u64 start, u64 end, enum e820_type not_used)
+static bool is_efi_mmio(struct resource *res)
 {
 #ifdef CONFIG_EFI
+       u64 start = res->start;
+       u64 end = res->start + resource_size(res);
        efi_memory_desc_t *md;
        u64 size, mmio_start, mmio_end;
 
                        mmio_start = md->phys_addr;
                        mmio_end = mmio_start + size;
 
-                       /*
-                        * N.B. Caller supplies (start, start + size),
-                        * so to match, mmio_end is the first address
-                        * *past* the EFI_MEMORY_MAPPED_IO area.
-                        */
                        if (mmio_start <= start && end <= mmio_end)
                                return true;
                }
                               "ACPI motherboard resources\n",
                               &cfg->res);
 
-               if (is_mmconf_reserved(is_efi_mmio, cfg, dev,
-                                      "EfiMemoryMappedIO")) {
+               if (is_efi_mmio(&cfg->res)) {
+                       pr_info("ECAM %pR is EfiMemoryMappedIO; assuming valid\n",
+                               &cfg->res);
                        conflict = insert_resource_conflict(&iomem_resource,
                                                            &cfg->res);
                        if (conflict)