2015-07-31 00:57:47 +03:00
/*
* Copyright ( c ) 2014 - 2015 , Intel Corporation .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms and conditions of the GNU General Public License ,
* version 2 , as published by the Free Software Foundation .
*
* This program is distributed in the hope it will be useful , but WITHOUT
* ANY WARRANTY ; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE . See the GNU General Public License for
* more details .
*/
# ifndef __NVDIMM_PFN_H
# define __NVDIMM_PFN_H
# include <linux/types.h>
2016-03-03 20:14:36 +03:00
# include <linux/mmzone.h>
2015-07-31 00:57:47 +03:00
# define PFN_SIG_LEN 16
# define PFN_SIG "NVDIMM_PFN_INFO\0"
struct nd_pfn_sb {
u8 signature [ PFN_SIG_LEN ] ;
u8 uuid [ 16 ] ;
u8 parent_uuid [ 16 ] ;
__le32 flags ;
__le16 version_major ;
__le16 version_minor ;
2016-03-03 20:38:00 +03:00
__le64 dataoff ; /* relative to namespace_base + start_pad */
2015-07-31 00:57:47 +03:00
__le64 npfns ;
__le32 mode ;
2016-03-03 20:38:00 +03:00
/* minor-version-1 additions for section alignment */
__le32 start_pad ;
__le32 end_trunc ;
u8 padding [ 4004 ] ;
2015-07-31 00:57:47 +03:00
__le64 checksum ;
} ;
2016-03-03 20:14:36 +03:00
# ifdef CONFIG_SPARSEMEM
# define PFN_SECTION_ALIGN_DOWN(x) SECTION_ALIGN_DOWN(x)
# define PFN_SECTION_ALIGN_UP(x) SECTION_ALIGN_UP(x)
# else
/*
* In this case ZONE_DEVICE = n and we will disable ' pfn ' device support ,
* but we still want pmem to compile .
*/
# define PFN_SECTION_ALIGN_DOWN(x) (x)
# define PFN_SECTION_ALIGN_UP(x) (x)
# endif
2016-03-03 20:38:00 +03:00
# define PHYS_SECTION_ALIGN_DOWN(x) PFN_PHYS(PFN_SECTION_ALIGN_DOWN(PHYS_PFN(x)))
# define PHYS_SECTION_ALIGN_UP(x) PFN_PHYS(PFN_SECTION_ALIGN_UP(PHYS_PFN(x)))
2015-07-31 00:57:47 +03:00
# endif /* __NVDIMM_PFN_H */