[Nouveau] [libdrm 01/13] nouveau: move more abi16-specific logic into abi16.c

Emil Velikov emil.l.velikov at gmail.com
Thu Nov 26 12:21:40 PST 2015


Hi Ben,

On 26 November 2015 at 07:13, Ben Skeggs <skeggsb at gmail.com> wrote:
> From: Ben Skeggs <bskeggs at redhat.com>
>
> Signed-off-by: Ben Skeggs <bskeggs at redhat.com>
> ---
>  nouveau/abi16.c   | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
>  nouveau/nouveau.c | 56 +++++++------------------------------------------
>  nouveau/private.h |  7 ++-----
>  3 files changed, 67 insertions(+), 58 deletions(-)
>
> diff --git a/nouveau/abi16.c b/nouveau/abi16.c
> index 59bc436..8f24ba2 100644
> --- a/nouveau/abi16.c
> +++ b/nouveau/abi16.c

> +drm_private bool
> +abi16_object(struct nouveau_object *obj, int (**func)(struct nouveau_object *))
> +{
> +       struct nouveau_object *parent = obj->parent;
> +
> +       if ((parent->length != 0 && parent->oclass == NOUVEAU_DEVICE_CLASS)) {
> +               if (obj->oclass == NOUVEAU_FIFO_CHANNEL_CLASS) {
> +                       struct nouveau_device *dev = (void *)parent;
> +                       if (dev->chipset < 0xc0)
> +                               *func = abi16_chan_nv04;
> +                       else
> +                       if (dev->chipset < 0xe0)
> +                               *func = abi16_chan_nvc0;
> +                       else
> +                               *func = abi16_chan_nve0;
> +                       return true;
> +               }
> +       } else
> +       if ((parent->length != 0 &&
> +            parent->oclass == NOUVEAU_FIFO_CHANNEL_CLASS)) {
> +               if (obj->oclass == NOUVEAU_NOTIFIER_CLASS) {
> +                       *func = abi16_ntfy;
> +                       return true;
> +               }
> +
> +               *func = abi16_engobj;
> +               return false;
Surely this is meant to be true, right ?

> +       }
> +
> +       *func = NULL;
> +       return false;
> +}
> +
> +drm_private void
>  abi16_bo_info(struct nouveau_bo *bo, struct drm_nouveau_gem_info *info)
>  {
>         struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
> diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c
> index 97fd77b..8a0be2f 100644
> --- a/nouveau/nouveau.c
> +++ b/nouveau/nouveau.c
> @@ -135,6 +135,7 @@ nouveau_device_wrap(int fd, int close, struct nouveau_device **pdev)
>                 nvdev->gart_limit_percent = 80;
>         DRMINITLISTHEAD(&nvdev->bo_list);
>         nvdev->base.object.oclass = NOUVEAU_DEVICE_CLASS;
> +       nvdev->base.object.length = ~0;
There are no hints about this and it's use in abi16_object - worth
splitting out or mentioning it in the commit message ?

-Emil


More information about the Nouveau mailing list