Subject: Re: Problems with autoconf matching
To: None <tech-kern@NetBSD.org>
From: Julio M. Merino Vidal <jmmv84@gmail.com>
List: tech-kern
Date: 09/01/2007 18:45:34
I've received a private reply stating why this does not work as I  
expected.  obio is not respecting the priority.

Thanks anyway!


On Sep 1, 2007, at 5:25 PM, Julio M. Merino Vidal wrote:

> Hello,
>
> [ Please CC me ]
>
> I am adding a new 'genfb' driver to mac68k, aimed at replacing  
> intvid, macvid and the macfb that attaches to these two.
>
> The relevant part of the current configuration file looks like this  
> (I'm discarding macvid for simplicity):
>
> -----
> intvid0	at obio?			# Internal video hardware
> macfb*	at intvid?
>
> genfb*		at obio?		# Internal video hardware
>
> wsdisplay*	at genfb? console ?
> wsdisplay*	at macfb? console ?
> -----
>
> So we have this chain of devices:
>
> 1) The old one: wsdisplay -> macfb -> intvid -> obio
> 2) The new one: wsdisplay -> genfb -> obio
>
> intvid and genfb have the exact same autoconf matching functions  
> because they can handle the same set of devices (yes, the plan is  
> to kill intvid later on).  However, I have changed genfb to return  
> 5 on match, instead of the 1 that intvid returns, so that the  
> kernel gives priority to genfb.  Unfortunately this doesn't seem to  
> work as expected.
>
> For simplicity I have reduced the above configuration into the  
> following:
>
> -----
> intvid0	at obio?			# Internal video hardware
> genfb*		at obio?		# Internal video hardware
> wsdisplay*	at genfb? console ?
> -----
>
> So basically we now only have intvid and genfb competing to handle  
> the same video device, and we don't have macfb into the mix (which  
> messes other code due to conditional compilation and it could cause  
> other nasty problems).
>
> Based on this simplified configuration, if I compile both intvid  
> and genfb into the kernel, it seems that the system is picking up  
> the intvid driver.  I say "seems" because I cannot see what happens  
> later because the machine hangs.  (Adding macfb does not help either.)
>
> If I disable intvid, the machine boots.  If I disable genfb and add  
> macfb on top of intvid, it also works.
>
> If I change intvid's match routine to return 0 in all cases, the  
> kernel properly picks up genfb and boots correctly.
>
> AIUI, as genfb returns 5 during match and intvid returns 1,  
> autoconf should simply discard intvid and use genfb, isn't it?  It  
> should behave as if intvid's match returned 0, as the last test I  
> did.  But for some reason there seems to be a problem in this.  Or  
> is my reasoning wrong?
>
> Thanks,
>
> -- 
> Julio M. Merino Vidal <jmmv84@gmail.com>
>
>

-- 
Julio M. Merino Vidal <jmmv84@gmail.com>