[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] x86/xen: Allow per-domain usage of hardware virtualized APIC
- To: Jane Malalane <Jane.Malalane@xxxxxxxxxx>
- From: Roger Pau Monné <roger.pau@xxxxxxxxxx>
- Date: Wed, 2 Feb 2022 17:21:22 +0100
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oX2XUgQZLdvJTKeETKdvaH3bGnwRKUNefaD29Rt6NWc=; b=CJKwiQTPScSfNmi9fA5E9VckzONDKfK2CTv9f4k8dZYXz+uQGGs61cCfXzTnt6FvrgD1ZTNbEAK6cjFlkJK8QTH7ABWaAtFNnVzh+R/GxpCgLdUV614g5ipQio4y6iNG6b4oPy39YtXZ8eFaa8ajuhiZS5+ayrPC224BLeBKwvO8fuLZsAxtqAf9i4lPRjcIcn1O7rKjP+OTu20MowTc6A4LJMrktqHV9OshdxfXxQEzTaGUXaGfiiTqzCBb8TarnD32lqZYwC5VSeqtKHXs57iEZG9jwacAyEJnIpmWLcz4/bKBRtcgVVKSX+Jvlzkt36bxtFrtWtC+xKhx8dAYUA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U8PHBfuGW3FT7deHRf+chzbWa/6TDM0DH1mNPyCC/JEoeuwOXFnlCT+XHsomQ8+cROcPKXFYmM12q91COhuh+zARcF/gl029IToOAxMiB//1lYAG+VmOSIhVxpvahOar1n5bf/Y7JHnj4m6Fu5ewBqXDgEZQXBhUPTwOq/XTWVangmPsUfR44ZlwZsTq9UwAqbrRqE7sLx/ad/vyxKK/43lWZimqcdIwAT36HUfTrsgpz0yJqh9gINeCKIGgcCr0Y24mkJTu1TTflKerF6hdCmjEBCz2ZuGjKAyvhmsdYOI4U83b73Y8sTiyYrsTab51Nz8BFe8bhSFTBFtA+MIc0A==
- Authentication-results: esa3.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
- Cc: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony Perard <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>, George Dunlap <George.Dunlap@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Christian Lindig <christian.lindig@xxxxxxxxxx>, David Scott <dave@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
- Delivery-date: Wed, 02 Feb 2022 16:22:03 +0000
- Ironport-data: A9a23:xTDdAaMKnnXClLTvrR0dkMFynXyQoLVcMsEvi/4bfWQNrUpxhDIEn GQaC22Ha6neZWT9f4sjPIvipx4GusDVmII1Twto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6UUsxNbVU8En1500o5w7RRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYoyiZkd8t8 /4XjJW5TV4ZbpfHn/wwCDANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YvNrick5atHiIasUu216zCGfBvEjKXzGa/uRvoQGh2th7ixINfnMb OcWZHlGUEyDYURMP1o+Eb07vPj90xETdBUH8QnI9MLb+VP71xdt2bLgNN7UfN2iRshPmEuc4 GXc8AzRAAweNdGZ4SqI9DSrnOCntR38XIUeBbip7MlAiVeYxnEQIBAOXF79qv684mayUsxSA 1YZ8S0vqe417kPDZsb5dw21pjiDpBF0c8pdFag25R+AzoLQ4h2FHS4UQzhZctskucQqAzsw2 TehndnkGDhuu729Um+G+/GfqjbaESoaN2gZfgcfUBAIpdLkpekOYgnnF4g5VvTv15usRG+2k 2viQDUCa6s7kN4F2PmA1gr+ijuo/6iZdAUy/iiMdzfwhu9mX7KNa4ut4FndyP9PKoeFU1WM1 EQ5d9iiAPMmVs/UynHUKAkZNPTwvqvebmWA6bJ6N8R5r1yQF2ifkZe8Cd2UDGNgKY46dDDge yc/UisBtcYIbBNGgUKaCr9d6vjGL4C8RLwJtdiON7Kih6SdkyfcpElTiba4hTyFraTVufhX1 W2nWcitF20GLq9s0SC7QewQuZdymHxlmj+KFMGmlkr3uVZ7WJJyYexdWGZik8hjtP/UyOkr2 4o32zS2J+V3D7SlP3i/HX87JlEWN3krba0aWOQMHtNv1jFOQTl7Y9eImOtJU9U8w8x9y7mUl lngBB4w4Aev1BXvdFTRAlg+OeyHYHqKhS9hVcDaFQz2iyFLjEfGxPp3SqbbipF8pbE6kK4pE 6JYEyhCa9wWIgn6F/0mRcCVhKRpdQixhBLIOCygYTMleIVnSRCP8djhFjYDPgFTZsZuncdh8 bCmyC3BRp8PG1ZrAMrMMar9xFKtp3kN3ul1WhKQcNVUfUzt9qlsKjDw0aBrc51dd02by2vIz RuSDDcZufLJ/90//u7WiP3WtIyuCeZ/QBZXRjGJ8basOCDG1WO/2oscAv2QdDXQWTqsqqWvb OlY1d/mN/gDkAoYuoZwCe8zn6k/+8Hut/lRyQE9RCfHaFGiC7VBJHia3JYQ6v0Rl+EB4QbvA xCB4NhXP7mNKfjJKl9JKVp3dPmH2NEVhiLWsaY/LnLl6XIl57GAS0hTYUWB0XQPMLtvPYo56 u49o8pKuRengx8nP9va3CBZ82OAci4JX6k978xIBYbqjkwgy01YYIyaASjzucndZ9JJO0gsA zmVmKud2OgMmhucKyI+RSrXwO5QpZUSoxQbnlYNKmOAlsfBmvJqjgZa9i46T1gNwxhKuw6p1 rOH66GhyX2ywgpV
- Ironport-hdrordr: A9a23:C8Zfeqyvt/HOkozXvp5nKrPxtOskLtp133Aq2lEZdPULSKOlfp GV8MjziyWYtN9wYhAdcdDpAtjmfZr5z+8O3WB3B8beYOCGghrSEGgG1+XfKlLbak/DH4JmpM Jdmu1FeaHN5DtB/LfHCWuDYq8dKbC8mcjC74eurEuFDzsaE52Ihz0JdDpzeXcGIjWua6BJcK Z1saF81kWdkDksH4+GL0hAe9KGi8zAlZrgbxJDLxk76DOWhTftzLLhCRCX0joXTjsKmN4ZgC X4uj28wp/mn+Cwyxfa2WOWx5NKmOH5wt8GIMCXkMAaJhjllw7tToV8XL+puiwzvYiUmRwXue iJhy1lE9V46nvXcG3wiRzx2zP42DJr0HPmwU/wuwqUneXJABYBT+ZRj4NQdRXUr2A6ustn7a 5N12WF87JKEBLphk3Glpb1fiAvsnDxjWspkOYVgXAae5AZcqVtoYsW+14QOIscHRj99JssHI BVfY7hDc5tABOnhk3izypSKITGZAVwIv7GeDlPhiWt6UkWoJgjpHFogfD2nR87heUAotd/lq D5259T5cJzp/ktHNZA7dc6MLuK41P2MGDx2UKpUB3a/fI8SjrwQ6Ce2sRB2AjtQu1O8KcP
- Ironport-sdr: ANsPVcZJiRCn47DXYyUQQ1W6NMHmhKTb7WQdUXLBvd8pcQGBDucRxMFOLSCQnB1/z/XKah1hZh CQUgauqG9i8MDeGqU3ugPyA03h7bCfNzS3pQCF3zsHuHs+LzqbE55j0vZFczjF65N6l7cGlkwJ /NXdAQ288rTl0qaHjQomBNaHhf38J+9xuv6sWSgXf0DNoCMqmBtFqWBspTCpgm2FOKUj2AssK3 bVnbNFSU/nvd+4fOB2d3qM4V0mrTG90YZittA6/weA+pdksh3LGAmztCmmpZIbBa99opa7YavC KP488YNQilTx30S6r/8xy+QH
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
On Wed, Feb 02, 2022 at 03:19:13PM +0000, Jane Malalane wrote:
> On 01/02/2022 10:02, Roger Pau Monné wrote:
> > On Thu, Jan 27, 2022 at 04:01:33PM +0000, Jane Malalane wrote:
> >> diff --git a/tools/libs/light/libxl_types.idl
> >> b/tools/libs/light/libxl_types.idl
> >> index 42ac6c357b..db5eb0a0b3 100644
> >> --- a/tools/libs/light/libxl_types.idl
> >> +++ b/tools/libs/light/libxl_types.idl
> >> @@ -819,11 +825,44 @@ void
> >> libxl__arch_domain_create_info_setdefault(libxl__gc *gc,
> >> {
> >> }
> >>
> >> -void libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
> >> - libxl_domain_build_info
> >> *b_info)
> >> +int libxl__arch_domain_build_info_setdefault(libxl__gc *gc,
> >> + libxl_domain_build_info
> >> *b_info,
> >> + const libxl_physinfo
> >> *physinfo)
> >> {
> >> + int rc;
> >> + bool assisted_xapic;
> >> + bool assisted_x2apic;
> >> +
> >> libxl_defbool_setdefault(&b_info->acpi, true);
> >> libxl_defbool_setdefault(&b_info->arch_x86.msr_relaxed, false);
> >> +
> >> + libxl_defbool_setdefault(&b_info->arch_x86.assisted_xapic, false);
> >> + libxl_defbool_setdefault(&b_info->arch_x86.assisted_x2apic, false);
> >> +
> >> + assisted_xapic = libxl_defbool_val(b_info->arch_x86.assisted_xapic);
> >> + assisted_x2apic = libxl_defbool_val(b_info->arch_x86.assisted_x2apic);
> >> +
> >> + if ((assisted_xapic || assisted_x2apic) &&
> >> + b_info->type == LIBXL_DOMAIN_TYPE_PV)
> >> + {
> >> + LOG(ERROR, "Interrupt Controller Virtualization not supported for
> >> PV");
> >> + rc = ERROR_INVAL;
> >> + goto out;
> >> + }
> >> +
> >> + if ((assisted_xapic && !physinfo->cap_assisted_xapic) ||
> >> + (assisted_x2apic && !physinfo->cap_assisted_x2apic))
> >> + {
> >> + LOG(ERROR, "x%sAPIC hardware supported emulation not available",
> >> + assisted_xapic && !physinfo->cap_assisted_xapic ? "" : "2");
> >> + rc = ERROR_INVAL;
> >> + goto out;
> >> + }
> >
> > I think the logic here is slightly wrong, as you are setting the
> > default value of assisted_x{2}apic to false, and we would instead like
> > to set it to the current value supported by the hardware in order to
> > keep current behavior.
> >
> > Also the options are HVM/PVH only, so having them set for PV should
> > result in an error regardless of the set value, ie:
> >
> > if (b_info->type == LIBXL_DOMAIN_TYPE_PV &&
> > (!libxl_defbool_is_default(&b_info->arch_x86.assisted_xapic) ||
> > !libxl_defbool_is_default(&b_info->arch_x86.assisted_x2apic)))
> > ERROR
> >
> > libxl_defbool_setdefault(&b_info->arch_x86.assisted_xapic,
> > physinfo->cap_assisted_xapic);
> > libxl_defbool_setdefault(&b_info->arch_x86.assisted_x2apic,
> > physinfo->cap_assisted_x2apic);
> >
> > I don't think you need the local assisted_x{2}apic variables.
>
> Makes sense. In that case, could I instead just have this?
>
> if (b_info->type != LIBXL_DOMAIN_TYPE_PV)
> {
> if (physinfo->cap_assisted_xapic)
> libxl_defbool_setdefault(&b_info->arch_x86.assisted_xapic, true);
> if (physinfo->cap_assisted_x2apic)
> libxl_defbool_setdefault(&b_info->arch_x86.assisted_x2apic, true);
I think you actively need to set assisted_x{2}apic if they are using
default values, or else a later call to libxl_defbool_val will cause
an assert to trigger.
libxl_defbool_setdefault(&b_info->arch_x86.assisted_xapic,
physinfo->cap_assisted_xapic);
assisted_x{2}apic need to either resolve to true or false past this
point, but must not be left using it's default (uninitialized) value.
> }
>
> Or do i still need to also check that assisted_x{2}apic hasn't been set
> elsewhere for PV domains, in which case, I'm happy to add the code you
> proposed above with this code I have here too.
I would prefer if we actively rejected options that don't make
sense.
It's wrong to try to set assisted_x{2}apic for PV because there's no
APIC at all in that case. I will defer to the maintainer, but I would
prefer if an error was reported in that case. I know we are not
consistent in that regard, so I'm not going to block what you propose.
Thanks, Roger.
|