[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] xen: Fix inconsistent callers of panic()



Callers are inconsistent with whether they pass a newline to panic(),
including adjacent calls in the same function using different styles.

painc() not expecting a newline is inconsistent with most other printing
functions, which is most likely why we've gained so many inconsistencies.

Switch panic() to expect a newline, and update all callers which currently
lack a newline to include one.

This actually reduces the size of .rodata (0x07e3e8 down to 0x07e3a8) because
a number of strings are passed to both panic() and printk().  As they
previously differed by \n alone, they couldn't be merged.

Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Jan Beulich <JBeulich@xxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Julien Grall <julien.grall@xxxxxxx>

(Restricted to the core arch maintainers as this is a tree-wide piece of
cleanup with no functional impact to other areas.)

The observant amongst you might realise that this reverts parts of c/s
51ad90aea21c - What can I say?  Several years of hindsight is very useful, and
at the time I did ask the maintainers which option they thought would be
better...
---
 xen/arch/arm/arm32/vfp.c             |  2 +-
 xen/arch/arm/arm64/traps.c           |  2 +-
 xen/arch/arm/domain_build.c          | 20 ++++++++++----------
 xen/arch/arm/gic-v2.c                | 24 ++++++++++++------------
 xen/arch/arm/gic-v3-its.c            |  4 ++--
 xen/arch/arm/gic-v3.c                | 14 +++++++-------
 xen/arch/arm/gic.c                   | 10 +++++-----
 xen/arch/arm/kernel.c                |  8 ++++----
 xen/arch/arm/mm.c                    |  2 +-
 xen/arch/arm/p2m.c                   |  2 +-
 xen/arch/arm/platform.c              |  2 +-
 xen/arch/arm/platforms/xgene-storm.c |  6 +++---
 xen/arch/arm/setup.c                 | 12 ++++++------
 xen/arch/arm/smpboot.c               |  2 +-
 xen/arch/arm/time.c                  |  8 ++++----
 xen/arch/arm/traps.c                 |  8 ++++----
 xen/arch/arm/vgic/vgic.c             |  2 +-
 xen/arch/x86/acpi/power.c            |  2 +-
 xen/arch/x86/alternative.c           |  2 +-
 xen/arch/x86/apic.c                  |  5 ++---
 xen/arch/x86/cpu/mcheck/mce.c        |  4 ++--
 xen/arch/x86/guest/xen.c             | 18 +++++++++---------
 xen/arch/x86/hvm/dom0_build.c        |  2 +-
 xen/arch/x86/hvm/svm/intr.c          |  2 +-
 xen/arch/x86/io_apic.c               |  8 ++++----
 xen/arch/x86/mm/mm-locks.h           |  2 +-
 xen/arch/x86/mpparse.c               | 10 +++++-----
 xen/arch/x86/numa.c                  |  2 +-
 xen/arch/x86/pv/dom0_build.c         | 20 ++++++++++----------
 xen/arch/x86/pv/shim.c               |  2 +-
 xen/arch/x86/setup.c                 | 16 ++++++++--------
 xen/arch/x86/smpboot.c               |  4 ++--
 xen/arch/x86/tboot.c                 |  2 +-
 xen/arch/x86/time.c                  |  6 +++---
 xen/arch/x86/traps.c                 | 16 ++++++++--------
 xen/arch/x86/x86_64/mm.c             |  2 +-
 xen/arch/x86/x86_64/traps.c          |  2 +-
 xen/common/domain.c                  |  2 +-
 xen/common/gunzip.c                  |  2 +-
 xen/common/schedule.c                |  2 +-
 xen/common/ubsan/ubsan.c             |  2 +-
 xen/common/warning.c                 |  2 +-
 xen/drivers/char/console.c           |  2 +-
 xen/drivers/passthrough/iommu.c      |  5 ++---
 xen/drivers/passthrough/pci.c        |  2 +-
 xen/drivers/passthrough/vtd/dmar.h   |  2 +-
 xen/drivers/passthrough/vtd/iommu.c  |  4 ++--
 xen/xsm/flask/hooks.c                |  4 ++--
 48 files changed, 141 insertions(+), 143 deletions(-)

diff --git a/xen/arch/arm/arm32/vfp.c b/xen/arch/arm/arm32/vfp.c
index 5b80053..0069acd 100644
--- a/xen/arch/arm/arm32/vfp.c
+++ b/xen/arch/arm/arm32/vfp.c
@@ -80,7 +80,7 @@ static __init int vfp_init(void)
 
     vfparch = (vfpsid & FPSID_ARCH_MASK) >> FPSID_ARCH_BIT;
     if ( vfparch < 2 )
-        panic("Xen only support VFP 3");
+        panic("Xen only support VFP 3\n");
 
     return 0;
 }
diff --git a/xen/arch/arm/arm64/traps.c b/xen/arch/arm/arm64/traps.c
index 38470a1..e524019 100644
--- a/xen/arch/arm/arm64/traps.c
+++ b/xen/arch/arm/arm64/traps.c
@@ -40,7 +40,7 @@ void do_bad_mode(struct cpu_user_regs *regs, int reason)
 
     local_irq_disable();
     show_execution_state(regs);
-    panic("bad mode");
+    panic("bad mode\n");
 }
 
 /*
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index e1c79b2..745153d 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -125,7 +125,7 @@ static bool __init insert_11_bank(struct domain *d,
 
     res = guest_physmap_add_page(d, _gfn(mfn_x(smfn)), smfn, order);
     if ( res )
-        panic("Failed map pages to DOM0: %d", res);
+        panic("Failed map pages to DOM0: %d\n", res);
 
     kinfo->unassigned_mem -= size;
 
@@ -289,7 +289,7 @@ static void __init allocate_memory(struct domain *d, struct 
kernel_info *kinfo)
 
     /* Failed to allocate bank0 under 4GB */
     if ( is_32bit_domain(d) )
-        panic("Unable to allocate first memory bank.");
+        panic("Unable to allocate first memory bank\n");
 
     /* Try to allocate memory from above 4GB */
     printk(XENLOG_INFO "No bank has been allocated below 4GB.\n");
@@ -598,7 +598,7 @@ static int __init make_hypervisor_node(struct domain *d,
      */
     if ((addrcells != 1 && addrcells != 2) ||
         (sizecells != 1 && sizecells != 2))
-        panic("Cannot cope with this size");
+        panic("Cannot cope with this size\n");
 
     /* See linux Documentation/devicetree/bindings/arm/xen.txt */
     res = fdt_begin_node(fdt, "hypervisor");
@@ -1586,7 +1586,7 @@ static void __init acpi_map_other_tables(struct domain *d)
         if ( res )
         {
              panic(XENLOG_ERR "Unable to map ACPI region 0x%"PRIx64
-                   " - 0x%"PRIx64" in domain \n",
+                   " - 0x%"PRIx64" in domain\n",
                    addr & PAGE_MASK, PAGE_ALIGN(addr + size) - 1);
         }
     }
@@ -1994,7 +1994,7 @@ static void __init dtb_load(struct kernel_info *kinfo)
                                            fdt_totalsize(kinfo->fdt));
 
     if ( left != 0 )
-        panic("Unable to copy the DTB to dom0 memory (left = %lu bytes)", 
left);
+        panic("Unable to copy the DTB to dom0 memory (left = %lu bytes)\n", 
left);
     xfree(kinfo->fdt);
 }
 
@@ -2021,30 +2021,30 @@ static void __init initrd_load(struct kernel_info 
*kinfo)
     /* Fix up linux,initrd-start and linux,initrd-end in /chosen */
     node = fdt_path_offset(kinfo->fdt, "/chosen");
     if ( node < 0 )
-        panic("Cannot find the /chosen node");
+        panic("Cannot find the /chosen node\n");
 
     cellp = (__be32 *)val;
     dt_set_cell(&cellp, ARRAY_SIZE(val), load_addr);
     res = fdt_setprop_inplace(kinfo->fdt, node, "linux,initrd-start",
                               val, sizeof(val));
     if ( res )
-        panic("Cannot fix up \"linux,initrd-start\" property");
+        panic("Cannot fix up \"linux,initrd-start\" property\n");
 
     cellp = (__be32 *)val;
     dt_set_cell(&cellp, ARRAY_SIZE(val), load_addr + len);
     res = fdt_setprop_inplace(kinfo->fdt, node, "linux,initrd-end",
                               val, sizeof(val));
     if ( res )
-        panic("Cannot fix up \"linux,initrd-end\" property");
+        panic("Cannot fix up \"linux,initrd-end\" property\n");
 
     initrd = ioremap_wc(paddr, len);
     if ( !initrd )
-        panic("Unable to map the hwdom initrd");
+        panic("Unable to map the hwdom initrd\n");
 
     res = copy_to_guest_phys_flush_dcache(kinfo->d, load_addr,
                                           initrd, len);
     if ( res != 0 )
-        panic("Unable to copy the initrd in the hwdom memory");
+        panic("Unable to copy the initrd in the hwdom memory\n");
 }
 
 /*
diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index d2dcafb..e7eb01f 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -941,7 +941,7 @@ static void gicv2_add_v2m_frame_to_list(paddr_t addr, 
paddr_t size,
 
         base = ioremap_nocache(addr, size);
         if ( !base )
-            panic("GICv2: Cannot remap v2m register frame");
+            panic("GICv2: Cannot remap v2m register frame\n");
 
         msi_typer = readl_relaxed(base + V2M_MSI_TYPER);
         spi_start = V2M_MSI_TYPER_BASE_SPI(msi_typer);
@@ -960,7 +960,7 @@ static void gicv2_add_v2m_frame_to_list(paddr_t addr, 
paddr_t size,
     /* Allocate an entry to record new v2m frame information. */
     v2m_data = xzalloc_bytes(sizeof(struct v2m_data));
     if ( !v2m_data )
-        panic("GICv2: Cannot allocate memory for v2m frame");
+        panic("GICv2: Cannot allocate memory for v2m frame\n");
 
     INIT_LIST_HEAD(&v2m_data->entry);
     v2m_data->addr = addr;
@@ -998,7 +998,7 @@ static void gicv2_extension_dt_init(const struct 
dt_device_node *node)
 
         /* Get register frame resource from DT. */
         if ( dt_device_get_address(v2m, 0, &addr, &size) )
-            panic("GICv2: Cannot find a valid v2m frame address");
+            panic("GICv2: Cannot find a valid v2m frame address\n");
 
         /*
          * Check whether DT uses msi-base-spi and msi-num-spis properties to
@@ -1024,23 +1024,23 @@ static void __init gicv2_dt_init(void)
 
     res = dt_device_get_address(node, 0, &dbase, NULL);
     if ( res )
-        panic("GICv2: Cannot find a valid address for the distributor");
+        panic("GICv2: Cannot find a valid address for the distributor\n");
 
     res = dt_device_get_address(node, 1, &cbase, &csize);
     if ( res )
-        panic("GICv2: Cannot find a valid address for the CPU");
+        panic("GICv2: Cannot find a valid address for the CPU\n");
 
     res = dt_device_get_address(node, 2, &hbase, NULL);
     if ( res )
-        panic("GICv2: Cannot find a valid address for the hypervisor");
+        panic("GICv2: Cannot find a valid address for the hypervisor\n");
 
     res = dt_device_get_address(node, 3, &vbase, &vsize);
     if ( res )
-        panic("GICv2: Cannot find a valid address for the virtual CPU");
+        panic("GICv2: Cannot find a valid address for the virtual CPU\n");
 
     res = platform_get_irq(node, 0);
     if ( res < 0 )
-        panic("GICv2: Cannot find the maintenance IRQ");
+        panic("GICv2: Cannot find the maintenance IRQ\n");
     gicv2_info.maintenance_irq = res;
 
     /* TODO: Add check on distributor */
@@ -1215,7 +1215,7 @@ static void __init gicv2_acpi_init(void)
     {
         const char *msg = acpi_format_exception(status);
 
-        panic("GICv2: Failed to get MADT table, %s", msg);
+        panic("GICv2: Failed to get MADT table, %s\n", msg);
     }
 
     /* Collect CPU base addresses */
@@ -1223,7 +1223,7 @@ static void __init gicv2_acpi_init(void)
                                gic_acpi_parse_madt_cpu, table,
                                ACPI_MADT_TYPE_GENERIC_INTERRUPT, 0);
     if ( count <= 0 )
-        panic("GICv2: No valid GICC entries exists");
+        panic("GICv2: No valid GICC entries exists\n");
 
     /*
      * Find distributor base address. We expect one distributor entry since
@@ -1233,7 +1233,7 @@ static void __init gicv2_acpi_init(void)
                                gic_acpi_parse_madt_distributor, table,
                                ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
     if ( count <= 0 )
-        panic("GICv2: No valid GICD entries exists");
+        panic("GICv2: No valid GICD entries exists\n");
 }
 #else
 static void __init gicv2_acpi_init(void) { }
@@ -1263,7 +1263,7 @@ static int __init gicv2_init(void)
 
     if ( (dbase & ~PAGE_MASK) || (cbase & ~PAGE_MASK) ||
          (hbase & ~PAGE_MASK) || (vbase & ~PAGE_MASK) )
-        panic("GICv2 interfaces not page aligned");
+        panic("GICv2 interfaces not page aligned\n");
 
     gicv2.map_dbase = ioremap_nocache(dbase, PAGE_SIZE);
     if ( !gicv2.map_dbase )
diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 6127894..ba4bc00 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -992,7 +992,7 @@ static void add_to_host_its_list(paddr_t addr, paddr_t size,
 
     its_data = xzalloc(struct host_its);
     if ( !its_data )
-        panic("GICv3: Cannot allocate memory for ITS frame");
+        panic("GICv3: Cannot allocate memory for ITS frame\n");
 
     its_data->addr = addr;
     its_data->size = size;
@@ -1020,7 +1020,7 @@ static void gicv3_its_dt_init(const struct dt_device_node 
*node)
             continue;
 
         if ( dt_device_get_address(its, 0, &addr, &size) )
-            panic("GICv3: Cannot find a valid ITS frame address");
+            panic("GICv3: Cannot find a valid ITS frame address\n");
 
         add_to_host_its_list(addr, size, its);
     }
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index b2ed0f8..c98a163 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1345,7 +1345,7 @@ static void __init gicv3_init_v2(void)
 static void __init gicv3_ioremap_distributor(paddr_t dist_paddr)
 {
     if ( dist_paddr & ~PAGE_MASK )
-        panic("GICv3:  Found unaligned distributor address %"PRIpaddr"",
+        panic("GICv3:  Found unaligned distributor address %"PRIpaddr"\n",
               dbase);
 
     gicv3.map_dbase = ioremap_nocache(dist_paddr, SZ_64K);
@@ -1361,7 +1361,7 @@ static void __init gicv3_dt_init(void)
 
     res = dt_device_get_address(node, 0, &dbase, NULL);
     if ( res )
-        panic("GICv3: Cannot find a valid distributor address");
+        panic("GICv3: Cannot find a valid distributor address\n");
 
     gicv3_ioremap_distributor(dbase);
 
@@ -1392,7 +1392,7 @@ static void __init gicv3_dt_init(void)
 
     res = platform_get_irq(node, 0);
     if ( res < 0 )
-        panic("GICv3: Cannot find the maintenance IRQ");
+        panic("GICv3: Cannot find the maintenance IRQ\n");
     gicv3_info.maintenance_irq = res;
 
     /*
@@ -1652,7 +1652,7 @@ static void __init gicv3_acpi_init(void)
     count = acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR,
                                   gic_acpi_parse_madt_distributor, 0);
     if ( count <= 0 )
-        panic("GICv3: No valid GICD entries exists");
+        panic("GICv3: No valid GICD entries exists\n");
 
     gicv3_ioremap_distributor(dbase);
 
@@ -1664,7 +1664,7 @@ static void __init gicv3_acpi_init(void)
         count = acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_INTERRUPT,
                                       gic_acpi_get_madt_cpu_num, 0);
         if (count <= 0)
-            panic("GICv3: No valid GICR entries exists");
+            panic("GICv3: No valid GICR entries exists\n");
 
         gicr_table = false;
     }
@@ -1684,13 +1684,13 @@ static void __init gicv3_acpi_init(void)
         count = acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_INTERRUPT,
                                       gic_acpi_parse_cpu_redistributor, count);
     if ( count <= 0 )
-        panic("GICv3: Can't get Redistributor entry");
+        panic("GICv3: Can't get Redistributor entry\n");
 
     /* Collect CPU base addresses */
     count = acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_INTERRUPT,
                                   gic_acpi_parse_madt_cpu, 0);
     if ( count <= 0 )
-        panic("GICv3: No valid GICC entries exists");
+        panic("GICv3: No valid GICC entries exists\n");
 
     gicv3.rdist_stride = 0;
 
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 5474030..e524ad5 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -246,7 +246,7 @@ static void __init gic_dt_preinit(void)
         }
     }
     if ( !num_gics )
-        panic("Unable to find compatible GIC in the device tree");
+        panic("Unable to find compatible GIC in the device tree\n");
 
     /* Set the GIC as the primary interrupt controller */
     dt_interrupt_controller = node;
@@ -261,12 +261,12 @@ static void __init gic_acpi_preinit(void)
 
     header = acpi_table_get_entry_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
     if ( !header )
-        panic("No valid GICD entries exists");
+        panic("No valid GICD entries exists\n");
 
     dist = container_of(header, struct acpi_madt_generic_distributor, header);
 
     if ( acpi_device_init(DEVICE_GIC, NULL, dist->version) )
-        panic("Unable to find compatible GIC in the ACPI table");
+        panic("Unable to find compatible GIC in the ACPI table\n");
 }
 #else
 static void __init gic_acpi_preinit(void) { }
@@ -287,7 +287,7 @@ void __init gic_preinit(void)
 void __init gic_init(void)
 {
     if ( gic_hw_ops->init() )
-        panic("Failed to initialize the GIC drivers");
+        panic("Failed to initialize the GIC drivers\n");
     /* Clear LR mask for cpu0 */
     clear_cpu_lr_mask();
 }
@@ -364,7 +364,7 @@ static void do_sgi(struct cpu_user_regs *regs, enum gic_sgi 
sgi)
         smp_call_function_interrupt();
         break;
     default:
-        panic("Unhandled SGI %d on CPU%d", sgi, smp_processor_id());
+        panic("Unhandled SGI %d on CPU%d\n", sgi, smp_processor_id());
         break;
     }
 
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 000d939..da8410e 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -87,7 +87,7 @@ static void __init place_modules(struct kernel_info *info,
     paddr_t modbase;
 
     if ( modsize + kernsize > ramsize )
-        panic("Not enough memory in the first bank for the kernel+dtb+initrd");
+        panic("Not enough memory in the first bank for the 
kernel+dtb+initrd\n");
 
     /*
      * DTB must be loaded such that it does not conflict with the
@@ -114,7 +114,7 @@ static void __init place_modules(struct kernel_info *info,
         modbase = kernbase - modsize;
     else
     {
-        panic("Unable to find suitable location for dtb+initrd");
+        panic("Unable to find suitable location for dtb+initrd\n");
         return;
     }
 
@@ -171,12 +171,12 @@ static void __init kernel_zimage_load(struct kernel_info 
*info)
 
     kernel = ioremap_wc(paddr, len);
     if ( !kernel )
-        panic("Unable to map the hwdom kernel");
+        panic("Unable to map the hwdom kernel\n");
 
     rc = copy_to_guest_phys_flush_dcache(info->d, load_addr,
                                          kernel, len);
     if ( rc != 0 )
-        panic("Unable to copy the kernel in the hwdom memory");
+        panic("Unable to copy the kernel in the hwdom memory\n");
 
     iounmap(kernel);
 }
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index de9b965..7a06a33 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -830,7 +830,7 @@ void __init setup_xenheap_mappings(unsigned long base_mfn,
     }
 
     if ( base_mfn < mfn_x(xenheap_mfn_start) )
-        panic("cannot add xenheap mapping at %lx below heap start %lx",
+        panic("cannot add xenheap mapping at %lx below heap start %lx\n",
               base_mfn, mfn_x(xenheap_mfn_start));
 
     end_mfn = base_mfn + nr_mfns;
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 56b5474..1364e59 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1164,7 +1164,7 @@ static void p2m_vmid_allocator_init(void)
     vmid_mask = xzalloc_array(unsigned long, BITS_TO_LONGS(MAX_VMID));
 
     if ( !vmid_mask )
-        panic("Could not allocate VMID bitmap space");
+        panic("Could not allocate VMID bitmap space\n");
 
     set_bit(INVALID_VMID, vmid_mask);
 }
diff --git a/xen/arch/arm/platform.c b/xen/arch/arm/platform.c
index 3f2989e..6989e58 100644
--- a/xen/arch/arm/platform.c
+++ b/xen/arch/arm/platform.c
@@ -71,7 +71,7 @@ void __init platform_init(void)
         res = platform->init();
 
     if ( res )
-        panic("Unable to initialize the platform");
+        panic("Unable to initialize the platform\n");
 }
 
 int __init platform_init_time(void)
diff --git a/xen/arch/arm/platforms/xgene-storm.c 
b/xen/arch/arm/platforms/xgene-storm.c
index deb8479..fced4d7 100644
--- a/xen/arch/arm/platforms/xgene-storm.c
+++ b/xen/arch/arm/platforms/xgene-storm.c
@@ -48,11 +48,11 @@ static void __init xgene_check_pirq_eoi(void)
 
     node = dt_find_interrupt_controller(xgene_dt_int_ctrl_match);
     if ( !node )
-        panic("%s: Can not find interrupt controller node", __func__);
+        panic("%s: Can not find interrupt controller node\n", __func__);
 
     res = dt_device_get_address(node, 0, &dbase, NULL);
     if ( !dbase )
-        panic("%s: Cannot find a valid address for the distributor", __func__);
+        panic("%s: Cannot find a valid address for the distributor\n", 
__func__);
 
     /*
      * In old X-Gene Storm firmware and DT, secure mode addresses have
@@ -62,7 +62,7 @@ static void __init xgene_check_pirq_eoi(void)
      */
     if ( dbase == XGENE_SEC_GICV2_DIST_ADDR )
         panic("OLD X-Gene Firmware is not supported by Xen.\n"
-              "Please upgrade your firmware to the latest version");
+              "Please upgrade your firmware to the latest version\n");
 }
 
 static uint32_t xgene_storm_quirks(void)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 45f3841..1aafa26 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -424,7 +424,7 @@ static paddr_t __init get_xen_paddr(void)
     }
 
     if ( !paddr )
-        panic("Not enough memory to relocate Xen");
+        panic("Not enough memory to relocate Xen\n");
 
     printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
            paddr, paddr + min_size);
@@ -482,7 +482,7 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t 
dtb_size)
     void *fdt;
 
     if ( !bootinfo.mem.nr_banks )
-        panic("No memory bank");
+        panic("No memory bank\n");
 
     init_pdx();
 
@@ -537,7 +537,7 @@ static void __init setup_mm(unsigned long dtb_paddr, size_t 
dtb_size)
     } while ( !opt_xenheap_megabytes && xenheap_pages > 32<<(20-PAGE_SHIFT) );
 
     if ( ! e )
-        panic("Not not enough space for xenheap");
+        panic("Not not enough space for xenheap\n");
 
     domheap_pages = heap_pages - xenheap_pages;
 
@@ -713,7 +713,7 @@ void __init start_xen(unsigned long boot_phys_offset,
     if ( !device_tree_flattened )
         panic("Invalid device tree blob at physical address %#lx.\n"
               "The DTB must be 8-byte aligned and must not exceed 2 MB in 
size.\n\n"
-              "Please check your bootloader.",
+              "Please check your bootloader.\n",
               fdt_paddr);
 
     fdt_size = boot_fdt_info(device_tree_flattened, fdt_paddr);
@@ -851,10 +851,10 @@ void __init start_xen(unsigned long boot_phys_offset,
 
     dom0 = domain_create(0, &dom0_cfg, true);
     if ( IS_ERR(dom0) || (alloc_dom0_vcpu0(dom0) == NULL) )
-            panic("Error creating domain 0");
+        panic("Error creating domain 0\n");
 
     if ( construct_dom0(dom0) != 0)
-            panic("Could not set up DOM0 guest OS");
+        panic("Could not set up DOM0 guest OS\n");
 
     heap_init_late();
 
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index cf3a4ce..25cd445 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -82,7 +82,7 @@ static void setup_cpu_sibling_map(int cpu)
 {
     if ( !zalloc_cpumask_var(&per_cpu(cpu_sibling_mask, cpu)) ||
          !zalloc_cpumask_var(&per_cpu(cpu_core_mask, cpu)) )
-        panic("No memory for CPU sibling/core maps");
+        panic("No memory for CPU sibling/core maps\n");
 
     /* A CPU is a sibling with itself and is always on its own core. */
     cpumask_set_cpu(cpu, per_cpu(cpu_sibling_mask, cpu));
diff --git a/xen/arch/arm/time.c b/xen/arch/arm/time.c
index 1635c88..bbccee7 100644
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -122,7 +122,7 @@ static void __init preinit_dt_xen_time(void)
 
     timer = dt_find_matching_node(NULL, timer_ids);
     if ( !timer )
-        panic("Unable to find a compatible timer in the device tree");
+        panic("Unable to find a compatible timer in the device tree\n");
 
     dt_device_set_used_by(timer, DOMID_XEN);
 
@@ -149,7 +149,7 @@ void __init preinit_xen_time(void)
 
     res = platform_init_time();
     if ( res )
-        panic("Timer: Cannot initialize platform timer");
+        panic("Timer: Cannot initialize platform timer\n");
 
     boot_count = READ_SYSREG64(CNTPCT_EL0);
 }
@@ -165,7 +165,7 @@ static void __init init_dt_xen_time(void)
         res = platform_get_irq(timer, i);
 
         if ( res < 0 )
-            panic("Timer: Unable to retrieve IRQ %u from the device tree", i);
+            panic("Timer: Unable to retrieve IRQ %u from the device tree\n", 
i);
         timer_irq[i] = res;
     }
 }
@@ -178,7 +178,7 @@ int __init init_xen_time(void)
 
     /* Check that this CPU supports the Generic Timer interface */
     if ( !cpu_has_gentimer )
-        panic("CPU does not support the Generic Timer v1 interface");
+        panic("CPU does not support the Generic Timer v1 interface\n");
 
     printk("Generic Timer IRQ: phys=%u hyp=%u virt=%u Freq: %lu KHz\n",
            timer_irq[TIMER_PHYS_NONSECURE_PPI],
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 9ae64ae..0f4b1f2 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -399,7 +399,7 @@ void panic_PAR(uint64_t par)
            second_in_first ? " during second stage lookup" : "",
            fsc_level_str(level));
 
-    panic("Error during Hypervisor-to-physical address translation");
+    panic("Error during Hypervisor-to-physical address translation\n");
 }
 
 static void cpsr_switch_mode(struct cpu_user_regs *regs, int mode)
@@ -1312,7 +1312,7 @@ int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc)
             return 0;
 
         show_execution_state(regs);
-        panic("Xen BUG at %s%s:%d", prefix, filename, lineno);
+        panic("Xen BUG at %s%s:%d\n", prefix, filename, lineno);
 
     case BUGFRAME_assert:
         /* ASSERT: decode the predicate string pointer. */
@@ -1325,7 +1325,7 @@ int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc)
         if ( debugger_trap_fatal(TRAP_invalid_op, regs) )
             return 0;
         show_execution_state(regs);
-        panic("Assertion '%s' failed at %s%s:%d",
+        panic("Assertion '%s' failed at %s%s:%d\n",
               predicate, prefix, filename, lineno);
     }
 
@@ -1446,7 +1446,7 @@ static void do_debug_trap(struct cpu_user_regs *regs, 
unsigned int code)
         show_execution_state(regs);
         break;
     default:
-        panic("DOM%d: Unhandled debug trap %#x", domid, code);
+        panic("DOM%d: Unhandled debug trap %#x\n", domid, code);
         break;
     }
 }
diff --git a/xen/arch/arm/vgic/vgic.c b/xen/arch/arm/vgic/vgic.c
index 832632a..cc5ab67 100644
--- a/xen/arch/arm/vgic/vgic.c
+++ b/xen/arch/arm/vgic/vgic.c
@@ -981,7 +981,7 @@ void vgic_v3_setup_hw(paddr_t dbase,
                       const struct rdist_region *regions,
                       unsigned int intid_bits)
 {
-    panic("New VGIC implementation does not yet support GICv3.");
+    panic("New VGIC implementation does not yet support GICv3\n");
 }
 #endif
 
diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index a704c7c..93e967f 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -256,7 +256,7 @@ static int enter_state(u32 state)
     microcode_resume_cpu(0);
 
     if ( !recheck_cpu_features(0) )
-        panic("Missing previously available feature(s).");
+        panic("Missing previously available feature(s)\n");
 
     /* Re-enabled default NMI/#MC use of MSR_SPEC_CTRL. */
     ci->spec_ctrl_flags |= (default_spec_ctrl_flags & SCF_ist_wrmsr);
diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c
index aec4d8d..b8c819a 100644
--- a/xen/arch/x86/alternative.c
+++ b/xen/arch/x86/alternative.c
@@ -325,7 +325,7 @@ void __init alternative_instructions(void)
         mdelay(1);
 
     if ( !ACCESS_ONCE(alt_done) )
-        panic("Timed out waiting for alternatives self-NMI to hit");
+        panic("Timed out waiting for alternatives self-NMI to hit\n");
 
     set_nmi_callback(saved_nmi_callback);
 }
diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index ffa5a69..88ada9d 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -902,8 +902,7 @@ void __init x2apic_bsp_setup(void)
             printk("Not enabling x2APIC: depends on iommu_supports_eim.\n");
             return;
         }
-        panic("x2APIC: already enabled by BIOS, but "
-              "iommu_supports_eim failed");
+        panic("x2APIC: already enabled by BIOS, but iommu_supports_eim 
failed\n");
     }
 
     if ( (ioapic_entries = alloc_ioapic_entries()) == NULL )
@@ -935,7 +934,7 @@ void __init x2apic_bsp_setup(void)
     default:
         if ( x2apic_enabled )
             panic("Interrupt remapping could not be enabled while "
-                  "x2APIC is already enabled by BIOS");
+                  "x2APIC is already enabled by BIOS\n");
 
         printk(XENLOG_ERR
                "Failed to enable Interrupt Remapping: Will not enable 
x2APIC.\n");
diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c
index 32273d9..1eec631 100644
--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -1660,7 +1660,7 @@ void mc_panic(char *s)
            "   The processor has reported a hardware error which cannot\n"
            "   be recovered from.  Xen will now reboot the machine.\n");
     mc_panic_dump();
-    panic("HARDWARE ERROR");
+    panic("HARDWARE ERROR\n");
 }
 
 /*
@@ -1756,7 +1756,7 @@ static int mce_delayed_action(mctelem_cookie_t mctc)
         dprintk(XENLOG_ERR, "MCE delayed action failed\n");
         is_mc_panic = true;
         x86_mcinfo_dump(mctelem_dataptr(mctc));
-        panic("MCE: Software recovery failed for the UCR");
+        panic("MCE: Software recovery failed for the UCR\n");
         break;
 
     case MCER_RECOVERED:
diff --git a/xen/arch/x86/guest/xen.c b/xen/arch/x86/guest/xen.c
index 2a5554a..cd4acbf 100644
--- a/xen/arch/x86/guest/xen.c
+++ b/xen/arch/x86/guest/xen.c
@@ -99,12 +99,12 @@ static void map_shared_info(void)
     unsigned long rc;
 
     if ( hypervisor_alloc_unused_page(&mfn) )
-        panic("unable to reserve shared info memory page");
+        panic("unable to reserve shared info memory page\n");
 
     xatp.gpfn = mfn_x(mfn);
     rc = xen_hypercall_memory_op(XENMEM_add_to_physmap, &xatp);
     if ( rc )
-        panic("failed to map shared_info page: %ld", rc);
+        panic("failed to map shared_info page: %ld\n", rc);
 
     set_fixmap(FIX_XEN_SHARED_INFO, mfn_x(mfn) << PAGE_SHIFT);
 
@@ -168,7 +168,7 @@ static void __init init_memmap(void)
 
     mem = rangeset_new(NULL, "host memory map", 0);
     if ( !mem )
-        panic("failed to allocate PFN usage rangeset");
+        panic("failed to allocate PFN usage rangeset\n");
 
     /*
      * Mark up to the last memory page (or 4GiB) as RAM. This is done because
@@ -178,7 +178,7 @@ static void __init init_memmap(void)
      */
     if ( rangeset_add_range(mem, 0, max_t(unsigned long, max_page - 1,
                                           PFN_DOWN(GB(4) - 1))) )
-        panic("unable to add RAM to in-use PFN rangeset");
+        panic("unable to add RAM to in-use PFN rangeset\n");
 
     for ( i = 0; i < e820.nr_map; i++ )
     {
@@ -186,7 +186,7 @@ static void __init init_memmap(void)
 
         if ( rangeset_add_range(mem, PFN_DOWN(e->addr),
                                 PFN_UP(e->addr + e->size - 1)) )
-            panic("unable to add range [%#lx, %#lx] to in-use PFN rangeset",
+            panic("unable to add range [%#lx, %#lx] to in-use PFN rangeset\n",
                   PFN_DOWN(e->addr), PFN_UP(e->addr + e->size - 1));
     }
 }
@@ -236,7 +236,7 @@ static void init_evtchn(void)
     rc = xen_hypercall_set_evtchn_upcall_vector(this_cpu(vcpu_id),
                                                 evtchn_upcall_vector);
     if ( rc )
-        panic("Unable to set evtchn upcall vector: %d", rc);
+        panic("Unable to set evtchn upcall vector: %d\n", rc);
 
     /* Trick toolstack to think we are enlightened */
     {
@@ -309,7 +309,7 @@ static void __init mark_pfn_as_ram(struct e820map *e820, 
uint64_t pfn)
         if ( !e820_change_range_type(e820, pfn << PAGE_SHIFT,
                                      (pfn << PAGE_SHIFT) + PAGE_SIZE,
                                      E820_RESERVED, E820_RAM) )
-            panic("Unable to add/change memory type of pfn %#lx to RAM", pfn);
+            panic("Unable to add/change memory type of pfn %#lx to RAM\n", 
pfn);
 }
 
 void __init hypervisor_fixup_e820(struct e820map *e820)
@@ -323,7 +323,7 @@ void __init hypervisor_fixup_e820(struct e820map *e820)
 #define MARK_PARAM_RAM(p) ({                    \
     rc = xen_hypercall_hvm_get_param(p, &pfn);  \
     if ( rc )                                   \
-        panic("Unable to get " #p);             \
+        panic("Unable to get " #p "\n");        \
     mark_pfn_as_ram(e820, pfn);                 \
     ASSERT(i < ARRAY_SIZE(reserved_pages));     \
     reserved_pages[i++] = pfn << PAGE_SHIFT;    \
@@ -367,7 +367,7 @@ void hypervisor_resume(void)
      */
     bitmap_zero(vcpu_info_mapped, NR_CPUS);
     if ( map_vcpuinfo() && nr_cpu_ids > XEN_LEGACY_MAX_VCPUS )
-        panic("unable to remap vCPU info and vCPUs > legacy limit");
+        panic("unable to remap vCPU info and vCPUs > legacy limit\n");
 
     /* Setup event channel upcall vector. */
     init_evtchn();
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 5065729..4fe8097 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -319,7 +319,7 @@ static __init void pvh_setup_e820(struct domain *d, 
unsigned long nr_pages)
      */
     d->arch.e820 = xzalloc_array(struct e820entry, e820.nr_map + 1);
     if ( !d->arch.e820 )
-        panic("Unable to allocate memory for Dom0 e820 map");
+        panic("Unable to allocate memory for Dom0 e820 map\n");
     entry_guest = d->arch.e820;
 
     /* Clamp e820 memory map to match the memory assigned to Dom0 */
diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 8511ff0..5adcd54 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -173,7 +173,7 @@ void svm_intr_assist(void)
                 /* Guest already enabled an interrupt window. */
                 return;
             default:
-                panic("%s: nestedsvm_vcpu_interrupt can't handle value %#x",
+                panic("%s: nestedsvm_vcpu_interrupt can't handle value %#x\n",
                     __func__, rc);
             }
         }
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index f959090..daa5e9e 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -123,7 +123,7 @@ static void add_pin_to_irq(unsigned int irq, int apic, int 
pin)
 
     if (entry->pin != -1) {
         if (irq_2_pin_free_entry >= PIN_MAP_SIZE)
-            panic("io_apic.c: whoops");
+            panic("io_apic.c: whoops\n");
         entry->next = irq_2_pin_free_entry;
         entry = irq_2_pin + entry->next;
         irq_2_pin_free_entry = entry->next;
@@ -1425,7 +1425,7 @@ static void __init setup_ioapic_ids_from_mpc(void)
                 if (!physid_isset(i, phys_id_present_map))
                     break;
             if (i >= get_physical_broadcast())
-                panic("Max APIC ID exceeded");
+                panic("Max APIC ID exceeded\n");
             printk(KERN_ERR "... fixing up to %d. (tell your hw vendor)\n",
                    i);
             mp_ioapics[apic].mpc_apicid = i;
@@ -1993,7 +1993,7 @@ static void __init check_timer(void)
     }
     printk(" failed :(.\n");
     panic("IO-APIC + timer doesn't work!  Boot with apic_verbosity=debug "
-          "and send a report.  Then try booting with the 'noapic' option");
+          "and send a report.  Then try booting with the 'noapic' option\n");
 }
 
 /*
@@ -2137,7 +2137,7 @@ int __init io_apic_get_unique_id (int ioapic, int apic_id)
         }
 
         if (i == get_physical_broadcast())
-            panic("Max apic_id exceeded");
+            panic("Max apic_id exceeded\n");
 
         printk(KERN_WARNING "IOAPIC[%d]: apic_id %d already used, "
                "trying %d\n", ioapic, apic_id, i);
diff --git a/xen/arch/x86/mm/mm-locks.h b/xen/arch/x86/mm/mm-locks.h
index e5fceb2..95295b6 100644
--- a/xen/arch/x86/mm/mm-locks.h
+++ b/xen/arch/x86/mm/mm-locks.h
@@ -76,7 +76,7 @@ static inline void _mm_lock(mm_lock_t *l, const char *func, 
int level, int rec)
         l->unlock_level = __get_lock_level();
     }
     else if ( (unlikely(!rec)) )
-        panic("mm lock already held by %s", l->locker_function);
+        panic("mm lock already held by %s\n", l->locker_function);
     __set_lock_level(level);
 }
 
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index f3f6d48..f2b6d6b 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -237,7 +237,7 @@ static void __init MP_ioapic_info (struct mpc_config_ioapic 
*m)
        if (nr_ioapics >= MAX_IO_APICS) {
                printk(KERN_CRIT "Max # of I/O APICs (%d) exceeded (found 
%d).\n",
                        MAX_IO_APICS, nr_ioapics);
-               panic("Recompile kernel with bigger MAX_IO_APICS");
+               panic("Recompile kernel with bigger MAX_IO_APICS\n");
        }
        if (!m->mpc_apicaddr) {
                printk(KERN_ERR "WARNING: bogus zero I/O APIC address"
@@ -257,7 +257,7 @@ static void __init MP_intsrc_info (struct mpc_config_intsrc 
*m)
                        (m->mpc_irqflag >> 2) & 3, m->mpc_srcbus,
                        m->mpc_srcbusirq, m->mpc_dstapic, m->mpc_dstirq);
        if (++mp_irq_entries == MAX_IRQ_SOURCES)
-               panic("Max # of irq sources exceeded");
+               panic("Max # of irq sources exceeded\n");
 }
 
 static void __init MP_lintsrc_info (struct mpc_config_lintsrc *m)
@@ -862,7 +862,7 @@ void __init mp_register_ioapic (
        if (nr_ioapics >= MAX_IO_APICS) {
                printk(KERN_ERR "ERROR: Max # of I/O APICs (%d) exceeded "
                        "(found %d)\n", MAX_IO_APICS, nr_ioapics);
-               panic("Recompile kernel with bigger MAX_IO_APICS");
+               panic("Recompile kernel with bigger MAX_IO_APICS\n");
        }
        if (!address) {
                printk(KERN_ERR "WARNING: Bogus (zero) I/O APIC address"
@@ -961,7 +961,7 @@ void __init mp_override_legacy_irq (
 
        mp_irqs[mp_irq_entries] = intsrc;
        if (++mp_irq_entries == MAX_IRQ_SOURCES)
-               panic("Max # of irq sources exceeded");
+               panic("Max # of irq sources exceeded\n");
 
        return;
 }
@@ -1027,7 +1027,7 @@ void __init mp_config_acpi_legacy_irqs (void)
 
                mp_irqs[mp_irq_entries] = intsrc;
                if (++mp_irq_entries == MAX_IRQ_SOURCES)
-                       panic("Max # of irq sources exceeded");
+                       panic("Max # of irq sources exceeded\n");
        }
 }
 
diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
index a87987d..0498cbd 100644
--- a/xen/arch/x86/numa.c
+++ b/xen/arch/x86/numa.c
@@ -357,7 +357,7 @@ unsigned int __init arch_get_dma_bitsize(void)
              !(node_start_pfn(node) >> (32 - PAGE_SHIFT)) )
             break;
     if ( node >= MAX_NUMNODES )
-        panic("No node with memory below 4Gb");
+        panic("No node with memory below 4Gb\n");
 
     /*
      * Try to not reserve the whole node's memory for DMA, but dividing
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 96ff0ee..976ba8d 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -106,13 +106,13 @@ static __init void setup_pv_physmap(struct domain *d, 
unsigned long pgtbl_pfn,
     l1_pgentry_t *pl1e = NULL;
 
     if ( v_start <= vphysmap_end && vphysmap_start <= v_end )
-        panic("DOM0 P->M table overlaps initial mapping");
+        panic("DOM0 P->M table overlaps initial mapping\n");
 
     while ( vphysmap_start < vphysmap_end )
     {
         if ( d->tot_pages + ((round_pgup(vphysmap_end) - vphysmap_start)
                              >> PAGE_SHIFT) + 3 > nr_pages )
-            panic("Dom0 allocation too small for initial P->M table");
+            panic("Dom0 allocation too small for initial P->M table\n");
 
         if ( pl1e )
         {
@@ -209,7 +209,7 @@ static __init void setup_pv_physmap(struct domain *d, 
unsigned long pgtbl_pfn,
         vphysmap_start &= PAGE_MASK;
     }
     if ( !page )
-        panic("Not enough RAM for DOM0 P->M table");
+        panic("Not enough RAM for DOM0 P->M table\n");
 
     if ( pl1e )
         unmap_domain_page(pl1e);
@@ -406,7 +406,7 @@ int __init dom0_construct_pv(struct domain *d,
         value = (parms.virt_hv_start_low + mask) & ~mask;
         BUG_ON(!is_pv_32bit_domain(d));
         if ( value > __HYPERVISOR_COMPAT_VIRT_START )
-            panic("Domain 0 expects too high a hypervisor start address");
+            panic("Domain 0 expects too high a hypervisor start address\n");
         HYPERVISOR_COMPAT_VIRT_START(d) =
             max_t(unsigned int, m2p_compat_vstart, value);
     }
@@ -488,7 +488,7 @@ int __init dom0_construct_pv(struct domain *d,
         count -= PAGE_ALIGN(initrd_len);
     order = get_order_from_bytes(count);
     if ( (1UL << order) + PFN_UP(initrd_len) > nr_pages )
-        panic("Domain 0 allocation is too small for kernel image");
+        panic("Domain 0 allocation is too small for kernel image\n");
 
     if ( parms.p2m_base != UNSET_ADDR )
     {
@@ -497,7 +497,7 @@ int __init dom0_construct_pv(struct domain *d,
     }
     page = alloc_domheap_pages(d, order, 0);
     if ( page == NULL )
-        panic("Not enough RAM for domain 0 allocation");
+        panic("Not enough RAM for domain 0 allocation\n");
     alloc_spfn = mfn_x(page_to_mfn(page));
     alloc_epfn = alloc_spfn + d->tot_pages;
 
@@ -514,7 +514,7 @@ int __init dom0_construct_pv(struct domain *d,
             order = get_order_from_pages(count);
             page = alloc_domheap_pages(d, order, 0);
             if ( !page )
-                panic("Not enough RAM for domain 0 initrd");
+                panic("Not enough RAM for domain 0 initrd\n");
             for ( count = -count; order--; )
                 if ( count & (1UL << order) )
                 {
@@ -603,7 +603,7 @@ int __init dom0_construct_pv(struct domain *d,
     {
         page = alloc_domheap_page(d, MEMF_no_owner);
         if ( !page )
-            panic("Not enough RAM for domain 0 PML4");
+            panic("Not enough RAM for domain 0 PML4\n");
         page->u.inuse.type_info = PGT_l4_page_table|PGT_validated|1;
         l4start = l4tab = page_to_virt(page);
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l3_page_table;
@@ -825,7 +825,7 @@ int __init dom0_construct_pv(struct domain *d,
     while ( pfn < nr_pages )
     {
         if ( (page = alloc_chunk(d, nr_pages - d->tot_pages)) == NULL )
-            panic("Not enough RAM for DOM0 reservation");
+            panic("Not enough RAM for DOM0 reservation\n");
         while ( pfn < d->tot_pages )
         {
             mfn = mfn_x(page_to_mfn(page));
@@ -904,7 +904,7 @@ int __init dom0_construct_pv(struct domain *d,
     pv_destroy_gdt(v);
 
     if ( test_bit(XENFEAT_supervisor_mode_kernel, parms.f_required) )
-        panic("Dom0 requires supervisor-mode execution");
+        panic("Dom0 requires supervisor-mode execution\n");
 
     rc = dom0_setup_permissions(d);
     BUG_ON(rc != 0);
diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index 1299112..cdc72f7 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -102,7 +102,7 @@ uint64_t pv_shim_mem(uint64_t avail)
     }
 
     if ( total_pages - avail > shim_nrpages )
-        panic("pages used by shim > shim_nrpages (%#lx > %#lx)",
+        panic("pages used by shim > shim_nrpages (%#lx > %#lx)\n",
               total_pages - avail, shim_nrpages);
 
     shim_nrpages -= total_pages - avail;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index dd11815..5cde011 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -817,7 +817,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     /* Check that we have at least one Multiboot module. */
     if ( !(mbi->flags & MBI_MODULES) || (mbi->mods_count == 0) )
-        panic("dom0 kernel not specified. Check bootloader configuration.");
+        panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     if ( pvh_boot )
     {
@@ -908,7 +908,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         e820_raw.nr_map = 2;
     }
     else
-        panic("Bootloader provided no memory information.");
+        panic("Bootloader provided no memory information\n");
 
     /* Sanitise the raw E820 map to produce a final clean version. */
     max_page = raw_max_page = init_e820(memmap_type, &e820_raw);
@@ -955,7 +955,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < mbi->mods_count; i++ )
     {
         if ( mod[i].mod_start & (PAGE_SIZE - 1) )
-            panic("Bootloader didn't honor module alignment request.");
+            panic("Bootloader didn't honor module alignment request\n");
         mod[i].mod_end -= mod[i].mod_start;
         mod[i].mod_start >>= PAGE_SHIFT;
         mod[i].reserved = 0;
@@ -1212,7 +1212,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     }
 
     if ( modules_headroom && !mod->reserved )
-        panic("Not enough memory to relocate the dom0 kernel image.");
+        panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < mbi->mods_count; ++i )
     {
         uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
@@ -1221,7 +1221,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     }
 
     if ( !xen_phys_start )
-        panic("Not enough memory to relocate Xen.");
+        panic("Not enough memory to relocate Xen\n");
 
     /* This needs to remain in sync with xen_in_range(). */
     reserve_e820_ram(&boot_e820, __pa(_stext), __pa(__2M_rwdata_end));
@@ -1680,7 +1680,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
         watchdog_setup();
 
     if ( !tboot_protect_mem_regions() )
-        panic("Could not protect TXT memory regions");
+        panic("Could not protect TXT memory regions\n");
 
     init_guest_cpuid();
     init_guest_msr_policy();
@@ -1698,7 +1698,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     /* Create initial domain 0. */
     dom0 = domain_create(get_initial_domain_id(), &dom0_cfg, !pv_shim);
     if ( IS_ERR(dom0) || (alloc_dom0_vcpu0(dom0) == NULL) )
-        panic("Error creating domain 0");
+        panic("Error creating domain 0\n");
 
     /* Grab the DOM0 command line. */
     cmdline = (char *)(mod[0].string ? __va(mod[0].string) : NULL);
@@ -1761,7 +1761,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
     if ( construct_dom0(dom0, mod, modules_headroom,
                         (initrdidx > 0) && (initrdidx < mbi->mods_count)
                         ? mod + initrdidx : NULL, cmdline) != 0)
-        panic("Could not set up DOM0 guest OS");
+        panic("Could not set up DOM0 guest OS\n");
 
     if ( cpu_has_smap )
     {
diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index e4e12aa..9976da3 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -1107,11 +1107,11 @@ void __init smp_prepare_cpus(void)
     socket_cpumask = xzalloc_array(cpumask_t *, nr_sockets);
     if ( socket_cpumask == NULL ||
          (socket_cpumask[cpu_to_socket(0)] = xzalloc(cpumask_t)) == NULL )
-        panic("No memory for socket CPU siblings map");
+        panic("No memory for socket CPU siblings map\n");
 
     if ( !zalloc_cpumask_var(&per_cpu(cpu_sibling_mask, 0)) ||
          !zalloc_cpumask_var(&per_cpu(cpu_core_mask, 0)) )
-        panic("No memory for boot CPU sibling/core maps");
+        panic("No memory for boot CPU sibling/core maps\n");
 
     set_cpu_sibling_map(0);
 
diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c
index d5a5292..7480f8e 100644
--- a/xen/arch/x86/tboot.c
+++ b/xen/arch/x86/tboot.c
@@ -538,7 +538,7 @@ void tboot_s3_error(int error)
 
     printk("MAC for %s before S3 is: 0x%08"PRIx64"\n", what, orig_mac);
     printk("MAC for %s after S3 is: 0x%08"PRIx64"\n", what, resume_mac);
-    panic("Memory integrity was lost on resume (%d)", error);
+    panic("Memory integrity was lost on resume (%d)\n", error);
 }
 
 int tboot_wake_ap(int apicid, unsigned long sipi_vec)
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 69e9aaf..619f32c 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -798,7 +798,7 @@ static u64 __init init_platform_timer(void)
     }
 
     if ( rc <= 0 )
-        panic("Unable to find usable platform timer");
+        panic("Unable to find usable platform timer\n");
 
     printk("Platform timer is %s %s\n",
            freq_string(pts->frequency), pts->name);
@@ -914,7 +914,7 @@ static unsigned long get_cmos_time(void)
         cmos_rtc_probe = false;
     else if ( system_state < SYS_STATE_smp_boot && !cmos_rtc_probe )
         panic("System with no CMOS RTC advertised must be booted from EFI"
-              " (or with command line option \"cmos-rtc-probe\")");
+              " (or with command line option \"cmos-rtc-probe\")\n");
 
     for ( ; ; )
     {
@@ -959,7 +959,7 @@ static unsigned long get_cmos_time(void)
     }
 
     if ( unlikely(cmos_rtc_probe) )
-        panic("No CMOS RTC found - system must be booted from EFI");
+        panic("No CMOS RTC found - system must be booted from EFI\n");
 
     return mktime(rtc.year, rtc.mon, rtc.day, rtc.hour, rtc.min, rtc.sec);
 }
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index d8325a3..7c17806 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -712,7 +712,7 @@ void fatal_trap(const struct cpu_user_regs *regs, bool 
show_remote)
     }
 
     panic("FATAL TRAP: vector = %d (%s)\n"
-          "[error_code=%04x] %s",
+          "[error_code=%04x] %s\n",
           trapnr, trapstr(trapnr), regs->error_code,
           (regs->eflags & X86_EFLAGS_IF) ? "" : ", IN INTERRUPT CONTEXT");
 }
@@ -725,7 +725,7 @@ static void do_reserved_trap(struct cpu_user_regs *regs)
         return;
 
     show_execution_state(regs);
-    panic("FATAL RESERVED TRAP %#x: %s", trapnr, trapstr(trapnr));
+    panic("FATAL RESERVED TRAP %#x: %s\n", trapnr, trapstr(trapnr));
 }
 
 static void do_trap(struct cpu_user_regs *regs)
@@ -764,7 +764,7 @@ static void do_trap(struct cpu_user_regs *regs)
 
     show_execution_state(regs);
     panic("FATAL TRAP: vector = %d (%s)\n"
-          "[error_code=%04x]",
+          "[error_code=%04x]\n",
           trapnr, trapstr(trapnr), regs->error_code);
 }
 
@@ -1047,7 +1047,7 @@ void do_invalid_op(struct cpu_user_regs *regs)
             return;
 
         show_execution_state(regs);
-        panic("Xen BUG at %s%s:%d", prefix, filename, lineno);
+        panic("Xen BUG at %s%s:%d\n", prefix, filename, lineno);
 
     case BUGFRAME_assert:
         /* ASSERT: decode the predicate string pointer. */
@@ -1062,7 +1062,7 @@ void do_invalid_op(struct cpu_user_regs *regs)
             return;
 
         show_execution_state(regs);
-        panic("Assertion '%s' failed at %s%s:%d",
+        panic("Assertion '%s' failed at %s%s:%d\n",
               predicate, prefix, filename, lineno);
     }
 
@@ -1078,7 +1078,7 @@ void do_invalid_op(struct cpu_user_regs *regs)
         return;
 
     show_execution_state(regs);
-    panic("FATAL TRAP: vector = %d (invalid opcode)", TRAP_invalid_op);
+    panic("FATAL TRAP: vector = %d (invalid opcode)\n", TRAP_invalid_op);
 }
 
 void do_int3(struct cpu_user_regs *regs)
@@ -1439,7 +1439,7 @@ void do_page_fault(struct cpu_user_regs *regs)
         show_page_walk(addr);
         panic("FATAL PAGE FAULT\n"
               "[error_code=%04x]\n"
-              "Faulting linear address: %p",
+              "Faulting linear address: %p\n",
               error_code, _p(addr));
     }
 
@@ -1577,7 +1577,7 @@ void do_general_protection(struct cpu_user_regs *regs)
         return;
 
     show_execution_state(regs);
-    panic("GENERAL PROTECTION FAULT\n[error_code=%04x]", regs->error_code);
+    panic("GENERAL PROTECTION FAULT\n[error_code=%04x]\n", regs->error_code);
 }
 
 static void pci_serr_softirq(void)
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 989a534..606508c 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -684,7 +684,7 @@ void __init paging_init(void)
     return;
 
  nomem:
-    panic("Not enough memory for m2p table");
+    panic("Not enough memory for m2p table\n");
 }
 
 void __init zap_low_mappings(void)
diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c
index 606b1b0..c855752 100644
--- a/xen/arch/x86/x86_64/traps.c
+++ b/xen/arch/x86/x86_64/traps.c
@@ -264,7 +264,7 @@ void do_double_fault(struct cpu_user_regs *regs)
     show_code(regs);
     show_stack_overflow(cpu, regs);
 
-    panic("DOUBLE FAULT -- system shutdown");
+    panic("DOUBLE FAULT -- system shutdown\n");
 }
 
 static unsigned int write_stub_trampoline(
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 171d25e..e903050 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -328,7 +328,7 @@ struct domain *domain_create(domid_t domid,
         if ( domid == 0 || domid == hardware_domid )
         {
             if ( hardware_domid < 0 || hardware_domid >= DOMID_FIRST_RESERVED )
-                panic("The value of hardware_dom must be a valid domain ID");
+                panic("The value of hardware_dom must be a valid domain ID\n");
             d->is_pinned = opt_dom0_vcpus_pin;
             d->disable_migrate = 1;
             old_hwdom = hardware_domain;
diff --git a/xen/common/gunzip.c b/xen/common/gunzip.c
index 41d71ef..db4efcd 100644
--- a/xen/common/gunzip.c
+++ b/xen/common/gunzip.c
@@ -57,7 +57,7 @@ static void flush_window(void);
 
 static __init void error(char *x)
 {
-    panic("%s", x);
+    panic("%s\n", x);
 }
 
 static __init int fill_inbuf(void)
diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 05281d6..e35bafb 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -1799,7 +1799,7 @@ void __init scheduler_init(void)
 
     printk("Using scheduler: %s (%s)\n", ops.name, ops.opt_name);
     if ( SCHED_OP(&ops, init) )
-        panic("scheduler returned error on init");
+        panic("scheduler returned error on init\n");
 
     if ( sched_ratelimit_us &&
          (sched_ratelimit_us > XEN_SYSCTL_SCHED_RATELIMIT_MAX
diff --git a/xen/common/ubsan/ubsan.c b/xen/common/ubsan/ubsan.c
index fddd6be..50a4e14 100644
--- a/xen/common/ubsan/ubsan.c
+++ b/xen/common/ubsan/ubsan.c
@@ -478,7 +478,7 @@ __ubsan_handle_builtin_unreachable(struct unreachable_data 
*data)
        ubsan_prologue(&data->location, &flags);
        pr_err("calling __builtin_unreachable()\n");
        ubsan_epilogue(&flags);
-       panic("can't return from __builtin_unreachable()");
+       panic("can't return from __builtin_unreachable()\n");
 }
 EXPORT_SYMBOL(__ubsan_handle_builtin_unreachable);
 
diff --git a/xen/common/warning.c b/xen/common/warning.c
index 8bdd299..0269c67 100644
--- a/xen/common/warning.c
+++ b/xen/common/warning.c
@@ -11,7 +11,7 @@ static const char *__initdata warnings[WARNING_ARRAY_SIZE];
 void __init warning_add(const char *warning)
 {
     if ( nr_warnings >= WARNING_ARRAY_SIZE )
-        panic("Too many pieces of warning text.");
+        panic("Too many pieces of warning text\n");
 
     warnings[nr_warnings] = warning;
     nr_warnings++;
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index a911958..e48039d 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -1254,7 +1254,7 @@ void panic(const char *fmt, ...)
     console_start_sync();
     printk("\n****************************************\n");
     printk("Panic on CPU %d:\n", smp_processor_id());
-    printk("%s\n", buf);
+    printk("%s", buf);
     printk("****************************************\n\n");
     if ( opt_noreboot )
         printk("Manual reset required ('noreboot' specified)\n");
diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 70d218f..e917901 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -159,8 +159,7 @@ static void __hwdom_init check_hwdom_reqs(struct domain *d)
     arch_iommu_check_autotranslated_hwdom(d);
 
     if ( iommu_passthrough )
-        panic("Dom0 uses paging translated mode, dom0-passthrough must not be "
-              "enabled\n");
+        panic("Dom0 uses paging translated mode, dom0-passthrough must not be 
enabled\n");
 
     iommu_dom0_strict = 1;
 }
@@ -384,7 +383,7 @@ int __init iommu_setup(void)
 
     if ( (force_iommu && !iommu_enabled) ||
          (force_intremap && !iommu_intremap) )
-        panic("Couldn't enable %s and iommu=required/force",
+        panic("Couldn't enable %s and iommu=required/force\n",
               !iommu_enabled ? "IOMMU" : "Interrupt Remapping");
 
     if ( !iommu_intremap )
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index d1adffa..b3f75c6 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -130,7 +130,7 @@ void __init pci_segments_init(void)
 {
     radix_tree_init(&pci_segments);
     if ( !alloc_pseg(0) )
-        panic("Could not initialize PCI segment 0");
+        panic("Could not initialize PCI segment 0\n");
 }
 
 int __init pci_add_segment(u16 seg)
diff --git a/xen/drivers/passthrough/vtd/dmar.h 
b/xen/drivers/passthrough/vtd/dmar.h
index 8f1b18e..95bb132 100644
--- a/xen/drivers/passthrough/vtd/dmar.h
+++ b/xen/drivers/passthrough/vtd/dmar.h
@@ -119,7 +119,7 @@ do {                                                \
             if ( !kexecing )                                    \
             {                                                   \
                 dump_execution_state();                         \
-                panic("DMAR hardware malfunction");             \
+                panic("DMAR hardware malfunction\n");           \
             }                                                   \
             break;                                              \
         }                                                       \
diff --git a/xen/drivers/passthrough/vtd/iommu.c 
b/xen/drivers/passthrough/vtd/iommu.c
index 1710256..8d768a4 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -759,7 +759,7 @@ static void iommu_enable_translation(struct acpi_drhd_unit 
*drhd)
         if ( !is_igd_vt_enabled_quirk() )
         {
             if ( force_iommu )
-                panic("BIOS did not enable IGD for VT properly, crash Xen for 
security purpose");
+                panic("BIOS did not enable IGD for VT properly, crash Xen for 
security purpose\n");
 
             printk(XENLOG_WARNING VTDPREFIX
                    "BIOS did not enable IGD for VT properly.  Disabling IGD 
VT-d engine.\n");
@@ -2571,7 +2571,7 @@ static void vtd_resume(void)
         return;
 
     if ( init_vtd_hw() != 0  && force_iommu )
-         panic("IOMMU setup failed, crash Xen for security purpose");
+         panic("IOMMU setup failed, crash Xen for security purpose\n");
 
     for_each_drhd_unit ( drhd )
     {
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index a4fbe62..87bee96 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -1878,13 +1878,13 @@ void __init flask_init(const void *policy_buffer, 
size_t policy_size)
     avc_init();
 
     if ( register_xsm(&flask_ops) )
-        panic("Flask: Unable to register with XSM");
+        panic("Flask: Unable to register with XSM\n");
 
     if ( policy_size && flask_bootparam != FLASK_BOOTPARAM_LATELOAD )
         ret = security_load_policy(policy_buffer, policy_size);
 
     if ( ret && flask_bootparam == FLASK_BOOTPARAM_ENFORCING )
-        panic("Unable to load FLASK policy");
+        panic("Unable to load FLASK policy\n");
 
     if ( ret )
         printk(XENLOG_INFO "Flask:  Access controls disabled until policy is 
loaded.\n");
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.