Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1204190pxb; Wed, 10 Feb 2021 02:45:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJystfSSCskgmiVpRLrwoP0L+VlFHrrpOTAK1yG9PO4RYJSYnqxz0S8RYK0gb5cV1GI1b0/2 X-Received: by 2002:a17:907:3e06:: with SMTP id hp6mr2339611ejc.254.1612953946594; Wed, 10 Feb 2021 02:45:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612953946; cv=none; d=google.com; s=arc-20160816; b=c8TO8bbo6JiIxveJ8oHNRoZZacy++sgILbudpBR0SKNhTqmjw9A9WyUxhkVsQrdCXT 4qgVwxkFyI2KZEwNts2W7d9p9glqb7I8K+IPK91R0Fj1K2f1j5L8Rcd4A5Anvur5hBEO WFGSAUMLCq3ZQdPfImj/foAqRIeEQAXEj7nTjV9zZ5mWTqlut1QF4sorzSB6CHZObUIz pFjq4p1ogkXhXpwlzGhihNyhG/YzSu2ErcXogiQkEcVL/H7gyZJgowpW+7AKt1x/bJKO VR9vBCAEHSwd2cN5Xq4zb10UZfBDnSs2/lGuPDWz9XOkBvlPOe2ApPK3iiAv0Iq9XRmt r8yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ujSeNrhwIUb4Pat8q055lQaymIiMVTMfJFrA21hrW/s=; b=wMC2Db7jC57ACVgTV0Wk2zyxvdrDCLZXR12benpjXMydiqRq5EwNfg/dLzdQRPay66 iTsImqg3vUvJqG+EoeR85ZKFGG+eho0qSaGsEUG4kbOqVmZBjyujqkXzpzIkQPswelev w0C4ypB88u4E3Obtml/HBHwYyYMmy3mcJm7WGVvBk6mEg2cCm/lDYNXYCvmkudsbtLb0 6qn11F/NdkaSYEF2gwtK0sWhpC+s+wJ9Ex6c7PM1RgUcR/+JqAEVKnZjyV2zlOcvrF6k cSG+x2+qn+lYNjO4osuFnbS00KcmcB1seztbxoQwcY7V8xYZT1RrMuDyxNW+Rjeu6sVL gYXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=kNF7byEd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gb23si963030ejc.382.2021.02.10.02.45.23; Wed, 10 Feb 2021 02:45:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=kNF7byEd; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230043AbhBJKmz (ORCPT + 99 others); Wed, 10 Feb 2021 05:42:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229944AbhBJKlK (ORCPT ); Wed, 10 Feb 2021 05:41:10 -0500 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8AF9FC06174A for ; Wed, 10 Feb 2021 02:40:29 -0800 (PST) Received: by mail-pg1-x52f.google.com with SMTP id o63so960293pgo.6 for ; Wed, 10 Feb 2021 02:40:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ujSeNrhwIUb4Pat8q055lQaymIiMVTMfJFrA21hrW/s=; b=kNF7byEd3Ut0Yb1SbFuOki76zDSgw/dbIeI2k8kt4Nc4xtDY4vkp+IsZQkflTTYDfG pul0ZYJAZILWH5G4i0xrGzHGh+MFdD7ZJ/ujemiCOW6aDMqb1ZPhwZlJdrvyf1ExMywp sOBNKbbfrBmZkOQuzsJMOqFO6Phsi58Ow/tJg= 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=ujSeNrhwIUb4Pat8q055lQaymIiMVTMfJFrA21hrW/s=; b=EKw/B3kz6ceHscj3ttUxye265Xp/WSK33wcdiJfNYP3TIw1VJHX+Kq3+tJHNwX85bo QrxGjDZx0cN1o5ugCuAUgtb98/yC94FGM6EL1pKvfU2NEiDwhZc9AzosISVG16qxsuJg 50Uu16hjJKviO8mTQxNZKALz64ZLrv3UNE2i3yagIYwq50YbC137LVjNe9DW3GOeAJUy K/kPfDMQqCBTuTVovejd5AyZowsmwsUWysE6XVUzPYcfUXzKkp/kbTHH2tZMh+tUOogZ G4ixzAbzeUvoRmUAddmPuUEkbSayI1ElgB0hVoxz3giqCCgWuVnUwL4aFPEzhTSj95PD FTUw== X-Gm-Message-State: AOAM532waakNm1cOfg4FJ2PW1xAIi8ycdjUzgW/dqP0e/+23KPiFy0rc b13xd3sBhcVuyNBvhOYmPyAoiykcZXDGQg== X-Received: by 2002:a63:27c5:: with SMTP id n188mr2498524pgn.193.1612953628723; Wed, 10 Feb 2021 02:40:28 -0800 (PST) Received: from hikalium0.c.googlers.com.com (160.131.236.35.bc.googleusercontent.com. [35.236.131.160]) by smtp.gmail.com with ESMTPSA id j20sm1908729pfe.172.2021.02.10.02.40.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Feb 2021 02:40:27 -0800 (PST) From: Hikaru Nishida X-Google-Original-From: Hikaru Nishida To: linux-kernel@vger.kernel.org Cc: suleiman@google.com, Hikaru Nishida , Alexander Graf , Andra Paraschiv , Arnd Bergmann , Geert Uytterhoeven , Greg Kroah-Hartman , Ingo Molnar , John Stultz , Kurt Kanzenbach , Linus Walleij , Masahiro Yamada , Stephen Boyd , Thomas Gleixner Subject: [RFC PATCH 0/2] Introduce a way to adjust CLOCK_BOOTTIME from userspace for VM guests Date: Wed, 10 Feb 2021 19:39:06 +0900 Message-Id: <20210210103908.1720658-1-hikalium@google.com> X-Mailer: git-send-email 2.30.0.478.g8a0d178c01-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hikaru Nishida Hi folks, We'd like to add a sysfs interface that enable us to advance CLOCK_BOOTTIME from userspace. The use case of this change is that adjusting guest's CLOCK_BOOTTIME as host suspends to ensure that the guest can notice the device has been suspended. We have an application that rely on the difference between CLOCK_BOOTTIME and CLOCK_MONOTONIC to detect whether the device went suspend or not. However, the logic did not work well on VM environment since most VMs are pausing the VM guests instead of actually suspending them on the host's suspension. With following patches, we can adjust CLOCK_BOOTTIME without actually suspending guest and make the app working as intended. I think this feature is also useful for other VM solutions since there was no way to do this from userspace. As far as I checked, it is working as expected but is there any concern about this change? If so, please let me know. Thanks, Hikaru Nishida Hikaru Nishida (2): timekeeping: Add timekeeping_adjust_boottime drivers/virt: introduce CLOCK_BOOTTIME adjustment sysfs interface driver drivers/virt/Kconfig | 9 ++++++ drivers/virt/Makefile | 1 + drivers/virt/boottime_adj.c | 57 +++++++++++++++++++++++++++++++++++++ include/linux/timekeeping.h | 2 ++ kernel/time/timekeeping.c | 26 +++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 drivers/virt/boottime_adj.c -- 2.30.0.478.g8a0d178c01-goog