Lines Matching refs:cache
528 struct ghes_estatus_cache *cache;
534 cache = rcu_dereference(ghes_estatus_caches[i]);
535 if (cache == NULL)
537 if (len != cache->estatus_len)
539 cache_estatus = GHES_ESTATUS_FROM_CACHE(cache);
542 atomic_inc(&cache->count);
544 if (now - cache->time_in < GHES_ESTATUS_IN_CACHE_MAX_NSEC)
558 struct ghes_estatus_cache *cache;
568 cache = (void *)gen_pool_alloc(ghes_estatus_pool, cache_len);
569 if (!cache) {
573 cache_estatus = GHES_ESTATUS_FROM_CACHE(cache);
575 cache->estatus_len = len;
576 atomic_set(&cache->count, 0);
577 cache->generic = generic;
578 cache->time_in = sched_clock();
579 return cache;
582 static void ghes_estatus_cache_free(struct ghes_estatus_cache *cache)
586 len = cper_estatus_len(GHES_ESTATUS_FROM_CACHE(cache));
588 gen_pool_free(ghes_estatus_pool, (unsigned long)cache, len);
594 struct ghes_estatus_cache *cache;
596 cache = container_of(head, struct ghes_estatus_cache, rcu);
597 ghes_estatus_cache_free(cache);
606 struct ghes_estatus_cache *cache, *slot_cache = NULL, *new_cache;
614 cache = rcu_dereference(ghes_estatus_caches[i]);
615 if (cache == NULL) {
620 duration = now - cache->time_in;
623 slot_cache = cache;
626 count = atomic_read(&cache->count);
632 slot_cache = cache;