[OLPC-devel] Re: AMD Geode GX framebuffer: support OLPC

ollie ollie at lanl.gov
Tue Aug 15 12:10:10 EDT 2006


On Mon, 2006-08-14 at 19:27 -0600, Ronald G Minnich wrote:
> Now we need to bother Ollie, he is our real vga expert :-)
> 
> Ollie, how should we do this. I have ideas, but I want to hear your 
> ideas, they will be better than mine.
> 

I haven't looked at the very early init of Linux kernel for a long
time. IIRC, we can just boot the vmlinux ELF image with LinuxBIOS/FILO
The ELF image does not contain the arch/i386/boot stuff at all. Is
there any reason we have to load something like bzImage?

Ollie

> ron
> 
> Marcelo Tosatti wrote:
> > (switching to olpc-devel)
> > 
> > On Mon, Aug 14, 2006 at 01:14:04PM -0600, Jordan Crouse wrote:
> > 
> >>On 14/08/06 14:49 -0400, David Zeuthen wrote:
> >>
> >>>> since VGA probing must be disabled in OLPC's kernel.
> >>>>Unfortunately, as far as I could gather, there exists no native
> >>>>framebuffer driver for the emulated Cirrus CLGD 5446 PCI VGA device.
> >>>
> >>>How about disabling vga probing only if we know we are on the OLPC
> >>>hardware? Surely this must be fixable...
> >>
> >>VGA probing happens pretty darn early in the boot process, so we would
> >>probably have to communicate the existence of the OLPC hardware from the
> >>BIOS through one of the usual methods.
> >>
> >>The reasoning behind the patch was that we were purposely ignoring VGA 
> >>all together and I wanted to eliminate the possibility that random bits would
> >>be returned to the probing function which may or may not cause the code to
> >>do stupid things.  Far better, I reasoned, to just ignore the VGA stuff 
> >>all together (plus it saved us a bit of space).
> >>
> >>We could probably avoid this patch all together if the kernel gurus agree
> >>that nothing bad would happen if we left it in, or if we did the extra work
> >>to return sane values in LinuxBIOS. 
> > 
> > 
> > Ronald,
> > 
> > The aim is to kill the CONFIG_VGA_NOPROBE option which was added by
> > Jordan for safety reasons (see comments above).
> > 
> > For that to happen, it must be certain that LinuxBIOS returns
> > sane values for the following Linux VGA detection routines, at
> > arch/i386/kernel/video.S:
> > 
> > 
> > # This is the main entry point called by setup.S
> > # %ds *must* be pointing to the bootsector
> > video:  pushw   %ds             # We use different segments
> >         pushw   %ds             # FS contains original DS
> >         popw    %fs
> >         pushw   %cs             # DS is equal to CS
> >         popw    %ds
> >         pushw   %cs             # ES is equal to CS
> >         popw    %es
> >         xorw    %ax, %ax
> >         movw    %ax, %gs        # GS is zero
> >         cld
> >         call    basic_detect    # Basic adapter type testing (EGA/VGA/MDA/CGA)
> > #ifdef CONFIG_VIDEO_SELECT
> >         movw    %fs:(0x01fa), %ax               # User selected video mode
> >         cmpw    $ASK_VGA, %ax                   # Bring up the menu
> >         jz      vid2
> > 
> >         call    mode_set                        # Set the mode
> >         jc      vid1
> > 
> >         leaw    badmdt, %si                     # Invalid mode ID
> >         call    prtstr
> > vid2:   call    mode_menu
> > vid1:
> > #ifdef CONFIG_VIDEO_RETAIN
> >         call    restore_screen                  # Restore screen contents
> > #endif /* CONFIG_VIDEO_RETAIN */
> >         call    store_edid
> > #endif /* CONFIG_VIDEO_SELECT */
> >         call    mode_params                     # Store mode parameters
> >         popw    %ds                             # Restore original DS
> >         ret
> > 
> > More especifically "basic_detect" and "mode_params".
> > 
> > Thoughts/comments?
> 




More information about the Devel mailing list