Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'drm-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6

+46 -37
+33 -33
drivers/char/drm/drm_bufs.c
··· 48 48 } 49 49 EXPORT_SYMBOL(drm_get_resource_len); 50 50 51 - static drm_local_map_t *drm_find_matching_map(drm_device_t *dev, 52 - drm_local_map_t *map) 51 + static drm_map_list_t *drm_find_matching_map(drm_device_t *dev, 52 + drm_local_map_t *map) 53 53 { 54 54 struct list_head *list; 55 55 ··· 57 57 drm_map_list_t *entry = list_entry(list, drm_map_list_t, head); 58 58 if (entry->map && map->type == entry->map->type && 59 59 entry->map->offset == map->offset) { 60 - return entry->map; 60 + return entry; 61 61 } 62 62 } 63 63 ··· 114 114 * type. Adds the map to the map list drm_device::maplist. Adds MTRR's where 115 115 * applicable and if supported by the kernel. 116 116 */ 117 - int drm_addmap(drm_device_t * dev, unsigned int offset, 118 - unsigned int size, drm_map_type_t type, 119 - drm_map_flags_t flags, drm_local_map_t ** map_ptr) 117 + int drm_addmap_core(drm_device_t * dev, unsigned int offset, 118 + unsigned int size, drm_map_type_t type, 119 + drm_map_flags_t flags, drm_map_list_t **maplist) 120 120 { 121 121 drm_map_t *map; 122 122 drm_map_list_t *list; 123 123 drm_dma_handle_t *dmah; 124 - drm_local_map_t *found_map; 125 124 126 125 map = drm_alloc( sizeof(*map), DRM_MEM_MAPS ); 127 126 if ( !map ) ··· 165 166 * needing to be aware of it. Therefore, we just return success 166 167 * when the server tries to create a duplicate map. 167 168 */ 168 - found_map = drm_find_matching_map(dev, map); 169 - if (found_map != NULL) { 170 - if (found_map->size != map->size) { 169 + list = drm_find_matching_map(dev, map); 170 + if (list != NULL) { 171 + if (list->map->size != map->size) { 171 172 DRM_DEBUG("Matching maps of type %d with " 172 173 "mismatched sizes, (%ld vs %ld)\n", 173 - map->type, map->size, found_map->size); 174 - found_map->size = map->size; 174 + map->type, map->size, list->map->size); 175 + list->map->size = map->size; 175 176 } 176 177 177 178 drm_free(map, sizeof(*map), DRM_MEM_MAPS); 178 - *map_ptr = found_map; 179 + *maplist = list; 179 180 return 0; 180 181 } 181 182 ··· 263 264 : map->offset, dev); 264 265 up(&dev->struct_sem); 265 266 266 - *map_ptr = map; 267 + *maplist = list; 267 268 return 0; 269 + } 270 + 271 + int drm_addmap(drm_device_t *dev, unsigned int offset, 272 + unsigned int size, drm_map_type_t type, 273 + drm_map_flags_t flags, drm_local_map_t **map_ptr) 274 + { 275 + drm_map_list_t *list; 276 + int rc; 277 + 278 + rc = drm_addmap_core(dev, offset, size, type, flags, &list); 279 + if (!rc) 280 + *map_ptr = list->map; 281 + return rc; 268 282 } 269 283 EXPORT_SYMBOL(drm_addmap); 270 284 ··· 287 275 drm_file_t *priv = filp->private_data; 288 276 drm_device_t *dev = priv->head->dev; 289 277 drm_map_t map; 290 - drm_map_t *map_ptr; 278 + drm_map_list_t *maplist; 291 279 drm_map_t __user *argp = (void __user *)arg; 292 280 int err; 293 - unsigned long handle = 0; 294 281 295 282 if (!(filp->f_mode & 3)) 296 283 return -EACCES; /* Require read/write */ ··· 298 287 return -EFAULT; 299 288 } 300 289 301 - err = drm_addmap(dev, map.offset, map.size, map.type, map.flags, 302 - &map_ptr); 290 + err = drm_addmap_core(dev, map.offset, map.size, map.type, map.flags, 291 + &maplist); 303 292 304 - if (err) { 293 + if (err) 305 294 return err; 306 - } 307 295 308 - { 309 - drm_map_list_t *_entry; 310 - list_for_each_entry(_entry, &dev->maplist->head, head) { 311 - if (_entry->map == map_ptr) 312 - handle = _entry->user_token; 313 - } 314 - if (!handle) 315 - return -EFAULT; 316 - } 317 - 318 - if (copy_to_user(argp, map_ptr, sizeof(*map_ptr))) 296 + if (copy_to_user(argp, maplist->map, sizeof(drm_map_t))) 319 297 return -EFAULT; 320 - if (put_user(handle, &argp->handle)) 298 + if (put_user(maplist->user_token, &argp->handle)) 321 299 return -EFAULT; 322 300 return 0; 323 301 } ··· 1041 1041 return 0; 1042 1042 } 1043 1043 1044 - int drm_addbufs_fb(drm_device_t *dev, drm_buf_desc_t *request) 1044 + static int drm_addbufs_fb(drm_device_t *dev, drm_buf_desc_t *request) 1045 1045 { 1046 1046 drm_device_dma_t *dma = dev->dma; 1047 1047 drm_buf_entry_t *entry;
+1 -1
drivers/char/drm/drm_context.c
··· 308 308 * 309 309 * Attempt to set drm_device::context_flag. 310 310 */ 311 - int drm_context_switch( drm_device_t *dev, int old, int new ) 311 + static int drm_context_switch( drm_device_t *dev, int old, int new ) 312 312 { 313 313 if ( test_and_set_bit( 0, &dev->context_flag ) ) { 314 314 DRM_ERROR( "Reentering -- FIXME\n" );
+1
drivers/char/drm/drm_sysfs.c
··· 17 17 #include <linux/err.h> 18 18 19 19 #include "drm_core.h" 20 + #include "drmP.h" 20 21 21 22 struct drm_sysfs_class { 22 23 struct class_device_attribute attr;
+11 -3
drivers/char/drm/mga_dma.c
··· 417 417 return 0; 418 418 } 419 419 420 + #if __OS_HAS_AGP 420 421 /** 421 422 * Bootstrap the driver for AGP DMA. 422 423 * ··· 561 560 DRM_INFO("Initialized card for AGP DMA.\n"); 562 561 return 0; 563 562 } 563 + #else 564 + static int mga_do_agp_dma_bootstrap(drm_device_t * dev, 565 + drm_mga_dma_bootstrap_t * dma_bs) 566 + { 567 + return -EINVAL; 568 + } 569 + #endif 564 570 565 571 /** 566 572 * Bootstrap the driver for PCI DMA. ··· 705 697 * carve off portions of it for internal uses. The remaining memory 706 698 * is returned to user-mode to be used for AGP textures. 707 699 */ 708 - 709 700 if (is_agp) { 710 701 err = mga_do_agp_dma_bootstrap(dev, dma_bs); 711 702 } ··· 939 932 drm_core_ioremapfree(dev->agp_buffer_map, dev); 940 933 941 934 if (dev_priv->used_new_dma_init) { 935 + #if __OS_HAS_AGP 942 936 if (dev_priv->agp_mem != NULL) { 943 937 dev_priv->agp_textures = NULL; 944 938 drm_unbind_agp(dev_priv->agp_mem); ··· 952 944 if ((dev->agp != NULL) && dev->agp->acquired) { 953 945 err = drm_agp_release(dev); 954 946 } 955 - 947 + #endif 956 948 dev_priv->used_new_dma_init = 0; 957 949 } 958 950 ··· 973 965 } 974 966 } 975 967 976 - return 0; 968 + return err; 977 969 } 978 970 979 971 int mga_dma_init( DRM_IOCTL_ARGS )