[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Re: [PATCH] Replace bios_relocate hook with bios_load hook in hvmloader
On 27/07/2011 03:02, "Bei Guan" <gbtju85@xxxxxxxxx> wrote: > > > 2011/7/25 Keir Fraser <keir@xxxxxxx> >> On 23/07/2011 20:02, "Bei Guan" <gbtju85@xxxxxxxxx> wrote: >> >>> Hi, >>> >>> These set of patches are affected by replacing bios_relocate hook with >>> bios_load hook in hvmloader. The patches for code files config.h and >>> hvmloader.c also contains part of the contents of Enabling UEFI BIOS(OVMF) >>> support in Xen-unstable HVM. Is there any problem with these patches? Thank >>> you very much. >> >> As of xen-unstable:23745 I've made some improvements to hvmloader which >> include your new bios_load hook. You can rebase your remaining patches on >> top of that. > Thank you very much. > I am looking forward to the new xen-unstable version: 23745. http://xenbits.xen.org/staging/xen-unstable.hg > Best Regards, > Bei Guan > >> >> -- Keir >> >>> >>> >>> # HG changeset patch >>> # User gbtju85@xxxxxxxxx >>> # >>> >>> Replace bios_relocate hook with bios_load hook in hvmloader. >>> This patch also contains part of the contents of Enabling UEFI BIOS(OVMF) >>> support in Xen-unstable HVM >>> >>> Sign-off-by: Bei Guan <gbtju85@xxxxxxxxx> >>> >>> diff -r 42edf1481c57 tools/firmware/hvmloader/config.h >>> --- a/tools/firmware/hvmloader/config.h Fri Jul 22 08:55:19 2011 +0100 >>> +++ b/tools/firmware/hvmloader/config.h Sun Jul 24 02:22:42 2011 +0800 >>> @@ -3,7 +3,7 @@ >>> >>> #include <stdint.h> >>> >>> -enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt }; >>> +enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt, VGA_custom }; >>> extern enum virtual_vga virtual_vga; >>> >>> struct bios_config { >>> @@ -16,6 +16,9 @@ >>> /* Physical address to load at */ >>> unsigned int bios_address; >>> >>> + /* Custom load function. */ >>> + void (*load)(const struct bios_config *config); >>> + >>> /* ROMS */ >>> int load_roms; >>> unsigned int optionrom_start, optionrom_end; >>> @@ -23,8 +26,6 @@ >>> void (*bios_info_setup)(void); >>> void (*bios_info_finish)(void); >>> >>> - void (*bios_relocate)(void); >>> - >>> void (*vm86_setup)(void); >>> void (*e820_setup)(void); >>> >>> @@ -36,6 +37,8 @@ >>> >>> extern struct bios_config rombios_config; >>> extern struct bios_config seabios_config; >>> +extern struct bios_config ovmf32_config; >>> +extern struct bios_config ovmf64_config; >>> >>> #define PAGE_SHIFT 12 >>> #define PAGE_SIZE (1ul << PAGE_SHIFT) >>> diff -r 42edf1481c57 tools/firmware/hvmloader/hvmloader.c >>> --- a/tools/firmware/hvmloader/hvmloader.c Fri Jul 22 08:55:19 2011 +0100 >>> +++ b/tools/firmware/hvmloader/hvmloader.c Sun Jul 24 02:22:42 2011 +0800 >>> @@ -360,6 +360,8 @@ >>> #ifdef ENABLE_SEABIOS >>> { "seabios", &seabios_config, }, >>> #endif >>> + { "ovmf-ia32", &ovmf32_config, }, >>> + { "ovmf-x64", &ovmf64_config, }, >>> { NULL, NULL } >>> }; >>> >>> @@ -416,12 +418,13 @@ >>> bios->create_smbios_tables(); >>> } >>> >>> - printf("Loading %s ...\n", bios->name); >>> - memcpy((void *)bios->bios_address, bios->image, >>> - bios->image_size); >>> - >>> - if (bios->bios_relocate) >>> - bios->bios_relocate(); >>> + if (bios->load) { >>> + bios->load(bios); >>> + } else { >>> + printf("Loading %s ...\n", bios->name); >>> + memcpy((void *)bios->bios_address, bios->image, >>> + bios->image_size); >>> + } >>> >>> if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode ) { >>> if ( bios->create_mp_tables ) >>> @@ -451,6 +454,8 @@ >>> vgabios_sz = round_option_rom( >>> (*(uint8_t *)(VGABIOS_PHYSICAL_ADDRESS+2)) * 512); >>> break; >>> + case VGA_custom: >>> + break; >>> default: >>> printf("No emulated VGA adaptor ...\n"); >>> break; >>> diff -r 42edf1481c57 tools/firmware/hvmloader/rombios.c >>> --- a/tools/firmware/hvmloader/rombios.c Fri Jul 22 08:55:19 2011 +0100 >>> +++ b/tools/firmware/hvmloader/rombios.c Sun Jul 24 02:22:42 2011 +0800 >>> @@ -81,11 +81,15 @@ >>> memset(info, 0, sizeof(*info)); >>> } >>> >>> -static void rombios_relocate(void) >>> +static void rombios_load(const struct bios_config *config) >>> { >>> uint32_t bioshigh; >>> struct rombios_info *info; >>> >>> + printf("Loading %s ...\n", config->name); >>> + memcpy((void *)config->bios_address, config->image, >>> + config->image_size); >>> + >>> bioshigh = rombios_highbios_setup(); >>> >>> info = (struct rombios_info *)BIOS_INFO_PHYSICAL_ADDRESS; >>> @@ -163,6 +167,7 @@ >>> .image_size = sizeof(rombios), >>> >>> .bios_address = ROMBIOS_PHYSICAL_ADDRESS, >>> + .load = rombios_load, >>> >>> .load_roms = 1, >>> >>> @@ -172,8 +177,6 @@ >>> .bios_info_setup = rombios_setup_bios_info, >>> .bios_info_finish = NULL, >>> >>> - .bios_relocate = rombios_relocate, >>> - >>> .vm86_setup = rombios_init_vm86_tss, >>> .e820_setup = rombios_setup_e820, >>> >>> diff -r 42edf1481c57 tools/firmware/hvmloader/seabios.c >>> --- a/tools/firmware/hvmloader/seabios.c Fri Jul 22 08:55:19 2011 +0100 >>> +++ b/tools/firmware/hvmloader/seabios.c Sun Jul 24 02:22:42 2011 +0800 >>> @@ -132,6 +132,7 @@ >>> .image_size = sizeof(seabios), >>> >>> .bios_address = SEABIOS_PHYSICAL_ADDRESS, >>> + .load = NULL, >>> >>> .load_roms = 0, >>> >>> @@ -141,8 +142,6 @@ >>> .bios_info_setup = seabios_setup_bios_info, >>> .bios_info_finish = seabios_finish_bios_info, >>> >>> - .bios_relocate = NULL, >>> - >>> .vm86_setup = NULL, >>> .e820_setup = seabios_setup_e820, >>> >>> >>> >>> >>> >>> Best Regards, >>> Bei Guan >>> >>> >>> >>> >>> 2011/7/24 Keir Fraser <keir.xen@xxxxxxxxx> >>>> On 23/07/2011 16:18, "Bei Guan" <gbtju85@xxxxxxxxx> wrote: >>>> >>>>> Do you mean that put the bios_relocate hook in the "else" statement? Just >>>>> like >>>>> this: >>>>> >>>>> if (bios->load) { >>>>> bios->load(bios); >>>>> } else { >>>>> printf("Loading %s ...\n", bios->name); >>>>> memcpy((void *)bios->bios_address, bios->image, >>>>> bios->image_size); >>>>> >>>>> if (bios->bios_relocate) >>>>> bios->bios_relocate(); >>>>> } >>>> >>>> No I mean remove the bios_relocate hook entirely, and modify the rombios >>>> handler to use your new hook instead. It should be quite easy. >>>> >>>> -- Keir >>>> >>>> >>> >>> >> >> >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |