Re: how to get virtual address from dma address

From: Pete Zaitcev (zaitcev@redhat.com)
Date: Sat Oct 06 2001 - 13:19:37 EST


> > I can not even count on one hand how many people I've helped
> > converting, who wanted a bus_to_virt() and when I showed them
> > how to do it with information the device provided already they
> > said "oh wow, I never would have thought of that". That process
> > won't happen as often with the suggested feature.

> I look at all the hash-table stuff in the usb-ohci driver and I think
> to myself about all the complexity that is there (and I haven't
> managed to convince myself yet that it is actually SMP-safe) and all
> the time wasted doing that stuff, when on probably 95% of the
> machines that use the usb-ohci driver, the hashing stuff is totally
> unnecessary. I am talking about powermacs, which don't have an iommu,
> and where the reverse mapping is as simple as adding a constant.

That's one kinky driver, no wonder you were traumatized by looking
at it. I think you must not project the shock and horror of usb-ohci
onto other drivers. Gerard already defended the Symbios SCSI.

There may be some approaches to deal with the problem. One is
to leave hash in and clean up the rest. It would probably
break a number of devices and take a time to straighten out.
Another possibility is to limit the number of URBs that are
posted in any given time to the hardware.

> That was my second argument, which you didn't reply to - that doing
> the reverse mapping is very simple on some platforms, and so the right
> place to do reverse mapping is in the platform-aware code, not in the
> drivers. On other platforms the reverse mapping is more complex, but
> the complexity is bounded by the complexity that is already there in
> drivers like the usb-ohci driver.

No, it's not bounded. Outside implementation has to be much more
complex to accomodate slightly different requirements of different
drivers.

And remember, you can put it in, but cannot pull it out.

-- Pete
-
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/



This archive was generated by hypermail 2b29 : Sun Oct 07 2001 - 21:00:42 EST