2016-11-24 08:07:36 UTC
I am curious on the current operation of the driver with regards to the
ring selection and usage.
As far as I can gather from the code, the driver is happy for the kernel
to choose the ring (on configurations with more than one ring of course)
and seems to be able to run mostly independently of the selection. (I
said mostly because there are some batches which are explicitly sent to
BSD0 ring, based on the feature matrix.)
Have I missed something or there is really nothing else special the
driver does with respect to which ring it is running?
I am looking into this in the context of the long standing desire to
auto-balance workloads better. For example
https://bugs.freedesktop.org/show_bug.cgi?id=97872 expresses the need to
balance per batch buffer as well.
This leads me to the second part of the question and that is the
hardware state. Does the driver currently depend on the hardware state?
Because if we would to implement per batch buffer load balancing in the
kernel, the driver would have to make sure that it doesn't depend on any
state left by the previous batch. Perhaps this is not a concern, I
really know nothing of how the BSD engines are used.
If perhaps it doesn't already, then the change to support this could be
quite simple and I could perhaps prototype something as an RFC.