diff --git a/sys/dev/drm2/drm_bufs.c b/sys/dev/drm2/drm_bufs.c index 6135fda..01b2134 100644 --- a/sys/dev/drm2/drm_bufs.c +++ b/sys/dev/drm2/drm_bufs.c @@ -166,8 +166,10 @@ static int drm_map_handle(struct drm_device *dev, struct drm_hash_item *hash, int ret; hash->key = user_token >> PAGE_SHIFT; ret = drm_ht_insert_item(&dev->map_hash, hash); - if (ret != -EINVAL) + if (ret != -EINVAL) { + DRM_ERROR("Failed to insert into map_hash: %d\n", ret); return ret; + } } shift = 0; @@ -244,6 +246,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset, map->size = PAGE_ALIGN(map->size); if ((map->offset & (~(resource_size_t)PAGE_MASK)) || (map->size & (~PAGE_MASK))) { + DRM_ERROR("drm_addmap: Unaligned offset or size\n"); free(map, DRM_MEM_MAPS); return -EINVAL; } @@ -414,6 +417,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset, list = malloc(sizeof(*list), DRM_MEM_MAPS, M_ZERO | M_NOWAIT); if (!list) { + DRM_ERROR("Failed to allocate list\n"); if (map->type == _DRM_REGISTERS) drm_core_ioremapfree(map, dev); free(map, DRM_MEM_MAPS); @@ -431,6 +435,7 @@ static int drm_addmap_core(struct drm_device * dev, resource_size_t offset, ret = drm_map_handle(dev, &list->hash, user_token, 0, (map->type == _DRM_SHM)); if (ret) { + DRM_ERROR("Failed to create map handle: %d\n", ret); if (map->type == _DRM_REGISTERS) drm_core_ioremapfree(map, dev); free(map, DRM_MEM_MAPS); diff --git a/sys/dev/drm2/i915/i915_dma.c b/sys/dev/drm2/i915/i915_dma.c index 0676439..04e712e 100644 --- a/sys/dev/drm2/i915/i915_dma.c +++ b/sys/dev/drm2/i915/i915_dma.c @@ -1231,6 +1231,11 @@ i915_driver_load(struct drm_device *dev, unsigned long flags) ret = drm_addmap(dev, base, size, _DRM_REGISTERS, _DRM_KERNEL | _DRM_DRIVER, &dev_priv->mmio_map); + if (ret != 0) { + DRM_ERROR("Failed to allocate mmio_map: %d\n", ret); + free(dev_priv, DRM_MEM_DRIVER); + return (ret); + } dev_priv->tq = taskqueue_create("915", M_WAITOK, taskqueue_thread_enqueue, &dev_priv->tq);