add attribute converted flag

Change-Id: I215e42fa87752d16b8c9744b02d063098cba0af7
This commit is contained in:
toida@cn-r05-10
2018-09-07 09:45:12 +09:00
committed by Masamichi Takagi
parent ddde519263
commit 98aa633856
2 changed files with 11 additions and 5 deletions

View File

@ -312,6 +312,8 @@ enum ihk_mc_pt_attribute {
PTATTR_FOR_USER = UL(1) << (PHYS_MASK_SHIFT - 1),
/* WriteCombine */
PTATTR_WRITE_COMBINED = PTE_ATTRINDX(2),
/* converted flag */
ARCH_PTATTR_FLIPPED = PTE_PROT_NONE,
};
extern enum ihk_mc_pt_attribute attr_mask;

View File

@ -917,6 +917,7 @@ enum ihk_mc_pt_attribute attr_mask =
| PTATTR_FILEOFF
| PTATTR_LARGEPAGE
| PTATTR_NO_EXECUTE
| ARCH_PTATTR_FLIPPED
;
#define ATTR_MASK attr_mask
@ -967,14 +968,17 @@ static unsigned long attr_to_lattr_not_flip(enum ihk_mc_pt_attribute attr, int l
return 0;
}
static unsigned long attr_to_l4attr(enum ihk_mc_pt_attribute attr){ return attr_to_l4attr_not_flip(attr ^ attr_flip_bits); }
static unsigned long attr_to_l3attr(enum ihk_mc_pt_attribute attr){ return attr_to_l3attr_not_flip(attr ^ attr_flip_bits); }
static unsigned long attr_to_l2attr(enum ihk_mc_pt_attribute attr){ return attr_to_l2attr_not_flip(attr ^ attr_flip_bits); }
static unsigned long attr_to_l1attr(enum ihk_mc_pt_attribute attr){ return attr_to_l1attr_not_flip(attr ^ attr_flip_bits); }
static unsigned long attr_to_lattr(enum ihk_mc_pt_attribute attr, int level)
{
return attr_to_lattr_not_flip(attr ^ attr_flip_bits, level);
if (!(attr & ARCH_PTATTR_FLIPPED)) {
attr = (attr ^ attr_flip_bits) | ARCH_PTATTR_FLIPPED;
}
return attr_to_lattr_not_flip(attr, level);
}
static unsigned long attr_to_l4attr(enum ihk_mc_pt_attribute attr){ return attr_to_lattr(attr, 4); }
static unsigned long attr_to_l3attr(enum ihk_mc_pt_attribute attr){ return attr_to_lattr(attr, 3); }
static unsigned long attr_to_l2attr(enum ihk_mc_pt_attribute attr){ return attr_to_lattr(attr, 2); }
static unsigned long attr_to_l1attr(enum ihk_mc_pt_attribute attr){ return attr_to_lattr(attr, 1); }
static int __set_pt_page(struct page_table *pt, void *virt, unsigned long phys,
enum ihk_mc_pt_attribute attr)