diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-01-26 11:50:29 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-01-26 11:50:29 +0000 |
commit | 0c28d0d07fbcd7aa44d231241d444d00882256e2 (patch) | |
tree | 3809f083ca1a33cb570304067d3f512fa624297d /tests | |
parent | d109f80af3ad5c64c8c30e7ab21f2e342b5e9a8d (diff) | |
parent | fc116efad0aadb2f8a49d51240bddbfe21b631a0 (diff) |
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
- Many fixes from the floor as usual
- New "edu" device (v1->v2: fix 32-bit compilation)
- Disabling HLE and RTM on Haswell & Broadwell
- kvm_stat updates
- Added --enable-modules to Travis, in preparation for switching
the default
# gpg: Signature made Mon 26 Jan 2015 11:44:40 GMT using RSA key ID 78C7AE83
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
# gpg: aka "Paolo Bonzini <pbonzini@redhat.com>"
# gpg: WARNING: This key is not certified with sufficiently trusted signatures!
# gpg: It is not certain that the signature belongs to the owner.
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1
# Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83
* remotes/bonzini/tags/for-upstream:
kvm_stat: Add RESET support for perf event ioctl
target-i386: Disable HLE and RTM on Haswell & Broadwell
sparse: Fix build with sparse on .S files
exec: fix madvise of NULL pointer
.travis.yml: Add "--enable-modules"
apic: do not dereference pointer before it is checked for NULL
kvm_stat: Print errno when syscall to perf_event_open() fails
kvm_stat: Update exit reasons to the latest defintion
kvm_stat: Add aarch64 support
hw: misc, add educational driver
vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR*
qemu-timer: introduce timer_deinit
qemu-timer: add timer_init and timer_init_ns/us/ms
target-i386: make xmm_regs 512-bit wide
target-i386: use vmstate_offset_sub_array for AVX registers
tests/multiboot: Add test for modules
multiboot: Fix offset of bootloader name
tests/multiboot: Update reference output
pc: fix KVM features in pc-1.3 and earlier machine types
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/multiboot/Makefile | 5 | ||||
-rw-r--r-- | tests/multiboot/libc.c | 12 | ||||
-rw-r--r-- | tests/multiboot/libc.h | 1 | ||||
-rw-r--r-- | tests/multiboot/mmap.out | 37 | ||||
-rw-r--r-- | tests/multiboot/module.txt | 1 | ||||
-rw-r--r-- | tests/multiboot/modules.c | 55 | ||||
-rw-r--r-- | tests/multiboot/modules.out | 38 | ||||
-rwxr-xr-x | tests/multiboot/run_test.sh | 9 |
8 files changed, 137 insertions, 21 deletions
diff --git a/tests/multiboot/Makefile b/tests/multiboot/Makefile index 34cdd81a90..36f01dc647 100644 --- a/tests/multiboot/Makefile +++ b/tests/multiboot/Makefile @@ -6,11 +6,14 @@ LD=ld LDFLAGS=-melf_i386 -T link.ld LIBS=$(shell $(CC) $(CCFLAGS) -print-libgcc-file-name) -all: mmap.elf +all: mmap.elf modules.elf mmap.elf: start.o mmap.o libc.o $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) +modules.elf: start.o modules.o libc.o + $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) + %.o: %.c $(CC) $(CCFLAGS) -c -o $@ $^ diff --git a/tests/multiboot/libc.c b/tests/multiboot/libc.c index 05abbd92cc..6df9bda96d 100644 --- a/tests/multiboot/libc.c +++ b/tests/multiboot/libc.c @@ -22,6 +22,18 @@ #include "libc.h" +void* memcpy(void *dest, const void *src, int n) +{ + char *d = dest; + const char *s = src; + + while (n--) { + *d++ = *s++; + } + + return dest; +} + static void print_char(char c) { outb(0xe9, c); diff --git a/tests/multiboot/libc.h b/tests/multiboot/libc.h index 80eec5b7a0..04c9922c27 100644 --- a/tests/multiboot/libc.h +++ b/tests/multiboot/libc.h @@ -57,5 +57,6 @@ static inline void outb(uint16_t port, uint8_t data) /* Misc functions */ void printf(const char *fmt, ...); +void* memcpy(void *dest, const void *src, int n); #endif diff --git a/tests/multiboot/mmap.out b/tests/multiboot/mmap.out index e70b6eb45d..003e109b4c 100644 --- a/tests/multiboot/mmap.out +++ b/tests/multiboot/mmap.out @@ -4,14 +4,14 @@ === Running test case: mmap.elf === Lower memory: 639k -Upper memory: 130040k +Upper memory: 129920k e820 memory map: 0x0 - 0x9fc00: type 1 [entry size: 20] 0x9fc00 - 0xa0000: type 2 [entry size: 20] 0xf0000 - 0x100000: type 2 [entry size: 20] -0x100000 - 0x7ffe000: type 1 [entry size: 20] -0x7ffe000 - 0x8000000: type 2 [entry size: 20] +0x100000 - 0x7fe0000: type 1 [entry size: 20] +0x7fe0000 - 0x8000000: type 2 [entry size: 20] 0xfffc0000 - 0x100000000: type 2 [entry size: 20] mmap start: 0x9000 @@ -22,32 +22,31 @@ real mmap end: 0x9090 === Running test case: mmap.elf -m 1.1M === Lower memory: 639k -Upper memory: 96k +Upper memory: 104k e820 memory map: 0x0 - 0x9fc00: type 1 [entry size: 20] 0x9fc00 - 0xa0000: type 2 [entry size: 20] 0xf0000 - 0x100000: type 2 [entry size: 20] -0x100000 - 0x118000: type 1 [entry size: 20] -0x118000 - 0x11a000: type 2 [entry size: 20] +0x100000 - 0x11a000: type 1 [entry size: 20] 0xfffc0000 - 0x100000000: type 2 [entry size: 20] mmap start: 0x9000 -mmap end: 0x9090 -real mmap end: 0x9090 +mmap end: 0x9078 +real mmap end: 0x9078 === Running test case: mmap.elf -m 2G === Lower memory: 639k -Upper memory: 2096120k +Upper memory: 2096000k e820 memory map: 0x0 - 0x9fc00: type 1 [entry size: 20] 0x9fc00 - 0xa0000: type 2 [entry size: 20] 0xf0000 - 0x100000: type 2 [entry size: 20] -0x100000 - 0x7fffe000: type 1 [entry size: 20] -0x7fffe000 - 0x80000000: type 2 [entry size: 20] +0x100000 - 0x7ffe0000: type 1 [entry size: 20] +0x7ffe0000 - 0x80000000: type 2 [entry size: 20] 0xfffc0000 - 0x100000000: type 2 [entry size: 20] mmap start: 0x9000 @@ -58,16 +57,16 @@ real mmap end: 0x9090 === Running test case: mmap.elf -m 4G === Lower memory: 639k -Upper memory: 3668984k +Upper memory: 3144576k e820 memory map: 0x0 - 0x9fc00: type 1 [entry size: 20] 0x9fc00 - 0xa0000: type 2 [entry size: 20] 0xf0000 - 0x100000: type 2 [entry size: 20] -0x100000 - 0xdfffe000: type 1 [entry size: 20] -0xdfffe000 - 0xe0000000: type 2 [entry size: 20] +0x100000 - 0xbffe0000: type 1 [entry size: 20] +0xbffe0000 - 0xc0000000: type 2 [entry size: 20] 0xfffc0000 - 0x100000000: type 2 [entry size: 20] -0x100000000 - 0x120000000: type 1 [entry size: 20] +0x100000000 - 0x140000000: type 1 [entry size: 20] mmap start: 0x9000 mmap end: 0x90a8 @@ -77,16 +76,16 @@ real mmap end: 0x90a8 === Running test case: mmap.elf -m 8G === Lower memory: 639k -Upper memory: 3668984k +Upper memory: 3144576k e820 memory map: 0x0 - 0x9fc00: type 1 [entry size: 20] 0x9fc00 - 0xa0000: type 2 [entry size: 20] 0xf0000 - 0x100000: type 2 [entry size: 20] -0x100000 - 0xdfffe000: type 1 [entry size: 20] -0xdfffe000 - 0xe0000000: type 2 [entry size: 20] +0x100000 - 0xbffe0000: type 1 [entry size: 20] +0xbffe0000 - 0xc0000000: type 2 [entry size: 20] 0xfffc0000 - 0x100000000: type 2 [entry size: 20] -0x100000000 - 0x220000000: type 1 [entry size: 20] +0x100000000 - 0x240000000: type 1 [entry size: 20] mmap start: 0x9000 mmap end: 0x90a8 diff --git a/tests/multiboot/module.txt b/tests/multiboot/module.txt new file mode 100644 index 0000000000..54c1d27988 --- /dev/null +++ b/tests/multiboot/module.txt @@ -0,0 +1 @@ +This is a test file that is used as a multiboot module. diff --git a/tests/multiboot/modules.c b/tests/multiboot/modules.c new file mode 100644 index 0000000000..531601fb30 --- /dev/null +++ b/tests/multiboot/modules.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2015 Kevin Wolf <kwolf@redhat.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "libc.h" +#include "multiboot.h" + +int test_main(uint32_t magic, struct mb_info *mbi) +{ + struct mb_module *mod; + unsigned int i; + + (void) magic; + + printf("Module list with %d entries at %x\n", + mbi->mods_count, mbi->mods_addr); + + for (i = 0, mod = (struct mb_module*) mbi->mods_addr; + i < mbi->mods_count; + i++, mod++) + { + char buf[1024]; + unsigned int size = mod->mod_end - mod->mod_start; + + printf("[%p] Module: %x - %x (%d bytes) '%s'\n", + mod, mod->mod_start, mod->mod_end, size, mod->string); + + /* Print test file, but remove the newline at the end */ + if (size < sizeof(buf)) { + memcpy(buf, (void*) mod->mod_start, size); + buf[size - 1] = '\0'; + printf(" Content: '%s'\n", buf); + } + } + + return 0; +} diff --git a/tests/multiboot/modules.out b/tests/multiboot/modules.out new file mode 100644 index 0000000000..1636708035 --- /dev/null +++ b/tests/multiboot/modules.out @@ -0,0 +1,38 @@ + + + +=== Running test case: modules.elf === + +Module list with 0 entries at 102000 + + +=== Running test case: modules.elf -initrd module.txt === + +Module list with 1 entries at 102000 +[102000] Module: 103000 - 103038 (56 bytes) 'module.txt' + Content: 'This is a test file that is used as a multiboot module.' + + +=== Running test case: modules.elf -initrd module.txt argument === + +Module list with 1 entries at 102000 +[102000] Module: 103000 - 103038 (56 bytes) 'module.txt argument' + Content: 'This is a test file that is used as a multiboot module.' + + +=== Running test case: modules.elf -initrd module.txt argument,,with,,commas === + +Module list with 1 entries at 102000 +[102000] Module: 103000 - 103038 (56 bytes) 'module.txt argument,with,commas' + Content: 'This is a test file that is used as a multiboot module.' + + +=== Running test case: modules.elf -initrd module.txt,module.txt argument,module.txt === + +Module list with 3 entries at 102000 +[102000] Module: 103000 - 103038 (56 bytes) 'module.txt' + Content: 'This is a test file that is used as a multiboot module.' +[102010] Module: 104000 - 104038 (56 bytes) 'module.txt argument' + Content: 'This is a test file that is used as a multiboot module.' +[102020] Module: 105000 - 105038 (56 bytes) 'module.txt' + Content: 'This is a test file that is used as a multiboot module.' diff --git a/tests/multiboot/run_test.sh b/tests/multiboot/run_test.sh index 97a9a49f8b..78d7edfc3b 100755 --- a/tests/multiboot/run_test.sh +++ b/tests/multiboot/run_test.sh @@ -48,10 +48,17 @@ mmap() { run_qemu mmap.elf -m 8G } +modules() { + run_qemu modules.elf + run_qemu modules.elf -initrd module.txt + run_qemu modules.elf -initrd "module.txt argument" + run_qemu modules.elf -initrd "module.txt argument,,with,,commas" + run_qemu modules.elf -initrd "module.txt,module.txt argument,module.txt" +} make all -for t in mmap; do +for t in mmap modules; do echo > test.log $t |