Merge commit '900cfa46191a7d87cf1891924cb90499287fd235'; branches 'timers/nohz',...
[cascardo/linux.git] / drivers / char / drm / drm_proc.c
index b204498..93b1e04 100644 (file)
@@ -87,34 +87,35 @@ static struct drm_proc_list {
  * "/proc/dri/%minor%/", and each entry in proc_list as
  * "/proc/dri/%minor%/%name%".
  */
-int drm_proc_init(drm_device_t * dev, int minor,
-                 struct proc_dir_entry *root, struct proc_dir_entry **dev_root)
+int drm_proc_init(struct drm_minor *minor, int minor_id,
+                 struct proc_dir_entry *root)
 {
        struct proc_dir_entry *ent;
        int i, j;
        char name[64];
 
-       sprintf(name, "%d", minor);
-       *dev_root = proc_mkdir(name, root);
-       if (!*dev_root) {
+       sprintf(name, "%d", minor_id);
+       minor->dev_root = proc_mkdir(name, root);
+       if (!minor->dev_root) {
                DRM_ERROR("Cannot create /proc/dri/%s\n", name);
                return -1;
        }
 
        for (i = 0; i < DRM_PROC_ENTRIES; i++) {
                ent = create_proc_entry(drm_proc_list[i].name,
-                                       S_IFREG | S_IRUGO, *dev_root);
+                                       S_IFREG | S_IRUGO, minor->dev_root);
                if (!ent) {
                        DRM_ERROR("Cannot create /proc/dri/%s/%s\n",
                                  name, drm_proc_list[i].name);
                        for (j = 0; j < i; j++)
                                remove_proc_entry(drm_proc_list[i].name,
-                                                 *dev_root);
+                                                 minor->dev_root);
                        remove_proc_entry(name, root);
+                       minor->dev_root = NULL;
                        return -1;
                }
                ent->read_proc = drm_proc_list[i].f;
-               ent->data = dev;
+               ent->data = minor;
        }
 
        return 0;
@@ -130,18 +131,17 @@ int drm_proc_init(drm_device_t * dev, int minor,
  *
  * Remove all proc entries created by proc_init().
  */
-int drm_proc_cleanup(int minor, struct proc_dir_entry *root,
-                    struct proc_dir_entry *dev_root)
+int drm_proc_cleanup(struct drm_minor *minor, struct proc_dir_entry *root)
 {
        int i;
        char name[64];
 
-       if (!root || !dev_root)
+       if (!root || !minor->dev_root)
                return 0;
 
        for (i = 0; i < DRM_PROC_ENTRIES; i++)
-               remove_proc_entry(drm_proc_list[i].name, dev_root);
-       sprintf(name, "%d", minor);
+               remove_proc_entry(drm_proc_list[i].name, minor->dev_root);
+       sprintf(name, "%d", minor->index);
        remove_proc_entry(name, root);
 
        return 0;
@@ -163,7 +163,8 @@ int drm_proc_cleanup(int minor, struct proc_dir_entry *root,
 static int drm_name_info(char *buf, char **start, off_t offset, int request,
                         int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
 
        if (offset > DRM_PROC_LIMIT) {
@@ -205,11 +206,11 @@ static int drm_name_info(char *buf, char **start, off_t offset, int request,
 static int drm__vm_info(char *buf, char **start, off_t offset, int request,
                        int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
-       drm_map_t *map;
-       drm_map_list_t *r_list;
-       struct list_head *list;
+       struct drm_map *map;
+       struct drm_map_list *r_list;
 
        /* Hardcoded from _DRM_FRAME_BUFFER,
           _DRM_REGISTERS, _DRM_SHM, _DRM_AGP, and
@@ -229,9 +230,7 @@ static int drm__vm_info(char *buf, char **start, off_t offset, int request,
        DRM_PROC_PRINT("slot     offset       size type flags    "
                       "address mtrr\n\n");
        i = 0;
-       if (dev->maplist != NULL)
-               list_for_each(list, &dev->maplist->head) {
-               r_list = list_entry(list, drm_map_list_t, head);
+       list_for_each_entry(r_list, &dev->maplist, head) {
                map = r_list->map;
                if (!map)
                        continue;
@@ -239,17 +238,18 @@ static int drm__vm_info(char *buf, char **start, off_t offset, int request,
                        type = "??";
                else
                        type = types[map->type];
-               DRM_PROC_PRINT("%4d 0x%08lx 0x%08lx %4.4s  0x%02x 0x%08x ",
+               DRM_PROC_PRINT("%4d 0x%08lx 0x%08lx %4.4s  0x%02x 0x%08lx ",
                               i,
                               map->offset,
-                              map->size, type, map->flags, r_list->user_token);
+                              map->size, type, map->flags,
+                              (unsigned long) r_list->user_token);
                if (map->mtrr < 0) {
                        DRM_PROC_PRINT("none\n");
                } else {
                        DRM_PROC_PRINT("%4d\n", map->mtrr);
                }
                i++;
-               }
+       }
 
        if (len > request + offset)
                return request;
@@ -263,7 +263,8 @@ static int drm__vm_info(char *buf, char **start, off_t offset, int request,
 static int drm_vm_info(char *buf, char **start, off_t offset, int request,
                       int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int ret;
 
        mutex_lock(&dev->struct_mutex);
@@ -286,10 +287,11 @@ static int drm_vm_info(char *buf, char **start, off_t offset, int request,
 static int drm__queues_info(char *buf, char **start, off_t offset,
                            int request, int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
        int i;
-       drm_queue_t *q;
+       struct drm_queue *q;
 
        if (offset > DRM_PROC_LIMIT) {
                *eof = 1;
@@ -336,7 +338,8 @@ static int drm__queues_info(char *buf, char **start, off_t offset,
 static int drm_queues_info(char *buf, char **start, off_t offset, int request,
                           int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int ret;
 
        mutex_lock(&dev->struct_mutex);
@@ -359,9 +362,10 @@ static int drm_queues_info(char *buf, char **start, off_t offset, int request,
 static int drm__bufs_info(char *buf, char **start, off_t offset, int request,
                          int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
-       drm_device_dma_t *dma = dev->dma;
+       struct drm_device_dma *dma = dev->dma;
        int i;
 
        if (!dma || offset > DRM_PROC_LIMIT) {
@@ -408,7 +412,8 @@ static int drm__bufs_info(char *buf, char **start, off_t offset, int request,
 static int drm_bufs_info(char *buf, char **start, off_t offset, int request,
                         int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int ret;
 
        mutex_lock(&dev->struct_mutex);
@@ -431,9 +436,10 @@ static int drm_bufs_info(char *buf, char **start, off_t offset, int request,
 static int drm__clients_info(char *buf, char **start, off_t offset,
                             int request, int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
-       drm_file_t *priv;
+       struct drm_file *priv;
 
        if (offset > DRM_PROC_LIMIT) {
                *eof = 1;
@@ -444,10 +450,10 @@ static int drm__clients_info(char *buf, char **start, off_t offset,
        *eof = 0;
 
        DRM_PROC_PRINT("a dev   pid    uid      magic     ioctls\n\n");
-       for (priv = dev->file_first; priv; priv = priv->next) {
+       list_for_each_entry(priv, &dev->filelist, lhead) {
                DRM_PROC_PRINT("%c %3d %5d %5d %10u %10lu\n",
                               priv->authenticated ? 'y' : 'n',
-                              priv->minor,
+                              priv->minor->index,
                               priv->pid,
                               priv->uid, priv->magic, priv->ioctl_count);
        }
@@ -464,7 +470,8 @@ static int drm__clients_info(char *buf, char **start, off_t offset,
 static int drm_clients_info(char *buf, char **start, off_t offset,
                            int request, int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int ret;
 
        mutex_lock(&dev->struct_mutex);
@@ -478,9 +485,10 @@ static int drm_clients_info(char *buf, char **start, off_t offset,
 static int drm__vma_info(char *buf, char **start, off_t offset, int request,
                         int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int len = 0;
-       drm_vma_entry_t *pt;
+       struct drm_vma_entry *pt;
        struct vm_area_struct *vma;
 #if defined(__i386__)
        unsigned int pgprot;
@@ -497,7 +505,7 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
        DRM_PROC_PRINT("vma use count: %d, high_memory = %p, 0x%08lx\n",
                       atomic_read(&dev->vma_count),
                       high_memory, virt_to_phys(high_memory));
-       for (pt = dev->vmalist; pt; pt = pt->next) {
+       list_for_each_entry(pt, &dev->vmalist, head) {
                if (!(vma = pt->vma))
                        continue;
                DRM_PROC_PRINT("\n%5d 0x%08lx-0x%08lx %c%c%c%c%c%c 0x%08lx000",
@@ -537,7 +545,8 @@ static int drm__vma_info(char *buf, char **start, off_t offset, int request,
 static int drm_vma_info(char *buf, char **start, off_t offset, int request,
                        int *eof, void *data)
 {
-       drm_device_t *dev = (drm_device_t *) data;
+       struct drm_minor *minor = (struct drm_minor *) data;
+       struct drm_device *dev = minor->dev;
        int ret;
 
        mutex_lock(&dev->struct_mutex);