Lines Matching refs:cache
83 struct ps3vram_cache cache; member
311 struct ps3vram_cache *cache = &priv->cache; in ps3vram_cache_evict() local
313 if (!(cache->tags[entry].flags & CACHE_PAGE_DIRTY)) in ps3vram_cache_evict()
317 cache->tags[entry].address); in ps3vram_cache_evict()
318 if (ps3vram_upload(dev, CACHE_OFFSET + entry * cache->page_size, in ps3vram_cache_evict()
319 cache->tags[entry].address, DMA_PAGE_SIZE, in ps3vram_cache_evict()
320 cache->page_size / DMA_PAGE_SIZE) < 0) { in ps3vram_cache_evict()
323 entry * cache->page_size, cache->tags[entry].address, in ps3vram_cache_evict()
324 cache->page_size); in ps3vram_cache_evict()
326 cache->tags[entry].flags &= ~CACHE_PAGE_DIRTY; in ps3vram_cache_evict()
333 struct ps3vram_cache *cache = &priv->cache; in ps3vram_cache_load() local
337 CACHE_OFFSET + entry * cache->page_size, in ps3vram_cache_load()
339 cache->page_size / DMA_PAGE_SIZE) < 0) { in ps3vram_cache_load()
342 address, entry * cache->page_size, cache->page_size); in ps3vram_cache_load()
345 cache->tags[entry].address = address; in ps3vram_cache_load()
346 cache->tags[entry].flags |= CACHE_PAGE_PRESENT; in ps3vram_cache_load()
353 struct ps3vram_cache *cache = &priv->cache; in ps3vram_cache_flush() local
357 for (i = 0; i < cache->page_count; i++) { in ps3vram_cache_flush()
359 cache->tags[i].flags = 0; in ps3vram_cache_flush()
367 struct ps3vram_cache *cache = &priv->cache; in ps3vram_cache_match() local
373 offset = (unsigned int) (address & (cache->page_size - 1)); in ps3vram_cache_match()
377 for (i = 0; i < cache->page_count; i++) { in ps3vram_cache_match()
378 if ((cache->tags[i].flags & CACHE_PAGE_PRESENT) && in ps3vram_cache_match()
379 cache->tags[i].address == base) { in ps3vram_cache_match()
380 cache->hit++; in ps3vram_cache_match()
382 cache->tags[i].address); in ps3vram_cache_match()
388 i = (jiffies + (counter++)) % cache->page_count; in ps3vram_cache_match()
394 cache->miss++; in ps3vram_cache_match()
402 priv->cache.page_count = CACHE_PAGE_COUNT; in ps3vram_cache_init()
403 priv->cache.page_size = CACHE_PAGE_SIZE; in ps3vram_cache_init()
404 priv->cache.tags = kcalloc(CACHE_PAGE_COUNT, in ps3vram_cache_init()
407 if (!priv->cache.tags) in ps3vram_cache_init()
421 kfree(priv->cache.tags); in ps3vram_cache_cleanup()
445 offset = (unsigned int) (from & (priv->cache.page_size - 1)); in ps3vram_read()
446 avail = priv->cache.page_size - offset; in ps3vram_read()
449 cached = CACHE_OFFSET + entry * priv->cache.page_size + offset; in ps3vram_read()
486 offset = (unsigned int) (to & (priv->cache.page_size - 1)); in ps3vram_write()
487 avail = priv->cache.page_size - offset; in ps3vram_write()
490 cached = CACHE_OFFSET + entry * priv->cache.page_size + offset; in ps3vram_write()
500 priv->cache.tags[entry].flags |= CACHE_PAGE_DIRTY; in ps3vram_write()
515 seq_printf(m, "hit:%u\nmiss:%u\n", priv->cache.hit, priv->cache.miss); in ps3vram_proc_show()