From patchwork Thu Oct 17 01:25:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Wendling X-Patchwork-Id: 11194615 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D9EA51575 for ; Thu, 17 Oct 2019 01:25:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B573A21D7A for ; Thu, 17 Oct 2019 01:25:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="GLW2gUOk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405934AbfJQBZS (ORCPT ); Wed, 16 Oct 2019 21:25:18 -0400 Received: from mail-yw1-f74.google.com ([209.85.161.74]:54958 "EHLO mail-yw1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405786AbfJQBZS (ORCPT ); Wed, 16 Oct 2019 21:25:18 -0400 Received: by mail-yw1-f74.google.com with SMTP id 123so636207ywq.21 for ; Wed, 16 Oct 2019 18:25:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=2aXT99zRhARLZKfxO/1NXEG4WuQJvIfJjA9M7hKv2ns=; b=GLW2gUOkhgb4Kadhs5jiBl7jfhmtDnHJyD86dUzQh+Wf3Pi9xxA6/RtaDDMiDH6l4/ N9dFGBxzXLNGH6xF7mO/wZ0NTEeqo490GHTAvRsdyhyUMSTbHgCe84vs+8XG9KaGi9O9 4I67RAQ9Sjz6QoaXrqpjNXfSFnwZ2UsNMFCehZp9srdxHaM6hQ+g6F6FfHvg7WeaNrUF 29701FAjEojNtWkKc1oli7VoLmBUlELuK04FbQ+7L97R+QLFjjJXlSpF1B7XA2bjlGkm WFoq8D4OsjU+olWCWov9ZV0qMtpmlAS7rGDwBjd118biWDtQvYU6gFIPfA20qwrntOnh nD6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=2aXT99zRhARLZKfxO/1NXEG4WuQJvIfJjA9M7hKv2ns=; b=aNGdr6KICiaGIz6AM6np2R+cehDp+BUhxydqcsearsxLOGu6rZB2DnbYimt5kWYQln cQjpgtezseFiMDZPqdo2wCSAYq7Oy9YadQlCoi8dSzTtOtIwuENky3ZU2YV3Hf3Dy0jj 9cXm7StisMRZJNMzOlWxbRF+kk7TNR3UU6vZTcCtJgV4PXzfDMHlYY3l8BW/AWo4hMFK Hbo0op1/Lk/8P2d7YmFe6Pj0eYNBZYOPRmYyOV/vlCl+Tiim/mBGxtZcRtVhwP+d/IWk 2jB09pjD1dRZiHXPBcSaqmvKZ/AF5N7lMVfxB7FN0b5sm+h7dsC34KwU5+gYqcsfbkTN UXHw== X-Gm-Message-State: APjAAAV7duFUKr0fxqhvo3M3HjYJk5Wmj1Cy5u52SmrxOV3IdkFbnZ3G Fv7LCddp8w3PsfcFaZHURC7bZErArf5Dyc2sIcX/ds35GydxoGcpUUTbRThxYOcTnbIoZ6XPADn h0DCMSSgZZtrmgDQadzlwH9uFxx9apPJfHpvVZ9yDm6Pm3iUTzP7BdA== X-Google-Smtp-Source: APXvYqyEqhxaqDleID8GRQkQIPOau8Dk/yvQpG0AV6j2z47E94b5IXI9WaRyics5JOqi1vepixopZTbf9g== X-Received: by 2002:a25:72c1:: with SMTP id n184mr491531ybc.388.1571275515804; Wed, 16 Oct 2019 18:25:15 -0700 (PDT) Date: Wed, 16 Oct 2019 18:25:01 -0700 In-Reply-To: <20191017012502.186146-1-morbo@google.com> Message-Id: <20191017012502.186146-2-morbo@google.com> Mime-Version: 1.0 References: <20191012235859.238387-1-morbo@google.com> <20191017012502.186146-1-morbo@google.com> X-Mailer: git-send-email 2.23.0.700.g56cf767bdb-goog Subject: [kvm-unit-tests v2 PATCH 1/2] x86: realmode: explicitly copy regs structure From: Bill Wendling To: kvm@vger.kernel.org, pbonzini@redhat.com, alexandru.elisei@arm.com, thuth@redhat.com Cc: jmattson@google.com, Bill Wendling Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Clang prefers to use a "rep;movsl" (or equivalent) to copy the "regs" structure. This doesn't work in 16-bit mode, as it will end up copying over half the number of bytes. Avoid this by copying over the structure a byte at a time. Signed-off-by: Bill Wendling --- x86/realmode.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/x86/realmode.c b/x86/realmode.c index 303d093..41b8592 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -140,6 +140,16 @@ struct insn_desc { static struct regs inregs, outregs; +static inline void copy_regs(struct regs *dst_regs, struct regs *src_regs) +{ + char *dst = (char*)dst_regs; + char *src = (char*)src_regs; + u32 i; + + for (i = 0; i < sizeof(struct regs); i++) + dst[i] = src[i]; +} + static void exec_in_big_real_mode(struct insn_desc *insn) { unsigned long tmp; @@ -148,11 +158,11 @@ static void exec_in_big_real_mode(struct insn_desc *insn) extern u8 test_insn[], test_insn_end[]; for (i = 0; i < insn->len; ++i) - test_insn[i] = ((u8 *)(unsigned long)insn->ptr)[i]; + test_insn[i] = ((u8 *)(unsigned long)insn->ptr)[i]; for (; i < test_insn_end - test_insn; ++i) test_insn[i] = 0x90; // nop - save = inregs; + copy_regs(&save, &inregs); asm volatile( "lgdtl %[gdt_descr] \n\t" "mov %%cr0, %[tmp] \n\t" @@ -196,7 +206,8 @@ static void exec_in_big_real_mode(struct insn_desc *insn) : [gdt_descr]"m"(gdt_descr), [bigseg]"r"((short)16) : "cc", "memory" ); - outregs = save; + copy_regs(&outregs, &save); + } #define R_AX 1 From patchwork Thu Oct 17 01:25:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Wendling X-Patchwork-Id: 11194619 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 67FC81668 for ; Thu, 17 Oct 2019 01:25:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 47A4421D7A for ; Thu, 17 Oct 2019 01:25:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="nVL6UJ8f" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406074AbfJQBZU (ORCPT ); Wed, 16 Oct 2019 21:25:20 -0400 Received: from mail-vk1-f201.google.com ([209.85.221.201]:34780 "EHLO mail-vk1-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405786AbfJQBZT (ORCPT ); Wed, 16 Oct 2019 21:25:19 -0400 Received: by mail-vk1-f201.google.com with SMTP id b11so342351vkn.1 for ; Wed, 16 Oct 2019 18:25:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=5svmfLF9OWcBQ7FqMuoYLjWL4gl8GT6cQKYC/kv0LSY=; b=nVL6UJ8fOukT8kJH0A3YfAfpKFB0U+hfzE593lTM/lLeup04mSrjSG+rmwuqQuRxff X/KxfldbUZraVo4lCq8E3Kk3w25xVrtOjExtqeQtr5bWwbmR9NQRmz9iU9EWi2Y4Jvtt 3XaXCUw1XzZQrd+xbZ6YrWD0BXdQjvnILFYg1wPHBueIBYDb75Xh4tkb4YGncWtIsQyL 2Ao0uPpM/6Pe0aSuFygxsewXs5VHViNaqCR4Lqw9ILrCi60+UIrDell7zJIp0tmkvI8A LRokmUWRZ1i7CZQDK/Dj4+sYdrGAVMsrKuPD/2NlF8a79wuh/rE+YL+vXc7kRmlR7/8S noxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=5svmfLF9OWcBQ7FqMuoYLjWL4gl8GT6cQKYC/kv0LSY=; b=AfMeVehI/bOiTKDpM1ZjrGHaYlSLCKApBkOMiEnYL30dW5FOZOobdYzguF1Ss6pVhp 3ieI0BIP+D9i8CsIRY3ey83XeGkrhevz6vZoAiDCSczm3UImJTofdRj+Bk20hfOyBkgw Pzqv0KB2olbJlESm/Q/4JFXLUxWE2WpEb1ziT49Mp7q37Z/TsINWs611NdkHPCt+Cx+0 o7K6K4MdzhNJoCc/GoON7nQyI2agSNvGhx5sr5ucPkUnt1gA2ilj26kuc+5RV3QHk/so PWPwcuEZCTYYOZSyQ0vgLBZKut6QxOpgE9sbTXr6993KniWjzySgTWn1rAdFH9tD2wcy hiPw== X-Gm-Message-State: APjAAAVr38B/GgEzRZ1fdO0UGhrHjF07C1iUVfqv9/vakdvT+eZZ4ruW H38+vZr8kM10yEo7j+48zvHckAUSbkiJyYVkYga+K5UMpVfzLdAxCbhgzj1kRDfhYOlUmoYzYBh W6CDin2IDw6uMurIlfu+0Fp+h467HbQnB+Xmm9lGlAwUSmV8LpNDlvw== X-Google-Smtp-Source: APXvYqyDqBKGGb0lpsPWXOn4DfqfYGrrIafw1WAnctLjpq1CUt5He1+piPwEL429YSJu7Hpyg3x7jMSh7A== X-Received: by 2002:a67:e1c3:: with SMTP id p3mr489441vsl.209.1571275518505; Wed, 16 Oct 2019 18:25:18 -0700 (PDT) Date: Wed, 16 Oct 2019 18:25:02 -0700 In-Reply-To: <20191017012502.186146-1-morbo@google.com> Message-Id: <20191017012502.186146-3-morbo@google.com> Mime-Version: 1.0 References: <20191012235859.238387-1-morbo@google.com> <20191017012502.186146-1-morbo@google.com> X-Mailer: git-send-email 2.23.0.700.g56cf767bdb-goog Subject: [kvm-unit-tests v2 PATCH 2/2] x86: realmode: fix esp in call test From: Bill Wendling To: kvm@vger.kernel.org, pbonzini@redhat.com, alexandru.elisei@arm.com, thuth@redhat.com Cc: jmattson@google.com, Bill Wendling Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org esp needs to point at the end of the stack, or it will corrupt memory. Signed-off-by: Bill Wendling This is a port of Avi Kivity patch for the long jump test: 4aa229495b0e4159642b4a77e9adfdc81501c095. Signed-off-by: Bill Wendling Reviewed-by: Jim Mattson --- x86/realmode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x86/realmode.c b/x86/realmode.c index 41b8592..f318910 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -520,7 +520,7 @@ static void test_call(void) u32 addr; inregs = (struct regs){ 0 }; - inregs.esp = (u32)esp; + inregs.esp = (u32)(esp+16); MK_INSN(call1, "mov $test_function, %eax \n\t" "call *%eax\n\t");