From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH v4 10/19] xen: setup hypercall page for PVH Date: Tue, 20 Nov 2018 10:27:35 +0100 Message-ID: <0885fcf7-ce75-6457-d535-d44b2b86f7c4@suse.com> References: <20181102123738.16395-1-jgross@suse.com> <20181102123738.16395-11-jgross@suse.com> <20181109181249.GD4363@olila.i.net-space.pl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181109181249.GD4363@olila.i.net-space.pl> Content-Language: de-DE List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Daniel Kiper Cc: hans@knorrie.org, grub-devel@gnu.org, phcoder@gmail.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gMDkvMTEvMjAxOCAxOToxMiwgRGFuaWVsIEtpcGVyIHdyb3RlOgo+IE9uIEZyaSwgTm92IDAy LCAyMDE4IGF0IDAxOjM3OjI5UE0gKzAxMDAsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6Cj4+IEFkZCB0 aGUgbmVlZGVkIGNvZGUgdG8gc2V0dXAgdGhlIGh5cGVyY2FsbCBwYWdlIGZvciBjYWxsaW5nIGlu dG8gdGhlCj4+IFhlbiBoeXBlcnZpc29yLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdy b3NzIDxqZ3Jvc3NAc3VzZS5jb20+Cj4+IC0tLQo+PiBWMzogZ3J1Yl94ZW5fZWFybHlfaGFsdC0+ Z3J1Yl94ZW5fcGFuaWMgKFJvZ2VyIFBhdSBNb25uw6kpCj4+ICAgICBpc3N1ZSBwYW5pYyBtZXNz YWdlIChSb2dlciBQYXUgTW9ubsOpKQo+PiAgICAgcmV3cml0ZSBncnViX3hlbl9oeXBlcmNhbGwg dG8gYXZvaWQgcmVnaXN0ZXIgdmFyaWFibGVzIChEYW5pZWwgS2lwZXIpCj4+IC0tLQo+PiAgZ3J1 Yi1jb3JlL2tlcm4vaTM4Ni94ZW4vcHZoLmMgfCA2OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+ICAxIGZpbGUgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKQo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni94ZW4vcHZoLmMgYi9ncnViLWNv cmUva2Vybi9pMzg2L3hlbi9wdmguYwo+PiBpbmRleCBhYzYxODFmNGUuLjdlOTBhNDUzOCAxMDA2 NDQKPj4gLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vaTM4Ni94ZW4vcHZoLmMKPj4gKysrIGIvZ3J1Yi1j b3JlL2tlcm4vaTM4Ni94ZW4vcHZoLmMKPj4gQEAgLTIwLDE0ICsyMCw4MyBAQAo+PiAgI2luY2x1 ZGUgPGdydWIvbWlzYy5oPgo+PiAgI2luY2x1ZGUgPGdydWIvbWVtb3J5Lmg+Cj4+ICAjaW5jbHVk ZSA8Z3J1Yi9tbS5oPgo+PiArI2luY2x1ZGUgPGdydWIvaTM4Ni9jcHVpZC5oPgo+PiArI2luY2x1 ZGUgPGdydWIvaTM4Ni9pby5oPgo+PiAgI2luY2x1ZGUgPGdydWIveGVuLmg+Cj4+ICAjaW5jbHVk ZSA8Z3J1Yi9tYWNoaW5lL2tlcm5lbC5oPgo+Pgo+PiArI2RlZmluZSBYRU5fQ09OU09MRV9QT1JU ICAgMHhlOQo+IAo+IEkgdGhpbmsgdGhhdCB0aGlzIGlzIG5vdCBQVkggc3BlY2lmaWMgdGhpbmcu IENvdWxkIHlvdSBtb3ZlIHRoaXMgdG8KPiBtb3JlIGdlbmVyaWMgWGVuIGhlYWRlcj8KPiAKPj4g IGdydWJfdWludDY0X3QgZ3J1Yl9yc2RwX2FkZHI7Cj4gCj4gSG1tbS4uLiBJdCBzZWVtcyB0byBt ZSB0aGF0IGltbWVkaWF0ZWx5IGFmdGVyIHBhdGNoICM4IEdSVUIyIGJ1aWxkIGlzCj4gYnJva2Vu LiBJcyBub3QgaXQ/CgpOby4geGVuLXB2aCBpc24ndCB5ZXQgc2VsZWN0YWJsZS4KCj4gCj4+ICtz dGF0aWMgY2hhciBoeXBlcmNhbGxfcGFnZVtHUlVCX1hFTl9QQUdFX1NJWkVdCj4+ICsgIF9fYXR0 cmlidXRlX18gKChhbGlnbmVkIChHUlVCX1hFTl9QQUdFX1NJWkUpKSk7Cj4+ICsKPj4gK3N0YXRp YyBncnViX3VpbnQzMl90IHhlbl9jcHVpZF9iYXNlOwo+PiArCj4+ICtzdGF0aWMgdm9pZAo+PiAr Z3J1Yl94ZW5fcGFuaWMgKGNvbnN0IGNoYXIgKm1zZykKPj4gK3sKPj4gKyAgY29uc3QgY2hhciAq YzsKPj4gKwo+PiArICBmb3IgKGMgPSBtc2c7ICpjOyBjKyspCj4+ICsgICAgZ3J1Yl9vdXRiICgq YywgWEVOX0NPTlNPTEVfUE9SVCk7Cj4+ICsKPj4gKyAgYXNtIHZvbGF0aWxlICgiaGx0Iik7Cj4g Cj4gU2hvdWxkIG5vdCB5b3UgZG8gc29tZXRoaW5nIHNpbWlsYXIgdG8gZ3J1Yi1jb3JlL2xpYi9p Mzg2L2hhbHQuYzpzdG9wKCkgaGVyZT8KClllcywgYXMgYWxyZWFkeSByZXBsaWVkIHRvIFJvZ2Vy LgoKPiAKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK2dydWJfeGVuX2NwdWlkX2Jhc2Ug KHZvaWQpCj4+ICt7Cj4+ICsgIGdydWJfdWludDMyX3QgYmFzZSwgZWF4LCBzaWduYXR1cmVbM107 Cj4+ICsKPj4gKyAgZm9yIChiYXNlID0gMHg0MDAwMDAwMDsgYmFzZSA8IDB4NDAwMTAwMDA7IGJh c2UgKz0gMHgxMDApCj4+ICsgICAgewo+PiArICAgICAgZ3J1Yl9jcHVpZCAoYmFzZSwgZWF4LCBz aWduYXR1cmVbMF0sIHNpZ25hdHVyZVsxXSwgc2lnbmF0dXJlWzJdKTsKPj4gKyAgICAgIGlmICgh Z3J1Yl9tZW1jbXAgKCJYZW5WTU1YZW5WTU0iLCBzaWduYXR1cmUsIDEyKSAmJiAoZWF4IC0gYmFz ZSkgPj0gMikKPj4gKwl7Cj4+ICsJICB4ZW5fY3B1aWRfYmFzZSA9IGJhc2U7Cj4+ICsJICByZXR1 cm47Cj4+ICsJfQo+PiArICAgIH0KPj4gKwo+PiArICBncnViX3hlbl9wYW5pYyAoIkZvdW5kIG5v IFhlbiBzaWduYXR1cmUuXG4iKTsKPiAKPiAiRm91bmQgbm8gWGVuIHNpZ25hdHVyZSFcblN5c3Rl bSBoYWx0ZWQhXG4iCj4gCj4gT3IgbWF5YmUgZ3J1Yl94ZW5fcGFuaWMoKSBzaG91bGQgYWx3YXlz IGFkZCAiU3lzdGVtIGhhbHRlZCFcbiIuCgpPa2F5ICh0aGUgbGF0dGVyKS4KCj4gCj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICtncnViX3hlbl9zZXR1cF9oeXBlcmNhbGxfcGFnZSAodm9p ZCkKPj4gK3sKPj4gKyAgZ3J1Yl91aW50MzJfdCBtc3IsIHBmbiwgZWF4LCBlYngsIGVjeCwgZWR4 Owo+PiArCj4+ICsgIGdydWJfY3B1aWQgKHhlbl9jcHVpZF9iYXNlICsgMiwgZWF4LCBlYngsIGVj eCwgZWR4KTsKPj4gKyAgbXNyID0gZWJ4Owo+PiArICBwZm4gPSAoZ3J1Yl91aW50MzJfdCkgKCZo eXBlcmNhbGxfcGFnZVswXSk7Cj4gCj4gQ291bGQgbm90IHlvdSB1c2UgaHlwZXJjYWxsX3BhZ2Ug YWxvbmUgaGVyZT8KCkhtbSwgeWVzLgoKPiAKPj4gKwo+PiArICBhc20gdm9sYXRpbGUgKCJ3cm1z ciIgOiA6ICJjIiAobXNyKSwgImEiIChwZm4pLCAiZCIgKDApIDogIm1lbW9yeSIpOwo+PiArfQo+ PiArCj4+ICtpbnQKPj4gK2dydWJfeGVuX2h5cGVyY2FsbCAoZ3J1Yl91aW50MzJfdCBjYWxsbm8s IGdydWJfdWludDMyX3QgYTAsCj4+ICsJCSAgICBncnViX3VpbnQzMl90IGExLCBncnViX3VpbnQz Ml90IGEyLAo+PiArCQkgICAgZ3J1Yl91aW50MzJfdCBhMywgZ3J1Yl91aW50MzJfdCBhNCwKPj4g KwkJICAgIGdydWJfdWludDMyX3QgYTUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQo+PiArewo+ PiArICBncnViX3VpbnQzMl90IF9fcmVzLCBfX2lnbjAsIF9faWduMSwgX19pZ24yLCBfX2lnbjMs IF9faWduNDsKPj4gKwo+PiArICBhc20gdm9sYXRpbGUgKCJjYWxsIColW2NhbGxub10iCj4+ICsJ CTogIj1hIiAoX19yZXMpLCAiPWIiIChfX2lnbjApLCAiPWMiIChfX2lnbjEpLCAiPWQiIChfX2ln bjIpLAo+PiArCQkgICI9UyIgKF9faWduMyksICI9RCIgKF9faWduNCkKPj4gKwkJOiAiMSIgKGEw KSwgIjIiIChhMSksICIzIiAoYTIpLCAiNCIgKGEzKSwgIjUiIChhNCksCj4gCj4gSSB0aGluayB0 aGF0IHlvdSBjYW4gZHJvcCBhbGwgX19pZ24qIHZhcmlhYmxlcyBpZiB5b3Ugc3BlY2lmeSBwcm9w ZXIKPiByZWdpc3RlcnMgaW4gaW5wdXQgYXJndW1lbnQuIElmIHRoaXMgZG9lcyBub3Qgd29yayB5 b3UgY2FuIHVzZSAiKyIKPiBtb2RpZmllciBpbnN0ZWFkIG9mICI9IiBpbiB0aGUgb3V0cHV0IGFy Z3VtZW50LgoKSSdsbCBoYXZlIGEgdHJ5LgoKCkp1ZXJnZW4KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1gP2Jr-0006Fr-T6 for mharc-grub-devel@gnu.org; Tue, 20 Nov 2018 04:27:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gP2Jp-00064p-Ui for grub-devel@gnu.org; Tue, 20 Nov 2018 04:27:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gP2Jl-0003aZ-VM for grub-devel@gnu.org; Tue, 20 Nov 2018 04:27:41 -0500 Received: from mx2.suse.de ([195.135.220.15]:44804 helo=mx1.suse.de) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gP2Jl-0003Zu-M5 for grub-devel@gnu.org; Tue, 20 Nov 2018 04:27:37 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 2D0FBAD90; Tue, 20 Nov 2018 09:27:36 +0000 (UTC) Subject: Re: [PATCH v4 10/19] xen: setup hypercall page for PVH To: Daniel Kiper Cc: grub-devel@gnu.org, xen-devel@lists.xen.org, phcoder@gmail.com, hans@knorrie.org References: <20181102123738.16395-1-jgross@suse.com> <20181102123738.16395-11-jgross@suse.com> <20181109181249.GD4363@olila.i.net-space.pl> From: Juergen Gross Openpgp: preference=signencrypt Autocrypt: addr=jgross@suse.com; prefer-encrypt=mutual; keydata= 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 Message-ID: <0885fcf7-ce75-6457-d535-d44b2b86f7c4@suse.com> Date: Tue, 20 Nov 2018 10:27:35 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 MIME-Version: 1.0 In-Reply-To: <20181109181249.GD4363@olila.i.net-space.pl> Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 195.135.220.15 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 20 Nov 2018 09:27:43 -0000 On 09/11/2018 19:12, Daniel Kiper wrote: > On Fri, Nov 02, 2018 at 01:37:29PM +0100, Juergen Gross wrote: >> Add the needed code to setup the hypercall page for calling into the >> Xen hypervisor. >> >> Signed-off-by: Juergen Gross >> --- >> V3: grub_xen_early_halt->grub_xen_panic (Roger Pau Monn=C3=A9) >> issue panic message (Roger Pau Monn=C3=A9) >> rewrite grub_xen_hypercall to avoid register variables (Daniel Kip= er) >> --- >> grub-core/kern/i386/xen/pvh.c | 69 ++++++++++++++++++++++++++++++++++= +++++++++ >> 1 file changed, 69 insertions(+) >> >> diff --git a/grub-core/kern/i386/xen/pvh.c b/grub-core/kern/i386/xen/p= vh.c >> index ac6181f4e..7e90a4538 100644 >> --- a/grub-core/kern/i386/xen/pvh.c >> +++ b/grub-core/kern/i386/xen/pvh.c >> @@ -20,14 +20,83 @@ >> #include >> #include >> #include >> +#include >> +#include >> #include >> #include >> >> +#define XEN_CONSOLE_PORT 0xe9 >=20 > I think that this is not PVH specific thing. Could you move this to > more generic Xen header? >=20 >> grub_uint64_t grub_rsdp_addr; >=20 > Hmmm... It seems to me that immediately after patch #8 GRUB2 build is > broken. Is not it? No. xen-pvh isn't yet selectable. >=20 >> +static char hypercall_page[GRUB_XEN_PAGE_SIZE] >> + __attribute__ ((aligned (GRUB_XEN_PAGE_SIZE))); >> + >> +static grub_uint32_t xen_cpuid_base; >> + >> +static void >> +grub_xen_panic (const char *msg) >> +{ >> + const char *c; >> + >> + for (c =3D msg; *c; c++) >> + grub_outb (*c, XEN_CONSOLE_PORT); >> + >> + asm volatile ("hlt"); >=20 > Should not you do something similar to grub-core/lib/i386/halt.c:stop()= here? Yes, as already replied to Roger. >=20 >> +} >> + >> +static void >> +grub_xen_cpuid_base (void) >> +{ >> + grub_uint32_t base, eax, signature[3]; >> + >> + for (base =3D 0x40000000; base < 0x40010000; base +=3D 0x100) >> + { >> + grub_cpuid (base, eax, signature[0], signature[1], signature[2]= ); >> + if (!grub_memcmp ("XenVMMXenVMM", signature, 12) && (eax - base= ) >=3D 2) >> + { >> + xen_cpuid_base =3D base; >> + return; >> + } >> + } >> + >> + grub_xen_panic ("Found no Xen signature.\n"); >=20 > "Found no Xen signature!\nSystem halted!\n" >=20 > Or maybe grub_xen_panic() should always add "System halted!\n". Okay (the latter). >=20 >> +} >> + >> +static void >> +grub_xen_setup_hypercall_page (void) >> +{ >> + grub_uint32_t msr, pfn, eax, ebx, ecx, edx; >> + >> + grub_cpuid (xen_cpuid_base + 2, eax, ebx, ecx, edx); >> + msr =3D ebx; >> + pfn =3D (grub_uint32_t) (&hypercall_page[0]); >=20 > Could not you use hypercall_page alone here? Hmm, yes. >=20 >> + >> + asm volatile ("wrmsr" : : "c" (msr), "a" (pfn), "d" (0) : "memory")= ; >> +} >> + >> +int >> +grub_xen_hypercall (grub_uint32_t callno, grub_uint32_t a0, >> + grub_uint32_t a1, grub_uint32_t a2, >> + grub_uint32_t a3, grub_uint32_t a4, >> + grub_uint32_t a5 __attribute__ ((unused))) >> +{ >> + grub_uint32_t __res, __ign0, __ign1, __ign2, __ign3, __ign4; >> + >> + asm volatile ("call *%[callno]" >> + : "=3Da" (__res), "=3Db" (__ign0), "=3Dc" (__ign1), "=3Dd" (__ign2)= , >> + "=3DS" (__ign3), "=3DD" (__ign4) >> + : "1" (a0), "2" (a1), "3" (a2), "4" (a3), "5" (a4), >=20 > I think that you can drop all __ign* variables if you specify proper > registers in input argument. If this does not work you can use "+" > modifier instead of "=3D" in the output argument. I'll have a try. Juergen