|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] x86/shim: fix build when !PV32
commit bd1e7b47bac00735a47055e2cba4106b54175138
Author: Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon May 17 15:42:00 2021 +0200
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon May 17 15:42:00 2021 +0200
x86/shim: fix build when !PV32
In this case compat headers don't get generated (and aren't needed).
The changes made by 527922008bce ("x86: slim down hypercall handling
when !PV32") also weren't quite sufficient for this case.
Try to limit #ifdef-ary by introducing two "fallback" #define-s.
Fixes: d23d792478db ("x86: avoid building COMPAT code when !HVM && !PV32")
Reported-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
xen/arch/x86/pv/shim.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index 4c6f442274..8164a0fbde 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -34,8 +34,6 @@
#include <public/arch-x86/cpuid.h>
#include <public/hvm/params.h>
-#include <compat/grant_table.h>
-
#undef virt_to_mfn
#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
@@ -300,8 +298,10 @@ static void write_start_info(struct domain *d)
&si->console.domU.mfn) )
BUG();
+#ifdef CONFIG_PV32
if ( compat )
xlat_start_info(si, XLAT_start_info_console_domU);
+#endif
unmap_domain_page(si);
}
@@ -675,6 +675,13 @@ void pv_shim_inject_evtchn(unsigned int port)
}
}
+#ifdef CONFIG_PV32
+# include <compat/grant_table.h>
+#else
+# define compat_gnttab_setup_table gnttab_setup_table
+# define compat_handle_okay guest_handle_okay
+#endif
+
static long pv_shim_grant_table_op(unsigned int cmd,
XEN_GUEST_HANDLE_PARAM(void) uop,
unsigned int count)
@@ -704,10 +711,13 @@ static long pv_shim_grant_table_op(unsigned int cmd,
rc = -EFAULT;
break;
}
+
+#ifdef CONFIG_PV32
if ( compat )
#define XLAT_gnttab_setup_table_HNDL_frame_list(d, s)
XLAT_gnttab_setup_table(&nat, &cmp);
#undef XLAT_gnttab_setup_table_HNDL_frame_list
+#endif
nat.status = GNTST_okay;
@@ -778,6 +788,7 @@ static long pv_shim_grant_table_op(unsigned int cmd,
}
ASSERT(grant_frames[i]);
+#ifdef CONFIG_PV32
if ( compat )
{
compat_pfn_t pfn = grant_frames[i];
@@ -789,8 +800,10 @@ static long pv_shim_grant_table_op(unsigned int cmd,
break;
}
}
- else if ( __copy_to_guest_offset(nat.frame_list, i,
- &grant_frames[i], 1) )
+ else
+#endif
+ if ( __copy_to_guest_offset(nat.frame_list, i,
+ &grant_frames[i], 1) )
{
nat.status = GNTST_bad_virt_addr;
rc = -EFAULT;
@@ -799,10 +812,12 @@ static long pv_shim_grant_table_op(unsigned int cmd,
}
spin_unlock(&grant_lock);
+#ifdef CONFIG_PV32
if ( compat )
#define XLAT_gnttab_setup_table_HNDL_frame_list(d, s)
XLAT_gnttab_setup_table(&cmp, &nat);
#undef XLAT_gnttab_setup_table_HNDL_frame_list
+#endif
if ( unlikely(compat ? __copy_to_guest(uop, &cmp, 1)
: __copy_to_guest(uop, &nat, 1)) )
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |