From ca7b25e3ab8a49e46484bd436fedf72940f02887 Mon Sep 17 00:00:00 2001 From: aliguori Date: Wed, 17 Dec 2008 21:35:49 +0000 Subject: [PATCH] Update to the latest Bochs BIOS Update the PC BIOS to the latest version, split out the patches into patch series, and update the README to point to the new location of the Bochs BIOS source tree. Also update the gitignore to allow the patch queue directory to be used. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6077 c046a42c-6fe2-441c-8c8c-71466251a162 --- .gitignore | 1 + pc-bios/README | 6 +- pc-bios/bios-pq/0001_bx-qemu.patch | 11 +++ .../0002_e820-high-mem.patch} | 64 +++++++----------- pc-bios/bios-pq/0003_smp-startup-poll.patch | 21 ++++++ pc-bios/bios-pq/0004_no-stack-protector.patch | 21 ++++++ pc-bios/bios-pq/HEAD | 1 + pc-bios/bios-pq/series | 4 ++ pc-bios/bios.bin | Bin 131072 -> 131072 bytes 9 files changed, 87 insertions(+), 42 deletions(-) create mode 100644 pc-bios/bios-pq/0001_bx-qemu.patch rename pc-bios/{bios.diff => bios-pq/0002_e820-high-mem.patch} (78%) create mode 100644 pc-bios/bios-pq/0003_smp-startup-poll.patch create mode 100644 pc-bios/bios-pq/0004_no-stack-protector.patch create mode 100644 pc-bios/bios-pq/HEAD create mode 100644 pc-bios/bios-pq/series diff --git a/.gitignore b/.gitignore index 0f4af35a1c0..fffd440d2ca 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ qemu-nbd.pod *.d .pc patches +pc-bios/bios-pq/status diff --git a/pc-bios/README b/pc-bios/README index ac8fc472639..bacf6c38b23 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -1,5 +1,7 @@ -- The PC BIOS comes from the Bochs project - (http://bochs.sourceforge.net/). A patch from bios.diff was applied. +- The PC BIOS comes from the Bochs project (http://bochs.sourceforge.net/). + The patches in bios-pq have been applied. The binary is based on the revision + in bios-pq/HEAD with the patches in bios-pq/series applied. The git repo + that HEAD refers to is located at http://repo.or.cz/w/bochs-mirror.git - The VGA BIOS and the Cirrus VGA BIOS come from the LGPL VGA bios project (http://www.nongnu.org/vgabios/). diff --git a/pc-bios/bios-pq/0001_bx-qemu.patch b/pc-bios/bios-pq/0001_bx-qemu.patch new file mode 100644 index 00000000000..ffca6b9ae55 --- /dev/null +++ b/pc-bios/bios-pq/0001_bx-qemu.patch @@ -0,0 +1,11 @@ +--- bochs-2.3.7.orig/bios/rombios.h ++++ bochs-2.3.7/bios/rombios.h +@@ -19,7 +19,7 @@ + // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + /* define it to include QEMU specific code */ +-//#define BX_QEMU ++#define BX_QEMU + + #ifndef LEGACY + # define BX_ROMBIOS32 1 diff --git a/pc-bios/bios.diff b/pc-bios/bios-pq/0002_e820-high-mem.patch similarity index 78% rename from pc-bios/bios.diff rename to pc-bios/bios-pq/0002_e820-high-mem.patch index da510db803f..2886e856696 100644 --- a/pc-bios/bios.diff +++ b/pc-bios/bios-pq/0002_e820-high-mem.patch @@ -1,17 +1,16 @@ ---- bochs-2.3.7.orig/bios/rombios.h -+++ bochs-2.3.7/bios/rombios.h -@@ -19,7 +19,7 @@ - // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - /* define it to include QEMU specific code */ --//#define BX_QEMU -+#define BX_QEMU - - #ifndef LEGACY - # define BX_ROMBIOS32 1 ---- bochs-2.3.7.orig/bios/rombios.c -+++ bochs-2.3.7/bios/rombios.c -@@ -4404,22 +4404,25 @@ +From: Izik Eidus + +add support to memory above the pci hole + +the new memory region is mapped after address 0x100000000, +the bios take the size of the memory after the 0x100000000 from +three new cmos bytes. + +diff --git a/bios/rombios.c b/bios/rombios.c +index 1be0816..b70f249 100644 +--- a/bios/rombios.c ++++ b/bios/rombios.c +@@ -4442,22 +4442,25 @@ BX_DEBUG_INT15("case default:\n"); #endif // BX_USE_PS2_MOUSE @@ -40,7 +39,7 @@ write_word(ES, DI+14, 0x0000); write_word(ES, DI+16, type); -@@ -4432,7 +4435,9 @@ +@@ -4470,7 +4473,9 @@ int15_function32(regs, ES, DS, FLAGS) Bit16u ES, DS, FLAGS; { Bit32u extended_memory_size=0; // 64bits long @@ -50,7 +49,7 @@ BX_DEBUG_INT15("int15 AX=%04x\n",regs.u.r16.ax); -@@ -4506,11 +4511,18 @@ +@@ -4544,11 +4549,18 @@ ASM_END extended_memory_size += (1L * 1024 * 1024); } @@ -65,21 +64,21 @@ { case 0: set_e820_range(ES, regs.u.r16.di, -- 0x0000000L, 0x0009fc00L, 1); -+ 0x0000000L, 0x0009fc00L, 0, 0, 1); +- 0x0000000L, 0x0009f000L, 1); ++ 0x0000000L, 0x0009f000L, 0, 0, 1); regs.u.r32.ebx = 1; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; -@@ -4519,7 +4531,7 @@ +@@ -4557,7 +4569,7 @@ ASM_END break; case 1: set_e820_range(ES, regs.u.r16.di, -- 0x0009fc00L, 0x000a0000L, 2); -+ 0x0009fc00L, 0x000a0000L, 0, 0, 2); +- 0x0009f000L, 0x000a0000L, 2); ++ 0x0009f000L, 0x000a0000L, 0, 0, 2); regs.u.r32.ebx = 2; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; -@@ -4528,7 +4540,7 @@ +@@ -4566,7 +4578,7 @@ ASM_END break; case 2: set_e820_range(ES, regs.u.r16.di, @@ -88,7 +87,7 @@ regs.u.r32.ebx = 3; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; -@@ -4539,7 +4551,7 @@ +@@ -4577,7 +4589,7 @@ ASM_END #if BX_ROMBIOS32 set_e820_range(ES, regs.u.r16.di, 0x00100000L, @@ -97,7 +96,7 @@ regs.u.r32.ebx = 4; #else set_e820_range(ES, regs.u.r16.di, -@@ -4555,7 +4567,7 @@ +@@ -4593,7 +4605,7 @@ ASM_END case 4: set_e820_range(ES, regs.u.r16.di, extended_memory_size - ACPI_DATA_SIZE, @@ -106,7 +105,7 @@ regs.u.r32.ebx = 5; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; -@@ -4565,7 +4577,20 @@ +@@ -4603,7 +4615,20 @@ ASM_END case 5: /* 256KB BIOS area at the end of 4 GB */ set_e820_range(ES, regs.u.r16.di, @@ -128,18 +127,3 @@ regs.u.r32.ebx = 0; regs.u.r32.eax = 0x534D4150; regs.u.r32.ecx = 0x14; ---- bochs-2.3.7.orig/bios/rombios32.c -+++ bochs-2.3.7/bios/rombios32.c -@@ -479,7 +479,12 @@ - sipi_vector = AP_BOOT_ADDR >> 12; - writel(APIC_BASE + APIC_ICR_LOW, 0x000C4600 | sipi_vector); - -+#ifndef BX_QEMU - delay_ms(10); -+#else -+ while (cmos_readb(0x5f) + 1 != readw((void *)CPU_COUNT_ADDR)) -+ ; -+#endif - - smp_cpus = readw((void *)CPU_COUNT_ADDR); - } diff --git a/pc-bios/bios-pq/0003_smp-startup-poll.patch b/pc-bios/bios-pq/0003_smp-startup-poll.patch new file mode 100644 index 00000000000..cd1a3ff0347 --- /dev/null +++ b/pc-bios/bios-pq/0003_smp-startup-poll.patch @@ -0,0 +1,21 @@ +From: Avi Kivity + +instead of timing out, wait until all cpus are up + +diff --git a/bios/rombios32.c b/bios/rombios32.c +index ef98a41..05ba40d 100644 +--- a/bios/rombios32.c ++++ b/bios/rombios32.c +@@ -512,7 +512,12 @@ void smp_probe(void) + sipi_vector = AP_BOOT_ADDR >> 12; + writel(APIC_BASE + APIC_ICR_LOW, 0x000C4600 | sipi_vector); + ++#ifndef BX_QEMU + delay_ms(10); ++#else ++ while (cmos_readb(0x5f) + 1 != readw(&smp_cpus)) ++ ; ++#endif + } + BX_INFO("Found %d cpu(s)\n", readw(&smp_cpus)); + } diff --git a/pc-bios/bios-pq/0004_no-stack-protector.patch b/pc-bios/bios-pq/0004_no-stack-protector.patch new file mode 100644 index 00000000000..a5f7bbc15c6 --- /dev/null +++ b/pc-bios/bios-pq/0004_no-stack-protector.patch @@ -0,0 +1,21 @@ +Disable stack protector for BIOS + +Some distro GCCs (like Ubuntu) enable stack protection by default. Since the +BIOS doesn't link against libgcc, this results in undefined references unless +the stack protector is disabled. + +Signed-off-by: Anthony Liguori + +diff --git a/bios/Makefile.in b/bios/Makefile.in +index af674b4..5c7bd4f 100644 +--- a/bios/Makefile.in ++++ b/bios/Makefile.in +@@ -41,7 +41,7 @@ RANLIB = @RANLIB@ + + BCC = bcc + GCC = gcc +-GCC32 = gcc -m32 ++GCC32 = gcc -m32 -fno-stack-protector + AS86 = as86 + + BX_INCDIRS = -I.. -I$(srcdir)/.. -I../iodev -I$(srcdir)/../iodev diff --git a/pc-bios/bios-pq/HEAD b/pc-bios/bios-pq/HEAD new file mode 100644 index 00000000000..251c985209c --- /dev/null +++ b/pc-bios/bios-pq/HEAD @@ -0,0 +1 @@ +8d4e158f0ea5fa00fa0276f487ff21609fbb0894 diff --git a/pc-bios/bios-pq/series b/pc-bios/bios-pq/series new file mode 100644 index 00000000000..96a4f9d8dcd --- /dev/null +++ b/pc-bios/bios-pq/series @@ -0,0 +1,4 @@ +0001_bx-qemu.patch +0002_e820-high-mem.patch +0003_smp-startup-poll.patch +0004_no-stack-protector.patch diff --git a/pc-bios/bios.bin b/pc-bios/bios.bin index 715aed365a305ffc417295148b647564463997b1..4aa218b28ccc6e4202026fb4872882361ddb67b1 100644 GIT binary patch delta 27736 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 delta 26150 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 -- 2.39.5