From: Christoph Egger <Christoph.Egger@amd.com>
To: xen-devel@lists.xensource.com
Subject: [PATCH] fix pxe boot
Date: Mon, 11 May 2009 15:27:08 +0200 [thread overview]
Message-ID: <200905111527.08993.Christoph.Egger@amd.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 415 bytes --]
Hi,
Attached patch unbreaks PXE boot.
It effectively backs out c/s 19146.
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
--
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Thomas M. McCoy, Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
[-- Attachment #2: xen_fixpxe.diff --]
[-- Type: text/x-diff, Size: 5355 bytes --]
diff -r 2656ab6fa828 xen/arch/x86/Makefile
--- a/xen/arch/x86/Makefile Fri May 08 11:50:12 2009 +0100
+++ b/xen/arch/x86/Makefile Mon May 11 15:22:09 2009 +0200
@@ -92,4 +92,3 @@ boot/mkelf32: boot/mkelf32.c
clean::
rm -f asm-offsets.s xen.lds boot/*.o boot/*~ boot/core boot/mkelf32
rm -f $(BASEDIR)/.xen-syms.[0-9]* boot/.*.d
- rm -f boot/reloc.S boot/reloc.lnk boot/reloc.bin
diff -r 2656ab6fa828 xen/arch/x86/boot/Makefile
--- a/xen/arch/x86/boot/Makefile Fri May 08 11:50:12 2009 +0100
+++ b/xen/arch/x86/boot/Makefile Mon May 11 15:22:09 2009 +0200
@@ -1,7 +1,1 @@
obj-y += head.o
-
-head.o: reloc.S
-
-# NB. BOOT_TRAMPOLINE == 0x8c000
-%.S: %.c
- RELOC=0x8c000 $(MAKE) -f build32.mk $@
diff -r 2656ab6fa828 xen/arch/x86/boot/build32.mk
--- a/xen/arch/x86/boot/build32.mk Fri May 08 11:50:12 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-XEN_ROOT=../../../..
-override XEN_TARGET_ARCH=x86_32
-CFLAGS =
-include $(XEN_ROOT)/Config.mk
-
-# Disable PIE/SSP if GCC supports them. They can break us.
-$(call cc-option-add,CFLAGS,CC,-nopie)
-$(call cc-option-add,CFLAGS,CC,-fno-stack-protector)
-$(call cc-option-add,CFLAGS,CC,-fno-stack-protector-all)
-
-CFLAGS += -Werror -fno-builtin -msoft-float
-
-# NB. awk invocation is a portable alternative to 'head -n -1'
-%.S: %.bin
- (od -v -t x $< | awk 'NR > 1 {print s} {s=$$0}' | \
- sed 's/ /,0x/g' | sed 's/^[0-9]*,/ .long /') >$@
-
-%.bin: %.lnk
- $(OBJCOPY) -O binary $< $@
-
-%.lnk: %.o
- $(LD) $(LDFLAGS_DIRECT) -N -Ttext 0x8c000 -o $@ $<
-
-%.o: %.c
- $(CC) $(CFLAGS) -c $< -o $@
diff -r 2656ab6fa828 xen/arch/x86/boot/head.S
--- a/xen/arch/x86/boot/head.S Fri May 08 11:50:12 2009 +0100
+++ b/xen/arch/x86/boot/head.S Mon May 11 15:22:09 2009 +0200
@@ -79,11 +79,8 @@ __start:
cmp $0x2BADB002,%eax
jne not_multiboot
- /* Save the Multiboot info struct (after relocation) for later use. */
- mov $sym_phys(cpu0_stack)+1024,%esp
- push %ebx
- call reloc
- mov %eax,sym_phys(multiboot_ptr)
+ /* Save the Multiboot info structure for later use. */
+ mov %ebx,sym_phys(multiboot_ptr)
/* Initialize BSS (no nasty surprises!) */
mov $sym_phys(__bss_start),%edi
@@ -195,9 +192,6 @@ 2: cmp $L1_PAGETABLE_ENTRIES,%e
#include "cmdline.S"
-reloc:
-#include "reloc.S"
-
.align 16
.globl trampoline_start, trampoline_end
trampoline_start:
diff -r 2656ab6fa828 xen/arch/x86/boot/reloc.c
--- a/xen/arch/x86/boot/reloc.c Fri May 08 11:50:12 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/******************************************************************************
- * reloc.c
- *
- * 32-bit flat memory-map routines for relocating Multiboot structures
- * and modules. This is most easily done early with paging disabled.
- *
- * Copyright (c) 2009, Citrix Systems, Inc.
- *
- * Authors:
- * Keir Fraser <keir.fraser@citrix.com>
- */
-
-asm (
- " .text \n"
- " .globl _start \n"
- "_start: \n"
- " mov $_start,%edi \n"
- " call 1f \n"
- "1: pop %esi \n"
- " sub $1b-_start,%esi \n"
- " mov $__bss_start-_start,%ecx \n"
- " rep movsb \n"
- " xor %eax,%eax \n"
- " mov $_end,%ecx \n"
- " sub %edi,%ecx \n"
- " rep stosb \n"
- " mov $reloc,%eax \n"
- " jmp *%eax \n"
- );
-
-typedef unsigned int u32;
-#include "../../../include/xen/multiboot.h"
-
-extern char _start[];
-
-static void *memcpy(void *dest, const void *src, unsigned int n)
-{
- char *s = (char *)src, *d = dest;
- while ( n-- )
- *d++ = *s++;
- return dest;
-}
-
-static void *reloc_mbi_struct(void *old, unsigned int bytes)
-{
- static void *alloc = &_start;
- alloc = (void *)(((unsigned long)alloc - bytes) & ~15ul);
- return memcpy(alloc, old, bytes);
-}
-
-static char *reloc_mbi_string(char *old)
-{
- char *p;
- for ( p = old; *p != '\0'; p++ )
- continue;
- return reloc_mbi_struct(old, p - old + 1);
-}
-
-multiboot_info_t *reloc(multiboot_info_t *mbi_old)
-{
- multiboot_info_t *mbi = reloc_mbi_struct(mbi_old, sizeof(*mbi));
- int i;
-
- if ( mbi->flags & MBI_CMDLINE )
- mbi->cmdline = (u32)reloc_mbi_string((char *)mbi->cmdline);
-
- if ( mbi->flags & MBI_MODULES )
- {
- module_t *mods = reloc_mbi_struct(
- (module_t *)mbi->mods_addr, mbi->mods_count * sizeof(module_t));
- mbi->mods_addr = (u32)mods;
- for ( i = 0; i < mbi->mods_count; i++ )
- if ( mods[i].string )
- mods[i].string = (u32)reloc_mbi_string((char *)mods[i].string);
- }
-
- if ( mbi->flags & MBI_MEMMAP )
- mbi->mmap_addr = (u32)reloc_mbi_struct(
- (memory_map_t *)mbi->mmap_addr, mbi->mmap_length);
-
- /* Mask features we don't understand or don't relocate. */
- mbi->flags &= (MBI_MEMLIMITS |
- MBI_DRIVES |
- MBI_CMDLINE |
- MBI_MODULES |
- MBI_MEMMAP);
-
- return mbi;
-}
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
next reply other threads:[~2009-05-11 13:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-11 13:27 Christoph Egger [this message]
2009-05-11 14:36 ` [PATCH] fix pxe boot Keir Fraser
2009-05-11 15:40 ` Christoph Egger
2009-05-11 15:47 ` Keir Fraser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200905111527.08993.Christoph.Egger@amd.com \
--to=christoph.egger@amd.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.