Commit a483b654b5663ee506b6ecb1fa4561d5f4a31e4b

Authored by bellard
1 parent 6a78ece5

updated guest kernel patch for qemu-fast (Martin Koniczek)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1170 c046a42c-6fe2-441c-8c8c-71466251a162
linux-2.6-qemu-fast.patch deleted 100644 → 0
1 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/Kconfig .32324-linux-2.6.0.updated/arch/i386/Kconfig  
2 ---- .32324-linux-2.6.0/arch/i386/Kconfig 2003-10-09 18:02:48.000000000 +1000  
3 -+++ .32324-linux-2.6.0.updated/arch/i386/Kconfig 2003-12-26 16:46:49.000000000 +1100  
4 -@@ -307,6 +307,14 @@ config X86_GENERIC  
5 - when it has moderate overhead. This is intended for generic  
6 - distributions kernels.  
7 -  
8 -+config QEMU  
9 -+ bool "Kernel to run under QEMU"  
10 -+ depends on EXPERIMENTAL  
11 -+ help  
12 -+ Select this if you want to boot the kernel inside qemu-fast,  
13 -+ the non-mmu version of the x86 emulator. See  
14 -+ <http://fabrice.bellard.free.fr/qemu/>. Say N.  
15 -+  
16 - #  
17 - # Define implied options from the CPU selection here  
18 - #  
19 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/Makefile .32324-linux-2.6.0.updated/arch/i386/kernel/Makefile  
20 ---- .32324-linux-2.6.0/arch/i386/kernel/Makefile 2003-09-29 10:25:15.000000000 +1000  
21 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/Makefile 2003-12-26 16:46:49.000000000 +1100  
22 -@@ -46,12 +46,14 @@ quiet_cmd_syscall = SYSCALL $@  
23 - cmd_syscall = $(CC) -nostdlib $(SYSCFLAGS_$(@F)) \  
24 - -Wl,-T,$(filter-out FORCE,$^) -o $@  
25 -  
26 -+export AFLAGS_vsyscall.lds.o += -P -C -U$(ARCH)  
27 -+  
28 - vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1  
29 - SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags)  
30 - SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags)  
31 -  
32 - $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \  
33 --$(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE  
34 -+$(obj)/vsyscall-%.so: $(src)/vsyscall.lds.s $(obj)/vsyscall-%.o FORCE  
35 - $(call if_changed,syscall)  
36 -  
37 - # We also create a special relocatable object that should mirror the symbol  
38 -@@ -62,5 +64,5 @@ $(obj)/built-in.o: $(obj)/vsyscall-syms.  
39 - $(obj)/built-in.o: ld_flags += -R $(obj)/vsyscall-syms.o  
40 -  
41 - SYSCFLAGS_vsyscall-syms.o = -r  
42 --$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds $(obj)/vsyscall-sysenter.o FORCE  
43 -+$(obj)/vsyscall-syms.o: $(src)/vsyscall.lds.s $(obj)/vsyscall-sysenter.o FORCE  
44 - $(call if_changed,syscall)  
45 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vmlinux.lds.S .32324-linux-2.6.0.updated/arch/i386/kernel/vmlinux.lds.S  
46 ---- .32324-linux-2.6.0/arch/i386/kernel/vmlinux.lds.S 2003-09-22 10:27:28.000000000 +1000  
47 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vmlinux.lds.S 2003-12-26 16:46:49.000000000 +1100  
48 -@@ -3,6 +3,7 @@  
49 - */  
50 -  
51 - #include <asm-generic/vmlinux.lds.h>  
52 -+#include <asm/page.h>  
53 -  
54 - OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")  
55 - OUTPUT_ARCH(i386)  
56 -@@ -10,7 +11,7 @@ ENTRY(startup_32)  
57 - jiffies = jiffies_64;  
58 - SECTIONS  
59 - {  
60 -- . = 0xC0000000 + 0x100000;  
61 -+ . = __PAGE_OFFSET + 0x100000;  
62 - /* read-only */  
63 - _text = .; /* Text and read-only data */  
64 - .text : {  
65 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds  
66 ---- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds 2003-09-22 10:07:26.000000000 +1000  
67 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds 1970-01-01 10:00:00.000000000 +1000  
68 -@@ -1,67 +0,0 @@  
69 --/*  
70 -- * Linker script for vsyscall DSO. The vsyscall page is an ELF shared  
71 -- * object prelinked to its virtual address, and with only one read-only  
72 -- * segment (that fits in one page). This script controls its layout.  
73 -- */  
74 --  
75 --/* This must match <asm/fixmap.h>. */  
76 --VSYSCALL_BASE = 0xffffe000;  
77 --  
78 --SECTIONS  
79 --{  
80 -- . = VSYSCALL_BASE + SIZEOF_HEADERS;  
81 --  
82 -- .hash : { *(.hash) } :text  
83 -- .dynsym : { *(.dynsym) }  
84 -- .dynstr : { *(.dynstr) }  
85 -- .gnu.version : { *(.gnu.version) }  
86 -- .gnu.version_d : { *(.gnu.version_d) }  
87 -- .gnu.version_r : { *(.gnu.version_r) }  
88 --  
89 -- /* This linker script is used both with -r and with -shared.  
90 -- For the layouts to match, we need to skip more than enough  
91 -- space for the dynamic symbol table et al. If this amount  
92 -- is insufficient, ld -shared will barf. Just increase it here. */  
93 -- . = VSYSCALL_BASE + 0x400;  
94 --  
95 -- .text : { *(.text) } :text =0x90909090  
96 --  
97 -- .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr  
98 -- .eh_frame : { KEEP (*(.eh_frame)) } :text  
99 -- .dynamic : { *(.dynamic) } :text :dynamic  
100 -- .useless : {  
101 -- *(.got.plt) *(.got)  
102 -- *(.data .data.* .gnu.linkonce.d.*)  
103 -- *(.dynbss)  
104 -- *(.bss .bss.* .gnu.linkonce.b.*)  
105 -- } :text  
106 --}  
107 --  
108 --/*  
109 -- * We must supply the ELF program headers explicitly to get just one  
110 -- * PT_LOAD segment, and set the flags explicitly to make segments read-only.  
111 -- */  
112 --PHDRS  
113 --{  
114 -- text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */  
115 -- dynamic PT_DYNAMIC FLAGS(4); /* PF_R */  
116 -- eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */  
117 --}  
118 --  
119 --/*  
120 -- * This controls what symbols we export from the DSO.  
121 -- */  
122 --VERSION  
123 --{  
124 -- LINUX_2.5 {  
125 -- global:  
126 -- __kernel_vsyscall;  
127 -- __kernel_sigreturn;  
128 -- __kernel_rt_sigreturn;  
129 --  
130 -- local: *;  
131 -- };  
132 --}  
133 --  
134 --/* The ELF entry point can be used to set the AT_SYSINFO value. */  
135 --ENTRY(__kernel_vsyscall);  
136 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds.S .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds.S  
137 ---- .32324-linux-2.6.0/arch/i386/kernel/vsyscall.lds.S 1970-01-01 10:00:00.000000000 +1000  
138 -+++ .32324-linux-2.6.0.updated/arch/i386/kernel/vsyscall.lds.S 2003-12-26 16:46:49.000000000 +1100  
139 -@@ -0,0 +1,67 @@  
140 -+/*  
141 -+ * Linker script for vsyscall DSO. The vsyscall page is an ELF shared  
142 -+ * object prelinked to its virtual address, and with only one read-only  
143 -+ * segment (that fits in one page). This script controls its layout.  
144 -+ */  
145 -+#include <asm/fixmap.h>  
146 -+  
147 -+VSYSCALL_BASE = __FIXADDR_TOP - 0x1000;  
148 -+  
149 -+SECTIONS  
150 -+{  
151 -+ . = VSYSCALL_BASE + SIZEOF_HEADERS;  
152 -+  
153 -+ .hash : { *(.hash) } :text  
154 -+ .dynsym : { *(.dynsym) }  
155 -+ .dynstr : { *(.dynstr) }  
156 -+ .gnu.version : { *(.gnu.version) }  
157 -+ .gnu.version_d : { *(.gnu.version_d) }  
158 -+ .gnu.version_r : { *(.gnu.version_r) }  
159 -+  
160 -+ /* This linker script is used both with -r and with -shared.  
161 -+ For the layouts to match, we need to skip more than enough  
162 -+ space for the dynamic symbol table et al. If this amount  
163 -+ is insufficient, ld -shared will barf. Just increase it here. */  
164 -+ . = VSYSCALL_BASE + 0x400;  
165 -+  
166 -+ .text : { *(.text) } :text =0x90909090  
167 -+  
168 -+ .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr  
169 -+ .eh_frame : { KEEP (*(.eh_frame)) } :text  
170 -+ .dynamic : { *(.dynamic) } :text :dynamic  
171 -+ .useless : {  
172 -+ *(.got.plt) *(.got)  
173 -+ *(.data .data.* .gnu.linkonce.d.*)  
174 -+ *(.dynbss)  
175 -+ *(.bss .bss.* .gnu.linkonce.b.*)  
176 -+ } :text  
177 -+}  
178 -+  
179 -+/*  
180 -+ * We must supply the ELF program headers explicitly to get just one  
181 -+ * PT_LOAD segment, and set the flags explicitly to make segments read-only.  
182 -+ */  
183 -+PHDRS  
184 -+{  
185 -+ text PT_LOAD FILEHDR PHDRS FLAGS(5); /* PF_R|PF_X */  
186 -+ dynamic PT_DYNAMIC FLAGS(4); /* PF_R */  
187 -+ eh_frame_hdr 0x6474e550; /* PT_GNU_EH_FRAME, but ld doesn't match the name */  
188 -+}  
189 -+  
190 -+/*  
191 -+ * This controls what symbols we export from the DSO.  
192 -+ */  
193 -+VERSION  
194 -+{  
195 -+ LINUX_2.5 {  
196 -+ global:  
197 -+ __kernel_vsyscall;  
198 -+ __kernel_sigreturn;  
199 -+ __kernel_rt_sigreturn;  
200 -+  
201 -+ local: *;  
202 -+ };  
203 -+}  
204 -+  
205 -+/* The ELF entry point can be used to set the AT_SYSINFO value. */  
206 -+ENTRY(__kernel_vsyscall);  
207 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/fixmap.h .32324-linux-2.6.0.updated/include/asm-i386/fixmap.h  
208 ---- .32324-linux-2.6.0/include/asm-i386/fixmap.h 2003-09-22 10:09:12.000000000 +1000  
209 -+++ .32324-linux-2.6.0.updated/include/asm-i386/fixmap.h 2003-12-26 16:46:49.000000000 +1100  
210 -@@ -14,6 +14,19 @@  
211 - #define _ASM_FIXMAP_H  
212 -  
213 - #include <linux/config.h>  
214 -+  
215 -+/* used by vmalloc.c, vsyscall.lds.S.  
216 -+ *  
217 -+ * Leave one empty page between vmalloc'ed areas and  
218 -+ * the start of the fixmap.  
219 -+ */  
220 -+#ifdef CONFIG_QEMU  
221 -+#define __FIXADDR_TOP 0xa7fff000  
222 -+#else  
223 -+#define __FIXADDR_TOP 0xfffff000  
224 -+#endif  
225 -+  
226 -+#ifndef __ASSEMBLY__  
227 - #include <linux/kernel.h>  
228 - #include <asm/acpi.h>  
229 - #include <asm/apicdef.h>  
230 -@@ -94,13 +107,8 @@ extern void __set_fixmap (enum fixed_add  
231 - #define clear_fixmap(idx) \  
232 - __set_fixmap(idx, 0, __pgprot(0))  
233 -  
234 --/*  
235 -- * used by vmalloc.c.  
236 -- *  
237 -- * Leave one empty page between vmalloc'ed areas and  
238 -- * the start of the fixmap.  
239 -- */  
240 --#define FIXADDR_TOP (0xfffff000UL)  
241 -+#define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP)  
242 -+  
243 - #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT)  
244 - #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)  
245 -  
246 -@@ -145,4 +153,5 @@ static inline unsigned long virt_to_fix(  
247 - return __virt_to_fix(vaddr);  
248 - }  
249 -  
250 -+#endif /* !__ASSEMBLY__ */  
251 - #endif  
252 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/page.h .32324-linux-2.6.0.updated/include/asm-i386/page.h  
253 ---- .32324-linux-2.6.0/include/asm-i386/page.h 2003-09-22 10:06:42.000000000 +1000  
254 -+++ .32324-linux-2.6.0.updated/include/asm-i386/page.h 2003-12-26 16:46:49.000000000 +1100  
255 -@@ -10,10 +10,10 @@  
256 - #define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)  
257 -  
258 - #ifdef __KERNEL__  
259 --#ifndef __ASSEMBLY__  
260 --  
261 - #include <linux/config.h>  
262 -  
263 -+#ifndef __ASSEMBLY__  
264 -+  
265 - #ifdef CONFIG_X86_USE_3DNOW  
266 -  
267 - #include <asm/mmx.h>  
268 -@@ -115,12 +115,19 @@ static __inline__ int get_order(unsigned  
269 - #endif /* __ASSEMBLY__ */  
270 -  
271 - #ifdef __ASSEMBLY__  
272 -+#ifdef CONFIG_QEMU  
273 -+#define __PAGE_OFFSET (0x90000000)  
274 -+#else  
275 - #define __PAGE_OFFSET (0xC0000000)  
276 -+#endif /* QEMU */  
277 -+#else  
278 -+#ifdef CONFIG_QEMU  
279 -+#define __PAGE_OFFSET (0x90000000UL)  
280 - #else  
281 - #define __PAGE_OFFSET (0xC0000000UL)  
282 -+#endif /* QEMU */  
283 - #endif  
284 -  
285 --  
286 - #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)  
287 - #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)  
288 - #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)  
289 -diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .32324-linux-2.6.0/include/asm-i386/param.h .32324-linux-2.6.0.updated/include/asm-i386/param.h  
290 ---- .32324-linux-2.6.0/include/asm-i386/param.h 2003-09-21 17:26:06.000000000 +1000  
291 -+++ .32324-linux-2.6.0.updated/include/asm-i386/param.h 2003-12-26 16:46:49.000000000 +1100  
292 -@@ -2,7 +2,12 @@  
293 - #define _ASMi386_PARAM_H  
294 -  
295 - #ifdef __KERNEL__  
296 --# define HZ 1000 /* Internal kernel timer frequency */  
297 -+# include <linux/config.h>  
298 -+# ifdef CONFIG_QEMU  
299 -+# define HZ 100  
300 -+# else  
301 -+# define HZ 1000 /* Internal kernel timer frequency */  
302 -+# endif  
303 - # define USER_HZ 100 /* .. some user interfaces are in "ticks" */  
304 - # define CLOCKS_PER_SEC (USER_HZ) /* like times() */  
305 - #endif  
linux-2.6.9-qemu-fast.patch 0 → 100644
  1 +--- linux-2.6.9/arch/i386/Kconfig 2004-10-18 23:53:22.000000000 +0200
  2 ++++ linux-2.6.9-qemu/arch/i386/Kconfig 2004-12-07 21:56:49.000000000 +0100
  3 +@@ -337,6 +337,14 @@ config X86_GENERIC
  4 +
  5 + endif
  6 +
  7 ++config QEMU
  8 ++ bool "Kernel to run under QEMU"
  9 ++ depends on EXPERIMENTAL
  10 ++ help
  11 ++ Select this if you want to boot the kernel inside qemu-fast,
  12 ++ the non-mmu version of the x86 emulator. See
  13 ++ <http://fabrice.bellard.free.fr/qemu/>. Say N.
  14 ++
  15 + #
  16 + # Define implied options from the CPU selection here
  17 + #
  18 +--- linux-2.6.9/include/asm-i386/fixmap.h 2004-10-18 23:53:08.000000000 +0200
  19 ++++ linux-2.6.9-qemu/include/asm-i386/fixmap.h 2004-12-07 23:16:11.000000000 +0100
  20 +@@ -20,7 +20,11 @@
  21 + * Leave one empty page between vmalloc'ed areas and
  22 + * the start of the fixmap.
  23 + */
  24 ++#ifdef CONFIG_QEMU
  25 ++#define __FIXADDR_TOP 0xa7fff000
  26 ++#else
  27 + #define __FIXADDR_TOP 0xfffff000
  28 ++#endif
  29 +
  30 + #ifndef __ASSEMBLY__
  31 + #include <linux/kernel.h>
  32 +--- linux-2.6.9/include/asm-i386/page.h 2004-10-18 23:53:22.000000000 +0200
  33 ++++ linux-2.6.9-qemu/include/asm-i386/page.h 2004-12-07 21:56:49.000000000 +0100
  34 +@@ -121,12 +121,19 @@ extern int sysctl_legacy_va_layout;
  35 + #endif /* __ASSEMBLY__ */
  36 +
  37 + #ifdef __ASSEMBLY__
  38 ++#ifdef CONFIG_QEMU
  39 ++#define __PAGE_OFFSET (0x90000000)
  40 ++#else
  41 + #define __PAGE_OFFSET (0xC0000000)
  42 ++#endif /* QEMU */
  43 ++#else
  44 ++#ifdef CONFIG_QEMU
  45 ++#define __PAGE_OFFSET (0x90000000UL)
  46 + #else
  47 + #define __PAGE_OFFSET (0xC0000000UL)
  48 ++#endif /* QEMU */
  49 + #endif
  50 +
  51 +-
  52 + #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
  53 + #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE)
  54 + #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE)
  55 +--- linux-2.6.9/include/asm-i386/param.h 2004-10-18 23:53:24.000000000 +0200
  56 ++++ linux-2.6.9-qemu/include/asm-i386/param.h 2004-12-07 21:56:49.000000000 +0100
  57 +@@ -2,7 +2,12 @@
  58 + #define _ASMi386_PARAM_H
  59 +
  60 + #ifdef __KERNEL__
  61 +-# define HZ 1000 /* Internal kernel timer frequency */
  62 ++# include <linux/config.h>
  63 ++# ifdef CONFIG_QEMU
  64 ++# define HZ 100
  65 ++# else
  66 ++# define HZ 1000 /* Internal kernel timer frequency */
  67 ++# endif
  68 + # define USER_HZ 100 /* .. some user interfaces are in "ticks" */
  69 + # define CLOCKS_PER_SEC (USER_HZ) /* like times() */
  70 + #endif