From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
xen-devel@lists.xenproject.org
Cc: Wei Liu <wei.liu2@citrix.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Ian Campbell <ian.campbell@citrix.com>,
Jan Beulich <jbeulich@suse.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [PATCH v3 11/32] xen/x86: add bitmap of enabled emulated devices
Date: Thu, 23 Jul 2015 12:29:37 +0200 [thread overview]
Message-ID: <55B0C211.6030703@citrix.com> (raw)
In-Reply-To: <559A8C3A.7090406@citrix.com>
El 06/07/15 a les 16.10, Andrew Cooper ha escrit:
> On 03/07/15 12:34, Roger Pau Monne wrote:
>> diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
>> index a112953..d684f49 100644
>> --- a/xen/arch/x86/domain.c
>> +++ b/xen/arch/x86/domain.c
>> @@ -528,6 +528,7 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags,
>> {
>> int i, paging_initialised = 0;
>> int rc = -ENOMEM;
>> + uint32_t emulation_mask;
>>
>> d->arch.s3_integrity = !!(domcr_flags & DOMCRF_s3_integrity);
>>
>> @@ -550,6 +551,20 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags,
>> d->domain_id);
>> }
>>
>> + if ( is_hvm_domain(d) )
>> + {
>> + emulation_mask = (EMU_LAPIC | EMU_HPET | EMU_PMTIMER | EMU_RTC |
>> + EMU_IOAPIC | EMU_PIC | EMU_PMU | EMU_VGA | EMU_IOMMU);
>> + if ( (config->emulation_flags & emulation_mask) != emulation_mask )
>> + {
>> + printk(XENLOG_G_ERR "Xen does not allow HVM creation with the "
>> + "current selection of emulators: 0x%x.\n",
>> + config->emulation_flags);
>
> Please put "d%d" in the error message to identify which domain has the
> bad configuration.
>
>> + return -EPERM;
>
> EPERM feels wrong here. It is not a lack of permissions causing the
> issue. EINVAL/EOPNOTSUPP perhaps?
EOPNOTSUPP looks better indeed.
>> + }
>> + d->arch.emulation_flags = config->emulation_flags;
>> + }
>> +
>> if ( has_hvm_container_domain(d) )
>> {
>> d->arch.hvm_domain.hap_enabled =
>> diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
>> index 96bde65..502379e 100644
>> --- a/xen/include/asm-x86/domain.h
>> +++ b/xen/include/asm-x86/domain.h
>> @@ -356,8 +356,21 @@ struct arch_domain
>>
>> /* Mem_access emulation control */
>> bool_t mem_access_emulate_enabled;
>> +
>> + /* Emulated devices enabled bitmap. */
>> + uint32_t emulation_flags;
>> } __cacheline_aligned;
>>
>> +#define has_vlapic(d) (d->arch.emulation_flags & EMU_LAPIC)
>> +#define has_vhpet(d) (d->arch.emulation_flags & EMU_HPET)
>> +#define has_vpmtimer(d) (d->arch.emulation_flags & EMU_PMTIMER)
>> +#define has_vrtc(d) (d->arch.emulation_flags & EMU_RTC)
>> +#define has_vioapic(d) (d->arch.emulation_flags & EMU_IOAPIC)
>> +#define has_vpic(d) (d->arch.emulation_flags & EMU_PIC)
>> +#define has_vpmu(d) (d->arch.emulation_flags & EMU_PMU)
>> +#define has_vvga(d) (d->arch.emulation_flags & EMU_VGA)
>> +#define has_viommu(d) (d->arch.emulation_flags & EMU_IOMMU)
>
> (d) should be bracketed in the expansion.
>
>> +
>> #define has_arch_pdevs(d) (!list_empty(&(d)->arch.pdev_list))
>>
>> #define gdt_ldt_pt_idx(v) \
>> diff --git a/xen/include/public/arch-x86/xen.h b/xen/include/public/arch-x86/xen.h
>> index 2ecc9c9..6b387a3 100644
>> --- a/xen/include/public/arch-x86/xen.h
>> +++ b/xen/include/public/arch-x86/xen.h
>> @@ -268,7 +268,25 @@ typedef struct arch_shared_info arch_shared_info_t;
>> * XEN_DOMCTL_INTERFACE_VERSION.
>> */
>> struct xen_arch_domainconfig {
>> - char dummy;
>> +#define _EMU_LAPIC 0
>> +#define EMU_LAPIC (1U<<_EMU_LAPIC)
>> +#define _EMU_HPET 1
>> +#define EMU_HPET (1U<<_EMU_HPET)
>> +#define _EMU_PMTIMER 2
>> +#define EMU_PMTIMER (1U<<_EMU_PMTIMER)
>> +#define _EMU_RTC 3
>> +#define EMU_RTC (1U<<_EMU_RTC)
>> +#define _EMU_IOAPIC 4
>> +#define EMU_IOAPIC (1U<<_EMU_IOAPIC)
>> +#define _EMU_PIC 5
>> +#define EMU_PIC (1U<<_EMU_PIC)
>> +#define _EMU_PMU 6
>> +#define EMU_PMU (1U<<_EMU_PMU)
>> +#define _EMU_VGA 7
>> +#define EMU_VGA (1U<<_EMU_VGA)
>> +#define _EMU_IOMMU 8
>> +#define EMU_IOMMU (1U<<_EMU_IOMMU)
>
> These are all in the public API, so absolutely needs a XEN_ prefix, and
> likely an X86 one as well.
>
>> + uint32_t emulation_flags;
>
> Either state that this is ignored for domain types other than HVM, or
> have arch_domain_create() confirm that it is 0.
IMHO adding a check to arch_domain_create is TRTTD.
Roger.
next prev parent reply other threads:[~2015-07-23 10:29 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-03 11:34 [PATCH v3 00/32] Introduce HVM without dm and new boot ABI Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 01/32] libxc: split x86 HVM setup_guest into smaller logical functions Roger Pau Monne
2015-07-06 10:45 ` Andrew Cooper
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 02/32] libxc: unify xc_dom_p2m_{host/guest} Roger Pau Monne
2015-07-06 10:49 ` Andrew Cooper
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 03/32] libxc: introduce the notion of a container type Roger Pau Monne
2015-07-06 12:01 ` Andrew Cooper
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 04/32] libxc: introduce a domain loader for HVM guest firmware Roger Pau Monne
2015-07-06 12:11 ` Andrew Cooper
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 05/32] libxc: make arch_setup_meminit a xc_dom_arch hook Roger Pau Monne
2015-07-06 12:23 ` Andrew Cooper
2015-07-27 10:40 ` Roger Pau Monné
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 06/32] libxc: make arch_setup_boot{init/late} xc_dom_arch hooks Roger Pau Monne
2015-07-06 12:27 ` Andrew Cooper
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 07/32] xen/x86: fix arch_set_info_guest for HVM guests Roger Pau Monne
2015-07-06 12:58 ` Andrew Cooper
2015-07-23 10:14 ` Roger Pau Monné
2015-07-10 18:39 ` Konrad Rzeszutek Wilk
2015-07-10 18:47 ` Konrad Rzeszutek Wilk
2015-07-23 10:17 ` Roger Pau Monné
2015-07-13 14:01 ` Jan Beulich
2015-07-23 10:25 ` Roger Pau Monné
2015-07-23 11:29 ` Jan Beulich
2015-07-23 11:41 ` Ian Campbell
2015-07-23 15:10 ` Roger Pau Monné
2015-07-23 15:32 ` Jan Beulich
2015-07-23 15:48 ` Roger Pau Monné
2015-07-23 15:58 ` Jan Beulich
2015-07-23 16:00 ` Ian Campbell
2015-07-23 16:15 ` Andrew Cooper
2015-07-23 16:19 ` Jan Beulich
2015-07-23 16:49 ` Andrew Cooper
2015-07-23 17:06 ` Roger Pau Monné
2015-07-23 16:56 ` Roger Pau Monné
2015-07-23 17:12 ` Andrew Cooper
2015-07-24 8:22 ` Jan Beulich
2015-07-24 9:59 ` Roger Pau Monné
2015-07-24 10:46 ` Jan Beulich
2015-07-24 12:11 ` Roger Pau Monné
2015-07-24 12:44 ` Jan Beulich
2015-07-24 15:26 ` Roger Pau Monné
2015-07-24 15:49 ` Jan Beulich
2015-07-24 16:54 ` Roger Pau Monné
2015-07-24 17:36 ` Konrad Rzeszutek Wilk
2015-07-27 11:55 ` Roger Pau Monné
2015-08-03 16:55 ` Andrew Cooper
2015-08-03 17:31 ` Roger Pau Monné
2015-08-04 18:08 ` Andrew Cooper
2015-08-05 9:53 ` Roger Pau Monné
2015-08-05 15:39 ` Andrew Cooper
2015-08-05 16:40 ` Roger Pau Monné
2015-08-05 16:46 ` Andrew Cooper
2015-08-05 17:11 ` Roger Pau Monné
2015-08-05 19:00 ` Andrew Cooper
2015-08-07 12:15 ` Tim Deegan
2015-08-11 7:26 ` Jan Beulich
2015-07-24 11:11 ` Andrew Cooper
2015-07-24 11:28 ` Ian Campbell
2015-07-24 11:49 ` Jan Beulich
2015-07-24 11:46 ` Jan Beulich
2015-07-24 11:49 ` Roger Pau Monné
2015-07-24 12:41 ` Jan Beulich
2015-07-24 15:28 ` Roger Pau Monné
2015-07-03 11:34 ` [PATCH v3 08/32] libxc: introduce a xc_dom_arch for hvm-3.0-x86_32 guests Roger Pau Monne
2015-07-06 13:40 ` Andrew Cooper
2015-07-03 11:34 ` [PATCH v3 09/32] libxl: switch HVM domain building to use xc_dom_* helpers Roger Pau Monne
2015-07-28 11:22 ` Wei Liu
2015-07-28 14:26 ` Roger Pau Monné
2015-07-28 14:29 ` Wei Liu
2015-07-03 11:34 ` [PATCH v3 10/32] libxc: remove dead HVM building code Roger Pau Monne
2015-07-06 13:46 ` Andrew Cooper
2015-07-23 10:27 ` Roger Pau Monné
2015-07-03 11:34 ` [PATCH v3 11/32] xen/x86: add bitmap of enabled emulated devices Roger Pau Monne
2015-07-06 14:10 ` Andrew Cooper
2015-07-07 7:26 ` Jan Beulich
2015-07-23 10:29 ` Roger Pau Monné [this message]
2015-07-03 11:34 ` [PATCH v3 12/32] xen/x86: allow disabling the emulated local apic Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 13/32] xen/x86: allow disabling the emulated HPET Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 14/32] xen/x86: allow disabling the pmtimer Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 15/32] xen/x86: allow disabling the emulated RTC Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 16/32] xen/x86: allow disabling the emulated IO APIC Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 17/32] xen/x86: allow disabling the emulated PIC Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 18/32] xen/x86: allow disabling the emulated pmu Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 19/32] xen/x86: allow disabling the emulated VGA Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 20/32] xen/x86: allow disabling the emulated IOMMU Roger Pau Monne
2015-07-03 11:34 ` [PATCH v3 21/32] xen/x86: allow disabling all emulated devices inside of Xen Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 22/32] elfnotes: intorduce a new PHYS_ENTRY elfnote Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 23/32] libxc: allow creating domains without emulated devices Roger Pau Monne
2015-07-28 11:22 ` Wei Liu
2015-07-03 11:35 ` [PATCH v3 24/32] xen: allow HVM guests to use XENMEM_memory_map Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 25/32] xen/x86: allow HVM guests to use hypercalls to bring up vCPUs Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 26/32] xenconsole: try to attach to PV console if HVM fails Roger Pau Monne
2015-07-14 13:46 ` Stefano Stabellini
2015-07-23 10:30 ` Roger Pau Monné
2015-07-03 11:35 ` [PATCH v3 27/32] libxc: change the position of the special pages Roger Pau Monne
2015-07-03 15:36 ` Roger Pau Monné
2015-07-10 19:06 ` Konrad Rzeszutek Wilk
2015-07-23 10:42 ` Roger Pau Monné
2015-07-03 11:35 ` [PATCH v3 28/32] libxc/xen: introduce HVM_PARAM_CMDLINE_PFN Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 29/32] libxc/xen: introduce HVM_PARAM_FIRST_FREE_PFN Roger Pau Monne
2015-07-10 19:05 ` Konrad Rzeszutek Wilk
2015-07-23 10:46 ` Roger Pau Monné
2015-07-03 11:35 ` [PATCH v3 30/32] libxc/xen: introduce HVM_PARAM_MODLIST_PFN Roger Pau Monne
2015-07-03 11:35 ` [PATCH v3 31/32] libxc: switch xc_dom_elfloader to be used with HVMlite domains Roger Pau Monne
2015-07-10 19:07 ` Konrad Rzeszutek Wilk
2015-07-23 10:48 ` Roger Pau Monné
2015-07-03 11:35 ` [PATCH v3 32/32] libxl: allow the creation of HVM domains without a device model Roger Pau Monne
2015-07-28 11:22 ` Wei Liu
2015-07-29 14:43 ` Roger Pau Monné
2015-07-29 14:50 ` Wei Liu
2015-07-29 14:58 ` Andrew Cooper
2015-07-03 16:19 ` [PATCH v3 00/32] Introduce HVM without dm and new boot ABI David Vrabel
2015-07-03 16:36 ` Roger Pau Monné
2015-07-10 17:44 ` Konrad Rzeszutek Wilk
2015-07-10 18:01 ` Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55B0C211.6030703@citrix.com \
--to=roger.pau@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=jbeulich@suse.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.