Messages in this thread | | | Subject | Re: [PATCH] ibmvscsi driver - sixth version | From | Dave Boutcher <> | Date | Wed, 31 Mar 2004 17:51:57 -0600 |
| |
On 31 Mar 2004 18:39:57 -0500, James Bottomley <James.Bottomley@SteelEye.com> wrote: >> > 14) why are you faking a PCI bus? The following is very, very wrong: >> > >> > +static struct pci_dev iseries_vscsi_dev = { >> > + .dev.bus = &pci_bus_type, >> > + .dev.bus_id = "vscsi", >> > + .dev.release = noop_release >> > >> > Did I mention "very" wrong? :) >> Because for iseries it is implemented in the pci code. While it may >> look wrong, it is actually correct. Check out >> arch/ppc64/kernel/iSeries_iommu.c and arch/ppc64/kernel/dma.c. >> This device has to have dev->bus == &pci_bus_type otherwise the >> dma_mapping_foo functions won't work correctly. > > Erm, something is very wrong in the iSeries code then. This > iseries_vio_device is a struct device. As such, it should contain all > the information it needs for the DMA API to act on it without performing > silly pci device tricks. > > This looks like it's done because the iseries should be converted to the > generic device infrastructure, but in fact it's not. Since the generic > API has been around for over a year and was designed to solve precisely > these very problems it needs fixing rather than trying to work around it > in a driver. There will always be 1 (no more, no less) of these struct devices in the system, so I'll move the definition of this into iSeries_iommu and then just reference it from the driver. I think that should abstract things sufficiently.
Dave B - 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/
| |