Loading drivers/gpu/drm/via/via_drv.c +25 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,29 @@ #include "drm_pciids.h" static int via_driver_open(struct drm_device *dev, struct drm_file *file) { struct via_file_private *file_priv; DRM_DEBUG_DRIVER("\n"); file_priv = kmalloc(sizeof(*file_priv), GFP_KERNEL); if (!file_priv) return -ENOMEM; file->driver_priv = file_priv; INIT_LIST_HEAD(&file_priv->obj_list); return 0; } void via_driver_postclose(struct drm_device *dev, struct drm_file *file) { struct via_file_private *file_priv = file->driver_priv; kfree(file_priv); } static struct pci_device_id pciidlist[] = { viadrv_PCI_IDS }; Loading @@ -51,6 +74,8 @@ static struct drm_driver driver = { DRIVER_IRQ_SHARED, .load = via_driver_load, .unload = via_driver_unload, .open = via_driver_open, .postclose = via_driver_postclose, .context_dtor = via_final_context, .get_vblank_counter = via_get_vblank_counter, .enable_vblank = via_enable_vblank, Loading drivers/gpu/drm/via/via_mm.c +14 −8 Original line number Diff line number Diff line Loading @@ -115,12 +115,13 @@ void via_lastclose(struct drm_device *dev) } int via_mem_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) struct drm_file *file) { drm_via_mem_t *mem = data; int retval = 0; struct drm_memblock_item *item; drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; struct via_file_private *file_priv = file->driver_priv; unsigned long tmpSize; if (mem->type > VIA_MEM_AGP) { Loading @@ -137,10 +138,10 @@ int via_mem_alloc(struct drm_device *dev, void *data, } tmpSize = (mem->size + VIA_MM_ALIGN_MASK) >> VIA_MM_ALIGN_SHIFT; item = drm_sman_alloc(&dev_priv->sman, mem->type, tmpSize, 0, (unsigned long)file_priv); mutex_unlock(&dev->struct_mutex); item = drm_sman_alloc(&dev_priv->sman, mem->type, tmpSize, 0, 0); if (item) { list_move(&item->owner_list, &file_priv->obj_list); mem->offset = ((mem->type == VIA_MEM_VIDEO) ? dev_priv->vram_offset : dev_priv->agp_offset) + (item->mm-> Loading @@ -153,6 +154,7 @@ int via_mem_alloc(struct drm_device *dev, void *data, DRM_DEBUG("Video memory allocation failed\n"); retval = -ENOMEM; } mutex_unlock(&dev->struct_mutex); return retval; } Loading @@ -173,12 +175,13 @@ int via_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv) void via_reclaim_buffers_locked(struct drm_device *dev, struct drm_file *file_priv) struct drm_file *file) { drm_via_private_t *dev_priv = dev->dev_private; struct via_file_private *file_priv = file->driver_priv; struct drm_memblock_item *entry, *next; mutex_lock(&dev->struct_mutex); if (drm_sman_owner_clean(&dev_priv->sman, (unsigned long)file_priv)) { if (list_empty(&file_priv->obj_list)) { mutex_unlock(&dev->struct_mutex); return; } Loading @@ -186,7 +189,10 @@ void via_reclaim_buffers_locked(struct drm_device *dev, if (dev->driver->dma_quiescent) dev->driver->dma_quiescent(dev); drm_sman_owner_cleanup(&dev_priv->sman, (unsigned long)file_priv); list_for_each_entry_safe(entry, next, &file_priv->obj_list, owner_list) { drm_sman_free(entry); } mutex_unlock(&dev->struct_mutex); return; } include/drm/via_drm.h +4 −0 Original line number Diff line number Diff line Loading @@ -274,4 +274,8 @@ typedef struct drm_via_dmablit { drm_via_blitsync_t sync; } drm_via_dmablit_t; struct via_file_private { struct list_head obj_list; }; #endif /* _VIA_DRM_H_ */ Loading
drivers/gpu/drm/via/via_drv.c +25 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,29 @@ #include "drm_pciids.h" static int via_driver_open(struct drm_device *dev, struct drm_file *file) { struct via_file_private *file_priv; DRM_DEBUG_DRIVER("\n"); file_priv = kmalloc(sizeof(*file_priv), GFP_KERNEL); if (!file_priv) return -ENOMEM; file->driver_priv = file_priv; INIT_LIST_HEAD(&file_priv->obj_list); return 0; } void via_driver_postclose(struct drm_device *dev, struct drm_file *file) { struct via_file_private *file_priv = file->driver_priv; kfree(file_priv); } static struct pci_device_id pciidlist[] = { viadrv_PCI_IDS }; Loading @@ -51,6 +74,8 @@ static struct drm_driver driver = { DRIVER_IRQ_SHARED, .load = via_driver_load, .unload = via_driver_unload, .open = via_driver_open, .postclose = via_driver_postclose, .context_dtor = via_final_context, .get_vblank_counter = via_get_vblank_counter, .enable_vblank = via_enable_vblank, Loading
drivers/gpu/drm/via/via_mm.c +14 −8 Original line number Diff line number Diff line Loading @@ -115,12 +115,13 @@ void via_lastclose(struct drm_device *dev) } int via_mem_alloc(struct drm_device *dev, void *data, struct drm_file *file_priv) struct drm_file *file) { drm_via_mem_t *mem = data; int retval = 0; struct drm_memblock_item *item; drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; struct via_file_private *file_priv = file->driver_priv; unsigned long tmpSize; if (mem->type > VIA_MEM_AGP) { Loading @@ -137,10 +138,10 @@ int via_mem_alloc(struct drm_device *dev, void *data, } tmpSize = (mem->size + VIA_MM_ALIGN_MASK) >> VIA_MM_ALIGN_SHIFT; item = drm_sman_alloc(&dev_priv->sman, mem->type, tmpSize, 0, (unsigned long)file_priv); mutex_unlock(&dev->struct_mutex); item = drm_sman_alloc(&dev_priv->sman, mem->type, tmpSize, 0, 0); if (item) { list_move(&item->owner_list, &file_priv->obj_list); mem->offset = ((mem->type == VIA_MEM_VIDEO) ? dev_priv->vram_offset : dev_priv->agp_offset) + (item->mm-> Loading @@ -153,6 +154,7 @@ int via_mem_alloc(struct drm_device *dev, void *data, DRM_DEBUG("Video memory allocation failed\n"); retval = -ENOMEM; } mutex_unlock(&dev->struct_mutex); return retval; } Loading @@ -173,12 +175,13 @@ int via_mem_free(struct drm_device *dev, void *data, struct drm_file *file_priv) void via_reclaim_buffers_locked(struct drm_device *dev, struct drm_file *file_priv) struct drm_file *file) { drm_via_private_t *dev_priv = dev->dev_private; struct via_file_private *file_priv = file->driver_priv; struct drm_memblock_item *entry, *next; mutex_lock(&dev->struct_mutex); if (drm_sman_owner_clean(&dev_priv->sman, (unsigned long)file_priv)) { if (list_empty(&file_priv->obj_list)) { mutex_unlock(&dev->struct_mutex); return; } Loading @@ -186,7 +189,10 @@ void via_reclaim_buffers_locked(struct drm_device *dev, if (dev->driver->dma_quiescent) dev->driver->dma_quiescent(dev); drm_sman_owner_cleanup(&dev_priv->sman, (unsigned long)file_priv); list_for_each_entry_safe(entry, next, &file_priv->obj_list, owner_list) { drm_sman_free(entry); } mutex_unlock(&dev->struct_mutex); return; }
include/drm/via_drm.h +4 −0 Original line number Diff line number Diff line Loading @@ -274,4 +274,8 @@ typedef struct drm_via_dmablit { drm_via_blitsync_t sync; } drm_via_dmablit_t; struct via_file_private { struct list_head obj_list; }; #endif /* _VIA_DRM_H_ */