[SeaBIOS] S3 resume is broken on QEMU
Gleb Natapov
gleb at redhat.com
Fri Jan 20 12:51:34 CET 2012
On Fri, Jan 20, 2012 at 12:08:39PM +0100, Gerd Hoffmann wrote:
> Hi,
>
> > I do think moving from compile time options to runtime options is
> > important. If you need a quick fix to get your build working, the
> > patch to seabios is below. I do think we should try to figure out how
> > we can get options passed into SeaBIOS effectively.
>
> Current runtime option is easy to handle on the qemu side, see attached
> patch.
>
The patch adds 10 lines of code that should be there.
> cheers,
> Gerd
> >From 311be2fd346b75c296856299250ada7c5ffbf207 Mon Sep 17 00:00:00 2001
> From: Gerd Hoffmann <kraxel at redhat.com>
> Date: Thu, 19 Jan 2012 11:46:55 +0100
> Subject: [PATCH] enable s3-resume-vga-init
>
> Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> ---
> hw/fw_cfg.c | 9 +++++++++
> hw/fw_cfg.h | 1 +
> 2 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c
> index f953532..87ae272 100644
> --- a/hw/fw_cfg.c
> +++ b/hw/fw_cfg.c
> @@ -460,6 +460,14 @@ int fw_cfg_add_file(FWCfgState *s, const char *filename, uint8_t *data,
> return 1;
> }
>
> +/* see romfile_loadint() in src/paravirt.c in seabios */
> +void fw_cfg_romfile_storeint(FWCfgState *s, const char *fn, uint64_t val)
> +{
> + uint64_t *st = g_malloc(sizeof(*st));
> + *st = val;
> + fw_cfg_add_file(s, fn, (void *)st, sizeof(*st));
> +}
> +
> static void fw_cfg_machine_ready(struct Notifier *n, void *data)
> {
> uint32_t len;
> @@ -467,6 +475,7 @@ static void fw_cfg_machine_ready(struct Notifier *n, void *data)
> char *bootindex = get_boot_devices_list(&len);
>
> fw_cfg_add_file(s, "bootorder", (uint8_t*)bootindex, len);
> + fw_cfg_romfile_storeint(s, "etc/s3-resume-vga-init", 1);
> }
>
> FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t data_port,
> diff --git a/hw/fw_cfg.h b/hw/fw_cfg.h
> index 856bf91..f2ba50d 100644
> --- a/hw/fw_cfg.h
> +++ b/hw/fw_cfg.h
> @@ -62,6 +62,7 @@ int fw_cfg_add_callback(FWCfgState *s, uint16_t key, FWCfgCallback callback,
> void *callback_opaque, uint8_t *data, size_t len);
> int fw_cfg_add_file(FWCfgState *s, const char *filename, uint8_t *data,
> uint32_t len);
> +void fw_cfg_romfile_storeint(FWCfgState *s, const char *fn, uint64_t val);
> FWCfgState *fw_cfg_init(uint32_t ctl_port, uint32_t data_port,
> target_phys_addr_t crl_addr, target_phys_addr_t data_addr);
>
> --
> 1.7.1
>
--
Gleb.
More information about the SeaBIOS
mailing list