The enum guest_type was introduced in commit
6c6492780ea "pvh prep:
introduce pv guest type and has_hvm_container macros" to allow a new guest
type, distinct from either PV or HVM guest types, to be added in commit
8271d6522c6 "pvh: introduce PVH guest type". Subsequently, commit
33e5c32559e "x86: remove PVHv1 code" removed this third guest type.
This patch removes the struct domain field and enumeration as the guest
type can now be trivially determined from the 'options' field.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Reviewed-by: "Roger Pau Monné" <roger.pau@citrix.com>
Acked-by: George Dunlap <George.Dunlap@eu.citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
hardware_domain = d;
}
- /* Sort out our idea of is_{pv,hvm}_domain(). All system domains are PV. */
- d->guest_type = ((d->options & XEN_DOMCTL_CDF_hvm_guest)
- ? guest_type_hvm : guest_type_pv);
-
TRACE_1D(TRC_DOM0_DOM_ADD, d->domain_id);
/*
(d->controller_pause_count > 0 ? XEN_DOMINF_paused : 0) |
(d->debugger_attached ? XEN_DOMINF_debugged : 0) |
(d->is_xenstore ? XEN_DOMINF_xs_domain : 0) |
+ (is_hvm_domain(d) ? XEN_DOMINF_hvm_guest : 0) |
d->shutdown_code << XEN_DOMINF_shutdownshift;
- switch ( d->guest_type )
- {
- case guest_type_hvm:
- info->flags |= XEN_DOMINF_hvm_guest;
- break;
- default:
- break;
- }
-
xsm_security_domaininfo(d, info);
info->tot_pages = d->tot_pages;
fi.submap |= (1U << XENFEAT_ARM_SMCCC_supported);
#endif
#ifdef CONFIG_X86
- switch ( d->guest_type )
- {
- case guest_type_pv:
+ if ( is_pv_domain(d) )
fi.submap |= (1U << XENFEAT_mmu_pt_update_preserve_ad) |
(1U << XENFEAT_highmem_assist) |
(1U << XENFEAT_gnttab_map_avail_bits);
- break;
- case guest_type_hvm:
+ else
fi.submap |= (1U << XENFEAT_hvm_safe_pvclock) |
(1U << XENFEAT_hvm_callback_vector) |
(has_pirq(d) ? (1U << XENFEAT_hvm_pirqs) : 0);
- break;
- }
#endif
break;
default:
struct evtchn_port_ops;
-enum guest_type {
- guest_type_pv, guest_type_hvm
-};
-
struct domain
{
domid_t domain_id;
struct radix_tree_root pirq_tree;
unsigned int nr_pirqs;
- enum guest_type guest_type;
unsigned int options; /* copy of createdomain flags */
/* Is this guest dying (i.e., a zombie)? */
static inline bool is_pv_domain(const struct domain *d)
{
- return IS_ENABLED(CONFIG_PV)
- ? evaluate_nospec(d->guest_type == guest_type_pv) : false;
+ return IS_ENABLED(CONFIG_PV) &&
+ evaluate_nospec(!(d->options & XEN_DOMCTL_CDF_hvm_guest));
}
static inline bool is_pv_vcpu(const struct vcpu *v)
#endif
static inline bool is_hvm_domain(const struct domain *d)
{
- return IS_ENABLED(CONFIG_HVM)
- ? evaluate_nospec(d->guest_type == guest_type_hvm) : false;
+ return IS_ENABLED(CONFIG_HVM) &&
+ evaluate_nospec(d->options & XEN_DOMCTL_CDF_hvm_guest);
}
static inline bool is_hvm_vcpu(const struct vcpu *v)