123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- #ifndef NDTEST_H
- #define NDTEST_H
- #include <linux/platform_device.h>
- #include <linux/libnvdimm.h>
- /* SCM device is unable to persist memory contents */
- #define PAPR_PMEM_UNARMED (1ULL << (63 - 0))
- /* SCM device failed to persist memory contents */
- #define PAPR_PMEM_SHUTDOWN_DIRTY (1ULL << (63 - 1))
- /* SCM device contents are not persisted from previous IPL */
- #define PAPR_PMEM_EMPTY (1ULL << (63 - 3))
- #define PAPR_PMEM_HEALTH_CRITICAL (1ULL << (63 - 4))
- /* SCM device will be garded off next IPL due to failure */
- #define PAPR_PMEM_HEALTH_FATAL (1ULL << (63 - 5))
- /* SCM contents cannot persist due to current platform health status */
- #define PAPR_PMEM_HEALTH_UNHEALTHY (1ULL << (63 - 6))
- /* Bits status indicators for health bitmap indicating unarmed dimm */
- #define PAPR_PMEM_UNARMED_MASK (PAPR_PMEM_UNARMED | \
- PAPR_PMEM_HEALTH_UNHEALTHY)
- #define PAPR_PMEM_SAVE_FAILED (1ULL << (63 - 10))
- /* Bits status indicators for health bitmap indicating unflushed dimm */
- #define PAPR_PMEM_BAD_SHUTDOWN_MASK (PAPR_PMEM_SHUTDOWN_DIRTY)
- /* Bits status indicators for health bitmap indicating unrestored dimm */
- #define PAPR_PMEM_BAD_RESTORE_MASK (PAPR_PMEM_EMPTY)
- /* Bit status indicators for smart event notification */
- #define PAPR_PMEM_SMART_EVENT_MASK (PAPR_PMEM_HEALTH_CRITICAL | \
- PAPR_PMEM_HEALTH_FATAL | \
- PAPR_PMEM_HEALTH_UNHEALTHY)
- #define PAPR_PMEM_SAVE_MASK (PAPR_PMEM_SAVE_FAILED)
- struct ndtest_config;
- struct ndtest_priv {
- struct platform_device pdev;
- struct device_node *dn;
- struct list_head resources;
- struct nvdimm_bus_descriptor bus_desc;
- struct nvdimm_bus *bus;
- struct ndtest_config *config;
- dma_addr_t *dcr_dma;
- dma_addr_t *label_dma;
- dma_addr_t *dimm_dma;
- };
- struct ndtest_blk_mmio {
- void __iomem *base;
- u64 size;
- u64 base_offset;
- u32 line_size;
- u32 num_lines;
- u32 table_size;
- };
- struct ndtest_dimm {
- struct device *dev;
- struct nvdimm *nvdimm;
- struct ndtest_blk_mmio *mmio;
- struct nd_region *blk_region;
- dma_addr_t address;
- unsigned long long flags;
- unsigned long config_size;
- void *label_area;
- char *uuid_str;
- unsigned int size;
- unsigned int handle;
- unsigned int fail_cmd;
- unsigned int physical_id;
- unsigned int num_formats;
- int id;
- int fail_cmd_code;
- u8 no_alias;
- };
- struct ndtest_mapping {
- u64 start;
- u64 size;
- u8 position;
- u8 dimm;
- };
- struct ndtest_region {
- struct nd_region *region;
- struct ndtest_mapping *mapping;
- u64 size;
- u8 type;
- u8 num_mappings;
- u8 range_index;
- };
- struct ndtest_config {
- struct ndtest_dimm *dimms;
- struct ndtest_region *regions;
- unsigned int dimm_count;
- unsigned int dimm_start;
- u8 num_regions;
- };
- #endif /* NDTEST_H */
|