Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 60449
b: refs/heads/master
c: 9698b4d
h: refs/heads/master
i:
  60447: dec37df
v: v3
  • Loading branch information
Dave Airlie committed Jul 12, 2007
1 parent b05c8d3 commit 4fc5fce
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 50 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 55910517af381eba4f978740e5e46e23eb269326
refs/heads/master: 9698b4dba42eb758ad98012c21e5fbdb372fe2d9
47 changes: 24 additions & 23 deletions trunk/drivers/char/drm/drm_sman.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ typedef struct drm_owner_item {
struct list_head mem_blocks;
} 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->owner_hash_tab);
Expand All @@ -56,12 +56,12 @@ void drm_sman_takedown(drm_sman_t * sman)
EXPORT_SYMBOL(drm_sman_takedown);

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)
{
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);
if (!sman->mm) {
ret = -ENOMEM;
Expand Down Expand Up @@ -120,10 +120,10 @@ static unsigned long drm_sman_mm_offset(void *private, void *ref)
}

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)
{
drm_sman_mm_t *sman_mm;
struct drm_sman_mm *sman_mm;
struct drm_mm *mm;
int ret;

Expand Down Expand Up @@ -153,8 +153,8 @@ drm_sman_set_range(drm_sman_t * sman, unsigned int manager,
EXPORT_SYMBOL(drm_sman_set_range);

int
drm_sman_set_manager(drm_sman_t * sman, unsigned int manager,
drm_sman_mm_t * allocator)
drm_sman_set_manager(struct drm_sman * sman, unsigned int manager,
struct drm_sman_mm * allocator)
{
BUG_ON(manager >= sman->num_managers);
sman->mm[manager] = *allocator;
Expand All @@ -163,7 +163,7 @@ drm_sman_set_manager(drm_sman_t * sman, unsigned int 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)
{
int ret;
Expand Down Expand Up @@ -194,14 +194,14 @@ static drm_owner_item_t *drm_sman_get_owner_item(drm_sman_t * sman,
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 owner)
{
void *tmp;
drm_sman_mm_t *sman_mm;
struct drm_sman_mm *sman_mm;
drm_owner_item_t *owner_item;
drm_memblock_item_t *memblock;
struct drm_memblock_item *memblock;

BUG_ON(manager >= sman->num_managers);

Expand Down Expand Up @@ -246,40 +246,41 @@ drm_memblock_item_t *drm_sman_alloc(drm_sman_t *sman, unsigned int manager,

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);
drm_ht_remove_item(&sman->user_hash_tab, &item->user_hash);
item->mm->free(item->mm->private, item->mm_info);
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_memblock_item_t *memblock_item;
struct drm_memblock_item *memblock_item;

if (drm_ht_find_item(&sman->user_hash_tab, key, &hash_item))
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);
return 0;
}

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)
{
list_del(&owner_item->sman_list);
drm_ht_remove_item(&sman->owner_hash_tab, &owner_item->owner_hash);
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;
Expand All @@ -300,10 +301,10 @@ int drm_sman_owner_clean(drm_sman_t *sman, unsigned long owner)

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_memblock_item_t *entry, *next;
struct drm_memblock_item *entry, *next;

list_for_each_entry_safe(entry, next, &owner_item->mem_blocks,
owner_list) {
Expand All @@ -312,7 +313,7 @@ static void drm_sman_do_owner_cleanup(drm_sman_t *sman,
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;
Expand All @@ -329,11 +330,11 @@ void drm_sman_owner_cleanup(drm_sman_t *sman, unsigned long owner)

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;
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) {
drm_sman_do_owner_cleanup(sman, entry);
Expand Down
44 changes: 22 additions & 22 deletions trunk/drivers/char/drm/drm_sman.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
* for memory management.
*/

typedef struct drm_sman_mm {
struct drm_sman_mm {
/* private info. If allocated, needs to be destroyed by the destroy
function */
void *private;
Expand All @@ -74,30 +74,30 @@ typedef struct drm_sman_mm {
"alloc" function */

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;
drm_hash_item_t user_hash;
void *mm_info;
drm_sman_mm_t *mm;
struct drm_sman_mm *mm;
struct drm_sman *sman;
} drm_memblock_item_t;
};

typedef struct drm_sman {
drm_sman_mm_t *mm;
struct drm_sman {
struct drm_sman_mm *mm;
int num_managers;
drm_open_hash_t owner_hash_tab;
drm_open_hash_t user_hash_tab;
struct list_head owner_items;
} drm_sman_t;
};

/*
* Take down a memory manager. This function should only be called after a
* 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.
Expand All @@ -112,15 +112,15 @@ 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);

/*
* Initialize a drm_mm.c allocator. Should be called only once for each
* 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);

/*
Expand All @@ -129,23 +129,23 @@ extern int drm_sman_set_range(drm_sman_t * sman, unsigned int manager,
* so it can be destroyed after this call.
*/

extern int drm_sman_set_manager(drm_sman_t * sman, unsigned int mananger,
drm_sman_mm_t * allocator);
extern int drm_sman_set_manager(struct drm_sman * sman, unsigned int mananger,
struct drm_sman_mm * allocator);

/*
* Allocate a memory block. Aligment is not implemented yet.
*/

extern drm_memblock_item_t *drm_sman_alloc(drm_sman_t * sman,
unsigned int manager,
unsigned long size,
unsigned alignment,
unsigned long owner);
extern struct drm_memblock_item *drm_sman_alloc(struct drm_sman * sman,
unsigned int manager,
unsigned long size,
unsigned alignment,
unsigned long owner);
/*
* 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.
Expand All @@ -154,7 +154,7 @@ extern int drm_sman_free_key(drm_sman_t * sman, unsigned int key);
* 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
Expand All @@ -164,13 +164,13 @@ extern int drm_sman_owner_clean(drm_sman_t * sman, unsigned long owner);
* 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.
* See idling above.
*/

extern void drm_sman_cleanup(drm_sman_t * sman);
extern void drm_sman_cleanup(struct drm_sman * sman);

#endif
3 changes: 2 additions & 1 deletion trunk/drivers/char/drm/sis_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@ enum sis_family {

#include "drm_sman.h"


#define SIS_BASE (dev_priv->mmio)
#define SIS_READ(reg) DRM_READ32(SIS_BASE, reg);
#define SIS_WRITE(reg, val) DRM_WRITE32(SIS_BASE, reg, val);

typedef struct drm_sis_private {
drm_local_map_t *mmio;
unsigned int idle_fault;
drm_sman_t sman;
struct drm_sman sman;
unsigned int chipset;
int vram_initialized;
int agp_initialized;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/char/drm/sis_mm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 mem;
int retval = 0;
drm_memblock_item_t *item;
struct drm_memblock_item *item;

DRM_COPY_FROM_USER_IOCTL(mem, argp, sizeof(mem));

Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/char/drm/via_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ typedef struct drm_via_private {
uint32_t irq_pending_mask;
int *irq_map;
unsigned int idle_fault;
drm_sman_t sman;
struct drm_sman sman;
int vram_initialized;
int agp_initialized;
unsigned long vram_offset;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/char/drm/via_mm.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ int via_mem_alloc(DRM_IOCTL_ARGS)

drm_via_mem_t mem;
int retval = 0;
drm_memblock_item_t *item;
struct drm_memblock_item *item;
drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private;
unsigned long tmpSize;

Expand Down

0 comments on commit 4fc5fce

Please sign in to comment.