Re: Problems with 2.5.14 PCI reorg and non-PCI architectures

Greg KH (greg@kroah.com)
Thu, 9 May 2002 08:23:29 -0700


On Thu, May 09, 2002 at 09:00:28AM -0400, James Bottomley wrote:
> greg@kroah.com said:
> > arch/i386/pci/dma.c now only contains pci_alloc_consistent() and
> > pci_free_consistent(). What kind of configuration are you using that
> > works without CONFIG_PCI and yet calls those functions? Is it a
> > ISA_PNP type configuration? Do you have a .config that this fails on?
>
> The problem is that this is not necessarily PCI related on other platforms.
>
> My cross platform SCSI driver, 53c700.c, uses pci_alloc_consistent because it
> has to work on parisc archs as well (which do have consistent memory even
> though a few of them don't have PCI busses). It was failing a test compile.
> I can manipulate the #ifdefs so that it doesn't use the consistent allocation
> functions on x86, but I think, in principle, cross platform drivers should be
> able to use these functions.

But parisc has it's own implementation of pci_alloc_consistent(), so
you're ok on that platform. And it looks like only 2 scsi drivers use
the 53c700.c code, lasi700.c and NCR_D700.c. The NCR driver looks to
need pci, and the lasi700 driver doesn't look like it will even compile
on i386.

No wait, the NCR driver needs Microchannel, is that true?

I would like to push back and ask why you are calling a pci_* function
from a driver that does not need pci. Yes, I know it's a nice, generic
function, but that hasn't stopped people from rewriting that same
function a number of times in different forms in different places in the
tree :)

In a perfect world, we should probably create a function like:
void *alloc_consistent (int flags, size_t size, dma_addr_t *dma_handle);
to solve everyone's needs, but I'm not volunteering to do that :)

I'll go move the file and send the changeset to Linus.

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/