* Wei Huang (w...@redhat.com) wrote: > > > On 01/31/2018 02:16 PM, Dr. David Alan Gilbert (git) wrote: > > From: "Dr. David Alan Gilbert" <dgilb...@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 makefile rule is added, 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 <dgilb...@redhat.com> > > --- > > tests/Makefile.include | 18 ++++++++ > > tests/migration-test.c | 46 +------------------ > > tests/migration/x86-a-b-bootblock.h | 52 +++++++++++++++++++++ > > tests/migration/x86-a-b-bootblock.s | 92 > > +++++++++++++++++++++++++++++++++++++ > > 4 files changed, 163 insertions(+), 45 deletions(-) > > create mode 100644 tests/migration/x86-a-b-bootblock.h > > create mode 100644 tests/migration/x86-a-b-bootblock.s > > > > diff --git a/tests/Makefile.include b/tests/Makefile.include > > index 851aafe9d1..2a0889479c 100644 > > --- a/tests/Makefile.include > > +++ b/tests/Makefile.include > > @@ -831,6 +831,24 @@ tests/migration/initrd-stress.img: > > tests/migration/stress$(EXESUF) > > rm $(INITRD_WORK_DIR)/init > > rmdir $(INITRD_WORK_DIR) > > > > +ASM_WORK_DIR=tests/asm-temp > > +$(SRC_PATH)/tests/migration/x86-a-b-bootblock.h: > > $(SRC_PATH)/tests/migration/x86-a-b-bootblock.s > > + mkdir $(ASM_WORK_DIR) > > + as --32 -march=i486 $< -o $(ASM_WORK_DIR).o > > + objcopy -O binary $(ASM_WORK_DIR).o $(ASM_WORK_DIR).boot > > + dd if=$(ASM_WORK_DIR).boot of=$(ASM_WORK_DIR).bootsect bs=256 count=2 > > skip=124 > > + xxd -i $(ASM_WORK_DIR).bootsect | \ > > + sed -e 's/tests_asm_temp_bootsect/bootsect/' -e 's/.*int.*//' > > > $(ASM_WORK_DIR).hex > > + echo -e "/* This file is automatically generated from\n" \ > > + " * tests/migration/x86-a-b-bootblock.s, edit that and > > then\n" \ > > + " * make tests/migration/x86-a-b-bootblock.h to update,\n" \ > > + " * and then remember to send both in your patch > > submission.\n" \ > > + " */\n" | cat - $(ASM_WORK_DIR).hex > $@ > > + rm $(ASM_WORK_DIR).hex $(ASM_WORK_DIR).bootsect $(ASM_WORK_DIR).boot > > + rm $(ASM_WORK_DIR).o > > + rmdir $(ASM_WORK_DIR) > > + > > + > > Could we create a new Makefile.include under tests/migration/ and move > the code above there? The code above is very large and can distract > people working on tests/Makefile.include.
I've split that out into a separate script and removed the Makefile entry altogether; that way it also doesn't accidentally become a dependency if the times on the .s/.h get screwed up. > > ifeq ($(CONFIG_POSIX),y) > > LIBS += -lutil > > endif > > diff --git a/tests/migration-test.c b/tests/migration-test.c > > index 799e24ebc6..7550fd8d56 100644 > > --- a/tests/migration-test.c > > +++ b/tests/migration-test.c > > @@ -79,51 +79,7 @@ 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) > > { > > diff --git a/tests/migration/x86-a-b-bootblock.h > > b/tests/migration/x86-a-b-bootblock.h > > new file mode 100644 > > index 0000000000..e45c8dd5b3 > > --- /dev/null > > +++ b/tests/migration/x86-a-b-bootblock.h > > @@ -0,0 +1,52 @@ > > +/* This file is automatically generated from > > + * tests/migration/x86-a-b-bootblock.s, edit that and then > > + * make tests/migration/x86-a-b-bootblock.h to update, > > + * and then remember to send both in your patch submission. > > + */ > > + > > +unsigned char bootsect[] = { > > Given that this is arch-dependent, I think it will be better to add > "x86_" as prefix to this variable. Done. V2 coming up. Dave > > + 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..7f290014af > > --- /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 make tests/migration/x86-a-b-bootblock.h > > +# 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: dgilb...@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 > > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK