From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiejun Chen Subject: [v5][PATCH 08/10] tools:firmware:hvmloader: introduce hypercall for xc_reserved_device_memory_map Date: Tue, 26 Aug 2014 19:02:58 +0800 Message-ID: <1409050980-21933-9-git-send-email-tiejun.chen@intel.com> References: <1409050980-21933-1-git-send-email-tiejun.chen@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1409050980-21933-1-git-send-email-tiejun.chen@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: JBeulich@suse.com, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com, yang.z.zhang@intel.com, kevin.tian@intel.com, andrew.cooper3@citrix.com Cc: xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org We will introduce that hypercall xc_reserved_device_memory_map to hvmloader. Signed-off-by: Tiejun Chen --- tools/firmware/hvmloader/util.c | 22 ++++++++++++++++++++++ tools/firmware/hvmloader/util.h | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c index 80d822f..2d2fb7a 100644 --- a/tools/firmware/hvmloader/util.c +++ b/tools/firmware/hvmloader/util.c @@ -828,6 +828,28 @@ int hpet_exists(unsigned long hpet_base) return ((hpet_id >> 16) == 0x8086); } +int get_reserved_device_memory_map(struct reserved_device_memory *entries, + uint32_t max_entries) +{ + static int map_done = 0; + struct xen_mem_reserved_device_memory_map memmap = { + .nr_entries = max_entries + }; + + if ( map_done ) + return 0; + + set_xen_guest_handle(memmap.buffer, entries); + + if ( hypercall_memory_op(XENMEM_reserved_device_memory_map, + &memmap) != 0 ) + BUG(); + + map_done = 1; + + return 0; +} + /* * Local variables: * mode: C diff --git a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h index a70e4aa..644b557 100644 --- a/tools/firmware/hvmloader/util.h +++ b/tools/firmware/hvmloader/util.h @@ -241,6 +241,17 @@ int build_e820_table(struct e820entry *e820, unsigned int bios_image_base); void dump_e820_table(struct e820entry *e820, unsigned int nr); + +struct reserved_device_memory { + /* Start PFN of the current mapping of the page. */ + unsigned int start_pfn; + /* Number of the current mapping pages. */ + unsigned int nr_pages; +}; +typedef struct reserved_device_memory reserved_device_memory_t; + +int get_reserved_device_memory_map(struct reserved_device_memory *entries, + uint32_t max_entries); #ifndef NDEBUG void perform_tests(void); #else -- 1.9.1