qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v2 04/21][SeaBIOS] acpi: generate hotplug me


From: Vasilis Liaskovitis
Subject: Re: [Qemu-devel] [RFC PATCH v2 04/21][SeaBIOS] acpi: generate hotplug memory devices
Date: Wed, 11 Jul 2012 18:39:37 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Hi,

On Wed, Jul 11, 2012 at 06:48:38PM +0800, Wen Congyang wrote:
> > +        if (enabled)
> > +            add_e820(mem_base, mem_len, E820_RAM);
> 
> add_e820() is declared in memmap.h. You should include this header file,
> otherwise, seabios cannot be built.

thanks. you had the same comment on v1 but I forgot to address it. I will
update.

- Vasilis
> 
> Thanks
> Wen Congyang
> 
> > +        memslot_status = memslot_status >> 1;
> > +        entry++;
> > +    }
> > +    build_header((void*)ssdt, SSDT_SIGNATURE, ssdt_ptr - ssdt, 1);
> > +
> > +    return ssdt;
> > +}
> > +
> >  #include "ssdt-pcihp.hex"
> >  
> >  #define PCI_RMV_BASE 0xae0c
> > @@ -618,9 +739,6 @@ build_srat(void)
> >  {
> >      int nb_numa_nodes = qemu_cfg_get_numa_nodes();
> >  
> > -    if (nb_numa_nodes == 0)
> > -        return NULL;
> > -
> >      u64 *numadata = malloc_tmphigh(sizeof(u64) * (MaxCountCPUs + 
> > nb_numa_nodes));
> >      if (!numadata) {
> >          warn_noalloc();
> > @@ -629,10 +747,11 @@ build_srat(void)
> >  
> >      qemu_cfg_get_numa_data(numadata, MaxCountCPUs + nb_numa_nodes);
> >  
> > +    qemu_cfg_get_numa_data(&nb_hp_memslots, 1);
> >      struct system_resource_affinity_table *srat;
> >      int srat_size = sizeof(*srat) +
> >          sizeof(struct srat_processor_affinity) * MaxCountCPUs +
> > -        sizeof(struct srat_memory_affinity) * (nb_numa_nodes + 2);
> > +        sizeof(struct srat_memory_affinity) * (nb_numa_nodes + 
> > nb_hp_memslots + 2);
> >  
> >      srat = malloc_high(srat_size);
> >      if (!srat) {
> > @@ -667,7 +786,7 @@ build_srat(void)
> >       * from 640k-1M and possibly another one from 3.5G-4G.
> >       */
> >      struct srat_memory_affinity *numamem = (void*)core;
> > -    int slots = 0;
> > +    int slots = 0, node;
> >      u64 mem_len, mem_base, next_base = 0;
> >  
> >      acpi_build_srat_memory(numamem, 0, 640*1024, 0, 1);
> > @@ -694,10 +813,36 @@ build_srat(void)
> >              next_base += (1ULL << 32) - RamSize;
> >          }
> >          acpi_build_srat_memory(numamem, mem_base, mem_len, i-1, 1);
> > +
> >          numamem++;
> >          slots++;
> > +
> > +    }
> > +    mem = (void*)numamem;
> > +
> > +    if (nb_hp_memslots) {
> > +        u64 *hpmemdata = malloc_tmphigh(sizeof(u64) * (3 * 
> > nb_hp_memslots));
> > +        if (!hpmemdata) {
> > +            warn_noalloc();
> > +            free(hpmemdata);
> > +            free(numadata);
> > +            return NULL;
> > +        }
> > +
> > +        qemu_cfg_get_numa_data(hpmemdata, 3 * nb_hp_memslots);
> > +
> > +        for (i = 1; i < nb_hp_memslots + 1; ++i) {
> > +            mem_base = *hpmemdata++;
> > +            mem_len = *hpmemdata++;
> > +            node = *hpmemdata++;
> > +            acpi_build_srat_memory(numamem, mem_base, mem_len, node, 1);
> > +            numamem++;
> > +            slots++;
> > +        }
> > +        free(hpmemdata);
> >      }
> > -    for (; slots < nb_numa_nodes + 2; slots++) {
> > +
> > +    for (; slots < nb_numa_nodes + nb_hp_memslots + 2; slots++) {
> >          acpi_build_srat_memory(numamem, 0, 0, 0, 0);
> >          numamem++;
> >      }
> > @@ -748,6 +893,7 @@ acpi_bios_init(void)
> >      ACPI_INIT_TABLE(build_madt());
> >      ACPI_INIT_TABLE(build_hpet());
> >      ACPI_INIT_TABLE(build_srat());
> > +    ACPI_INIT_TABLE(build_memssdt());
> >      ACPI_INIT_TABLE(build_pcihp());
> >  
> >      u16 i, external_tables = qemu_cfg_acpi_additional_tables();
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]