All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Andi Kleen <ak@muc.de>
Cc: Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org, virtualization@lists.osdl.org,
	xen-devel@lists.xensource.com, Chris Wright <chrisw@sous-sol.org>,
	Zachary Amsden <zach@vmware.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Ian Campbell <Ian.Campbell@XenSource.com>
Subject: Re: [patch 16/21] Xen-paravirt: Add code into head.S to handle being booted by Xen
Date: Wed, 14 Feb 2007 10:53:50 -0800	[thread overview]
Message-ID: <45D35ABE.1050504@goop.org> (raw)
In-Reply-To: <20070213235424.GA1908@muc.de>

[-- Attachment #1: Type: text/plain, Size: 2748 bytes --]

Andi Kleen wrote:
>> +#ifdef CONFIG_XEN
>> +#include "../xen/xen-head.S"
>> +#endif
>>     
>
> Can this really not be linked separately? 

I did a patch to do this (attached).  In principle it should be pretty
simple, but I think I'm running into toolchain issues.  If I link
xen-head.S separately (with appropriate headers added), it compiles OK
and contains the right notes, but they don't appear in the final vmlinux
properly.  The note segment and section are there, but no tools will
parse them as notes:

: ezr:pts/1; readelf -n vmlinux 
: ezr:pts/1; ../../unstable/tools/xcutils/readnotes vmlinux 
: ezr:pts/1; readelf -l vmlinux 

Elf file type is EXEC (Executable file)
Entry point 0x2e1f70
There are 3 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x001000 0xc0100000 0x00100000 0x2a8920 0x2a8920 R E 0x1000
  LOAD           0x2aa000 0xc03a9000 0x003a9000 0x5f085 0xaf000 RWE 0x1000
  NOTE           0x26d2910 0x00239010 0x00239010 0x000e8 0x00000 R   0x4

 Section to Segment mapping:
  Segment Sections...
   00     .text .text.head __ex_table .rodata .pci_fixup __ksymtab __ksymtab_gpl __kcrctab __kcrctab_gpl __ksymtab_strings __param __bug_table 
   01     .data .paravirtprobe .data_nosave .data.page_aligned .data.cacheline_aligned .data.read_mostly .data.init_task .init.text .init.data .init.setup .initcall.init .con_initcall.init .altinstructions .altinstr_replacement .parainstructions .exit.text .init.ramfs .bss 
   02     .notes 
: ezr:pts/1; objdump -j .notes -s vmlinux 

vmlinux:     file format elf32-i386

Contents of section .notes:
 239010 04000000 06000000 06000000 58656e00  ............Xen.
 239020 6c696e75 78000000 04000000 04000000  linux...........
 239030 07000000 58656e00 322e3600 04000000  ....Xen.2.6.....
 239040 08000000 05000000 58656e00 78656e2d  ........Xen.xen-
 239050 332e3000 04000000 04000000 03000000  3.0.............
 239060 58656e00 000000c0 04000000 04000000  Xen.............
 239070 01000000 58656e00 c80710c0 04000000  ....Xen.........
 239080 04000000 02000000 58656e00 00b040c0  ........Xen...@.
 239090 04000000 2a000000 0a000000 58656e00  ....*.......Xen.
 2390a0 21777269 7461626c 655f7061 67655f74  !writable_page_t
 2390b0 61626c65 737c7061 655f7067 6469725f  ables|pae_pgdir_
 2390c0 61626f76 655f3467 62000000 04000000  above_4gb.......
 2390d0 04000000 09000000 58656e00 79657300  ........Xen.yes.
 2390e0 04000000 08000000 08000000 58656e00  ............Xen.
 2390f0 67656e65 72696300                    generic.        


I can't see what the problem is here, but it looks like a toolchain
problem to me (I'm using binutils-2.17.50.0.6-2.fc6).

Any clues?

Thanks,
    J

[-- Attachment #2: xen-head.patch --]
[-- Type: text/x-patch, Size: 1322 bytes --]

diff -r 4721c1690d24 arch/i386/kernel/head.S
--- a/arch/i386/kernel/head.S	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/kernel/head.S	Wed Feb 14 04:01:58 2007 -0800
@@ -504,7 +504,7 @@ ignore_int:
 
 .section .text
 #ifdef CONFIG_PARAVIRT
-startup_paravirt:
+ENTRY(startup_paravirt)
 	cld
  	movl $(init_thread_union+THREAD_SIZE),%esp
 
@@ -535,10 +535,6 @@ unhandled_paravirt:
 	ud2
 #endif
 
-#ifdef CONFIG_XEN
-#include "../xen/xen-head.S"
-#endif
-	
 /*
  * Real beginning of normal "text" segment
  */
diff -r 4721c1690d24 arch/i386/xen/Makefile
--- a/arch/i386/xen/Makefile	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/xen/Makefile	Wed Feb 14 04:01:58 2007 -0800
@@ -1,2 +1,2 @@ obj-y		:= enlighten.o setup.o events.o t
-obj-y		:= enlighten.o setup.o events.o time.o \
+obj-y		:= xen-head.o enlighten.o setup.o events.o time.o \
 			features.o mmu.o multicalls.o
diff -r 4721c1690d24 arch/i386/xen/xen-head.S
--- a/arch/i386/xen/xen-head.S	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/xen/xen-head.S	Wed Feb 14 04:01:58 2007 -0800
@@ -1,8 +1,11 @@
 /* Xen-specific pieces of head.S, intended to be included in the right
 	place in head.S */
 
+.text
 #include <linux/elfnote.h>
+#include <linux/linkage.h>
 #include <asm/boot.h>
+#include <asm/page.h>
 #include <xen/interface/elfnote.h>
 
 ENTRY(startup_xen)

WARNING: multiple messages have this Message-ID (diff)
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Andi Kleen <ak@muc.de>
Cc: Andrew Morton <akpm@osdl.org>, Zachary Amsden <zach@vmware.com>,
	xen-devel@lists.xensource.com,
	Ian Campbell <Ian.Campbell@XenSource.com>,
	linux-kernel@vger.kernel.org, Chris Wright <chrisw@sous-sol.org>,
	virtualization@lists.osdl.org,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: [patch 16/21] Xen-paravirt: Add code into head.S to handle being booted by Xen
Date: Wed, 14 Feb 2007 10:53:50 -0800	[thread overview]
Message-ID: <45D35ABE.1050504@goop.org> (raw)
In-Reply-To: <20070213235424.GA1908@muc.de>

[-- Attachment #1: Type: text/plain, Size: 2748 bytes --]

Andi Kleen wrote:
>> +#ifdef CONFIG_XEN
>> +#include "../xen/xen-head.S"
>> +#endif
>>     
>
> Can this really not be linked separately? 

I did a patch to do this (attached).  In principle it should be pretty
simple, but I think I'm running into toolchain issues.  If I link
xen-head.S separately (with appropriate headers added), it compiles OK
and contains the right notes, but they don't appear in the final vmlinux
properly.  The note segment and section are there, but no tools will
parse them as notes:

: ezr:pts/1; readelf -n vmlinux 
: ezr:pts/1; ../../unstable/tools/xcutils/readnotes vmlinux 
: ezr:pts/1; readelf -l vmlinux 

Elf file type is EXEC (Executable file)
Entry point 0x2e1f70
There are 3 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x001000 0xc0100000 0x00100000 0x2a8920 0x2a8920 R E 0x1000
  LOAD           0x2aa000 0xc03a9000 0x003a9000 0x5f085 0xaf000 RWE 0x1000
  NOTE           0x26d2910 0x00239010 0x00239010 0x000e8 0x00000 R   0x4

 Section to Segment mapping:
  Segment Sections...
   00     .text .text.head __ex_table .rodata .pci_fixup __ksymtab __ksymtab_gpl __kcrctab __kcrctab_gpl __ksymtab_strings __param __bug_table 
   01     .data .paravirtprobe .data_nosave .data.page_aligned .data.cacheline_aligned .data.read_mostly .data.init_task .init.text .init.data .init.setup .initcall.init .con_initcall.init .altinstructions .altinstr_replacement .parainstructions .exit.text .init.ramfs .bss 
   02     .notes 
: ezr:pts/1; objdump -j .notes -s vmlinux 

vmlinux:     file format elf32-i386

Contents of section .notes:
 239010 04000000 06000000 06000000 58656e00  ............Xen.
 239020 6c696e75 78000000 04000000 04000000  linux...........
 239030 07000000 58656e00 322e3600 04000000  ....Xen.2.6.....
 239040 08000000 05000000 58656e00 78656e2d  ........Xen.xen-
 239050 332e3000 04000000 04000000 03000000  3.0.............
 239060 58656e00 000000c0 04000000 04000000  Xen.............
 239070 01000000 58656e00 c80710c0 04000000  ....Xen.........
 239080 04000000 02000000 58656e00 00b040c0  ........Xen...@.
 239090 04000000 2a000000 0a000000 58656e00  ....*.......Xen.
 2390a0 21777269 7461626c 655f7061 67655f74  !writable_page_t
 2390b0 61626c65 737c7061 655f7067 6469725f  ables|pae_pgdir_
 2390c0 61626f76 655f3467 62000000 04000000  above_4gb.......
 2390d0 04000000 09000000 58656e00 79657300  ........Xen.yes.
 2390e0 04000000 08000000 08000000 58656e00  ............Xen.
 2390f0 67656e65 72696300                    generic.        


I can't see what the problem is here, but it looks like a toolchain
problem to me (I'm using binutils-2.17.50.0.6-2.fc6).

Any clues?

Thanks,
    J

[-- Attachment #2: xen-head.patch --]
[-- Type: text/x-patch, Size: 1322 bytes --]

diff -r 4721c1690d24 arch/i386/kernel/head.S
--- a/arch/i386/kernel/head.S	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/kernel/head.S	Wed Feb 14 04:01:58 2007 -0800
@@ -504,7 +504,7 @@ ignore_int:
 
 .section .text
 #ifdef CONFIG_PARAVIRT
-startup_paravirt:
+ENTRY(startup_paravirt)
 	cld
  	movl $(init_thread_union+THREAD_SIZE),%esp
 
@@ -535,10 +535,6 @@ unhandled_paravirt:
 	ud2
 #endif
 
-#ifdef CONFIG_XEN
-#include "../xen/xen-head.S"
-#endif
-	
 /*
  * Real beginning of normal "text" segment
  */
diff -r 4721c1690d24 arch/i386/xen/Makefile
--- a/arch/i386/xen/Makefile	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/xen/Makefile	Wed Feb 14 04:01:58 2007 -0800
@@ -1,2 +1,2 @@ obj-y		:= enlighten.o setup.o events.o t
-obj-y		:= enlighten.o setup.o events.o time.o \
+obj-y		:= xen-head.o enlighten.o setup.o events.o time.o \
 			features.o mmu.o multicalls.o
diff -r 4721c1690d24 arch/i386/xen/xen-head.S
--- a/arch/i386/xen/xen-head.S	Wed Feb 14 03:16:30 2007 -0800
+++ b/arch/i386/xen/xen-head.S	Wed Feb 14 04:01:58 2007 -0800
@@ -1,8 +1,11 @@
 /* Xen-specific pieces of head.S, intended to be included in the right
 	place in head.S */
 
+.text
 #include <linux/elfnote.h>
+#include <linux/linkage.h>
 #include <asm/boot.h>
+#include <asm/page.h>
 #include <xen/interface/elfnote.h>
 
 ENTRY(startup_xen)

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

  parent reply	other threads:[~2007-02-14 18:53 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-13 22:17 [patch 00/21] Xen-paravirt: Xen guest implementation for paravirt_ops interface Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 01/21] Xen-paravirt: Fix typo in sync_constant_test_bit()s name Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 02/21] Xen-paravirt: Handle a zero-sized VT console Jeremy Fitzhardinge
2007-02-14  9:24   ` Gerd Hoffmann
2007-02-14  9:24     ` Gerd Hoffmann
2007-02-13 22:17 ` [patch 03/21] Xen-paravirt: Add pagetable accessors to pack and unpack pagetable entries Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 04/21] Xen-paravirt: paravirt_ops: hooks to set up initial pagetable Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 05/21] Xen-paravirt: paravirt_ops: allocate a fixmap slot Jeremy Fitzhardinge
2007-02-14  1:23   ` Dan Hecht
2007-02-14  1:36     ` Jeremy Fitzhardinge
2007-02-14  1:36       ` Jeremy Fitzhardinge
2007-02-14  2:34       ` Dan Hecht
2007-02-14  8:43         ` Gerd Hoffmann
2007-02-14  8:37       ` [Xen-devel] " Jan Beulich
2007-02-14  8:37         ` Jan Beulich
2007-02-14  9:15         ` [Xen-devel] " Andi Kleen
2007-02-14  9:15           ` Andi Kleen
2007-02-13 22:17 ` [patch 06/21] Xen-paravirt: remove ctor for pgd cache Jeremy Fitzhardinge
2007-02-13 22:39   ` Zachary Amsden
2007-02-13 22:17 ` [patch 07/21] Xen-paravirt: Allow paravirt backend to choose kernel PMD sharing Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 08/21] Xen-paravirt: Allow paravirt backend to select PGD allocation alignment Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 09/21] Xen-paravirt: add hooks to intercept mm creation and destruction Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 10/21] Xen-paravirt: Name: dont export paravirt_ops structure, do individual functions Jeremy Fitzhardinge
2007-02-14  1:06   ` Zachary Amsden
2007-02-14  1:06     ` Zachary Amsden
2007-02-14  1:16     ` Jeremy Fitzhardinge
2007-02-14  1:16       ` Jeremy Fitzhardinge
2007-02-14  1:18       ` Zachary Amsden
2007-02-14  1:18         ` Zachary Amsden
2007-02-14  1:37         ` Jeremy Fitzhardinge
2007-02-14  1:37           ` Jeremy Fitzhardinge
2007-02-14  1:43           ` Zachary Amsden
2007-02-14  1:43             ` Zachary Amsden
2007-02-14  1:44             ` Jeremy Fitzhardinge
2007-02-14  1:44               ` Jeremy Fitzhardinge
2007-02-14  5:51     ` Rusty Russell
2007-02-14  5:51       ` Rusty Russell
2007-02-14 19:36     ` Christoph Hellwig
2007-02-13 22:17 ` [patch 11/21] Xen-paravirt: Add apply_to_page_range() which applies a function to a pte range Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 12/21] Xen-paravirt: Allocate and free vmalloc areas Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 13/21] Xen-paravirt: Add nosegneg capability to the vsyscall page notes Jeremy Fitzhardinge
2007-02-13 22:45   ` Zachary Amsden
2007-02-13 22:45     ` Zachary Amsden
2007-02-13 22:49     ` Jeremy Fitzhardinge
2007-02-13 22:49       ` Jeremy Fitzhardinge
2007-02-13 22:54       ` Zachary Amsden
2007-02-13 22:54         ` Zachary Amsden
2007-02-13 23:13         ` Jeremy Fitzhardinge
2007-02-13 23:13           ` Jeremy Fitzhardinge
2007-02-14  5:38     ` [Xen-devel] " Rusty Russell
2007-02-14  5:38       ` Rusty Russell
2007-02-13 22:17 ` [patch 14/21] Xen-paravirt: Add XEN config options and disable unsupported config options Jeremy Fitzhardinge
2007-02-13 22:53   ` Dan Hecht
2007-02-13 22:53     ` Dan Hecht
2007-02-13 23:29     ` Jeremy Fitzhardinge
2007-02-13 23:29       ` Jeremy Fitzhardinge
2007-02-13 23:58       ` [Xen-devel] " Zachary Amsden
2007-02-13 23:58         ` Zachary Amsden
2007-02-13 23:58       ` Dan Hecht
2007-02-13 22:17 ` [patch 15/21] Xen-paravirt: Add Xen interface header files Jeremy Fitzhardinge
2007-02-14 20:45   ` Eric W. Biederman
2007-02-14 20:45     ` Eric W. Biederman
2007-02-15  0:10     ` Jeremy Fitzhardinge
2007-02-15  0:10       ` Jeremy Fitzhardinge
2007-02-15 17:32       ` Christoph Hellwig
2007-02-13 22:17 ` [patch 16/21] Xen-paravirt: Add code into head.S to handle being booted by Xen Jeremy Fitzhardinge
2007-02-13 23:54   ` Andi Kleen
2007-02-14  0:39     ` Jeremy Fitzhardinge
2007-02-14  0:39       ` Jeremy Fitzhardinge
2007-02-14  8:56       ` [Xen-devel] " Jan Beulich
2007-02-14  8:56         ` Jan Beulich
2007-02-14 18:53     ` Jeremy Fitzhardinge [this message]
2007-02-14 18:53       ` Jeremy Fitzhardinge
2007-02-14 20:10       ` Eric W. Biederman
2007-02-14 20:10         ` Eric W. Biederman
2007-02-14 20:41         ` Jeremy Fitzhardinge
2007-02-14 20:41           ` Jeremy Fitzhardinge
2007-02-14 21:06           ` Eric W. Biederman
2007-02-14 21:06             ` Eric W. Biederman
2007-02-15  0:13             ` Jeremy Fitzhardinge
2007-02-15  0:13               ` Jeremy Fitzhardinge
2007-02-15  1:39               ` Eric W. Biederman
2007-02-15  1:39                 ` Eric W. Biederman
2007-02-15  1:52                 ` Jeremy Fitzhardinge
2007-02-15  1:52                   ` Jeremy Fitzhardinge
2007-02-15  2:18                   ` Eric W. Biederman
2007-02-15  2:18                     ` Eric W. Biederman
2007-02-15  2:23                     ` Jeremy Fitzhardinge
2007-02-15  2:23                       ` Jeremy Fitzhardinge
2007-02-15  2:41                       ` Eric W. Biederman
2007-02-15  2:41                         ` Eric W. Biederman
2007-02-14 20:33   ` Eric W. Biederman
2007-02-14 20:33     ` Eric W. Biederman
2007-02-14 20:42     ` Jeremy Fitzhardinge
2007-02-14 20:42       ` Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 17/21] Xen-paravirt: Add the Xen virtual console driver Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 18/21] Xen-paravirt: Add Xen grant table support Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 19/21] Xen-paravirt: Add the Xenbus sysfs and virtual device hotplug driver Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 20/21] Xen-paravirt: Add Xen virtual block device driver Jeremy Fitzhardinge
2007-02-13 22:17 ` [patch 21/21] Xen-paravirt: Add the Xen virtual network " Jeremy Fitzhardinge
2007-02-14 20:40   ` Eric W. Biederman
2007-02-14 20:40     ` Eric W. Biederman

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=45D35ABE.1050504@goop.org \
    --to=jeremy@goop.org \
    --cc=Ian.Campbell@XenSource.com \
    --cc=ak@muc.de \
    --cc=akpm@osdl.org \
    --cc=chrisw@sous-sol.org \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.osdl.org \
    --cc=xen-devel@lists.xensource.com \
    --cc=zach@vmware.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.