From patchwork Mon Apr 15 23:03:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nadav Amit X-Patchwork-Id: 10901691 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EF1C214DB for ; Mon, 15 Apr 2019 23:03:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CE1E728477 for ; Mon, 15 Apr 2019 23:03:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C12FC2867F; Mon, 15 Apr 2019 23:03:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5251428477 for ; Mon, 15 Apr 2019 23:03:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727214AbfDOXDc (ORCPT ); Mon, 15 Apr 2019 19:03:32 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:40814 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726593AbfDOXDb (ORCPT ); Mon, 15 Apr 2019 19:03:31 -0400 Received: by mail-pg1-f194.google.com with SMTP id d31so9311453pgl.7 for ; Mon, 15 Apr 2019 16:03:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Ce63ZuUNY6nSs89aCuv/PH1NpX4iiqWAyNjQ8m+E3Hg=; b=jiixfzvBDcxjiqdED1TUj+cr3D/UGJ/gXreTt8EkBLW7G4ZvE/kAXVZdqYZj3QNvLL HNWwuJH4ab4HsmAPIvNvs+tEwrK37tDgEfi5cMBVXXSPdI//y/0m46LKfyqKankZSbMr 246I/y4pCJVigyJ+wq7mW7xjtgahd5tFH4ZT6KuNhCTBWlCYlE8jNv/vsM63/x7iX6DO WJoQu5peYTN8tB+6MrAqiHTvwmgWdUC7ARLctTDIxIsaTefpmuwsP9+tJ3c/1p7Jn9rH EnLNP4YQtvXam1w/WS8YsHuHhlUgm68Uzvuk18ueitzj2HnT1E9OrR4PWM1mKrbJoK3/ EoHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Ce63ZuUNY6nSs89aCuv/PH1NpX4iiqWAyNjQ8m+E3Hg=; b=iEC8g+AN1PnOai/U6m/4Vppg/Px0/qD/6t1Ncb96ipUtcpywnbAgbTChME/pcvj94x b91pTWJsxy/VJNfWZQsDqPdtKqHHFH7zdJDYwVuATe20kdqjnzWj/6YcTWVNCLEmikrn ZBjdSSFfCWntXP44l23mM3aEy5hl8mZMWp4PSnYGZ3OB27MJ1NncKkvwWPDfrF6G6KBj Hl/SdSwMz/Ni3ZlBdplszRCNT64dzggC3umVi0edr77JPVsYMykYKgiTvLRDdyqdbPwh owhdKi/rUTOiFp3MvZYSI7GrzzJJxfg6MiI4g2/Mw0200rH0jQ1B0DKeO+WUmwPi7G8h Zexg== X-Gm-Message-State: APjAAAULWSuju35e5stfpXupQnwkp7d/IKvqkH0ZoPlKrTrPP1S+CPO5 JzSaJK9A3SqaT7bS2tPtyk8= X-Google-Smtp-Source: APXvYqy2XI0nFlSgHTk6E0SFZIh5UePh/D5QnpELXRbO1dyXvhaHzn8Eo5b7DVjejGKbZ1Y7/7yiHQ== X-Received: by 2002:a63:5d04:: with SMTP id r4mr72318684pgb.117.1555369410445; Mon, 15 Apr 2019 16:03:30 -0700 (PDT) Received: from htb-2n-eng-dhcp405.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id u20sm52125887pfh.112.2019.04.15.16.03.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 15 Apr 2019 16:03:29 -0700 (PDT) From: nadav.amit@gmail.com To: Paolo Bonzini Cc: kvm@vger.kernel.org, Sean Christopherson , Nadav Amit Subject: [PATCH] x86: Wait for self IPI Date: Mon, 15 Apr 2019 16:03:27 -0700 Message-Id: <20190415230327.23949-1-nadav.amit@gmail.com> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Nadav Amit There is no architectural requirement that self-IPI would be received on the next instruction after it is generated. Make the test more robust by not requiring it, and instead wait for some time or until it is received. Signed-off-by: Nadav Amit --- x86/apic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x86/apic.c b/x86/apic.c index 0849f87..de5990c 100644 --- a/x86/apic.c +++ b/x86/apic.c @@ -255,13 +255,18 @@ static void self_ipi_isr(isr_regs_t *regs) static void test_self_ipi(void) { + u64 start = rdtsc(); int vec = 0xf1; handle_irq(vec, self_ipi_isr); irq_enable(); apic_icr_write(APIC_DEST_SELF | APIC_DEST_PHYSICAL | APIC_DM_FIXED | vec, 0); - asm volatile ("nop"); + + do { + pause(); + } while (rdtsc() - start < 1000000000 && ipi_count == 0); + report("self ipi", ipi_count == 1); }