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

pmem.h (1256B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __NVDIMM_PMEM_H__
      3#define __NVDIMM_PMEM_H__
      4#include <linux/page-flags.h>
      5#include <linux/badblocks.h>
      6#include <linux/memremap.h>
      7#include <linux/types.h>
      8#include <linux/pfn_t.h>
      9#include <linux/fs.h>
     10
     11enum dax_access_mode;
     12
     13/* this definition is in it's own header for tools/testing/nvdimm to consume */
     14struct pmem_device {
     15	/* One contiguous memory region per device */
     16	phys_addr_t		phys_addr;
     17	/* when non-zero this device is hosting a 'pfn' instance */
     18	phys_addr_t		data_offset;
     19	u64			pfn_flags;
     20	void			*virt_addr;
     21	/* immutable base size of the namespace */
     22	size_t			size;
     23	/* trim size when namespace capacity has been section aligned */
     24	u32			pfn_pad;
     25	struct kernfs_node	*bb_state;
     26	struct badblocks	bb;
     27	struct dax_device	*dax_dev;
     28	struct gendisk		*disk;
     29	struct dev_pagemap	pgmap;
     30};
     31
     32long __pmem_direct_access(struct pmem_device *pmem, pgoff_t pgoff,
     33		long nr_pages, enum dax_access_mode mode, void **kaddr,
     34		pfn_t *pfn);
     35
     36#ifdef CONFIG_MEMORY_FAILURE
     37static inline bool test_and_clear_pmem_poison(struct page *page)
     38{
     39	return TestClearPageHWPoison(page);
     40}
     41#else
     42static inline bool test_and_clear_pmem_poison(struct page *page)
     43{
     44	return false;
     45}
     46#endif
     47#endif /* __NVDIMM_PMEM_H__ */