[OpenBIOS] r648 - in trunk/openbios-devel: arch/sparc64 drivers

Blue Swirl blauwirbel at gmail.com
Tue Dec 29 22:27:07 CET 2009


On Tue, Dec 29, 2009 at 9:15 PM, Igor Kovalenko
<igor.v.kovalenko at gmail.com> wrote:
> On Mon, Dec 28, 2009 at 1:15 PM,  <svn at openbios.org> wrote:
>> Author: blueswirl
>> Date: 2009-12-28 11:15:33 +0100 (Mon, 28 Dec 2009)
>> New Revision: 648
>>
>> Modified:
>>   trunk/openbios-devel/arch/sparc64/entry.S
>>   trunk/openbios-devel/drivers/pci.c
>>   trunk/openbios-devel/drivers/vga_vbe.c
>> Log:
>> Map VGA buffer only during PCI probe
>>
>> Also pass physical addresses instead of bus addresses to VGA init.
>>
>> Signed-off-by: Blue Swirl <blauwirbel at gmail.com>
>>
>> Modified: trunk/openbios-devel/drivers/vga_vbe.c
>> ===================================================================
>> --- trunk/openbios-devel/drivers/vga_vbe.c      2009-12-21 09:57:53 UTC (rev 647)
>> +++ trunk/openbios-devel/drivers/vga_vbe.c      2009-12-28 10:15:33 UTC (rev 648)
>> @@ -25,6 +25,7 @@
>>  #include "asm/io.h"
>>  #include "libc/vsprintf.h"
>>  #include "video_subr.h"
>> +#include "ofmem.h"
>>
>>  /* VGA init. We use the Bochs VESA VBE extensions  */
>>  #define VBE_DISPI_INDEX_ID              0x0
>> @@ -142,7 +143,10 @@
>>                depth = d;
>>                linebytes = (width * ((depth + 7) / 8));
>>        }
>> +#ifdef CONFIG_SPARC64
>> +        ofmem_map_page_range(fb, fb, fb_size, 0x36);
>>  #endif
>> +#endif
>>
>>        vga_vbe_set_mode(width, height, depth);
>
> You pass flags so mapping is unlocked, this can cause
> problems with translations being evicted from tlb table.
> Do you see any issues? Linux kernel has it's own idea
> of address translations, and we still do not switch trap
> handlers so probably framebuffer should be mapped
> locked into tlb table (mode=0x76)

If I use locked entries, with 8k pages there are soon no free TLB
entries left. I've tried to fix this with the attached patch which
adds support for 64k, 512k and 4M pages, then the entry can be changed
to locked one.

However I get regressions with some tests. The new MMU entries created
by the miss handler look OK but Linux creates a bogus entry.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Use-also-other-page-sizes-than-8k-in-miss-handler.patch
Type: application/x-patch
Size: 4801 bytes
Desc: not available
URL: <http://lists.openbios.org/pipermail/openbios/attachments/20091229/4830a980/attachment.bin>


More information about the OpenBIOS mailing list