[SeaBIOS] [edk2] (PAM stuff) reset doesn't work on OVMF + SeaBIOS CSM

Paolo Bonzini pbonzini at redhat.com
Mon Feb 18 15:46:04 CET 2013


Il 18/02/2013 13:53, David Woodhouse ha scritto:
> 
> diff --git a/hw/piix_pci.c b/hw/piix_pci.c
> index 6c77e49..6dcf1c5 100644
> --- a/hw/piix_pci.c
> +++ b/hw/piix_pci.c
> @@ -171,6 +171,23 @@ static int i440fx_load_old(QEMUFile* f, void *opaque, int version_id)
>      return 0;
>  }
>  
> +static void i440fx_reset(void *opaque)
> +{
> +    PCII440FXState *d = opaque;
> +    uint8_t *pci_conf = d->dev.config;
> +
> +    pci_conf[0x59] = 0x00; // Reset PAM setup
> +    pci_conf[0x5a] = 0x00;
> +    pci_conf[0x5b] = 0x00;
> +    pci_conf[0x5c] = 0x00;
> +    pci_conf[0x5d] = 0x00;
> +    pci_conf[0x5e] = 0x00;
> +    pci_conf[0x5f] = 0x00;
> +    pci_conf[0x72] = 0x02; // And SMM
> +
> +    i440fx_update_memory_mappings(d);
> +}
> +
>  static int i440fx_post_load(void *opaque, int version_id)
>  {
>      PCII440FXState *d = opaque;
> @@ -217,6 +234,8 @@ static int i440fx_initfn(PCIDevice *dev)
>      d->dev.config[I440FX_SMRAM] = 0x02;
>  
>      cpu_smm_register(&i440fx_set_smm, d);
> +
> +    qemu_register_reset(i440fx_reset, d);
>      return 0;
>  }

If you want to submit this patch for upstream QEMU (I agree it is a good
idea), please set dc->reset instead in i440fx_class_init.

Paolo



More information about the SeaBIOS mailing list