Re: viapropm doesnt like sys/dev/pci.c rev 1.214

From: David P. Reese Jr. <daver_at_gomerbud.com>
Date: Wed, 4 Jun 2003 00:29:07 -0700
On Wed, Jun 04, 2003 at 07:29:31AM +0000, Nicolas Souchu wrote:
> On Tue, Jun 03, 2003 at 10:54:30AM -0700, David P. Reese Jr. wrote:
> 
> [...]
> > : The datasheet states that the command bits are RW but "fixed at 0".
> > 
> > A snip of code from sys/dev/pci/pci.c:pci_enable_io_method():
> > 
> >         pci_set_command_bit(dev, child, bit);
> >         command = PCI_READ_CONFIG(dev, child, PCIR_COMMAND, 2);
> >         if (command & bit)
> >                 return (0);
> >         device_printf(child, "failed to enable %s mapping!\n", error);
> >         return (ENXIO);
> > 
> > Because the viapropm's command register bits will always read as zero,
> > this code will always fail when trying to enable port mapping.
> > 
> > Whatever problems viapropm may have, it is the new pci code that prevents it
> > from attaching.  It is not the fault of anything in sys/pci/viapm.c.
> 
> And I personally don't know how to fix it except by an option with an
> ifdef to workaround it.

How about adding another flag to bus_alloc_resource() which would signal
that we are not to check the value of the command register after calling
pci_set_command_bit().

RF_WILLFAIL?

After pci_enable_io_method() gets swallowed into pci_alloc_resource(),
this would be pretty easy because the flag would be in scope when we
check the value of the command register.

I can do so this weekend if anyone thinks this is worthwhile.

-- 

   David P. Reese Jr.                                      daver_at_gomerbud.com
   --------------------------------------------------------------------------
   It can be argued that returning a NULL pointer when asked to allocate
   zero bytes is a silly response to a silly question.
                                         -- FreeBSD manual page for malloc(3)
Received on Tue Jun 03 2003 - 22:29:06 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:10 UTC