Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp6935820ybi; Thu, 1 Aug 2019 00:37:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqwgpELjJutZFyPp1NhUnNn98tdwiQ/0Zyjs52AYXPW43NllZw/76hMStRrmhcBGsHZHVUwn X-Received: by 2002:a17:90a:20c6:: with SMTP id f64mr7050194pjg.57.1564645033667; Thu, 01 Aug 2019 00:37:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564645033; cv=none; d=google.com; s=arc-20160816; b=Ing554S8AVRLUTDApXHMlTWmzMHXMNRB8FUrNrB+jO7b7nMFB+mLp40qKNKZ4uyXVf ARA9Q6xm9cpRSWJr4gAqOxq8wi0J8XbJ6+OJa25aiF4DSfnrNpP8C74dlAfQozFd+LLe YIF8cV2QU2rT/HyeAIORNoX+erVQRhBVP1ORoRsG66/Q7lHTRxriSKJLbdhIrGp4ie+a 7IjTMsGGUsmXdVvLht806/AiFmp3yTwkbRFiYu4YYe47MZzw0UUPgTO+NBUzP02IaPf0 Efz5dtKsWdtoiIYTXPh4NqhyWoXtRok6mi9AH4+s1fYPWVnYZ391AsFUn9SDifPrnHXi 4vhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=sFn82hxl87C8fXjzpueTy3TJLhnUknUHXDSSwlywkZM=; b=WEUC0ciJ96BCO0ApvjM6KjfklXh8eQxdpX5YpBoFf1IrDWmMEmiobqIZgOXqMFyOqo 7j2IDk71B47Z2lEgqxdcdrLaVlmOCoaIu5Aru9Of/Sp+R86FmEv538WcJRQCHkClsFHK Tfb1555DIZYd2nSNNR1UV5x1CBCZ3MLql8W9w4liRoQwzuM4XR6mXh2SHlziRLiDgGV9 qvQSZshLDWMMm0/LjvKG1Ih3voej3wiajKNCBcPQWpfu7if66GsY1SHR5ZUH5Zn7tYk0 hDFJovt4xHbDrEkYDtzqY8Web4aBJulGVoLa+XY649SfLapoVod4h2M3ICFBbduJyuwv 6LHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="KA02C6/q"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l63si35758146pfl.41.2019.08.01.00.36.58; Thu, 01 Aug 2019 00:37:13 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b="KA02C6/q"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728106AbfHAHGn (ORCPT + 99 others); Thu, 1 Aug 2019 03:06:43 -0400 Received: from mail-pg1-f196.google.com ([209.85.215.196]:37510 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725790AbfHAHGn (ORCPT ); Thu, 1 Aug 2019 03:06:43 -0400 Received: by mail-pg1-f196.google.com with SMTP id d1so775428pgp.4; Thu, 01 Aug 2019 00:06:42 -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=sFn82hxl87C8fXjzpueTy3TJLhnUknUHXDSSwlywkZM=; b=KA02C6/qRIwz7yk/cKlSKNW3Uh+6uNkHC4I3NyeEDdsrwD6UNzo/7hpOrKkiMs6XJy liwhh/Nh1bWSAZ/7DK6JfdNt/BKoNm1up/PxL/FbPZLhcHM+/XggJl3nfBOyIdTTAUUO +zeChb37ERCZdxksbacxo8JtVEDROXM9npygMwVbKkCXIABR4Tsk+UljplGXBVF/ltqj Hm8N/dFoSBvVJMphXknCnKTuUKdAHX+6IgKpt4BR6YnD08YXbBje2sMzDuwns0p1CHiR ZLc8Aba3rn9TvVuoyFRi/Z5EMWOxj1k5lN4zSxIO6H7Q9Qb+x7Va/S+gsdg3g693EdgZ BWzw== 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=sFn82hxl87C8fXjzpueTy3TJLhnUknUHXDSSwlywkZM=; b=Gq2GdODuFnbcbx0bLnnBSOmi7AZDZdJGa3FZyfHDo1zcMQhvlIWQa6ul/2FJ8fIY9m v31KioxxkAnu13js4GDmHaVv5kS0+IHBvvnbZWpoTXVJ4dk8rsOnbY2hOLybhS6MDyUK b+9Ko3qWIXBYuPKtt3/4wNdi9MDLZfxWQCt2hUOY3nE/lBqHraoMmB+sxrc/kdYikaAj CHgTYqv9wLmkWPgGCnlef49XAjUdu9uGzGFLOg9+5bLq5Up6YodzlRGCBjooQTQ5a7wI Khi4zJ3WiGfVgiwH0RpWw8uqjVGms265+ttYy64FY50AbLWdLaiFnuiZDSkNkUSrrv6u H5FA== X-Gm-Message-State: APjAAAUfO3bqmxNjJRM0hofxLzwMcz3rKvLi6e5asrJXZEiaFNT5nUSD mgUZNAb9N3GzG2JJVmUvo+XYnVXG4bQ= X-Received: by 2002:a63:3ec7:: with SMTP id l190mr120885775pga.334.1564643202178; Thu, 01 Aug 2019 00:06:42 -0700 (PDT) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id j6sm9688175pjd.19.2019.08.01.00.06.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 01 Aug 2019 00:06:41 -0700 (PDT) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , "Rafael J . Wysocki" , Marcelo Tosatti Subject: [PATCH] cpuidle-haltpoll: Enable kvm guest polling when dedicated physical CPUs are available Date: Thu, 1 Aug 2019 15:06:36 +0800 Message-Id: <1564643196-7797-1-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li The downside of guest side polling is that polling is performed even with other runnable tasks in the host. However, even if poll in kvm can aware whether or not other runnable tasks in the same pCPU, it can still incur extra overhead in over-subscribe scenario. Now we can just enable guest polling when dedicated pCPUs are available. Cc: Rafael J. Wysocki Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Marcelo Tosatti Signed-off-by: Wanpeng Li --- drivers/cpuidle/cpuidle-haltpoll.c | 3 ++- drivers/cpuidle/governors/haltpoll.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/cpuidle/cpuidle-haltpoll.c b/drivers/cpuidle/cpuidle-haltpoll.c index 9ac093d..7aee38a 100644 --- a/drivers/cpuidle/cpuidle-haltpoll.c +++ b/drivers/cpuidle/cpuidle-haltpoll.c @@ -53,7 +53,8 @@ static int __init haltpoll_init(void) cpuidle_poll_state_init(drv); - if (!kvm_para_available()) + if (!kvm_para_available() || + !kvm_para_has_hint(KVM_HINTS_REALTIME)) return 0; ret = cpuidle_register(&haltpoll_driver, NULL); diff --git a/drivers/cpuidle/governors/haltpoll.c b/drivers/cpuidle/governors/haltpoll.c index 797477b..685c7007 100644 --- a/drivers/cpuidle/governors/haltpoll.c +++ b/drivers/cpuidle/governors/haltpoll.c @@ -141,7 +141,7 @@ static struct cpuidle_governor haltpoll_governor = { static int __init init_haltpoll(void) { - if (kvm_para_available()) + if (kvm_para_available() && kvm_para_has_hint(KVM_HINTS_REALTIME)) return cpuidle_register_governor(&haltpoll_governor); return 0; -- 2.7.4