diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index ffc0c4a3bba7..5ef5ac011fd8 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1498,8 +1498,6 @@ void __init efi_init_memory(void)
     if ( !efi_enabled(EFI_BOOT) )
         return;
 
-    printk(XENLOG_INFO "EFI memory map:%s\n",
-           map_bs ? " (mapping BootServices)" : "");
     for ( i = 0; i < efi_memmap_size; i += efi_mdesc_size )
     {
         EFI_MEMORY_DESCRIPTOR *desc = efi_memmap + i;
@@ -1507,11 +1505,6 @@ void __init efi_init_memory(void)
         unsigned long smfn, emfn;
         unsigned int prot = PAGE_HYPERVISOR_RWX;
 
-        printk(XENLOG_INFO " %013" PRIx64 "-%013" PRIx64
-                           " type=%u attr=%016" PRIx64 "\n",
-               desc->PhysicalStart, desc->PhysicalStart + len - 1,
-               desc->Type, desc->Attribute);
-
         if ( (desc->Attribute & (EFI_MEMORY_WB | EFI_MEMORY_WT)) ||
              (efi_bs_revision >= EFI_REVISION(2, 5) &&
               (desc->Attribute & EFI_MEMORY_WP)) )
diff --git a/xen/drivers/passthrough/amd/iommu_detect.c b/xen/drivers/passthrough/amd/iommu_detect.c
index 0df10f25b04e..953af45c4e8c 100644
--- a/xen/drivers/passthrough/amd/iommu_detect.c
+++ b/xen/drivers/passthrough/amd/iommu_detect.c
@@ -194,6 +194,9 @@ int __init amd_iommu_detect_one_acpi(
                "Could not mark config space of %04x:%02x:%02x.%u read-only (%d)\n",
                iommu->seg, bus, dev, func, rt);
 
+    printk("*** %s(%p) IOMMU at %04x:%02x:%02x.%u\n",
+           __func__, ivhd_block, iommu->seg, bus, dev, func);
+
     list_add_tail(&iommu->list, &amd_iommu_head);
     rt = 0;
 
@@ -204,5 +207,7 @@ int __init amd_iommu_detect_one_acpi(
         xfree(iommu);
     }
 
+    printk("*** %s(%p) => %d\n", __func__, ivhd_block, rt);
+
     return rt;
 }
diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c
index 1ff132b5cf58..3edf9fac72e9 100644
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -1158,6 +1158,8 @@ static void __init amd_iommu_init_cleanup(void)
 {
     struct amd_iommu *iommu, *next;
 
+    printk("*** %s()\n", __func__);
+
     /* free interrupt remapping table */
     if ( amd_iommu_perdev_intremap )
         iterate_ivrs_entries(amd_iommu_free_intremap_table);
@@ -1421,7 +1423,10 @@ int __init amd_iommu_prepare(bool xt)
     struct amd_iommu *iommu;
     int rc = -ENODEV;
 
-    BUG_ON( !iommu_found() );
+    printk("*** %s(%u) start\n", __func__, xt);
+
+    if ( !iommu_found() )
+	panic ("No IOMMU\n");
 
     if ( iommu_intremap && amd_iommu_perdev_intremap &&
          amd_sp5100_erratum28() )
@@ -1431,7 +1436,10 @@ int __init amd_iommu_prepare(bool xt)
 
     /* We implies no IOMMU if ACPI indicates no MSI. */
     if ( unlikely(acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_MSI) )
+    {
+        printk("*** %s(%u) NO_MSI\n", __func__, xt);
         goto error_out;
+    }
 
     /* Have we been here before? */
     if ( ivhd_type )
@@ -1439,7 +1447,10 @@ int __init amd_iommu_prepare(bool xt)
 
     rc = amd_iommu_get_supported_ivhd_type();
     if ( rc < 0 )
+    {
+        printk("*** %s(%u) no IVHD type -> %d\n", __func__, xt, rc);
         goto error_out;
+    }
     BUG_ON(!rc);
     ivhd_type = rc;
 
@@ -1447,7 +1458,10 @@ int __init amd_iommu_prepare(bool xt)
     if ( !rc )
         rc = -ENODEV;
     if ( rc < 0 )
+    {
+        printk("*** %s(%u) No dev entries -> %d\n", __func__, xt, rc);
         goto error_out;
+    }
     ivrs_bdf_entries = rc;
 
     radix_tree_init(&ivrs_maps);
@@ -1455,11 +1469,19 @@ int __init amd_iommu_prepare(bool xt)
     {
         rc = amd_iommu_prepare_one(iommu);
         if ( rc )
+        {
+            printk("*** %s(%u) prepare_one() failed -> %d\n", __func__, xt, rc);
             goto error_out;
+        }
 
         rc = -ENODEV;
         if ( xt && (!iommu->features.flds.ga_sup || !iommu->features.flds.xt_sup) )
+        {
+            printk("*** %s(%u) ga_sup %u, xt_sup %u -> %d\n",
+                   __func__, xt, iommu->features.flds.ga_sup,
+                   iommu->features.flds.xt_sup, rc);
             goto error_out;
+        }
     }
 
     for_each_amd_iommu ( iommu )
@@ -1472,6 +1494,10 @@ int __init amd_iommu_prepare(bool xt)
 
     rc = amd_iommu_update_ivrs_mapping_acpi();
 
+    if ( rc )
+        printk("*** %s(%u) update_mappings failed -> %d\n",
+               __func__, xt, rc);
+
  error_out:
     if ( rc )
     {
@@ -1479,22 +1505,34 @@ int __init amd_iommu_prepare(bool xt)
         ivhd_type = 0;
     }
 
+    printk("*** %s(%u) done -> %d\n", __func__, xt, rc);
+
     return rc;
 }
 
 int __init amd_iommu_init(bool xt)
 {
     struct amd_iommu *iommu;
-    int rc = amd_iommu_prepare(xt);
+    int rc;
+
+    printk("*** %s(%u) start\n", __func__, xt);
+
+    rc = amd_iommu_prepare(xt);
 
     if ( rc )
+    {
+        printk("*** %s(%u) prepare failed -> %d\n", __func__, xt, rc);
         goto error_out;
+    }
 
     /* Allocate and initialize device table(s). */
     pci_init = !xt;
     rc = iterate_ivrs_mappings(amd_iommu_setup_device_table);
     if ( rc )
+    {
+        printk("*** %s(%u) iterate mappings failed -> %d\n", __func__, xt, rc);
         goto error_out;
+    }
 
     /*
      * Disable sharing HAP page tables with AMD IOMMU,
@@ -1515,17 +1553,24 @@ int __init amd_iommu_init(bool xt)
          */
         rc = amd_iommu_init_one(iommu, !xt);
         if ( rc )
+        {
+            printk("*** %s(%u) init one failed -> %d\n", __func__, xt, rc);
             goto error_out;
+        }
     }
 
     if ( iommu_intremap )
         register_keyhandler('V', &amd_iommu_dump_intremap_tables,
                             "dump IOMMU intremap tables", 0);
 
-    return 0;
+    rc = 0;
 
 error_out:
-    amd_iommu_init_cleanup();
+    if ( rc )
+	amd_iommu_init_cleanup();
+
+    printk("*** %s(%u) => %d\n", __func__, xt, rc);
+
     return rc;
 }
 
diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 89ed9e55508b..2ea402bec65a 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -55,7 +55,7 @@ bool_t __read_mostly iommu_intpost;
 bool __read_mostly iommu_hap_pt_share = true;
 #endif
 
-bool_t __read_mostly iommu_debug;
+bool_t __read_mostly iommu_debug = 1;
 bool_t __read_mostly amd_iommu_perdev_intremap = 1;
 
 DEFINE_PER_CPU(bool_t, iommu_dont_flush_iotlb);
