From: Karim Raslan Date: Thu, 26 Jun 2014 11:28:25 +0000 (+0100) Subject: mini-os: added arch_init_gnttab X-Git-Tag: 4.5.0-rc1~621 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d477221d40f0a0b318300bf225655332861cc0c5;p=xen.git mini-os: added arch_init_gnttab Moves some x86-specific code into arch/x86. Signed-off-by: Karim Allah Ahmed [talex5@gmail.com: split into multiple patches] Signed-off-by: Thomas Leonard Acked-by: Samuel Thibault --- diff --git a/extras/mini-os/arch/x86/mm.c b/extras/mini-os/arch/x86/mm.c index 35df15bd1e..9c6d1b84f6 100644 --- a/extras/mini-os/arch/x86/mm.c +++ b/extras/mini-os/arch/x86/mm.c @@ -942,3 +942,16 @@ void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p) *start_pfn_p = start_pfn; *max_pfn_p = max_pfn; } + +grant_entry_t *arch_init_gnttab(int nr_grant_frames) +{ + struct gnttab_setup_table setup; + unsigned long frames[nr_grant_frames]; + + setup.dom = DOMID_SELF; + setup.nr_frames = nr_grant_frames; + set_xen_guest_handle(setup.frame_list, frames); + + HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1); + return map_frames(frames, nr_grant_frames); +} diff --git a/extras/mini-os/gnttab.c b/extras/mini-os/gnttab.c index 6f250062b8..f395d12ab6 100644 --- a/extras/mini-os/gnttab.c +++ b/extras/mini-os/gnttab.c @@ -172,8 +172,6 @@ gnttabop_error(int16_t status) void init_gnttab(void) { - struct gnttab_setup_table setup; - unsigned long frames[NR_GRANT_FRAMES]; int i; #ifdef GNT_DEBUG @@ -182,12 +180,7 @@ init_gnttab(void) for (i = NR_RESERVED_ENTRIES; i < NR_GRANT_ENTRIES; i++) put_free_entry(i); - setup.dom = DOMID_SELF; - setup.nr_frames = NR_GRANT_FRAMES; - set_xen_guest_handle(setup.frame_list, frames); - - HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1); - gnttab_table = map_frames(frames, NR_GRANT_FRAMES); + gnttab_table = arch_init_gnttab(NR_GRANT_FRAMES); printk("gnttab_table mapped at %p.\n", gnttab_table); } diff --git a/extras/mini-os/include/gnttab.h b/extras/mini-os/include/gnttab.h index acd6c39f8c..c43ad4255d 100644 --- a/extras/mini-os/include/gnttab.h +++ b/extras/mini-os/include/gnttab.h @@ -12,5 +12,6 @@ unsigned long gnttab_end_transfer(grant_ref_t gref); int gnttab_end_access(grant_ref_t ref); const char *gnttabop_error(int16_t status); void fini_gnttab(void); +grant_entry_t *arch_init_gnttab(int nr_grant_frames); #endif /* !__GNTTAB_H__ */