On Wednesday, November 19, 2008 6:45 pm Eric Anholt wrote:
> On Fri, 2008-11-07 at 15:31 -0800, Jesse Barnes wrote:
> > [Justify this massive code drop here.]
>
> Don't forget this bit :)

Heh, will fix.  Thanks a ton for looking through this; I know it's huge and in 
some places hard to follow.

> > +static int drm_mode_object_get(struct drm_device *dev,
> > +                          struct drm_mode_object *obj, uint32_t obj_type)
> > +{
>
> Disagreement between function name and doc.  Might want to assert the
> lock.

Fixed, including assertion (added a WARN(!mutex_is_locked...)).

> > +struct drm_display_mode *drm_mode_create(struct drm_device *dev)
> > +{
> > +   struct drm_display_mode *nmode;
> > +
> > +   nmode = kzalloc(sizeof(struct drm_display_mode), GFP_KERNEL);
> > +   if (!nmode)
> > +           return NULL;
> > +
> > +   drm_mode_object_get(dev, &nmode->base, DRM_MODE_OBJECT_MODE);
>
> doc claims no locking but calling drm_mode_object_get with lock unheld.

Fixed, indicated that the mode config lock must be held.

> > +   /* add enum element 0-2 */
> > +   for (i = 0; i < 3; i++)
> > +           
> > drm_property_add_enum(dev->mode_config.dvi_i_subconnector_property, i,
> > drm_subconnector_enum_list[i].type,
> > +                           drm_subconnector_enum_list[i].name);
>
> Hardcoded array indices so far from the definitions of the array are a
> little scary.  Perhaps separate arrays for dvi-i/tv, and ARRAY_SIZE()?

Yeah, this is a little scary, as are the 150 character lines.  I split the 
arrays and added a "get name" function macro but Dave may have better ideas 
about this.

>
> > +/**
> > + * drm_crtc_convert_to_umode - convert a modeinfo into a
> > drm_display_mode + * @out: drm_display_mode to return to the user
> > + * @in: drm_mode_modeinfo to use
> > + *
> > + * LOCKING:
> > + * None.
> > + *
> > + * Convert a drmo_mode_modeinfo into a drm_display_mode structure to
> > return to + * the caller.
>
> typo: drmo_mode_modeinfo

Fixed.

> > +   /* handle this in 4 parts */
> > +   /* FBs */
> > +   if (card_res->count_fbs >= fb_count) {
> > +           copied = 0;
> > +           fb_id = (uint32_t *)(unsigned long)card_res->fb_id_ptr;
>
> (uint32_t __user *) to appease sparse

Fixed.

> > +   if (req->flags & DRM_MODE_CURSOR_BO) {
> > +           /* Turn of the cursor if handle is 0 */
>
> s/of/off/

Fixed.

>
> > +           if (crtc->funcs->cursor_set) {
> > +                   ret = crtc->funcs->cursor_set(crtc, file_priv, 
> > req->handle,
> > req->width, req->height); +         } else {
> > +                   DRM_ERROR("crtc does not support cursor\n");
> > +                   ret = -EFAULT;
>
> these should be -EINVAL or -ENXIO or something not -EFAULT.  (user
> didn't hand you a bad pointer)

Right.  -ENXIO sounds good (-ENODEV would probably also work).

> > +                   goto out;
> > +           }
> > +   }
> > +
> > +   if (req->flags & DRM_MODE_CURSOR_MOVE) {
> > +           if (crtc->funcs->cursor_move) {
> > +                   ret = crtc->funcs->cursor_move(crtc, req->x, req->y);
> > +           } else {
> > +                   DRM_ERROR("crtc does not support cursor\n");
> > +                   ret = -EFAULT;
> > +                   goto out;
> > +           }
> > +   }
> > +out:
> > +   mutex_unlock(&dev->mode_config.mutex);
> > +   return ret;
> > +}
>
> This ioctl seems to be a 1:1 mapping of cursors to crtcs.  As far as I
> understand, we have a many:1 mapping of cursors to crtcs possible on
> Intel, and it seems relevant for MPX.  I guess that could be a future
> ioctl, though.

Yeah, I think multiple cursors will either have to be a new ioctl or just done 
in higher level sw.

> > +/*
> > + *
> > + */
>
> /* Least informative comment ever. */

Oh yeah I like your comment better, fixed (added a real comment for the fn).

> > diff --git a/drivers/gpu/drm/drm_crtc_helper.c
> > b/drivers/gpu/drm/drm_crtc_helper.c new file mode 100644
> > index 0000000..a0f3ffe
> > --- /dev/null
> > +++ b/drivers/gpu/drm/drm_crtc_helper.c
> >
> > +   /* XXX free adjustedmode */
> > +   drm_mode_destroy(dev, adjusted_mode);
> > +   /* TODO */
> > +// if (scrn->pScreen)
> > +//         drm_crtc_set_screen_sub_pixel_order(dev);
>
> // comments

Woo dead code.  Fixed all these up.

> > + */
> > +/*
> > + * Copyright © 2007 Dave Airlie
> > + */
>
> Is there a license associated with this copyright?

The file is licensed, so I'm not sure if it matters that the copyright is in 
separate comment (after all, what does a comment license?  the comment itself?  
the next N lines?).  But it's certainly cleaner to keep things together, so I 
moved it to the top.

> > +/* FIXME: what we don't have a list sort function? */
> > +/* list sort from Mark J Roberts ([EMAIL PROTECTED]) */
>
> From what I could see, this would be GPL-licensed, but the header on
> this file says XF86.

Added a note at the top indicating that portions are GPL; not sure if I can 
remove the XF86 license and just point at "COPYING" or not though...

> > --- /dev/null
> > +++ b/include/drm/drm_crtc.h
> > @@ -0,0 +1,716 @@
> > +/*
> > + * Copyright © 2006 Keith Packard
> > + * Copyright © 2007 Intel Corporation
> > + *   Jesse Barnes <[EMAIL PROTECTED]>
> > + */
>
> Copyright with no license?

Fixed.  Came from X so I added the X boilerplate.

>
> > diff --git a/include/drm/drm_crtc_helper.h
> > b/include/drm/drm_crtc_helper.h new file mode 100644
> > index 0000000..e770205
> > --- /dev/null
> > +++ b/include/drm/drm_crtc_helper.h
> > @@ -0,0 +1,96 @@
> > +/*
> > + * Copyright © 2006 Keith Packard
> > + * Copyright © 2007 Intel Corporation
> > + *   Jesse Barnes <[EMAIL PROTECTED]>
> > + */
>
> License?

Ditto.

>
> > diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
> > new file mode 100644
> > index 0000000..dccfba9
> > --- /dev/null
> > +++ b/include/drm/drm_edid.h
> > @@ -0,0 +1,178 @@
> > +#ifndef __DRM_EDID_H__
> > +#define __DRM_EDID_H__
> > +
> > +#include <linux/types.h>
>
> Copyright?

This one is all new, but I put it under the X license for consistency.

-- 
Jesse Barnes, Intel Open Source Technology Center


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to