* [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block @ 2018-02-05 18:18 Dr. David Alan Gilbert (git) 2018-02-09 21:47 ` Wei Huang 2018-02-12 13:32 ` Andrew Jones 0 siblings, 2 replies; 6+ messages in thread From: Dr. David Alan Gilbert (git) @ 2018-02-05 18:18 UTC (permalink / raw) To: qemu-devel, quintela, peter.maydell, wei; +Cc: peterx From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> The boot block used in the migration test is currently only shipped as a hex (with the source in the git commit message), change this to actually include the source. A script is added to rebuild the header but the expectation is that the generated hex is shipped as well as the .s, so that there's no requirement to have just the right assembler etc. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> --- tests/migration-test.c | 48 +---------------- tests/migration/rebuild-x86-bootblock.sh | 37 +++++++++++++ tests/migration/x86-a-b-bootblock.h | 51 ++++++++++++++++++ tests/migration/x86-a-b-bootblock.s | 92 ++++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 46 deletions(-) create mode 100755 tests/migration/rebuild-x86-bootblock.sh create mode 100644 tests/migration/x86-a-b-bootblock.h create mode 100644 tests/migration/x86-a-b-bootblock.s diff --git a/tests/migration-test.c b/tests/migration-test.c index 799e24ebc6..b1a11502f8 100644 --- a/tests/migration-test.c +++ b/tests/migration-test.c @@ -79,57 +79,13 @@ static const char *tmpfs; /* A simple PC boot sector that modifies memory (1-100MB) quickly * outputing a 'B' every so often if it's still running. */ -unsigned char bootsect[] = { - 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, - 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, - 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, - 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, - 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, - 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, - 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa -}; +#include "tests/migration/x86-a-b-bootblock.h" static void init_bootfile_x86(const char *bootpath) { FILE *bootfile = fopen(bootpath, "wb"); - g_assert_cmpint(fwrite(bootsect, 512, 1, bootfile), ==, 1); + g_assert_cmpint(fwrite(x86_bootsect, 512, 1, bootfile), ==, 1); fclose(bootfile); } diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh new file mode 100755 index 0000000000..c40f025e1a --- /dev/null +++ b/tests/migration/rebuild-x86-bootblock.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates +# This work is licensed under the terms of the GNU GPL, version 2 or later. +# See the COPYING file in the top-level directory. +# +# Author: dgilbert@redhat.com + +ASMFILE=tests/migration/x86-a-b-bootblock.s +HEADER=tests/migration/x86-a-b-bootblock.h + +if [ ! -e "$ASMFILE" ] +then + echo "Couldn't find $ASMFILE" >&2 + exit 1 +fi + +ASM_WORK_DIR=/tmp/X86BB$$ +mkdir $ASM_WORK_DIR && +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ + bs=256 count=2 skip=124 && +xxd -i $ASM_WORK_DIR/bb.bootsect | +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ + $ASM_WORK_DIR/bb.hex && +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" +/* This file is automatically generated from + * tests/migration/x86-a-b-bootblock.s, edit that and then run + * tests/migration/rebuild-x86-bootblock.sh to update, + * and then remember to send both in your patch submission. + */ +HERE + +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot +rm $ASM_WORK_DIR/bb.o +rmdir $ASM_WORK_DIR + diff --git a/tests/migration/x86-a-b-bootblock.h b/tests/migration/x86-a-b-bootblock.h new file mode 100644 index 0000000000..78a151fe2a --- /dev/null +++ b/tests/migration/x86-a-b-bootblock.h @@ -0,0 +1,51 @@ +/* This file is automatically generated from + * tests/migration/x86-a-b-bootblock.s, edit that and then run + * tests/migration/rebuild-x86-bootblock.sh to update, + * and then remember to send both in your patch submission. + */ +unsigned char x86_bootsect[] = { + 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, + 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, + 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, + 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, + 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, + 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, + 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa +}; + diff --git a/tests/migration/x86-a-b-bootblock.s b/tests/migration/x86-a-b-bootblock.s new file mode 100644 index 0000000000..b1642641a7 --- /dev/null +++ b/tests/migration/x86-a-b-bootblock.s @@ -0,0 +1,92 @@ +# x86 bootblock used in migration test +# repeatedly increments the first byte of each page in a 100MB +# range. +# Outputs an initial 'A' on serial followed by repeated 'B's +# +# run tests/migration/rebuild-x86-bootblock.sh +# to regenerate the hex, and remember to include both the .h and .s +# in any patches. +# +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates +# This work is licensed under the terms of the GNU GPL, version 2 or later. +# See the COPYING file in the top-level directory. +# +# Author: dgilbert@redhat.com + + +.code16 +.org 0x7c00 + .file "fill.s" + .text + .globl start + .type start, @function +start: # at 0x7c00 ? + cli + lgdt gdtdesc + mov $1,%eax + mov %eax,%cr0 # Protected mode enable + data32 ljmp $8,$0x7c20 + +.org 0x7c20 +.code32 + # A20 enable - not sure I actually need this + inb $0x92,%al + or $2,%al + outb %al, $0x92 + + # set up DS for the whole of RAM (needed on KVM) + mov $16,%eax + mov %eax,%ds + + mov $65,%ax + mov $0x3f8,%dx + outb %al,%dx + + # bl keeps a counter so we limit the output speed + mov $0, %bl +mainloop: + # Start from 1MB + mov $(1024*1024),%eax +innerloop: + incb (%eax) + add $4096,%eax + cmp $(100*1024*1024),%eax + jl innerloop + + inc %bl + jnz mainloop + + mov $66,%ax + mov $0x3f8,%dx + outb %al,%dx + + jmp mainloop + + # GDT magic from old (GPLv2) Grub startup.S + .p2align 2 /* force 4-byte alignment */ +gdt: + .word 0, 0 + .byte 0, 0, 0, 0 + + /* -- code segment -- + * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present + * type = 32bit code execute/read, DPL = 0 + */ + .word 0xFFFF, 0 + .byte 0, 0x9A, 0xCF, 0 + + /* -- data segment -- + * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present + * type = 32 bit data read/write, DPL = 0 + */ + .word 0xFFFF, 0 + .byte 0, 0x92, 0xCF, 0 + +gdtdesc: + .word 0x27 /* limit */ + .long gdt /* addr */ + +/* I'm a bootable disk */ +.org 0x7dfe + .byte 0x55 + .byte 0xAA -- 2.14.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block 2018-02-05 18:18 [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block Dr. David Alan Gilbert (git) @ 2018-02-09 21:47 ` Wei Huang 2018-02-12 13:32 ` Andrew Jones 1 sibling, 0 replies; 6+ messages in thread From: Wei Huang @ 2018-02-09 21:47 UTC (permalink / raw) To: Dr. David Alan Gilbert (git), qemu-devel, quintela, peter.maydell; +Cc: peterx On 02/05/2018 12:18 PM, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com> > > The boot block used in the migration test is currently only > shipped as a hex (with the source in the git commit message), > change this to actually include the source. > > A script is added to rebuild the header but the expectation is that > the generated hex is shipped as well as the .s, so that > there's no requirement to have just the right assembler etc. > > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > tests/migration-test.c | 48 +---------------- > tests/migration/rebuild-x86-bootblock.sh | 37 +++++++++++++ > tests/migration/x86-a-b-bootblock.h | 51 ++++++++++++++++++ > tests/migration/x86-a-b-bootblock.s | 92 ++++++++++++++++++++++++++++++++ > 4 files changed, 182 insertions(+), 46 deletions(-) > create mode 100755 tests/migration/rebuild-x86-bootblock.sh > create mode 100644 tests/migration/x86-a-b-bootblock.h > create mode 100644 tests/migration/x86-a-b-bootblock.s > > diff --git a/tests/migration-test.c b/tests/migration-test.c > index 799e24ebc6..b1a11502f8 100644 > --- a/tests/migration-test.c > +++ b/tests/migration-test.c > @@ -79,57 +79,13 @@ static const char *tmpfs; > /* A simple PC boot sector that modifies memory (1-100MB) quickly > * outputing a 'B' every so often if it's still running. > */ > -unsigned char bootsect[] = { > - 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, > - 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, > - 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, > - 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, > - 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, > - 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, > - 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, > - 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa > -}; > +#include "tests/migration/x86-a-b-bootblock.h" > > static void init_bootfile_x86(const char *bootpath) > { > FILE *bootfile = fopen(bootpath, "wb"); > > - g_assert_cmpint(fwrite(bootsect, 512, 1, bootfile), ==, 1); > + g_assert_cmpint(fwrite(x86_bootsect, 512, 1, bootfile), ==, 1); > fclose(bootfile); > } > > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > new file mode 100755 > index 0000000000..c40f025e1a > --- /dev/null > +++ b/tests/migration/rebuild-x86-bootblock.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > +ASMFILE=tests/migration/x86-a-b-bootblock.s > +HEADER=tests/migration/x86-a-b-bootblock.h > + > +if [ ! -e "$ASMFILE" ] > +then > + echo "Couldn't find $ASMFILE" >&2 > + exit 1 > +fi > + > +ASM_WORK_DIR=/tmp/X86BB$$ > +mkdir $ASM_WORK_DIR && > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > + bs=256 count=2 skip=124 && > +xxd -i $ASM_WORK_DIR/bb.bootsect | > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > + $ASM_WORK_DIR/bb.hex && > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +HERE > + > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > +rm $ASM_WORK_DIR/bb.o > +rmdir $ASM_WORK_DIR > + > diff --git a/tests/migration/x86-a-b-bootblock.h b/tests/migration/x86-a-b-bootblock.h > new file mode 100644 > index 0000000000..78a151fe2a > --- /dev/null > +++ b/tests/migration/x86-a-b-bootblock.h > @@ -0,0 +1,51 @@ > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +unsigned char x86_bootsect[] = { > + 0xfa, 0x0f, 0x01, 0x16, 0x74, 0x7c, 0x66, 0xb8, 0x01, 0x00, 0x00, 0x00, > + 0x0f, 0x22, 0xc0, 0x66, 0xea, 0x20, 0x7c, 0x00, 0x00, 0x08, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x92, 0x0c, 0x02, > + 0xe6, 0x92, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x66, 0xb8, 0x41, > + 0x00, 0x66, 0xba, 0xf8, 0x03, 0xee, 0xb3, 0x00, 0xb8, 0x00, 0x00, 0x10, > + 0x00, 0xfe, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x40, > + 0x06, 0x7c, 0xf2, 0xfe, 0xc3, 0x75, 0xe9, 0x66, 0xb8, 0x42, 0x00, 0x66, > + 0xba, 0xf8, 0x03, 0xee, 0xeb, 0xde, 0x66, 0x90, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9a, 0xcf, 0x00, > + 0xff, 0xff, 0x00, 0x00, 0x00, 0x92, 0xcf, 0x00, 0x27, 0x00, 0x5c, 0x7c, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa > +}; > + > diff --git a/tests/migration/x86-a-b-bootblock.s b/tests/migration/x86-a-b-bootblock.s > new file mode 100644 > index 0000000000..b1642641a7 > --- /dev/null > +++ b/tests/migration/x86-a-b-bootblock.s > @@ -0,0 +1,92 @@ > +# x86 bootblock used in migration test > +# repeatedly increments the first byte of each page in a 100MB > +# range. > +# Outputs an initial 'A' on serial followed by repeated 'B's > +# > +# run tests/migration/rebuild-x86-bootblock.sh > +# to regenerate the hex, and remember to include both the .h and .s > +# in any patches. > +# > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > + > +.code16 > +.org 0x7c00 > + .file "fill.s" > + .text > + .globl start > + .type start, @function > +start: # at 0x7c00 ? > + cli > + lgdt gdtdesc > + mov $1,%eax > + mov %eax,%cr0 # Protected mode enable > + data32 ljmp $8,$0x7c20 > + > +.org 0x7c20 > +.code32 > + # A20 enable - not sure I actually need this > + inb $0x92,%al > + or $2,%al > + outb %al, $0x92 > + > + # set up DS for the whole of RAM (needed on KVM) > + mov $16,%eax > + mov %eax,%ds > + > + mov $65,%ax > + mov $0x3f8,%dx > + outb %al,%dx > + > + # bl keeps a counter so we limit the output speed > + mov $0, %bl > +mainloop: > + # Start from 1MB > + mov $(1024*1024),%eax > +innerloop: > + incb (%eax) > + add $4096,%eax > + cmp $(100*1024*1024),%eax > + jl innerloop > + > + inc %bl > + jnz mainloop > + > + mov $66,%ax > + mov $0x3f8,%dx > + outb %al,%dx > + > + jmp mainloop > + > + # GDT magic from old (GPLv2) Grub startup.S > + .p2align 2 /* force 4-byte alignment */ > +gdt: > + .word 0, 0 > + .byte 0, 0, 0, 0 > + > + /* -- code segment -- > + * base = 0x00000000, limit = 0xFFFFF (4 KiB Granularity), present > + * type = 32bit code execute/read, DPL = 0 > + */ > + .word 0xFFFF, 0 > + .byte 0, 0x9A, 0xCF, 0 > + > + /* -- data segment -- > + * base = 0x00000000, limit 0xFFFFF (4 KiB Granularity), present > + * type = 32 bit data read/write, DPL = 0 > + */ > + .word 0xFFFF, 0 > + .byte 0, 0x92, 0xCF, 0 > + > +gdtdesc: > + .word 0x27 /* limit */ > + .long gdt /* addr */ > + > +/* I'm a bootable disk */ > +.org 0x7dfe > + .byte 0x55 > + .byte 0xAA > I tested this patch and it worked on my x86 machine. Also using the same approach, I just submitted a new version of migration-test for aarch64. So, Reviewed-by: Wei Huang <wei@redhat.com> Tested-by: Wei Huang <wei@redhat.com> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block 2018-02-05 18:18 [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block Dr. David Alan Gilbert (git) 2018-02-09 21:47 ` Wei Huang @ 2018-02-12 13:32 ` Andrew Jones 2018-02-12 15:07 ` Dr. David Alan Gilbert 1 sibling, 1 reply; 6+ messages in thread From: Andrew Jones @ 2018-02-12 13:32 UTC (permalink / raw) To: Dr. David Alan Gilbert (git) Cc: qemu-devel, quintela, peter.maydell, wei, peterx On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > new file mode 100755 > index 0000000000..c40f025e1a > --- /dev/null > +++ b/tests/migration/rebuild-x86-bootblock.sh > @@ -0,0 +1,37 @@ > +#!/bin/sh > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > +# See the COPYING file in the top-level directory. > +# > +# Author: dgilbert@redhat.com > + > +ASMFILE=tests/migration/x86-a-b-bootblock.s > +HEADER=tests/migration/x86-a-b-bootblock.h > + > +if [ ! -e "$ASMFILE" ] > +then > + echo "Couldn't find $ASMFILE" >&2 > + exit 1 > +fi > + > +ASM_WORK_DIR=/tmp/X86BB$$ mktemp? > +mkdir $ASM_WORK_DIR && > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > + bs=256 count=2 skip=124 && > +xxd -i $ASM_WORK_DIR/bb.bootsect | Is xxd now considered a common enough tool for portable scripts? I've always liked xxd for manual use, but scripted with 'od'. > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > + $ASM_WORK_DIR/bb.hex && > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > +/* This file is automatically generated from > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > + * tests/migration/rebuild-x86-bootblock.sh to update, > + * and then remember to send both in your patch submission. > + */ > +HERE > + > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > +rm $ASM_WORK_DIR/bb.o > +rmdir $ASM_WORK_DIR > + Thanks, drew ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block 2018-02-12 13:32 ` Andrew Jones @ 2018-02-12 15:07 ` Dr. David Alan Gilbert 2018-02-12 16:14 ` Wei Huang 2018-02-12 16:32 ` Eric Blake 0 siblings, 2 replies; 6+ messages in thread From: Dr. David Alan Gilbert @ 2018-02-12 15:07 UTC (permalink / raw) To: Andrew Jones; +Cc: qemu-devel, quintela, peter.maydell, wei, peterx * Andrew Jones (drjones@redhat.com) wrote: > On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: > > diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh > > new file mode 100755 > > index 0000000000..c40f025e1a > > --- /dev/null > > +++ b/tests/migration/rebuild-x86-bootblock.sh > > @@ -0,0 +1,37 @@ > > +#!/bin/sh > > +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates > > +# This work is licensed under the terms of the GNU GPL, version 2 or later. > > +# See the COPYING file in the top-level directory. > > +# > > +# Author: dgilbert@redhat.com > > + > > +ASMFILE=tests/migration/x86-a-b-bootblock.s > > +HEADER=tests/migration/x86-a-b-bootblock.h > > + > > +if [ ! -e "$ASMFILE" ] > > +then > > + echo "Couldn't find $ASMFILE" >&2 > > + exit 1 > > +fi > > + > > +ASM_WORK_DIR=/tmp/X86BB$$ > > mktemp? Yes, that's probably fair. > > +mkdir $ASM_WORK_DIR && > > +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && > > +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && > > +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ > > + bs=256 count=2 skip=124 && > > +xxd -i $ASM_WORK_DIR/bb.bootsect | > > Is xxd now considered a common enough tool for portable scripts? I've > always liked xxd for manual use, but scripted with 'od'. This script isn't part of a normal build or make check or anything, so jumping through hoops to make it portable for the mythical other person who might ever run it seems OTT, especially since xxd is very common, and I'm not sure how much I'd bet on the portability of od's output format either. Dave > > +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ > > + $ASM_WORK_DIR/bb.hex && > > +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" > > +/* This file is automatically generated from > > + * tests/migration/x86-a-b-bootblock.s, edit that and then run > > + * tests/migration/rebuild-x86-bootblock.sh to update, > > + * and then remember to send both in your patch submission. > > + */ > > +HERE > > + > > +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot > > +rm $ASM_WORK_DIR/bb.o > > +rmdir $ASM_WORK_DIR > > + > > Thanks, > drew -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block 2018-02-12 15:07 ` Dr. David Alan Gilbert @ 2018-02-12 16:14 ` Wei Huang 2018-02-12 16:32 ` Eric Blake 1 sibling, 0 replies; 6+ messages in thread From: Wei Huang @ 2018-02-12 16:14 UTC (permalink / raw) To: Dr. David Alan Gilbert, Andrew Jones Cc: qemu-devel, quintela, peter.maydell, peterx On 02/12/2018 09:07 AM, Dr. David Alan Gilbert wrote: > * Andrew Jones (drjones@redhat.com) wrote: >> On Mon, Feb 05, 2018 at 06:18:46PM +0000, Dr. David Alan Gilbert (git) wrote: >>> diff --git a/tests/migration/rebuild-x86-bootblock.sh b/tests/migration/rebuild-x86-bootblock.sh >>> new file mode 100755 >>> index 0000000000..c40f025e1a >>> --- /dev/null >>> +++ b/tests/migration/rebuild-x86-bootblock.sh >>> @@ -0,0 +1,37 @@ >>> +#!/bin/sh >>> +# Copyright (c) 2016 Red Hat, Inc. and/or its affiliates >>> +# This work is licensed under the terms of the GNU GPL, version 2 or later. >>> +# See the COPYING file in the top-level directory. >>> +# >>> +# Author: dgilbert@redhat.com >>> + >>> +ASMFILE=tests/migration/x86-a-b-bootblock.s >>> +HEADER=tests/migration/x86-a-b-bootblock.h >>> + >>> +if [ ! -e "$ASMFILE" ] >>> +then >>> + echo "Couldn't find $ASMFILE" >&2 >>> + exit 1 >>> +fi >>> + >>> +ASM_WORK_DIR=/tmp/X86BB$$ >> >> mktemp? > > Yes, that's probably fair. I echo this. So we will use something like: -ASM_WORK_DIR=/tmp/AARCH64BB$$ +ASM_WORK_DIR="$(mktemp -d /tmp/AARCH64XXXXXX)" -mkdir $ASM_WORK_DIR && > >>> +mkdir $ASM_WORK_DIR && >>> +as --32 -march=i486 "$ASMFILE" -o $ASM_WORK_DIR/bb.o && >>> +objcopy -O binary $ASM_WORK_DIR/bb.o $ASM_WORK_DIR/bb.boot && >>> +dd if=$ASM_WORK_DIR/bb.boot of=$ASM_WORK_DIR/bb.bootsect \ >>> + bs=256 count=2 skip=124 && >>> +xxd -i $ASM_WORK_DIR/bb.bootsect | >> >> Is xxd now considered a common enough tool for portable scripts? I've >> always liked xxd for manual use, but scripted with 'od'. > > This script isn't part of a normal build or make check or anything, so > jumping through hoops to make it portable for the mythical other person > who might ever run it seems OTT, especially since xxd is very common, xxd isn't installed by default (at least on my aarch64 server). But it is part of vim-common package; so it is fair to say xxd command is available on all major distros. > and I'm not sure how much I'd bet on the portability of od's output > format either. > > Dave > >>> +sed -e 's/_tmp.*_bootsect/x86_bootsect/' -e 's/.*int.*//' > \ >>> + $ASM_WORK_DIR/bb.hex && >>> +cat - $ASM_WORK_DIR/bb.hex <<HERE > "$HEADER" >>> +/* This file is automatically generated from >>> + * tests/migration/x86-a-b-bootblock.s, edit that and then run >>> + * tests/migration/rebuild-x86-bootblock.sh to update, >>> + * and then remember to send both in your patch submission. >>> + */ >>> +HERE >>> + >>> +rm $ASM_WORK_DIR/bb.hex $ASM_WORK_DIR/bb.bootsect $ASM_WORK_DIR/bb.boot >>> +rm $ASM_WORK_DIR/bb.o >>> +rmdir $ASM_WORK_DIR >>> + >> >> Thanks, >> drew > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block 2018-02-12 15:07 ` Dr. David Alan Gilbert 2018-02-12 16:14 ` Wei Huang @ 2018-02-12 16:32 ` Eric Blake 1 sibling, 0 replies; 6+ messages in thread From: Eric Blake @ 2018-02-12 16:32 UTC (permalink / raw) To: Dr. David Alan Gilbert, Andrew Jones Cc: wei, peter.maydell, qemu-devel, peterx, quintela On 02/12/2018 09:07 AM, Dr. David Alan Gilbert wrote: >> >> Is xxd now considered a common enough tool for portable scripts? I've >> always liked xxd for manual use, but scripted with 'od'. > > This script isn't part of a normal build or make check or anything, so > jumping through hoops to make it portable for the mythical other person > who might ever run it seems OTT, especially since xxd is very common, > and I'm not sure how much I'd bet on the portability of od's output > format either. Relying on xxd is okay given your arguments, but od IS portable (it is required by POSIX, and if you stick to the basics that POSIX documents, things are pretty consistent between implementations). I will grant, however, that a portable use of od has a much longer command line (with the options you need to turn on for saner output, because who reads octal these days) than xxd giving you hex by default. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-02-12 16:32 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-02-05 18:18 [Qemu-devel] [PATCH v2] tests/migration: Add source to PC boot block Dr. David Alan Gilbert (git) 2018-02-09 21:47 ` Wei Huang 2018-02-12 13:32 ` Andrew Jones 2018-02-12 15:07 ` Dr. David Alan Gilbert 2018-02-12 16:14 ` Wei Huang 2018-02-12 16:32 ` Eric Blake
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.