For a special device (streaming video capture) in a Sun Blade150, I want to
configure the devices on the PCI in such a way, that this special device
gets the PCI-bus within a certain max-time, when it request the bus. And
when it got the bus, it should keep it for a minimum number of bus-cycles.
As far as I know the PCI-bus,a PCI-device has a registor with a
latency-timer value on board. This tells the board how much bus-cycles it
may keep the bus, after getting it.
There's also another setting, called "max_grant". If PCI-devices or the
PCI-arbiter use the max_grant, is not clear to me. Even when used, its
unclear to me if it could give me a worse-case max-grant time before the
device will get the bus. If it's not used, the only other way, I think, to
give the device, faster the bus, is by decreasing the latency-timers of all
the other devices on the same PCI-bus.
In one of Sun's whitepapers about UPA, I saw that there are 2 methods
possible in which the arbiter on the bus could work: in a round-robin
fashion or based on PCI-slot priority.
Normally the round-robin is used I think and I don't know if it's changable.
PCI-priority could solve maybe else also the problem.
Are there tools available under Solaris ,like setpci under Linux, to change
these values ? I've tried to set the values via the driver.conf files and
via /etc/system for all or specific devices. I can set/cange the values for
the special device, thats not the problem. But I want to set(decrease) on
the sametime the values for latency for the other devices, like IDE etc. But
this didn't seem that anything did change in the behaviour of the devices.
I know, playing with these values, could lead in a corrupted disk, or system
etc. I have to find out what possible is. First I've to findout the tools
and the way how to do it under Solaris2.8/Sparc Sun Blade150.