"legacy" usb stack fixes

Bernd Walter ticso at cicely7.cicely.de
Sat Sep 13 17:36:28 UTC 2008

On Fri, Sep 12, 2008 at 09:09:45PM -0700, Julian Elischer wrote:
> Scott Long wrote:
> >On Fri, 12 Sep 2008, M. Warner Losh wrote:
> >>Yes.  A SIM will serialize all operations, and the most logical place
> >>for that is the computer <-> usb interface, which is the host
> >>controller.  So having one SIM per host controller would be the
> >>optimal placement.  Having one SIM per usb device doesn't result in
> >>any more real parallelism because the host controller necessarily
> >>serializes things because of how USB is defined...
> >
> >Correct.  Another argument for having a SIM per controller/bus and not 
> >per target is that the SIM is responsible for managing all resources on a
> >controller.  USB is still a bus topology, and thus certain resources are
> >finite and shared, be they bandwidth, arbitration, or concurrency. 
> >Granted, USB is simple enough that it doesn't give you much control over 
> >these resources, but having the SIM be at the target level gives the 
> >system even less control and visibility.  If a future enhancement to USB
> >grows the ability to do useful things like more concurrency, it'll be 
> >essential for the SIM to have a controller-wide view of this.
> cam/umass used to have a SIM per USB bus but it got changed sometime 
> around 1999-2001 from memory. It was haled at the time as a great step 
> forward when each device got its own SIM but I could never work out why.

I did the change at that time and it was not fully agreed by everyone.
There was a single global SIM for all umass devices.
One of the limitations was that each umass device was represented with
a single ID and the maxid was hardcoded.
The reason for the change however was that the SIM wasn't reprobed
correctly and a manual camcontrol rescan was required under some
conditions - especially with multi LUN devices.
None of the persons who disagreed with the change switched it back
to single SIM with a better fix.

> it did solve some problems though I forget what they where.

Yes it did, but it could have been fixed in a different way with
a single SIM as well.
At that time I thought multi SIM would be good idea, but I'm not that
sure anymore, since there are also some good arguments against.
One of the positive effects is that it is a bit easier to get from the
USB device notified by devd to the CAM device to automatically handle
things if e.g. your picture camera is connected or start syncing
important data if your backup disk gets connected.
Another point that I saw was using USB to SCSI converters, where you
can have a single USB device owning a complete SCSI bus, but those
devices are rare and not umass compliant.
All in all the multi SIM as we have today is more a workaround for
different other problems.

In short: the original reasons for the change are not strong enough
to keep it that way.

B.Walter <bernd at bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.

More information about the freebsd-current mailing list