Lines Matching refs:cache
858 struct ghes_estatus_cache *cache;
864 cache = rcu_dereference(ghes_estatus_caches[i]);
865 if (cache == NULL)
867 if (len != cache->estatus_len)
869 cache_estatus = GHES_ESTATUS_FROM_CACHE(cache);
872 atomic_inc(&cache->count);
874 if (now - cache->time_in < GHES_ESTATUS_IN_CACHE_MAX_NSEC)
888 struct ghes_estatus_cache *cache;
898 cache = (void *)gen_pool_alloc(ghes_estatus_pool, cache_len);
899 if (!cache) {
903 cache_estatus = GHES_ESTATUS_FROM_CACHE(cache);
905 cache->estatus_len = len;
906 atomic_set(&cache->count, 0);
907 cache->generic = generic;
908 cache->time_in = sched_clock();
909 return cache;
914 struct ghes_estatus_cache *cache;
917 cache = container_of(head, struct ghes_estatus_cache, rcu);
918 len = cper_estatus_len(GHES_ESTATUS_FROM_CACHE(cache));
920 gen_pool_free(ghes_estatus_pool, (unsigned long)cache, len);
929 struct ghes_estatus_cache *cache, *new_cache;
940 cache = rcu_dereference(ghes_estatus_caches[i]);
941 if (cache == NULL) {
945 duration = now - cache->time_in;
950 count = atomic_read(&cache->count);
963 * running on another CPU will see the updated cache fields if
973 * drop the other item anyway: this may cause a false cache