On Fri, Jul 30, 2010 at 09:13:32PM +0200, Sebastian Herbszt wrote:
Kevin O'Connor wrote:
This series further enhances the bootsplash code. The last patch enables it by default (for coreboot users).
What about adding some wrappers to "paravirt.h" like bootsplash_file_find, bootsplash_file_size and bootsplash_file_copy (along the lines of romfile_*) ? This should allow qemu to use the bootsplash screen.
The romfile_* wrappers could likely serve this purpose. (See patch below.) Of course, this needs changes to qemu, which I was going to look at next.
-Kevin
diff --git a/src/bootsplash.c b/src/bootsplash.c index 676ece3..00bb921 100644 --- a/src/bootsplash.c +++ b/src/bootsplash.c @@ -11,6 +11,7 @@ #include "util.h" // dprintf #include "jpeg.h" // splash #include "biosvar.h" // SET_EBDA +#include "paravirt.h" // romfile_find
/**************************************************************** @@ -148,12 +149,12 @@ void enable_vga_console(void) u8 *filedata = NULL, *picture = NULL;
/* Needs coreboot support for CBFS */ - if (!CONFIG_BOOTSPLASH || !CONFIG_COREBOOT) + if (!CONFIG_BOOTSPLASH) goto gotext; - struct cbfs_file *file = cbfs_finddatafile("bootsplash.jpg"); + u32 file = romfile_find("bootsplash.jpg"); if (!file) goto gotext; - int filesize = cbfs_datasize(file); + int filesize = romfile_size(file);
filedata = malloc_tmphigh(filesize); vesa_info = malloc_tmplow(sizeof(*vesa_info)); @@ -186,7 +187,7 @@ void enable_vga_console(void) vendor, product);
// Parse jpeg and get image size. - cbfs_copyfile(file, filedata, filesize); + romfile_copy(file, filedata, filesize); int ret = jpeg_decode(jpeg, filedata); if (ret) { dprintf(1, "jpeg_decode failed with return code %d...\n", ret); @@ -248,7 +249,7 @@ gotext: void disable_bootsplash(void) { - if (!CONFIG_BOOTSPLASH || !CONFIG_COREBOOT || !GET_EBDA(bootsplash_active)) + if (!CONFIG_BOOTSPLASH || !GET_EBDA(bootsplash_active)) return; SET_EBDA(bootsplash_active, 0); enable_vga_text_console();