On Wed, Mar 26, 2014 at 1:27 PM, Ben Skeggs skeggsb@gmail.com wrote:
On Tue, Mar 25, 2014 at 9:10 AM, Thierry Reding thierry.reding@gmail.com wrote:
On Mon, Mar 24, 2014 at 05:42:33PM +0900, Alexandre Courbot wrote:
GK20A does not embed a dedicated COPY engine and thus cannot allocate the copy channel that nouveau_accel_init() attempts to create. It also lacks any display hardware, so the creation of a software channel does not apply neither.
Perhaps this should be two separate patches?
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
[...]
if (device->chipset == 0xea) {
/* gk20a does not have CE0/CE1 */
This would be another good candidate for a feature flag.
There are ways to query this in a chipset-independent way. However, despite reporting it as an error if no copy engines are available, the code should continue on without the channel happily. Perhaps we can just punt the relevent error messages to a debug loglevel for now?
Do you know how to query this in a chipset-independant way? I have failed to find any information for this.
The code does continue without any issue after reporting the error, so indeed that check is not strictly necessary. But I was just mimicking what follows right after:
if (device->chipset >= 0xa3 && device->chipset != 0xaa && device->chipset != 0xac) { ret = nouveau_channel_new(drm, &drm->client, NVDRM_DEVICE, NVDRM_CHAN + 1, NvDmaFB, NvDmaTT, &drm->cechan); if (ret) NV_ERROR(drm, "failed to create ce channel, %d\n", ret);
arg0 = NvDmaFB; arg1 = NvDmaTT; } else { arg0 = NvDmaFB; arg1 = NvDmaTT; }
So if we are trying to avoid showing this error for 0xa0 class devices, why not for NV_E0?