cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cma.h (1424B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __MM_CMA_H__
      3#define __MM_CMA_H__
      4
      5#include <linux/debugfs.h>
      6#include <linux/kobject.h>
      7
      8struct cma_kobject {
      9	struct kobject kobj;
     10	struct cma *cma;
     11};
     12
     13struct cma {
     14	unsigned long   base_pfn;
     15	unsigned long   count;
     16	unsigned long   *bitmap;
     17	unsigned int order_per_bit; /* Order of pages represented by one bit */
     18	spinlock_t	lock;
     19#ifdef CONFIG_CMA_DEBUGFS
     20	struct hlist_head mem_head;
     21	spinlock_t mem_head_lock;
     22	struct debugfs_u32_array dfs_bitmap;
     23#endif
     24	char name[CMA_MAX_NAME];
     25#ifdef CONFIG_CMA_SYSFS
     26	/* the number of CMA page successful allocations */
     27	atomic64_t nr_pages_succeeded;
     28	/* the number of CMA page allocation failures */
     29	atomic64_t nr_pages_failed;
     30	/* kobject requires dynamic object */
     31	struct cma_kobject *cma_kobj;
     32#endif
     33	bool reserve_pages_on_error;
     34};
     35
     36extern struct cma cma_areas[MAX_CMA_AREAS];
     37extern unsigned cma_area_count;
     38
     39static inline unsigned long cma_bitmap_maxno(struct cma *cma)
     40{
     41	return cma->count >> cma->order_per_bit;
     42}
     43
     44#ifdef CONFIG_CMA_SYSFS
     45void cma_sysfs_account_success_pages(struct cma *cma, unsigned long nr_pages);
     46void cma_sysfs_account_fail_pages(struct cma *cma, unsigned long nr_pages);
     47#else
     48static inline void cma_sysfs_account_success_pages(struct cma *cma,
     49						   unsigned long nr_pages) {};
     50static inline void cma_sysfs_account_fail_pages(struct cma *cma,
     51						unsigned long nr_pages) {};
     52#endif
     53#endif