fa.netbsd.tech.kern
[Top] [All Lists]

Problems with autoconf matching

Subject: Problems with autoconf matching
From: "Julio M. Merino Vidal"
Date: Sat, 01 Sep 2007 15:33:02 UTC
Newsgroups: fa.netbsd.tech.kern


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@xxxxxxxxx>



<Prev in Thread] Current Thread [Next in Thread>