diff options
Diffstat (limited to 'drivers/gpu/drm/i915')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 26 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem_tiling.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_opregion.c | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 8 |
5 files changed, 26 insertions, 28 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 2a4ed7ca8b4..0758c7802e6 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -456,7 +456,7 @@ i915_gem_pread_ioctl(struct drm_device *dev, void *data, | |||
| 456 | 456 | ||
| 457 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 457 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 458 | if (obj == NULL) | 458 | if (obj == NULL) |
| 459 | return -EBADF; | 459 | return -ENOENT; |
| 460 | obj_priv = to_intel_bo(obj); | 460 | obj_priv = to_intel_bo(obj); |
| 461 | 461 | ||
| 462 | /* Bounds check source. | 462 | /* Bounds check source. |
| @@ -919,7 +919,7 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, | |||
| 919 | 919 | ||
| 920 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 920 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 921 | if (obj == NULL) | 921 | if (obj == NULL) |
| 922 | return -EBADF; | 922 | return -ENOENT; |
| 923 | obj_priv = to_intel_bo(obj); | 923 | obj_priv = to_intel_bo(obj); |
| 924 | 924 | ||
| 925 | /* Bounds check destination. | 925 | /* Bounds check destination. |
| @@ -1002,7 +1002,7 @@ i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, | |||
| 1002 | 1002 | ||
| 1003 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 1003 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 1004 | if (obj == NULL) | 1004 | if (obj == NULL) |
| 1005 | return -EBADF; | 1005 | return -ENOENT; |
| 1006 | obj_priv = to_intel_bo(obj); | 1006 | obj_priv = to_intel_bo(obj); |
| 1007 | 1007 | ||
| 1008 | mutex_lock(&dev->struct_mutex); | 1008 | mutex_lock(&dev->struct_mutex); |
| @@ -1060,7 +1060,7 @@ i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, | |||
| 1060 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 1060 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 1061 | if (obj == NULL) { | 1061 | if (obj == NULL) { |
| 1062 | mutex_unlock(&dev->struct_mutex); | 1062 | mutex_unlock(&dev->struct_mutex); |
| 1063 | return -EBADF; | 1063 | return -ENOENT; |
| 1064 | } | 1064 | } |
| 1065 | 1065 | ||
| 1066 | #if WATCH_BUF | 1066 | #if WATCH_BUF |
| @@ -1099,7 +1099,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data, | |||
| 1099 | 1099 | ||
| 1100 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 1100 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 1101 | if (obj == NULL) | 1101 | if (obj == NULL) |
| 1102 | return -EBADF; | 1102 | return -ENOENT; |
| 1103 | 1103 | ||
| 1104 | offset = args->offset; | 1104 | offset = args->offset; |
| 1105 | 1105 | ||
| @@ -1373,7 +1373,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, | |||
| 1373 | 1373 | ||
| 1374 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 1374 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 1375 | if (obj == NULL) | 1375 | if (obj == NULL) |
| 1376 | return -EBADF; | 1376 | return -ENOENT; |
| 1377 | 1377 | ||
| 1378 | mutex_lock(&dev->struct_mutex); | 1378 | mutex_lock(&dev->struct_mutex); |
| 1379 | 1379 | ||
| @@ -3364,7 +3364,7 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj, | |||
| 3364 | reloc->target_handle); | 3364 | reloc->target_handle); |
| 3365 | if (target_obj == NULL) { | 3365 | if (target_obj == NULL) { |
| 3366 | i915_gem_object_unpin(obj); | 3366 | i915_gem_object_unpin(obj); |
| 3367 | return -EBADF; | 3367 | return -ENOENT; |
| 3368 | } | 3368 | } |
| 3369 | target_obj_priv = to_intel_bo(target_obj); | 3369 | target_obj_priv = to_intel_bo(target_obj); |
| 3370 | 3370 | ||
| @@ -3781,7 +3781,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, | |||
| 3781 | exec_list[i].handle, i); | 3781 | exec_list[i].handle, i); |
| 3782 | /* prevent error path from reading uninitialized data */ | 3782 | /* prevent error path from reading uninitialized data */ |
| 3783 | args->buffer_count = i + 1; | 3783 | args->buffer_count = i + 1; |
| 3784 | ret = -EBADF; | 3784 | ret = -ENOENT; |
| 3785 | goto err; | 3785 | goto err; |
| 3786 | } | 3786 | } |
| 3787 | 3787 | ||
| @@ -3791,7 +3791,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data, | |||
| 3791 | object_list[i]); | 3791 | object_list[i]); |
| 3792 | /* prevent error path from reading uninitialized data */ | 3792 | /* prevent error path from reading uninitialized data */ |
| 3793 | args->buffer_count = i + 1; | 3793 | args->buffer_count = i + 1; |
| 3794 | ret = -EBADF; | 3794 | ret = -EINVAL; |
| 3795 | goto err; | 3795 | goto err; |
| 3796 | } | 3796 | } |
| 3797 | obj_priv->in_execbuffer = true; | 3797 | obj_priv->in_execbuffer = true; |
| @@ -4265,7 +4265,7 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data, | |||
| 4265 | DRM_ERROR("Bad handle in i915_gem_pin_ioctl(): %d\n", | 4265 | DRM_ERROR("Bad handle in i915_gem_pin_ioctl(): %d\n", |
| 4266 | args->handle); | 4266 | args->handle); |
| 4267 | mutex_unlock(&dev->struct_mutex); | 4267 | mutex_unlock(&dev->struct_mutex); |
| 4268 | return -EBADF; | 4268 | return -ENOENT; |
| 4269 | } | 4269 | } |
| 4270 | obj_priv = to_intel_bo(obj); | 4270 | obj_priv = to_intel_bo(obj); |
| 4271 | 4271 | ||
| @@ -4321,7 +4321,7 @@ i915_gem_unpin_ioctl(struct drm_device *dev, void *data, | |||
| 4321 | DRM_ERROR("Bad handle in i915_gem_unpin_ioctl(): %d\n", | 4321 | DRM_ERROR("Bad handle in i915_gem_unpin_ioctl(): %d\n", |
| 4322 | args->handle); | 4322 | args->handle); |
| 4323 | mutex_unlock(&dev->struct_mutex); | 4323 | mutex_unlock(&dev->struct_mutex); |
| 4324 | return -EBADF; | 4324 | return -ENOENT; |
| 4325 | } | 4325 | } |
| 4326 | 4326 | ||
| 4327 | obj_priv = to_intel_bo(obj); | 4327 | obj_priv = to_intel_bo(obj); |
| @@ -4355,7 +4355,7 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, | |||
| 4355 | if (obj == NULL) { | 4355 | if (obj == NULL) { |
| 4356 | DRM_ERROR("Bad handle in i915_gem_busy_ioctl(): %d\n", | 4356 | DRM_ERROR("Bad handle in i915_gem_busy_ioctl(): %d\n", |
| 4357 | args->handle); | 4357 | args->handle); |
| 4358 | return -EBADF; | 4358 | return -ENOENT; |
| 4359 | } | 4359 | } |
| 4360 | 4360 | ||
| 4361 | mutex_lock(&dev->struct_mutex); | 4361 | mutex_lock(&dev->struct_mutex); |
| @@ -4408,7 +4408,7 @@ i915_gem_madvise_ioctl(struct drm_device *dev, void *data, | |||
| 4408 | if (obj == NULL) { | 4408 | if (obj == NULL) { |
| 4409 | DRM_ERROR("Bad handle in i915_gem_madvise_ioctl(): %d\n", | 4409 | DRM_ERROR("Bad handle in i915_gem_madvise_ioctl(): %d\n", |
| 4410 | args->handle); | 4410 | args->handle); |
| 4411 | return -EBADF; | 4411 | return -ENOENT; |
| 4412 | } | 4412 | } |
| 4413 | 4413 | ||
| 4414 | mutex_lock(&dev->struct_mutex); | 4414 | mutex_lock(&dev->struct_mutex); |
diff --git a/drivers/gpu/drm/i915/i915_gem_tiling.c b/drivers/gpu/drm/i915/i915_gem_tiling.c index 155719e4d16..710eca70b32 100644 --- a/drivers/gpu/drm/i915/i915_gem_tiling.c +++ b/drivers/gpu/drm/i915/i915_gem_tiling.c | |||
| @@ -275,7 +275,7 @@ i915_gem_set_tiling(struct drm_device *dev, void *data, | |||
| 275 | 275 | ||
| 276 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 276 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 277 | if (obj == NULL) | 277 | if (obj == NULL) |
| 278 | return -EINVAL; | 278 | return -ENOENT; |
| 279 | obj_priv = to_intel_bo(obj); | 279 | obj_priv = to_intel_bo(obj); |
| 280 | 280 | ||
| 281 | if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) { | 281 | if (!i915_tiling_ok(dev, args->stride, obj->size, args->tiling_mode)) { |
| @@ -362,7 +362,7 @@ i915_gem_get_tiling(struct drm_device *dev, void *data, | |||
| 362 | 362 | ||
| 363 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); | 363 | obj = drm_gem_object_lookup(dev, file_priv, args->handle); |
| 364 | if (obj == NULL) | 364 | if (obj == NULL) |
| 365 | return -EINVAL; | 365 | return -ENOENT; |
| 366 | obj_priv = to_intel_bo(obj); | 366 | obj_priv = to_intel_bo(obj); |
| 367 | 367 | ||
| 368 | mutex_lock(&dev->struct_mutex); | 368 | mutex_lock(&dev->struct_mutex); |
diff --git a/drivers/gpu/drm/i915/i915_opregion.c b/drivers/gpu/drm/i915/i915_opregion.c index 8fcc75c1aa2..d1bf92b9978 100644 --- a/drivers/gpu/drm/i915/i915_opregion.c +++ b/drivers/gpu/drm/i915/i915_opregion.c | |||
| @@ -535,6 +535,7 @@ int intel_opregion_init(struct drm_device *dev, int resume) | |||
| 535 | err_out: | 535 | err_out: |
| 536 | iounmap(opregion->header); | 536 | iounmap(opregion->header); |
| 537 | opregion->header = NULL; | 537 | opregion->header = NULL; |
| 538 | acpi_video_register(); | ||
| 538 | return err; | 539 | return err; |
| 539 | } | 540 | } |
| 540 | 541 | ||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 1e5e0d379fa..5ec10e02341 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -4429,15 +4429,12 @@ void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, | |||
| 4429 | } | 4429 | } |
| 4430 | 4430 | ||
| 4431 | static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, | 4431 | static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, |
| 4432 | u16 *blue, uint32_t size) | 4432 | u16 *blue, uint32_t start, uint32_t size) |
| 4433 | { | 4433 | { |
| 4434 | int end = (start + size > 256) ? 256 : start + size, i; | ||
| 4434 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 4435 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 4435 | int i; | ||
| 4436 | |||
| 4437 | if (size != 256) | ||
| 4438 | return; | ||
| 4439 | 4436 | ||
| 4440 | for (i = 0; i < 256; i++) { | 4437 | for (i = start; i < end; i++) { |
| 4441 | intel_crtc->lut_r[i] = red[i] >> 8; | 4438 | intel_crtc->lut_r[i] = red[i] >> 8; |
| 4442 | intel_crtc->lut_g[i] = green[i] >> 8; | 4439 | intel_crtc->lut_g[i] = green[i] >> 8; |
| 4443 | intel_crtc->lut_b[i] = blue[i] >> 8; | 4440 | intel_crtc->lut_b[i] = blue[i] >> 8; |
| @@ -5412,18 +5409,18 @@ intel_user_framebuffer_create(struct drm_device *dev, | |||
| 5412 | 5409 | ||
| 5413 | obj = drm_gem_object_lookup(dev, filp, mode_cmd->handle); | 5410 | obj = drm_gem_object_lookup(dev, filp, mode_cmd->handle); |
| 5414 | if (!obj) | 5411 | if (!obj) |
| 5415 | return NULL; | 5412 | return ERR_PTR(-ENOENT); |
| 5416 | 5413 | ||
| 5417 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); | 5414 | intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); |
| 5418 | if (!intel_fb) | 5415 | if (!intel_fb) |
| 5419 | return NULL; | 5416 | return ERR_PTR(-ENOMEM); |
| 5420 | 5417 | ||
| 5421 | ret = intel_framebuffer_init(dev, intel_fb, | 5418 | ret = intel_framebuffer_init(dev, intel_fb, |
| 5422 | mode_cmd, obj); | 5419 | mode_cmd, obj); |
| 5423 | if (ret) { | 5420 | if (ret) { |
| 5424 | drm_gem_object_unreference_unlocked(obj); | 5421 | drm_gem_object_unreference_unlocked(obj); |
| 5425 | kfree(intel_fb); | 5422 | kfree(intel_fb); |
| 5426 | return NULL; | 5423 | return ERR_PTR(ret); |
| 5427 | } | 5424 | } |
| 5428 | 5425 | ||
| 5429 | return &intel_fb->base; | 5426 | return &intel_fb->base; |
diff --git a/drivers/gpu/drm/i915/intel_fb.c b/drivers/gpu/drm/i915/intel_fb.c index 54acd8b534d..7bdc96256bf 100644 --- a/drivers/gpu/drm/i915/intel_fb.c +++ b/drivers/gpu/drm/i915/intel_fb.c | |||
| @@ -121,7 +121,9 @@ static int intelfb_create(struct intel_fbdev *ifbdev, | |||
| 121 | 121 | ||
| 122 | info->par = ifbdev; | 122 | info->par = ifbdev; |
| 123 | 123 | ||
| 124 | intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, fbo); | 124 | ret = intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, fbo); |
| 125 | if (ret) | ||
| 126 | goto out_unpin; | ||
| 125 | 127 | ||
| 126 | fb = &ifbdev->ifb.base; | 128 | fb = &ifbdev->ifb.base; |
| 127 | 129 | ||
| @@ -130,7 +132,7 @@ static int intelfb_create(struct intel_fbdev *ifbdev, | |||
| 130 | 132 | ||
| 131 | strcpy(info->fix.id, "inteldrmfb"); | 133 | strcpy(info->fix.id, "inteldrmfb"); |
| 132 | 134 | ||
| 133 | info->flags = FBINFO_DEFAULT; | 135 | info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT; |
| 134 | info->fbops = &intelfb_ops; | 136 | info->fbops = &intelfb_ops; |
| 135 | 137 | ||
| 136 | /* setup aperture base/size for vesafb takeover */ | 138 | /* setup aperture base/size for vesafb takeover */ |
| @@ -148,8 +150,6 @@ static int intelfb_create(struct intel_fbdev *ifbdev, | |||
| 148 | info->fix.smem_start = dev->mode_config.fb_base + obj_priv->gtt_offset; | 150 | info->fix.smem_start = dev->mode_config.fb_base + obj_priv->gtt_offset; |
| 149 | info->fix.smem_len = size; | 151 | info->fix.smem_len = size; |
| 150 | 152 | ||
| 151 | info->flags = FBINFO_DEFAULT; | ||
| 152 | |||
| 153 | info->screen_base = ioremap_wc(dev->agp->base + obj_priv->gtt_offset, | 153 | info->screen_base = ioremap_wc(dev->agp->base + obj_priv->gtt_offset, |
| 154 | size); | 154 | size); |
| 155 | if (!info->screen_base) { | 155 | if (!info->screen_base) { |
