|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 02/17] x86/mm: make mm.c build with !CONFIG_PV
Put PV only code under CONFIG_PV.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
xen/arch/x86/mm.c | 55 ++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 46 insertions(+), 9 deletions(-)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index 02abd06..f211383 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -625,6 +625,7 @@ const char __section(".bss.page_aligned.const")
__aligned(PAGE_SIZE)
zero_page[PAGE_SIZE];
+#ifdef CONFIG_PV
static int alloc_segdesc_page(struct page_info *page)
{
const struct domain *owner = page_get_owner(page);
@@ -639,6 +640,7 @@ static int alloc_segdesc_page(struct page_info *page)
return i == 512 ? 0 : -EINVAL;
}
+#endif
static int _get_page_type(struct page_info *page, unsigned long type,
bool preemptible);
@@ -663,15 +665,6 @@ static int get_page_and_type_from_mfn(
return rc;
}
-static void put_data_page(
- struct page_info *page, int writeable)
-{
- if ( writeable )
- put_page_and_type(page);
- else
- put_page(page);
-}
-
#ifdef CONFIG_PV_LINEAR_PT
static bool inc_linear_entries(struct page_info *pg)
@@ -1129,6 +1122,8 @@ get_page_from_l1e(
return -EBUSY;
}
+#ifdef CONFIG_PV
+
define_get_linear_pagetable(l2);
static int
get_page_from_l2e(
@@ -1197,6 +1192,8 @@ get_page_from_l4e(
return rc;
}
+#endif /* CONFIG_PV */
+
static int _put_page_type(struct page_info *page, bool preemptible,
struct page_info *ptpg);
@@ -1277,6 +1274,8 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain
*l1e_owner)
}
+#ifdef CONFIG_PV
+
/*
* NB. Virtual address 'l2e' maps to a machine address within frame 'pfn'.
* Note also that this automatically deals correctly with linear p.t.'s.
@@ -1306,6 +1305,15 @@ static int put_page_from_l2e(l2_pgentry_t l2e, unsigned
long pfn)
return 0;
}
+static void put_data_page(
+ struct page_info *page, int writeable)
+{
+ if ( writeable )
+ put_page_and_type(page);
+ else
+ put_page(page);
+}
+
static int put_page_from_l3e(l3_pgentry_t l3e, unsigned long pfn,
int partial, bool defer)
{
@@ -1620,6 +1628,8 @@ void init_xen_pae_l2_slots(l2_pgentry_t *l2t, const
struct domain *d)
COMPAT_L2_PAGETABLE_XEN_SLOTS(d) * sizeof(*l2t));
}
+#endif /* CONFIG_PV */
+
/*
* Fill an L4 with Xen entries.
*
@@ -1726,6 +1736,7 @@ void zap_ro_mpt(mfn_t mfn)
unmap_domain_page(l4tab);
}
+#ifdef CONFIG_PV
static int alloc_l4_table(struct page_info *page)
{
struct domain *d = page_get_owner(page);
@@ -1916,6 +1927,7 @@ static int free_l4_table(struct page_info *page)
return rc;
}
+#endif
#ifndef NDEBUG
/*
@@ -2000,6 +2012,7 @@ void page_unlock(struct page_info *page)
current_locked_page_set(NULL);
}
+#ifdef CONFIG_PV
/*
* PTE flags that a guest may change without re-validating the PTE.
* All other bits affect translation, caching, or Xen's safety.
@@ -2311,6 +2324,7 @@ static int mod_l4_entry(l4_pgentry_t *pl4e,
put_page_from_l4e(ol4e, pfn, 0, 1);
return rc;
}
+#endif /* CONFIG_PV */
static int cleanup_page_cacheattr(struct page_info *page)
{
@@ -2418,6 +2432,7 @@ static void get_page_light(struct page_info *page)
static int alloc_page_type(struct page_info *page, unsigned long type,
int preemptible)
{
+#ifdef CONFIG_PV
struct domain *owner = page_get_owner(page);
int rc;
@@ -2487,12 +2502,17 @@ static int alloc_page_type(struct page_info *page,
unsigned long type,
}
return rc;
+#else
+ ASSERT_UNREACHABLE();
+ return -EINVAL;
+#endif
}
int free_page_type(struct page_info *page, unsigned long type,
int preemptible)
{
+#ifdef CONFIG_PV
struct domain *owner = page_get_owner(page);
unsigned long gmfn;
int rc;
@@ -2541,6 +2561,10 @@ int free_page_type(struct page_info *page, unsigned long
type,
}
return rc;
+#else
+ ASSERT_UNREACHABLE();
+ return -EINVAL;
+#endif
}
@@ -2931,6 +2955,7 @@ int vcpu_destroy_pagetables(struct vcpu *v)
int new_guest_cr3(mfn_t mfn)
{
+#ifdef CONFIG_PV
struct vcpu *curr = current;
struct domain *d = curr->domain;
int rc;
@@ -3029,6 +3054,10 @@ int new_guest_cr3(mfn_t mfn)
}
return rc;
+#else
+ ASSERT_UNREACHABLE();
+ return -EINVAL;
+#endif
}
static struct domain *get_pg_owner(domid_t domid)
@@ -3643,6 +3672,8 @@ long do_mmuext_op(
return rc;
}
+#ifdef CONFIG_PV
+
long do_mmu_update(
XEN_GUEST_HANDLE_PARAM(mmu_update_t) ureqs,
unsigned int count,
@@ -3972,6 +4003,8 @@ long do_mmu_update(
return rc;
}
+#endif
+
int donate_page(
struct domain *d, struct page_info *page, unsigned int memflags)
{
@@ -4078,6 +4111,8 @@ int steal_page(
return -EINVAL;
}
+#ifdef CONFIG_PV
+
static int __do_update_va_mapping(
unsigned long va, u64 val64, unsigned long flags, struct domain *pg_owner)
{
@@ -4241,6 +4276,8 @@ int compat_update_va_mapping_otherdomain(unsigned int va,
return rc;
}
+#endif /* CONFIG_PV */
+
typedef struct e820entry e820entry_t;
DEFINE_XEN_GUEST_HANDLE(e820entry_t);
--
git-series 0.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |