Discussion on the future of floppies in 5.x and 6.x
Scott Long
scottl at freebsd.org
Fri Jan 9 23:01:55 PST 2004
Peter Jeremy wrote:
> On Fri, Jan 09, 2004 at 04:26:54PM -0600, Matthew D. Fuller wrote:
>
>>On Fri, Jan 09, 2004 at 02:23:58PM -0700 I heard the voice of
>>Scott Long, and lo! it spake thus:
>>
>>>Dag-Erling Sm?rgrav wrote:
>>>
>>>>yes, we need something like
>>>>
>>>>struct pci_device_info {
>>>> uint32_t pciid;
>>>> char brand[64];
>>>> char model[64];
>>>>} my_supported_devices[] = {
>>>> { 0x12345678, "Acme", "Nutcracker 2000" }
>>>>};
>>>>
>>>>which is placed in a separate ELF section so we can extract it from
>>>>the module.
>>>>
>>>>except it needs to be flexible enough to support other buses than PCI
>>>>(SBUS, USB...)
>>>>
>>>>DES
>>>
>>>Yeah, this is a good suggestion, the only problem being in making it
>>>flexible enough to not be a burden on the drivers. Many drivers
>>>keep one or more flag elements in their tables to flag hardware than
>>>needs special attention. I'm sure that there are also countless other
>>>pieces of state that drivers would want to associate with a table like
>>>this.
>>
>>I was poking around a bit (in my completely kernel-fu-lacking way) at
>>this last night. For one thing, we could avoid the struct definition,
>>and instead just mandate a few fields in the structure with given names
>>as above. Then, write a little helper .c file with a main() that goes
>>through the array (with the name given as a preprocessor -D or something)
>>and spits the info out into a text file. Compile it up and run it for
>>each module as we compile it, and assemble the results in a big reference
>>file. Then, a userland program (like sysinstall, in this case) can
>>easily poke through that text file to find and describe the drivers for
>>devices found.
>
>
> This is more what I was thinking in terms of. As well as the PCI ID
> and brand/model, we probably would need:
> - a priority field, so a generic driver can grab a device if a more
> specific driver isn't found
> - the option to use card ID instead of chip ID
> - wild-carding (maybe a bitmask)
>
> And this still isn't enough to identify things like the Realtek 8139C+
> chips that would prefer re(4) instead of rl(4) (though rl(4) is good
> enough to install FreeBSD).
>
> Peter
>
Right, since there are at least 5 identifying fields in the PCI config
space that might need to be looked at.
Lets not repeat the mistakes of vendors like RedHat that require that a
duplicate table be maintained (with only 2 of the five fields!).
Whether our tables are generated through script magic or through a
stuctured API doesn't matter so long at it adds minimal burden to the
driver maintainership and is guaranteed to always be in sync.
Scott
More information about the freebsd-hackers
mailing list