Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

xen: share start flags between PV and PVH

Use a global variable to store the start flags for both PV and PVH.
This allows the xen_initial_domain macro to work properly on PVH.

Note that ARM is also switched to use the new variable.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>

authored by

Roger Pau Monne and committed by
Juergen Gross
1fe83888 7f47e1c5

+18 -4
+4 -3
arch/arm/xen/enlighten.c
··· 59 59 60 60 static __read_mostly unsigned int xen_events_irq; 61 61 62 + uint32_t xen_start_flags; 63 + EXPORT_SYMBOL(xen_start_flags); 64 + 62 65 int xen_remap_domain_gfn_array(struct vm_area_struct *vma, 63 66 unsigned long addr, 64 67 xen_pfn_t *gfn, int nr, ··· 296 293 xen_setup_features(); 297 294 298 295 if (xen_feature(XENFEAT_dom0)) 299 - xen_start_info->flags |= SIF_INITDOMAIN|SIF_PRIVILEGED; 300 - else 301 - xen_start_info->flags &= ~(SIF_INITDOMAIN|SIF_PRIVILEGED); 296 + xen_start_flags |= SIF_INITDOMAIN|SIF_PRIVILEGED; 302 297 303 298 if (!console_set_on_cmdline && !xen_initial_domain()) 304 299 add_preferred_console("hvc", 0, NULL);
+7
arch/x86/xen/enlighten.c
··· 65 65 EXPORT_SYMBOL_GPL(xen_have_vector_callback); 66 66 67 67 /* 68 + * NB: needs to live in .data because it's used by xen_prepare_pvh which runs 69 + * before clearing the bss. 70 + */ 71 + uint32_t xen_start_flags __attribute__((section(".data"))) = 0; 72 + EXPORT_SYMBOL(xen_start_flags); 73 + 74 + /* 68 75 * Point at some empty memory to start with. We map the real shared_info 69 76 * page as soon as fixmap is up and running. 70 77 */
+1
arch/x86/xen/enlighten_pv.c
··· 1203 1203 return; 1204 1204 1205 1205 xen_domain_type = XEN_PV_DOMAIN; 1206 + xen_start_flags = xen_start_info->flags; 1206 1207 1207 1208 xen_setup_features(); 1208 1209
+1
arch/x86/xen/enlighten_pvh.c
··· 97 97 } 98 98 99 99 xen_pvh = 1; 100 + xen_start_flags = pvh_start_info.flags; 100 101 101 102 msr = cpuid_ebx(xen_cpuid_base() + 2); 102 103 pfn = __pa(hypercall_page);
+5 -1
include/xen/xen.h
··· 25 25 #define xen_hvm_domain() (xen_domain_type == XEN_HVM_DOMAIN) 26 26 #define xen_pvh_domain() (xen_pvh) 27 27 28 + #include <linux/types.h> 29 + 30 + extern uint32_t xen_start_flags; 31 + 28 32 #ifdef CONFIG_XEN_DOM0 29 33 #include <xen/interface/xen.h> 30 34 #include <asm/xen/hypervisor.h> 31 35 32 36 #define xen_initial_domain() (xen_domain() && \ 33 - xen_start_info && xen_start_info->flags & SIF_INITDOMAIN) 37 + (xen_start_flags & SIF_INITDOMAIN)) 34 38 #else /* !CONFIG_XEN_DOM0 */ 35 39 #define xen_initial_domain() (0) 36 40 #endif /* CONFIG_XEN_DOM0 */