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

ndtest.h (2807B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2#ifndef NDTEST_H
      3#define NDTEST_H
      4
      5#include <linux/platform_device.h>
      6#include <linux/libnvdimm.h>
      7
      8/* SCM device is unable to persist memory contents */
      9#define PAPR_PMEM_UNARMED                   (1ULL << (63 - 0))
     10/* SCM device failed to persist memory contents */
     11#define PAPR_PMEM_SHUTDOWN_DIRTY            (1ULL << (63 - 1))
     12/* SCM device contents are not persisted from previous IPL */
     13#define PAPR_PMEM_EMPTY                     (1ULL << (63 - 3))
     14#define PAPR_PMEM_HEALTH_CRITICAL           (1ULL << (63 - 4))
     15/* SCM device will be garded off next IPL due to failure */
     16#define PAPR_PMEM_HEALTH_FATAL              (1ULL << (63 - 5))
     17/* SCM contents cannot persist due to current platform health status */
     18#define PAPR_PMEM_HEALTH_UNHEALTHY          (1ULL << (63 - 6))
     19
     20/* Bits status indicators for health bitmap indicating unarmed dimm */
     21#define PAPR_PMEM_UNARMED_MASK (PAPR_PMEM_UNARMED |		\
     22				PAPR_PMEM_HEALTH_UNHEALTHY)
     23
     24#define PAPR_PMEM_SAVE_FAILED                (1ULL << (63 - 10))
     25
     26/* Bits status indicators for health bitmap indicating unflushed dimm */
     27#define PAPR_PMEM_BAD_SHUTDOWN_MASK (PAPR_PMEM_SHUTDOWN_DIRTY)
     28
     29/* Bits status indicators for health bitmap indicating unrestored dimm */
     30#define PAPR_PMEM_BAD_RESTORE_MASK  (PAPR_PMEM_EMPTY)
     31
     32/* Bit status indicators for smart event notification */
     33#define PAPR_PMEM_SMART_EVENT_MASK (PAPR_PMEM_HEALTH_CRITICAL | \
     34				    PAPR_PMEM_HEALTH_FATAL |	\
     35				    PAPR_PMEM_HEALTH_UNHEALTHY)
     36
     37#define PAPR_PMEM_SAVE_MASK                (PAPR_PMEM_SAVE_FAILED)
     38
     39struct ndtest_config;
     40
     41struct ndtest_priv {
     42	struct platform_device pdev;
     43	struct device_node *dn;
     44	struct list_head resources;
     45	struct nvdimm_bus_descriptor bus_desc;
     46	struct nvdimm_bus *bus;
     47	struct ndtest_config *config;
     48
     49	dma_addr_t *dcr_dma;
     50	dma_addr_t *label_dma;
     51	dma_addr_t *dimm_dma;
     52};
     53
     54struct ndtest_blk_mmio {
     55	void __iomem *base;
     56	u64 size;
     57	u64 base_offset;
     58	u32 line_size;
     59	u32 num_lines;
     60	u32 table_size;
     61};
     62
     63struct ndtest_dimm {
     64	struct device *dev;
     65	struct nvdimm *nvdimm;
     66	struct ndtest_blk_mmio *mmio;
     67	struct nd_region *blk_region;
     68
     69	dma_addr_t address;
     70	unsigned long long flags;
     71	unsigned long config_size;
     72	void *label_area;
     73	char *uuid_str;
     74
     75	unsigned int size;
     76	unsigned int handle;
     77	unsigned int fail_cmd;
     78	unsigned int physical_id;
     79	unsigned int num_formats;
     80	int id;
     81	int fail_cmd_code;
     82	u8 no_alias;
     83};
     84
     85struct ndtest_mapping {
     86	u64 start;
     87	u64 size;
     88	u8 position;
     89	u8 dimm;
     90};
     91
     92struct ndtest_region {
     93	struct nd_region *region;
     94	struct ndtest_mapping *mapping;
     95	u64 size;
     96	u8 type;
     97	u8 num_mappings;
     98	u8 range_index;
     99};
    100
    101struct ndtest_config {
    102	struct ndtest_dimm *dimms;
    103	struct ndtest_region *regions;
    104	unsigned int dimm_count;
    105	unsigned int dimm_start;
    106	u8 num_regions;
    107};
    108
    109#endif /* NDTEST_H */