|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.6] xen/arm: p2m: Pass the vCPU in parameter to get_page_from_gva
commit ad0e68e1524421f897b69b916fe900e6cf57c489
Author: Julien Grall <julien.grall@xxxxxxx>
AuthorDate: Wed Jul 20 17:10:44 2016 +0100
Commit: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CommitDate: Mon Aug 1 18:32:25 2016 -0700
xen/arm: p2m: Pass the vCPU in parameter to get_page_from_gva
The function get_page_from_gva translates a guest virtual address to a
machine address. The translation involves the register VTTBR_EL2,
TTBR0_EL1, TTBR1_EL1 and SCTLR_EL1. Whilst the first register is per
domain (the p2m is common to every vCPUs), the last 3 are per-vCPU.
Therefore, the function should take the vCPU in parameter and not the
domain. Fixing the actual code path will be done a separate patch.
Signed-off-by: Julien Grall <julien.grall@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
xen/arch/arm/guestcopy.c | 6 +++---
xen/arch/arm/p2m.c | 3 ++-
xen/arch/arm/traps.c | 2 +-
xen/include/asm-arm/mm.h | 2 +-
4 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index ce1c3c3..413125f 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -17,7 +17,7 @@ static unsigned long raw_copy_to_guest_helper(void *to, const
void *from,
unsigned size = min(len, (unsigned)PAGE_SIZE - offset);
struct page_info *page;
- page = get_page_from_gva(current->domain, (vaddr_t) to, GV2M_WRITE);
+ page = get_page_from_gva(current, (vaddr_t) to, GV2M_WRITE);
if ( page == NULL )
return len;
@@ -64,7 +64,7 @@ unsigned long raw_clear_guest(void *to, unsigned len)
unsigned size = min(len, (unsigned)PAGE_SIZE - offset);
struct page_info *page;
- page = get_page_from_gva(current->domain, (vaddr_t) to, GV2M_WRITE);
+ page = get_page_from_gva(current, (vaddr_t) to, GV2M_WRITE);
if ( page == NULL )
return len;
@@ -96,7 +96,7 @@ unsigned long raw_copy_from_guest(void *to, const void __user
*from, unsigned le
unsigned size = min(len, (unsigned)(PAGE_SIZE - offset));
struct page_info *page;
- page = get_page_from_gva(current->domain, (vaddr_t) from, GV2M_READ);
+ page = get_page_from_gva(current, (vaddr_t) from, GV2M_READ);
if ( page == NULL )
return len;
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 063505c..d08ecc6 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1456,9 +1456,10 @@ err:
return page;
}
-struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
+struct page_info *get_page_from_gva(struct vcpu *v, vaddr_t va,
unsigned long flags)
{
+ struct domain *d = v->domain;
struct p2m_domain *p2m = &d->arch.p2m;
struct page_info *page = NULL;
paddr_t maddr = 0;
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index c8b27ba..6c1b9dc 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -917,7 +917,7 @@ static void show_guest_stack(struct vcpu *v, struct
cpu_user_regs *regs)
return;
}
- page = get_page_from_gva(v->domain, sp, GV2M_READ);
+ page = get_page_from_gva(v, sp, GV2M_READ);
if ( page == NULL )
{
printk("Failed to convert stack to physical address\n");
diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
index a95082e..c5f6e8e 100644
--- a/xen/include/asm-arm/mm.h
+++ b/xen/include/asm-arm/mm.h
@@ -275,7 +275,7 @@ static inline void *page_to_virt(const struct page_info *pg)
return mfn_to_virt(page_to_mfn(pg));
}
-struct page_info *get_page_from_gva(struct domain *d, vaddr_t va,
+struct page_info *get_page_from_gva(struct vcpu *v, vaddr_t va,
unsigned long flags);
/*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.6
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |