diff options
-rw-r--r-- | arch/x86/include/asm/xen/page.h | 1 | ||||
-rw-r--r-- | arch/x86/xen/mmu.c | 10 |
2 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/include/asm/xen/page.h b/arch/x86/include/asm/xen/page.h index bf5f7d32bd08..5e0eb8758919 100644 --- a/arch/x86/include/asm/xen/page.h +++ b/arch/x86/include/asm/xen/page.h | |||
@@ -159,6 +159,7 @@ static inline pte_t __pte_ma(pteval_t x) | |||
159 | 159 | ||
160 | #define pgd_val_ma(x) ((x).pgd) | 160 | #define pgd_val_ma(x) ((x).pgd) |
161 | 161 | ||
162 | void xen_set_domain_pte(pte_t *ptep, pte_t pteval, unsigned domid); | ||
162 | 163 | ||
163 | xmaddr_t arbitrary_virt_to_machine(void *address); | 164 | xmaddr_t arbitrary_virt_to_machine(void *address); |
164 | unsigned long arbitrary_virt_to_mfn(void *vaddr); | 165 | unsigned long arbitrary_virt_to_mfn(void *vaddr); |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 42086ac406af..1ceb0f2fa0af 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -395,7 +395,7 @@ static bool xen_iomap_pte(pte_t pte) | |||
395 | return pte_flags(pte) & _PAGE_IOMAP; | 395 | return pte_flags(pte) & _PAGE_IOMAP; |
396 | } | 396 | } |
397 | 397 | ||
398 | static void xen_set_iomap_pte(pte_t *ptep, pte_t pteval) | 398 | void xen_set_domain_pte(pte_t *ptep, pte_t pteval, unsigned domid) |
399 | { | 399 | { |
400 | struct multicall_space mcs; | 400 | struct multicall_space mcs; |
401 | struct mmu_update *u; | 401 | struct mmu_update *u; |
@@ -407,10 +407,16 @@ static void xen_set_iomap_pte(pte_t *ptep, pte_t pteval) | |||
407 | u->ptr = arbitrary_virt_to_machine(ptep).maddr; | 407 | u->ptr = arbitrary_virt_to_machine(ptep).maddr; |
408 | u->val = pte_val_ma(pteval); | 408 | u->val = pte_val_ma(pteval); |
409 | 409 | ||
410 | MULTI_mmu_update(mcs.mc, mcs.args, 1, NULL, DOMID_IO); | 410 | MULTI_mmu_update(mcs.mc, mcs.args, 1, NULL, domid); |
411 | 411 | ||
412 | xen_mc_issue(PARAVIRT_LAZY_MMU); | 412 | xen_mc_issue(PARAVIRT_LAZY_MMU); |
413 | } | 413 | } |
414 | EXPORT_SYMBOL_GPL(xen_set_domain_pte); | ||
415 | |||
416 | static void xen_set_iomap_pte(pte_t *ptep, pte_t pteval) | ||
417 | { | ||
418 | xen_set_domain_pte(ptep, pteval, DOMID_IO); | ||
419 | } | ||
414 | 420 | ||
415 | static void xen_extend_mmu_update(const struct mmu_update *update) | 421 | static void xen_extend_mmu_update(const struct mmu_update *update) |
416 | { | 422 | { |