Loading drivers/char/drm/drm_sman.c +24 −23 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,7 @@ typedef struct drm_owner_item { struct list_head mem_blocks; struct list_head mem_blocks; } drm_owner_item_t; } drm_owner_item_t; void drm_sman_takedown(drm_sman_t * sman) void drm_sman_takedown(struct drm_sman * sman) { { drm_ht_remove(&sman->user_hash_tab); drm_ht_remove(&sman->user_hash_tab); drm_ht_remove(&sman->owner_hash_tab); drm_ht_remove(&sman->owner_hash_tab); Loading @@ -56,12 +56,12 @@ void drm_sman_takedown(drm_sman_t * sman) EXPORT_SYMBOL(drm_sman_takedown); EXPORT_SYMBOL(drm_sman_takedown); int int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, drm_sman_init(struct drm_sman * sman, unsigned int num_managers, unsigned int user_order, unsigned int owner_order) unsigned int user_order, unsigned int owner_order) { { int ret = 0; int ret = 0; sman->mm = (drm_sman_mm_t *) drm_calloc(num_managers, sizeof(*sman->mm), sman->mm = (struct drm_sman_mm *) drm_calloc(num_managers, sizeof(*sman->mm), DRM_MEM_MM); DRM_MEM_MM); if (!sman->mm) { if (!sman->mm) { ret = -ENOMEM; ret = -ENOMEM; Loading Loading @@ -120,10 +120,10 @@ static unsigned long drm_sman_mm_offset(void *private, void *ref) } } int int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, drm_sman_set_range(struct drm_sman * sman, unsigned int manager, unsigned long start, unsigned long size) unsigned long start, unsigned long size) { { drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; struct drm_mm *mm; struct drm_mm *mm; int ret; int ret; Loading Loading @@ -153,8 +153,8 @@ drm_sman_set_range(drm_sman_t * sman, unsigned int manager, EXPORT_SYMBOL(drm_sman_set_range); EXPORT_SYMBOL(drm_sman_set_range); int int drm_sman_set_manager(drm_sman_t * sman, unsigned int manager, drm_sman_set_manager(struct drm_sman * sman, unsigned int manager, drm_sman_mm_t * allocator) struct drm_sman_mm * allocator) { { BUG_ON(manager >= sman->num_managers); BUG_ON(manager >= sman->num_managers); sman->mm[manager] = *allocator; sman->mm[manager] = *allocator; Loading @@ -163,7 +163,7 @@ drm_sman_set_manager(drm_sman_t * sman, unsigned int manager, } } EXPORT_SYMBOL(drm_sman_set_manager); EXPORT_SYMBOL(drm_sman_set_manager); static drm_owner_item_t *drm_sman_get_owner_item(drm_sman_t * sman, static drm_owner_item_t *drm_sman_get_owner_item(struct drm_sman * sman, unsigned long owner) unsigned long owner) { { int ret; int ret; Loading Loading @@ -194,14 +194,14 @@ out: return NULL; return NULL; } } drm_memblock_item_t *drm_sman_alloc(drm_sman_t *sman, unsigned int manager, struct drm_memblock_item *drm_sman_alloc(struct drm_sman *sman, unsigned int manager, unsigned long size, unsigned alignment, unsigned long size, unsigned alignment, unsigned long owner) unsigned long owner) { { void *tmp; void *tmp; drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; drm_owner_item_t *owner_item; drm_owner_item_t *owner_item; drm_memblock_item_t *memblock; struct drm_memblock_item *memblock; BUG_ON(manager >= sman->num_managers); BUG_ON(manager >= sman->num_managers); Loading Loading @@ -246,9 +246,9 @@ out: EXPORT_SYMBOL(drm_sman_alloc); EXPORT_SYMBOL(drm_sman_alloc); static void drm_sman_free(drm_memblock_item_t *item) static void drm_sman_free(struct drm_memblock_item *item) { { drm_sman_t *sman = item->sman; struct drm_sman *sman = item->sman; list_del(&item->owner_list); list_del(&item->owner_list); drm_ht_remove_item(&sman->user_hash_tab, &item->user_hash); drm_ht_remove_item(&sman->user_hash_tab, &item->user_hash); Loading @@ -256,22 +256,23 @@ static void drm_sman_free(drm_memblock_item_t *item) drm_free(item, sizeof(*item), DRM_MEM_MM); drm_free(item, sizeof(*item), DRM_MEM_MM); } } int drm_sman_free_key(drm_sman_t *sman, unsigned int key) int drm_sman_free_key(struct drm_sman *sman, unsigned int key) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; drm_memblock_item_t *memblock_item; struct drm_memblock_item *memblock_item; if (drm_ht_find_item(&sman->user_hash_tab, key, &hash_item)) if (drm_ht_find_item(&sman->user_hash_tab, key, &hash_item)) return -EINVAL; return -EINVAL; memblock_item = drm_hash_entry(hash_item, drm_memblock_item_t, user_hash); memblock_item = drm_hash_entry(hash_item, struct drm_memblock_item, user_hash); drm_sman_free(memblock_item); drm_sman_free(memblock_item); return 0; return 0; } } EXPORT_SYMBOL(drm_sman_free_key); EXPORT_SYMBOL(drm_sman_free_key); static void drm_sman_remove_owner(drm_sman_t *sman, static void drm_sman_remove_owner(struct drm_sman *sman, drm_owner_item_t *owner_item) drm_owner_item_t *owner_item) { { list_del(&owner_item->sman_list); list_del(&owner_item->sman_list); Loading @@ -279,7 +280,7 @@ static void drm_sman_remove_owner(drm_sman_t *sman, drm_free(owner_item, sizeof(*owner_item), DRM_MEM_MM); drm_free(owner_item, sizeof(*owner_item), DRM_MEM_MM); } } int drm_sman_owner_clean(drm_sman_t *sman, unsigned long owner) int drm_sman_owner_clean(struct drm_sman *sman, unsigned long owner) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; Loading @@ -300,10 +301,10 @@ int drm_sman_owner_clean(drm_sman_t *sman, unsigned long owner) EXPORT_SYMBOL(drm_sman_owner_clean); EXPORT_SYMBOL(drm_sman_owner_clean); static void drm_sman_do_owner_cleanup(drm_sman_t *sman, static void drm_sman_do_owner_cleanup(struct drm_sman *sman, drm_owner_item_t *owner_item) drm_owner_item_t *owner_item) { { drm_memblock_item_t *entry, *next; struct drm_memblock_item *entry, *next; list_for_each_entry_safe(entry, next, &owner_item->mem_blocks, list_for_each_entry_safe(entry, next, &owner_item->mem_blocks, owner_list) { owner_list) { Loading @@ -312,7 +313,7 @@ static void drm_sman_do_owner_cleanup(drm_sman_t *sman, drm_sman_remove_owner(sman, owner_item); drm_sman_remove_owner(sman, owner_item); } } void drm_sman_owner_cleanup(drm_sman_t *sman, unsigned long owner) void drm_sman_owner_cleanup(struct drm_sman *sman, unsigned long owner) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; Loading @@ -329,11 +330,11 @@ void drm_sman_owner_cleanup(drm_sman_t *sman, unsigned long owner) EXPORT_SYMBOL(drm_sman_owner_cleanup); EXPORT_SYMBOL(drm_sman_owner_cleanup); void drm_sman_cleanup(drm_sman_t *sman) void drm_sman_cleanup(struct drm_sman *sman) { { drm_owner_item_t *entry, *next; drm_owner_item_t *entry, *next; unsigned int i; unsigned int i; drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; list_for_each_entry_safe(entry, next, &sman->owner_items, sman_list) { list_for_each_entry_safe(entry, next, &sman->owner_items, sman_list) { drm_sman_do_owner_cleanup(sman, entry); drm_sman_do_owner_cleanup(sman, entry); Loading drivers/char/drm/drm_sman.h +22 −22 Original line number Original line Diff line number Diff line Loading @@ -50,7 +50,7 @@ * for memory management. * for memory management. */ */ typedef struct drm_sman_mm { struct drm_sman_mm { /* private info. If allocated, needs to be destroyed by the destroy /* private info. If allocated, needs to be destroyed by the destroy function */ function */ void *private; void *private; Loading @@ -74,30 +74,30 @@ typedef struct drm_sman_mm { "alloc" function */ "alloc" function */ unsigned long (*offset) (void *private, void *ref); unsigned long (*offset) (void *private, void *ref); } drm_sman_mm_t; }; typedef struct drm_memblock_item { struct drm_memblock_item { struct list_head owner_list; struct list_head owner_list; drm_hash_item_t user_hash; drm_hash_item_t user_hash; void *mm_info; void *mm_info; drm_sman_mm_t *mm; struct drm_sman_mm *mm; struct drm_sman *sman; struct drm_sman *sman; } drm_memblock_item_t; }; typedef struct drm_sman { struct drm_sman { drm_sman_mm_t *mm; struct drm_sman_mm *mm; int num_managers; int num_managers; drm_open_hash_t owner_hash_tab; drm_open_hash_t owner_hash_tab; drm_open_hash_t user_hash_tab; drm_open_hash_t user_hash_tab; struct list_head owner_items; struct list_head owner_items; } drm_sman_t; }; /* /* * Take down a memory manager. This function should only be called after a * Take down a memory manager. This function should only be called after a * successful init and after a call to drm_sman_cleanup. * successful init and after a call to drm_sman_cleanup. */ */ extern void drm_sman_takedown(drm_sman_t * sman); extern void drm_sman_takedown(struct drm_sman * sman); /* /* * Allocate structures for a manager. * Allocate structures for a manager. Loading @@ -112,7 +112,7 @@ extern void drm_sman_takedown(drm_sman_t * sman); * * */ */ extern int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, extern int drm_sman_init(struct drm_sman * sman, unsigned int num_managers, unsigned int user_order, unsigned int owner_order); unsigned int user_order, unsigned int owner_order); /* /* Loading @@ -120,7 +120,7 @@ extern int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, * manager unless a customized allogator is used. * manager unless a customized allogator is used. */ */ extern int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, extern int drm_sman_set_range(struct drm_sman * sman, unsigned int manager, unsigned long start, unsigned long size); unsigned long start, unsigned long size); /* /* Loading @@ -129,14 +129,14 @@ extern int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, * so it can be destroyed after this call. * so it can be destroyed after this call. */ */ extern int drm_sman_set_manager(drm_sman_t * sman, unsigned int mananger, extern int drm_sman_set_manager(struct drm_sman * sman, unsigned int mananger, drm_sman_mm_t * allocator); struct drm_sman_mm * allocator); /* /* * Allocate a memory block. Aligment is not implemented yet. * Allocate a memory block. Aligment is not implemented yet. */ */ extern drm_memblock_item_t *drm_sman_alloc(drm_sman_t * sman, extern struct drm_memblock_item *drm_sman_alloc(struct drm_sman * sman, unsigned int manager, unsigned int manager, unsigned long size, unsigned long size, unsigned alignment, unsigned alignment, Loading @@ -145,7 +145,7 @@ extern drm_memblock_item_t *drm_sman_alloc(drm_sman_t * sman, * Free a memory block identified by its user hash key. * Free a memory block identified by its user hash key. */ */ extern int drm_sman_free_key(drm_sman_t * sman, unsigned int key); extern int drm_sman_free_key(struct drm_sman * sman, unsigned int key); /* /* * returns 1 iff there are no stale memory blocks associated with this owner. * returns 1 iff there are no stale memory blocks associated with this owner. Loading @@ -154,7 +154,7 @@ extern int drm_sman_free_key(drm_sman_t * sman, unsigned int key); * resources associated with owner. * resources associated with owner. */ */ extern int drm_sman_owner_clean(drm_sman_t * sman, unsigned long owner); extern int drm_sman_owner_clean(struct drm_sman * sman, unsigned long owner); /* /* * Frees all stale memory blocks associated with this owner. Note that this * Frees all stale memory blocks associated with this owner. Note that this Loading @@ -164,13 +164,13 @@ extern int drm_sman_owner_clean(drm_sman_t * sman, unsigned long owner); * is not going to be referenced anymore. * is not going to be referenced anymore. */ */ extern void drm_sman_owner_cleanup(drm_sman_t * sman, unsigned long owner); extern void drm_sman_owner_cleanup(struct drm_sman * sman, unsigned long owner); /* /* * Frees all stale memory blocks associated with the memory manager. * Frees all stale memory blocks associated with the memory manager. * See idling above. * See idling above. */ */ extern void drm_sman_cleanup(drm_sman_t * sman); extern void drm_sman_cleanup(struct drm_sman * sman); #endif #endif drivers/char/drm/sis_drv.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,7 @@ enum sis_family { #include "drm_sman.h" #include "drm_sman.h" #define SIS_BASE (dev_priv->mmio) #define SIS_BASE (dev_priv->mmio) #define SIS_READ(reg) DRM_READ32(SIS_BASE, reg); #define SIS_READ(reg) DRM_READ32(SIS_BASE, reg); #define SIS_WRITE(reg, val) DRM_WRITE32(SIS_BASE, reg, val); #define SIS_WRITE(reg, val) DRM_WRITE32(SIS_BASE, reg, val); Loading @@ -53,7 +54,7 @@ enum sis_family { typedef struct drm_sis_private { typedef struct drm_sis_private { drm_local_map_t *mmio; drm_local_map_t *mmio; unsigned int idle_fault; unsigned int idle_fault; drm_sman_t sman; struct drm_sman sman; unsigned int chipset; unsigned int chipset; int vram_initialized; int vram_initialized; int agp_initialized; int agp_initialized; Loading drivers/char/drm/sis_mm.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -130,7 +130,7 @@ static int sis_drm_alloc(struct drm_device *dev, struct drm_file * priv, drm_sis_mem_t __user *argp = (drm_sis_mem_t __user *) data; drm_sis_mem_t __user *argp = (drm_sis_mem_t __user *) data; drm_sis_mem_t mem; drm_sis_mem_t mem; int retval = 0; int retval = 0; drm_memblock_item_t *item; struct drm_memblock_item *item; DRM_COPY_FROM_USER_IOCTL(mem, argp, sizeof(mem)); DRM_COPY_FROM_USER_IOCTL(mem, argp, sizeof(mem)); Loading drivers/char/drm/via_drv.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ typedef struct drm_via_private { uint32_t irq_pending_mask; uint32_t irq_pending_mask; int *irq_map; int *irq_map; unsigned int idle_fault; unsigned int idle_fault; drm_sman_t sman; struct drm_sman sman; int vram_initialized; int vram_initialized; int agp_initialized; int agp_initialized; unsigned long vram_offset; unsigned long vram_offset; Loading Loading
drivers/char/drm/drm_sman.c +24 −23 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,7 @@ typedef struct drm_owner_item { struct list_head mem_blocks; struct list_head mem_blocks; } drm_owner_item_t; } drm_owner_item_t; void drm_sman_takedown(drm_sman_t * sman) void drm_sman_takedown(struct drm_sman * sman) { { drm_ht_remove(&sman->user_hash_tab); drm_ht_remove(&sman->user_hash_tab); drm_ht_remove(&sman->owner_hash_tab); drm_ht_remove(&sman->owner_hash_tab); Loading @@ -56,12 +56,12 @@ void drm_sman_takedown(drm_sman_t * sman) EXPORT_SYMBOL(drm_sman_takedown); EXPORT_SYMBOL(drm_sman_takedown); int int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, drm_sman_init(struct drm_sman * sman, unsigned int num_managers, unsigned int user_order, unsigned int owner_order) unsigned int user_order, unsigned int owner_order) { { int ret = 0; int ret = 0; sman->mm = (drm_sman_mm_t *) drm_calloc(num_managers, sizeof(*sman->mm), sman->mm = (struct drm_sman_mm *) drm_calloc(num_managers, sizeof(*sman->mm), DRM_MEM_MM); DRM_MEM_MM); if (!sman->mm) { if (!sman->mm) { ret = -ENOMEM; ret = -ENOMEM; Loading Loading @@ -120,10 +120,10 @@ static unsigned long drm_sman_mm_offset(void *private, void *ref) } } int int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, drm_sman_set_range(struct drm_sman * sman, unsigned int manager, unsigned long start, unsigned long size) unsigned long start, unsigned long size) { { drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; struct drm_mm *mm; struct drm_mm *mm; int ret; int ret; Loading Loading @@ -153,8 +153,8 @@ drm_sman_set_range(drm_sman_t * sman, unsigned int manager, EXPORT_SYMBOL(drm_sman_set_range); EXPORT_SYMBOL(drm_sman_set_range); int int drm_sman_set_manager(drm_sman_t * sman, unsigned int manager, drm_sman_set_manager(struct drm_sman * sman, unsigned int manager, drm_sman_mm_t * allocator) struct drm_sman_mm * allocator) { { BUG_ON(manager >= sman->num_managers); BUG_ON(manager >= sman->num_managers); sman->mm[manager] = *allocator; sman->mm[manager] = *allocator; Loading @@ -163,7 +163,7 @@ drm_sman_set_manager(drm_sman_t * sman, unsigned int manager, } } EXPORT_SYMBOL(drm_sman_set_manager); EXPORT_SYMBOL(drm_sman_set_manager); static drm_owner_item_t *drm_sman_get_owner_item(drm_sman_t * sman, static drm_owner_item_t *drm_sman_get_owner_item(struct drm_sman * sman, unsigned long owner) unsigned long owner) { { int ret; int ret; Loading Loading @@ -194,14 +194,14 @@ out: return NULL; return NULL; } } drm_memblock_item_t *drm_sman_alloc(drm_sman_t *sman, unsigned int manager, struct drm_memblock_item *drm_sman_alloc(struct drm_sman *sman, unsigned int manager, unsigned long size, unsigned alignment, unsigned long size, unsigned alignment, unsigned long owner) unsigned long owner) { { void *tmp; void *tmp; drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; drm_owner_item_t *owner_item; drm_owner_item_t *owner_item; drm_memblock_item_t *memblock; struct drm_memblock_item *memblock; BUG_ON(manager >= sman->num_managers); BUG_ON(manager >= sman->num_managers); Loading Loading @@ -246,9 +246,9 @@ out: EXPORT_SYMBOL(drm_sman_alloc); EXPORT_SYMBOL(drm_sman_alloc); static void drm_sman_free(drm_memblock_item_t *item) static void drm_sman_free(struct drm_memblock_item *item) { { drm_sman_t *sman = item->sman; struct drm_sman *sman = item->sman; list_del(&item->owner_list); list_del(&item->owner_list); drm_ht_remove_item(&sman->user_hash_tab, &item->user_hash); drm_ht_remove_item(&sman->user_hash_tab, &item->user_hash); Loading @@ -256,22 +256,23 @@ static void drm_sman_free(drm_memblock_item_t *item) drm_free(item, sizeof(*item), DRM_MEM_MM); drm_free(item, sizeof(*item), DRM_MEM_MM); } } int drm_sman_free_key(drm_sman_t *sman, unsigned int key) int drm_sman_free_key(struct drm_sman *sman, unsigned int key) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; drm_memblock_item_t *memblock_item; struct drm_memblock_item *memblock_item; if (drm_ht_find_item(&sman->user_hash_tab, key, &hash_item)) if (drm_ht_find_item(&sman->user_hash_tab, key, &hash_item)) return -EINVAL; return -EINVAL; memblock_item = drm_hash_entry(hash_item, drm_memblock_item_t, user_hash); memblock_item = drm_hash_entry(hash_item, struct drm_memblock_item, user_hash); drm_sman_free(memblock_item); drm_sman_free(memblock_item); return 0; return 0; } } EXPORT_SYMBOL(drm_sman_free_key); EXPORT_SYMBOL(drm_sman_free_key); static void drm_sman_remove_owner(drm_sman_t *sman, static void drm_sman_remove_owner(struct drm_sman *sman, drm_owner_item_t *owner_item) drm_owner_item_t *owner_item) { { list_del(&owner_item->sman_list); list_del(&owner_item->sman_list); Loading @@ -279,7 +280,7 @@ static void drm_sman_remove_owner(drm_sman_t *sman, drm_free(owner_item, sizeof(*owner_item), DRM_MEM_MM); drm_free(owner_item, sizeof(*owner_item), DRM_MEM_MM); } } int drm_sman_owner_clean(drm_sman_t *sman, unsigned long owner) int drm_sman_owner_clean(struct drm_sman *sman, unsigned long owner) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; Loading @@ -300,10 +301,10 @@ int drm_sman_owner_clean(drm_sman_t *sman, unsigned long owner) EXPORT_SYMBOL(drm_sman_owner_clean); EXPORT_SYMBOL(drm_sman_owner_clean); static void drm_sman_do_owner_cleanup(drm_sman_t *sman, static void drm_sman_do_owner_cleanup(struct drm_sman *sman, drm_owner_item_t *owner_item) drm_owner_item_t *owner_item) { { drm_memblock_item_t *entry, *next; struct drm_memblock_item *entry, *next; list_for_each_entry_safe(entry, next, &owner_item->mem_blocks, list_for_each_entry_safe(entry, next, &owner_item->mem_blocks, owner_list) { owner_list) { Loading @@ -312,7 +313,7 @@ static void drm_sman_do_owner_cleanup(drm_sman_t *sman, drm_sman_remove_owner(sman, owner_item); drm_sman_remove_owner(sman, owner_item); } } void drm_sman_owner_cleanup(drm_sman_t *sman, unsigned long owner) void drm_sman_owner_cleanup(struct drm_sman *sman, unsigned long owner) { { drm_hash_item_t *hash_item; drm_hash_item_t *hash_item; Loading @@ -329,11 +330,11 @@ void drm_sman_owner_cleanup(drm_sman_t *sman, unsigned long owner) EXPORT_SYMBOL(drm_sman_owner_cleanup); EXPORT_SYMBOL(drm_sman_owner_cleanup); void drm_sman_cleanup(drm_sman_t *sman) void drm_sman_cleanup(struct drm_sman *sman) { { drm_owner_item_t *entry, *next; drm_owner_item_t *entry, *next; unsigned int i; unsigned int i; drm_sman_mm_t *sman_mm; struct drm_sman_mm *sman_mm; list_for_each_entry_safe(entry, next, &sman->owner_items, sman_list) { list_for_each_entry_safe(entry, next, &sman->owner_items, sman_list) { drm_sman_do_owner_cleanup(sman, entry); drm_sman_do_owner_cleanup(sman, entry); Loading
drivers/char/drm/drm_sman.h +22 −22 Original line number Original line Diff line number Diff line Loading @@ -50,7 +50,7 @@ * for memory management. * for memory management. */ */ typedef struct drm_sman_mm { struct drm_sman_mm { /* private info. If allocated, needs to be destroyed by the destroy /* private info. If allocated, needs to be destroyed by the destroy function */ function */ void *private; void *private; Loading @@ -74,30 +74,30 @@ typedef struct drm_sman_mm { "alloc" function */ "alloc" function */ unsigned long (*offset) (void *private, void *ref); unsigned long (*offset) (void *private, void *ref); } drm_sman_mm_t; }; typedef struct drm_memblock_item { struct drm_memblock_item { struct list_head owner_list; struct list_head owner_list; drm_hash_item_t user_hash; drm_hash_item_t user_hash; void *mm_info; void *mm_info; drm_sman_mm_t *mm; struct drm_sman_mm *mm; struct drm_sman *sman; struct drm_sman *sman; } drm_memblock_item_t; }; typedef struct drm_sman { struct drm_sman { drm_sman_mm_t *mm; struct drm_sman_mm *mm; int num_managers; int num_managers; drm_open_hash_t owner_hash_tab; drm_open_hash_t owner_hash_tab; drm_open_hash_t user_hash_tab; drm_open_hash_t user_hash_tab; struct list_head owner_items; struct list_head owner_items; } drm_sman_t; }; /* /* * Take down a memory manager. This function should only be called after a * Take down a memory manager. This function should only be called after a * successful init and after a call to drm_sman_cleanup. * successful init and after a call to drm_sman_cleanup. */ */ extern void drm_sman_takedown(drm_sman_t * sman); extern void drm_sman_takedown(struct drm_sman * sman); /* /* * Allocate structures for a manager. * Allocate structures for a manager. Loading @@ -112,7 +112,7 @@ extern void drm_sman_takedown(drm_sman_t * sman); * * */ */ extern int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, extern int drm_sman_init(struct drm_sman * sman, unsigned int num_managers, unsigned int user_order, unsigned int owner_order); unsigned int user_order, unsigned int owner_order); /* /* Loading @@ -120,7 +120,7 @@ extern int drm_sman_init(drm_sman_t * sman, unsigned int num_managers, * manager unless a customized allogator is used. * manager unless a customized allogator is used. */ */ extern int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, extern int drm_sman_set_range(struct drm_sman * sman, unsigned int manager, unsigned long start, unsigned long size); unsigned long start, unsigned long size); /* /* Loading @@ -129,14 +129,14 @@ extern int drm_sman_set_range(drm_sman_t * sman, unsigned int manager, * so it can be destroyed after this call. * so it can be destroyed after this call. */ */ extern int drm_sman_set_manager(drm_sman_t * sman, unsigned int mananger, extern int drm_sman_set_manager(struct drm_sman * sman, unsigned int mananger, drm_sman_mm_t * allocator); struct drm_sman_mm * allocator); /* /* * Allocate a memory block. Aligment is not implemented yet. * Allocate a memory block. Aligment is not implemented yet. */ */ extern drm_memblock_item_t *drm_sman_alloc(drm_sman_t * sman, extern struct drm_memblock_item *drm_sman_alloc(struct drm_sman * sman, unsigned int manager, unsigned int manager, unsigned long size, unsigned long size, unsigned alignment, unsigned alignment, Loading @@ -145,7 +145,7 @@ extern drm_memblock_item_t *drm_sman_alloc(drm_sman_t * sman, * Free a memory block identified by its user hash key. * Free a memory block identified by its user hash key. */ */ extern int drm_sman_free_key(drm_sman_t * sman, unsigned int key); extern int drm_sman_free_key(struct drm_sman * sman, unsigned int key); /* /* * returns 1 iff there are no stale memory blocks associated with this owner. * returns 1 iff there are no stale memory blocks associated with this owner. Loading @@ -154,7 +154,7 @@ extern int drm_sman_free_key(drm_sman_t * sman, unsigned int key); * resources associated with owner. * resources associated with owner. */ */ extern int drm_sman_owner_clean(drm_sman_t * sman, unsigned long owner); extern int drm_sman_owner_clean(struct drm_sman * sman, unsigned long owner); /* /* * Frees all stale memory blocks associated with this owner. Note that this * Frees all stale memory blocks associated with this owner. Note that this Loading @@ -164,13 +164,13 @@ extern int drm_sman_owner_clean(drm_sman_t * sman, unsigned long owner); * is not going to be referenced anymore. * is not going to be referenced anymore. */ */ extern void drm_sman_owner_cleanup(drm_sman_t * sman, unsigned long owner); extern void drm_sman_owner_cleanup(struct drm_sman * sman, unsigned long owner); /* /* * Frees all stale memory blocks associated with the memory manager. * Frees all stale memory blocks associated with the memory manager. * See idling above. * See idling above. */ */ extern void drm_sman_cleanup(drm_sman_t * sman); extern void drm_sman_cleanup(struct drm_sman * sman); #endif #endif
drivers/char/drm/sis_drv.h +2 −1 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,7 @@ enum sis_family { #include "drm_sman.h" #include "drm_sman.h" #define SIS_BASE (dev_priv->mmio) #define SIS_BASE (dev_priv->mmio) #define SIS_READ(reg) DRM_READ32(SIS_BASE, reg); #define SIS_READ(reg) DRM_READ32(SIS_BASE, reg); #define SIS_WRITE(reg, val) DRM_WRITE32(SIS_BASE, reg, val); #define SIS_WRITE(reg, val) DRM_WRITE32(SIS_BASE, reg, val); Loading @@ -53,7 +54,7 @@ enum sis_family { typedef struct drm_sis_private { typedef struct drm_sis_private { drm_local_map_t *mmio; drm_local_map_t *mmio; unsigned int idle_fault; unsigned int idle_fault; drm_sman_t sman; struct drm_sman sman; unsigned int chipset; unsigned int chipset; int vram_initialized; int vram_initialized; int agp_initialized; int agp_initialized; Loading
drivers/char/drm/sis_mm.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -130,7 +130,7 @@ static int sis_drm_alloc(struct drm_device *dev, struct drm_file * priv, drm_sis_mem_t __user *argp = (drm_sis_mem_t __user *) data; drm_sis_mem_t __user *argp = (drm_sis_mem_t __user *) data; drm_sis_mem_t mem; drm_sis_mem_t mem; int retval = 0; int retval = 0; drm_memblock_item_t *item; struct drm_memblock_item *item; DRM_COPY_FROM_USER_IOCTL(mem, argp, sizeof(mem)); DRM_COPY_FROM_USER_IOCTL(mem, argp, sizeof(mem)); Loading
drivers/char/drm/via_drv.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ typedef struct drm_via_private { uint32_t irq_pending_mask; uint32_t irq_pending_mask; int *irq_map; int *irq_map; unsigned int idle_fault; unsigned int idle_fault; drm_sman_t sman; struct drm_sman sman; int vram_initialized; int vram_initialized; int agp_initialized; int agp_initialized; unsigned long vram_offset; unsigned long vram_offset; Loading