[coreboot] [PATCH] k8 uma and high tables

Stefan Reinauer stepan at coresystems.de
Sat Oct 24 15:20:00 CEST 2009


Myles Watson wrote:
>
>
>     +#if CONFIG_GFXUMA == 1
>     +               printk_debug("node %d :
>     uma_memory_base/1024=0x%08x, mmio_basek=0x%08x, basek=0x%08x,
>     limitk=0x%08x\n", i, uma_memory_base >> 10, mmio_basek, basek,
>     limitk);
>     +               if ((uma_memory_base >> 10) < mmio_basek)
>     +                       printk_alert("node %d: UMA memory starts
>     below mmio_basek\n", i);
>
> Isn't this always true?  It seems like if uma_memory_base >
> (mmio_basek - uma_memory_size) it's an error.
Can this happen? I have no idea,.. Carl-Daniel came up with the equation
and it worked great for me on the KT690

> As a side note, I think that calculation should be done here, and I
> don't think it should depend on how much RAM is installed, but should
> be user configurable.
I think it depends on the installed RAM because there is a hole below 4G
for PCI devices etc.


> Then we can unify GFXUMA and VGA_MEM_MB -> UMA_MEM_MB.  Then
> uma_memory_base can go away too, since it will be mmio_base - VGA_MEM_MB.
unless uma memory can live above 4G on some chipsets...?


>  
>
>     +#else
>      //             printk_debug("node %d : mmio_basek=%08x,
>     basek=%08x, limitk=%08x\n", i, mmio_basek, basek, limitk); //yhlu
>     +#endif
>
>                    /* See if I need to split the region to accomodate
>     pci memory space */
>                    if ( (basek < 4*1024*1024 ) && (limitk >
>     mmio_basek) ) {
>     @@ -1015,7 +1024,11 @@
>      #if CONFIG_WRITE_HIGH_TABLES==1
>                                            if (i==0 &&
>     high_tables_base==0) {
>                                            /* Leave some space for
>     ACPI, PIRQ and MP tables */
>     +#if CONFIG_GFXUMA == 1
>     +                                               high_tables_base =
>     ((uma_memory_base >> 10) - HIGH_TABLES_SIZE) * 
>
>     1024;
>
> high_tables_base = uma_memory_base - (HIGH_TABLES_SIZE * 1024);
d'uh, yes. Can you commit?

>  
>
>     +#else
>                                                    high_tables_base =
>     (mmio_basek - HIGH_TABLES_SIZE) * 1024;
>
>  
>
>     @@ -1051,7 +1064,11 @@
>                                 i, mmio_basek, basek, limitk);
>                    if (i==0 && high_tables_base==0)
>                    /* Leave some space for ACPI, PIRQ and MP tables */
>     +#if CONFIG_GFXUMA == 1
>     +                       high_tables_base = ((uma_memory_base >>
>     10) - HIGH_TABLES_SIZE) * 1024;
>
> same thing.

Thanks for catching this.




More information about the coreboot mailing list