paddr_t start, size;
paddr_t record_size;
paddr_t cur_mfn;
+ int inited;
} ramoops_data = {0};
static void ramoops_check_mapping(void)
early_printk("ramoops: Initialisation.\n");
+ if (dev) {
ret = dt_device_get_address(dev, 0, &addr, &size);
if ( ret )
{
early_printk("ramoops: addr: %#010"PRIx64", size %#010"PRIx64"\n", addr, size);
ramoops_data.start = addr;
ramoops_data.size = size;
+ } else /* !dev */ {
+ ramoops_data.start = 0x41f00000;
+ ramoops_data.size = 0x00100000;
+ }
ramoops_data.va = (char *)FIXMAP_ADDR(FIXMAP_CONSOLE);
/* #ifdef EARLY_PRINTK */
// start on the second record, so early_printk are not erased
/* Register with generic serial driver. */
serial_register_uart(SERHND_DTUART, &ramoops_driver, &ramoops_data);
+ if (dev)
dt_device_set_used_by(dev, DOMID_XEN);
+ ramoops_data.inited = 1;
+
return 0;
}
+int __init console_ramoops_init(void)
+{
+ if (!ramoops_data.inited)
+ return ramoops_init(NULL, NULL);
+ return 1;
+}
static const char const *ramoops_dt_compat[] __initdata =
{