From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14D53C54FB3 for ; Mon, 26 May 2025 07:32:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8BB416B007B; Mon, 26 May 2025 03:32:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 86C106B0082; Mon, 26 May 2025 03:32:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 75A7C6B0083; Mon, 26 May 2025 03:32:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 53BBA6B007B for ; Mon, 26 May 2025 03:32:04 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C9AB51A02F4 for ; Mon, 26 May 2025 07:32:03 +0000 (UTC) X-FDA: 83484240126.13.2BADC80 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf25.hostedemail.com (Postfix) with ESMTP id 2F8F1A0009 for ; Mon, 26 May 2025 07:32:02 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mbBA7aNh; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of rppt@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748244722; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mF3ysKcboGQLuWjQS8KoyvpLcJs5Uy4lko1ZZNi8uWU=; b=gp4XQH2eadapfvUixlpXAQQKf4thTMgRkqv+g+WmqScwc90BRnEqCAPxapETRX62dSiMFr 2QrSJ4mnae/cNP55pJTCWk0yFM8qzddPVK5YKZpO7VbhZbEbnIevYu4dGwx1FDXuzYg2BW Um2E60QBoDqWGRZjf2lJdE0txOIZHgU= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mbBA7aNh; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf25.hostedemail.com: domain of rppt@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748244722; a=rsa-sha256; cv=none; b=7Ww3YOXPw103xgDhGcBmPearVTe4cbv1xr5p+uERRJjy8hOFfHOci8LXrQ39FZzTqGe0r/ KitTeyZHv+guPibEQoKi3t4CpeuPxcmWNI9eQbmnsNQolMzH+C1QAgmflLE4rYkmK17Hk2 hY7ch94XAh8GSPdS7u/gRqB9xXKWDck= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id D661E61120; Mon, 26 May 2025 07:32:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 015A0C4CEE7; Mon, 26 May 2025 07:31:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748244720; bh=MO/4ARkNvR6Truprt23/4h1IxkmjVoXyFgAZc0Ho/vs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mbBA7aNhItRnqtALzSE1jHexDePTqhVw9YIoRtxHOHP2G3Ndf/GFaCJlXAKtN3UwP bTmSKc5OFoznrdWeOzN4xjDffDLgFYf7lOd4wKJjCFZ8NdrU8T48EpgAfvy4dvggXj K0GIR8wdnfmeSOUT2YRSm7ig2y/gK7ISleBryf98oCKf6jZY9TrEdJrHVckKtI4Wta gEmFZ+Xb+pL/RZ3tE5Rt/YIBVQUBegvXpTRO0ZCpuGvKO2vowtMZIJqdv5cvXyEdNt tJ4+Chd8sis6e1ISEl5zGgqLYtWbmAbYCpId+gG5/pxrHrmvDcPFNQB87qCEuNyiZx YEs1vl8p1IHlA== Date: Mon, 26 May 2025 10:31:39 +0300 From: Mike Rapoport To: Pasha Tatashin Cc: pratyush@kernel.org, jasonmiu@google.com, graf@amazon.com, changyuanl@google.com, dmatlack@google.com, rientjes@google.com, corbet@lwn.net, rdunlap@infradead.org, ilpo.jarvinen@linux.intel.com, kanie@linux.alibaba.com, ojeda@kernel.org, aliceryhl@google.com, masahiroy@kernel.org, akpm@linux-foundation.org, tj@kernel.org, yoann.congal@smile.fr, mmaurer@google.com, roman.gushchin@linux.dev, chenridong@huawei.com, axboe@kernel.dk, mark.rutland@arm.com, jannh@google.com, vincent.guittot@linaro.org, hannes@cmpxchg.org, dan.j.williams@intel.com, david@redhat.com, joel.granados@kernel.org, rostedt@goodmis.org, anna.schumaker@oracle.com, song@kernel.org, zhangguopeng@kylinos.cn, linux@weissschuh.net, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, gregkh@linuxfoundation.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, rafael@kernel.org, dakr@kernel.org, bartosz.golaszewski@linaro.org, cw00.choi@samsung.com, myungjoo.ham@samsung.com, yesanishhere@gmail.com, Jonathan.Cameron@huawei.com, quic_zijuhu@quicinc.com, aleksander.lobakin@intel.com, ira.weiny@intel.com, andriy.shevchenko@linux.intel.com, leon@kernel.org, lukas@wunner.de, bhelgaas@google.com, wagi@kernel.org, djeffery@redhat.com, stuart.w.hayes@gmail.com, ptyadav@amazon.de Subject: Re: [RFC v2 06/16] luo: luo_subsystems: add subsystem registration Message-ID: References: <20250515182322.117840-1-pasha.tatashin@soleen.com> <20250515182322.117840-7-pasha.tatashin@soleen.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250515182322.117840-7-pasha.tatashin@soleen.com> X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 2F8F1A0009 X-Stat-Signature: 16trnrc69rds4x9fxgfpxnoo3xsz1b3k X-Rspam-User: X-HE-Tag: 1748244722-118918 X-HE-Meta: U2FsdGVkX1/yFkaqxC/3VRb68KOGqXyiN2a6p9O9xQcXU8ZSte8xouzKqgoDPmcGtmnRza5iAwjTMd+tuLL980AVK36BoTHABZQivPLLCs3hfLSGKvvA3EFQ8kvOUafNtg8+Umu56g5h7+ZwMQBz9CtLLf/QJNGnh+nP/7Ob++NyZOKVWmfguKnn5qXCWJR5PkSdNel/VeBKEufRXdeyBJ4aXrvbXtLxgBwXdwNwurb/mZZdiYoXoZtqxV0LIkefOPaTDOXHXxgdCrgvsKncH8MQaH4UIPcDg2A3bw7oBLgpo+0rFa8tnyD8jhfYZCnhrfrCu4HKmJSkx+JvjjX+r+AZb07nGbZiCzTafqMH9RisSKhenfRFJFMDw6aLBo1P9jCDBJDDQNrlFW8cGhjvK4k6/rB3Z0QtOUL7EnVEoYa1ReocJ9IUOGRvAj6R4dK17fycxc50IQ1QOs9W40jWMUw427qpOpfJ8kBqgciHZHfye/Vg4BIBIOQm6T4Lq30p8AeQ9IMPpixvie3Xe3uSIqYu1e5oVmZj7f35jLvx4baOcSyxX9fHoYEYV9WsonACkMh9Ck8egYMnCOuyZpRcQa/wJ/BdAzr/7zPkgaSm8Y9Zn9IvJp8MuH36zU7eMqXBhZEE71XBLcAs6s4zlvHRnogpcuu1V57h3L4iTTtc1ItuTicC2Xg9BVm7vErt3AjlX17qrTEBA614WYqYVi4Qgz+yMDrsx9UrFJxZjlRaFbHpr1MRtP+lFXHm5YcUJGOy94Z+L+LuXLWCTQ+DUfAauUtVj790LPe+Mi1LBS7EbSLQp/xzSfrfWEayeAidmooghKu2ZQRFP81q/FEcTqIZWhw0Y+ihtGpqfsyHDBDyQrSbex9vxHHqk33jrqKDcWg+5bj2qNgpmN1vJp+090IrRPfUDff83tz+QbYht7fRCLBz3bj1HmjfIaCq6gLRsLLAfZlFdRZmNLu7Bi72H/r yPLU+lFA 5GS5F3fpqLHIUFejnXEVDegQG/tWEbQvN4j9qOu4REh/Ghd5gfnp7nKTYr1GsQ8JaNrsZkdBE113gHLi/Qa848rbNRBjg7mOnSLeQju5kYRNIeleoD0KmWF1zDMcxppvDYjxJeUqr3WPTA1Zs8NaDX7k2GfI6FjBGhtE1ottFVJJc9FWwFGFy+guakPYAaf4GYjjLAqJfrOPlEFHJLhRZ/aG3aekGGGxPI9j+itgbAtmyj6TdRq7SStz2zZdME1TAppFZpABbrAtxwmdLMa9qFrTmC1iGCb1rtU2qIdWHmYO5uACTKlcKzuNjYLpKFZHy9kLDNDDscCy0H5f8QgKu53nE0KqA+MvNI5LoJEY6/jeFTV6lLYi2DmAsbQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, May 15, 2025 at 06:23:10PM +0000, Pasha Tatashin wrote: > Introduce the framework for kernel subsystems (e.g., KVM, IOMMU, device > drivers) to register with LUO and participate in the live update process > via callbacks. ... > diff --git a/include/linux/liveupdate.h b/include/linux/liveupdate.h > index c2740da70958..7a130680b5f2 100644 > --- a/include/linux/liveupdate.h > +++ b/include/linux/liveupdate.h > @@ -86,6 +86,39 @@ enum liveupdate_state { > LIVEUPDATE_STATE_UPDATED = 3, > }; > > +/** > + * struct liveupdate_subsystem - Represents a subsystem participating in LUO > + * @prepare: Optional. Called during LUO prepare phase. Should perform > + * preparatory actions and can store a u64 handle/state > + * via the 'data' pointer for use in later callbacks. > + * Return 0 on success, negative error code on failure. > + * @freeze: Optional. Called during LUO freeze event (before actual jump > + * to new kernel). Should perform final state saving actions and > + * can update the u64 handle/state via the 'data' pointer. Retur: > + * 0 on success, negative error code on failure. > + * @cancel: Optional. Called if the live update process is canceled after > + * prepare (or freeze) was called. Receives the u64 data > + * set by prepare/freeze. Used for cleanup. > + * @finish: Optional. Called after the live update is finished in the new > + * kernel. > + * Receives the u64 data set by prepare/freeze. Used for cleanup. > + * @name: Mandatory. Unique name identifying the subsystem. > + * @arg: Add this argument to callback functions. > + * @list: List head used internally by LUO. Should not be modified by > + * caller after registration. > + * @private_data: For LUO internal use, cached value of data field. > + */ > +struct liveupdate_subsystem { > + int (*prepare)(void *arg, u64 *data); > + int (*freeze)(void *arg, u64 *data); > + void (*cancel)(void *arg, u64 data); > + void (*finish)(void *arg, u64 data); What is the intended use of arg in all these? > + const char *name; > + void *arg; > + struct list_head list; > + u64 private_data; > +}; I suggest to split callbacks into, say, liveupdate_ops so we could constify them. And then it seems that the data in liveupdate_subsystem can be private to LUO. > + > #ifdef CONFIG_LIVEUPDATE > > /* Return true if live update orchestrator is enabled */ > @@ -105,6 +138,10 @@ bool liveupdate_state_updated(void); > */ > bool liveupdate_state_normal(void); > > +int liveupdate_register_subsystem(struct liveupdate_subsystem *h); int liveupdate_register_subsystem(name, ops, data) ? > +int liveupdate_unregister_subsystem(struct liveupdate_subsystem *h); > +int liveupdate_get_subsystem_data(struct liveupdate_subsystem *h, u64 *data); > + > #else /* CONFIG_LIVEUPDATE */ -- Sincerely yours, Mike.