x86, CPA: Add a flag parameter to cpa set_clr()
Change change_page_attr_set_clr() array parameter to a flag. This helps following patches which adds an interface to change attr to uc/wb over a set of pages referred by struct page. Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Cc: arjan@infradead.org Cc: eric@anholt.net Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Cc: airlied@redhat.com LKML-Reference: <20090319215358.611346000@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
7f00a2495b
commit
728c951887
@@ -787,7 +787,7 @@ static inline int cache_attr(pgprot_t attr)
|
|||||||
|
|
||||||
static int change_page_attr_set_clr(unsigned long *addr, int numpages,
|
static int change_page_attr_set_clr(unsigned long *addr, int numpages,
|
||||||
pgprot_t mask_set, pgprot_t mask_clr,
|
pgprot_t mask_set, pgprot_t mask_clr,
|
||||||
int force_split, int array)
|
int force_split, int in_flag)
|
||||||
{
|
{
|
||||||
struct cpa_data cpa;
|
struct cpa_data cpa;
|
||||||
int ret, cache, checkalias;
|
int ret, cache, checkalias;
|
||||||
@@ -802,7 +802,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Ensure we are PAGE_SIZE aligned */
|
/* Ensure we are PAGE_SIZE aligned */
|
||||||
if (!array) {
|
if (!(in_flag & CPA_ARRAY)) {
|
||||||
if (*addr & ~PAGE_MASK) {
|
if (*addr & ~PAGE_MASK) {
|
||||||
*addr &= PAGE_MASK;
|
*addr &= PAGE_MASK;
|
||||||
/*
|
/*
|
||||||
@@ -840,7 +840,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
|
|||||||
cpa.curpage = 0;
|
cpa.curpage = 0;
|
||||||
cpa.force_split = force_split;
|
cpa.force_split = force_split;
|
||||||
|
|
||||||
if (array)
|
if (in_flag & CPA_ARRAY)
|
||||||
cpa.flags |= CPA_ARRAY;
|
cpa.flags |= CPA_ARRAY;
|
||||||
|
|
||||||
/* No alias checking for _NX bit modifications */
|
/* No alias checking for _NX bit modifications */
|
||||||
@@ -889,14 +889,14 @@ static inline int change_page_attr_set(unsigned long *addr, int numpages,
|
|||||||
pgprot_t mask, int array)
|
pgprot_t mask, int array)
|
||||||
{
|
{
|
||||||
return change_page_attr_set_clr(addr, numpages, mask, __pgprot(0), 0,
|
return change_page_attr_set_clr(addr, numpages, mask, __pgprot(0), 0,
|
||||||
array);
|
(array ? CPA_ARRAY : 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int change_page_attr_clear(unsigned long *addr, int numpages,
|
static inline int change_page_attr_clear(unsigned long *addr, int numpages,
|
||||||
pgprot_t mask, int array)
|
pgprot_t mask, int array)
|
||||||
{
|
{
|
||||||
return change_page_attr_set_clr(addr, numpages, __pgprot(0), mask, 0,
|
return change_page_attr_set_clr(addr, numpages, __pgprot(0), mask, 0,
|
||||||
array);
|
(array ? CPA_ARRAY : 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
int _set_memory_uc(unsigned long addr, int numpages)
|
int _set_memory_uc(unsigned long addr, int numpages)
|
||||||
|
Reference in New Issue
Block a user