Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp662804ybi; Fri, 14 Jun 2019 01:02:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqz3/VYEagZUqkW5uFVeBVSU9EbXLV2kOEtg/DrbIGFdCDLujY20xME0DfIhcHFoaOuR5gHt X-Received: by 2002:a62:2b81:: with SMTP id r123mr55772204pfr.108.1560499366002; Fri, 14 Jun 2019 01:02:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560499365; cv=none; d=google.com; s=arc-20160816; b=oBzGyYkA1wtn0qWo96ZS842e6cp6Acj/+r8jKutBChe9uiXpQ3ZRnT1VFT8XowZvjm i30eSpqZMk42GBNIXUx8RGUwWv3qUHODdJMUWkMehqaEQWef74cACrj0XCnJarnkYD4T OmXaoeDjvMnaaCUBW7XHqlYqBs1UVqB+8PJ5rBcFIx5FX4o3o/HFxK8t7bPhbuiUHwcK F4OVxvTl9CDEX7gyukmO/yDB0kPc/BDAP+2r6CaNuBZB68xpWBksZB7kbVYRzDBUxu2s KnfU/6qw+61HyuWXbBd5zAbJBou+dlZHk2BzMzuzlmuAEGsuh5n5SKkW0XVvGvqaa4Zw lzAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject :ironport-sdr; bh=wrpvoaWAqLThlRlY6Ki/ivjyge9PiKhuNwOWE5TTol8=; b=h/+lKh0NzeFat0MJxu5wXxoO74YQg+hMFpUBLPhi6B27/ogjzhmEL2sHxD+ENB8nzD mE8QHhC33vphBb9R/Ew3qHfR1+pmXSTeO7KU1J22+SegoFEkQ7NGUDqBv3qXsXNsj5zr F5hbWyMBLw6/T4zYbhEvYTGH4xhr/gABYOEcQhWL87YBivPT9a3U3n0d1APZipC9MDSq sJYURuH78EHICM7VEhDG60SHCvFOLds5goQJBpFhZnZ0mPsfSIK2sezpSBNmkR1iiroW xUZ5oLhiHU474AuOc9nWCALANsQ+LeSqQgozcbkC90/ROZBbSsHFc9ZLLmLA7GiRaY/J i4Cw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b12si1677919pfd.79.2019.06.14.01.02.27; Fri, 14 Jun 2019 01:02:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726083AbfFNIAr (ORCPT + 99 others); Fri, 14 Jun 2019 04:00:47 -0400 Received: from esa2.hc3370-68.iphmx.com ([216.71.145.153]:14652 "EHLO esa2.hc3370-68.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725823AbfFNIAr (ORCPT ); Fri, 14 Jun 2019 04:00:47 -0400 Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=andrew.cooper3@citrix.com; spf=Pass smtp.mailfrom=Andrew.Cooper3@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of andrew.cooper3@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="andrew.cooper3@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of Andrew.Cooper3@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="Andrew.Cooper3@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="Andrew.Cooper3@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: lIK8uRyv3J9C8Tab6kOP2ulS71S5RTNGfnFsGUL07XbS+821uBhx7jt9xR3JgO8RLAn43MYqT0 yYjySklJiQ59Sb12ApaM+zOvobdyE3jlGrzLgoYMKeD/SLmJok9pxRz3Gteu5cTtZh9g+4XA0z gPeDChkEBC8+64hV4VCOfeXK2HJNRnnceJG0rpKF9kq5K/FFDM6GqOPc6XJJ/9xlq4eaL0Njb8 U3c6dYGyeykWQtUx4H3CJAo5acH6k0Ujtsw/1KbBYrwq6JuPTnx8x+lyEWm40MkL3dkS6EWgKt o50= X-SBRS: 2.7 X-MesageID: 1730806 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.63,372,1557201600"; d="scan'208";a="1730806" Subject: Re: [Xen-devel] [RFC PATCH 04/16] x86/xen: hypercall support for xenhost_t To: Juergen Gross , Ankur Arora , , CC: , , , , References: <20190509172540.12398-1-ankur.a.arora@oracle.com> <20190509172540.12398-5-ankur.a.arora@oracle.com> <11f8b620-11ac-7075-019a-30d6bad7583c@citrix.com> <59f7cc19-cd9b-119a-1715-50a947cd995d@suse.com> From: Andrew Cooper Openpgp: preference=signencrypt Autocrypt: addr=andrew.cooper3@citrix.com; prefer-encrypt=mutual; keydata= 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 6+ahAA== Message-ID: <2d097a0d-a538-86ec-060b-492629a86bc3@citrix.com> Date: Fri, 14 Jun 2019 09:00:41 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <59f7cc19-cd9b-119a-1715-50a947cd995d@suse.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Content-Language: en-GB X-ClientProxiedBy: AMSPEX02CAS02.citrite.net (10.69.22.113) To AMSPEX02CL02.citrite.net (10.69.22.126) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 14/06/2019 08:35, Juergen Gross wrote: > On 14.06.19 09:20, Ankur Arora wrote: >> On 2019-06-12 2:15 p.m., Andrew Cooper wrote: >>> On 09/05/2019 18:25, Ankur Arora wrote: >>>> Allow for different hypercall implementations for different xenhost >>>> types. >>>> Nested xenhost, which has two underlying xenhosts, can use both >>>> simultaneously. >>>> >>>> The hypercall macros (HYPERVISOR_*) implicitly use the default >>>> xenhost.x >>>> A new macro (hypervisor_*) takes xenhost_t * as a parameter and >>>> does the >>>> right thing. >>>> >>>> TODO: >>>>    - Multicalls for now assume the default xenhost >>>>    - xen_hypercall_* symbols are only generated for the default >>>> xenhost. >>>> >>>> Signed-off-by: Ankur Arora >>> >>> Again, what is the hypervisor nesting and/or guest layout here? >> Two hypervisors, L0 and L1, and the guest is a child of the L1 >> hypervisor but could have PV devices attached to both L0 and L1 >> hypervisors. >> >>> >>> I can't think of any case where a single piece of software can >>> legitimately have two hypercall pages, because if it has one working >>> one, it is by definition a guest, and therefore not privileged >>> enough to >>> use the outer one. >> Depending on which hypercall page is used, the hypercall would >> (eventually) land in the corresponding hypervisor. >> >> Juergen elsewhere pointed out proxying hypercalls is a better approach, >> so I'm not really considering this any more but, given this layout, and >> assuming that the hypercall pages could be encoded differently would it >> still not work? > > Hypercalls might work, but it is a bad idea and a violation of layering > to let a L1 guest issue hypercalls to L0 hypervisor, as those hypercalls > could influence other L1 guests and even the L1 hypervisor. > > Hmm, thinking more about it, I even doubt those hypercalls could work in > all cases: when issued from a L1 PV guest the hypercalls would seem to > be issued from user mode for the L0 hypervisor, and this is not allowed. That is exactly the point I was trying to make. If L2 is an HVM guest, then both its hypercall pages will be using VMCALL/VMMCALL which will end up making hypercalls to L1, rather than having one go to L0. If L2 is a PV guest, then one hypercall page will be SYSCALL/INT 82 which will go to L1, and one will be VMCALL/VMMCALL which goes to L0, but L0 will see it from ring1/ring3 and reject the hypercall. However you nest the system, every guest only has a single occurrence of "supervisor software", so only has a single context that will be tolerated to make hypercalls by the next hypervisor up. ~Andrew