diff -u --recursive ../../clean/linux-4.14.62/arch/x86/boot/compressed/eboot.c linux-4.14.62/arch/x86/boot/compressed/eboot.c
--- ../../clean/linux-4.14.62/arch/x86/boot/compressed/eboot.c	2018-08-09 06:16:40.000000000 -0400
+++ linux-4.14.62/arch/x86/boot/compressed/eboot.c	2018-08-09 10:13:11.801000000 -0400
@@ -390,8 +390,8 @@
	int options_size = 0;
	efi_status_t status;
	char *cmdline_ptr;
-	unsigned long ramdisk_addr;
-	unsigned long ramdisk_size;
+	unsigned long ramdisk_addr = 0;
+	unsigned long ramdisk_size = 0;
 
 	efi_early = c;
 	sys_table = (efi_system_table_t *)(unsigned long)efi_early->table;
@@ -447,9 +447,6 @@
 	/* Fill in upper bits of command line address, NOP on 32 bit  */
 	boot_params->ext_cmd_line_ptr = (u64)(unsigned long)cmdline_ptr >> 32;
 
-	hdr->ramdisk_image = 0;
-	hdr->ramdisk_size = 0;
-
 	/* Clear APM BIOS info */
 	memset(bi, 0, sizeof(*bi));
 
@@ -476,10 +473,16 @@
 
 	if (status != EFI_SUCCESS)
 		goto fail2;
-	hdr->ramdisk_image = ramdisk_addr & 0xffffffff;
-	hdr->ramdisk_size  = ramdisk_size & 0xffffffff;
-	boot_params->ext_ramdisk_image = (u64)ramdisk_addr >> 32;
-	boot_params->ext_ramdisk_size  = (u64)ramdisk_size >> 32;
+
+	// don't overwrite the bzImage or loader provided ramdisk pointer
+	// unless the kernel command line specified a different one.
+	if (ramdisk_addr != 0)
+	{
+		hdr->ramdisk_image = ramdisk_addr & 0xffffffff;
+		hdr->ramdisk_size  = ramdisk_size & 0xffffffff;
+		boot_params->ext_ramdisk_image = (u64)ramdisk_addr >> 32;
+		boot_params->ext_ramdisk_size  = (u64)ramdisk_size >> 32;
+	}
 
 	return boot_params;
 fail2:
--- clean/linux-4.14.62/arch/x86/boot/compressed/early_serial_console.c	2018-08-09 12:16:40.000000000 +0200
+++ linux-4.14.62/arch/x86/boot/compressed/early_serial_console.c	2018-09-28 11:59:36.824015244 +0200
@@ -1,5 +1,5 @@
 #include "misc.h"
 
-int early_serial_base;
+int early_serial_base = 0x3f8;
 
 #include "../early_serial_console.c"