On Sunday 22 November 2009 23:39:26 Dana wrote:
> Try this diff on sys/arch/amd64/amd64/machdep.c, diffed against the
> 4.6 release version (I believe you would be using an amd64 kernel).
>
> --- machdep.c.orig      Mon Nov 23 09:18:11 2009
> +++ machdep.c   Wed Nov 18 22:47:15 2009
> @@ -1731,6 +1731,9 @@
>
>         /* Memory is otherwise reserved */
>         for (bmp = bios_memmap; bmp->type != BIOS_MAP_END; bmp++) {
> +               if (bmp->addr + bmp->size >= physmem)
> +                       break;
> +
>                 if (addr > bmp->addr && addr < (bmp->addr + bmp->size) &&
>                         bmp->type != BIOS_MAP_FREE)
>                         return 1;
>
>
> The in-memory copy of the BIOS memory map seems to yield addresses
> that extend past the end of physical memory -- it seems the check for
> BIOS_MAP_END is insufficient -- and thus yields strange values; X
> wants to mmap an address and amd64_pa_used says it can't because it's
> reserved, when it in fact isn't.
>
> This is only really a workaround patch, I don't have the time and
> resources yet to verify whether there's a bug in the code that
> retrieves the BIOS memory map, or whether the BIOS is being iffy in
> giving us the memory map, but it has solved the "Cannot map MMIO
> range" problem I had earlier with my x200.
>
> Thanks,
> Dana
Hi,
Cool!
Yes, your patch worked for me too on my w500!
Thank you very much!!!!
Kind regards,
Didier

Reply via email to