summaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorJiandi An <anjiandi@codeaurora.org>2016-12-27 19:47:32 -0500
committerStefano Stabellini <sstabellini@kernel.org>2017-01-03 13:06:13 -0500
commit0b47a6bd1150f4846b1d61925a4cc5a96593a541 (patch)
treeec91ad5336033603d3cf1aa47a8ee5718530edd7 /drivers/xen
parentf9751a60f17eb09e1d1bd036daaddc3ea3a8bed6 (diff)
Xen: ARM: Zero reserved fields of xatp before making hypervisor call
Ensure all reserved fields of xatp are zero before making hypervisor call to XEN in xen_map_device_mmio(). xenmem_add_to_physmap_one() in XEN fails the mapping request if extra.res reserved field in xatp is not zero for XENMAPSPACE_dev_mmio request. Signed-off-by: Jiandi An <anjiandi@codeaurora.org> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/arm-device.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/xen/arm-device.c b/drivers/xen/arm-device.c
index 778acf80aacb..85dd20e05726 100644
--- a/drivers/xen/arm-device.c
+++ b/drivers/xen/arm-device.c
@@ -58,9 +58,13 @@ static int xen_map_device_mmio(const struct resource *resources,
58 xen_pfn_t *gpfns; 58 xen_pfn_t *gpfns;
59 xen_ulong_t *idxs; 59 xen_ulong_t *idxs;
60 int *errs; 60 int *errs;
61 struct xen_add_to_physmap_range xatp;
62 61
63 for (i = 0; i < count; i++) { 62 for (i = 0; i < count; i++) {
63 struct xen_add_to_physmap_range xatp = {
64 .domid = DOMID_SELF,
65 .space = XENMAPSPACE_dev_mmio
66 };
67
64 r = &resources[i]; 68 r = &resources[i];
65 nr = DIV_ROUND_UP(resource_size(r), XEN_PAGE_SIZE); 69 nr = DIV_ROUND_UP(resource_size(r), XEN_PAGE_SIZE);
66 if ((resource_type(r) != IORESOURCE_MEM) || (nr == 0)) 70 if ((resource_type(r) != IORESOURCE_MEM) || (nr == 0))
@@ -87,9 +91,7 @@ static int xen_map_device_mmio(const struct resource *resources,
87 idxs[j] = XEN_PFN_DOWN(r->start) + j; 91 idxs[j] = XEN_PFN_DOWN(r->start) + j;
88 } 92 }
89 93
90 xatp.domid = DOMID_SELF;
91 xatp.size = nr; 94 xatp.size = nr;
92 xatp.space = XENMAPSPACE_dev_mmio;
93 95
94 set_xen_guest_handle(xatp.gpfns, gpfns); 96 set_xen_guest_handle(xatp.gpfns, gpfns);
95 set_xen_guest_handle(xatp.idxs, idxs); 97 set_xen_guest_handle(xatp.idxs, idxs);