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

* 'drm-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
drm/r128: fix r128 ioremaps to use ioremap_wc.
drm: cleanup properly in drm_get_dev() failure paths
drm: clean the map list before destroying the hash table
drm: remove unreachable code in drm_sysfs.c
drm: add control node checks missing from kms merge
drm/kms: don't try to shortcut drm mode set function
drm/radeon: bump minor version for occlusion queries support

+16 -32
-19
drivers/gpu/drm/drm_crtc_helper.c
··· 561 561 int saved_x, saved_y; 562 562 struct drm_encoder *encoder; 563 563 bool ret = true; 564 - bool depth_changed, bpp_changed; 565 564 566 565 adjusted_mode = drm_mode_duplicate(dev, mode); 567 566 ··· 568 569 569 570 if (!crtc->enabled) 570 571 return true; 571 - 572 - if (old_fb && crtc->fb) { 573 - depth_changed = (old_fb->depth != crtc->fb->depth); 574 - bpp_changed = (old_fb->bits_per_pixel != 575 - crtc->fb->bits_per_pixel); 576 - } else { 577 - depth_changed = true; 578 - bpp_changed = true; 579 - } 580 572 581 573 saved_mode = crtc->mode; 582 574 saved_x = crtc->x; ··· 579 589 crtc->mode = *mode; 580 590 crtc->x = x; 581 591 crtc->y = y; 582 - 583 - if (drm_mode_equal(&saved_mode, &crtc->mode)) { 584 - if (saved_x != crtc->x || saved_y != crtc->y || 585 - depth_changed || bpp_changed) { 586 - ret = !crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, 587 - old_fb); 588 - goto done; 589 - } 590 - } 591 592 592 593 /* Pass our mode to the connectors and the CRTC to give them a chance to 593 594 * adjust it according to limitations or connector properties, and also
+2 -1
drivers/gpu/drm/drm_drv.c
··· 456 456 retcode = -EINVAL; 457 457 } else if (((ioctl->flags & DRM_ROOT_ONLY) && !capable(CAP_SYS_ADMIN)) || 458 458 ((ioctl->flags & DRM_AUTH) && !file_priv->authenticated) || 459 - ((ioctl->flags & DRM_MASTER) && !file_priv->is_master)) { 459 + ((ioctl->flags & DRM_MASTER) && !file_priv->is_master) || 460 + (!(ioctl->flags & DRM_CONTROL_ALLOW) && (file_priv->minor->type == DRM_MINOR_CONTROL))) { 460 461 retcode = -EACCES; 461 462 } else { 462 463 if (cmd & (IOC_IN | IOC_OUT)) {
+9 -6
drivers/gpu/drm/drm_stub.c
··· 402 402 if (dev->driver->load) { 403 403 ret = dev->driver->load(dev, ent->driver_data); 404 404 if (ret) 405 - goto err_g3; 405 + goto err_g4; 406 406 } 407 407 408 408 /* setup the grouping for the legacy output */ 409 409 if (drm_core_check_feature(dev, DRIVER_MODESET)) { 410 410 ret = drm_mode_group_init_legacy_group(dev, &dev->primary->mode_group); 411 411 if (ret) 412 - goto err_g3; 412 + goto err_g4; 413 413 } 414 414 415 415 list_add_tail(&dev->driver_item, &driver->device_list); ··· 420 420 421 421 return 0; 422 422 423 - err_g3: 423 + err_g4: 424 424 drm_put_minor(&dev->primary); 425 + err_g3: 426 + if (drm_core_check_feature(dev, DRIVER_MODESET)) 427 + drm_put_minor(&dev->control); 425 428 err_g2: 426 429 pci_disable_device(pdev); 427 430 err_g1: ··· 505 502 dev->agp = NULL; 506 503 } 507 504 508 - drm_ht_remove(&dev->map_hash); 509 - drm_ctxbitmap_cleanup(dev); 510 - 511 505 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) 512 506 drm_rmmap(dev, r_list->map); 507 + drm_ht_remove(&dev->map_hash); 508 + 509 + drm_ctxbitmap_cleanup(dev); 513 510 514 511 if (drm_core_check_feature(dev, DRIVER_MODESET)) 515 512 drm_put_minor(&dev->control);
-2
drivers/gpu/drm/drm_sysfs.c
··· 489 489 490 490 return 0; 491 491 492 - device_unregister(&minor->kdev); 493 492 err_out: 494 - 495 493 return err; 496 494 } 497 495
+3 -3
drivers/gpu/drm/r128/r128_cce.c
··· 511 511 512 512 #if __OS_HAS_AGP 513 513 if (!dev_priv->is_pci) { 514 - drm_core_ioremap(dev_priv->cce_ring, dev); 515 - drm_core_ioremap(dev_priv->ring_rptr, dev); 516 - drm_core_ioremap(dev->agp_buffer_map, dev); 514 + drm_core_ioremap_wc(dev_priv->cce_ring, dev); 515 + drm_core_ioremap_wc(dev_priv->ring_rptr, dev); 516 + drm_core_ioremap_wc(dev->agp_buffer_map, dev); 517 517 if (!dev_priv->cce_ring->handle || 518 518 !dev_priv->ring_rptr->handle || 519 519 !dev->agp_buffer_map->handle) {
+2 -1
drivers/gpu/drm/radeon/radeon_drv.h
··· 99 99 * 1.27- Add support for IGP GART 100 100 * 1.28- Add support for VBL on CRTC2 101 101 * 1.29- R500 3D cmd buffer support 102 + * 1.30- Add support for occlusion queries 102 103 */ 103 104 #define DRIVER_MAJOR 1 104 - #define DRIVER_MINOR 29 105 + #define DRIVER_MINOR 30 105 106 #define DRIVER_PATCHLEVEL 0 106 107 107 108 /*