|
@@ -57,14 +57,14 @@ static struct attribute ttm_bo_count = {
|
|
|
static inline int ttm_mem_type_from_place(const struct ttm_place *place,
|
|
static inline int ttm_mem_type_from_place(const struct ttm_place *place,
|
|
|
uint32_t *mem_type)
|
|
uint32_t *mem_type)
|
|
|
{
|
|
{
|
|
|
- int i;
|
|
|
|
|
|
|
+ int pos;
|
|
|
|
|
|
|
|
- for (i = 0; i <= TTM_PL_PRIV5; i++)
|
|
|
|
|
- if (place->flags & (1 << i)) {
|
|
|
|
|
- *mem_type = i;
|
|
|
|
|
- return 0;
|
|
|
|
|
- }
|
|
|
|
|
- return -EINVAL;
|
|
|
|
|
|
|
+ pos = ffs(place->flags & TTM_PL_MASK_MEM);
|
|
|
|
|
+ if (unlikely(!pos))
|
|
|
|
|
+ return -EINVAL;
|
|
|
|
|
+
|
|
|
|
|
+ *mem_type = pos - 1;
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void ttm_mem_type_debug(struct ttm_bo_device *bdev, int mem_type)
|
|
static void ttm_mem_type_debug(struct ttm_bo_device *bdev, int mem_type)
|