Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2374bf5 authored by Ian Campbell's avatar Ian Campbell
Browse files

xen: balloon: allow PVMMU interfaces to be compiled out



The ARM platform has no concept of PVMMU and therefor no
HYPERVISOR_update_va_mapping et al. Allow this code to be compiled out
when not required.

In some similar situations (e.g. P2M) we have defined dummy functions
to avoid this, however I think we can/should draw the line at dummying
out actual hypercalls.

Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
parent d71f5139
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -6,6 +6,7 @@ config XEN
	bool "Xen guest support"
	bool "Xen guest support"
	select PARAVIRT
	select PARAVIRT
	select PARAVIRT_CLOCK
	select PARAVIRT_CLOCK
	select XEN_HAVE_PVMMU
	depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
	depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
	depends on X86_CMPXCHG && X86_TSC
	depends on X86_CMPXCHG && X86_TSC
	help
	help
+3 −0
Original line number Original line Diff line number Diff line
@@ -206,4 +206,7 @@ config XEN_MCE_LOG
	  Allow kernel fetching MCE error from Xen platform and
	  Allow kernel fetching MCE error from Xen platform and
	  converting it into Linux mcelog format for mcelog tools
	  converting it into Linux mcelog format for mcelog tools


config XEN_HAVE_PVMMU
       bool

endmenu
endmenu
+4 −1
Original line number Original line Diff line number Diff line
@@ -359,6 +359,7 @@ static enum bp_state increase_reservation(unsigned long nr_pages)


		set_phys_to_machine(pfn, frame_list[i]);
		set_phys_to_machine(pfn, frame_list[i]);


#ifdef CONFIG_XEN_HAVE_PVMMU
		/* Link back into the page tables if not highmem. */
		/* Link back into the page tables if not highmem. */
		if (xen_pv_domain() && !PageHighMem(page)) {
		if (xen_pv_domain() && !PageHighMem(page)) {
			int ret;
			int ret;
@@ -368,6 +369,7 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
				0);
				0);
			BUG_ON(ret);
			BUG_ON(ret);
		}
		}
#endif


		/* Relinquish the page back to the allocator. */
		/* Relinquish the page back to the allocator. */
		ClearPageReserved(page);
		ClearPageReserved(page);
@@ -416,13 +418,14 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)


		scrub_page(page);
		scrub_page(page);


#ifdef CONFIG_XEN_HAVE_PVMMU
		if (xen_pv_domain() && !PageHighMem(page)) {
		if (xen_pv_domain() && !PageHighMem(page)) {
			ret = HYPERVISOR_update_va_mapping(
			ret = HYPERVISOR_update_va_mapping(
				(unsigned long)__va(pfn << PAGE_SHIFT),
				(unsigned long)__va(pfn << PAGE_SHIFT),
				__pte_ma(0), 0);
				__pte_ma(0), 0);
			BUG_ON(ret);
			BUG_ON(ret);
		}
		}

#endif
	}
	}


	/* Ensure that ballooned highmem pages don't have kmaps. */
	/* Ensure that ballooned highmem pages don't have kmaps. */