From minios-devel-bounces@lists.xenproject.org Thu Mar 20 07:49:33 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 20 Mar 2025 07:49:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.921378.1325234 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAeh-0005GJ-Bw; Thu, 20 Mar 2025 07:49:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 921378.1325234; Thu, 20 Mar 2025 07:49:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAeh-0005GC-9O; Thu, 20 Mar 2025 07:49:31 +0000
Received: by outflank-mailman (input) for mailman id 921378;
 Thu, 20 Mar 2025 07:49:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=496r=WH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvAef-00052I-SO
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 07:49:29 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d8f137f5-055f-11f0-9ffa-bf95429c2676;
 Thu, 20 Mar 2025 08:49:27 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 645B921EDD;
 Thu, 20 Mar 2025 07:49:26 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2523013757;
 Thu, 20 Mar 2025 07:49:26 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id YnWOB4bI22d2VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 20 Mar 2025 07:49:26 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8f137f5-055f-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=F+g+wm9A9fsxM6hgQJRPcZj5vTjjhE0Om5U0CGzeX/o=;
	b=SyjDu+3pgR8t7x8C68rf0Sv7+YSl9BHCcQR1xTTWzn/iJXmvLAaEKz6Nzr5DKiTZvvRAE7
	nawv/X2+gIf314LGcGMBVzbf4jSOyvjvqyO23Z9HAbhiW3eLZ/kbj9W0wVS8KRJBR4KGhE
	j0HXwrPvqYS9ubMOl6c6iOuKM9FDzQ4=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=SyjDu+3p
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456966; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=F+g+wm9A9fsxM6hgQJRPcZj5vTjjhE0Om5U0CGzeX/o=;
	b=SyjDu+3pgR8t7x8C68rf0Sv7+YSl9BHCcQR1xTTWzn/iJXmvLAaEKz6Nzr5DKiTZvvRAE7
	nawv/X2+gIf314LGcGMBVzbf4jSOyvjvqyO23Z9HAbhiW3eLZ/kbj9W0wVS8KRJBR4KGhE
	j0HXwrPvqYS9ubMOl6c6iOuKM9FDzQ4=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 0/2] 9pfs: add some file operation hooks
Date: Thu, 20 Mar 2025 08:49:22 +0100
Message-ID: <20250320074924.8080-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 645B921EDD
X-Spam-Level: 
X-Spamd-Result: default: False [-2.97 / 50.00];
	BAYES_HAM(-2.96)[99.81%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:mid];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -2.97
X-Spam-Flag: NO

For being able to store the Xenstore state in preparation of a live
update operation, 9pfront is needing support for fstat and lseek.

Juergen Gross (2):
  Mini-OS: 9pfs: add fstat file operation hook
  Mini-OS: 9pfs: add lseek file operation hook

 9pfront.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Thu Mar 20 07:49:35 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 20 Mar 2025 07:49:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.921380.1325242 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAel-0005MH-LQ; Thu, 20 Mar 2025 07:49:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 921380.1325242; Thu, 20 Mar 2025 07:49:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAel-0005Lo-Hk; Thu, 20 Mar 2025 07:49:35 +0000
Received: by outflank-mailman (input) for mailman id 921380;
 Thu, 20 Mar 2025 07:49:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=496r=WH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvAek-00052A-2f
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 07:49:34 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dc1a64e0-055f-11f0-9ea0-5ba50f476ded;
 Thu, 20 Mar 2025 08:49:33 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id E666D1F7A4;
 Thu, 20 Mar 2025 07:49:31 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BC97613757;
 Thu, 20 Mar 2025 07:49:31 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id +vWkLIvI22d/VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 20 Mar 2025 07:49:31 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc1a64e0-055f-11f0-9ea0-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456972; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ahePrHvNMDs6aD+rN+hONCSWm/iDVIpc4u83RYfjI/k=;
	b=MQ06itfdQQyg9+b+6Qpp1+FMjL8f8uBPBj5G+Ly40TdqLLMSV4MXbNeLxKutPyABVlATRT
	KBetoxsWE7fzNgad77X70fy2mLFpNbFErodfXTETUWDoq2pJNpe7RaoK2f46v3LRNaXiDY
	MMcs5H1BawswjgO28DtmEdnQCNtUS4o=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=qIJOu2Lw
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456971; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ahePrHvNMDs6aD+rN+hONCSWm/iDVIpc4u83RYfjI/k=;
	b=qIJOu2LwNeUJyADKREUs4uDzRXLn6AZdH5UnmUBRvqUjq/nY/2c2g8Q3FfZpcjGypmm0Km
	vPXURdsoJUGRbSlNfHx8VBYFfJkRRVpbqsa4IuBrKbHLxi9aE20h8jzDJmncEZFN4dgafG
	dOAVbjhO6qBl2dqo5OaTfjd8tsLWtKM=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 1/2] 9pfs: add fstat file operation hook
Date: Thu, 20 Mar 2025 08:49:23 +0100
Message-ID: <20250320074924.8080-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250320074924.8080-1-jgross@suse.com>
References: <20250320074924.8080-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: E666D1F7A4
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:mid,suse.com:email];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Add a file operations fstat hook to the 9pfs frontend.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 9pfront.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/9pfront.c b/9pfront.c
index 1741d600..a65fe26d 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -85,6 +85,8 @@ struct file_9pfs {
 
 #define P9_QID_SIZE    13
 
+#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
+
 struct p9_header {
     uint32_t size;
     uint8_t cmd;
@@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
     return ret;
 }
 
+static int fstat_9pfs(struct file *file, struct stat *buf)
+{
+    struct file_9pfs *f9pfs = file->filedata;
+    struct p9_stat stat;
+    int ret;
+
+    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
+    if ( ret )
+    {
+        errno = EIO;
+        return -1;
+    }
+
+    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
+    buf->st_mode = stat.mode & 0777;
+    buf->st_atime = stat.atime;
+    buf->st_mtime = stat.mtime;
+    buf->st_size = stat.length;
+    buf->st_uid = stat.n_uid;
+    buf->st_gid = stat.n_gid;
+
+    free_stat(&stat);
+
+    return 0;
+}
+
 static int close_9pfs(struct file *file)
 {
     struct file_9pfs *f9pfs = file->filedata;
@@ -1296,6 +1324,7 @@ static const struct file_ops ops_9pfs = {
     .read = read_9pfs,
     .write = write_9pfs,
     .close = close_9pfs,
+    .fstat = fstat_9pfs,
 };
 
 __attribute__((constructor))
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Thu Mar 20 07:49:41 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 20 Mar 2025 07:49:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.921384.1325264 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAer-0005tO-1q; Thu, 20 Mar 2025 07:49:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 921384.1325264; Thu, 20 Mar 2025 07:49:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvAeq-0005tD-UX; Thu, 20 Mar 2025 07:49:40 +0000
Received: by outflank-mailman (input) for mailman id 921384;
 Thu, 20 Mar 2025 07:49:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=496r=WH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvAeq-00052I-35
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 07:49:40 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id df805fcd-055f-11f0-9ffa-bf95429c2676;
 Thu, 20 Mar 2025 08:49:37 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 88DF31F7A4;
 Thu, 20 Mar 2025 07:49:37 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 549DB13757;
 Thu, 20 Mar 2025 07:49:37 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id jNY4E5HI22eOVQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 20 Mar 2025 07:49:37 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df805fcd-055f-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456977; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=En0eJdxz153L2/LgbO/YpLEdAgM+TGIE5oN+YrmacIw=;
	b=IyH8rYFIOVY7FbMpYsQVzF5LciOap1/gAEH4vB+0E92UVSbsOX9k1rP1jLaMpJq4OV+jwT
	pnK/dn8Mt+sLc/817FyI7Dy0o9DZtXNN7MCio7wfTJzcBB8jxrGG0ws3zHEcbli2YTL97C
	A2HUr728ghUg2PfYr4zXgZ0auHekGhk=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742456977; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=En0eJdxz153L2/LgbO/YpLEdAgM+TGIE5oN+YrmacIw=;
	b=IyH8rYFIOVY7FbMpYsQVzF5LciOap1/gAEH4vB+0E92UVSbsOX9k1rP1jLaMpJq4OV+jwT
	pnK/dn8Mt+sLc/817FyI7Dy0o9DZtXNN7MCio7wfTJzcBB8jxrGG0ws3zHEcbli2YTL97C
	A2HUr728ghUg2PfYr4zXgZ0auHekGhk=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 2/2] 9pfs: add lseek file operation hook
Date: Thu, 20 Mar 2025 08:49:24 +0100
Message-ID: <20250320074924.8080-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250320074924.8080-1-jgross@suse.com>
References: <20250320074924.8080-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-0.999];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a file operations lseek hook to the 9pfs frontend. Just use the
lseek_default() implementation.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 9pfront.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/9pfront.c b/9pfront.c
index a65fe26d..837e404b 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -1325,6 +1325,7 @@ static const struct file_ops ops_9pfs = {
     .write = write_9pfs,
     .close = close_9pfs,
     .fstat = fstat_9pfs,
+    .lseek = lseek_default,
 };
 
 __attribute__((constructor))
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Thu Mar 20 14:35:16 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 20 Mar 2025 14:35:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.922252.1326151 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvGzK-0005RG-FP; Thu, 20 Mar 2025 14:35:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 922252.1326151; Thu, 20 Mar 2025 14:35:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvGzK-0005R9-CH; Thu, 20 Mar 2025 14:35:14 +0000
Received: by outflank-mailman (input) for mailman id 922252;
 Thu, 20 Mar 2025 14:35:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=496r=WH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvGzI-0005Cq-Ns
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 14:35:12 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 870157a0-0598-11f0-9ffa-bf95429c2676;
 Thu, 20 Mar 2025 15:35:10 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-ac2af2f15d1so118385566b.1
 for <minios-devel@lists.xenproject.org>; Thu, 20 Mar 2025 07:35:10 -0700 (PDT)
Received: from ?IPV6:2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b?
 (p200300e5873d1a008e99ce06aa4a2e7b.dip0.t-ipconnect.de.
 [2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5eb57bc6f1dsm3703505a12.50.2025.03.20.07.35.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 20 Mar 2025 07:35:09 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 870157a0-0598-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742481310; x=1743086110; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:cc:to
         :subject:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=qiDGJOjRspOG1dsG/Ez+kBfM8VbVgfzROzDT+mwZ0w4=;
        b=JHt0yF8Uw0yp5nw0S0FH5Zr/stqbKN2kVfse8pjJ0XUFDgz178qxXJ7qpjMli8PNIj
         tun7rPYuqXjvA/4BO20Xe0SNiFZ1rTO3BfZAmQj5bfIprH3znHBgroeeo2QfDM5ZABHr
         Z+5AcdP1WAr22LImNs+DIHQCTppFW9ACUeHCJB2PtXx1TWxGe+IIoHJMywDqgEyZbX5D
         Gf8I1Ezqh9d8xDsg4dfR4MLu5FHJIf9QN8xSiDl98ZpIfJrMAKeKH8kRDh+e9d2urCYl
         l3aQLfQNZ8ik4y6h6CJ+dLCLUQMOGbvxuF0Y3xp1gQY5xVT3IL2w0qJWCwqDCAPGGlHx
         un7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742481310; x=1743086110;
        h=in-reply-to:autocrypt:from:content-language:references:cc:to
         :subject:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=qiDGJOjRspOG1dsG/Ez+kBfM8VbVgfzROzDT+mwZ0w4=;
        b=Ee8jUZGkbtjfzUBzj3Tu/gZzUXpq2keMiRUBCqqDzydyZyGngwHH8gQY7liWFgvdpq
         2mEAgLYzx6aXxymNC0ZqkjxD89GF0ELNrEEEKnpDuTnqClfjwKAuiCD9rrUA4Nqvoy2G
         OUyTt1uaUHo8EjtSl02zeF6zHdVDPw/LPBkNTS6rcM2HNYAmLh1qnHVye9bVRCzJ3S0w
         GUvuaaX47xNxgNpVmAlTw5Wj8dCodL7/32TsxycpNbBKoZeMhf53dXfeSBVZeV8MJvZD
         Jz6NFJjBiBHTtT2MUxJx3D14vmwBscAoogEvYvaacSP7uWClHCFR7p1hpPyp8FWn3AkK
         97zg==
X-Forwarded-Encrypted: i=1; AJvYcCWN5vCJimbNDcCMK7uiigr6K+VtwlecRuNYHpsHkvkNXXwSYgsm7s53GVU4ygxElavy2y94FPYixeTgsvs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwnNUIbDp+c6X9NiLAXO/BQMhmcXttyXs66qcR/H/HNNmsRKzK6
	SJwCB/W2wWmTDvn83krkL4aGxFUTKPzMi0VdoJCtUkK2Pt27NjeAQoK5AssxYA4=
X-Gm-Gg: ASbGnct2u6E2zWZ+GsN/blROMnObAwJR3lh566Ye/sRT5BJT4ZsuSAwa/30rNS/njPh
	veT3W2aZgPJW+HGULilgiR+djLTpbmtQzQVcWnbSsl0ZBIV6KuI7jabvd2CZdY4z17mDk54eRKI
	3lGnhwuneIbCaYqZmnkg6/gUL9uxagjO3kxmMCCsPbOaqgTVeIqQRI22jRTGQ+25wu8Ltx+orzo
	MVVxI8TNad9f2NQH+3Nem/hrSvGEN6cB2d5vq7QzY61QR/CCUOBY++WAgxVkFHeILHIiHOwP9lt
	LRegs2L9DxcCN9MjL/q3VFLWrsHg4sWjhtlQLBNCDZ4l1U28+jkDNUWT6KWwfesEuVVd0wrmA1+
	z2U13VNHZkr9kblV1fk1oH1aWEDTxDAiiZgGGVx0+iYL04Vv6VlFEcp7IZk6q8lNGlrcF9w==
X-Google-Smtp-Source: AGHT+IG1mxbC1SeMzPWOf318cq6YNfrp0TIf+qslkBF46wDnG7JPUnRKBPXOelvRo7lXYpVr+S0TLg==
X-Received: by 2002:a17:907:c810:b0:ac3:3e40:e183 with SMTP id a640c23a62f3a-ac3b7a9677dmr804082966b.3.1742481309993;
        Thu, 20 Mar 2025 07:35:09 -0700 (PDT)
Message-ID: <ed35e0d0-898f-4e74-9a7c-24871d0d606c@suse.com>
Date: Thu, 20 Mar 2025 15:35:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 1/2] 9pfs: add fstat file operation hook
To: Jason Andryuk <jason.andryuk@amd.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org
References: <20250320074924.8080-1-jgross@suse.com>
 <20250320074924.8080-2-jgross@suse.com>
 <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------YhfWdGX0olAEptpoR3tggdZo"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------YhfWdGX0olAEptpoR3tggdZo
Content-Type: multipart/mixed; boundary="------------pmnZMVhCwA0VcU3KyloI08Jl";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jason Andryuk <jason.andryuk@amd.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org
Message-ID: <ed35e0d0-898f-4e74-9a7c-24871d0d606c@suse.com>
Subject: Re: [MINI-OS PATCH 1/2] 9pfs: add fstat file operation hook
References: <20250320074924.8080-1-jgross@suse.com>
 <20250320074924.8080-2-jgross@suse.com>
 <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>
In-Reply-To: <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>

--------------pmnZMVhCwA0VcU3KyloI08Jl
Content-Type: multipart/mixed; boundary="------------ZwvVlxsP7cqFF3CpivCKIU0m"

--------------ZwvVlxsP7cqFF3CpivCKIU0m
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMjAuMDMuMjUgMTU6MjgsIEphc29uIEFuZHJ5dWsgd3JvdGU6DQo+IE9uIDIwMjUtMDMt
MjAgMDM6NDksIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgYSBmaWxlIG9wZXJhdGlv
bnMgZnN0YXQgaG9vayB0byB0aGUgOXBmcyBmcm9udGVuZC4NCj4+DQo+PiBTaWduZWQtb2Zm
LWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQo+PiAtLS0NCj4gDQo+PiBA
QCAtOTUwLDYgKzk1MiwzMiBAQCBzdGF0aWMgaW50IHdyaXRlXzlwZnMoc3RydWN0IGZpbGUg
KmZpbGUsIGNvbnN0IHZvaWQgKmJ1ZiwgDQo+PiBzaXplX3QgbmJ5dGVzKQ0KPj4gwqDCoMKg
wqDCoCByZXR1cm4gcmV0Ow0KPj4gwqAgfQ0KPj4gK3N0YXRpYyBpbnQgZnN0YXRfOXBmcyhz
dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHN0YXQgKmJ1ZikNCj4+ICt7DQo+PiArwqDCoMKg
IHN0cnVjdCBmaWxlXzlwZnMgKmY5cGZzID0gZmlsZS0+ZmlsZWRhdGE7DQo+PiArwqDCoMKg
IHN0cnVjdCBwOV9zdGF0IHN0YXQ7DQo+PiArwqDCoMKgIGludCByZXQ7DQo+PiArDQo+PiAr
wqDCoMKgIHJldCA9IHA5X3N0YXQoZjlwZnMtPmRldiwgZjlwZnMtPmZpZCwgJnN0YXQpOw0K
Pj4gK8KgwqDCoCBpZiAoIHJldCApDQo+PiArwqDCoMKgIHsNCj4+ICvCoMKgwqDCoMKgwqDC
oCBlcnJubyA9IEVJTzsNCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLTE7DQo+PiArwqDC
oMKgIH0NCj4+ICsNCj4+ICvCoMKgwqAgYnVmLT5zdF9tb2RlID0gKHN0YXQucWlkWzBdID09
IFFJRF9UWVBFX0RJUikgPyBTX0lGRElSIDogU19JRlJFRzsNCj4+ICvCoMKgwqAgYnVmLT5z
dF9tb2RlID0gc3RhdC5tb2RlICYgMDc3NzsNCj4gDQo+IEkgdGhpbmsgeW91IHdhbnQgYHw9
IHN0YXQubW9kZSAmIDB4Nzc3YCBoZXJlLg0KDQpJbmRlZWQuIFRoYW5rcyBmb3IgY2F0Y2hp
bmcgdGhpcyBvbmUuDQoNCg0KSnVlcmdlbg0K
--------------ZwvVlxsP7cqFF3CpivCKIU0m
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------ZwvVlxsP7cqFF3CpivCKIU0m--

--------------pmnZMVhCwA0VcU3KyloI08Jl--

--------------YhfWdGX0olAEptpoR3tggdZo
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmfcJ50FAwAAAAAACgkQsN6d1ii/Ey8U
Kgf/ROrqjRvkOwUOfZz3iZT0LZquFHADC5RQTO0qM8jLVkR7ofbuipGo5SseukcfFeH/z8XfT555
/fDiA4FScCgXfmSJSnn4e9SICK3N9FZ3pVtYxHeC6sxpQDqpaC/cuI0s65YvzHVmBo3+tkwX6zX2
XAAsgYqfobXHZdkaXe5QqbLMd4HHlHJIGelPmEAytA1jNzaLgUVCqnDHOYQIxxg+FTWPJR8/rKtH
1QV8N8kCZhH+a3yjFQ10GniRGxEQgtgszlqooZDR0ICd+aJT0KxU54GiwYFapiTUiKVJGyPG7Dun
m0W2QbyLcIDA4luHLRGVLIrOtUBj5289T7U3l/WWdw==
=apt+
-----END PGP SIGNATURE-----

--------------YhfWdGX0olAEptpoR3tggdZo--


From minios-devel-bounces@lists.xenproject.org Fri Mar 21 08:12:30 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 08:12:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.922316.1326918 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUT-0008A9-6N; Fri, 21 Mar 2025 08:12:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 922316.1326918; Fri, 21 Mar 2025 08:12:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUS-00089k-Vx; Fri, 21 Mar 2025 08:12:28 +0000
Received: by outflank-mailman (input) for mailman id 922316;
 Thu, 20 Mar 2025 14:42:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cJiu=WH=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1tvH5s-0000wm-RE
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 14:42:00 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2009::61b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79c1d1e5-0599-11f0-9ea0-5ba50f476ded;
 Thu, 20 Mar 2025 15:41:59 +0100 (CET)
Received: from PH0PR07CA0044.namprd07.prod.outlook.com (2603:10b6:510:e::19)
 by LV3PR12MB9214.namprd12.prod.outlook.com (2603:10b6:408:1a4::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.34; Thu, 20 Mar
 2025 14:41:53 +0000
Received: from SN1PEPF000397AF.namprd05.prod.outlook.com
 (2603:10b6:510:e:cafe::bc) by PH0PR07CA0044.outlook.office365.com
 (2603:10b6:510:e::19) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.34 via Frontend Transport; Thu,
 20 Mar 2025 14:41:53 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF000397AF.mail.protection.outlook.com (10.167.248.53) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8534.20 via Frontend Transport; Thu, 20 Mar 2025 14:41:52 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Mar
 2025 09:41:51 -0500
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Mar
 2025 09:41:51 -0500
Received: from [172.24.79.67] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 20 Mar 2025 09:41:51 -0500
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79c1d1e5-0599-11f0-9ea0-5ba50f476ded
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SHB+2KsglvCLLOhwGeeUcByAS71qsmNgxAbNPRZMzZkaS3vD5rHzFw63PDQasfCRZkf1+sMrtdYvuRuF+CQi18+2cSzvCowrzYe0fNWNctG+ElCpLkDGtMxUBQwKXi1zffpziTfDt6dsyPJTGKYIXRimS8pY8z7BcGeqDyxkqsL3LLP+pSV1HrlauB6y78kKS4gPir4hVM7oo63tPVvZXz0+uhCip27ybn4UP5rKZiQAky4Gpeia7lrb7a31irKBvc6iHkYLeP8vBgAR49RHgRRKdOt8VTs8J9Pn4WNp4g2Jh/cx2tiB4WVKwgkXEJm//D+RmwWeTUxK68oGyvO6hw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=7lit5FYt34/fMOegMMpetsvbD/eP0pP1zDU5kMObxm0=;
 b=tQWKmjwvZhcgOKbCHI2P49rFPJ97s7Tky0LkorSrkPZhvG7J6ODpHoWIC3fhrK/fNCjgUwLO1S4eR0/SXeuWZgsz2itNOHwtFdcyRaGM4USntRYRttKialn2G6xjlexOOHtB4kAEIoWD//oSSa4U/F59YrVwSH9CVFp+Gi5Q/9Iwi9U742YKQQsoyFHmhQbjUxLvY84ftnGSPQGLz1UzAYnT1cEjTdyKVSjSqX06Y+i6BIqDoBvZnuJQosxsjBmHQNrTUON2eji2M7qq1RLFGcp1Wjdv6qjRXEQUxuRtQ10mNrnbD7z/9uAW/7+byqIW3djO2koyXg2aEtH1t/m9xg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass
 (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;
 dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7lit5FYt34/fMOegMMpetsvbD/eP0pP1zDU5kMObxm0=;
 b=x0ngjN7WR/IkgkteY0I0GqVLsnPgIoTqWUHT5XzD6XWRp0qPMSckl4P0F4iNTamOL4tncVpHGtXMmBHBT2dyHGj+0MTfzW1JQX+AiPLtrPZH3RxvCv9P7FuGQw+nNVpgvfxrnaiHUriQgDTLml/1O2jb/cPdBUU+FZBnGmGdrD4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <262a6cca-9abc-4ca2-8766-d7927f524a40@amd.com>
Date: Thu, 20 Mar 2025 10:41:51 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 1/2] 9pfs: add fstat file operation hook
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	<minios-devel@lists.xenproject.org>, <xen-devel@lists.xenproject.org>
CC: <samuel.thibault@ens-lyon.org>
References: <20250320074924.8080-1-jgross@suse.com>
 <20250320074924.8080-2-jgross@suse.com>
 <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>
 <ed35e0d0-898f-4e74-9a7c-24871d0d606c@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <ed35e0d0-898f-4e74-9a7c-24871d0d606c@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397AF:EE_|LV3PR12MB9214:EE_
X-MS-Office365-Filtering-Correlation-Id: 262c71ea-3081-4048-07a0-08dd67bd5ab5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026|7053199007;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?Uk1BdVF6UFZBUEFSODMvaDNFYzlFR1BpdDVDdWdZUjhuM2I4TkZKSGE5c0Z0?=
 =?utf-8?B?QU1BRG9CdWFZM0F4T1R2YW5kQXdodlY5aHFIbFRFM1paN1A4SmFDT0dDUDUw?=
 =?utf-8?B?K2pKUXlZT2gxbFhpZzg3WDJrRWNvS0RPbExsMmZwcUZsMEdJK0l1U0xrODJw?=
 =?utf-8?B?a1dUeDZKWnJXZng3OXJRQkdDTFppWkwreWdMWmErSjdIaE9GZlhtQ0pUdi9O?=
 =?utf-8?B?TDRRaDBReHZiMDlSSWx0bWdxU2JsSnY2VGJJdDJoUURHblZJWGhCc1A2ekJ4?=
 =?utf-8?B?c0NWZGkrdjVPaXVQVm1oYnpUekN0VHpJN3piVmNFaDRjLzhxeU9yZW1DNlFS?=
 =?utf-8?B?aS8zY0pjT2VWK1N5NGxlOEVuZFVOY2VWNVJGRlRsMWthOUZGZ3BnN2RHbU1q?=
 =?utf-8?B?QXF1Qk1CanJ4V0NhWHJNelNoVktuRGpKQWZCM0ZWaDdRWDZoRHRwUUZwcVh1?=
 =?utf-8?B?WDJYeDlzRnNaQWVLNUhhR3RMZGtaeG5SamJOVm4vUVBvOW5BeC9Jd1QyRkFK?=
 =?utf-8?B?aDM0WC9tZmtzNEViZlRVZEZKdTV2Qmg3ZlpRRE11VXJmZi9SeUU0MFRnb0ww?=
 =?utf-8?B?eVVTTjRoTjlXK2xDcC93ZFdBWmJSWlVidm52VzAxdWtQbmZIMmhXeTMvU3g4?=
 =?utf-8?B?aGhLcVdwTjFjSktrMzU5aTRGbGxYaC9qSiswSXg1NlNPYzVtTjNLV2JjSGkx?=
 =?utf-8?B?dGNFcmVtbnZPNmJNQUxmNEFUQThjQmNKMkN1ZnRxWGc4ZG40aHphV0laM0cy?=
 =?utf-8?B?Qlk3OWxXK01uRldYdVl0TWRiZ0I1b1hhQzFPcTg3anEwUXhoSGw1NFptY0M4?=
 =?utf-8?B?ZzlTNlZldlZRREVUZDBzWXQyamhMSVNEQVpkYUI4ZVcvSTd2ODNiRC9ZSUo4?=
 =?utf-8?B?V285RTZFQWRaR0EvaFVqYmNjSHoyblhleUN5ZUwzQ05sbXVVMEI2UDlESjlw?=
 =?utf-8?B?eERZczdPc010TUZ5YkU2cFRlY01tOHdzTEpkN0lXcWFsUndkVlZtSXEvV1hl?=
 =?utf-8?B?SGJmZC9jcU5lc3J4cngvOUR0OXZudXg4MmYvQVByWDA0d3h5MUpzQnV2Q3FX?=
 =?utf-8?B?VmE3QUxVazY4RU1pNzlBOVFVcDl0NWNPbjJvS1lmSUxIem1kTlZ0bzhrakhk?=
 =?utf-8?B?QzJoNEVrV3NSVDFNSHdkaFA0Q2VLbVN3YS9heUZ5Q1B6SWE5WnkvVVVSeHdt?=
 =?utf-8?B?Wm1zNjhUa0pxRDV1eER3U05MOE5aRXdXK3M5UlBmeWRVUHlUQ1FHZE4rdFpH?=
 =?utf-8?B?ajZrLzhGOXViS0F2cHRJaS93L3hhZHZ6REdEL25MbzAzcGIwU1ptaGRLdGhM?=
 =?utf-8?B?UEtmc0tWeENtc2VFTFZia2h1ZklsTE9UZys1MWR1Q0NwVExsYmxYT3FKRUFV?=
 =?utf-8?B?L1RKZVJBTGtURDNpSW9wU0wyclRlVUtvejV3NThGQ29CcGpsQTBpTlk0RjFr?=
 =?utf-8?B?ZFBSQVp0L1BFbk1MVjBkNlhwU01tQ2lRd1NUazhhVkxRUjBWZFVJNlR5RWdt?=
 =?utf-8?B?cWVYTmZES0xEYXU5KzZKbHIwdlF0TU9RU3lOYVcvMk5CUDd2bVJYeWNZQ3p1?=
 =?utf-8?B?NWRsMHM0ZXA5K1hBQUJjaG0rWW9VZGpZb3kraGREMnJRNFFJc2M2WmtuaExl?=
 =?utf-8?B?NnJ0S09zbElTZVpNQWtldDh2WVp1TVVaMkU2SGZjb2ZZalVscjdPQUpIbnVM?=
 =?utf-8?B?UjBZaVNiNWFaMEdDZ0tkcldHa0xJbHhXQk9rMUI5d003aC95UmxhL0hpYnZS?=
 =?utf-8?B?cm53M3doeXVUYU1pZUJaT2N0WG1wRjNvQjdyNXhzMzhNSlhqRU9XcFFMeEJ5?=
 =?utf-8?B?Y3BpTnBvbVR6aWVWd1NSQjZSRzFFcEgya1VjRVpBR0JxblZXL3Z2bXM3ZHNG?=
 =?utf-8?B?ZEpQTEVMNUJZSlFBazdvZjhWcUh1WVMyRnVoNy9KTWJneitFNW42UWx5a2dv?=
 =?utf-8?B?c21ZVnh0Y0gyK0NmajNUZmVuQ0RBWE1vK0VHaGtlWWFxdEdxdnlpQlh5NEt5?=
 =?utf-8?Q?fef9LgSpD97C4otp7lcVUfZxpOhjng=3D?=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(376014)(82310400026)(7053199007);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2025 14:41:52.3990
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 262c71ea-3081-4048-07a0-08dd67bd5ab5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF000397AF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9214

On 2025-03-20 10:35, Jürgen Groß wrote:
> On 20.03.25 15:28, Jason Andryuk wrote:
>> On 2025-03-20 03:49, Juergen Gross wrote:
>>> Add a file operations fstat hook to the 9pfs frontend.
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>> ---
>>
>>> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const 
>>> void *buf, size_t nbytes)
>>>       return ret;
>>>   }
>>> +static int fstat_9pfs(struct file *file, struct stat *buf)
>>> +{
>>> +    struct file_9pfs *f9pfs = file->filedata;
>>> +    struct p9_stat stat;
>>> +    int ret;
>>> +
>>> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
>>> +    if ( ret )
>>> +    {
>>> +        errno = EIO;
>>> +        return -1;
>>> +    }
>>> +
>>> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
>>> +    buf->st_mode = stat.mode & 0777;
>>
>> I think you want `|= stat.mode & 0x777` here.
> 
> Indeed. Thanks for catching this one.

With that,
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From minios-devel-bounces@lists.xenproject.org Fri Mar 21 08:12:30 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 08:12:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.922217.1326922 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUT-00089n-7U; Fri, 21 Mar 2025 08:12:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 922217.1326922; Fri, 21 Mar 2025 08:12:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUS-00089W-UX; Fri, 21 Mar 2025 08:12:28 +0000
Received: by outflank-mailman (input) for mailman id 922217;
 Thu, 20 Mar 2025 14:32:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cJiu=WH=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1tvGwi-0003df-6h
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 14:32:32 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20608.outbound.protection.outlook.com
 [2a01:111:f403:2415::608])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 254b0ad8-0598-11f0-9ffa-bf95429c2676;
 Thu, 20 Mar 2025 15:32:28 +0100 (CET)
Received: from BYAPR21CA0021.namprd21.prod.outlook.com (2603:10b6:a03:114::31)
 by CY8PR12MB7612.namprd12.prod.outlook.com (2603:10b6:930:9c::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Thu, 20 Mar
 2025 14:32:24 +0000
Received: from SJ1PEPF00001CE5.namprd03.prod.outlook.com
 (2603:10b6:a03:114:cafe::80) by BYAPR21CA0021.outlook.office365.com
 (2603:10b6:a03:114::31) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.8583.8 via Frontend Transport; Thu,
 20 Mar 2025 14:32:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8534.20 via Frontend Transport; Thu, 20 Mar 2025 14:32:24 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Mar
 2025 09:32:23 -0500
Received: from [172.24.79.67] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 20 Mar 2025 09:32:22 -0500
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 254b0ad8-0598-11f0-9ffa-bf95429c2676
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=M+vX3Cj4Zfi7OdkbPnvaejObmxon1oVmv5MbDiKaG9s5aXE2TK7X+WFsqPIEDZymmgay29nAX4uH+xvEC77qcxSxHXs3paHIgnMJa0DdfobTBUMfuuyNluBc9moojO5X1wQbYPYxsqRLwW7PnfgrTf5+ODiz1HxmuF276QYi+16EaC24ZT9I4MSN8TYzusOK7AT8MgfYkb9AgOWKgnyFzvF1IOiZ1UtBvC47U83X0fgGhnpMwPNjIF7lWfRxAWfVqLclnvz9nu9yykybo+60rDr4f7iqBpGxz28A5AGjtNLn+b4dGvoSYXkLLQcPJh56le+dLSbTLpERbdwGabXr+A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=oym/vjI4zTqLxIyTBUdgzlM8RFBRNdUGdIJPCa5fGac=;
 b=LmXd8uLo5jSWzL01nSBzwFUaak/VJDmzs1UL3DkQ+5asaWnd7PElfFOL9o6RrqpJhPhe+6pFyb75OCnH4X79Z+Vr1QBHDVvkYpXYdVqNZxRKH7mCxI6GJ9GinmWKHqifYSzQVn/f/vG++t97eVMdpaOfi5dSc8rEcVw/w+7YyyC0fK4xLxy7KzZwvQJ1+Yhr0pvu61SDc3r/euwyTSjunmcJfyG1pDAa1ax1tt2FJ5v6ISu41nEWuEqFlKopvGFpczLyvl1RszneVR7iMomD2UQJeQKdkT8gayWxJjgg48Be82FUBM1rtVNVjMp37kK+RsXJc9nIHHYjhEhWri66qg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass
 (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;
 dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oym/vjI4zTqLxIyTBUdgzlM8RFBRNdUGdIJPCa5fGac=;
 b=5j+FjBnpvdpiCi6TsiM7Md9BLQX4LAmKbiKIt3SaaJMzMNYyv1UnOIxvn6eh3eqrm+GeukDI2dDAcs6xGvsoxoFPFvFrKxMi3Qf9mwEyATbuLCb31WK0C17gibnCOzPPlfd/d/w7QmH4sFcmbxpE1feTsJuCSUEbM/6/fe+dchs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <2e1b2f16-4fa5-4e72-9cdf-50da8b8f9ab7@amd.com>
Date: Thu, 20 Mar 2025 10:32:17 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 2/2] 9pfs: add lseek file operation hook
To: Juergen Gross <jgross@suse.com>, <minios-devel@lists.xenproject.org>,
	<xen-devel@lists.xenproject.org>
CC: <samuel.thibault@ens-lyon.org>
References: <20250320074924.8080-1-jgross@suse.com>
 <20250320074924.8080-3-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20250320074924.8080-3-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE5:EE_|CY8PR12MB7612:EE_
X-MS-Office365-Filtering-Correlation-Id: 318e42b8-7fa4-446f-7d2d-08dd67bc0811
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014|7053199007;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MmpSRVFMVHNxN1pWZFovWmRmK2x6TkdnR3VIK2owSVByVDcvMDRuRk1wdTFY?=
 =?utf-8?B?RDI2V1RwRkd1MUpiQjF3RGdDenZYaEZiamZmNEVMQzFuemEwLzhnbWNNcEpz?=
 =?utf-8?B?bWRsTEE2S3hUSVgzSTZDTWpMbW1ZS2pDbmhOU2dpOXYxekZDWkY4Q1dYbW9n?=
 =?utf-8?B?dFRHMkhnUkJEbks0UXdLa1BsSmIxakxQV1MyTmJ6OGZpckJxQTVUNkNITUJS?=
 =?utf-8?B?TkFja2R0RS8vOVo4RUQ2bkRRaXdPTHZzdG1KODl2UWl0eVN1T3hLS0dtdHY2?=
 =?utf-8?B?ZXJhaGNvcXRINFBOdDduTWplMlZOSTV0TDFHMVk1dC9wZHhDQTlUdytnTUFD?=
 =?utf-8?B?ZjIrejRnT0REeDFOWVVwb2EvYXNuSjdKRGJ2ZHR2Mkg3aHRkRXkyR01HZ3Vr?=
 =?utf-8?B?cHB6NkJXK3RXdkJUdG84Q3IyeWNEK3FwR01rNWMxR05JZjRhN1N2dTQvenVH?=
 =?utf-8?B?bUZSUkRyUHFmSDlIVVpJNlJTTERzMVBIbFhYRUdWclpVczJiVW9qbUl0Ukky?=
 =?utf-8?B?UWRab3lSUTl1MnlmRHBkb0s4ZGRSRVlQZ08xRkxNUnhZdE1CQ1J5NjIrUVJC?=
 =?utf-8?B?K0oxZjZCK242RkhrTjJPaGwvVVQ3VW9aN3hKNFZLR1BvUndJWlJPR2FJUEUy?=
 =?utf-8?B?aTV3aDU1OVJmdDNYRFVob2ZJTkdtMWl6WG1HcitzZjJ6cUtiTis5em9ybGx6?=
 =?utf-8?B?UnhOQnBORlp4dGFjQWt6Ulg2bFB3a2dsQk9yU2dZM045cFhsbklpRTJEM3pt?=
 =?utf-8?B?eEgrNGlGZXpCbytpMUZOZnAwMC9vc1lOS2g3R2daM29rMlE1QkMrWW5hajRK?=
 =?utf-8?B?ZDhZalcxZHA2OEt6ZXFacXdlZ1paSHF6Y0JxQUdheWxFL2FOZThpZzc4WVlL?=
 =?utf-8?B?SEtEdXpkSldBdGhINmlLWVBGaXZSRERlWUFRTVlVaG52L0VtcDhNU0ZKbCtJ?=
 =?utf-8?B?a2o4TlM2VDVFdEt5OUVZaWxjQXZvZmRFT3V4WExmd2RpM1ZxQk9XQmJYNFlq?=
 =?utf-8?B?TlUxb2V2ZzVRcFExWFNpMU9HYmowU0RxUU05T0VZQ1JEdnk2N0ZyNWl6Sjcx?=
 =?utf-8?B?VzRaNFp2Yjl5T2k4OFFTa1E5QVN4NE5OV1lDSitMUEQwaDdFWjgraUsrY0Z1?=
 =?utf-8?B?TUk2b1pybUZ6SndpNlhnL2pXNkZFNlJodng0YVRRTzRTMUtJbDBBKzhRZkps?=
 =?utf-8?B?Y0JQMGFPZWtpVDJieHpBcmgzWVRHeUJyeVJ1MzZxdVZUNWZ3Ym9Rc1JRRE1O?=
 =?utf-8?B?V0xCanY1SXRHZFR3cS9qQzYwK1RKTDhSeUxCY3NmZjB4blBMb0tLN28wVU93?=
 =?utf-8?B?N0hkVmhuYkthcWVkclJMTUZjTHlGeUlCREZMRFY4WTAvblNrYWVGTXpqRnRr?=
 =?utf-8?B?OTR5bjVWWDI5ZDVGd3NDZno3YlRUM3cwZUhEeTZQc0IwYUV6c1lITmRzUHBq?=
 =?utf-8?B?T2haL1hrcCs1QlJyeDdDenZ2UFZHWVpZWDFzZ0l4V0xaT1N2amZDTk83eHUw?=
 =?utf-8?B?UTNDQjAzaWgwSzZOaXZ0WVVtTU41MXNRbll5cDFFMUF6WlNrVXpoM05ZYVRh?=
 =?utf-8?B?eEJxRXdkaTdoT3JYaG1IVm14WEFxbEYySUJPNzZxOFplM1prM3VXWEZLMlJ6?=
 =?utf-8?B?cU1xck8xUldCZmJQaVJIVUJYbUExbTdJUXJaaWlVYkwrWG14MUJrMVFnSmRl?=
 =?utf-8?B?UkFxSVp1YTNmUm0yakRTY0haSSs5TW5iNlBpNXNCWjVYSm4vc05sSXRZeU1L?=
 =?utf-8?B?MEkrS3VLY1ZrdDhaMFZvRktDWnpEaHJTdEtTRE9NallmTjl0ZWNNVXl0elZI?=
 =?utf-8?B?aW5aUnF4YnBGV3RuZmxzVktBOHNaeGthNXhVRm1jZDZDU3JhaUpCcXEvbGpF?=
 =?utf-8?B?L1JDUExualViQ3BaL1NyekxRU0FOWFNPZDhCUXh2cUkvS2g1aXVlSElaVjcr?=
 =?utf-8?B?RE5KZWFVeHFQMURYOGdRRjZieWZDR092ajdueURYVXQrTDVpY0xIWkNQNTQw?=
 =?utf-8?B?ZHNLeGtXRW93PT0=?=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014)(7053199007);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2025 14:32:24.2104
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 318e42b8-7fa4-446f-7d2d-08dd67bc0811
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE5.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7612

On 2025-03-20 03:49, Juergen Gross wrote:
> Add a file operations lseek hook to the 9pfs frontend. Just use the
> lseek_default() implementation.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

lseek_default adjusts file->offset, and read_9pfs()/write_9pfs() are 
already using that.

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From minios-devel-bounces@lists.xenproject.org Fri Mar 21 08:12:30 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 08:12:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.922180.1326914 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUT-00089S-13; Fri, 21 Mar 2025 08:12:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 922180.1326914; Fri, 21 Mar 2025 08:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvXUS-00089L-Sx; Fri, 21 Mar 2025 08:12:28 +0000
Received: by outflank-mailman (input) for mailman id 922180;
 Thu, 20 Mar 2025 14:28:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cJiu=WH=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1tvGtH-0000Lp-BP
 for minios-devel@lists.xenproject.org; Thu, 20 Mar 2025 14:28:59 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20628.outbound.protection.outlook.com
 [2a01:111:f403:2405::628])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a6f47a59-0597-11f0-9ffa-bf95429c2676;
 Thu, 20 Mar 2025 15:28:56 +0100 (CET)
Received: from DS7PR03CA0099.namprd03.prod.outlook.com (2603:10b6:5:3b7::14)
 by PH8PR12MB7157.namprd12.prod.outlook.com (2603:10b6:510:22b::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.34; Thu, 20 Mar
 2025 14:28:51 +0000
Received: from DS3PEPF0000C37C.namprd04.prod.outlook.com
 (2603:10b6:5:3b7:cafe::74) by DS7PR03CA0099.outlook.office365.com
 (2603:10b6:5:3b7::14) with Microsoft SMTP Server (version=TLS1_3,
 cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.33 via Frontend Transport; Thu,
 20 Mar 2025 14:28:51 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS3PEPF0000C37C.mail.protection.outlook.com (10.167.23.6) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8534.20 via Frontend Transport; Thu, 20 Mar 2025 14:28:50 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Thu, 20 Mar
 2025 09:28:49 -0500
Received: from [172.24.79.67] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 20 Mar 2025 09:28:48 -0500
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a6f47a59-0597-11f0-9ffa-bf95429c2676
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dwPAO3ZqeLl03zrpEOEovTIxHhDZzQ6VUKacVfoEzX1Ex+cLzjBIXiMvqpou2fypQnBJ5k5Nbetx6FYelS995YsmPQq0qjCZuvw6BE5je+r/s6Vi4AD9J762wA/EnUaCGjrYFmS0gG0z8tDDPzGPh9nLiyd0gBHTLcUZ2k5uxxy46lXN46bX/FTfXohEhXvYhX5npVryY+BtG2Qnm+uwRA1ElfNU2VJ/piTAwHpbvMsSeuiTP/dJmGPI/KnYz0+F2a1mtL8Gn7ZYyTWlnp2nEjXRwkZGR4tPowkNPs9ORMZA4f5pugg2nMcjE5SxqgASQ4akLCHQrw9llgnpz+g9wQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=un8giWv051B50ehq2Qqog9X1DpIqJ1bKk8Haauu/BsQ=;
 b=PbqUM04La5WFdx7a4O5rXcq7ecRo8Q8G2aCiDbz8zHjuoE7smSSuQkvJ07qD4aRJU+TERQ/lWqq0j1bjBhR+Ri5SYNGr2PAMQYXmHJq7ttx6e6xLiZEMm7qYi7g5oWDrsaPGMt8jijTuRMclOC4FSBltiJCUSTL5e7pEkhXN0IxKHzV+R4u0U4K4A00gORjfpUpew1uiQ2Nfu9y+9fanUawkm1w94l2yWApDIcB09dk+ZOS6FfXflwxYHiOy1G7U6q3BEy0EcfEdnra+MWk3b9z54rHy9GaCGS+ToK2GNB9Rd2C5fk6DTGV0/ojdmlKL5Q0sYJvARyJXCsMUjdinOg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com smtp.mailfrom=amd.com; dmarc=pass
 (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;
 dkim=none (message not signed); arc=none (0)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=un8giWv051B50ehq2Qqog9X1DpIqJ1bKk8Haauu/BsQ=;
 b=lfKJZvilgs5LkooB5JYhTjbB2zG/XgscVcgj7oOMQfEeru9vb6gCfvqy1k9JU9IX0yR++pjJfCyo/IfaNFKv7y8uI03YFZhWSTd2iQC4P2rSh8vFfBbpNcWXkKbd0pdDfYhj5DWybDdgEegkvApb+VRrvQV/huWra7nDwV9pwHM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <c8cb581e-7d6d-4f0b-abb5-f94f0c50fcac@amd.com>
Date: Thu, 20 Mar 2025 10:28:49 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 1/2] 9pfs: add fstat file operation hook
To: Juergen Gross <jgross@suse.com>, <minios-devel@lists.xenproject.org>,
	<xen-devel@lists.xenproject.org>
CC: <samuel.thibault@ens-lyon.org>
References: <20250320074924.8080-1-jgross@suse.com>
 <20250320074924.8080-2-jgross@suse.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20250320074924.8080-2-jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF0000C37C:EE_|PH8PR12MB7157:EE_
X-MS-Office365-Filtering-Correlation-Id: de6faf38-0a3a-4f00-d83f-08dd67bb88d9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014|7053199007;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WFVaY3NKUWxGRU4rNDhRUVg0V2tmVkxVd05TMFJTYkhMTDczTjFZWHI1aW82?=
 =?utf-8?B?dDJNazVGeUNMbHFFVk1KM3Y2NzVrVFg3VEowNyt5RmZPbUFuV2RBR29hcCtn?=
 =?utf-8?B?ait0Rk5YVEJaV3BVSG1BalJLSEIweVVBd3pxeDZCN29mNVU2RDJzVDBncDhQ?=
 =?utf-8?B?dTcrRjluVWdVQUxaYUE5cU9YVTlaekt0cTBYNUFSUGhDY1lYck9sRnF3bU5D?=
 =?utf-8?B?cWJIV2szbVlUcXpJSHRHQ3hwNTY0enpEREdxUGRTKzRiY3dtYThGbVV5UVV5?=
 =?utf-8?B?U2VzS2VYKzBiclFDSFlFakNsZC9xS3Y5VkFaZ0FOaXE1ckw5RUxPeWFzNFBO?=
 =?utf-8?B?b3JXeVRMNTBuZnZLQVlZRzJSbGovRjYwZGUwU01JUUIyVEpxVnpDaU5EUGMr?=
 =?utf-8?B?cFk2amYyVlFxT0M5VFNlRU8yMzFINXhCVk10YVEyUlk0U0tnVE9jbVFnZVRC?=
 =?utf-8?B?ai9SaklVeWJ3WFRCRktuSlgzc2dQc2dBUWd6ZXlGYWNpdUZ2V0tCMWFORHZR?=
 =?utf-8?B?WklBdmRNUkF3WEo1QjQzQzJVZitvV0pkblBJUDAzZjhuTG5kajBKVWpWT3Bo?=
 =?utf-8?B?Q3ZVcU1Pczg3UjlTbFVVVUgzSnZTZEl6SkVuY01oQUZxeFFuelRmc3I3NVlm?=
 =?utf-8?B?MXE4d1dhcFFGeEo0L0hKTXh0Y1dFN0k1S2lqZUs4S2lVZ0V1UDlTZEw1NzFt?=
 =?utf-8?B?VmdpcDdqYndMbkVRMllvVVZJQm5zUlBMUmp1T2IzVkJ5RDhJcWEzWGkraXJU?=
 =?utf-8?B?OWdBRFNqWENTOVVUQ3BXVFRxSWNXbmNEOUlwWjJYcDdqNSs2eSs5UEI1WXJT?=
 =?utf-8?B?ZHBVcDNwR25ZOWZxOVpibzhUbmVOS2hNTUxYMjZMNmY0MkFqdTJzMjlqSjVL?=
 =?utf-8?B?MTE5dTdWb0RGaEtIL1hBajUvWTB4MXBkbTRabE9UQTBDNlRGMVBNNEVkTklK?=
 =?utf-8?B?b0RINXhEcXdzQ3JGQlNPSlNNUDNKdnBLZXNDYzZQaTVyQ254azA4WUd6d1d5?=
 =?utf-8?B?UzJ1T0FYaG9tS2Z1YnM0amFCUDRZTTBlYUhxaCszdDk4OUp2cVR2TDIrdzFX?=
 =?utf-8?B?YXdrUnFEL2ovMEVQMVhKRzZqMEpNcGh5QklzK1FraU9meDBWUGQyVk4rOUha?=
 =?utf-8?B?dXJ6cXA3YjFuMHRhUEJnRm9BeG0vQTIyOWZLZlBiMmRja1gzNjhrcEF0c2JO?=
 =?utf-8?B?WmFuS0FMVTloVTFNcHh1WW5NL24rT05sNXRybitYRFkraUtNZ2tvdnVjc2Q1?=
 =?utf-8?B?VFVyYkdvL0FkWXh4bFBZUGxzckFQRkJPZlQyTmNzNytVZmliNUthaG1TWUtG?=
 =?utf-8?B?cm82L282MDcxTWxYeEhVRWwvUjFJeStpL0NHVkhJcEhUbVBwV1l2UDBDM2xw?=
 =?utf-8?B?Y3dkMS9FaHpkRzBEb3FyV3FZZjhWQ3RMUzh2Q2xCQXpFK1NiZDRnMnJPVEhk?=
 =?utf-8?B?UGNNcVpoQU5KNzNEUmIySHlmQThsSmY5MzQwbFRPYktnVVd6QTV0V2ttTHUr?=
 =?utf-8?B?L0cwTGFxZ0tQYkRHV1RzYzlvM0ZnWGJ3ZzFiejdVT0x2dktIRDkzOVYwK3o2?=
 =?utf-8?B?L1k1UWRSb0llcmpJcHBlMVpqSlIyMTEzUjFVMEgxallaRVZWSzlOdE1sUWNJ?=
 =?utf-8?B?dFdZVlRrUXJMa0lqRGNWL3czOGFmcVlGRTBPRDVsajNpQk9PRHUyelVSNEFV?=
 =?utf-8?B?WmdWTFFLTFJvcGtSN3BPM2JjbFFYY0FDWUF6em51NXA0OG1uVkMvcld2b1VN?=
 =?utf-8?B?OENNbDVPc28yQndsSXJyWmMwRzh5Sk4wdnFSdjBpaUhKWURCUkdUVkQ2bXFD?=
 =?utf-8?B?eHhuYzZESmlJQU95aVhNRXZsQnNuaktZV0c3ck1ra0RpdHJMUzk2cjBTZWJI?=
 =?utf-8?B?djROdUpyMGhGNnROWUVkcUxTeDVSc1cxUGR0OC8wUjl6bUlGR2tZOXZ1R0xj?=
 =?utf-8?B?bDVtYWY1b3I1NjNkeHhVbTNaOGozKzN3VUtXaUEwSVYrNHQyRFRaSVlDY0x1?=
 =?utf-8?Q?kS3z1iMkbiuiv+1mCQE5bTumg63k1U=3D?=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014)(7053199007);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2025 14:28:50.8220
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: de6faf38-0a3a-4f00-d83f-08dd67bb88d9
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF0000C37C.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7157

On 2025-03-20 03:49, Juergen Gross wrote:
> Add a file operations fstat hook to the 9pfs frontend.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---

> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
>       return ret;
>   }
>   
> +static int fstat_9pfs(struct file *file, struct stat *buf)
> +{
> +    struct file_9pfs *f9pfs = file->filedata;
> +    struct p9_stat stat;
> +    int ret;
> +
> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
> +    if ( ret )
> +    {
> +        errno = EIO;
> +        return -1;
> +    }
> +
> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
> +    buf->st_mode = stat.mode & 0777;

I think you want `|= stat.mode & 0x777` here.

Regards,
Jason


From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:25:02 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:25:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923431.1326945 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYce-0005cI-H7; Fri, 21 Mar 2025 09:25:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923431.1326945; Fri, 21 Mar 2025 09:25:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYce-0005cB-EF; Fri, 21 Mar 2025 09:25:00 +0000
Received: by outflank-mailman (input) for mailman id 923431;
 Fri, 21 Mar 2025 09:24:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYcd-0005bg-5t
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:24:59 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 594bf3cf-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:24:56 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id F00C11FB6B;
 Fri, 21 Mar 2025 09:24:53 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C5638139AA;
 Fri, 21 Mar 2025 09:24:53 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id YhyqLmUw3Wf4GAAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:24:53 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 594bf3cf-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549094; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=I16Jcmi/tPhnqXbhhvCxsdDEoRl/IPTWj8eh5kJrCns=;
	b=YerRSN8d/CHlugjy5AfDYQXUyc42ugQfyWlYVwXntkeIdeajs6IgY1kVdWIeiSPBDl0JK0
	GbL3VyjIzfAyDOnZVxk3aAAVxR9ByPpxnRzIzrzy+Bx3PrnHIzvAPAwMt5IaIOK1X82Zlh
	CQF6bRW0j7c5C3Dy/DjYz/5St4yaJlo=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=YerRSN8d
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549094; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=I16Jcmi/tPhnqXbhhvCxsdDEoRl/IPTWj8eh5kJrCns=;
	b=YerRSN8d/CHlugjy5AfDYQXUyc42ugQfyWlYVwXntkeIdeajs6IgY1kVdWIeiSPBDl0JK0
	GbL3VyjIzfAyDOnZVxk3aAAVxR9ByPpxnRzIzrzy+Bx3PrnHIzvAPAwMt5IaIOK1X82Zlh
	CQF6bRW0j7c5C3Dy/DjYz/5St4yaJlo=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 00/12] kexec: add kexec support to Mini-OS
Date: Fri, 21 Mar 2025 10:24:39 +0100
Message-ID: <20250321092451.17309-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: F00C11FB6B
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Add basic kexec support to Mini-OS for running in x86 PVH mode.

With this series applied it is possible to activate another kernel
from within Mini-OS.

Right now no Xen related teardown is done (so no reset of grant table,
event channels, PV devices). These should be added via kexec callbacks
which are added as a framework.

This is a major building block for support of Xenstore-stubdom live
update (in fact I've tested the kexec path to work using the PVH
variant of Xenstore-stubdom).

Juergen Gross (12):
  add kexec framework
  Mini-OS: add final kexec stage
  mini-os: add elf.h
  mini-os: analyze new kernel for kexec
  mini-os: kexec: finalize parameter location and size
  mini-os: reserve memory below boundary
  mini-os: kexec: build parameters for new kernel
  mini-os: kexec: move used pages away for new kernel
  Mini-OS: mm: change set_readonly() to change_readonly()
  Mini-OS: kexec: switch read-only area to be writable again
  mini-os: kexec: add kexec callback functionality
  mini-os: kexec: do the final kexec step

 Config.mk                  |   1 +
 Makefile                   |   1 +
 arch/x86/kexec.c           | 273 +++++++++++++++++++++++++++++
 arch/x86/minios-x86.lds.S  |  16 ++
 arch/x86/mm.c              | 238 ++++++++++++++++++++------
 arch/x86/testbuild/all-no  |   1 +
 arch/x86/testbuild/all-yes |   2 +
 arch/x86/testbuild/kexec   |   4 +
 arch/x86/x86_hvm.S         |  46 +++++
 include/elf.h              | 340 +++++++++++++++++++++++++++++++++++++
 include/kexec.h            |  63 +++++++
 include/mm.h               |   8 +
 include/x86/os.h           |   5 +
 kexec.c                    | 253 +++++++++++++++++++++++++++
 mm.c                       |  89 +++++++++-
 15 files changed, 1289 insertions(+), 51 deletions(-)
 create mode 100644 arch/x86/kexec.c
 create mode 100644 arch/x86/testbuild/kexec
 create mode 100644 include/elf.h
 create mode 100644 include/kexec.h
 create mode 100644 kexec.c

-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:25:04 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:25:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923433.1326958 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYci-0005uH-Uu; Fri, 21 Mar 2025 09:25:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923433.1326958; Fri, 21 Mar 2025 09:25:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYci-0005uA-SE; Fri, 21 Mar 2025 09:25:04 +0000
Received: by outflank-mailman (input) for mailman id 923433;
 Fri, 21 Mar 2025 09:25:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYcg-0005bg-Nw
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:02 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5d3d6592-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:01 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 814EA1FB6B;
 Fri, 21 Mar 2025 09:24:59 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5908B139AA;
 Fri, 21 Mar 2025 09:24:59 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id W4RFFGsw3WcCGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:24:59 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d3d6592-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549099; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=+e7f0wzeCQOLRDHTneQRUR5WaCuGPdNCIRfUubr6zrU=;
	b=APm4rU8EaHwEes9ifhAjt3TksotKCcmzPMSx4HSisyWi5zcqzlTuNpHWiXb0H38MH+poPf
	Cj4awaIkVx7i8sHTTt9dDbxuVDQRz+XzBLl6/GnwapMjkIq+Ahfwjdbr6Xatk1+7NZ5GgZ
	yf8Ap4dZlAkmzjQzRqpGRIjSM051SC8=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549099; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=+e7f0wzeCQOLRDHTneQRUR5WaCuGPdNCIRfUubr6zrU=;
	b=APm4rU8EaHwEes9ifhAjt3TksotKCcmzPMSx4HSisyWi5zcqzlTuNpHWiXb0H38MH+poPf
	Cj4awaIkVx7i8sHTTt9dDbxuVDQRz+XzBLl6/GnwapMjkIq+Ahfwjdbr6Xatk1+7NZ5GgZ
	yf8Ap4dZlAkmzjQzRqpGRIjSM051SC8=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 01/12] kexec: add kexec framework
Date: Fri, 21 Mar 2025 10:24:40 +0100
Message-ID: <20250321092451.17309-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a new config option CONFIG_KEXEC for support of kexec-ing into a
new mini-os kernel. Add a related kexec.c source and a kexec.h header.

For now allow CONFIG_KEXEC to be set only for PVH variant of mini-os.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Config.mk                  |  1 +
 Makefile                   |  1 +
 arch/x86/testbuild/all-no  |  1 +
 arch/x86/testbuild/all-yes |  2 ++
 arch/x86/testbuild/kexec   |  4 +++
 include/kexec.h            |  7 +++++
 kexec.c                    | 62 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 78 insertions(+)
 create mode 100644 arch/x86/testbuild/kexec
 create mode 100644 include/kexec.h
 create mode 100644 kexec.c

diff --git a/Config.mk b/Config.mk
index e493533a..e2afb1b4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -204,6 +204,7 @@ CONFIG-n += CONFIG_LIBXENGUEST
 CONFIG-n += CONFIG_LIBXENTOOLCORE
 CONFIG-n += CONFIG_LIBXENTOOLLOG
 CONFIG-n += CONFIG_LIBXENMANAGE
+CONFIG-n += CONFIG_KEXEC
 # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
 # console apart of standard dom0 handled console.
 CONFIG-n += CONFIG_USE_XEN_CONSOLE
diff --git a/Makefile b/Makefile
index d094858a..a64913ad 100644
--- a/Makefile
+++ b/Makefile
@@ -51,6 +51,7 @@ src-y += gntmap.c
 src-y += gnttab.c
 src-y += hypervisor.c
 src-y += kernel.c
+src-$(CONFIG_KEXEC) += kexec.c
 src-y += lock.c
 src-y += main.c
 src-y += mm.c
diff --git a/arch/x86/testbuild/all-no b/arch/x86/testbuild/all-no
index 5b3e99ed..b2ee5ce8 100644
--- a/arch/x86/testbuild/all-no
+++ b/arch/x86/testbuild/all-no
@@ -18,3 +18,4 @@ CONFIG_LIBXS = n
 CONFIG_LWIP = n
 CONFIG_BALLOON = n
 CONFIG_USE_XEN_CONSOLE = n
+CONFIG_KEXEC = n
diff --git a/arch/x86/testbuild/all-yes b/arch/x86/testbuild/all-yes
index 8ae489a4..99ba75dd 100644
--- a/arch/x86/testbuild/all-yes
+++ b/arch/x86/testbuild/all-yes
@@ -19,3 +19,5 @@ CONFIG_BALLOON = y
 CONFIG_USE_XEN_CONSOLE = y
 # The following are special: they need support from outside
 CONFIG_LWIP = n
+# KEXEC only without PARAVIRT
+CONFIG_KEXEC = n
diff --git a/arch/x86/testbuild/kexec b/arch/x86/testbuild/kexec
new file mode 100644
index 00000000..ea17b4d9
--- /dev/null
+++ b/arch/x86/testbuild/kexec
@@ -0,0 +1,4 @@
+CONFIG_PARAVIRT = n
+CONFIG_BALLOON = y
+CONFIG_USE_XEN_CONSOLE = y
+CONFIG_KEXEC = y
diff --git a/include/kexec.h b/include/kexec.h
new file mode 100644
index 00000000..6fd96774
--- /dev/null
+++ b/include/kexec.h
@@ -0,0 +1,7 @@
+#ifndef _KEXEC_H
+#define _KEXEC_H
+
+int kexec(void *kernel, unsigned long kernel_size,
+          const char *cmdline);
+
+#endif /* _KEXEC_H */
diff --git a/kexec.c b/kexec.c
new file mode 100644
index 00000000..53528169
--- /dev/null
+++ b/kexec.c
@@ -0,0 +1,62 @@
+/******************************************************************************
+ * kexec.c
+ *
+ * Support of kexec (reboot locally into new mini-os kernel).
+ *
+ * Copyright (c) 2024, Juergen Gross, SUSE Linux GmbH
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef CONFIG_PARAVIRT
+#error "kexec support not implemented in PV variant"
+#endif
+
+#include <errno.h>
+#include <mini-os/os.h>
+#include <mini-os/lib.h>
+#include <mini-os/kexec.h>
+
+/*
+ * General approach for kexec support (PVH only) is as follows:
+ *
+ * - New kernel needs to be in memory in form of a ELF file in a virtual
+ *   memory region.
+ * - A new start_info structure is constructed in memory with the final
+ *   memory locations included.
+ * - All memory areas needed for kexec execution are being finalized.
+ * - From here on a graceful failure is no longer possible.
+ * - Grants and event channels are torn down.
+ * - A temporary set of page tables is constructed at a location where it
+ *   doesn't conflict with old and new kernel or start_info.
+ * - The final kexec execution stage is copied to a memory area below 4G which
+ *   doesn't conflict with the target areas of kernel etc.
+ * - Cr3 is switched to the new set of page tables.
+ * - Execution continues in the final execution stage.
+ * - All data is copied to its final addresses.
+ * - Processing is switched to 32-bit mode without address translation.
+ * - The new kernel is activated.
+ */
+
+int kexec(void *kernel, unsigned long kernel_size,
+          const char *cmdline)
+{
+    return ENOSYS;
+}
+EXPORT_SYMBOL(kexec);
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:25:10 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:25:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923435.1326962 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYco-00060S-0J; Fri, 21 Mar 2025 09:25:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923435.1326962; Fri, 21 Mar 2025 09:25:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYcn-00060L-To; Fri, 21 Mar 2025 09:25:09 +0000
Received: by outflank-mailman (input) for mailman id 923435;
 Fri, 21 Mar 2025 09:25:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYcm-0005bg-E4
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:08 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6076a28d-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:06 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 16C0B1FB6B;
 Fri, 21 Mar 2025 09:25:05 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id E256F139AA;
 Fri, 21 Mar 2025 09:25:04 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id uPntNXAw3WcMGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:04 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6076a28d-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549106; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6IP6J3kfl4TGG5FGABs3QGnbBU7DiqQjA7lmH2hLfXY=;
	b=H7XhyrjUW6MgnSryG8LlzLEjDns0ddCUJ118psc3nwGjmUVHwbi8/2VeKyOfDmv6uk2e95
	xi4Unk3gJ1x6r/wqMyQBHThqJByR+vUthgF1BVbOTgO3Lb08wis4td8RfeJSlIW5SOvl3p
	tG/5nDWbtHJm7wNvgzMRApyvw0AJj5U=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Do63NN3p
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549105; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6IP6J3kfl4TGG5FGABs3QGnbBU7DiqQjA7lmH2hLfXY=;
	b=Do63NN3ph9qYPCwxUmOXrG4JfruyEBDHCMH/V7AR1eyijTj4+QrStvaSp/kRySjKVID4Y+
	oxxZ2rrQurGslxkp+s5rs4qTWcuAlhpRMzpgOMyCgBm7CE9iC9qASX8s8dmTmfQ/KrwR1f
	TICHl4TMrOPkzFQHbkaS+5m07NV4YGw=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 02/12] kexec: add final kexec stage
Date: Fri, 21 Mar 2025 10:24:41 +0100
Message-ID: <20250321092451.17309-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 16C0B1FB6B
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:email,suse.com:dkim,suse.com:mid];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Add the code and data definitions of the final kexec stage.

Put the code and related data into a dedicated section in order to be
able to copy it to another location. For this reason there must be no
absolute relocations being used in the code or data.

Being functionally related, add a function for adding a final kexec
action.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/kexec.c          | 109 ++++++++++++++++++++++++++++++++++++++
 arch/x86/minios-x86.lds.S |   8 +++
 arch/x86/x86_hvm.S        |  46 ++++++++++++++++
 include/kexec.h           |  27 ++++++++++
 include/x86/os.h          |   5 ++
 kexec.c                   |  22 ++++++++
 6 files changed, 217 insertions(+)
 create mode 100644 arch/x86/kexec.c

diff --git a/arch/x86/kexec.c b/arch/x86/kexec.c
new file mode 100644
index 00000000..bf247797
--- /dev/null
+++ b/arch/x86/kexec.c
@@ -0,0 +1,109 @@
+/******************************************************************************
+ * kexec.c
+ *
+ * Support of kexec (reboot locally into new mini-os kernel).
+ *
+ * Copyright (c) 2024, Juergen Gross, SUSE Linux GmbH
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifdef CONFIG_KEXEC
+
+#include <mini-os/os.h>
+#include <mini-os/lib.h>
+#include <mini-os/kexec.h>
+
+/*
+ * Final stage of kexec. Copies all data to the final destinations, zeroes
+ * .bss and activates new kernel.
+ * Must be called with interrupts off. Stack, code and data must be
+ * accessible via identity mapped virtual addresses (virt == phys). Copying
+ * and zeroing is done using virtual addresses.
+ * No relocations inside the function are allowed, as it is copied to an
+ * allocated page before being executed.
+ */
+static void __attribute__((__section__(".text.kexec")))
+    kexec_final(struct kexec_action *actions, unsigned long real)
+{
+    char *src, *dest;
+    unsigned int a, cnt;
+
+    for ( a = 0; ; a++ )
+    {
+        switch ( actions[a].action )
+        {
+        case KEXEC_COPY:
+            dest = actions[a].dest;
+            src = actions[a].src;
+            for ( cnt = 0; cnt < actions[a].len; cnt++ )
+                *dest++ = *src++;
+            break;
+
+        case KEXEC_ZERO:
+            dest = actions[a].dest;
+            for ( cnt = 0; cnt < actions[a].len; cnt++ )
+                *dest++ = 0;
+            break;
+
+        case KEXEC_CALL:
+            asm("movl %0, %%ebx\n\t"
+                "movl %1, %%edi\n\t"
+                "jmp *%2"
+                :"=m" (actions[a].src), "=m" (actions[a].dest)
+                :"m" (real));
+            break;
+        }
+    }
+}
+
+#define KEXEC_STACK_LONGS  8
+static unsigned long __attribute__((__section__(".data.kexec")))
+    kexec_stack[KEXEC_STACK_LONGS];
+
+static unsigned long get_kexec_addr(void *kexec_page, void *addr)
+{
+    unsigned long off = (unsigned long)addr - (unsigned long)_kexec_start;
+
+    return (unsigned long)kexec_page + off;
+}
+
+void do_kexec(void *kexec_page)
+{
+    unsigned long actions;
+    unsigned long stack;
+    unsigned long final;
+    unsigned long phys;
+
+    actions = get_kexec_addr(kexec_page, kexec_actions);
+    stack = get_kexec_addr(kexec_page, kexec_stack + KEXEC_STACK_LONGS);
+    final = get_kexec_addr(kexec_page, kexec_final);
+    phys = get_kexec_addr(kexec_page, kexec_phys);
+
+    memcpy(kexec_page, _kexec_start, KEXEC_SECSIZE);
+    asm("cli\n\t"
+        "mov %0, %%"ASM_SP"\n\t"
+        "mov %1, %%"ASM_ARG1"\n\t"
+        "mov %2, %%"ASM_ARG2"\n\t"
+        "jmp *%3"
+        :"=m" (stack), "=m" (actions), "=m" (phys)
+        :"m" (final));
+}
+
+#endif /* CONFIG_KEXEC */
diff --git a/arch/x86/minios-x86.lds.S b/arch/x86/minios-x86.lds.S
index 8aae2fd6..83ec41ce 100644
--- a/arch/x86/minios-x86.lds.S
+++ b/arch/x86/minios-x86.lds.S
@@ -87,6 +87,14 @@ SECTIONS
 
         _edata = .;			/* End of data section */
 
+        . = ALIGN(8);
+        _kexec_start = .;		/* Kexec relocatable code/data */
+        .kexec : {
+                *(.text.kexec)
+                *(.data.kexec)
+        }
+        _kexec_end = .;
+
         __bss_start = .;		/* BSS */
         .bss : {
                 *(.bss)
diff --git a/arch/x86/x86_hvm.S b/arch/x86/x86_hvm.S
index 42a5f02e..e2f82e96 100644
--- a/arch/x86/x86_hvm.S
+++ b/arch/x86/x86_hvm.S
@@ -85,4 +85,50 @@ page_table_l2:
 #endif
         .align __PAGE_SIZE, 0
 
+#ifdef CONFIG_KEXEC
+.section .text.kexec, "ax", @progbits
+
+/*
+ * Switch off paging and call new OS for kexec.
+ * %ebx holds the physical address of the start_info structure
+ * %edi holds the physical address of the entry point to call
+ */
+.globl kexec_phys
+kexec_phys:
+        /* Set DS, ES, SS to 0...ffffffff. */
+        mov $(GDTE_DS32_DPL0 * 8), %eax
+        mov %eax, %ds
+        mov %eax, %es
+        mov %eax, %ss
+
+#ifdef __x86_64__
+        /* Switch to 32-bit mode. */
+        pushq $(GDTE_CS32_DPL0 * 8)
+        lea cs32_switch(%rip),%edx
+        push %rdx
+        lretq
+
+        .code32
+cs32_switch:
+#endif
+        /* Set %cr0 and %cr4 (disables paging). */
+        mov $X86_CR0_PE, %eax
+        mov %eax, %cr0
+        mov $0, %eax
+        mov %eax, %cr4
+#ifdef __x86_64__
+        /* Disable 64-bit mode. */
+        mov $MSR_EFER, %ecx
+        rdmsr
+        btr $_EFER_LME, %eax
+        wrmsr
+#endif
+
+        jmp *%edi
+
+#ifdef __x86_64__
+        .code64
+#endif
+#endif /* CONFIG_KEXEC */
+
 .text
diff --git a/include/kexec.h b/include/kexec.h
index 6fd96774..722be456 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -1,7 +1,34 @@
 #ifndef _KEXEC_H
 #define _KEXEC_H
 
+/* One element of kexec actions (last element must have action KEXEC_CALL): */
+struct kexec_action {
+    enum {
+        KEXEC_COPY,   /* Copy len bytes from src to dest. */
+        KEXEC_ZERO,   /* Zero len bytes at dest. */
+        KEXEC_CALL    /* Call dest with paging turned off, param is src. */
+    } action;
+    unsigned int len;
+    void *dest;
+    void *src;
+};
+
+#define KEXEC_MAX_ACTIONS  16
+
+extern char _kexec_start[], _kexec_end[];
+extern struct kexec_action kexec_actions[KEXEC_MAX_ACTIONS];
+
+int kexec_add_action(int action, void *dest, void *src, unsigned int len);
+
+#define KEXEC_SECSIZE ((unsigned long)_kexec_end - (unsigned long)_kexec_start)
+
 int kexec(void *kernel, unsigned long kernel_size,
           const char *cmdline);
 
+/* Initiate final kexec stage. */
+void do_kexec(void *kexec_page);
+
+/* Assembler code for switching off paging and passing execution to new OS. */
+void kexec_phys(void);
+
 #endif /* _KEXEC_H */
diff --git a/include/x86/os.h b/include/x86/os.h
index 0095be13..8a057d81 100644
--- a/include/x86/os.h
+++ b/include/x86/os.h
@@ -27,6 +27,7 @@
 #define MSR_EFER          0xc0000080
 #define _EFER_LME         8             /* Long mode enable */
 
+#define X86_CR0_PE        0x00000001    /* Protected mode enable */
 #define X86_CR0_WP        0x00010000    /* Write protect */
 #define X86_CR0_PG        0x80000000    /* Paging */
 #define X86_CR4_PAE       0x00000020    /* enable physical address extensions */
@@ -64,9 +65,13 @@
 #if defined(__i386__)
 #define __SZ    "l"
 #define __REG   "e"
+#define ASM_ARG1 "eax"
+#define ASM_ARG2 "edx"
 #else
 #define __SZ    "q"
 #define __REG   "r"
+#define ASM_ARG1 "rdi"
+#define ASM_ARG2 "rsi"
 #endif
 
 #define ASM_SP  __REG"sp"
diff --git a/kexec.c b/kexec.c
index 53528169..849a98e4 100644
--- a/kexec.c
+++ b/kexec.c
@@ -60,3 +60,25 @@ int kexec(void *kernel, unsigned long kernel_size,
     return ENOSYS;
 }
 EXPORT_SYMBOL(kexec);
+
+struct kexec_action __attribute__((__section__(".data.kexec")))
+    kexec_actions[KEXEC_MAX_ACTIONS];
+static unsigned int act_idx;
+
+int kexec_add_action(int action, void *dest, void *src, unsigned int len)
+{
+    struct kexec_action *act;
+
+    if ( act_idx == KEXEC_MAX_ACTIONS )
+        return -ENOSPC;
+
+    act = kexec_actions + act_idx;
+    act_idx++;
+
+    act->action = action;
+    act->len = len;
+    act->dest = dest;
+    act->src = src;
+
+    return 0;
+}
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:25:14 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:25:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923441.1326987 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYcs-0006ds-V5; Fri, 21 Mar 2025 09:25:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923441.1326987; Fri, 21 Mar 2025 09:25:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYcs-0006dl-RD; Fri, 21 Mar 2025 09:25:14 +0000
Received: by outflank-mailman (input) for mailman id 923441;
 Fri, 21 Mar 2025 09:25:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYcq-0005bg-RO
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:12 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 631ee3bb-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:11 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 9FBF321CBC;
 Fri, 21 Mar 2025 09:25:10 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 76C10139AA;
 Fri, 21 Mar 2025 09:25:10 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id E4WYG3Yw3WcYGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:10 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 631ee3bb-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549110; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iMWRBt5CGXERaPO06Vbkq8ejeIXBFGe0ATkvAiDSWpM=;
	b=LUIwIFlc/illNUWSIYY2hdD17DWH+AeZXRbkNFdiKaj5kS9nntqRnAzhy/8QG06VJe4tE0
	1ceWb+fNBeXQ2WdwRwdjX+OWJHnMcAgMgspdvyrdzf4Y0k4tKNo/zHAY9z+3HVoCtGL5xZ
	D6CKiZaPY2n+Sd//d0HPJ7lCNSVIyug=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=LUIwIFlc
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549110; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=iMWRBt5CGXERaPO06Vbkq8ejeIXBFGe0ATkvAiDSWpM=;
	b=LUIwIFlc/illNUWSIYY2hdD17DWH+AeZXRbkNFdiKaj5kS9nntqRnAzhy/8QG06VJe4tE0
	1ceWb+fNBeXQ2WdwRwdjX+OWJHnMcAgMgspdvyrdzf4Y0k4tKNo/zHAY9z+3HVoCtGL5xZ
	D6CKiZaPY2n+Sd//d0HPJ7lCNSVIyug=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 03/12] add elf.h
Date: Fri, 21 Mar 2025 10:24:42 +0100
Message-ID: <20250321092451.17309-4-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9FBF321CBC
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Add some definitions for accessing an ELF file. Only the file header
and the program header are needed.

The main source for those are elfstructs.h and libelf.h from the Xen
tree. The license boiler plate of those files is being kept in the
resulting header file.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 include/elf.h | 340 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 340 insertions(+)
 create mode 100644 include/elf.h

diff --git a/include/elf.h b/include/elf.h
new file mode 100644
index 00000000..35a9c9fe
--- /dev/null
+++ b/include/elf.h
@@ -0,0 +1,340 @@
+#ifndef __ELF_H__
+#define __ELF_H__
+/*
+ * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdbool.h>
+#include <mini-os/types.h>
+
+typedef uint32_t    Elf32_Addr;  /* Unsigned program address */
+typedef uint32_t    Elf32_Off;   /* Unsigned file offset */
+typedef uint16_t    Elf32_Half;  /* Unsigned medium integer */
+typedef uint32_t    Elf32_Word;  /* Unsigned large integer */
+
+typedef uint64_t    Elf64_Addr;
+typedef uint64_t    Elf64_Off;
+typedef uint16_t    Elf64_Half;
+typedef uint32_t    Elf64_Word;
+typedef uint64_t    Elf64_Xword;
+
+/* Unique build id string format when using --build-id. */
+#define NT_GNU_BUILD_ID 3
+
+/*
+ * e_ident[] identification indexes
+ * See http://www.caldera.com/developers/gabi/2000-07-17/ch4.eheader.html
+ */
+#define EI_MAG0        0         /* file ID */
+#define EI_MAG1        1         /* file ID */
+#define EI_MAG2        2         /* file ID */
+#define EI_MAG3        3         /* file ID */
+#define EI_CLASS       4         /* file class */
+#define EI_DATA        5         /* data encoding */
+#define EI_VERSION     6         /* ELF header version */
+#define EI_OSABI       7         /* OS/ABI ID */
+#define EI_ABIVERSION  8         /* ABI version */
+#define EI_PAD         9         /* start of pad bytes */
+#define EI_NIDENT     16         /* Size of e_ident[] */
+
+/* e_ident[] magic number */
+#define ELFMAG0        0x7f      /* e_ident[EI_MAG0] */
+#define ELFMAG1        'E'       /* e_ident[EI_MAG1] */
+#define ELFMAG2        'L'       /* e_ident[EI_MAG2] */
+#define ELFMAG3        'F'       /* e_ident[EI_MAG3] */
+#define ELFMAG         "\177ELF" /* magic */
+#define SELFMAG        4         /* size of magic */
+
+/* e_ident[] file class */
+#define ELFCLASSNONE   0         /* invalid */
+#define ELFCLASS32     1         /* 32-bit objs */
+#define ELFCLASS64     2         /* 64-bit objs */
+#define ELFCLASSNUM    3         /* number of classes */
+
+/* e_ident[] data encoding */
+#define ELFDATANONE    0         /* invalid */
+#define ELFDATA2LSB    1         /* Little-Endian */
+#define ELFDATA2MSB    2         /* Big-Endian */
+#define ELFDATANUM     3         /* number of data encode defines */
+
+/* e_ident[] Operating System/ABI */
+#define ELFOSABI_SYSV         0  /* UNIX System V ABI */
+#define ELFOSABI_NONE         0  /* Same as ELFOSABI_SYSV */
+#define ELFOSABI_HPUX         1  /* HP-UX operating system */
+#define ELFOSABI_NETBSD       2  /* NetBSD */
+#define ELFOSABI_LINUX        3  /* GNU/Linux */
+#define ELFOSABI_HURD         4  /* GNU/Hurd */
+#define ELFOSABI_86OPEN       5  /* 86Open common IA32 ABI */
+#define ELFOSABI_SOLARIS      6  /* Solaris */
+#define ELFOSABI_MONTEREY     7  /* Monterey */
+#define ELFOSABI_IRIX         8  /* IRIX */
+#define ELFOSABI_FREEBSD      9  /* FreeBSD */
+#define ELFOSABI_TRU64       10  /* TRU64 UNIX */
+#define ELFOSABI_MODESTO     11  /* Novell Modesto */
+#define ELFOSABI_OPENBSD     12  /* OpenBSD */
+#define ELFOSABI_ARM         97  /* ARM */
+#define ELFOSABI_STANDALONE 255  /* Standalone (embedded) application */
+
+/* e_ident */
+#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+                      (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+                      (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+                      (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* e_flags */
+#define EF_ARM_EABI_MASK    0xff000000
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1    0x01000000
+#define EF_ARM_EABI_VER2    0x02000000
+#define EF_ARM_EABI_VER3    0x03000000
+#define EF_ARM_EABI_VER4    0x04000000
+#define EF_ARM_EABI_VER5    0x05000000
+
+/* ELF Header */
+typedef struct {
+    unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
+    Elf32_Half    e_type;        /* object file type */
+    Elf32_Half    e_machine;     /* machine */
+    Elf32_Word    e_version;     /* object file version */
+    Elf32_Addr    e_entry;       /* virtual entry point */
+    Elf32_Off     e_phoff;       /* program header table offset */
+    Elf32_Off     e_shoff;       /* section header table offset */
+    Elf32_Word    e_flags;       /* processor-specific flags */
+    Elf32_Half    e_ehsize;      /* ELF header size */
+    Elf32_Half    e_phentsize;   /* program header entry size */
+    Elf32_Half    e_phnum;       /* number of program header entries */
+    Elf32_Half    e_shentsize;   /* section header entry size */
+    Elf32_Half    e_shnum;       /* number of section header entries */
+    Elf32_Half    e_shstrndx;    /* section header table's "section
+                                    header string table" entry offset */
+} Elf32_Ehdr;
+
+typedef struct {
+    unsigned char e_ident[EI_NIDENT]; /* Id bytes */
+    Elf64_Half    e_type;        /* file type */
+    Elf64_Half    e_machine;     /* machine type */
+    Elf64_Word    e_version;     /* version number */
+    Elf64_Addr    e_entry;       /* entry point */
+    Elf64_Off     e_phoff;       /* Program hdr offset */
+    Elf64_Off     e_shoff;       /* Section hdr offset */
+    Elf64_Word    e_flags;       /* Processor flags */
+    Elf64_Half    e_ehsize;      /* sizeof ehdr */
+    Elf64_Half    e_phentsize;   /* Program header entry size */
+    Elf64_Half    e_phnum;       /* Number of program headers */
+    Elf64_Half    e_shentsize;   /* Section header entry size */
+    Elf64_Half    e_shnum;       /* Number of section headers */
+    Elf64_Half    e_shstrndx;    /* String table index */
+} Elf64_Ehdr;
+
+/* e_type */
+#define ET_NONE      0           /* No file type */
+#define ET_REL       1           /* relocatable file */
+#define ET_EXEC      2           /* executable file */
+#define ET_DYN       3           /* shared object file */
+#define ET_CORE      4           /* core file */
+#define ET_NUM       5           /* number of types */
+#define ET_LOPROC    0xff00      /* reserved range for processor */
+#define ET_HIPROC    0xffff      /*   specific e_type */
+
+/* e_machine */
+#define EM_NONE      0           /* No Machine */
+#define EM_M32       1           /* AT&T WE 32100 */
+#define EM_SPARC     2           /* SPARC */
+#define EM_386       3           /* Intel 80386 */
+#define EM_68K       4           /* Motorola 68000 */
+#define EM_88K       5           /* Motorola 88000 */
+#define EM_486       6           /* Intel 80486 - unused? */
+#define EM_860       7           /* Intel 80860 */
+#define EM_MIPS      8           /* MIPS R3000 Big-Endian only */
+/*
+ * Don't know if EM_MIPS_RS4_BE,
+ * EM_SPARC64, EM_PARISC,
+ * or EM_PPC are ABI compliant
+ */
+#define EM_MIPS_RS4_BE 10        /* MIPS R4000 Big-Endian */
+#define EM_SPARC64     11        /* SPARC v9 64-bit unoffical */
+#define EM_PARISC      15        /* HPPA */
+#define EM_SPARC32PLUS 18        /* Enhanced instruction set SPARC */
+#define EM_PPC         20        /* PowerPC */
+#define EM_PPC64       21        /* PowerPC 64-bit */
+#define EM_ARM         40        /* Advanced RISC Machines ARM */
+#define EM_ALPHA       41        /* DEC ALPHA */
+#define EM_SPARCV9     43        /* SPARC version 9 */
+#define EM_ALPHA_EXP   0x9026    /* DEC ALPHA */
+#define EM_IA_64       50        /* Intel Merced */
+#define EM_X86_64      62        /* AMD x86-64 architecture */
+#define EM_VAX         75        /* DEC VAX */
+#define EM_AARCH64    183        /* ARM 64-bit */
+
+/* Version */
+#define EV_NONE      0           /* Invalid */
+#define EV_CURRENT   1           /* Current */
+#define EV_NUM       2           /* number of versions */
+
+/* Program Header */
+typedef struct {
+    Elf32_Word    p_type;        /* segment type */
+    Elf32_Off     p_offset;      /* segment offset */
+    Elf32_Addr    p_vaddr;       /* virtual address of segment */
+    Elf32_Addr    p_paddr;       /* physical address - ignored? */
+    Elf32_Word    p_filesz;      /* number of bytes in file for seg. */
+    Elf32_Word    p_memsz;       /* number of bytes in mem. for seg. */
+    Elf32_Word    p_flags;       /* flags */
+    Elf32_Word    p_align;       /* memory alignment */
+} Elf32_Phdr;
+
+typedef struct {
+    Elf64_Word    p_type;        /* entry type */
+    Elf64_Word    p_flags;       /* flags */
+    Elf64_Off     p_offset;      /* offset */
+    Elf64_Addr    p_vaddr;       /* virtual address */
+    Elf64_Addr    p_paddr;       /* physical address */
+    Elf64_Xword   p_filesz;      /* file size */
+    Elf64_Xword   p_memsz;       /* memory size */
+    Elf64_Xword   p_align;       /* memory & file alignment */
+} Elf64_Phdr;
+
+/* Segment types - p_type */
+#define PT_NULL      0           /* unused */
+#define PT_LOAD      1           /* loadable segment */
+#define PT_DYNAMIC   2           /* dynamic linking section */
+#define PT_INTERP    3           /* the RTLD */
+#define PT_NOTE      4           /* auxiliary information */
+#define PT_SHLIB     5           /* reserved - purpose undefined */
+#define PT_PHDR      6           /* program header */
+#define PT_NUM       7           /* Number of segment types */
+#define PT_LOPROC    0x70000000  /* reserved range for processor */
+#define PT_HIPROC    0x7fffffff  /*  specific segment types */
+
+/* Segment flags - p_flags */
+#define PF_X         0x1        /* Executable */
+#define PF_W         0x2        /* Writable */
+#define PF_R         0x4        /* Readable */
+#define PF_MASKPROC  0xf0000000 /* reserved bits for processor */
+                                /*  specific segment flags */
+
+/* Section Header */
+typedef struct {
+    Elf32_Word    sh_name;      /* name - index into section header
+                                   string table section */
+    Elf32_Word    sh_type;      /* type */
+    Elf32_Word    sh_flags;     /* flags */
+    Elf32_Addr    sh_addr;      /* address */
+    Elf32_Off     sh_offset;    /* file offset */
+    Elf32_Word    sh_size;      /* section size */
+    Elf32_Word    sh_link;      /* section header table index link */
+    Elf32_Word    sh_info;      /* extra information */
+    Elf32_Word    sh_addralign; /* address alignment */
+    Elf32_Word    sh_entsize;   /* section entry size */
+} Elf32_Shdr;
+
+typedef struct {
+    Elf64_Word    sh_name;      /* section name */
+    Elf64_Word    sh_type;      /* section type */
+    Elf64_Xword   sh_flags;     /* section flags */
+    Elf64_Addr    sh_addr;      /* virtual address */
+    Elf64_Off     sh_offset;    /* file offset */
+    Elf64_Xword   sh_size;      /* section size */
+    Elf64_Word    sh_link;      /* link to another */
+    Elf64_Word    sh_info;      /* misc info */
+    Elf64_Xword   sh_addralign; /* memory alignment */
+    Elf64_Xword   sh_entsize;   /* table entry size */
+} Elf64_Shdr;
+
+/* sh_type */
+#define SHT_NULL        0       /* inactive */
+#define SHT_PROGBITS    1       /* program defined information */
+#define SHT_SYMTAB      2       /* symbol table section */
+#define SHT_STRTAB      3       /* string table section */
+#define SHT_RELA        4       /* relocation section with addends*/
+#define SHT_HASH        5       /* symbol hash table section */
+#define SHT_DYNAMIC     6       /* dynamic section */
+#define SHT_NOTE        7       /* note section */
+#define SHT_NOBITS      8       /* no space section */
+#define SHT_REL         9       /* relation section without addends */
+#define SHT_SHLIB      10       /* reserved - purpose unknown */
+#define SHT_DYNSYM     11       /* dynamic symbol table section */
+#define SHT_NUM        12       /* number of section types */
+
+/* Note definitions */
+typedef struct {
+    Elf32_Word namesz;
+    Elf32_Word descsz;
+    Elf32_Word type;
+    char data[];
+} Elf32_Note;
+
+typedef struct {
+    Elf64_Word namesz;
+    Elf64_Word descsz;
+    Elf64_Word type;
+    char data[];
+} Elf64_Note;
+
+/* Abstraction layer for handling 32- and 64-bit ELF files. */
+
+typedef union {
+    Elf32_Ehdr e32;
+    Elf64_Ehdr e64;
+} elf_ehdr;
+
+static inline bool elf_is_32bit(elf_ehdr *ehdr)
+{
+    return ehdr->e32.e_ident[EI_CLASS] == ELFCLASS32;
+}
+
+static inline bool elf_is_64bit(elf_ehdr *ehdr)
+{
+    return ehdr->e32.e_ident[EI_CLASS] == ELFCLASS64;
+}
+
+#define ehdr_val(ehdr, elem) (elf_is_32bit(ehdr) ? (ehdr)->e32.elem : (ehdr)->e64.elem)
+
+typedef union {
+    Elf32_Phdr e32;
+    Elf64_Phdr e64;
+} elf_phdr;
+
+#define phdr_val(ehdr, phdr, elem) (elf_is_32bit(ehdr) ? (phdr)->e32.elem : (phdr)->e64.elem)
+
+typedef union {
+    Elf32_Shdr e32;
+    Elf64_Shdr e64;
+} elf_shdr;
+
+#define shdr_val(ehdr, shdr, elem) (elf_is_32bit(ehdr) ? (shdr)->e32.elem : (shdr)->e64.elem)
+
+typedef union {
+    Elf32_Note e32;
+    Elf64_Note e64;
+} elf_note;
+
+#define note_val(ehdr, note, elem) (elf_is_32bit(ehdr) ? (note)->e32.elem : (note)->e64.elem)
+
+static inline void *elf_ptr_add(void *ptr, unsigned long add)
+{
+    return (char *)ptr + add;
+}
+#endif /* __ELF_H__ */
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:25:19 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:25:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923447.1327001 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYcx-00074F-Ho; Fri, 21 Mar 2025 09:25:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923447.1327001; Fri, 21 Mar 2025 09:25:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYcx-000745-Dy; Fri, 21 Mar 2025 09:25:19 +0000
Received: by outflank-mailman (input) for mailman id 923447;
 Fri, 21 Mar 2025 09:25:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYcw-0005bg-4S
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:18 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 665fdec4-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:16 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 3720221CE7;
 Fri, 21 Mar 2025 09:25:16 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0D1C2139AA;
 Fri, 21 Mar 2025 09:25:16 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id pmjNAXww3WcdGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:16 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 665fdec4-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549116; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=0vBbPFLMY7oD9agHffp6bnrvaZ2naPaltAc0NWccekA=;
	b=etwLehUUcpE9K+mimpI9086gTMKc1HMThW/afVC+M7vBlWtnSj/LpAcHQ/qmFAdcTjx/qE
	efyp09ZynVcQts6F11j2JP0CFUzhqy9vGqtT/bI+YA2lKHPfYPPgbWHod6IdFItZQ0HG0z
	Y3ebBwohzBore2u/Wedy95qu3lSQwNE=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549116; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=0vBbPFLMY7oD9agHffp6bnrvaZ2naPaltAc0NWccekA=;
	b=etwLehUUcpE9K+mimpI9086gTMKc1HMThW/afVC+M7vBlWtnSj/LpAcHQ/qmFAdcTjx/qE
	efyp09ZynVcQts6F11j2JP0CFUzhqy9vGqtT/bI+YA2lKHPfYPPgbWHod6IdFItZQ0HG0z
	Y3ebBwohzBore2u/Wedy95qu3lSQwNE=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 04/12] kexec: analyze new kernel for kexec
Date: Fri, 21 Mar 2025 10:24:43 +0100
Message-ID: <20250321092451.17309-5-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Analyze the properties of the new kernel to be loaded by kexec. The
data needed is:

- upper boundary in final location
- copy and memory clear operations
- entry point and entry parameter

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/kexec.c |  91 +++++++++++++++++++++++++++++++++++
 include/kexec.h  |  11 +++++
 kexec.c          | 120 ++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 220 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kexec.c b/arch/x86/kexec.c
index bf247797..2069f3c6 100644
--- a/arch/x86/kexec.c
+++ b/arch/x86/kexec.c
@@ -28,8 +28,15 @@
 
 #include <mini-os/os.h>
 #include <mini-os/lib.h>
+#include <mini-os/e820.h>
+#include <mini-os/err.h>
 #include <mini-os/kexec.h>
 
+#include <xen/elfnote.h>
+#include <xen/arch-x86/hvm/start_info.h>
+
+static unsigned long kernel_entry = ~0UL;
+
 /*
  * Final stage of kexec. Copies all data to the final destinations, zeroes
  * .bss and activates new kernel.
@@ -106,4 +113,88 @@ void do_kexec(void *kexec_page)
         :"m" (final));
 }
 
+bool kexec_chk_arch(elf_ehdr *ehdr)
+{
+    return ehdr->e32.e_machine == EM_386 || ehdr->e32.e_machine == EM_X86_64;
+}
+
+static unsigned int note_data_sz(unsigned int sz)
+{
+    return (sz + 3) & ~3;
+}
+
+static void check_notes_entry(elf_ehdr *ehdr, void *start, unsigned int len)
+{
+    elf_note *note = start;
+    unsigned int off, note_len, namesz, descsz;
+    char *val;
+
+    for ( off = 0; off < len; off += note_len )
+    {
+        namesz = note_data_sz(note_val(ehdr, note, namesz));
+        descsz = note_data_sz(note_val(ehdr, note, descsz));
+        val = note_val(ehdr, note, data);
+        note_len = val - (char *)note + namesz + descsz;
+
+        if ( !strncmp(val, "Xen", namesz) &&
+             note_val(ehdr, note, type) == XEN_ELFNOTE_PHYS32_ENTRY )
+        {
+            val += namesz;
+            switch ( note_val(ehdr, note, descsz) )
+            {
+            case 1:
+                kernel_entry = *(uint8_t *)val;
+                return;
+            case 2:
+                kernel_entry = *(uint16_t *)val;
+                return;
+            case 4:
+                kernel_entry = *(uint32_t *)val;
+                return;
+            case 8:
+                kernel_entry = *(uint64_t *)val;
+                return;
+            default:
+                break;
+            }
+        }
+
+        note = elf_ptr_add(note, note_len);
+    }
+}
+
+int kexec_arch_analyze_phdr(elf_ehdr *ehdr, elf_phdr *phdr)
+{
+    void *notes_start;
+    unsigned int notes_len;
+
+    if ( phdr_val(ehdr, phdr, p_type) != PT_NOTE || kernel_entry != ~0UL )
+        return 0;
+
+    notes_start = elf_ptr_add(ehdr, phdr_val(ehdr, phdr, p_offset));
+    notes_len = phdr_val(ehdr, phdr, p_filesz);
+    check_notes_entry(ehdr, notes_start, notes_len);
+
+    return 0;
+}
+
+int kexec_arch_analyze_shdr(elf_ehdr *ehdr, elf_shdr *shdr)
+{
+    void *notes_start;
+    unsigned int notes_len;
+
+    if ( shdr_val(ehdr, shdr, sh_type) != SHT_NOTE || kernel_entry != ~0UL )
+        return 0;
+
+    notes_start = elf_ptr_add(ehdr, shdr_val(ehdr, shdr, sh_offset));
+    notes_len = shdr_val(ehdr, shdr, sh_size);
+    check_notes_entry(ehdr, notes_start, notes_len);
+
+    return 0;
+}
+
+bool kexec_arch_need_analyze_shdrs(void)
+{
+    return kernel_entry == ~0UL;
+}
 #endif /* CONFIG_KEXEC */
diff --git a/include/kexec.h b/include/kexec.h
index 722be456..f54cbb90 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -1,5 +1,6 @@
 #ifndef _KEXEC_H
 #define _KEXEC_H
+#include <mini-os/elf.h>
 
 /* One element of kexec actions (last element must have action KEXEC_CALL): */
 struct kexec_action {
@@ -18,6 +19,8 @@ struct kexec_action {
 extern char _kexec_start[], _kexec_end[];
 extern struct kexec_action kexec_actions[KEXEC_MAX_ACTIONS];
 
+extern unsigned long kexec_last_addr;
+
 int kexec_add_action(int action, void *dest, void *src, unsigned int len);
 
 #define KEXEC_SECSIZE ((unsigned long)_kexec_end - (unsigned long)_kexec_start)
@@ -31,4 +34,12 @@ void do_kexec(void *kexec_page);
 /* Assembler code for switching off paging and passing execution to new OS. */
 void kexec_phys(void);
 
+/* Check kernel to match current architecture. */
+bool kexec_chk_arch(elf_ehdr *ehdr);
+
+/* Architecture specific ELF handling functions. */
+int kexec_arch_analyze_phdr(elf_ehdr *ehdr, elf_phdr *phdr);
+int kexec_arch_analyze_shdr(elf_ehdr *ehdr, elf_shdr *shdr);
+bool kexec_arch_need_analyze_shdrs(void);
+
 #endif /* _KEXEC_H */
diff --git a/kexec.c b/kexec.c
index 849a98e4..3ff4ea07 100644
--- a/kexec.c
+++ b/kexec.c
@@ -31,6 +31,9 @@
 #include <errno.h>
 #include <mini-os/os.h>
 #include <mini-os/lib.h>
+#include <mini-os/console.h>
+#include <mini-os/elf.h>
+#include <mini-os/err.h>
 #include <mini-os/kexec.h>
 
 /*
@@ -54,9 +57,122 @@
  * - The new kernel is activated.
  */
 
-int kexec(void *kernel, unsigned long kernel_size,
-          const char *cmdline)
+unsigned long kexec_last_addr;
+
+static int analyze_phdrs(elf_ehdr *ehdr)
+{
+    elf_phdr *phdr;
+    unsigned int n_hdr, i;
+    unsigned long paddr, offset, filesz, memsz;
+    int ret;
+
+    phdr = elf_ptr_add(ehdr, ehdr_val(ehdr, e_phoff));
+    n_hdr = ehdr_val(ehdr, e_phnum);
+    for ( i = 0; i < n_hdr; i++ )
+    {
+        ret = kexec_arch_analyze_phdr(ehdr, phdr);
+        if ( ret )
+            return ret;
+
+        if ( phdr_val(ehdr, phdr, p_type) == PT_LOAD &&
+             (phdr_val(ehdr, phdr, p_flags) & (PF_X | PF_W | PF_R)) )
+        {
+            paddr = phdr_val(ehdr, phdr, p_paddr);
+            offset = phdr_val(ehdr, phdr, p_offset);
+            filesz = phdr_val(ehdr, phdr, p_filesz);
+            memsz = phdr_val(ehdr, phdr, p_memsz);
+            if ( filesz > 0 )
+            {
+                ret = kexec_add_action(KEXEC_COPY, to_virt(paddr),
+                                       (char *)ehdr + offset, filesz);
+                if ( ret )
+                    return ret;
+            }
+            if ( memsz > filesz )
+            {
+                ret = kexec_add_action(KEXEC_ZERO, to_virt(paddr + filesz),
+                                       NULL, memsz - filesz);
+                if ( ret )
+                    return ret;
+            }
+            if ( paddr + memsz > kexec_last_addr )
+                kexec_last_addr = paddr + memsz;
+        }
+
+        phdr = elf_ptr_add(phdr, ehdr_val(ehdr, e_phentsize));
+    }
+
+    return 0;
+}
+
+static int analyze_shdrs(elf_ehdr *ehdr)
 {
+    elf_shdr *shdr;
+    unsigned int n_hdr, i;
+    int ret;
+
+    if ( !kexec_arch_need_analyze_shdrs() )
+        return 0;
+
+    shdr = elf_ptr_add(ehdr, ehdr_val(ehdr, e_shoff));
+    n_hdr = ehdr_val(ehdr, e_shnum);
+    for ( i = 0; i < n_hdr; i++ )
+    {
+        ret = kexec_arch_analyze_shdr(ehdr, shdr);
+        if ( ret )
+            return ret;
+
+        shdr = elf_ptr_add(shdr, ehdr_val(ehdr, e_shentsize));
+    }
+
+    return 0;
+}
+
+static int analyze_kernel(void *kernel, unsigned long size)
+{
+    elf_ehdr *ehdr = kernel;
+    int ret;
+
+    if ( !IS_ELF(ehdr->e32) )
+    {
+        printk("kexec: new kernel not an ELF file\n");
+        return ENOEXEC;
+    }
+    if ( ehdr->e32.e_ident[EI_DATA] != ELFDATA2LSB )
+    {
+        printk("kexec: ELF file of new kernel is big endian\n");
+        return ENOEXEC;
+    }
+    if ( !elf_is_32bit(ehdr) && !elf_is_64bit(ehdr) )
+    {
+        printk("kexec: ELF file of new kernel is neither 32 nor 64 bit\n");
+        return ENOEXEC;
+    }
+    if ( !kexec_chk_arch(ehdr) )
+    {
+        printk("kexec: ELF file of new kernel is not compatible with arch\n");
+        return ENOEXEC;
+    }
+
+    ret = analyze_phdrs(ehdr);
+    if ( ret )
+        return ret;
+
+    ret = analyze_shdrs(ehdr);
+    if ( ret )
+        return ret;
+
+    return 0;
+}
+
+int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
+{
+    int ret;
+
+    ret = analyze_kernel(kernel, kernel_size);
+    if ( ret )
+        return ret;
+
     return ENOSYS;
 }
 EXPORT_SYMBOL(kexec);
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:30:35 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:30:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923500.1327014 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYi2-0001Zu-6s; Fri, 21 Mar 2025 09:30:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923500.1327014; Fri, 21 Mar 2025 09:30:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYi2-0001Zm-41; Fri, 21 Mar 2025 09:30:34 +0000
Received: by outflank-mailman (input) for mailman id 923500;
 Fri, 21 Mar 2025 09:30:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdf-0005bg-Nu
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:26:03 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8108bf38-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:26:01 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id EAAA721D79;
 Fri, 21 Mar 2025 09:26:00 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C18DF139AA;
 Fri, 21 Mar 2025 09:26:00 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 6dHYLagw3WdpGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:26:00 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8108bf38-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549161; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=r/E0X4kSUTS2znnNR4n/sGL9TrcJRaZCvVETFzkF9nM=;
	b=B9L4X8b0LyO+EsipPNlntdT73kCehyLOksZWhkXn2oV7P0F+Ved1AuISyTTvnPNcGtyWjG
	8XlL+RXUSya0e5McIEbkE4PW3GrS5sJrP/asVGdHmreh428P0qqcwpiILMGhYRw6cSEf1u
	0+BBYX1DtoyacMRW0LuCzS0HBjP1ghg=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=PYWAJsv9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549160; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=r/E0X4kSUTS2znnNR4n/sGL9TrcJRaZCvVETFzkF9nM=;
	b=PYWAJsv9HFIHul3JqVAaDZ1tmb5ZgFhgRrgUYP2DuA6/twlMt+En73LQytp0UgOGc6Mzxc
	LtT4+HIzyCyzFix3Ejf73UZ82Qj/Reu/G/fumaSqvhhEzQuTPXWkBk6rktYD9NWuKgkLRj
	UVfkiTgNh/NBiRdXICFFtp8hYFF+m74=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 12/12] kexec: do the final kexec step
Date: Fri, 21 Mar 2025 10:24:51 +0100
Message-ID: <20250321092451.17309-13-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: EAAA721D79
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

With all kexec preparations done, activate the new kernel.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 kexec.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/kexec.c b/kexec.c
index 2db876e8..85b09959 100644
--- a/kexec.c
+++ b/kexec.c
@@ -169,6 +169,7 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
 {
     int ret;
     unsigned long *func;
+    void *kexec_page;
 
     ret = analyze_kernel(kernel, kernel_size);
     if ( ret )
@@ -192,6 +193,13 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
     if ( ret )
         goto err;
 
+    kexec_page = (void *)alloc_page();
+    if ( !kexec_page )
+    {
+        ret = ENOMEM;
+        goto err;
+    }
+
     for ( func = __kexec_array_start; func < __kexec_array_end; func++ )
     {
         ret = ((kexeccall_t)(*func))(false);
@@ -204,10 +212,15 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
         }
     }
 
-    /* Error exit. */
-    ret = ENOSYS;
+    /* Activate the new kernel. */
+    do_kexec(kexec_page);
+
+    /* do_kexec() shouldn't return, crash. */
+    BUG();
 
  err:
+    if ( kexec_page )
+        free_page(kexec_page);
     change_readonly(true);
     unreserve_memory_below();
     kexec_move_used_pages_undo();
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:30:36 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:30:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923503.1327018 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYi4-0001jt-8M; Fri, 21 Mar 2025 09:30:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923503.1327018; Fri, 21 Mar 2025 09:30:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYi4-0001jm-5Q; Fri, 21 Mar 2025 09:30:36 +0000
Received: by outflank-mailman (input) for mailman id 923503;
 Fri, 21 Mar 2025 09:30:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdE-0005bg-80
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:36 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 70649efb-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:33 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 0B6241FB6B;
 Fri, 21 Mar 2025 09:25:33 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D09D6139AA;
 Fri, 21 Mar 2025 09:25:32 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id L3M3MYww3WcvGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:32 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 70649efb-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549133; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=s0cAXUGvY2JO8hs7cJ+YxtNj8pT0pZocSXr5L9ANRiA=;
	b=QtBribMyufGB5ILmwzr6caAIVoFJ8uifU4I8dk5hYcJ+b5HF1AbZ1gNeKOvmfgnXIVh+pi
	bi4Fv7jSzJ6L8BMTQIac01o9mZi9obMdQmEexOfhSNhW2DDWAwxat/q3wOsTyQ5HIGlZ/O
	c/NDQDexEZMk7sPqfRLAgcH/7ayr2PA=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=QtBribMy
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549133; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=s0cAXUGvY2JO8hs7cJ+YxtNj8pT0pZocSXr5L9ANRiA=;
	b=QtBribMyufGB5ILmwzr6caAIVoFJ8uifU4I8dk5hYcJ+b5HF1AbZ1gNeKOvmfgnXIVh+pi
	bi4Fv7jSzJ6L8BMTQIac01o9mZi9obMdQmEexOfhSNhW2DDWAwxat/q3wOsTyQ5HIGlZ/O
	c/NDQDexEZMk7sPqfRLAgcH/7ayr2PA=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 07/12] kexec: build parameters for new kernel
Date: Fri, 21 Mar 2025 10:24:46 +0100
Message-ID: <20250321092451.17309-8-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 0B6241FB6B
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:dkim,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Build the parameters for the new kernel, consisting of the
hvm_start_info struct, the memory map and the command line.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/kexec.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/kexec.h  |  4 ++++
 kexec.c          | 13 ++++++++++-
 3 files changed, 74 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kexec.c b/arch/x86/kexec.c
index 98a478d3..6fc7d02d 100644
--- a/arch/x86/kexec.c
+++ b/arch/x86/kexec.c
@@ -200,6 +200,7 @@ bool kexec_arch_need_analyze_shdrs(void)
 
 static unsigned long kexec_param_loc;
 static unsigned int kexec_param_size;
+static unsigned long kexec_param_mem;
 
 void kexec_set_param_loc(const char *cmdline)
 {
@@ -212,4 +213,61 @@ void kexec_set_param_loc(const char *cmdline)
     kexec_last_addr += kexec_param_size;
     kexec_last_addr = round_pgup(kexec_last_addr);
 }
+
+int kexec_get_entry(const char *cmdline)
+{
+    struct hvm_start_info *info;
+    struct hvm_memmap_table_entry *mmap;
+    unsigned int order;
+    unsigned int i;
+
+    if ( kernel_entry == ~0UL )
+        return ENOEXEC;
+
+    order = get_order(kexec_param_size);
+
+    kexec_param_mem = alloc_pages(order);
+    if ( !kexec_param_mem )
+        return ENOMEM;
+
+    info = (struct hvm_start_info *)kexec_param_mem;
+    memset(info, 0, sizeof(*info));
+    info->magic = XEN_HVM_START_MAGIC_VALUE;
+    info->version = 1;
+    info->cmdline_paddr = kexec_param_mem + sizeof(*info) +
+                          e820_entries * sizeof(struct hvm_memmap_table_entry);
+    info->memmap_paddr = kexec_param_mem + sizeof(*info);
+    info->memmap_entries = e820_entries;
+
+    mmap = (struct hvm_memmap_table_entry *)(info + 1);
+    for ( i = 0; i < e820_entries; i++ )
+    {
+        mmap->addr = e820_map[i].addr;
+        mmap->size = e820_map[i].size;
+        mmap->type = e820_map[i].type;
+        mmap++;
+    }
+
+    strcpy((char *)mmap, cmdline);
+
+    if ( kexec_add_action(KEXEC_COPY, to_virt(kexec_param_loc), info,
+                          kexec_param_size) )
+        return ENOSPC;
+
+    /* The call of the new kernel happens via the physical address! */
+    if ( kexec_add_action(KEXEC_CALL, (void *)kernel_entry,
+                          (void *)kexec_param_loc, 0) )
+        return ENOSPC;
+
+    return 0;
+}
+
+void kexec_get_entry_undo(void)
+{
+    if ( kexec_param_mem )
+    {
+        free_pages((void *)kexec_param_mem, get_order(kexec_param_size));
+        kexec_param_mem = 0;
+    }
+}
 #endif /* CONFIG_KEXEC */
diff --git a/include/kexec.h b/include/kexec.h
index 8a2b552f..7b103dea 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -45,4 +45,8 @@ bool kexec_arch_need_analyze_shdrs(void);
 /* Finalize parameter location and size. */
 void kexec_set_param_loc(const char *cmdline);
 
+/* Get entry point and parameter of new kernel. */
+int kexec_get_entry(const char *cmdline);
+void kexec_get_entry_undo(void);
+
 #endif /* _KEXEC_H */
diff --git a/kexec.c b/kexec.c
index 68457711..0ef8eb35 100644
--- a/kexec.c
+++ b/kexec.c
@@ -177,10 +177,21 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
 
     reserve_memory_below(kexec_last_addr);
 
+    ret = kexec_get_entry(cmdline);
+    if ( ret )
+    {
+        printk("kexec: ELF file of new kernel has no valid entry point\n");
+        goto err;
+    }
+
     /* Error exit. */
+    ret = ENOSYS;
+
+ err:
     unreserve_memory_below();
+    kexec_get_entry_undo();
 
-    return ENOSYS;
+    return ret;
 }
 EXPORT_SYMBOL(kexec);
 
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:30:46 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:30:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923526.1327073 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYiD-0003LI-V6; Fri, 21 Mar 2025 09:30:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923526.1327073; Fri, 21 Mar 2025 09:30:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYiD-0003L1-Py; Fri, 21 Mar 2025 09:30:45 +0000
Received: by outflank-mailman (input) for mailman id 923526;
 Fri, 21 Mar 2025 09:30:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYd2-0005O8-Fc
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:24 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 69b2e6ef-0636-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 10:25:23 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id CD99C1FB6B;
 Fri, 21 Mar 2025 09:25:21 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9E025139AA;
 Fri, 21 Mar 2025 09:25:21 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 3J3kJIEw3WcmGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:21 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 69b2e6ef-0636-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549121; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=az01uiRxZtSFbNJFwjD4ZM6qRoCac3SGJkFv8ewEX5o=;
	b=eTNNX0m1tYtAi5BKKmCwBN2rP24FpQKgSrmuEPgs6l5tTOSqsceo5LrQL2fOTHfRlM7Bu6
	3KTILh3e01B2TODpq+H7GMxFBTy5HuDzHFSRQ3VQ7EF1OwJ/uPCTmGQnwHEYSPUg4/f2UE
	uk5XR0ybcqN8VWHIK/FHFSWbx2JtP8c=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549121; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=az01uiRxZtSFbNJFwjD4ZM6qRoCac3SGJkFv8ewEX5o=;
	b=eTNNX0m1tYtAi5BKKmCwBN2rP24FpQKgSrmuEPgs6l5tTOSqsceo5LrQL2fOTHfRlM7Bu6
	3KTILh3e01B2TODpq+H7GMxFBTy5HuDzHFSRQ3VQ7EF1OwJ/uPCTmGQnwHEYSPUg4/f2UE
	uk5XR0ybcqN8VWHIK/FHFSWbx2JtP8c=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 05/12] kexec: finalize parameter location and size
Date: Fri, 21 Mar 2025 10:24:44 +0100
Message-ID: <20250321092451.17309-6-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Finalize the location and the size of the parameters for the new
kernel. This is needed in order to avoid allocating new memory in the
area occupied by the new kernel and parameters.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/kexec.c | 15 +++++++++++++++
 include/kexec.h  |  3 +++
 kexec.c          |  2 ++
 3 files changed, 20 insertions(+)

diff --git a/arch/x86/kexec.c b/arch/x86/kexec.c
index 2069f3c6..98a478d3 100644
--- a/arch/x86/kexec.c
+++ b/arch/x86/kexec.c
@@ -197,4 +197,19 @@ bool kexec_arch_need_analyze_shdrs(void)
 {
     return kernel_entry == ~0UL;
 }
+
+static unsigned long kexec_param_loc;
+static unsigned int kexec_param_size;
+
+void kexec_set_param_loc(const char *cmdline)
+{
+    kexec_param_size = sizeof(struct hvm_start_info);
+    kexec_param_size += e820_entries * sizeof(struct hvm_memmap_table_entry);
+    kexec_param_size += strlen(cmdline) + 1;
+
+    kexec_last_addr = (kexec_last_addr + 7) & ~7UL;
+    kexec_param_loc = kexec_last_addr;
+    kexec_last_addr += kexec_param_size;
+    kexec_last_addr = round_pgup(kexec_last_addr);
+}
 #endif /* CONFIG_KEXEC */
diff --git a/include/kexec.h b/include/kexec.h
index f54cbb90..8a2b552f 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -42,4 +42,7 @@ int kexec_arch_analyze_phdr(elf_ehdr *ehdr, elf_phdr *phdr);
 int kexec_arch_analyze_shdr(elf_ehdr *ehdr, elf_shdr *shdr);
 bool kexec_arch_need_analyze_shdrs(void);
 
+/* Finalize parameter location and size. */
+void kexec_set_param_loc(const char *cmdline);
+
 #endif /* _KEXEC_H */
diff --git a/kexec.c b/kexec.c
index 3ff4ea07..7e559994 100644
--- a/kexec.c
+++ b/kexec.c
@@ -173,6 +173,8 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
     if ( ret )
         return ret;
 
+    kexec_set_param_loc(cmdline);
+
     return ENOSYS;
 }
 EXPORT_SYMBOL(kexec);
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:30:46 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:30:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923529.1327077 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYiE-0003Ly-3d; Fri, 21 Mar 2025 09:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923529.1327077; Fri, 21 Mar 2025 09:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYiD-0003LM-So; Fri, 21 Mar 2025 09:30:45 +0000
Received: by outflank-mailman (input) for mailman id 923529;
 Fri, 21 Mar 2025 09:30:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYd6-0005O8-DG
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:28 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6d0ed014-0636-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 10:25:27 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 6B06B1FB6B;
 Fri, 21 Mar 2025 09:25:27 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3F8B4139AA;
 Fri, 21 Mar 2025 09:25:27 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id /TMLDocw3WcrGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:27 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d0ed014-0636-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549127; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=nAlkrmGl4CD2FgQ6p1TiH9XT/Lw2GB/CTlhJ+Z/qIes=;
	b=ucu+XUwaJKwhDdvrXJ1uGJw2Z7/vvxmQpFIshVqrXsnV/u/CZfeo67OOHOmzUf1NJmFqjX
	1ZT7sxHhlAnimSgU6qt8yNML8QR15/piuNAQmO68+bpSWO9InahZWxr9MkELS4yWchdFcS
	RLkrJcegzN7Hu85iCPqhveVtE+rDaQU=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=ucu+XUwa
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549127; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=nAlkrmGl4CD2FgQ6p1TiH9XT/Lw2GB/CTlhJ+Z/qIes=;
	b=ucu+XUwaJKwhDdvrXJ1uGJw2Z7/vvxmQpFIshVqrXsnV/u/CZfeo67OOHOmzUf1NJmFqjX
	1ZT7sxHhlAnimSgU6qt8yNML8QR15/piuNAQmO68+bpSWO9InahZWxr9MkELS4yWchdFcS
	RLkrJcegzN7Hu85iCPqhveVtE+rDaQU=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 06/12] kexec: reserve memory below boundary
Date: Fri, 21 Mar 2025 10:24:45 +0100
Message-ID: <20250321092451.17309-7-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6B06B1FB6B
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

In order to support kexec any memory used during copying the new
kernel to its final destination must not overlap with the destination
area.

In order to achieve that add a new interface allowing to mark all
allocatable memory below a specific physical address as not available.

This is done by walking through all chunks of the buddy allocator and
removing the chunks (or chunk parts) below the boundary. The removed
chunks are put into a list in order to be able to undo the operation
in case kexec is failing before doing any unrecoverable system
modifications.

Any pages freed located below the boundary need to go directly into
the list of reserved pages instead of the free pool.

Call the new function from kexec code.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 include/mm.h |  5 +++
 kexec.c      |  5 +++
 mm.c         | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 98 insertions(+), 1 deletion(-)

diff --git a/include/mm.h b/include/mm.h
index 4fc364ff..5775c3e1 100644
--- a/include/mm.h
+++ b/include/mm.h
@@ -57,6 +57,11 @@ unsigned long alloc_pages(int order);
 void free_pages(void *pointer, int order);
 #define free_page(p)    free_pages(p, 0)
 
+#ifdef CONFIG_KEXEC
+void reserve_memory_below(unsigned long boundary);
+void unreserve_memory_below(void);
+#endif
+
 static __inline__ int get_order(unsigned long size)
 {
     int order;
diff --git a/kexec.c b/kexec.c
index 7e559994..68457711 100644
--- a/kexec.c
+++ b/kexec.c
@@ -175,6 +175,11 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
 
     kexec_set_param_loc(cmdline);
 
+    reserve_memory_below(kexec_last_addr);
+
+    /* Error exit. */
+    unreserve_memory_below();
+
     return ENOSYS;
 }
 EXPORT_SYMBOL(kexec);
diff --git a/mm.c b/mm.c
index a5d3f5e5..9236db58 100644
--- a/mm.c
+++ b/mm.c
@@ -230,6 +230,84 @@ static void init_page_allocator(unsigned long min, unsigned long max)
     mm_alloc_bitmap_remap();
 }
 
+#ifdef CONFIG_KEXEC
+static chunk_head_t *reserved_chunks;
+static unsigned long boundary_pfn;
+
+static void free_pages_below(void *pointer, unsigned int order)
+{
+    unsigned long pfn_s, pfn;
+    chunk_head_t *ch = pointer;
+
+    pfn_s = virt_to_pfn(ch);
+
+    if ( pfn_s + (1UL << order) <= boundary_pfn )
+    {
+        /* Put complete chunk into reserved list. */
+        ch->level = order;
+        ch->next = reserved_chunks;
+        reserved_chunks = ch;
+    }
+    else
+    {
+        /* Put pages below boundary into reserved list. */
+        for ( pfn = pfn_s; pfn < boundary_pfn; pfn++ )
+        {
+            chunk_head_t *ch_res = pfn_to_virt(pfn);
+
+            ch_res->level = 0;
+            ch_res->next = reserved_chunks;
+            reserved_chunks = ch_res;
+        }
+
+        /* Return pages above boundary to free pool again. */
+        for ( ; pfn < pfn_s + (1UL << order); pfn++ )
+            free_pages(pfn_to_virt(pfn), 0);
+    }
+}
+
+void reserve_memory_below(unsigned long boundary)
+{
+    unsigned long pfn;
+    unsigned int order;
+    chunk_head_t *ch;
+
+    ASSERT(!boundary_pfn);
+    boundary_pfn = PHYS_PFN(boundary);
+
+    for ( order = 0; order < FREELIST_SIZE; order++ )
+    {
+        for ( ch = free_list[order].next; !FREELIST_EMPTY(ch); ch = ch->next )
+        {
+            pfn = virt_to_pfn(ch);
+            if ( pfn >= boundary_pfn )
+                continue;
+
+            /* Dequeue from this level, at least parts will be reserved. */
+            dequeue_elem(ch);
+            /* Mark all as allocated, pieces above boundary will be returned. */
+            map_alloc(pfn, 1UL << ch->level);
+
+            free_pages_below(ch, ch->level);
+        }
+    }
+}
+
+void unreserve_memory_below(void)
+{
+    chunk_head_t *ch;
+
+    boundary_pfn = 0;
+
+    while ( reserved_chunks )
+    {
+        ch = reserved_chunks;
+        reserved_chunks = ch->next;
+        free_pages(ch, ch->level);
+    }
+}
+#endif /* CONFIG_KEXEC */
+
 /* Allocate 2^@order contiguous pages. Returns a VIRTUAL address. */
 unsigned long alloc_pages(int order)
 {
@@ -279,10 +357,19 @@ EXPORT_SYMBOL(alloc_pages);
 void free_pages(void *pointer, int order)
 {
     chunk_head_t *freed_ch, *to_merge_ch;
+    unsigned long pfn = virt_to_pfn(pointer);
     unsigned long mask;
 
+#ifdef CONFIG_KEXEC
+    if ( pfn < boundary_pfn )
+    {
+        free_pages_below(pointer, order);
+        return;
+    }
+#endif
+
     /* First free the chunk */
-    map_free(virt_to_pfn(pointer), 1UL << order);
+    map_free(pfn, 1UL << order);
 
     /* Create free chunk */
     freed_ch = (chunk_head_t *)pointer;
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:31:12 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:31:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923584.1327081 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYie-0004ms-4g; Fri, 21 Mar 2025 09:31:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923584.1327081; Fri, 21 Mar 2025 09:31:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYie-0004mi-13; Fri, 21 Mar 2025 09:31:12 +0000
Received: by outflank-mailman (input) for mailman id 923584;
 Fri, 21 Mar 2025 09:31:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdT-0005bg-Ii
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:51 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7a6d595c-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:50 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id CEBA621B2C;
 Fri, 21 Mar 2025 09:25:49 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A30A0139AA;
 Fri, 21 Mar 2025 09:25:49 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id MTRaJp0w3WdYGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:49 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a6d595c-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549149; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jRl2WQrPM47yD+AI8wwwhvNT+l4iLc6RLY7/18FmBWM=;
	b=g7ldaqdNgS8V2/ZT0oYPT4jSVMYntY2X/qr2JYWIKjeT7roT8nKxrA2oNV9ir6E5pGIZLU
	66flxxbSsyJyQVnvRVUnUqIEAmy2e9IjziIE1ah77FuCrQAz9mp9eoA8AWU85618gIMGcy
	UcvWtvZTTde+MaQ/GGsBfrFg+DKDB5E=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=g7ldaqdN
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549149; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jRl2WQrPM47yD+AI8wwwhvNT+l4iLc6RLY7/18FmBWM=;
	b=g7ldaqdNgS8V2/ZT0oYPT4jSVMYntY2X/qr2JYWIKjeT7roT8nKxrA2oNV9ir6E5pGIZLU
	66flxxbSsyJyQVnvRVUnUqIEAmy2e9IjziIE1ah77FuCrQAz9mp9eoA8AWU85618gIMGcy
	UcvWtvZTTde+MaQ/GGsBfrFg+DKDB5E=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 10/12] kexec: switch read-only area to be writable again
Date: Fri, 21 Mar 2025 10:24:49 +0100
Message-ID: <20250321092451.17309-11-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: CEBA621B2C
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

In order to allow writing the new kernel, make the readonly area
covering current kernel text writable again.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 kexec.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kexec.c b/kexec.c
index 16a0030a..2992f58f 100644
--- a/kexec.c
+++ b/kexec.c
@@ -184,6 +184,8 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
         goto err;
     }
 
+    change_readonly(false);
+
     ret = kexec_move_used_pages(kexec_last_addr, (unsigned long)kernel,
                                 kernel_size);
     if ( ret )
@@ -193,6 +195,7 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
     ret = ENOSYS;
 
  err:
+    change_readonly(true);
     unreserve_memory_below();
     kexec_move_used_pages_undo();
     kexec_get_entry_undo();
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:31:21 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:31:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923595.1327094 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYin-0005Dy-Sq; Fri, 21 Mar 2025 09:31:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923595.1327094; Fri, 21 Mar 2025 09:31:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYin-0005Av-NN; Fri, 21 Mar 2025 09:31:21 +0000
Received: by outflank-mailman (input) for mailman id 923595;
 Fri, 21 Mar 2025 09:31:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdP-0005bg-9G
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:47 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7714b87f-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:44 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 4A04421D71;
 Fri, 21 Mar 2025 09:25:44 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 10EE3139AA;
 Fri, 21 Mar 2025 09:25:44 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id LdmYApgw3WdQGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:44 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7714b87f-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549144; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Uw6HD4PFeDL/Du0d7ozu2XDJH6Lx8FoCcaVCEavvgsw=;
	b=T8bNVE7BC+niMVLplTgoyt2dkyN3fAdaEfAlpfAl/HojQhGS/LVzEO4bKYXydfEvftUhYO
	4k8pXP4fHkll6f8mOucqCJx4CP+I2SmVc8Mb8oDSExJHiY/hf9PyS6ZHzuI2rsOM0GeBgj
	JGIm570vSzUO++jiolhm92AXIio8haM=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549144; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Uw6HD4PFeDL/Du0d7ozu2XDJH6Lx8FoCcaVCEavvgsw=;
	b=T8bNVE7BC+niMVLplTgoyt2dkyN3fAdaEfAlpfAl/HojQhGS/LVzEO4bKYXydfEvftUhYO
	4k8pXP4fHkll6f8mOucqCJx4CP+I2SmVc8Mb8oDSExJHiY/hf9PyS6ZHzuI2rsOM0GeBgj
	JGIm570vSzUO++jiolhm92AXIio8haM=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 09/12] mm: change set_readonly() to change_readonly()
Date: Fri, 21 Mar 2025 10:24:48 +0100
Message-ID: <20250321092451.17309-10-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Rename set_readonly() to change_readonly() and add a parameter
specifying whether it should set the kernel to readonly or to writable.
At the same time move the boundary setting from the only caller into
the function itself, avoiding the need to use the same boundaries in
future, when it will be called to set the kernel to writable again.
Make the function globally visible in order to allow calling it from
kexec coding later.

Merge clear_bootstrap() into change_readonly() and undo its setting of
page 0 to invalid when setting the kernel writable.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/mm.c | 111 +++++++++++++++++++++++++++-----------------------
 include/mm.h  |   3 ++
 2 files changed, 64 insertions(+), 50 deletions(-)

diff --git a/arch/x86/mm.c b/arch/x86/mm.c
index a71eb192..f4419d95 100644
--- a/arch/x86/mm.c
+++ b/arch/x86/mm.c
@@ -405,17 +405,19 @@ static void build_pagetable(unsigned long *start_pfn, unsigned long *max_pfn)
  */
 extern struct shared_info shared_info;
 
-struct set_readonly_par {
+struct change_readonly_par {
     unsigned long etext;
 #ifdef CONFIG_PARAVIRT
     unsigned int count;
 #endif
+    bool readonly;
 };
 
-static int set_readonly_func(unsigned long va, unsigned int lvl, bool is_leaf,
-                             pgentry_t *pte, void *par)
+static int change_readonly_func(unsigned long va, unsigned int lvl,
+                                bool is_leaf, pgentry_t *pte, void *par)
 {
-    struct set_readonly_par *ro = par;
+    struct change_readonly_par *ro = par;
+    pgentry_t newval;
 
     if ( !is_leaf )
         return 0;
@@ -429,9 +431,11 @@ static int set_readonly_func(unsigned long va, unsigned int lvl, bool is_leaf,
         return 0;
     }
 
+    newval = ro->readonly ? (*pte & ~_PAGE_RW) : (*pte | _PAGE_RW);
+
 #ifdef CONFIG_PARAVIRT
     mmu_updates[ro->count].ptr = virt_to_mach(pte);
-    mmu_updates[ro->count].val = *pte & ~_PAGE_RW;
+    mmu_updates[ro->count].val = newval;
     ro->count++;
 
     if ( ro->count == L1_PAGETABLE_ENTRIES )
@@ -442,7 +446,7 @@ static int set_readonly_func(unsigned long va, unsigned int lvl, bool is_leaf,
          ro->count = 0;
     }
 #else
-    *pte &= ~_PAGE_RW;
+    *pte = newval;
 #endif
 
     return 0;
@@ -463,23 +467,6 @@ static void tlb_flush(void)
 }
 #endif
 
-static void set_readonly(void *text, void *etext)
-{
-    struct set_readonly_par setro = { .etext = (unsigned long)etext };
-    unsigned long start_address = PAGE_ALIGN((unsigned long)text);
-
-    printk("setting %p-%p readonly\n", text, etext);
-    walk_pt(start_address, setro.etext, set_readonly_func, &setro);
-
-#ifdef CONFIG_PARAVIRT
-    if ( setro.count &&
-         HYPERVISOR_mmu_update(mmu_updates, setro.count, NULL, DOMID_SELF) < 0)
-        BUG();
-#endif
-
-    tlb_flush();
-}
-
 /*
  * get the PTE for virtual address va if it exists. Otherwise NULL.
  */
@@ -508,6 +495,51 @@ static pgentry_t *get_pgt(unsigned long va)
     return tab;
 }
 
+void change_readonly(bool readonly)
+{
+    struct change_readonly_par ro = {
+        .etext = (unsigned long)&_erodata,
+        .readonly = readonly,
+    };
+    unsigned long start_address = PAGE_ALIGN((unsigned long)&_text);
+#ifdef CONFIG_PARAVIRT
+    pte_t nullpte = { };
+    int rc;
+#else
+    pgentry_t *pgt = get_pgt((unsigned long)&_text);
+#endif
+
+    if ( readonly )
+    {
+#ifdef CONFIG_PARAVIRT
+        if ( (rc = HYPERVISOR_update_va_mapping(0, nullpte, UVMF_INVLPG)) )
+            printk("Unable to unmap NULL page. rc=%d\n", rc);
+#else
+        *pgt = 0;
+        invlpg((unsigned long)&_text);
+#endif
+    }
+    else
+    {
+#ifdef CONFIG_PARAVIRT
+        /* No kexec support with PARAVIRT. */
+        BUG();
+#else
+        *pgt = L1_PROT;
+#endif
+    }
+
+    printk("setting %p-%p readonly\n", &_text, &_erodata);
+    walk_pt(start_address, ro.etext, change_readonly_func, &ro);
+
+#ifdef CONFIG_PARAVIRT
+    if ( ro.count &&
+         HYPERVISOR_mmu_update(mmu_updates, ro.count, NULL, DOMID_SELF) < 0)
+        BUG();
+#endif
+
+    tlb_flush();
+}
 
 /*
  * return a valid PTE for a given virtual address. If PTE does not exist,
@@ -789,31 +821,6 @@ int unmap_frames(unsigned long va, unsigned long num_frames)
 }
 EXPORT_SYMBOL(unmap_frames);
 
-/*
- * Clear some of the bootstrap memory
- */
-static void clear_bootstrap(void)
-{
-#ifdef CONFIG_PARAVIRT
-    pte_t nullpte = { };
-    int rc;
-#else
-    pgentry_t *pgt;
-#endif
-
-    /* Use first page as the CoW zero page */
-    memset(&_text, 0, PAGE_SIZE);
-    mfn_zero = virt_to_mfn((unsigned long) &_text);
-#ifdef CONFIG_PARAVIRT
-    if ( (rc = HYPERVISOR_update_va_mapping(0, nullpte, UVMF_INVLPG)) )
-        printk("Unable to unmap NULL page. rc=%d\n", rc);
-#else
-    pgt = get_pgt((unsigned long)&_text);
-    *pgt = 0;
-    invlpg((unsigned long)&_text);
-#endif
-}
-
 #ifdef CONFIG_PARAVIRT
 void p2m_chk_pfn(unsigned long pfn)
 {
@@ -884,8 +891,12 @@ void arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p)
     printk("    max_pfn: %lx\n", max_pfn);
 
     build_pagetable(&start_pfn, &max_pfn);
-    clear_bootstrap();
-    set_readonly(&_text, &_erodata);
+
+    /* Prepare page 0 as CoW page. */
+    memset(&_text, 0, PAGE_SIZE);
+    mfn_zero = virt_to_mfn((unsigned long)&_text);
+
+    change_readonly(true);
 
     *start_pfn_p = start_pfn;
     *max_pfn_p = max_pfn;
diff --git a/include/mm.h b/include/mm.h
index 5775c3e1..0a16d56c 100644
--- a/include/mm.h
+++ b/include/mm.h
@@ -25,6 +25,7 @@
 #ifndef _MM_H_
 #define _MM_H_
 
+#include <stdbool.h>
 #if defined(__i386__)
 #include <xen/arch-x86_32.h>
 #elif defined(__x86_64__)
@@ -92,4 +93,6 @@ extern unsigned long heap, brk, heap_mapped, heap_end;
 int free_physical_pages(xen_pfn_t *mfns, int n);
 void fini_mm(void);
 
+void change_readonly(bool readonly);
+
 #endif /* _MM_H_ */
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:31:26 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:31:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923599.1327108 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYis-0005hr-SF; Fri, 21 Mar 2025 09:31:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923599.1327108; Fri, 21 Mar 2025 09:31:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYis-0005hn-P4; Fri, 21 Mar 2025 09:31:26 +0000
Received: by outflank-mailman (input) for mailman id 923599;
 Fri, 21 Mar 2025 09:31:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdZ-0005bg-9p
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:57 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7dc71e0b-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:55 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 6464821D73;
 Fri, 21 Mar 2025 09:25:55 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3A62B139AA;
 Fri, 21 Mar 2025 09:25:55 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id hQrTDKMw3WdiGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:55 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7dc71e0b-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HQe3NFl9NcYNQIAbCkFgkSlVK4W9Vi1C+SAHqrE0njI=;
	b=rVMNk08qj8xr248VPAaqoUDnb3UN031wvyAVRy62mdY6oL37SgxFKyxcUmYmDAY9GZkwL4
	UfoosWMhcQN4IeM7ERad686Tg8/QjFpJTEIEHZbD2XgI+4IMeh644EX5ilgUe7+1H6Ch/W
	YHJDLawq5zEnu3VCyqOLBcMApjkbyN0=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=rVMNk08q
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549155; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HQe3NFl9NcYNQIAbCkFgkSlVK4W9Vi1C+SAHqrE0njI=;
	b=rVMNk08qj8xr248VPAaqoUDnb3UN031wvyAVRy62mdY6oL37SgxFKyxcUmYmDAY9GZkwL4
	UfoosWMhcQN4IeM7ERad686Tg8/QjFpJTEIEHZbD2XgI+4IMeh644EX5ilgUe7+1H6Ch/W
	YHJDLawq5zEnu3VCyqOLBcMApjkbyN0=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 11/12] kexec: add kexec callback functionality
Date: Fri, 21 Mar 2025 10:24:50 +0100
Message-ID: <20250321092451.17309-12-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6464821D73
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:dkim,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Add a kexec_call() macro which will provide the capability to register
a function for being called when doing a kexec() call. The called
functions will be called with a boolean parameter "undo" indicating
whether a previous call needs to be undone due to a failure during
kexec().

The related loop to call all callbacks is added to kexec().

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/minios-x86.lds.S |  8 ++++++++
 arch/x86/mm.c             |  3 ++-
 include/kexec.h           |  6 ++++++
 kexec.c                   | 13 +++++++++++++
 4 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/arch/x86/minios-x86.lds.S b/arch/x86/minios-x86.lds.S
index 83ec41ce..35356b34 100644
--- a/arch/x86/minios-x86.lds.S
+++ b/arch/x86/minios-x86.lds.S
@@ -58,6 +58,14 @@ SECTIONS
         }
         PROVIDE (__fini_array_end = .);
 
+#if defined(CONFIG_KEXEC)
+        PROVIDE (__kexec_array_start = .);
+        .kexec_array : {
+                *(.kexec_array)
+        }
+        PROVIDE (__kexec_array_end = .);
+#endif
+
         .ctors : {
                 __CTOR_LIST__ = .;
                 *(.ctors)
diff --git a/arch/x86/mm.c b/arch/x86/mm.c
index f4419d95..26ede6f4 100644
--- a/arch/x86/mm.c
+++ b/arch/x86/mm.c
@@ -529,7 +529,8 @@ void change_readonly(bool readonly)
 #endif
     }
 
-    printk("setting %p-%p readonly\n", &_text, &_erodata);
+    printk("setting %p-%p %s\n", &_text, &_erodata,
+           readonly ? "readonly" : "writable");
     walk_pt(start_address, ro.etext, change_readonly_func, &ro);
 
 #ifdef CONFIG_PARAVIRT
diff --git a/include/kexec.h b/include/kexec.h
index 411fa013..b89c3000 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -18,6 +18,12 @@ struct kexec_action {
 
 extern char _kexec_start[], _kexec_end[];
 extern struct kexec_action kexec_actions[KEXEC_MAX_ACTIONS];
+extern unsigned long __kexec_array_start[], __kexec_array_end[];
+
+typedef int(*kexeccall_t)(bool undo);
+#define kexec_call(func)                                                   \
+    static kexeccall_t __kexeccall_##func __attribute__((__used__))        \
+                       __attribute__((__section__(".kexec_array"))) = func
 
 extern unsigned long kexec_last_addr;
 
diff --git a/kexec.c b/kexec.c
index 2992f58f..2db876e8 100644
--- a/kexec.c
+++ b/kexec.c
@@ -168,6 +168,7 @@ static int analyze_kernel(void *kernel, unsigned long size)
 int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
 {
     int ret;
+    unsigned long *func;
 
     ret = analyze_kernel(kernel, kernel_size);
     if ( ret )
@@ -191,6 +192,18 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
     if ( ret )
         goto err;
 
+    for ( func = __kexec_array_start; func < __kexec_array_end; func++ )
+    {
+        ret = ((kexeccall_t)(*func))(false);
+        if ( ret )
+        {
+            for ( func--; func >= __kexec_array_start; func-- )
+                ((kexeccall_t)(*func))(true);
+
+            goto err;
+        }
+    }
+
     /* Error exit. */
     ret = ENOSYS;
 
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:31:42 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:31:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923621.1327123 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYj8-0006r7-6Y; Fri, 21 Mar 2025 09:31:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923621.1327123; Fri, 21 Mar 2025 09:31:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYj8-0006qx-39; Fri, 21 Mar 2025 09:31:42 +0000
Received: by outflank-mailman (input) for mailman id 923621;
 Fri, 21 Mar 2025 09:31:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYdM-0005bg-8t
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:25:44 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 73ca5274-0636-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:25:39 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 9980E1FB6D;
 Fri, 21 Mar 2025 09:25:38 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 71747139AA;
 Fri, 21 Mar 2025 09:25:38 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id zVw7GpIw3WdHGQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:25:38 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73ca5274-0636-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549138; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Tll1MlN0K/PdIjHkU/c7azaHqaqB0dNTwcC3GeOaxx4=;
	b=jN/VqmWmxiDz7s9auX1iDheqDw71OvKlPxSIjsEk3qYOnK2cqbNGFEcpve6sIJ38kFLLZo
	ilvnyToRz2LBVsIQplXIAEuZ948/4JCKRkoMYp/2WGJWZWTUBxqForZYUwROq6ZSCKcqxO
	LPlm1TD1hnyDYppdLkkVL/2uLX9W014=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549138; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Tll1MlN0K/PdIjHkU/c7azaHqaqB0dNTwcC3GeOaxx4=;
	b=jN/VqmWmxiDz7s9auX1iDheqDw71OvKlPxSIjsEk3qYOnK2cqbNGFEcpve6sIJ38kFLLZo
	ilvnyToRz2LBVsIQplXIAEuZ948/4JCKRkoMYp/2WGJWZWTUBxqForZYUwROq6ZSCKcqxO
	LPlm1TD1hnyDYppdLkkVL/2uLX9W014=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 08/12] kexec: move used pages away for new kernel
Date: Fri, 21 Mar 2025 10:24:47 +0100
Message-ID: <20250321092451.17309-9-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Copying the new kexec kernel must not overwrite any pages still needed
during this process. Those are especially the GDT, IDT and page tables.

Move those to new allocated pages and update any related pointers.

In case the kexec process is cancelled later, don't undo any page table
moves, as the system can just be used with the new layout. By freeing
the original pages there is no memory leaking.

GDT and IDT should be reverted to their original locations, as their
original memory can't be freed due to not being whole pages.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/mm.c   | 126 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/kexec.h |   5 ++
 kexec.c         |   6 +++
 3 files changed, 137 insertions(+)

diff --git a/arch/x86/mm.c b/arch/x86/mm.c
index 3ba6d917..a71eb192 100644
--- a/arch/x86/mm.c
+++ b/arch/x86/mm.c
@@ -42,6 +42,7 @@
 #include <mini-os/paravirt.h>
 #include <mini-os/types.h>
 #include <mini-os/lib.h>
+#include <mini-os/kexec.h>
 #include <mini-os/xmalloc.h>
 #include <mini-os/e820.h>
 #include <xen/memory.h>
@@ -923,3 +924,128 @@ unsigned long map_frame_virt(unsigned long mfn)
     return addr;
 }
 EXPORT_SYMBOL(map_frame_virt);
+
+#ifdef CONFIG_KEXEC
+static unsigned long kexec_gdt;
+static unsigned long kexec_idt;
+
+static int move_pt(unsigned long va, unsigned int lvl, bool is_leaf,
+                   pgentry_t *pte, void *par)
+{
+    unsigned long boundary_pfn = *(unsigned long *)par;
+    unsigned long pfn;
+    void *old_pg, *new_pg;
+
+    if ( is_leaf )
+        return 0;
+
+    pfn = (lvl == PAGETABLE_LEVELS + 1) ? PHYS_PFN(*(unsigned long *)pte)
+                                        : pte_to_mfn(*pte);
+    if ( pfn >= boundary_pfn )
+        return 0;
+
+    new_pg = (void *)alloc_page();
+    if ( !new_pg )
+        return ENOMEM;
+    old_pg = pfn_to_virt(pfn);
+    memcpy(new_pg, old_pg, PAGE_SIZE);
+    if ( lvl == PAGETABLE_LEVELS + 1 )
+        *(pgentry_t **)pte = new_pg;
+    else
+        *pte = ((unsigned long)new_pg & PAGE_MASK) | ptdata[lvl].prot;
+
+    tlb_flush();
+
+    free_page(old_pg);
+
+    return 0;
+}
+
+static int move_leaf(unsigned long va, unsigned int lvl, bool is_leaf,
+                     pgentry_t *pte, void *par)
+{
+    unsigned long boundary_pfn = *(unsigned long *)par;
+    unsigned long pfn;
+    void *old_pg, *new_pg;
+
+    if ( !is_leaf )
+        return 0;
+
+    /* No large page support, all pages must be valid. */
+    if ( (*pte & _PAGE_PSE) || !(*pte & _PAGE_PRESENT) )
+        return EINVAL;
+
+    pfn = pte_to_mfn(*pte);
+    if ( pfn >= boundary_pfn )
+        return 0;
+
+    new_pg = (void *)alloc_page();
+    if ( !new_pg )
+        return ENOMEM;
+    old_pg = pfn_to_virt(pfn);
+    memcpy(new_pg, old_pg, PAGE_SIZE);
+    *pte = ((unsigned long)new_pg & PAGE_MASK) | ptdata[lvl].prot;
+
+    invlpg(va);
+
+    free_page(old_pg);
+
+    return 0;
+}
+
+int kexec_move_used_pages(unsigned long boundary, unsigned long kernel,
+                          unsigned long kernel_size)
+{
+    int ret;
+    unsigned long boundary_pfn = PHYS_PFN(boundary);
+
+    kexec_gdt = alloc_page();
+    if ( !kexec_gdt )
+        return ENOMEM;
+    memcpy((char *)kexec_gdt, &gdt, sizeof(gdt));
+    gdt_ptr.base = kexec_gdt;
+    asm volatile("lgdt %0" : : "m" (gdt_ptr));
+
+    kexec_idt = alloc_page();
+    if ( !kexec_idt )
+        return ENOMEM;
+    memcpy((char *)kexec_idt, &idt, sizeof(idt));
+    idt_ptr.base = kexec_idt;
+    asm volatile("lidt %0" : : "m" (idt_ptr));
+
+    /* Top level page table needs special handling. */
+    ret = move_pt(0, PAGETABLE_LEVELS + 1, false, (pgentry_t *)(&pt_base),
+                  &boundary_pfn);
+    if ( ret )
+        return ret;
+    ret = walk_pt(0, ~0UL, move_pt, &boundary_pfn);
+    if ( ret )
+        return ret;
+
+    /* Move new kernel image pages. */
+    ret = walk_pt(kernel, kernel + kernel_size - 1, move_leaf, &boundary_pfn);
+    if ( ret )
+        return ret;
+
+    return 0;
+}
+
+void kexec_move_used_pages_undo(void)
+{
+    if ( kexec_gdt )
+    {
+        gdt_ptr.base = (unsigned long)&gdt;
+        asm volatile("lgdt %0" : : "m" (gdt_ptr));
+        free_page((void *)kexec_gdt);
+        kexec_gdt = 0;
+    }
+
+    if ( kexec_idt )
+    {
+        idt_ptr.base = (unsigned long)&idt;
+        asm volatile("lidt %0" : : "m" (idt_ptr));
+        free_page((void *)kexec_idt);
+        kexec_idt = 0;
+    }
+}
+#endif
diff --git a/include/kexec.h b/include/kexec.h
index 7b103dea..411fa013 100644
--- a/include/kexec.h
+++ b/include/kexec.h
@@ -49,4 +49,9 @@ void kexec_set_param_loc(const char *cmdline);
 int kexec_get_entry(const char *cmdline);
 void kexec_get_entry_undo(void);
 
+/* Move used pages away from new kernel area. */
+int kexec_move_used_pages(unsigned long boundary, unsigned long kernel,
+                          unsigned long kernel_size);
+void kexec_move_used_pages_undo(void);
+
 #endif /* _KEXEC_H */
diff --git a/kexec.c b/kexec.c
index 0ef8eb35..16a0030a 100644
--- a/kexec.c
+++ b/kexec.c
@@ -184,11 +184,17 @@ int kexec(void *kernel, unsigned long kernel_size, const char *cmdline)
         goto err;
     }
 
+    ret = kexec_move_used_pages(kexec_last_addr, (unsigned long)kernel,
+                                kernel_size);
+    if ( ret )
+        goto err;
+
     /* Error exit. */
     ret = ENOSYS;
 
  err:
     unreserve_memory_below();
+    kexec_move_used_pages_undo();
     kexec_get_entry_undo();
 
     return ret;
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:40:37 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:40:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923664.1327137 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYrj-0000lX-3v; Fri, 21 Mar 2025 09:40:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923664.1327137; Fri, 21 Mar 2025 09:40:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYrj-0000lP-0F; Fri, 21 Mar 2025 09:40:35 +0000
Received: by outflank-mailman (input) for mailman id 923664;
 Fri, 21 Mar 2025 09:40:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYjL-00033C-2F
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:31:55 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 539eef86-0637-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 10:31:54 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 2E21D21C59;
 Fri, 21 Mar 2025 09:31:54 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id F3949139AA;
 Fri, 21 Mar 2025 09:31:53 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id CuQCOgky3WdaGwAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:31:53 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 539eef86-0637-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549514; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=w41cQJdYbcNGHG3cF8bDLMo1yZi7in/akXd7iDnt7OY=;
	b=BovOjo2YehkiVA2nJhh3+0LzxX51+jeHs44jv7sSuOuo1ch7kOdYpouLds5CA7wssg3IbD
	UEjuIbBRwX5ajG/4OUMUBLXbe6pvdbwMqzFwgiYMkd6VZ9qcqPA/cDZ8XxkErXVFf4UdDX
	ra4yX7rhwg7wqPx+LWH1d5wj4w1W7PM=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549514; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=w41cQJdYbcNGHG3cF8bDLMo1yZi7in/akXd7iDnt7OY=;
	b=BovOjo2YehkiVA2nJhh3+0LzxX51+jeHs44jv7sSuOuo1ch7kOdYpouLds5CA7wssg3IbD
	UEjuIbBRwX5ajG/4OUMUBLXbe6pvdbwMqzFwgiYMkd6VZ9qcqPA/cDZ8XxkErXVFf4UdDX
	ra4yX7rhwg7wqPx+LWH1d5wj4w1W7PM=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
Date: Fri, 21 Mar 2025 10:31:44 +0100
Message-ID: <20250321093145.17882-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321093145.17882-1-jgross@suse.com>
References: <20250321093145.17882-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -6.80
X-Spamd-Result: default: False [-6.80 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a file operations fstat hook to the 9pfs frontend.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
V2:
- or file access mode into st_mode (Jason Andryuk)
---
 9pfront.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/9pfront.c b/9pfront.c
index 1741d600..7257a07e 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -85,6 +85,8 @@ struct file_9pfs {
 
 #define P9_QID_SIZE    13
 
+#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
+
 struct p9_header {
     uint32_t size;
     uint8_t cmd;
@@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
     return ret;
 }
 
+static int fstat_9pfs(struct file *file, struct stat *buf)
+{
+    struct file_9pfs *f9pfs = file->filedata;
+    struct p9_stat stat;
+    int ret;
+
+    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
+    if ( ret )
+    {
+        errno = EIO;
+        return -1;
+    }
+
+    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
+    buf->st_mode |= stat.mode & 0777;
+    buf->st_atime = stat.atime;
+    buf->st_mtime = stat.mtime;
+    buf->st_size = stat.length;
+    buf->st_uid = stat.n_uid;
+    buf->st_gid = stat.n_gid;
+
+    free_stat(&stat);
+
+    return 0;
+}
+
 static int close_9pfs(struct file *file)
 {
     struct file_9pfs *f9pfs = file->filedata;
@@ -1296,6 +1324,7 @@ static const struct file_ops ops_9pfs = {
     .read = read_9pfs,
     .write = write_9pfs,
     .close = close_9pfs,
+    .fstat = fstat_9pfs,
 };
 
 __attribute__((constructor))
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:40:44 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:40:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923671.1327140 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYrs-0000uE-4b; Fri, 21 Mar 2025 09:40:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923671.1327140; Fri, 21 Mar 2025 09:40:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYrs-0000u7-28; Fri, 21 Mar 2025 09:40:44 +0000
Received: by outflank-mailman (input) for mailman id 923671;
 Fri, 21 Mar 2025 09:40:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYjQ-00033C-O6
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:32:00 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 56f5b666-0637-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 10:32:00 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id C2DB321D86;
 Fri, 21 Mar 2025 09:31:59 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 88C62139AA;
 Fri, 21 Mar 2025 09:31:59 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id I5MMIA8y3WdhGwAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:31:59 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 56f5b666-0637-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549519; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=4BpHAguWxlsmt8Ud6JDitYmvVQmBcsNG/Ch0rgSbdso=;
	b=OqPlJU8F4c0C330u9Hsn9Yvosf8dzfLHgTLimxmL++mnNla64dNaz46hrNkc0DeKc2SRh2
	3tcb7m3eC2sX0+9gHkxED3FrX/S+upqcRQbCT+imI9FuTM4yEFhAf0hqlXNKUD8rF2z3kx
	q+GXRx0UFrHaawge42lz8IipdG/E6iA=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549519; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=4BpHAguWxlsmt8Ud6JDitYmvVQmBcsNG/Ch0rgSbdso=;
	b=OqPlJU8F4c0C330u9Hsn9Yvosf8dzfLHgTLimxmL++mnNla64dNaz46hrNkc0DeKc2SRh2
	3tcb7m3eC2sX0+9gHkxED3FrX/S+upqcRQbCT+imI9FuTM4yEFhAf0hqlXNKUD8rF2z3kx
	q+GXRx0UFrHaawge42lz8IipdG/E6iA=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [MINI-OS PATCH v2 2/2] 9pfs: add lseek file operation hook
Date: Fri, 21 Mar 2025 10:31:45 +0100
Message-ID: <20250321093145.17882-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250321093145.17882-1-jgross@suse.com>
References: <20250321093145.17882-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -6.80
X-Spamd-Result: default: False [-6.80 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Flag: NO
X-Spam-Level: 

Add a file operations lseek hook to the 9pfs frontend. Just use the
lseek_default() implementation.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 9pfront.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/9pfront.c b/9pfront.c
index 7257a07e..8bf3a91e 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -1325,6 +1325,7 @@ static const struct file_ops ops_9pfs = {
     .write = write_9pfs,
     .close = close_9pfs,
     .fstat = fstat_9pfs,
+    .lseek = lseek_default,
 };
 
 __attribute__((constructor))
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 09:41:39 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 09:41:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.923734.1327164 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYsl-0003Fu-Me; Fri, 21 Mar 2025 09:41:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 923734.1327164; Fri, 21 Mar 2025 09:41:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvYsl-0003Fq-K4; Fri, 21 Mar 2025 09:41:39 +0000
Received: by outflank-mailman (input) for mailman id 923734;
 Fri, 21 Mar 2025 09:41:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvYjH-000356-43
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 09:31:51 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 50b180e2-0637-11f0-9ffa-bf95429c2676;
 Fri, 21 Mar 2025 10:31:49 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id A41C721D84;
 Fri, 21 Mar 2025 09:31:48 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 61F6C139AA;
 Fri, 21 Mar 2025 09:31:48 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id ej9tFgQy3WdUGwAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 21 Mar 2025 09:31:48 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50b180e2-0637-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549508; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=rI2ieuGEA6udzp8fMeYy10hSLLdHyPPXbjrCTmqils8=;
	b=YtFzqt/iQ7fECJZMX4n5dQLvSCjaMyKihRjazv1Jg642rAru2yf+OwAHv0TqOOYHO9rK1e
	+FswF0SmeVEdu0EqUrQrIA67dALheZOBnPO2I5PiCklIKCzH1BsRIW4G2nBNMQu9bwoJ0P
	X8AY9S6u10QZSTU9Bgc2dErnZBEgxK0=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742549508; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=rI2ieuGEA6udzp8fMeYy10hSLLdHyPPXbjrCTmqils8=;
	b=YtFzqt/iQ7fECJZMX4n5dQLvSCjaMyKihRjazv1Jg642rAru2yf+OwAHv0TqOOYHO9rK1e
	+FswF0SmeVEdu0EqUrQrIA67dALheZOBnPO2I5PiCklIKCzH1BsRIW4G2nBNMQu9bwoJ0P
	X8AY9S6u10QZSTU9Bgc2dErnZBEgxK0=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH v2 0/2] 9pfs: add some file operation hooks
Date: Fri, 21 Mar 2025 10:31:43 +0100
Message-ID: <20250321093145.17882-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.77 / 50.00];
	BAYES_HAM(-2.97)[99.88%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid]
X-Spam-Score: -2.77
X-Spam-Flag: NO

For being able to store the Xenstore state in preparation of a live
update operation, 9pfront is needing support for fstat and lseek.

Changes in V2:
- addressed comment for patch 1

Juergen Gross (2):
  9pfs: add fstat file operation hook
  9pfs: add lseek file operation hook

 9pfront.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Fri Mar 21 13:52:02 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 13:52:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924019.1327379 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvcn3-0007Lx-Hs; Fri, 21 Mar 2025 13:52:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924019.1327379; Fri, 21 Mar 2025 13:52:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvcn3-0007Ln-Ec; Fri, 21 Mar 2025 13:52:01 +0000
Received: by outflank-mailman (input) for mailman id 924019;
 Fri, 21 Mar 2025 13:51:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=Z6G0=WI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1tvcn1-00077a-5v
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 13:51:59 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a76318f2-065b-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 14:51:57 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4394036c0efso11840705e9.2
 for <minios-devel@lists.xenproject.org>; Fri, 21 Mar 2025 06:51:57 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43d4fdbd348sm27340395e9.39.2025.03.21.06.51.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 21 Mar 2025 06:51:55 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a76318f2-065b-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742565116; x=1743169916; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=qv0VQ+NUrVd0gQgaN8Z4ekYOSShVij+HdMBj/Qw1Kz0=;
        b=XjRpNiukUqZsV+Q2yiGN3Z1ViqjDQ2hAv32gwE934C6hO2AWoiw1zDYo0mmPURA2AZ
         oz7iCxMB54MuyNBtsiTDavpazYMzH+m1i+Yj/YqJDE93X09PaD0jjK5In84EbuzMkj6z
         XFXNEo4sbvmyoiiXfZksExcUWJOUMkmfL4I0gBH4Js92SDNrJkY7EUFR09vbMXXnaGaz
         x/3YRwyW6xck/32NKQzyvTSZihtTYkP8Ris8aj3mwY0pX3zJKZgpdiFYTwnPgq69Lu3Y
         gpKPwzk/SMypOTlTaZJudtnuAhCUiVBy1RIJAyP6zOyuT61McPdRlyRli4bkGnUD8ZKD
         EfKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742565116; x=1743169916;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=qv0VQ+NUrVd0gQgaN8Z4ekYOSShVij+HdMBj/Qw1Kz0=;
        b=v9OaKrn+8WpSrQv71lyeuA+XQp0xKlrFZKEGUTSUg0iYGJATYxDdXgvQ5zpWLAu6x4
         +mArN/V46lzdW4zC3a0Brn9DXiBpJaX3bIUwqclt8Z2fVzRjq+zbHlqXrytpsXqoHWAI
         EO3WN2rW/hfuExSLYpp7dA7MtvFZokWL5L8SFEYIv5VIe3NJZKbvpx/stZNAMqtc4hV8
         QcQXJ/GawpIdu0nNqZAIFp64wDhjAsVldv4MSCcKy1BJVuZYLjWOPuaKb188XxdGykml
         6tEIvZZJrOFFdRZgta0sqyNT/5qMrUDm3n5XOGppNUz3G1QtzRbMTOan6s2zlWe+C2Zg
         /eIQ==
X-Forwarded-Encrypted: i=1; AJvYcCWZ5JQsEtjYugW9+74bdHodwp/OQVKXIZY4BKOqZ6/Myx+CZ1NwO7sTruh/VT0P7wmW6p2gShJp4o5ZbJ8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxHQ2J3dYCewjXJw5kiJmkAXecV6DHiEVrS6lIW8tJLvkYDb8pg
	o4K5I/YfaJFMcyNW5aIm058OJNCtdN5NoYxEGTnIbrOowLXA0xEB9zlDfaf37A==
X-Gm-Gg: ASbGncu6MfnKnQ/h4HsVKyXgdq1Ct8oNm+VSIKaWGlpvJtTmwYy2pmCTrY/gQIN6b+K
	M7SIWtDKLHkfxbfNWi0IZc3aEvJTrx4xpHKZ0CUbLp2nttdtJ+U6JDjDcaDMMw/xEYuz4l+UV8u
	YB8BO2P/phmcFyDN6GpVJ5vTTkHQYUxHtvO0Gt/Qc3SapVGb8HWMEMrv2JyeNZrVGO3/naisA0j
	IbjAZQiyOoT1qQI3Vs6R6Af1xOIIk9hbUv8zbY23GWx78S6ucBoG+Wo3I+h8VZg2i4KU7ihVwQs
	WVTg9+OrzVOb3gmP/IRSuNKAAXLrwoU50BUFwLQfCkkZDclvn6w5a43RajoaOLjzh8R/rpivNoI
	Z2nksKV7eA0+s2aLHyET9f1Q558brOA==
X-Google-Smtp-Source: AGHT+IGwJffDMk+z7JvUdeRZoNZ59XP81EO+sdu/u5/S5aDDUPhtnVThTTbOkHKxcDKxzEDF2b0Gew==
X-Received: by 2002:a05:600c:1989:b0:43c:fc04:6d34 with SMTP id 5b1f17b1804b1-43d50a318aamr28553245e9.20.1742565116109;
        Fri, 21 Mar 2025 06:51:56 -0700 (PDT)
Message-ID: <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
Date: Fri, 21 Mar 2025 14:51:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 03/12] add elf.h
To: Juergen Gross <jgross@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20250321092451.17309-1-jgross@suse.com>
 <20250321092451.17309-4-jgross@suse.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20250321092451.17309-4-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 21.03.2025 10:24, Juergen Gross wrote:
> Add some definitions for accessing an ELF file. Only the file header
> and the program header are needed.
> 
> The main source for those are elfstructs.h and libelf.h from the Xen
> tree. The license boiler plate of those files is being kept in the
> resulting header file.

Maybe the copying was a bit too literal.

> --- /dev/null
> +++ b/include/elf.h
> @@ -0,0 +1,340 @@
> +#ifndef __ELF_H__
> +#define __ELF_H__
> +/*
> + * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + * 3. The name of the author may not be used to endorse or promote products
> + *    derived from this software without specific prior written permission
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
> + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
> + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
> + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
> + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
> + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
> + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include <stdbool.h>
> +#include <mini-os/types.h>
> +
> +typedef uint32_t    Elf32_Addr;  /* Unsigned program address */
> +typedef uint32_t    Elf32_Off;   /* Unsigned file offset */
> +typedef uint16_t    Elf32_Half;  /* Unsigned medium integer */
> +typedef uint32_t    Elf32_Word;  /* Unsigned large integer */
> +
> +typedef uint64_t    Elf64_Addr;
> +typedef uint64_t    Elf64_Off;
> +typedef uint16_t    Elf64_Half;
> +typedef uint32_t    Elf64_Word;
> +typedef uint64_t    Elf64_Xword;
> +
> +/* Unique build id string format when using --build-id. */
> +#define NT_GNU_BUILD_ID 3
> +
> +/*
> + * e_ident[] identification indexes
> + * See http://www.caldera.com/developers/gabi/2000-07-17/ch4.eheader.html
> + */
> +#define EI_MAG0        0         /* file ID */
> +#define EI_MAG1        1         /* file ID */
> +#define EI_MAG2        2         /* file ID */
> +#define EI_MAG3        3         /* file ID */
> +#define EI_CLASS       4         /* file class */
> +#define EI_DATA        5         /* data encoding */
> +#define EI_VERSION     6         /* ELF header version */
> +#define EI_OSABI       7         /* OS/ABI ID */
> +#define EI_ABIVERSION  8         /* ABI version */
> +#define EI_PAD         9         /* start of pad bytes */
> +#define EI_NIDENT     16         /* Size of e_ident[] */
> +
> +/* e_ident[] magic number */
> +#define ELFMAG0        0x7f      /* e_ident[EI_MAG0] */
> +#define ELFMAG1        'E'       /* e_ident[EI_MAG1] */
> +#define ELFMAG2        'L'       /* e_ident[EI_MAG2] */
> +#define ELFMAG3        'F'       /* e_ident[EI_MAG3] */
> +#define ELFMAG         "\177ELF" /* magic */
> +#define SELFMAG        4         /* size of magic */
> +
> +/* e_ident[] file class */
> +#define ELFCLASSNONE   0         /* invalid */
> +#define ELFCLASS32     1         /* 32-bit objs */
> +#define ELFCLASS64     2         /* 64-bit objs */
> +#define ELFCLASSNUM    3         /* number of classes */
> +
> +/* e_ident[] data encoding */
> +#define ELFDATANONE    0         /* invalid */
> +#define ELFDATA2LSB    1         /* Little-Endian */
> +#define ELFDATA2MSB    2         /* Big-Endian */
> +#define ELFDATANUM     3         /* number of data encode defines */
> +
> +/* e_ident[] Operating System/ABI */
> +#define ELFOSABI_SYSV         0  /* UNIX System V ABI */
> +#define ELFOSABI_NONE         0  /* Same as ELFOSABI_SYSV */
> +#define ELFOSABI_HPUX         1  /* HP-UX operating system */
> +#define ELFOSABI_NETBSD       2  /* NetBSD */
> +#define ELFOSABI_LINUX        3  /* GNU/Linux */
> +#define ELFOSABI_HURD         4  /* GNU/Hurd */
> +#define ELFOSABI_86OPEN       5  /* 86Open common IA32 ABI */
> +#define ELFOSABI_SOLARIS      6  /* Solaris */
> +#define ELFOSABI_MONTEREY     7  /* Monterey */
> +#define ELFOSABI_IRIX         8  /* IRIX */
> +#define ELFOSABI_FREEBSD      9  /* FreeBSD */
> +#define ELFOSABI_TRU64       10  /* TRU64 UNIX */
> +#define ELFOSABI_MODESTO     11  /* Novell Modesto */
> +#define ELFOSABI_OPENBSD     12  /* OpenBSD */
> +#define ELFOSABI_ARM         97  /* ARM */
> +#define ELFOSABI_STANDALONE 255  /* Standalone (embedded) application */

While I'm happy to see Modesto mentioned in yet another places, I don't
think you need the majority of these?

> +/* e_ident */
> +#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
> +                      (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
> +                      (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
> +                      (ehdr).e_ident[EI_MAG3] == ELFMAG3)
> +
> +/* e_flags */
> +#define EF_ARM_EABI_MASK    0xff000000
> +#define EF_ARM_EABI_UNKNOWN 0x00000000
> +#define EF_ARM_EABI_VER1    0x01000000
> +#define EF_ARM_EABI_VER2    0x02000000
> +#define EF_ARM_EABI_VER3    0x03000000
> +#define EF_ARM_EABI_VER4    0x04000000
> +#define EF_ARM_EABI_VER5    0x05000000
> +
> +/* ELF Header */
> +typedef struct {
> +    unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
> +    Elf32_Half    e_type;        /* object file type */
> +    Elf32_Half    e_machine;     /* machine */
> +    Elf32_Word    e_version;     /* object file version */
> +    Elf32_Addr    e_entry;       /* virtual entry point */
> +    Elf32_Off     e_phoff;       /* program header table offset */
> +    Elf32_Off     e_shoff;       /* section header table offset */
> +    Elf32_Word    e_flags;       /* processor-specific flags */
> +    Elf32_Half    e_ehsize;      /* ELF header size */
> +    Elf32_Half    e_phentsize;   /* program header entry size */
> +    Elf32_Half    e_phnum;       /* number of program header entries */
> +    Elf32_Half    e_shentsize;   /* section header entry size */
> +    Elf32_Half    e_shnum;       /* number of section header entries */
> +    Elf32_Half    e_shstrndx;    /* section header table's "section
> +                                    header string table" entry offset */
> +} Elf32_Ehdr;
> +
> +typedef struct {
> +    unsigned char e_ident[EI_NIDENT]; /* Id bytes */
> +    Elf64_Half    e_type;        /* file type */
> +    Elf64_Half    e_machine;     /* machine type */
> +    Elf64_Word    e_version;     /* version number */
> +    Elf64_Addr    e_entry;       /* entry point */
> +    Elf64_Off     e_phoff;       /* Program hdr offset */
> +    Elf64_Off     e_shoff;       /* Section hdr offset */
> +    Elf64_Word    e_flags;       /* Processor flags */
> +    Elf64_Half    e_ehsize;      /* sizeof ehdr */
> +    Elf64_Half    e_phentsize;   /* Program header entry size */
> +    Elf64_Half    e_phnum;       /* Number of program headers */
> +    Elf64_Half    e_shentsize;   /* Section header entry size */
> +    Elf64_Half    e_shnum;       /* Number of section headers */
> +    Elf64_Half    e_shstrndx;    /* String table index */
> +} Elf64_Ehdr;
> +
> +/* e_type */
> +#define ET_NONE      0           /* No file type */
> +#define ET_REL       1           /* relocatable file */
> +#define ET_EXEC      2           /* executable file */
> +#define ET_DYN       3           /* shared object file */
> +#define ET_CORE      4           /* core file */
> +#define ET_NUM       5           /* number of types */
> +#define ET_LOPROC    0xff00      /* reserved range for processor */
> +#define ET_HIPROC    0xffff      /*   specific e_type */
> +
> +/* e_machine */
> +#define EM_NONE      0           /* No Machine */
> +#define EM_M32       1           /* AT&T WE 32100 */
> +#define EM_SPARC     2           /* SPARC */
> +#define EM_386       3           /* Intel 80386 */
> +#define EM_68K       4           /* Motorola 68000 */
> +#define EM_88K       5           /* Motorola 88000 */
> +#define EM_486       6           /* Intel 80486 - unused? */
> +#define EM_860       7           /* Intel 80860 */
> +#define EM_MIPS      8           /* MIPS R3000 Big-Endian only */
> +/*
> + * Don't know if EM_MIPS_RS4_BE,
> + * EM_SPARC64, EM_PARISC,
> + * or EM_PPC are ABI compliant
> + */
> +#define EM_MIPS_RS4_BE 10        /* MIPS R4000 Big-Endian */
> +#define EM_SPARC64     11        /* SPARC v9 64-bit unoffical */
> +#define EM_PARISC      15        /* HPPA */
> +#define EM_SPARC32PLUS 18        /* Enhanced instruction set SPARC */
> +#define EM_PPC         20        /* PowerPC */
> +#define EM_PPC64       21        /* PowerPC 64-bit */
> +#define EM_ARM         40        /* Advanced RISC Machines ARM */
> +#define EM_ALPHA       41        /* DEC ALPHA */
> +#define EM_SPARCV9     43        /* SPARC version 9 */
> +#define EM_ALPHA_EXP   0x9026    /* DEC ALPHA */
> +#define EM_IA_64       50        /* Intel Merced */
> +#define EM_X86_64      62        /* AMD x86-64 architecture */
> +#define EM_VAX         75        /* DEC VAX */
> +#define EM_AARCH64    183        /* ARM 64-bit */

Here I similarly think some stripping down might help. Doing so would then
also permit to leave out the comment in the middle.

> +/* Version */
> +#define EV_NONE      0           /* Invalid */
> +#define EV_CURRENT   1           /* Current */
> +#define EV_NUM       2           /* number of versions */
> +
> +/* Program Header */
> +typedef struct {
> +    Elf32_Word    p_type;        /* segment type */
> +    Elf32_Off     p_offset;      /* segment offset */
> +    Elf32_Addr    p_vaddr;       /* virtual address of segment */
> +    Elf32_Addr    p_paddr;       /* physical address - ignored? */
> +    Elf32_Word    p_filesz;      /* number of bytes in file for seg. */
> +    Elf32_Word    p_memsz;       /* number of bytes in mem. for seg. */
> +    Elf32_Word    p_flags;       /* flags */
> +    Elf32_Word    p_align;       /* memory alignment */
> +} Elf32_Phdr;
> +
> +typedef struct {
> +    Elf64_Word    p_type;        /* entry type */
> +    Elf64_Word    p_flags;       /* flags */
> +    Elf64_Off     p_offset;      /* offset */
> +    Elf64_Addr    p_vaddr;       /* virtual address */
> +    Elf64_Addr    p_paddr;       /* physical address */
> +    Elf64_Xword   p_filesz;      /* file size */
> +    Elf64_Xword   p_memsz;       /* memory size */
> +    Elf64_Xword   p_align;       /* memory & file alignment */
> +} Elf64_Phdr;
> +
> +/* Segment types - p_type */
> +#define PT_NULL      0           /* unused */
> +#define PT_LOAD      1           /* loadable segment */
> +#define PT_DYNAMIC   2           /* dynamic linking section */
> +#define PT_INTERP    3           /* the RTLD */
> +#define PT_NOTE      4           /* auxiliary information */
> +#define PT_SHLIB     5           /* reserved - purpose undefined */
> +#define PT_PHDR      6           /* program header */
> +#define PT_NUM       7           /* Number of segment types */
> +#define PT_LOPROC    0x70000000  /* reserved range for processor */
> +#define PT_HIPROC    0x7fffffff  /*  specific segment types */
> +
> +/* Segment flags - p_flags */
> +#define PF_X         0x1        /* Executable */
> +#define PF_W         0x2        /* Writable */
> +#define PF_R         0x4        /* Readable */
> +#define PF_MASKPROC  0xf0000000 /* reserved bits for processor */
> +                                /*  specific segment flags */
> +
> +/* Section Header */
> +typedef struct {
> +    Elf32_Word    sh_name;      /* name - index into section header
> +                                   string table section */
> +    Elf32_Word    sh_type;      /* type */
> +    Elf32_Word    sh_flags;     /* flags */
> +    Elf32_Addr    sh_addr;      /* address */
> +    Elf32_Off     sh_offset;    /* file offset */
> +    Elf32_Word    sh_size;      /* section size */
> +    Elf32_Word    sh_link;      /* section header table index link */
> +    Elf32_Word    sh_info;      /* extra information */
> +    Elf32_Word    sh_addralign; /* address alignment */
> +    Elf32_Word    sh_entsize;   /* section entry size */
> +} Elf32_Shdr;
> +
> +typedef struct {
> +    Elf64_Word    sh_name;      /* section name */
> +    Elf64_Word    sh_type;      /* section type */
> +    Elf64_Xword   sh_flags;     /* section flags */
> +    Elf64_Addr    sh_addr;      /* virtual address */
> +    Elf64_Off     sh_offset;    /* file offset */
> +    Elf64_Xword   sh_size;      /* section size */
> +    Elf64_Word    sh_link;      /* link to another */
> +    Elf64_Word    sh_info;      /* misc info */
> +    Elf64_Xword   sh_addralign; /* memory alignment */
> +    Elf64_Xword   sh_entsize;   /* table entry size */
> +} Elf64_Shdr;
> +
> +/* sh_type */
> +#define SHT_NULL        0       /* inactive */
> +#define SHT_PROGBITS    1       /* program defined information */
> +#define SHT_SYMTAB      2       /* symbol table section */
> +#define SHT_STRTAB      3       /* string table section */
> +#define SHT_RELA        4       /* relocation section with addends*/
> +#define SHT_HASH        5       /* symbol hash table section */
> +#define SHT_DYNAMIC     6       /* dynamic section */
> +#define SHT_NOTE        7       /* note section */
> +#define SHT_NOBITS      8       /* no space section */
> +#define SHT_REL         9       /* relation section without addends */
> +#define SHT_SHLIB      10       /* reserved - purpose unknown */
> +#define SHT_DYNSYM     11       /* dynamic symbol table section */
> +#define SHT_NUM        12       /* number of section types */
> +
> +/* Note definitions */
> +typedef struct {
> +    Elf32_Word namesz;
> +    Elf32_Word descsz;
> +    Elf32_Word type;
> +    char data[];
> +} Elf32_Note;
> +
> +typedef struct {
> +    Elf64_Word namesz;
> +    Elf64_Word descsz;
> +    Elf64_Word type;
> +    char data[];
> +} Elf64_Note;
> +
> +/* Abstraction layer for handling 32- and 64-bit ELF files. */
> +
> +typedef union {
> +    Elf32_Ehdr e32;
> +    Elf64_Ehdr e64;
> +} elf_ehdr;
> +
> +static inline bool elf_is_32bit(elf_ehdr *ehdr)
> +{
> +    return ehdr->e32.e_ident[EI_CLASS] == ELFCLASS32;
> +}
> +
> +static inline bool elf_is_64bit(elf_ehdr *ehdr)
> +{
> +    return ehdr->e32.e_ident[EI_CLASS] == ELFCLASS64;
> +}
> +
> +#define ehdr_val(ehdr, elem) (elf_is_32bit(ehdr) ? (ehdr)->e32.elem : (ehdr)->e64.elem)
> +
> +typedef union {
> +    Elf32_Phdr e32;
> +    Elf64_Phdr e64;
> +} elf_phdr;
> +
> +#define phdr_val(ehdr, phdr, elem) (elf_is_32bit(ehdr) ? (phdr)->e32.elem : (phdr)->e64.elem)
> +
> +typedef union {
> +    Elf32_Shdr e32;
> +    Elf64_Shdr e64;
> +} elf_shdr;
> +
> +#define shdr_val(ehdr, shdr, elem) (elf_is_32bit(ehdr) ? (shdr)->e32.elem : (shdr)->e64.elem)
> +
> +typedef union {
> +    Elf32_Note e32;
> +    Elf64_Note e64;
> +} elf_note;
> +
> +#define note_val(ehdr, note, elem) (elf_is_32bit(ehdr) ? (note)->e32.elem : (note)->e64.elem)
> +
> +static inline void *elf_ptr_add(void *ptr, unsigned long add)
> +{
> +    return (char *)ptr + add;

You can omit the cast here, can't you?

You're the maintainer, so you'll know how many of the comments you want to
address. Either way:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From minios-devel-bounces@lists.xenproject.org Fri Mar 21 15:53:52 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 21 Mar 2025 15:53:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924232.1327534 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvegw-0006Gt-Hg; Fri, 21 Mar 2025 15:53:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924232.1327534; Fri, 21 Mar 2025 15:53:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tvegw-0006GX-AT; Fri, 21 Mar 2025 15:53:50 +0000
Received: by outflank-mailman (input) for mailman id 924232;
 Fri, 21 Mar 2025 15:53:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1wue=WI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tvegu-0006DK-GV
 for minios-devel@lists.xenproject.org; Fri, 21 Mar 2025 15:53:48 +0000
Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com
 [2a00:1450:4864:20::341])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id abf25ad9-066c-11f0-9ea1-5ba50f476ded;
 Fri, 21 Mar 2025 16:53:46 +0100 (CET)
Received: by mail-wm1-x341.google.com with SMTP id
 5b1f17b1804b1-43d0782d787so15302275e9.0
 for <minios-devel@lists.xenproject.org>; Fri, 21 Mar 2025 08:53:46 -0700 (PDT)
Received: from ?IPV6:2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b?
 (p200300e5873d1a008e99ce06aa4a2e7b.dip0.t-ipconnect.de.
 [2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-3997f9b409fsm2740209f8f.50.2025.03.21.08.53.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 21 Mar 2025 08:53:44 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abf25ad9-066c-11f0-9ea1-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742572425; x=1743177225; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:cc:to
         :subject:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=UPqBALtdYBPFd6409rVuvEZ0Xj3B6Y1OraAP5PwDC+4=;
        b=YSY79xGKYcIviFV5TFH/6xZNoOF4pGJ2V946rPOetopSes8lK8YITtxFdMxdtKCGab
         8HpT9iSJ1lG3mazmJG/XZ5r6Wd/mcrYq2cyPN4jAjL6kXpHzMpIvm01ulk8Jrm2Qsjm9
         vop9iF8REz3r9aZZv/9rBjmtg/BK0EShC4jKHqX1MH80IlHViJQM9RSmIwlQtohwmbzk
         siRTYNmlQg6+YMAB/cxPd4cFY6pIHC1/X1hk37ApwQ0XAa6F2AfPD5mIJ7npPhrlQqEn
         zNemnAvFjSyJS40Hf818WlPzIGr8QCt6O8Xby41NGFW27X2kVrTtEe07pNLSkDXRRCbV
         9+Mw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742572425; x=1743177225;
        h=in-reply-to:autocrypt:from:content-language:references:cc:to
         :subject:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UPqBALtdYBPFd6409rVuvEZ0Xj3B6Y1OraAP5PwDC+4=;
        b=VpaEjZshyVgZdqfSvdgRZWzkwGeUv2dUq0mDgIIsrzHKcM+74geoMy+s/M2LviZ0pc
         jtREOHSqQnMtzs97kDIRXbInmcmDxh9uiEr1OjwWyJysvD9K3fkZf7D8vjYjTuwOZPdX
         eCtw+iY0Zya6qJ5EV+7dftEJe3PF09DjIIIi8t548gqV9mNsXee+szOW2DHQEDCxRSlN
         MA8/e3hSy9k8cQjWVhDMdD9w1GRvvRHZOzE89hHa6NfYkISmMNaGRAi1w/1ZJZE26aPj
         yn3jYUaWdgwhyF5lpwbGiKXqDcxgTtJ0JaU09k85KpBgPSgfbJrWf97+5Vp1eGtQwnYz
         FXtg==
X-Forwarded-Encrypted: i=1; AJvYcCX/FAQfN88h0bGbmF9ee0uXxOGTpsVdkqorVtticiPaQID84g7svjvzpFBPiVXOOcnxWpeENi+gYgBp8ec=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxdmzc1ffHfyaUS5n1Fr7e6ouRaAn/sKjm6Zp3FQN4hdU8wTMEx
	121p2BD3O8eIXYNjV2HO2j/dv/P81TgQdF16l2Azeparr0jVL4kNeRxSGOFU/fU=
X-Gm-Gg: ASbGnctMG+fQpiW47bb/xSL6t0q0jIKdGiUBqNouqb0h3OknuNnuoh9xNdMNvV7YmPG
	Amx5Eg23dMnnjYPA78PEN643NHUTUeqck1+TYHFTHCItXRPXAyP6/XpJgDGJf3YVA8IRY3JaDti
	uzNIbokDqnG/Z7M/n6eUFY3t6/pI4dAiPR7nvShQsfPqj/R1rtAsMlgRu/q+41gQwvXo+XTXNbZ
	gvq88BviBOK+Df43f5rwqO5wlOsPwOsXK/eEJzUt1o/3UocyegHreCIe19G6XWlbd8yqI1pQJgM
	xJqQ6My2ZLvbyKYSTeRNpIs9uk6a/oEYWkOgxJtDZcA+E/n+0y6wdiEMZx42B5iD6OjkCicEaxj
	ts2Kj40/EuWI8qSPKLEx68lAZG4Q+iLT+m4DssGOuZveglADTleYnkdTpLLaNqe4sN/fKDI9Hp9
	K1SSJz
X-Google-Smtp-Source: AGHT+IGotsHb9g5mg1re2RZVlWv3xrpaOlIX0cE+x0uVlMMTU7VFiUHhSvxTg+BYrtciZEIF12Jlvw==
X-Received: by 2002:a05:6000:18a2:b0:391:466f:314e with SMTP id ffacd0b85a97d-3997f9015damr4637188f8f.16.1742572425243;
        Fri, 21 Mar 2025 08:53:45 -0700 (PDT)
Message-ID: <84fa74ee-70e4-4318-9aff-12dcb8db50c1@suse.com>
Date: Fri, 21 Mar 2025 16:53:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 03/12] add elf.h
To: Jan Beulich <jbeulich@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20250321092451.17309-1-jgross@suse.com>
 <20250321092451.17309-4-jgross@suse.com>
 <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------4mym860wkajExf7xG0LLNz4z"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------4mym860wkajExf7xG0LLNz4z
Content-Type: multipart/mixed; boundary="------------T7pinG8hwD2jDjdXt9HYWyzj";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Message-ID: <84fa74ee-70e4-4318-9aff-12dcb8db50c1@suse.com>
Subject: Re: [MINI-OS PATCH 03/12] add elf.h
References: <20250321092451.17309-1-jgross@suse.com>
 <20250321092451.17309-4-jgross@suse.com>
 <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
In-Reply-To: <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------T7pinG8hwD2jDjdXt9HYWyzj
Content-Type: multipart/mixed; boundary="------------KYKQyzVdEh9tA87b7XwOR8P7"

--------------KYKQyzVdEh9tA87b7XwOR8P7
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMjEuMDMuMjUgMTQ6NTEsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAyMS4wMy4yMDI1
IDEwOjI0LCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gQWRkIHNvbWUgZGVmaW5pdGlvbnMg
Zm9yIGFjY2Vzc2luZyBhbiBFTEYgZmlsZS4gT25seSB0aGUgZmlsZSBoZWFkZXINCj4+IGFu
ZCB0aGUgcHJvZ3JhbSBoZWFkZXIgYXJlIG5lZWRlZC4NCj4+DQo+PiBUaGUgbWFpbiBzb3Vy
Y2UgZm9yIHRob3NlIGFyZSBlbGZzdHJ1Y3RzLmggYW5kIGxpYmVsZi5oIGZyb20gdGhlIFhl
bg0KPj4gdHJlZS4gVGhlIGxpY2Vuc2UgYm9pbGVyIHBsYXRlIG9mIHRob3NlIGZpbGVzIGlz
IGJlaW5nIGtlcHQgaW4gdGhlDQo+PiByZXN1bHRpbmcgaGVhZGVyIGZpbGUuDQo+IA0KPiBN
YXliZSB0aGUgY29weWluZyB3YXMgYSBiaXQgdG9vIGxpdGVyYWwuDQo+IA0KPj4gLS0tIC9k
ZXYvbnVsbA0KPj4gKysrIGIvaW5jbHVkZS9lbGYuaA0KPj4gQEAgLTAsMCArMSwzNDAgQEAN
Cj4+ICsjaWZuZGVmIF9fRUxGX0hfXw0KPj4gKyNkZWZpbmUgX19FTEZfSF9fDQo+PiArLyoN
Cj4+ICsgKiBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgRXJpayBUaGVpc2VuLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4NCj4+ICsgKg0KPj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPj4gKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucw0KPj4gKyAqIGFyZSBtZXQ6DQo+PiArICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4+ICsg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuDQo+PiArICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4+ICsgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlDQo+PiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4+ICsgKiAzLiBUaGUgbmFtZSBv
ZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMNCj4+ICsgKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbg0KPj4gKyAqDQo+PiArICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVY
UFJFU1MgT1INCj4+ICsgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTDQo+PiArICogT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4NCj4+ICsgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+PiArICogSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
DQo+PiArICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLA0KPj4gKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQ0K
Pj4gKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQNCj4+ICsgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YNCj4+ICsg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRib29sLmg+
DQo+PiArI2luY2x1ZGUgPG1pbmktb3MvdHlwZXMuaD4NCj4+ICsNCj4+ICt0eXBlZGVmIHVp
bnQzMl90ICAgIEVsZjMyX0FkZHI7ICAvKiBVbnNpZ25lZCBwcm9ncmFtIGFkZHJlc3MgKi8N
Cj4+ICt0eXBlZGVmIHVpbnQzMl90ICAgIEVsZjMyX09mZjsgICAvKiBVbnNpZ25lZCBmaWxl
IG9mZnNldCAqLw0KPj4gK3R5cGVkZWYgdWludDE2X3QgICAgRWxmMzJfSGFsZjsgIC8qIFVu
c2lnbmVkIG1lZGl1bSBpbnRlZ2VyICovDQo+PiArdHlwZWRlZiB1aW50MzJfdCAgICBFbGYz
Ml9Xb3JkOyAgLyogVW5zaWduZWQgbGFyZ2UgaW50ZWdlciAqLw0KPj4gKw0KPj4gK3R5cGVk
ZWYgdWludDY0X3QgICAgRWxmNjRfQWRkcjsNCj4+ICt0eXBlZGVmIHVpbnQ2NF90ICAgIEVs
ZjY0X09mZjsNCj4+ICt0eXBlZGVmIHVpbnQxNl90ICAgIEVsZjY0X0hhbGY7DQo+PiArdHlw
ZWRlZiB1aW50MzJfdCAgICBFbGY2NF9Xb3JkOw0KPj4gK3R5cGVkZWYgdWludDY0X3QgICAg
RWxmNjRfWHdvcmQ7DQo+PiArDQo+PiArLyogVW5pcXVlIGJ1aWxkIGlkIHN0cmluZyBmb3Jt
YXQgd2hlbiB1c2luZyAtLWJ1aWxkLWlkLiAqLw0KPj4gKyNkZWZpbmUgTlRfR05VX0JVSUxE
X0lEIDMNCj4+ICsNCj4+ICsvKg0KPj4gKyAqIGVfaWRlbnRbXSBpZGVudGlmaWNhdGlvbiBp
bmRleGVzDQo+PiArICogU2VlIGh0dHA6Ly93d3cuY2FsZGVyYS5jb20vZGV2ZWxvcGVycy9n
YWJpLzIwMDAtMDctMTcvY2g0LmVoZWFkZXIuaHRtbA0KPj4gKyAqLw0KPj4gKyNkZWZpbmUg
RUlfTUFHMCAgICAgICAgMCAgICAgICAgIC8qIGZpbGUgSUQgKi8NCj4+ICsjZGVmaW5lIEVJ
X01BRzEgICAgICAgIDEgICAgICAgICAvKiBmaWxlIElEICovDQo+PiArI2RlZmluZSBFSV9N
QUcyICAgICAgICAyICAgICAgICAgLyogZmlsZSBJRCAqLw0KPj4gKyNkZWZpbmUgRUlfTUFH
MyAgICAgICAgMyAgICAgICAgIC8qIGZpbGUgSUQgKi8NCj4+ICsjZGVmaW5lIEVJX0NMQVNT
ICAgICAgIDQgICAgICAgICAvKiBmaWxlIGNsYXNzICovDQo+PiArI2RlZmluZSBFSV9EQVRB
ICAgICAgICA1ICAgICAgICAgLyogZGF0YSBlbmNvZGluZyAqLw0KPj4gKyNkZWZpbmUgRUlf
VkVSU0lPTiAgICAgNiAgICAgICAgIC8qIEVMRiBoZWFkZXIgdmVyc2lvbiAqLw0KPj4gKyNk
ZWZpbmUgRUlfT1NBQkkgICAgICAgNyAgICAgICAgIC8qIE9TL0FCSSBJRCAqLw0KPj4gKyNk
ZWZpbmUgRUlfQUJJVkVSU0lPTiAgOCAgICAgICAgIC8qIEFCSSB2ZXJzaW9uICovDQo+PiAr
I2RlZmluZSBFSV9QQUQgICAgICAgICA5ICAgICAgICAgLyogc3RhcnQgb2YgcGFkIGJ5dGVz
ICovDQo+PiArI2RlZmluZSBFSV9OSURFTlQgICAgIDE2ICAgICAgICAgLyogU2l6ZSBvZiBl
X2lkZW50W10gKi8NCj4+ICsNCj4+ICsvKiBlX2lkZW50W10gbWFnaWMgbnVtYmVyICovDQo+
PiArI2RlZmluZSBFTEZNQUcwICAgICAgICAweDdmICAgICAgLyogZV9pZGVudFtFSV9NQUcw
XSAqLw0KPj4gKyNkZWZpbmUgRUxGTUFHMSAgICAgICAgJ0UnICAgICAgIC8qIGVfaWRlbnRb
RUlfTUFHMV0gKi8NCj4+ICsjZGVmaW5lIEVMRk1BRzIgICAgICAgICdMJyAgICAgICAvKiBl
X2lkZW50W0VJX01BRzJdICovDQo+PiArI2RlZmluZSBFTEZNQUczICAgICAgICAnRicgICAg
ICAgLyogZV9pZGVudFtFSV9NQUczXSAqLw0KPj4gKyNkZWZpbmUgRUxGTUFHICAgICAgICAg
IlwxNzdFTEYiIC8qIG1hZ2ljICovDQo+PiArI2RlZmluZSBTRUxGTUFHICAgICAgICA0ICAg
ICAgICAgLyogc2l6ZSBvZiBtYWdpYyAqLw0KPj4gKw0KPj4gKy8qIGVfaWRlbnRbXSBmaWxl
IGNsYXNzICovDQo+PiArI2RlZmluZSBFTEZDTEFTU05PTkUgICAwICAgICAgICAgLyogaW52
YWxpZCAqLw0KPj4gKyNkZWZpbmUgRUxGQ0xBU1MzMiAgICAgMSAgICAgICAgIC8qIDMyLWJp
dCBvYmpzICovDQo+PiArI2RlZmluZSBFTEZDTEFTUzY0ICAgICAyICAgICAgICAgLyogNjQt
Yml0IG9ianMgKi8NCj4+ICsjZGVmaW5lIEVMRkNMQVNTTlVNICAgIDMgICAgICAgICAvKiBu
dW1iZXIgb2YgY2xhc3NlcyAqLw0KPj4gKw0KPj4gKy8qIGVfaWRlbnRbXSBkYXRhIGVuY29k
aW5nICovDQo+PiArI2RlZmluZSBFTEZEQVRBTk9ORSAgICAwICAgICAgICAgLyogaW52YWxp
ZCAqLw0KPj4gKyNkZWZpbmUgRUxGREFUQTJMU0IgICAgMSAgICAgICAgIC8qIExpdHRsZS1F
bmRpYW4gKi8NCj4+ICsjZGVmaW5lIEVMRkRBVEEyTVNCICAgIDIgICAgICAgICAvKiBCaWct
RW5kaWFuICovDQo+PiArI2RlZmluZSBFTEZEQVRBTlVNICAgICAzICAgICAgICAgLyogbnVt
YmVyIG9mIGRhdGEgZW5jb2RlIGRlZmluZXMgKi8NCj4+ICsNCj4+ICsvKiBlX2lkZW50W10g
T3BlcmF0aW5nIFN5c3RlbS9BQkkgKi8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX1NZU1YgICAg
ICAgICAwICAvKiBVTklYIFN5c3RlbSBWIEFCSSAqLw0KPj4gKyNkZWZpbmUgRUxGT1NBQklf
Tk9ORSAgICAgICAgIDAgIC8qIFNhbWUgYXMgRUxGT1NBQklfU1lTViAqLw0KPj4gKyNkZWZp
bmUgRUxGT1NBQklfSFBVWCAgICAgICAgIDEgIC8qIEhQLVVYIG9wZXJhdGluZyBzeXN0ZW0g
Ki8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX05FVEJTRCAgICAgICAyICAvKiBOZXRCU0QgKi8N
Cj4+ICsjZGVmaW5lIEVMRk9TQUJJX0xJTlVYICAgICAgICAzICAvKiBHTlUvTGludXggKi8N
Cj4+ICsjZGVmaW5lIEVMRk9TQUJJX0hVUkQgICAgICAgICA0ICAvKiBHTlUvSHVyZCAqLw0K
Pj4gKyNkZWZpbmUgRUxGT1NBQklfODZPUEVOICAgICAgIDUgIC8qIDg2T3BlbiBjb21tb24g
SUEzMiBBQkkgKi8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX1NPTEFSSVMgICAgICA2ICAvKiBT
b2xhcmlzICovDQo+PiArI2RlZmluZSBFTEZPU0FCSV9NT05URVJFWSAgICAgNyAgLyogTW9u
dGVyZXkgKi8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX0lSSVggICAgICAgICA4ICAvKiBJUklY
ICovDQo+PiArI2RlZmluZSBFTEZPU0FCSV9GUkVFQlNEICAgICAgOSAgLyogRnJlZUJTRCAq
Lw0KPj4gKyNkZWZpbmUgRUxGT1NBQklfVFJVNjQgICAgICAgMTAgIC8qIFRSVTY0IFVOSVgg
Ki8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX01PREVTVE8gICAgIDExICAvKiBOb3ZlbGwgTW9k
ZXN0byAqLw0KPj4gKyNkZWZpbmUgRUxGT1NBQklfT1BFTkJTRCAgICAgMTIgIC8qIE9wZW5C
U0QgKi8NCj4+ICsjZGVmaW5lIEVMRk9TQUJJX0FSTSAgICAgICAgIDk3ICAvKiBBUk0gKi8N
Cj4+ICsjZGVmaW5lIEVMRk9TQUJJX1NUQU5EQUxPTkUgMjU1ICAvKiBTdGFuZGFsb25lIChl
bWJlZGRlZCkgYXBwbGljYXRpb24gKi8NCj4gDQo+IFdoaWxlIEknbSBoYXBweSB0byBzZWUg
TW9kZXN0byBtZW50aW9uZWQgaW4geWV0IGFub3RoZXIgcGxhY2VzLCBJIGRvbid0DQo+IHRo
aW5rIHlvdSBuZWVkIHRoZSBtYWpvcml0eSBvZiB0aGVzZT8NCg0KSG1tLCB0cnVlLiBJbiB0
aGUgZW5kIEkgZG9uJ3QgbmVlZCBhbnkgb2YgdGhvc2UsIGFzIHRoZSBoYW5kbGVkIGJpbmFy
eQ0Kd29uJ3QgaGF2ZSBhbnkgZXh0ZXJuYWwgQUJJIHdoaWNoIHRoZSBydW5uaW5nIGtlcm5l
bCB3b3VsZCBuZWVkIHRvIGtub3cNCihhcGFydCBmcm9tIHRoZSBQVkggYm9vdCBpbnRlcmZh
Y2UsIHdoaWNoIGlzbid0IE9TIGRlcGVuZGVudCkuDQoNCj4gDQo+PiArLyogZV9pZGVudCAq
Lw0KPj4gKyNkZWZpbmUgSVNfRUxGKGVoZHIpICgoZWhkcikuZV9pZGVudFtFSV9NQUcwXSA9
PSBFTEZNQUcwICYmIFwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgKGVoZHIpLmVfaWRl
bnRbRUlfTUFHMV0gPT0gRUxGTUFHMSAmJiBcDQo+PiArICAgICAgICAgICAgICAgICAgICAg
IChlaGRyKS5lX2lkZW50W0VJX01BRzJdID09IEVMRk1BRzIgJiYgXA0KPj4gKyAgICAgICAg
ICAgICAgICAgICAgICAoZWhkcikuZV9pZGVudFtFSV9NQUczXSA9PSBFTEZNQUczKQ0KPj4g
Kw0KPj4gKy8qIGVfZmxhZ3MgKi8NCj4+ICsjZGVmaW5lIEVGX0FSTV9FQUJJX01BU0sgICAg
MHhmZjAwMDAwMA0KPj4gKyNkZWZpbmUgRUZfQVJNX0VBQklfVU5LTk9XTiAweDAwMDAwMDAw
DQo+PiArI2RlZmluZSBFRl9BUk1fRUFCSV9WRVIxICAgIDB4MDEwMDAwMDANCj4+ICsjZGVm
aW5lIEVGX0FSTV9FQUJJX1ZFUjIgICAgMHgwMjAwMDAwMA0KPj4gKyNkZWZpbmUgRUZfQVJN
X0VBQklfVkVSMyAgICAweDAzMDAwMDAwDQo+PiArI2RlZmluZSBFRl9BUk1fRUFCSV9WRVI0
ICAgIDB4MDQwMDAwMDANCj4+ICsjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjUgICAgMHgwNTAw
MDAwMA0KPj4gKw0KPj4gKy8qIEVMRiBIZWFkZXIgKi8NCj4+ICt0eXBlZGVmIHN0cnVjdCB7
DQo+PiArICAgIHVuc2lnbmVkIGNoYXIgZV9pZGVudFtFSV9OSURFTlRdOyAvKiBFTEYgSWRl
bnRpZmljYXRpb24gKi8NCj4+ICsgICAgRWxmMzJfSGFsZiAgICBlX3R5cGU7ICAgICAgICAv
KiBvYmplY3QgZmlsZSB0eXBlICovDQo+PiArICAgIEVsZjMyX0hhbGYgICAgZV9tYWNoaW5l
OyAgICAgLyogbWFjaGluZSAqLw0KPj4gKyAgICBFbGYzMl9Xb3JkICAgIGVfdmVyc2lvbjsg
ICAgIC8qIG9iamVjdCBmaWxlIHZlcnNpb24gKi8NCj4+ICsgICAgRWxmMzJfQWRkciAgICBl
X2VudHJ5OyAgICAgICAvKiB2aXJ0dWFsIGVudHJ5IHBvaW50ICovDQo+PiArICAgIEVsZjMy
X09mZiAgICAgZV9waG9mZjsgICAgICAgLyogcHJvZ3JhbSBoZWFkZXIgdGFibGUgb2Zmc2V0
ICovDQo+PiArICAgIEVsZjMyX09mZiAgICAgZV9zaG9mZjsgICAgICAgLyogc2VjdGlvbiBo
ZWFkZXIgdGFibGUgb2Zmc2V0ICovDQo+PiArICAgIEVsZjMyX1dvcmQgICAgZV9mbGFnczsg
ICAgICAgLyogcHJvY2Vzc29yLXNwZWNpZmljIGZsYWdzICovDQo+PiArICAgIEVsZjMyX0hh
bGYgICAgZV9laHNpemU7ICAgICAgLyogRUxGIGhlYWRlciBzaXplICovDQo+PiArICAgIEVs
ZjMyX0hhbGYgICAgZV9waGVudHNpemU7ICAgLyogcHJvZ3JhbSBoZWFkZXIgZW50cnkgc2l6
ZSAqLw0KPj4gKyAgICBFbGYzMl9IYWxmICAgIGVfcGhudW07ICAgICAgIC8qIG51bWJlciBv
ZiBwcm9ncmFtIGhlYWRlciBlbnRyaWVzICovDQo+PiArICAgIEVsZjMyX0hhbGYgICAgZV9z
aGVudHNpemU7ICAgLyogc2VjdGlvbiBoZWFkZXIgZW50cnkgc2l6ZSAqLw0KPj4gKyAgICBF
bGYzMl9IYWxmICAgIGVfc2hudW07ICAgICAgIC8qIG51bWJlciBvZiBzZWN0aW9uIGhlYWRl
ciBlbnRyaWVzICovDQo+PiArICAgIEVsZjMyX0hhbGYgICAgZV9zaHN0cm5keDsgICAgLyog
c2VjdGlvbiBoZWFkZXIgdGFibGUncyAic2VjdGlvbg0KPj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhlYWRlciBzdHJpbmcgdGFibGUiIGVudHJ5IG9mZnNldCAq
Lw0KPj4gK30gRWxmMzJfRWhkcjsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+PiAr
ICAgIHVuc2lnbmVkIGNoYXIgZV9pZGVudFtFSV9OSURFTlRdOyAvKiBJZCBieXRlcyAqLw0K
Pj4gKyAgICBFbGY2NF9IYWxmICAgIGVfdHlwZTsgICAgICAgIC8qIGZpbGUgdHlwZSAqLw0K
Pj4gKyAgICBFbGY2NF9IYWxmICAgIGVfbWFjaGluZTsgICAgIC8qIG1hY2hpbmUgdHlwZSAq
Lw0KPj4gKyAgICBFbGY2NF9Xb3JkICAgIGVfdmVyc2lvbjsgICAgIC8qIHZlcnNpb24gbnVt
YmVyICovDQo+PiArICAgIEVsZjY0X0FkZHIgICAgZV9lbnRyeTsgICAgICAgLyogZW50cnkg
cG9pbnQgKi8NCj4+ICsgICAgRWxmNjRfT2ZmICAgICBlX3Bob2ZmOyAgICAgICAvKiBQcm9n
cmFtIGhkciBvZmZzZXQgKi8NCj4+ICsgICAgRWxmNjRfT2ZmICAgICBlX3Nob2ZmOyAgICAg
ICAvKiBTZWN0aW9uIGhkciBvZmZzZXQgKi8NCj4+ICsgICAgRWxmNjRfV29yZCAgICBlX2Zs
YWdzOyAgICAgICAvKiBQcm9jZXNzb3IgZmxhZ3MgKi8NCj4+ICsgICAgRWxmNjRfSGFsZiAg
ICBlX2Voc2l6ZTsgICAgICAvKiBzaXplb2YgZWhkciAqLw0KPj4gKyAgICBFbGY2NF9IYWxm
ICAgIGVfcGhlbnRzaXplOyAgIC8qIFByb2dyYW0gaGVhZGVyIGVudHJ5IHNpemUgKi8NCj4+
ICsgICAgRWxmNjRfSGFsZiAgICBlX3BobnVtOyAgICAgICAvKiBOdW1iZXIgb2YgcHJvZ3Jh
bSBoZWFkZXJzICovDQo+PiArICAgIEVsZjY0X0hhbGYgICAgZV9zaGVudHNpemU7ICAgLyog
U2VjdGlvbiBoZWFkZXIgZW50cnkgc2l6ZSAqLw0KPj4gKyAgICBFbGY2NF9IYWxmICAgIGVf
c2hudW07ICAgICAgIC8qIE51bWJlciBvZiBzZWN0aW9uIGhlYWRlcnMgKi8NCj4+ICsgICAg
RWxmNjRfSGFsZiAgICBlX3Noc3RybmR4OyAgICAvKiBTdHJpbmcgdGFibGUgaW5kZXggKi8N
Cj4+ICt9IEVsZjY0X0VoZHI7DQo+PiArDQo+PiArLyogZV90eXBlICovDQo+PiArI2RlZmlu
ZSBFVF9OT05FICAgICAgMCAgICAgICAgICAgLyogTm8gZmlsZSB0eXBlICovDQo+PiArI2Rl
ZmluZSBFVF9SRUwgICAgICAgMSAgICAgICAgICAgLyogcmVsb2NhdGFibGUgZmlsZSAqLw0K
Pj4gKyNkZWZpbmUgRVRfRVhFQyAgICAgIDIgICAgICAgICAgIC8qIGV4ZWN1dGFibGUgZmls
ZSAqLw0KPj4gKyNkZWZpbmUgRVRfRFlOICAgICAgIDMgICAgICAgICAgIC8qIHNoYXJlZCBv
YmplY3QgZmlsZSAqLw0KPj4gKyNkZWZpbmUgRVRfQ09SRSAgICAgIDQgICAgICAgICAgIC8q
IGNvcmUgZmlsZSAqLw0KPj4gKyNkZWZpbmUgRVRfTlVNICAgICAgIDUgICAgICAgICAgIC8q
IG51bWJlciBvZiB0eXBlcyAqLw0KPj4gKyNkZWZpbmUgRVRfTE9QUk9DICAgIDB4ZmYwMCAg
ICAgIC8qIHJlc2VydmVkIHJhbmdlIGZvciBwcm9jZXNzb3IgKi8NCj4+ICsjZGVmaW5lIEVU
X0hJUFJPQyAgICAweGZmZmYgICAgICAvKiAgIHNwZWNpZmljIGVfdHlwZSAqLw0KPj4gKw0K
Pj4gKy8qIGVfbWFjaGluZSAqLw0KPj4gKyNkZWZpbmUgRU1fTk9ORSAgICAgIDAgICAgICAg
ICAgIC8qIE5vIE1hY2hpbmUgKi8NCj4+ICsjZGVmaW5lIEVNX00zMiAgICAgICAxICAgICAg
ICAgICAvKiBBVCZUIFdFIDMyMTAwICovDQo+PiArI2RlZmluZSBFTV9TUEFSQyAgICAgMiAg
ICAgICAgICAgLyogU1BBUkMgKi8NCj4+ICsjZGVmaW5lIEVNXzM4NiAgICAgICAzICAgICAg
ICAgICAvKiBJbnRlbCA4MDM4NiAqLw0KPj4gKyNkZWZpbmUgRU1fNjhLICAgICAgIDQgICAg
ICAgICAgIC8qIE1vdG9yb2xhIDY4MDAwICovDQo+PiArI2RlZmluZSBFTV84OEsgICAgICAg
NSAgICAgICAgICAgLyogTW90b3JvbGEgODgwMDAgKi8NCj4+ICsjZGVmaW5lIEVNXzQ4NiAg
ICAgICA2ICAgICAgICAgICAvKiBJbnRlbCA4MDQ4NiAtIHVudXNlZD8gKi8NCj4+ICsjZGVm
aW5lIEVNXzg2MCAgICAgICA3ICAgICAgICAgICAvKiBJbnRlbCA4MDg2MCAqLw0KPj4gKyNk
ZWZpbmUgRU1fTUlQUyAgICAgIDggICAgICAgICAgIC8qIE1JUFMgUjMwMDAgQmlnLUVuZGlh
biBvbmx5ICovDQo+PiArLyoNCj4+ICsgKiBEb24ndCBrbm93IGlmIEVNX01JUFNfUlM0X0JF
LA0KPj4gKyAqIEVNX1NQQVJDNjQsIEVNX1BBUklTQywNCj4+ICsgKiBvciBFTV9QUEMgYXJl
IEFCSSBjb21wbGlhbnQNCj4+ICsgKi8NCj4+ICsjZGVmaW5lIEVNX01JUFNfUlM0X0JFIDEw
ICAgICAgICAvKiBNSVBTIFI0MDAwIEJpZy1FbmRpYW4gKi8NCj4+ICsjZGVmaW5lIEVNX1NQ
QVJDNjQgICAgIDExICAgICAgICAvKiBTUEFSQyB2OSA2NC1iaXQgdW5vZmZpY2FsICovDQo+
PiArI2RlZmluZSBFTV9QQVJJU0MgICAgICAxNSAgICAgICAgLyogSFBQQSAqLw0KPj4gKyNk
ZWZpbmUgRU1fU1BBUkMzMlBMVVMgMTggICAgICAgIC8qIEVuaGFuY2VkIGluc3RydWN0aW9u
IHNldCBTUEFSQyAqLw0KPj4gKyNkZWZpbmUgRU1fUFBDICAgICAgICAgMjAgICAgICAgIC8q
IFBvd2VyUEMgKi8NCj4+ICsjZGVmaW5lIEVNX1BQQzY0ICAgICAgIDIxICAgICAgICAvKiBQ
b3dlclBDIDY0LWJpdCAqLw0KPj4gKyNkZWZpbmUgRU1fQVJNICAgICAgICAgNDAgICAgICAg
IC8qIEFkdmFuY2VkIFJJU0MgTWFjaGluZXMgQVJNICovDQo+PiArI2RlZmluZSBFTV9BTFBI
QSAgICAgICA0MSAgICAgICAgLyogREVDIEFMUEhBICovDQo+PiArI2RlZmluZSBFTV9TUEFS
Q1Y5ICAgICA0MyAgICAgICAgLyogU1BBUkMgdmVyc2lvbiA5ICovDQo+PiArI2RlZmluZSBF
TV9BTFBIQV9FWFAgICAweDkwMjYgICAgLyogREVDIEFMUEhBICovDQo+PiArI2RlZmluZSBF
TV9JQV82NCAgICAgICA1MCAgICAgICAgLyogSW50ZWwgTWVyY2VkICovDQo+PiArI2RlZmlu
ZSBFTV9YODZfNjQgICAgICA2MiAgICAgICAgLyogQU1EIHg4Ni02NCBhcmNoaXRlY3R1cmUg
Ki8NCj4+ICsjZGVmaW5lIEVNX1ZBWCAgICAgICAgIDc1ICAgICAgICAvKiBERUMgVkFYICov
DQo+PiArI2RlZmluZSBFTV9BQVJDSDY0ICAgIDE4MyAgICAgICAgLyogQVJNIDY0LWJpdCAq
Lw0KPiANCj4gSGVyZSBJIHNpbWlsYXJseSB0aGluayBzb21lIHN0cmlwcGluZyBkb3duIG1p
Z2h0IGhlbHAuIERvaW5nIHNvIHdvdWxkIHRoZW4NCj4gYWxzbyBwZXJtaXQgdG8gbGVhdmUg
b3V0IHRoZSBjb21tZW50IGluIHRoZSBtaWRkbGUuDQoNCkhlcmUgSSdtIGEgbGl0dGxlIGJp
dCBtb3JlIG9uIHRoZSBlZGdlLiBTb21lIGhpc3RvcmljYWwgZW50cmllcyBjYW4NCnByb2Jh
Ymx5IGJlIGRyb3BwZWQsIGJ1dCB3aGljaCBvbmVzIHdvdWxkIHdhbnQgdG8gc3RheT8NCg0K
PiANCj4+ICsvKiBWZXJzaW9uICovDQo+PiArI2RlZmluZSBFVl9OT05FICAgICAgMCAgICAg
ICAgICAgLyogSW52YWxpZCAqLw0KPj4gKyNkZWZpbmUgRVZfQ1VSUkVOVCAgIDEgICAgICAg
ICAgIC8qIEN1cnJlbnQgKi8NCj4+ICsjZGVmaW5lIEVWX05VTSAgICAgICAyICAgICAgICAg
ICAvKiBudW1iZXIgb2YgdmVyc2lvbnMgKi8NCj4+ICsNCj4+ICsvKiBQcm9ncmFtIEhlYWRl
ciAqLw0KPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4+ICsgICAgRWxmMzJfV29yZCAgICBwX3R5
cGU7ICAgICAgICAvKiBzZWdtZW50IHR5cGUgKi8NCj4+ICsgICAgRWxmMzJfT2ZmICAgICBw
X29mZnNldDsgICAgICAvKiBzZWdtZW50IG9mZnNldCAqLw0KPj4gKyAgICBFbGYzMl9BZGRy
ICAgIHBfdmFkZHI7ICAgICAgIC8qIHZpcnR1YWwgYWRkcmVzcyBvZiBzZWdtZW50ICovDQo+
PiArICAgIEVsZjMyX0FkZHIgICAgcF9wYWRkcjsgICAgICAgLyogcGh5c2ljYWwgYWRkcmVz
cyAtIGlnbm9yZWQ/ICovDQo+PiArICAgIEVsZjMyX1dvcmQgICAgcF9maWxlc3o7ICAgICAg
LyogbnVtYmVyIG9mIGJ5dGVzIGluIGZpbGUgZm9yIHNlZy4gKi8NCj4+ICsgICAgRWxmMzJf
V29yZCAgICBwX21lbXN6OyAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgaW4gbWVtLiBmb3Ig
c2VnLiAqLw0KPj4gKyAgICBFbGYzMl9Xb3JkICAgIHBfZmxhZ3M7ICAgICAgIC8qIGZsYWdz
ICovDQo+PiArICAgIEVsZjMyX1dvcmQgICAgcF9hbGlnbjsgICAgICAgLyogbWVtb3J5IGFs
aWdubWVudCAqLw0KPj4gK30gRWxmMzJfUGhkcjsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVj
dCB7DQo+PiArICAgIEVsZjY0X1dvcmQgICAgcF90eXBlOyAgICAgICAgLyogZW50cnkgdHlw
ZSAqLw0KPj4gKyAgICBFbGY2NF9Xb3JkICAgIHBfZmxhZ3M7ICAgICAgIC8qIGZsYWdzICov
DQo+PiArICAgIEVsZjY0X09mZiAgICAgcF9vZmZzZXQ7ICAgICAgLyogb2Zmc2V0ICovDQo+
PiArICAgIEVsZjY0X0FkZHIgICAgcF92YWRkcjsgICAgICAgLyogdmlydHVhbCBhZGRyZXNz
ICovDQo+PiArICAgIEVsZjY0X0FkZHIgICAgcF9wYWRkcjsgICAgICAgLyogcGh5c2ljYWwg
YWRkcmVzcyAqLw0KPj4gKyAgICBFbGY2NF9Yd29yZCAgIHBfZmlsZXN6OyAgICAgIC8qIGZp
bGUgc2l6ZSAqLw0KPj4gKyAgICBFbGY2NF9Yd29yZCAgIHBfbWVtc3o7ICAgICAgIC8qIG1l
bW9yeSBzaXplICovDQo+PiArICAgIEVsZjY0X1h3b3JkICAgcF9hbGlnbjsgICAgICAgLyog
bWVtb3J5ICYgZmlsZSBhbGlnbm1lbnQgKi8NCj4+ICt9IEVsZjY0X1BoZHI7DQo+PiArDQo+
PiArLyogU2VnbWVudCB0eXBlcyAtIHBfdHlwZSAqLw0KPj4gKyNkZWZpbmUgUFRfTlVMTCAg
ICAgIDAgICAgICAgICAgIC8qIHVudXNlZCAqLw0KPj4gKyNkZWZpbmUgUFRfTE9BRCAgICAg
IDEgICAgICAgICAgIC8qIGxvYWRhYmxlIHNlZ21lbnQgKi8NCj4+ICsjZGVmaW5lIFBUX0RZ
TkFNSUMgICAyICAgICAgICAgICAvKiBkeW5hbWljIGxpbmtpbmcgc2VjdGlvbiAqLw0KPj4g
KyNkZWZpbmUgUFRfSU5URVJQICAgIDMgICAgICAgICAgIC8qIHRoZSBSVExEICovDQo+PiAr
I2RlZmluZSBQVF9OT1RFICAgICAgNCAgICAgICAgICAgLyogYXV4aWxpYXJ5IGluZm9ybWF0
aW9uICovDQo+PiArI2RlZmluZSBQVF9TSExJQiAgICAgNSAgICAgICAgICAgLyogcmVzZXJ2
ZWQgLSBwdXJwb3NlIHVuZGVmaW5lZCAqLw0KPj4gKyNkZWZpbmUgUFRfUEhEUiAgICAgIDYg
ICAgICAgICAgIC8qIHByb2dyYW0gaGVhZGVyICovDQo+PiArI2RlZmluZSBQVF9OVU0gICAg
ICAgNyAgICAgICAgICAgLyogTnVtYmVyIG9mIHNlZ21lbnQgdHlwZXMgKi8NCj4+ICsjZGVm
aW5lIFBUX0xPUFJPQyAgICAweDcwMDAwMDAwICAvKiByZXNlcnZlZCByYW5nZSBmb3IgcHJv
Y2Vzc29yICovDQo+PiArI2RlZmluZSBQVF9ISVBST0MgICAgMHg3ZmZmZmZmZiAgLyogIHNw
ZWNpZmljIHNlZ21lbnQgdHlwZXMgKi8NCj4+ICsNCj4+ICsvKiBTZWdtZW50IGZsYWdzIC0g
cF9mbGFncyAqLw0KPj4gKyNkZWZpbmUgUEZfWCAgICAgICAgIDB4MSAgICAgICAgLyogRXhl
Y3V0YWJsZSAqLw0KPj4gKyNkZWZpbmUgUEZfVyAgICAgICAgIDB4MiAgICAgICAgLyogV3Jp
dGFibGUgKi8NCj4+ICsjZGVmaW5lIFBGX1IgICAgICAgICAweDQgICAgICAgIC8qIFJlYWRh
YmxlICovDQo+PiArI2RlZmluZSBQRl9NQVNLUFJPQyAgMHhmMDAwMDAwMCAvKiByZXNlcnZl
ZCBiaXRzIGZvciBwcm9jZXNzb3IgKi8NCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qICBzcGVjaWZpYyBzZWdtZW50IGZsYWdzICovDQo+PiArDQo+PiArLyogU2Vj
dGlvbiBIZWFkZXIgKi8NCj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+PiArICAgIEVsZjMyX1dv
cmQgICAgc2hfbmFtZTsgICAgICAvKiBuYW1lIC0gaW5kZXggaW50byBzZWN0aW9uIGhlYWRl
cg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHRhYmxl
IHNlY3Rpb24gKi8NCj4+ICsgICAgRWxmMzJfV29yZCAgICBzaF90eXBlOyAgICAgIC8qIHR5
cGUgKi8NCj4+ICsgICAgRWxmMzJfV29yZCAgICBzaF9mbGFnczsgICAgIC8qIGZsYWdzICov
DQo+PiArICAgIEVsZjMyX0FkZHIgICAgc2hfYWRkcjsgICAgICAvKiBhZGRyZXNzICovDQo+
PiArICAgIEVsZjMyX09mZiAgICAgc2hfb2Zmc2V0OyAgICAvKiBmaWxlIG9mZnNldCAqLw0K
Pj4gKyAgICBFbGYzMl9Xb3JkICAgIHNoX3NpemU7ICAgICAgLyogc2VjdGlvbiBzaXplICov
DQo+PiArICAgIEVsZjMyX1dvcmQgICAgc2hfbGluazsgICAgICAvKiBzZWN0aW9uIGhlYWRl
ciB0YWJsZSBpbmRleCBsaW5rICovDQo+PiArICAgIEVsZjMyX1dvcmQgICAgc2hfaW5mbzsg
ICAgICAvKiBleHRyYSBpbmZvcm1hdGlvbiAqLw0KPj4gKyAgICBFbGYzMl9Xb3JkICAgIHNo
X2FkZHJhbGlnbjsgLyogYWRkcmVzcyBhbGlnbm1lbnQgKi8NCj4+ICsgICAgRWxmMzJfV29y
ZCAgICBzaF9lbnRzaXplOyAgIC8qIHNlY3Rpb24gZW50cnkgc2l6ZSAqLw0KPj4gK30gRWxm
MzJfU2hkcjsNCj4+ICsNCj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+PiArICAgIEVsZjY0X1dv
cmQgICAgc2hfbmFtZTsgICAgICAvKiBzZWN0aW9uIG5hbWUgKi8NCj4+ICsgICAgRWxmNjRf
V29yZCAgICBzaF90eXBlOyAgICAgIC8qIHNlY3Rpb24gdHlwZSAqLw0KPj4gKyAgICBFbGY2
NF9Yd29yZCAgIHNoX2ZsYWdzOyAgICAgLyogc2VjdGlvbiBmbGFncyAqLw0KPj4gKyAgICBF
bGY2NF9BZGRyICAgIHNoX2FkZHI7ICAgICAgLyogdmlydHVhbCBhZGRyZXNzICovDQo+PiAr
ICAgIEVsZjY0X09mZiAgICAgc2hfb2Zmc2V0OyAgICAvKiBmaWxlIG9mZnNldCAqLw0KPj4g
KyAgICBFbGY2NF9Yd29yZCAgIHNoX3NpemU7ICAgICAgLyogc2VjdGlvbiBzaXplICovDQo+
PiArICAgIEVsZjY0X1dvcmQgICAgc2hfbGluazsgICAgICAvKiBsaW5rIHRvIGFub3RoZXIg
Ki8NCj4+ICsgICAgRWxmNjRfV29yZCAgICBzaF9pbmZvOyAgICAgIC8qIG1pc2MgaW5mbyAq
Lw0KPj4gKyAgICBFbGY2NF9Yd29yZCAgIHNoX2FkZHJhbGlnbjsgLyogbWVtb3J5IGFsaWdu
bWVudCAqLw0KPj4gKyAgICBFbGY2NF9Yd29yZCAgIHNoX2VudHNpemU7ICAgLyogdGFibGUg
ZW50cnkgc2l6ZSAqLw0KPj4gK30gRWxmNjRfU2hkcjsNCj4+ICsNCj4+ICsvKiBzaF90eXBl
ICovDQo+PiArI2RlZmluZSBTSFRfTlVMTCAgICAgICAgMCAgICAgICAvKiBpbmFjdGl2ZSAq
Lw0KPj4gKyNkZWZpbmUgU0hUX1BST0dCSVRTICAgIDEgICAgICAgLyogcHJvZ3JhbSBkZWZp
bmVkIGluZm9ybWF0aW9uICovDQo+PiArI2RlZmluZSBTSFRfU1lNVEFCICAgICAgMiAgICAg
ICAvKiBzeW1ib2wgdGFibGUgc2VjdGlvbiAqLw0KPj4gKyNkZWZpbmUgU0hUX1NUUlRBQiAg
ICAgIDMgICAgICAgLyogc3RyaW5nIHRhYmxlIHNlY3Rpb24gKi8NCj4+ICsjZGVmaW5lIFNI
VF9SRUxBICAgICAgICA0ICAgICAgIC8qIHJlbG9jYXRpb24gc2VjdGlvbiB3aXRoIGFkZGVu
ZHMqLw0KPj4gKyNkZWZpbmUgU0hUX0hBU0ggICAgICAgIDUgICAgICAgLyogc3ltYm9sIGhh
c2ggdGFibGUgc2VjdGlvbiAqLw0KPj4gKyNkZWZpbmUgU0hUX0RZTkFNSUMgICAgIDYgICAg
ICAgLyogZHluYW1pYyBzZWN0aW9uICovDQo+PiArI2RlZmluZSBTSFRfTk9URSAgICAgICAg
NyAgICAgICAvKiBub3RlIHNlY3Rpb24gKi8NCj4+ICsjZGVmaW5lIFNIVF9OT0JJVFMgICAg
ICA4ICAgICAgIC8qIG5vIHNwYWNlIHNlY3Rpb24gKi8NCj4+ICsjZGVmaW5lIFNIVF9SRUwg
ICAgICAgICA5ICAgICAgIC8qIHJlbGF0aW9uIHNlY3Rpb24gd2l0aG91dCBhZGRlbmRzICov
DQo+PiArI2RlZmluZSBTSFRfU0hMSUIgICAgICAxMCAgICAgICAvKiByZXNlcnZlZCAtIHB1
cnBvc2UgdW5rbm93biAqLw0KPj4gKyNkZWZpbmUgU0hUX0RZTlNZTSAgICAgMTEgICAgICAg
LyogZHluYW1pYyBzeW1ib2wgdGFibGUgc2VjdGlvbiAqLw0KPj4gKyNkZWZpbmUgU0hUX05V
TSAgICAgICAgMTIgICAgICAgLyogbnVtYmVyIG9mIHNlY3Rpb24gdHlwZXMgKi8NCj4+ICsN
Cj4+ICsvKiBOb3RlIGRlZmluaXRpb25zICovDQo+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPj4g
KyAgICBFbGYzMl9Xb3JkIG5hbWVzejsNCj4+ICsgICAgRWxmMzJfV29yZCBkZXNjc3o7DQo+
PiArICAgIEVsZjMyX1dvcmQgdHlwZTsNCj4+ICsgICAgY2hhciBkYXRhW107DQo+PiArfSBF
bGYzMl9Ob3RlOw0KPj4gKw0KPj4gK3R5cGVkZWYgc3RydWN0IHsNCj4+ICsgICAgRWxmNjRf
V29yZCBuYW1lc3o7DQo+PiArICAgIEVsZjY0X1dvcmQgZGVzY3N6Ow0KPj4gKyAgICBFbGY2
NF9Xb3JkIHR5cGU7DQo+PiArICAgIGNoYXIgZGF0YVtdOw0KPj4gK30gRWxmNjRfTm90ZTsN
Cj4+ICsNCj4+ICsvKiBBYnN0cmFjdGlvbiBsYXllciBmb3IgaGFuZGxpbmcgMzItIGFuZCA2
NC1iaXQgRUxGIGZpbGVzLiAqLw0KPj4gKw0KPj4gK3R5cGVkZWYgdW5pb24gew0KPj4gKyAg
ICBFbGYzMl9FaGRyIGUzMjsNCj4+ICsgICAgRWxmNjRfRWhkciBlNjQ7DQo+PiArfSBlbGZf
ZWhkcjsNCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZWxmX2lzXzMyYml0KGVsZl9l
aGRyICplaGRyKQ0KPj4gK3sNCj4+ICsgICAgcmV0dXJuIGVoZHItPmUzMi5lX2lkZW50W0VJ
X0NMQVNTXSA9PSBFTEZDTEFTUzMyOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5l
IGJvb2wgZWxmX2lzXzY0Yml0KGVsZl9laGRyICplaGRyKQ0KPj4gK3sNCj4+ICsgICAgcmV0
dXJuIGVoZHItPmUzMi5lX2lkZW50W0VJX0NMQVNTXSA9PSBFTEZDTEFTUzY0Ow0KPj4gK30N
Cj4+ICsNCj4+ICsjZGVmaW5lIGVoZHJfdmFsKGVoZHIsIGVsZW0pIChlbGZfaXNfMzJiaXQo
ZWhkcikgPyAoZWhkciktPmUzMi5lbGVtIDogKGVoZHIpLT5lNjQuZWxlbSkNCj4+ICsNCj4+
ICt0eXBlZGVmIHVuaW9uIHsNCj4+ICsgICAgRWxmMzJfUGhkciBlMzI7DQo+PiArICAgIEVs
ZjY0X1BoZHIgZTY0Ow0KPj4gK30gZWxmX3BoZHI7DQo+PiArDQo+PiArI2RlZmluZSBwaGRy
X3ZhbChlaGRyLCBwaGRyLCBlbGVtKSAoZWxmX2lzXzMyYml0KGVoZHIpID8gKHBoZHIpLT5l
MzIuZWxlbSA6IChwaGRyKS0+ZTY0LmVsZW0pDQo+PiArDQo+PiArdHlwZWRlZiB1bmlvbiB7
DQo+PiArICAgIEVsZjMyX1NoZHIgZTMyOw0KPj4gKyAgICBFbGY2NF9TaGRyIGU2NDsNCj4+
ICt9IGVsZl9zaGRyOw0KPj4gKw0KPj4gKyNkZWZpbmUgc2hkcl92YWwoZWhkciwgc2hkciwg
ZWxlbSkgKGVsZl9pc18zMmJpdChlaGRyKSA/IChzaGRyKS0+ZTMyLmVsZW0gOiAoc2hkcikt
PmU2NC5lbGVtKQ0KPj4gKw0KPj4gK3R5cGVkZWYgdW5pb24gew0KPj4gKyAgICBFbGYzMl9O
b3RlIGUzMjsNCj4+ICsgICAgRWxmNjRfTm90ZSBlNjQ7DQo+PiArfSBlbGZfbm90ZTsNCj4+
ICsNCj4+ICsjZGVmaW5lIG5vdGVfdmFsKGVoZHIsIG5vdGUsIGVsZW0pIChlbGZfaXNfMzJi
aXQoZWhkcikgPyAobm90ZSktPmUzMi5lbGVtIDogKG5vdGUpLT5lNjQuZWxlbSkNCj4+ICsN
Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgKmVsZl9wdHJfYWRkKHZvaWQgKnB0ciwgdW5zaWdu
ZWQgbG9uZyBhZGQpDQo+PiArew0KPj4gKyAgICByZXR1cm4gKGNoYXIgKilwdHIgKyBhZGQ7
DQo+IA0KPiBZb3UgY2FuIG9taXQgdGhlIGNhc3QgaGVyZSwgY2FuJ3QgeW91Pw0KDQpZZXMu
DQoNCj4gDQo+IFlvdSdyZSB0aGUgbWFpbnRhaW5lciwgc28geW91J2xsIGtub3cgaG93IG1h
bnkgb2YgdGhlIGNvbW1lbnRzIHlvdSB3YW50IHRvDQo+IGFkZHJlc3MuIEVpdGhlciB3YXk6
DQo+IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQoNClRo
YW5rcywNCg0KDQpKdWVyZ2VuDQo=
--------------KYKQyzVdEh9tA87b7XwOR8P7
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------KYKQyzVdEh9tA87b7XwOR8P7--

--------------T7pinG8hwD2jDjdXt9HYWyzj--

--------------4mym860wkajExf7xG0LLNz4z
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmfdi4gFAwAAAAAACgkQsN6d1ii/Ey+m
9wf/YLk5odsT9glCFofY6DaRUw19nLn3Sz/EHZXPLlknqi0h1QpVKbaYyBO9yNpMAXCg5x3QwglB
w+SKikJkfvtvRLXz+iOZlrNQEEKN8Culnq9uaiH7F4ecfFhRP8VmcKBtlLZY5043yjWoqxjnVuV3
H6lAx1TFZAg1c4HABgtiuXO1bNKcMWPrbMdn1pToT5Il0wdKOduO9U7yedqGaIewbPJHZmLopobV
TJxlVLb+7GAA0j1r1hk9T0X5Z6B5EwuRq3mu3LWJmVkwdcXnXjKBLln0CRlKdIy7BQXC2Mu+LOzW
ckptLe8xVF1LYdXXm1WR+KJU9GPBkySzBgvg3ZHqEQ==
=FX/H
-----END PGP SIGNATURE-----

--------------4mym860wkajExf7xG0LLNz4z--


From minios-devel-bounces@lists.xenproject.org Sat Mar 22 23:54:17 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sat, 22 Mar 2025 23:54:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924823.1327803 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8fN-0005XN-Or; Sat, 22 Mar 2025 23:54:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924823.1327803; Sat, 22 Mar 2025 23:54:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8fN-0005XF-La; Sat, 22 Mar 2025 23:54:13 +0000
Received: by outflank-mailman (input) for mailman id 924823;
 Sat, 22 Mar 2025 23:54:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PFde=WJ=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1tw8fM-0005X4-Ls
 for minios-devel@lists.xenproject.org; Sat, 22 Mar 2025 23:54:12 +0000
Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f10864fd-0778-11f0-9ffa-bf95429c2676;
 Sun, 23 Mar 2025 00:54:07 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id DCFAFA1D52;
 Sun, 23 Mar 2025 00:54:06 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Gyg923ibEq6p; Sun, 23 Mar 2025 00:54:06 +0100 (CET)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id A5796A1C52;
 Sun, 23 Mar 2025 00:54:06 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1tw8fG-0000000FFWH-0vFQ; Sun, 23 Mar 2025 00:54:06 +0100
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f10864fd-0778-11f0-9ffa-bf95429c2676
Date: Sun, 23 Mar 2025 00:54:06 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [MINI-OS PATCH 00/12] kexec: add kexec support to Mini-OS
Message-ID: <Z99NnhfppCVOP_7C@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
References: <20250321092451.17309-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250321092451.17309-1-jgross@suse.com>
Organization: I am not organized

Hello,

Juergen Gross, le ven. 21 mars 2025 10:24:39 +0100, a ecrit:
> Add basic kexec support to Mini-OS for running in x86 PVH mode.

I am wondering if you had considered using libxc to implement this?
The original pv-grub1 is doing it (xen/stubdom/grub/kexec.c)

Samuel


From minios-devel-bounces@lists.xenproject.org Sun Mar 23 00:01:39 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Mar 2025 00:01:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924840.1327822 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8mY-0000Ak-Oo; Sun, 23 Mar 2025 00:01:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924840.1327822; Sun, 23 Mar 2025 00:01:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8mY-0000AJ-KO; Sun, 23 Mar 2025 00:01:38 +0000
Received: by outflank-mailman (input) for mailman id 924840;
 Sun, 23 Mar 2025 00:01:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CaZ1=WK=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1tw8mW-00008X-UA
 for minios-devel@lists.xenproject.org; Sun, 23 Mar 2025 00:01:36 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fb45f8ca-0779-11f0-9ea2-5ba50f476ded;
 Sun, 23 Mar 2025 01:01:34 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 89B14A1D52;
 Sun, 23 Mar 2025 01:01:33 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id dv0Voq7M6IJx; Sun, 23 Mar 2025 01:01:33 +0100 (CET)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id 69BF5A1C52;
 Sun, 23 Mar 2025 01:01:33 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1tw8mS-0000000FFr1-44Um; Sun, 23 Mar 2025 01:01:32 +0100
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb45f8ca-0779-11f0-9ea2-5ba50f476ded
Date: Sun, 23 Mar 2025 01:01:32 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
Message-ID: <Z99PXOXocyuZtf_X@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250321093145.17882-2-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le ven. 21 mars 2025 10:31:44 +0100, a ecrit:
> Add a file operations fstat hook to the 9pfs frontend.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> ---
> V2:
> - or file access mode into st_mode (Jason Andryuk)
> ---
>  9pfront.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/9pfront.c b/9pfront.c
> index 1741d600..7257a07e 100644
> --- a/9pfront.c
> +++ b/9pfront.c
> @@ -85,6 +85,8 @@ struct file_9pfs {
>  
>  #define P9_QID_SIZE    13
>  
> +#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
> +
>  struct p9_header {
>      uint32_t size;
>      uint8_t cmd;
> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
>      return ret;
>  }
>  
> +static int fstat_9pfs(struct file *file, struct stat *buf)
> +{
> +    struct file_9pfs *f9pfs = file->filedata;
> +    struct p9_stat stat;
> +    int ret;
> +
> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
> +    if ( ret )
> +    {
> +        errno = EIO;
> +        return -1;
> +    }
> +
> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
> +    buf->st_mode |= stat.mode & 0777;
> +    buf->st_atime = stat.atime;
> +    buf->st_mtime = stat.mtime;

Should we perhaps also fill st_ctime? Leaving it at 0 could surprise
other software layers.

> +    buf->st_size = stat.length;
> +    buf->st_uid = stat.n_uid;
> +    buf->st_gid = stat.n_gid;
> +
> +    free_stat(&stat);
> +
> +    return 0;
> +}
> +
>  static int close_9pfs(struct file *file)
>  {
>      struct file_9pfs *f9pfs = file->filedata;
> @@ -1296,6 +1324,7 @@ static const struct file_ops ops_9pfs = {
>      .read = read_9pfs,
>      .write = write_9pfs,
>      .close = close_9pfs,
> +    .fstat = fstat_9pfs,
>  };
>  
>  __attribute__((constructor))
> -- 
> 2.43.0
> 


From minios-devel-bounces@lists.xenproject.org Sun Mar 23 00:02:54 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Mar 2025 00:02:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924853.1327831 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8nl-0000jU-Rv; Sun, 23 Mar 2025 00:02:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924853.1327831; Sun, 23 Mar 2025 00:02:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tw8nl-0000jM-OL; Sun, 23 Mar 2025 00:02:53 +0000
Received: by outflank-mailman (input) for mailman id 924853;
 Sun, 23 Mar 2025 00:02:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CaZ1=WK=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1tw8nl-0000jC-1E
 for minios-devel@lists.xenproject.org; Sun, 23 Mar 2025 00:02:53 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 29e13cc7-077a-11f0-9ea2-5ba50f476ded;
 Sun, 23 Mar 2025 01:02:52 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id C9280A1D52;
 Sun, 23 Mar 2025 01:02:51 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id lcE_MNkmn2Us; Sun, 23 Mar 2025 01:02:51 +0100 (CET)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id A7169A1C52;
 Sun, 23 Mar 2025 01:02:51 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1tw8nj-0000000FFus-0wdp; Sun, 23 Mar 2025 01:02:51 +0100
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29e13cc7-077a-11f0-9ea2-5ba50f476ded
Date: Sun, 23 Mar 2025 01:02:51 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [MINI-OS PATCH v2 2/2] 9pfs: add lseek file operation hook
Message-ID: <Z99PqxXpRnYCupoD@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-3-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250321093145.17882-3-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le ven. 21 mars 2025 10:31:45 +0100, a ecrit:
> Add a file operations lseek hook to the 9pfs frontend. Just use the
> lseek_default() implementation.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  9pfront.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/9pfront.c b/9pfront.c
> index 7257a07e..8bf3a91e 100644
> --- a/9pfront.c
> +++ b/9pfront.c
> @@ -1325,6 +1325,7 @@ static const struct file_ops ops_9pfs = {
>      .write = write_9pfs,
>      .close = close_9pfs,
>      .fstat = fstat_9pfs,
> +    .lseek = lseek_default,
>  };
>  
>  __attribute__((constructor))
> -- 
> 2.43.0
> 


From minios-devel-bounces@lists.xenproject.org Sun Mar 23 07:01:19 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Mar 2025 07:01:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.924886.1327844 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twFKe-0004aY-6B; Sun, 23 Mar 2025 07:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 924886.1327844; Sun, 23 Mar 2025 07:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twFKe-0004aR-3Y; Sun, 23 Mar 2025 07:01:16 +0000
Received: by outflank-mailman (input) for mailman id 924886;
 Sun, 23 Mar 2025 07:01:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VYxF=WK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1twFKd-0004aL-0j
 for minios-devel@lists.xenproject.org; Sun, 23 Mar 2025 07:01:15 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9b31cf59-07b4-11f0-9ffa-bf95429c2676;
 Sun, 23 Mar 2025 08:01:12 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-ac2a089fbbdso610523766b.1
 for <minios-devel@lists.xenproject.org>; Sun, 23 Mar 2025 00:01:12 -0700 (PDT)
Received: from ?IPV6:2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b?
 (p200300e5873d1a008e99ce06aa4a2e7b.dip0.t-ipconnect.de.
 [2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac3efda474bsm467657066b.183.2025.03.23.00.01.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 23 Mar 2025 00:01:11 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b31cf59-07b4-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742713272; x=1743318072; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=SHylGmy1hZq8oyAxYKWbcNc4NdU3bjaXgkTsVQDhfq8=;
        b=HfnqOn5B+bF+kILoxCcrmxf+oEijlWro1KasaMxHjZKtzRf3/s07zV2/MrL6I6fN5J
         CIQW6Lm1jb07S/wwa4LQeAo9T08ixw3D6sbff8YcrKZQ0lAk7W2lTjx/9JqCDW5FMDKT
         MNo+fLEUv3hMZyfVBtsP3ckvcPjHUxuFaHhbhStnAyOwQ2mKzmj3WqP8UVoj9+Gu/aE4
         lVXK5aED74f7Xo9jsVyXzY6mhwE9J/MZpPLkmEfD6wbPoRlKYPRBLSZaXtciYmYABwOb
         GtYTemJ2WrrigYVDkUNgy6UPukM4av1habmJ41yll0g89N2qXAgauV3spRi3o7roebOq
         xkoA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742713272; x=1743318072;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=SHylGmy1hZq8oyAxYKWbcNc4NdU3bjaXgkTsVQDhfq8=;
        b=WeqzfzYnDhTr4AIzMU6GDvUz3c1L9KLXH0eNeF6MFrXoBBPT13YcfpWu2pFDtVRkAH
         rQTTXSHoEbXghP9ohFPu/W74mruxZj5Xjg6h9AH2Ih6zjqbJttUWQA55E8VuSJFAgCYj
         ZMRo9jdCOteMLUri5aHo5wm3smJ0cOQQezpCEMI1KdBMJUMhFxiYty5LtBpJfo4DXlbA
         XBbTgza9x0jE6sYTcUkAbz/+jyQ4+jcE+MSrEupc6IP8Rvz+lYs4V9oG2mAZGQ6QZI5W
         kQGKfDwtpXRXrVAO07tTiHZL/yRB2U0mwCK7WW1WuMcryrSwha/vzNZw257pY+QnpgMU
         +pfw==
X-Forwarded-Encrypted: i=1; AJvYcCXjqWQ6YdDEI6XV3DvoEbXCHVTMSlf6R5AumdNX59NTpg6FVg9j7+S8y+QMXqGnP42ygTjSm0YhBHpvZ2w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwCNDlpAarYmr7eC6KLqu51gP8oVJn3E0pJeSlqJ8jxR9sN8Kh1
	BkRBAe/OeMXkrWfAjVCNeO8IN/VyGVNH+nIgnWUSKvSSEIhaBvWpfkUCxUuxkHo=
X-Gm-Gg: ASbGncvHkQ4GrvwXBEn7VGBb3okQHYVh/COu/WNwrCkQgtA2xbLPNhds/QhDXEEKPWG
	XTYXxPPmkuslft/JTMlmu7heRR9C/AHHUOOJGLAHxw1M7lOpT4kuN+m/s2606CdvI0NaJ8S1L3k
	O0bJ5tehGCHiYZZCW5meLEDnV2Ptrr6cgSPsN89tSXeBmN5gZxb9EMBNkzPlhgs9Lln/PTM7RRk
	5XgZSmNixm3SC+8upW4IxFvKqoPqaeVwA416c5zzdigER5/sYRn0WcN7UpXUindCtCZEKglXEHh
	tAQSDp5AEDD2MbQKSs0kfB8/wIOxHweryzs9nNk1Bnsg+vjZLG/E5fL7aN9IMw3jyYe+h8NwVLh
	OZRm5cQPcMo9ojHimZS3DiMHUIzaDjNm57Ynm+1A2iAeeSzn5yq9DR4EhEBB4xPhO/FuXxg==
X-Google-Smtp-Source: AGHT+IHUQEOJgV47eh6ImeTE51P0FTy0iVFK0PtLgfjhj68ojCO1ChABigECnLZdyYPHsDVrTSKbhA==
X-Received: by 2002:a17:907:958a:b0:ac1:e45f:9c71 with SMTP id a640c23a62f3a-ac3f00b7260mr821885366b.1.1742713271779;
        Sun, 23 Mar 2025 00:01:11 -0700 (PDT)
Message-ID: <98f92f1f-c1e9-4955-9d04-e31b7e99be29@suse.com>
Date: Sun, 23 Mar 2025 08:01:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 00/12] kexec: add kexec support to Mini-OS
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20250321092451.17309-1-jgross@suse.com> <Z99NnhfppCVOP_7C@begin>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <Z99NnhfppCVOP_7C@begin>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Ov7BKYoL1OR330RAoMbHOmhN"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Ov7BKYoL1OR330RAoMbHOmhN
Content-Type: multipart/mixed; boundary="------------50GtZsWh6kbaI8e8RsWzcchH";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Message-ID: <98f92f1f-c1e9-4955-9d04-e31b7e99be29@suse.com>
Subject: Re: [MINI-OS PATCH 00/12] kexec: add kexec support to Mini-OS
References: <20250321092451.17309-1-jgross@suse.com> <Z99NnhfppCVOP_7C@begin>
In-Reply-To: <Z99NnhfppCVOP_7C@begin>

--------------50GtZsWh6kbaI8e8RsWzcchH
Content-Type: multipart/mixed; boundary="------------k5vYLtH0Ws1Zw0X044ySPUip"

--------------k5vYLtH0Ws1Zw0X044ySPUip
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMjMuMDMuMjUgMDA6NTQsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4gSGVsbG8sDQo+
IA0KPiBKdWVyZ2VuIEdyb3NzLCBsZSB2ZW4uIDIxIG1hcnMgMjAyNSAxMDoyNDozOSArMDEw
MCwgYSBlY3JpdDoNCj4+IEFkZCBiYXNpYyBrZXhlYyBzdXBwb3J0IHRvIE1pbmktT1MgZm9y
IHJ1bm5pbmcgaW4geDg2IFBWSCBtb2RlLg0KPiANCj4gSSBhbSB3b25kZXJpbmcgaWYgeW91
IGhhZCBjb25zaWRlcmVkIHVzaW5nIGxpYnhjIHRvIGltcGxlbWVudCB0aGlzPw0KPiBUaGUg
b3JpZ2luYWwgcHYtZ3J1YjEgaXMgZG9pbmcgaXQgKHhlbi9zdHViZG9tL2dydWIva2V4ZWMu
YykNCg0KVGhlIGxpYnhjIChvciBtb3JlIHByZWNpc2U6IGxpYnhlbmd1ZXN0KSB1c2FnZSBp
cyBuZWVkZWQgdGhlcmUgb25seSBmb3INCmNvbnN0cnVjdGlvbiBvZiB0aGUgUFYgc3BlY2lm
aWMgcGFydHMgbGlrZSB0aGUgaW5pdGlhbCBwYWdlIHRhYmxlcyBhbmQNCnRoZSBwMm0gbWFw
LiBUaGUgbWFpbiBrZXhlYyBmdW5jdGlvbmFsaXR5IGFzIEkgbmVlZCBpdCBmb3IgUFZIIHN0
dWJkb20NCmlzIGluIGdydWIgaXRzZWxmLg0KDQpBZGRpdGlvbmFsbHkgSSd2ZSB3b3JrZWQg
aGFyZCB0byBnZXQgcmlkIG9mIG5vbi1zdGFibGUgWGVuIGxpYnJhcmllcyBpbg0KWGVuc3Rv
cmUtc3R1YmRvbS4gQWRkaW5nIHRoZW0gYWdhaW4ganVzdCBhZnRlciByZW1vdmFsIHdvdWxk
IGJlIHdlaXJkLg0KDQoNCkp1ZXJnZW4NCg==
--------------k5vYLtH0Ws1Zw0X044ySPUip
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------k5vYLtH0Ws1Zw0X044ySPUip--

--------------50GtZsWh6kbaI8e8RsWzcchH--

--------------Ov7BKYoL1OR330RAoMbHOmhN
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmffsbYFAwAAAAAACgkQsN6d1ii/Ey/N
hgf+M+Fq3eNeWSvmD8p4/hGDu97CFmlbeo3I80ntpjsjFkFO9pGcQquP/PtNhHkgjgHakNJueBIs
OaMCIN8eh3KsxduAX09ySfUVvfnfcgArXV8uIh73pQyzYjU9MF5I9LbtTrGH3qtlfYLL3PYolVSJ
YXK4Vfn82HxGwUOvC+3UTl2AXBYvM7KombhLeKPu1CkX8tsfZWgpqFG5n1HUDaJroWqWIxi400F7
zqP1AEVelYkrf/cj3Qa/mxGvwber1WWxOY+B8G6rC6hA2yuMZ3yIwgpd0j4PjxHuiSoH/k/s6z4w
RiMlKsVjexA7bPW1+YUs98PGDfLA+iWPNVLilog7qQ==
=2HmH
-----END PGP SIGNATURE-----

--------------Ov7BKYoL1OR330RAoMbHOmhN--


From minios-devel-bounces@lists.xenproject.org Sun Mar 23 14:57:24 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Mar 2025 14:57:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925025.1327911 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twMlP-00057z-60; Sun, 23 Mar 2025 14:57:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925025.1327911; Sun, 23 Mar 2025 14:57:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twMlP-00057s-38; Sun, 23 Mar 2025 14:57:23 +0000
Received: by outflank-mailman (input) for mailman id 925025;
 Sun, 23 Mar 2025 14:57:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VYxF=WK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1twMlN-0004jC-PM
 for minios-devel@lists.xenproject.org; Sun, 23 Mar 2025 14:57:21 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1df16d73-07f7-11f0-9ffa-bf95429c2676;
 Sun, 23 Mar 2025 15:57:19 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-ac2bdea5a38so600850266b.0
 for <minios-devel@lists.xenproject.org>; Sun, 23 Mar 2025 07:57:19 -0700 (PDT)
Received: from ?IPV6:2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b?
 (p200300e5873d1a008e99ce06aa4a2e7b.dip0.t-ipconnect.de.
 [2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac3ef86e514sm513243666b.35.2025.03.23.07.57.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 23 Mar 2025 07:57:17 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1df16d73-07f7-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742741838; x=1743346638; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=WdH+n5ZsFZ1e9SDqOoXbXvRhwi+aE9DjDljJHnPMIBk=;
        b=b94af7xInozHVY2++xkCRZGK3SN1DKjLDrWNg0U0vFcwY6gEAX0NfCt/YZl2iFCogH
         PBfyNcBgUCobTrRNuE0XwhM0R53JMVN0RMey0DGEo3PHOP750nkFz6tGX1fSt72ypQdz
         9cDuFl/lEYJ8kUfKlQ+tumCLOiEehTVqEeX96QWRMv6PyX4q8rKZVPWhk/z2dqjD4RvI
         I8j7poEtsdrIEtIkEm1vZO9jo9W1IK2yNxFLLzbUBGISETgWoClHhXmRiQR24SBLOXcA
         4SToEUOir2aupgEHud9Zr+EekulDfwkYxu+1u/lw4dPHGchyO3ZWV1YBTgnp1jWaPAsP
         Jo5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742741838; x=1743346638;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=WdH+n5ZsFZ1e9SDqOoXbXvRhwi+aE9DjDljJHnPMIBk=;
        b=qcqv79K2TbOMx8Qs9O1kRX/orCK2CL1rgTggFsXF6eCV4F2JvF1gLCdsnJQpYIsUWd
         8MxT4zLgyZgy4sc36kW+/PBsFjWfH53mswgaKyhf+zF8A8vyeOeBNijsoNckEVu321AE
         1PDZZdknL3NreeJypsQ/MJggfGmRcN/teryjWYsCRr1B4SJ5nE3ZurFsmGT+H0nvxIFj
         Xm+SU1wgAjIjyJFlZS/K2giGFLfim0g5MQgXzp++PdrSvC0cKuFCBWZUOk6wrbLngZ2w
         aVJqbLdgMfx+wuRfGyZRr3X3jWWKlzBUA84jfKrcs8tONFrMApW4waADhmR8mWN5jwxY
         TzbQ==
X-Forwarded-Encrypted: i=1; AJvYcCUb6XQiUlNaiYzTjaxbKpr09fqBmKsrr30guS0UIQUhhLm9lRNQkloNZX2s1n5/YJSk5rgMRUZ1S+skxGE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxg0a7Jpx/50rQUGjrzCF1MGuLhTF6Ix92bbXdsZ+Ij3kxmQjfX
	jY+2VX3yvDgTkH4e4YCe0qmkS1Q0CFYAFvJK+t9wzdS8G+6FbZPJF807DHYeRg5hmlomySigHSP
	oyGnqLA==
X-Gm-Gg: ASbGncsnk+LnNCzNMv2auOGpg+qjJvc7DKYAweviMmA4px2HCtsobkGsWG16HfNT6H3
	FS1B9bHeAGPhq4b7ybmMEFigwpJSK/sUL+PllN8FApmtGJ3HNjbshSS7GYEcMDAXpOjvlvhjDz+
	q9zEZpfIGe8w4wmhU4985j4gpOph4WRSRKZo2mkhD8V3aXSseGdA34CBCkFiYBZWLBVjju1KGo7
	npiP0A0tgXocqwP8/DdsMauRCicukZeaMBUHwzpiLMk/ba8qP2mQFfAschP3WU3uyaQS/szemqA
	uhvdrtts2QH6GcHsgdTyGBQHpdxCdYSSMj/2p9K3zY75FbJoxmyEV8nTVA9TM3oKOzpc6VKyccw
	o3t0OtoTV3qal9Y8vOovkh1K/MJthTKw7AHwr69Ad1L31+i6mKtETys1yICMvhEX28pCMqw==
X-Google-Smtp-Source: AGHT+IFfOE0BqQOHwwya9xngkInjobQNlGNE/78WGhVZPMZkiJX8j3THxJkwC3RAZUJja32O3HxEkQ==
X-Received: by 2002:a17:907:2d08:b0:ac2:e748:9f1c with SMTP id a640c23a62f3a-ac3f2267455mr927404566b.33.1742741838381;
        Sun, 23 Mar 2025 07:57:18 -0700 (PDT)
Message-ID: <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
Date: Sun, 23 Mar 2025 15:57:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <Z99PXOXocyuZtf_X@begin>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Q0X04zf4o7oMkpAI85Y62xI6"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Q0X04zf4o7oMkpAI85Y62xI6
Content-Type: multipart/mixed; boundary="------------40dumUshyvbmw6vMBLOWyoO3";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Jason Andryuk <jason.andryuk@amd.com>
Message-ID: <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
In-Reply-To: <Z99PXOXocyuZtf_X@begin>

--------------40dumUshyvbmw6vMBLOWyoO3
Content-Type: multipart/mixed; boundary="------------dDQE02dV7F0sVrhUNbepYu91"

--------------dDQE02dV7F0sVrhUNbepYu91
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMjMuMDMuMjUgMDE6MDEsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4gSnVlcmdlbiBH
cm9zcywgbGUgdmVuLiAyMSBtYXJzIDIwMjUgMTA6MzE6NDQgKzAxMDAsIGEgZWNyaXQ6DQo+
PiBBZGQgYSBmaWxlIG9wZXJhdGlvbnMgZnN0YXQgaG9vayB0byB0aGUgOXBmcyBmcm9udGVu
ZC4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5j
b20+DQo+PiBSZXZpZXdlZC1ieTogSmFzb24gQW5kcnl1ayA8amFzb24uYW5kcnl1a0BhbWQu
Y29tPg0KPj4gLS0tDQo+PiBWMjoNCj4+IC0gb3IgZmlsZSBhY2Nlc3MgbW9kZSBpbnRvIHN0
X21vZGUgKEphc29uIEFuZHJ5dWspDQo+PiAtLS0NCj4+ICAgOXBmcm9udC5jIHwgMjkgKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ICAgMSBmaWxlIGNoYW5nZWQsIDI5IGlu
c2VydGlvbnMoKykNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvOXBmcm9udC5jIGIvOXBmcm9udC5j
DQo+PiBpbmRleCAxNzQxZDYwMC4uNzI1N2EwN2UgMTAwNjQ0DQo+PiAtLS0gYS85cGZyb250
LmMNCj4+ICsrKyBiLzlwZnJvbnQuYw0KPj4gQEAgLTg1LDYgKzg1LDggQEAgc3RydWN0IGZp
bGVfOXBmcyB7DQo+PiAgIA0KPj4gICAjZGVmaW5lIFA5X1FJRF9TSVpFICAgIDEzDQo+PiAg
IA0KPj4gKyNkZWZpbmUgUUlEX1RZUEVfRElSICAgMHg4MCAgICAgLyogQXBwbGllcyB0byBx
aWRbMF0uICovDQo+PiArDQo+PiAgIHN0cnVjdCBwOV9oZWFkZXIgew0KPj4gICAgICAgdWlu
dDMyX3Qgc2l6ZTsNCj4+ICAgICAgIHVpbnQ4X3QgY21kOw0KPj4gQEAgLTk1MCw2ICs5NTIs
MzIgQEAgc3RhdGljIGludCB3cml0ZV85cGZzKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCB2
b2lkICpidWYsIHNpemVfdCBuYnl0ZXMpDQo+PiAgICAgICByZXR1cm4gcmV0Ow0KPj4gICB9
DQo+PiAgIA0KPj4gK3N0YXRpYyBpbnQgZnN0YXRfOXBmcyhzdHJ1Y3QgZmlsZSAqZmlsZSwg
c3RydWN0IHN0YXQgKmJ1ZikNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBmaWxlXzlwZnMgKmY5
cGZzID0gZmlsZS0+ZmlsZWRhdGE7DQo+PiArICAgIHN0cnVjdCBwOV9zdGF0IHN0YXQ7DQo+
PiArICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgIHJldCA9IHA5X3N0YXQoZjlwZnMtPmRl
diwgZjlwZnMtPmZpZCwgJnN0YXQpOw0KPj4gKyAgICBpZiAoIHJldCApDQo+PiArICAgIHsN
Cj4+ICsgICAgICAgIGVycm5vID0gRUlPOw0KPj4gKyAgICAgICAgcmV0dXJuIC0xOw0KPj4g
KyAgICB9DQo+PiArDQo+PiArICAgIGJ1Zi0+c3RfbW9kZSA9IChzdGF0LnFpZFswXSA9PSBR
SURfVFlQRV9ESVIpID8gU19JRkRJUiA6IFNfSUZSRUc7DQo+PiArICAgIGJ1Zi0+c3RfbW9k
ZSB8PSBzdGF0Lm1vZGUgJiAwNzc3Ow0KPj4gKyAgICBidWYtPnN0X2F0aW1lID0gc3RhdC5h
dGltZTsNCj4+ICsgICAgYnVmLT5zdF9tdGltZSA9IHN0YXQubXRpbWU7DQo+IA0KPiBTaG91
bGQgd2UgcGVyaGFwcyBhbHNvIGZpbGwgc3RfY3RpbWU/IExlYXZpbmcgaXQgYXQgMCBjb3Vs
ZCBzdXJwcmlzZQ0KPiBvdGhlciBzb2Z0d2FyZSBsYXllcnMuDQoNCkkgY2FuIHNldCBpdCB0
byB0aGUgc2FtZSB2YWx1ZSBhcyBzdF9tdGltZS4gSSBkb24ndCB0aGluayB0aGVyZSBpcyBh
IHdheQ0KdG8gZ2V0IHRoZSAicmVhbCIgY3RpbWUgdmFsdWUgdmlhIHRoZSA5cCBwcm90b2Nv
bC4NCg0KDQpKdWVyZ2VuDQo=
--------------dDQE02dV7F0sVrhUNbepYu91
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------dDQE02dV7F0sVrhUNbepYu91--

--------------40dumUshyvbmw6vMBLOWyoO3--

--------------Q0X04zf4o7oMkpAI85Y62xI6
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmfgIU0FAwAAAAAACgkQsN6d1ii/Ey9R
fwf/Y1yj6p786U/PIL0zY4D1syNOiZjmKXpGITCping8aoZz9wX8afrGBdF4zwVzoaf9+oejctP+
qA/iu9mgzwUp/sBZkGeterqWeUbADwAPFJN4AW8YJLNruOYGMedWTwThfZGnof0z34hW2H2iwUaG
7/zddhu/2gvB4JOyq73sHd+yt3crAzzsn53f7bObIn4rZnZvDFA/sLzRfOv/fToDNPXAtLr2YOVU
6p3SkDuhceBI5GkmC4frs9EhCHzS2olhMiwu/FLWcB6cS8ezn83YsR8EdCsEaWG5wbf2LCMDboMU
1EDIvBs812MLHx6iZY8pP7yh4hF9D/AahXsJeIGmHg==
=ozOc
-----END PGP SIGNATURE-----

--------------Q0X04zf4o7oMkpAI85Y62xI6--


From minios-devel-bounces@lists.xenproject.org Sun Mar 23 14:58:27 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Sun, 23 Mar 2025 14:58:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925038.1327934 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twMmQ-0005xt-Nm; Sun, 23 Mar 2025 14:58:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925038.1327934; Sun, 23 Mar 2025 14:58:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twMmQ-0005xd-KL; Sun, 23 Mar 2025 14:58:26 +0000
Received: by outflank-mailman (input) for mailman id 925038;
 Sun, 23 Mar 2025 14:58:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CaZ1=WK=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1twMmO-0005jR-Qk
 for minios-devel@lists.xenproject.org; Sun, 23 Mar 2025 14:58:24 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 40dd8031-07f7-11f0-9ffa-bf95429c2676;
 Sun, 23 Mar 2025 15:58:17 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 55FFDA47B9;
 Sun, 23 Mar 2025 15:58:17 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id gc5BGBd5RWQq; Sun, 23 Mar 2025 15:58:17 +0100 (CET)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id 1A7A3A20EC;
 Sun, 23 Mar 2025 15:58:17 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1twMmG-0000000Gng4-2HjL; Sun, 23 Mar 2025 15:58:16 +0100
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40dd8031-07f7-11f0-9ffa-bf95429c2676
Date: Sun, 23 Mar 2025 15:58:16 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
Message-ID: <Z-AhiCM8j--cbLBV@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com>
 <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
Organization: I am not organized

Jürgen Groß, le dim. 23 mars 2025 15:57:16 +0100, a ecrit:
> On 23.03.25 01:01, Samuel Thibault wrote:
> > Juergen Gross, le ven. 21 mars 2025 10:31:44 +0100, a ecrit:
> > > Add a file operations fstat hook to the 9pfs frontend.
> > > 
> > > Signed-off-by: Juergen Gross <jgross@suse.com>
> > > Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> > > ---
> > > V2:
> > > - or file access mode into st_mode (Jason Andryuk)
> > > ---
> > >   9pfront.c | 29 +++++++++++++++++++++++++++++
> > >   1 file changed, 29 insertions(+)
> > > 
> > > diff --git a/9pfront.c b/9pfront.c
> > > index 1741d600..7257a07e 100644
> > > --- a/9pfront.c
> > > +++ b/9pfront.c
> > > @@ -85,6 +85,8 @@ struct file_9pfs {
> > >   #define P9_QID_SIZE    13
> > > +#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
> > > +
> > >   struct p9_header {
> > >       uint32_t size;
> > >       uint8_t cmd;
> > > @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
> > >       return ret;
> > >   }
> > > +static int fstat_9pfs(struct file *file, struct stat *buf)
> > > +{
> > > +    struct file_9pfs *f9pfs = file->filedata;
> > > +    struct p9_stat stat;
> > > +    int ret;
> > > +
> > > +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
> > > +    if ( ret )
> > > +    {
> > > +        errno = EIO;
> > > +        return -1;
> > > +    }
> > > +
> > > +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
> > > +    buf->st_mode |= stat.mode & 0777;
> > > +    buf->st_atime = stat.atime;
> > > +    buf->st_mtime = stat.mtime;
> > 
> > Should we perhaps also fill st_ctime? Leaving it at 0 could surprise
> > other software layers.
> 
> I can set it to the same value as st_mtime.

That'd be preferrable, yes.

With that,

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Thanks!
Samuel


From minios-devel-bounces@lists.xenproject.org Mon Mar 24 09:25:22 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Mar 2025 09:25:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925172.1328048 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twe3c-00060H-SU; Mon, 24 Mar 2025 09:25:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925172.1328048; Mon, 24 Mar 2025 09:25:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twe3c-00060A-Pr; Mon, 24 Mar 2025 09:25:20 +0000
Received: by outflank-mailman (input) for mailman id 925172;
 Mon, 24 Mar 2025 09:25:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=sMR0=WL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1twe3b-0005ik-RF
 for minios-devel@lists.xenproject.org; Mon, 24 Mar 2025 09:25:19 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id de385b51-0891-11f0-9ffa-bf95429c2676;
 Mon, 24 Mar 2025 10:25:04 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-39127512371so2597984f8f.0
 for <minios-devel@lists.xenproject.org>; Mon, 24 Mar 2025 02:25:04 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43d43f43e35sm165757685e9.14.2025.03.24.02.25.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 24 Mar 2025 02:25:03 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de385b51-0891-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742808303; x=1743413103; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=EHZi3PeeiNk1F7JMhHvro11yFMWwmoHFX4Dhm0I83T0=;
        b=CvTKi727KyahO/31CXoyly1GYuIF1uG7i65tv7J/NCHuMBz92fEFhdskylx8C9txo+
         qS/XMNQ7IbNOhzUduEAnGPmWm0AUU52PIN+PJNroGUTI3oKqRJhtiPPbfxBFu3OTx1VP
         0wKbk7pLfgOp8V4boQt0WabbAbUiGiVPoNuSZOQ2QoNvYUFBp6AAHlgYW6S/MvQqbibY
         8Xpchl8NPcM/fjEFnD/ubB2bQwe23pM5dLW/l//n/ZyGxbQuJ6Gf9eqOpqNeDnJiTEbH
         vRKTXIDOu15U4UyQdgAQ5hfYV9rfUHz1nCv7jaFzCa9D6oz/3ikDitJ/i15IbtD1y8Cq
         kppA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742808303; x=1743413103;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=EHZi3PeeiNk1F7JMhHvro11yFMWwmoHFX4Dhm0I83T0=;
        b=T2qr2k334HZWymyLdU9b/WzyP1ltBAHGz7/9Hg2j7xBTY4Hcn5Eoi0GVhpiCy+tM8+
         AgY8bJW+tD/BvMbbyhQFnu42ImlIsjr35kTR7tQb8T9t8b4HvjLujND2WdOfkxeHNOzX
         kuW7COTa1dSC+WZtAJqYn91WG9mgElKa9wkBfyBtbQ3qWdnyxrdGTkz4qHO5fLlo4GRs
         Nox6qG5QcLr6z2hkUNK7w7AmDrzFmjmSHFzRLnqui5OzeeEif/ANG2YtmOJa6sp40wpL
         Mj1+udJqFjKg9TT2w8ClGTKFmEtWcvWG8Xv08aIwDLflxmHN3FF4HbyxNvZHOXfIWCqm
         Thtg==
X-Forwarded-Encrypted: i=1; AJvYcCUkjMF2oYFtiTMbNNqYNsh/boiglRKAE2EHUN7hopxXqzknUs8vEXIDBq/d685viMAzoRjmBz+FOOHADsc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwTwFPOZPRt4oY7E15FXPCTAngACy9bhuBmeDiqWNbOPjsMxCX8
	/ZLdqC6fHN6w6Wx5xO0PBNmaU1B9mp2BA5NcxgrtiKfllQdq6QAY3GThs31leg==
X-Gm-Gg: ASbGncu5tra8h4E2BRkfxugK3X8V1JVgAfTaJD1LT2MscCm0Ql6xJdKfCm6cVR9f/sk
	6tpFwuIuOA9QinFyP25fgUZDXHqhtcLXpzjTXEeAEZsHv+83u0XXfd6HhgN3fNr9FJlxWrIcPMM
	8dYSEJKtBHFA+bVG2pIbuyNDtg8NCBbFu13hXUeMT1Z15kvPt0kyBnlUSdKltuFTY/GnOvT7fDc
	Qm4RsGs0bGR+2rBUE7PgwT8oX13GUaIB0bzgKbAD+DrU0i5vnByQjNtoUxtY8r9NEYHM/LKuxq+
	oplTtRd9YvnuDW79mg9eSTGCeBJ77ArBLK9Z4bOGQ9XilmkVuS5NlJOvaKFLs0uGox/DngpyJOq
	u0Q4b9jk+G5ULvb07OE9gLuh7wt/K1Q==
X-Google-Smtp-Source: AGHT+IFbbsFGCjyG3t72PV8ct0mM5c+W7Tk6feIZABFxSYtjQXaJ4FNIeUO74msGQ/D2jDOOslXh0g==
X-Received: by 2002:a5d:47c6:0:b0:391:2e31:c7e8 with SMTP id ffacd0b85a97d-3997f8f607emr11024176f8f.2.1742808303508;
        Mon, 24 Mar 2025 02:25:03 -0700 (PDT)
Message-ID: <678026b3-c794-4b60-83e6-ff2a54384171@suse.com>
Date: Mon, 24 Mar 2025 10:25:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 03/12] add elf.h
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20250321092451.17309-1-jgross@suse.com>
 <20250321092451.17309-4-jgross@suse.com>
 <e616cf59-bcb6-478d-87b5-f35a51ce1dda@suse.com>
 <84fa74ee-70e4-4318-9aff-12dcb8db50c1@suse.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <84fa74ee-70e4-4318-9aff-12dcb8db50c1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21.03.2025 16:53, Jürgen Groß wrote:
> On 21.03.25 14:51, Jan Beulich wrote:
>> On 21.03.2025 10:24, Juergen Gross wrote:
>>> +/* e_type */
>>> +#define ET_NONE      0           /* No file type */
>>> +#define ET_REL       1           /* relocatable file */
>>> +#define ET_EXEC      2           /* executable file */
>>> +#define ET_DYN       3           /* shared object file */
>>> +#define ET_CORE      4           /* core file */
>>> +#define ET_NUM       5           /* number of types */
>>> +#define ET_LOPROC    0xff00      /* reserved range for processor */
>>> +#define ET_HIPROC    0xffff      /*   specific e_type */
>>> +
>>> +/* e_machine */
>>> +#define EM_NONE      0           /* No Machine */
>>> +#define EM_M32       1           /* AT&T WE 32100 */
>>> +#define EM_SPARC     2           /* SPARC */
>>> +#define EM_386       3           /* Intel 80386 */
>>> +#define EM_68K       4           /* Motorola 68000 */
>>> +#define EM_88K       5           /* Motorola 88000 */
>>> +#define EM_486       6           /* Intel 80486 - unused? */
>>> +#define EM_860       7           /* Intel 80860 */
>>> +#define EM_MIPS      8           /* MIPS R3000 Big-Endian only */
>>> +/*
>>> + * Don't know if EM_MIPS_RS4_BE,
>>> + * EM_SPARC64, EM_PARISC,
>>> + * or EM_PPC are ABI compliant
>>> + */
>>> +#define EM_MIPS_RS4_BE 10        /* MIPS R4000 Big-Endian */
>>> +#define EM_SPARC64     11        /* SPARC v9 64-bit unoffical */
>>> +#define EM_PARISC      15        /* HPPA */
>>> +#define EM_SPARC32PLUS 18        /* Enhanced instruction set SPARC */
>>> +#define EM_PPC         20        /* PowerPC */
>>> +#define EM_PPC64       21        /* PowerPC 64-bit */
>>> +#define EM_ARM         40        /* Advanced RISC Machines ARM */
>>> +#define EM_ALPHA       41        /* DEC ALPHA */
>>> +#define EM_SPARCV9     43        /* SPARC version 9 */
>>> +#define EM_ALPHA_EXP   0x9026    /* DEC ALPHA */
>>> +#define EM_IA_64       50        /* Intel Merced */
>>> +#define EM_X86_64      62        /* AMD x86-64 architecture */
>>> +#define EM_VAX         75        /* DEC VAX */
>>> +#define EM_AARCH64    183        /* ARM 64-bit */
>>
>> Here I similarly think some stripping down might help. Doing so would then
>> also permit to leave out the comment in the middle.
> 
> Here I'm a little bit more on the edge. Some historical entries can
> probably be dropped, but which ones would want to stay?

The ones we presently need for any of the architectures we have (partial)
ports for in the hypervisor, or that the hypervisor targets for compatibility.

Jan


From minios-devel-bounces@lists.xenproject.org Mon Mar 24 10:21:54 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Mar 2025 10:21:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925271.1328148 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twewL-0006Zu-3a; Mon, 24 Mar 2025 10:21:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925271.1328148; Mon, 24 Mar 2025 10:21:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twewK-0006Yg-V8; Mon, 24 Mar 2025 10:21:52 +0000
Received: by outflank-mailman (input) for mailman id 925271;
 Mon, 24 Mar 2025 10:21:52 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=sMR0=WL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1twewK-0006Wy-7i
 for minios-devel@lists.xenproject.org; Mon, 24 Mar 2025 10:21:52 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cc715381-0899-11f0-9ffa-bf95429c2676;
 Mon, 24 Mar 2025 11:21:50 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-3913fdd0120so2216239f8f.0
 for <minios-devel@lists.xenproject.org>; Mon, 24 Mar 2025 03:21:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-39ac3ce3dd1sm2050424f8f.88.2025.03.24.03.21.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 24 Mar 2025 03:21:49 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cc715381-0899-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742811710; x=1743416510; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=RRFVJfT6Xr5zCYwrOJ8qr+T0oepcd/arFvDtve0y1Is=;
        b=cl1AWW7Z6UMQ3T5mrPPu/AjtdVpdaksnFocO5zByCYtlk1Hy0g6ob7aeQRkYXUI7QU
         AK4tsJ3C81bUVXy79heBmLXFQ8o1wjgbRlUSQvGdnSjq7eEbGAM1tNKG2YgO1HIdjf+F
         52Y49dIX7mSm4AFSCcBOOsnVphL+PZBMoVhhjmd1EBUhftmfh5m+VjZLt/RZqQ/JDCjK
         KJ1JdOrtpdxu2oXMHdJBU40GGQnkc1lx6mk+OhALjuwGRpJez3s2/tgCQM0llrubXk6Z
         8Zm68nRv1dkxx3vfhfKDj+bOiXvhBT/mkelexEpxY8YMHketMC7dwpVCZye6Tq0FTLyM
         jXIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742811710; x=1743416510;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=RRFVJfT6Xr5zCYwrOJ8qr+T0oepcd/arFvDtve0y1Is=;
        b=PPVbjr4q56pPH8BiY9pcWUlky7kN3IAa+u8VPvFyCc1hq8hseynB/Az89aO4+ObcNK
         8o6mBlaFAmKrQ14pDwE2K2LE7yKfNoe6/YUIRZL9i5k0E8IkCyVf/gKGtYIgIHUE+NZG
         AkWcn4eq+Y5eWpyFqUBI8Exg0jWxjyPWorTcQ7ZvxtNDha+pieFfcwDDPf7noLg33jZI
         5TAFuOV67Y9SA4keAro8lptYCEcwhFM3w8zno6A2npLh0wFklx+MzbEFwcsGzBDknfqm
         OY1jtOcbLkloAUUvv9HMBrMFiB8sdt3JHeuXkd3AzDTAn2C4YF92s8hlHHNwP6hZhOiE
         v6qQ==
X-Forwarded-Encrypted: i=1; AJvYcCVFeZ+GU7I/eVUfw4p7EAiedX/Por2HBbmfw21KwA08+iLa7X6rjvroEkB5GKJcjR0Ra/cxS7iv7a7dhtA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxvOH6Tj9MM5JW24KbEHwYH0BVCTN24wb1PdARg5Vt+aBCoghzn
	9N8UHL/a2tOMXAoHmokKtVW3ziOQ8khjHn0LsGbWsliuiHIir8HHsKiHBoFwTQ==
X-Gm-Gg: ASbGnctMoT85CzCVyXaze66Vh2BoHgrirWDOvlQekriZb1TSO4J6zGUmduHw6IXJwsZ
	hXokbp/yxEZzCbHMNpnszDTyZCQQuFu8F8tDAPbbNeVf6n2e3XXZdrJvWnRSGD/kpuJr/sZfc/1
	SA4QfGvDrvVhrYt5SIVNq7DmiRhvs3UzXV4vQZ+cdlv9O8BS839eWwu8XrmLKTh65vP0tdy7yhZ
	74NOJQIzvYqM+AzzhCodTbtQFTrNpM517TcL8c0g4IayOHOfiCINZ/LF7L5sxR2gniFqU6IQ+19
	uzu5Vlq9xFTGaincbp9+H61b62U7RCVnSS/hD2cDTihCWXgLdxspKfhNhf6/eXNqdTffV7Za8Oq
	FBbshWTJwspja/eHeJgn3XtDPt7yEnA==
X-Google-Smtp-Source: AGHT+IGrK/WQi0YItI7dNyyyOhL9/8Easu+g0kbe2h8NxSZ7S2slu67rDAigqzcHVj+wkXhp04emPg==
X-Received: by 2002:a05:6000:1a8d:b0:391:3207:2e6f with SMTP id ffacd0b85a97d-3997f932d2fmr8817154f8f.42.1742811709609;
        Mon, 24 Mar 2025 03:21:49 -0700 (PDT)
Message-ID: <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com>
Date: Mon, 24 Mar 2025 11:21:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
Content-Language: en-US
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Jason Andryuk <jason.andryuk@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.03.2025 15:57, Jürgen Groß wrote:
> On 23.03.25 01:01, Samuel Thibault wrote:
>> Juergen Gross, le ven. 21 mars 2025 10:31:44 +0100, a ecrit:
>>> Add a file operations fstat hook to the 9pfs frontend.
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
>>> ---
>>> V2:
>>> - or file access mode into st_mode (Jason Andryuk)
>>> ---
>>>   9pfront.c | 29 +++++++++++++++++++++++++++++
>>>   1 file changed, 29 insertions(+)
>>>
>>> diff --git a/9pfront.c b/9pfront.c
>>> index 1741d600..7257a07e 100644
>>> --- a/9pfront.c
>>> +++ b/9pfront.c
>>> @@ -85,6 +85,8 @@ struct file_9pfs {
>>>   
>>>   #define P9_QID_SIZE    13
>>>   
>>> +#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
>>> +
>>>   struct p9_header {
>>>       uint32_t size;
>>>       uint8_t cmd;
>>> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
>>>       return ret;
>>>   }
>>>   
>>> +static int fstat_9pfs(struct file *file, struct stat *buf)
>>> +{
>>> +    struct file_9pfs *f9pfs = file->filedata;
>>> +    struct p9_stat stat;
>>> +    int ret;
>>> +
>>> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
>>> +    if ( ret )
>>> +    {
>>> +        errno = EIO;
>>> +        return -1;
>>> +    }
>>> +
>>> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
>>> +    buf->st_mode |= stat.mode & 0777;
>>> +    buf->st_atime = stat.atime;
>>> +    buf->st_mtime = stat.mtime;
>>
>> Should we perhaps also fill st_ctime? Leaving it at 0 could surprise
>> other software layers.
> 
> I can set it to the same value as st_mtime.

Maybe the smaller of atime and mtime?

Jan

> I don't think there is a way
> to get the "real" ctime value via the 9p protocol.
> 
> 
> Juergen



From minios-devel-bounces@lists.xenproject.org Mon Mar 24 10:30:47 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Mar 2025 10:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925303.1328177 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twf4w-0000ik-8x; Mon, 24 Mar 2025 10:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925303.1328177; Mon, 24 Mar 2025 10:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twf4w-0000id-59; Mon, 24 Mar 2025 10:30:46 +0000
Received: by outflank-mailman (input) for mailman id 925303;
 Mon, 24 Mar 2025 10:30:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=XGTf=WL=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1twf4u-0000cl-MF
 for minios-devel@lists.xenproject.org; Mon, 24 Mar 2025 10:30:44 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 072795e4-089b-11f0-9ffa-bf95429c2676;
 Mon, 24 Mar 2025 11:30:38 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 00E54A0215;
 Mon, 24 Mar 2025 11:30:38 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id coyK-WkaRptV; Mon, 24 Mar 2025 11:30:37 +0100 (CET)
Received: from begin (nat-inria-interne-52-gw-01-bso.bordeaux.inria.fr
 [194.199.1.52])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id B94B3A01A9;
 Mon, 24 Mar 2025 11:30:37 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1twf4n-0000000A8Du-29Je; Mon, 24 Mar 2025 11:30:37 +0100
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 072795e4-089b-11f0-9ffa-bf95429c2676
Date: Mon, 24 Mar 2025 11:30:37 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
Message-ID: <Z-E0TUu_LWkXt-wI@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Jan Beulich <jbeulich@suse.com>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com>
 <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
 <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com>
Organization: I am not organized

Jan Beulich, le lun. 24 mars 2025 11:21:48 +0100, a ecrit:
> On 23.03.2025 15:57, Jürgen Groß wrote:
> > On 23.03.25 01:01, Samuel Thibault wrote:
> >> Juergen Gross, le ven. 21 mars 2025 10:31:44 +0100, a ecrit:
> >>> Add a file operations fstat hook to the 9pfs frontend.
> >>>
> >>> Signed-off-by: Juergen Gross <jgross@suse.com>
> >>> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> >>> ---
> >>> V2:
> >>> - or file access mode into st_mode (Jason Andryuk)
> >>> ---
> >>>   9pfront.c | 29 +++++++++++++++++++++++++++++
> >>>   1 file changed, 29 insertions(+)
> >>>
> >>> diff --git a/9pfront.c b/9pfront.c
> >>> index 1741d600..7257a07e 100644
> >>> --- a/9pfront.c
> >>> +++ b/9pfront.c
> >>> @@ -85,6 +85,8 @@ struct file_9pfs {
> >>>   
> >>>   #define P9_QID_SIZE    13
> >>>   
> >>> +#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
> >>> +
> >>>   struct p9_header {
> >>>       uint32_t size;
> >>>       uint8_t cmd;
> >>> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
> >>>       return ret;
> >>>   }
> >>>   
> >>> +static int fstat_9pfs(struct file *file, struct stat *buf)
> >>> +{
> >>> +    struct file_9pfs *f9pfs = file->filedata;
> >>> +    struct p9_stat stat;
> >>> +    int ret;
> >>> +
> >>> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
> >>> +    if ( ret )
> >>> +    {
> >>> +        errno = EIO;
> >>> +        return -1;
> >>> +    }
> >>> +
> >>> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
> >>> +    buf->st_mode |= stat.mode & 0777;
> >>> +    buf->st_atime = stat.atime;
> >>> +    buf->st_mtime = stat.mtime;
> >>
> >> Should we perhaps also fill st_ctime? Leaving it at 0 could surprise
> >> other software layers.
> > 
> > I can set it to the same value as st_mtime.
> 
> Maybe the smaller of atime and mtime?

That'd be better, yes.

Samuel


From minios-devel-bounces@lists.xenproject.org Mon Mar 24 11:18:26 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Mar 2025 11:18:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925368.1328236 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twfp2-00055p-U9; Mon, 24 Mar 2025 11:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925368.1328236; Mon, 24 Mar 2025 11:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twfp2-000553-Ow; Mon, 24 Mar 2025 11:18:24 +0000
Received: by outflank-mailman (input) for mailman id 925368;
 Mon, 24 Mar 2025 11:18:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=mc85=WL=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1twfp1-00052W-If
 for minios-devel@lists.xenproject.org; Mon, 24 Mar 2025 11:18:23 +0000
Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com
 [2a00:1450:4864:20::535])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b1309b49-08a1-11f0-9ffa-bf95429c2676;
 Mon, 24 Mar 2025 12:18:21 +0100 (CET)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5e5e8274a74so6441760a12.1
 for <minios-devel@lists.xenproject.org>; Mon, 24 Mar 2025 04:18:21 -0700 (PDT)
Received: from ?IPV6:2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b?
 (p200300e5873d1a008e99ce06aa4a2e7b.dip0.t-ipconnect.de.
 [2003:e5:873d:1a00:8e99:ce06:aa4a:2e7b])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac3ef8675a9sm657615266b.28.2025.03.24.04.18.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 24 Mar 2025 04:18:19 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1309b49-08a1-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742815100; x=1743419900; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=M/aD0jqqsiGXVDg4jgzyO6tncFjvnQC7Tk3Evr0Dzxs=;
        b=Fvr28KxD4ITlkw3Fj04lAupbn8LMVId043Eepf4WjBiE/hOxLc+PJFfYfYRbWxHs1X
         gJnOxnDKwE1WCBitYOiUlggioTzqmTck65ngO5RU0u+hcDTBrc2PiL9M2Cl5Wc5e3cY8
         jhkT8pW7r6FZ6hIv4/Y7HYW6D3xT0zvfLSBUaMeCF5cik0N6nqNdNE7u3Mv9XczLjTp9
         P14tzrhZ5Gc3w65ykMGKOa0Vyn+9TaCuuxzeMYshz14tmZTubpcsIuI8TG8IkKcLth/z
         ahORfeT1hFYwJNyLrPSwnhDylZ49nU46gM/7bHSWwFYrRJHIqF0biNj94xKNM1LFg0QG
         8FDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742815100; x=1743419900;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=M/aD0jqqsiGXVDg4jgzyO6tncFjvnQC7Tk3Evr0Dzxs=;
        b=h3hGliFzotFSEvBcHm4msBHUIAM1R4MjPBPcvrOfTz3YzGCfuyPxxpU7XKb6phZ24+
         IK5ql3wv3scFxq/0mdWCkESROyV3/S0onC/woQXyGnhZKKD62sHsHfU07zpkWPZSKGp5
         RSmk0qBzkRtjZYl3G4OY1r6y0BZTMOPnjmMcbHu1HsZaprZ1ApEe1AZgEdjP+c5qQyJA
         WRE2okLE3IQOjUhjrcqUZ2UWFRtUP4axphRGsyZeeIPaWWgdGc7DbvbXdaN5kqXgQVpk
         mDD4FjF0ZAt60kh9vNy3o2w+XvnuTN9ybsfWjH+vvSYCEjoWGquVfb0AS24rkgRTjPuA
         z6Dw==
X-Forwarded-Encrypted: i=1; AJvYcCX/G30wssnbx0iLssPjaMacFcu8XmdgMcH/M0oGOVmEuTJ/UPGNfVeBone2+aiOkvEYXTAXAujrh8UINvk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzfWToFhcxJ6vYzX2EXuaT0oZYlwFE7MPXOXLr3OE0qT+9RRT4z
	43JxNUBlU10d/eLv6PSknaPJvvCarTPVp3Jr2q6IjiiZTLJdvc8mz9fa5KzBsjQ2ArbtLKGGhQl
	tAtX8WQ==
X-Gm-Gg: ASbGncuL0GSjyavtuqigSAJW9amqsl7qvFYiIBzwiwYn4Bz7EGxEQfQ1xrR8poHibut
	TCEkCTNyLnBl9COFWnlDeuB0NGhjd/Vx76m6ZNlS8xgWZEm2Ni6luwdt3/UBRUJlJPV4I+wZe9+
	840/usosxVtv4uIvgDJVDTX6px1A9EIqsdaEBGmRBSUxL4z+i/BQTKsrK7vJBTUhQ2Bcobjceo5
	0pzUOtJm9GPgYm8K1VXca7H11Iv8pKXxLdJSVUWXlojjOpSUKfbjT6ouxfTJG4Xy8j6PtpGZdyl
	aKNXLciHpVeMydOZ4gTY0f3o2z0t3XRGNqdiI3TACbhInwjNOGqW6v/97JsRH1FvJE74ZE4NYxg
	7yZMw35PrZBIpOx+bCcHVD9i2DofiveZKXPBrghVEqTunh3f4uWNWoVio35IqzVuNpcDGqA==
X-Google-Smtp-Source: AGHT+IGQqLX9WqN5pq9/5m9ht3nL/oNNGecIcBTfHjbistTUweg0GSoFCLbMCLeIyUdL9BLqJ2vV5w==
X-Received: by 2002:a17:907:bc8b:b0:ac4:4cd:c26c with SMTP id a640c23a62f3a-ac404cdc6eamr915901666b.35.1742815099829;
        Mon, 24 Mar 2025 04:18:19 -0700 (PDT)
Message-ID: <2fa05dd3-c5ae-4e72-b42d-260433590187@suse.com>
Date: Mon, 24 Mar 2025 12:18:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jan Beulich <jbeulich@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, Jason Andryuk <jason.andryuk@amd.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
 <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com> <Z-E0TUu_LWkXt-wI@begin>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <Z-E0TUu_LWkXt-wI@begin>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------93VhOJVDM4Aui2kdG0uWoMhH"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------93VhOJVDM4Aui2kdG0uWoMhH
Content-Type: multipart/mixed; boundary="------------sWzNZouI0XYebMzUCklyKNWW";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Jan Beulich <jbeulich@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, Jason Andryuk <jason.andryuk@amd.com>
Message-ID: <2fa05dd3-c5ae-4e72-b42d-260433590187@suse.com>
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
 <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com> <Z-E0TUu_LWkXt-wI@begin>
In-Reply-To: <Z-E0TUu_LWkXt-wI@begin>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------sWzNZouI0XYebMzUCklyKNWW
Content-Type: multipart/mixed; boundary="------------x2sEk6Xx3DBccBIYmmETXiO5"

--------------x2sEk6Xx3DBccBIYmmETXiO5
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMjQuMDMuMjUgMTE6MzAsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4gSmFuIEJldWxp
Y2gsIGxlIGx1bi4gMjQgbWFycyAyMDI1IDExOjIxOjQ4ICswMTAwLCBhIGVjcml0Og0KPj4g
T24gMjMuMDMuMjAyNSAxNTo1NywgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4+PiBPbiAyMy4w
My4yNSAwMTowMSwgU2FtdWVsIFRoaWJhdWx0IHdyb3RlOg0KPj4+PiBKdWVyZ2VuIEdyb3Nz
LCBsZSB2ZW4uIDIxIG1hcnMgMjAyNSAxMDozMTo0NCArMDEwMCwgYSBlY3JpdDoNCj4+Pj4+
IEFkZCBhIGZpbGUgb3BlcmF0aW9ucyBmc3RhdCBob29rIHRvIHRoZSA5cGZzIGZyb250ZW5k
Lg0KPj4+Pj4NCj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0Bz
dXNlLmNvbT4NCj4+Pj4+IFJldmlld2VkLWJ5OiBKYXNvbiBBbmRyeXVrIDxqYXNvbi5hbmRy
eXVrQGFtZC5jb20+DQo+Pj4+PiAtLS0NCj4+Pj4+IFYyOg0KPj4+Pj4gLSBvciBmaWxlIGFj
Y2VzcyBtb2RlIGludG8gc3RfbW9kZSAoSmFzb24gQW5kcnl1aykNCj4+Pj4+IC0tLQ0KPj4+
Pj4gICAgOXBmcm9udC5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+
Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspDQo+Pj4+Pg0KPj4+Pj4g
ZGlmZiAtLWdpdCBhLzlwZnJvbnQuYyBiLzlwZnJvbnQuYw0KPj4+Pj4gaW5kZXggMTc0MWQ2
MDAuLjcyNTdhMDdlIDEwMDY0NA0KPj4+Pj4gLS0tIGEvOXBmcm9udC5jDQo+Pj4+PiArKysg
Yi85cGZyb250LmMNCj4+Pj4+IEBAIC04NSw2ICs4NSw4IEBAIHN0cnVjdCBmaWxlXzlwZnMg
ew0KPj4+Pj4gICAgDQo+Pj4+PiAgICAjZGVmaW5lIFA5X1FJRF9TSVpFICAgIDEzDQo+Pj4+
PiAgICANCj4+Pj4+ICsjZGVmaW5lIFFJRF9UWVBFX0RJUiAgIDB4ODAgICAgIC8qIEFwcGxp
ZXMgdG8gcWlkWzBdLiAqLw0KPj4+Pj4gKw0KPj4+Pj4gICAgc3RydWN0IHA5X2hlYWRlciB7
DQo+Pj4+PiAgICAgICAgdWludDMyX3Qgc2l6ZTsNCj4+Pj4+ICAgICAgICB1aW50OF90IGNt
ZDsNCj4+Pj4+IEBAIC05NTAsNiArOTUyLDMyIEBAIHN0YXRpYyBpbnQgd3JpdGVfOXBmcyhz
dHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbmJ5dGVzKQ0KPj4+
Pj4gICAgICAgIHJldHVybiByZXQ7DQo+Pj4+PiAgICB9DQo+Pj4+PiAgICANCj4+Pj4+ICtz
dGF0aWMgaW50IGZzdGF0XzlwZnMoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzdGF0ICpi
dWYpDQo+Pj4+PiArew0KPj4+Pj4gKyAgICBzdHJ1Y3QgZmlsZV85cGZzICpmOXBmcyA9IGZp
bGUtPmZpbGVkYXRhOw0KPj4+Pj4gKyAgICBzdHJ1Y3QgcDlfc3RhdCBzdGF0Ow0KPj4+Pj4g
KyAgICBpbnQgcmV0Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICByZXQgPSBwOV9zdGF0KGY5cGZz
LT5kZXYsIGY5cGZzLT5maWQsICZzdGF0KTsNCj4+Pj4+ICsgICAgaWYgKCByZXQgKQ0KPj4+
Pj4gKyAgICB7DQo+Pj4+PiArICAgICAgICBlcnJubyA9IEVJTzsNCj4+Pj4+ICsgICAgICAg
IHJldHVybiAtMTsNCj4+Pj4+ICsgICAgfQ0KPj4+Pj4gKw0KPj4+Pj4gKyAgICBidWYtPnN0
X21vZGUgPSAoc3RhdC5xaWRbMF0gPT0gUUlEX1RZUEVfRElSKSA/IFNfSUZESVIgOiBTX0lG
UkVHOw0KPj4+Pj4gKyAgICBidWYtPnN0X21vZGUgfD0gc3RhdC5tb2RlICYgMDc3NzsNCj4+
Pj4+ICsgICAgYnVmLT5zdF9hdGltZSA9IHN0YXQuYXRpbWU7DQo+Pj4+PiArICAgIGJ1Zi0+
c3RfbXRpbWUgPSBzdGF0Lm10aW1lOw0KPj4+Pg0KPj4+PiBTaG91bGQgd2UgcGVyaGFwcyBh
bHNvIGZpbGwgc3RfY3RpbWU/IExlYXZpbmcgaXQgYXQgMCBjb3VsZCBzdXJwcmlzZQ0KPj4+
PiBvdGhlciBzb2Z0d2FyZSBsYXllcnMuDQo+Pj4NCj4+PiBJIGNhbiBzZXQgaXQgdG8gdGhl
IHNhbWUgdmFsdWUgYXMgc3RfbXRpbWUuDQo+Pg0KPj4gTWF5YmUgdGhlIHNtYWxsZXIgb2Yg
YXRpbWUgYW5kIG10aW1lPw0KPiANCj4gVGhhdCdkIGJlIGJldHRlciwgeWVzLg0KDQpBY2Nv
cmRpbmcgdG8gdGhlIHJlZmVyZW5jZXMgSSBjb3VsZCBmaW5kIGN0aW1lIGlzIGNoYW5nZWQg
d2hlbmV2ZXINCmVpdGhlciBmaWxlIGNvbnRlbnRzIE9SIGZpbGUgc3RhdHVzICh1aWQsIGdp
ZCwgcGVybWlzc2lvbnMpIGFyZQ0KbW9kaWZpZWQuIFNvIHVzaW5nIHRoZSBzYW1lIHZhbHVl
IGFzIG10aW1lIHNlZW1zIGFwcHJvcHJpYXRlLg0KDQoNCkp1ZXJnZW4NCg==
--------------x2sEk6Xx3DBccBIYmmETXiO5
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------x2sEk6Xx3DBccBIYmmETXiO5--

--------------sWzNZouI0XYebMzUCklyKNWW--

--------------93VhOJVDM4Aui2kdG0uWoMhH
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmfhP3oFAwAAAAAACgkQsN6d1ii/Ey/n
hQf+OO6Q3UPo9Z+MUOHsC0v80drmqVbHddPOdqSjQJKzoVnqxLhBcLi2oy8p2GQU/A/wvWIS3XP0
cQ0s4cRzacoOwLq6SGQlI/ms0OUF93mdGD4KjWy9MsSkoDvWOuMQp3du6qK9m3U90gkm85C3PI2N
QE2W2WLokobgz0CaM48D+ozYjfNzdoYllwaJQTYOsz6aSy6WNIHi/yBnrLB+Aa6cs367guuAHA+t
QR6u9Ev/dyZO2+6L5bIdrsNum1u3VIybHboSa5UiTHSM/OvJREZXyk3Uz38OewlQD+yTiUnsu6Cf
a/oF8f1fSv/PiIhbR/loWmNxcz/sEo8AEUlJIOj//w==
=DpCV
-----END PGP SIGNATURE-----

--------------93VhOJVDM4Aui2kdG0uWoMhH--


From minios-devel-bounces@lists.xenproject.org Mon Mar 24 11:26:27 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 24 Mar 2025 11:26:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.925391.1328255 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twfwo-0008Il-Mq; Mon, 24 Mar 2025 11:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 925391.1328255; Mon, 24 Mar 2025 11:26:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1twfwo-0008Id-K2; Mon, 24 Mar 2025 11:26:26 +0000
Received: by outflank-mailman (input) for mailman id 925391;
 Mon, 24 Mar 2025 11:26:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=sMR0=WL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1twfwn-0008Db-Ut
 for minios-devel@lists.xenproject.org; Mon, 24 Mar 2025 11:26:25 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d1cb3b39-08a2-11f0-9ea2-5ba50f476ded;
 Mon, 24 Mar 2025 12:26:25 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-43ce70f9afbso42516875e9.0
 for <minios-devel@lists.xenproject.org>; Mon, 24 Mar 2025 04:26:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43d440ed4d9sm169361705e9.33.2025.03.24.04.26.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 24 Mar 2025 04:26:23 -0700 (PDT)
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1cb3b39-08a2-11f0-9ea2-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1742815584; x=1743420384; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=IL+D97LwqZy6NUkik4VWtwwtkvEltgXEbuNKczi+Dqs=;
        b=KYOfmJAC0BtKoDTfEkXcsrQjk4sEkvob0coW8sRNN5O1mFWUWMKPXFik2MmYzyHaWR
         9sx+bhrvtC7t3qeo3B8QJ9APtFz2k2gXS8Tn9mqZ/7uYbxpZQ+ATDismv9AWJaDiRQVS
         0ex2my9eC14h7y9nmHKOlRbMZ7OuSUhpo8cReF46l+K/Fkk2jt1pdMIbqZ3d/RHLj+/F
         WwKY6k3XHEXSQcjwIldhOI0D80QvztxhmQSgbrfjlJPSL0JDyIubJQH1XaGZD+JSTngA
         hTSDhYfamA7mT1g59ikaSfioqg2Ysn3vluyTbmJkiMqLJ/S63m4gZDMvcAuQldqA18vR
         gMqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742815584; x=1743420384;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=IL+D97LwqZy6NUkik4VWtwwtkvEltgXEbuNKczi+Dqs=;
        b=hCqfG9U93H3ixu+4tPTNiDw8HkOFNsjtj1SRhVvwND2GYVm3ZvJhT551PVe/Rqxf53
         x6sdMrMSPvYeoJ8CrqU5gd3Gy82X3qRA7Q6mzUdnN2dSWA7qVXjzgJp/Ycjc8B1L3XRk
         upZZ35bSBamG00qt/pP99Xdp4yjnpMmojWwlFulvNMLlff3F1WLjtp2IG9RDHwtN7RA1
         l/KAOifEV5Tlj2j5Ug18FQQ/c9BUjx2sdYeO17KioqH72Hs1WAHtp+zpYhloeaii6oAU
         tMFVTivmNfmjQBh9UQJ8wIrS6ejqXEVHKKsFQqNiIA8iOLVN+d7eAI1OlbwMimvecsV1
         v4RA==
X-Forwarded-Encrypted: i=1; AJvYcCXr7ztHeQu3AKhC1CHHElMqqyUzk1RUdSRX8F2bFR8DyVlKrUv9kzPApLVoiHxpW4SW7xJsKmN/QfiBwRQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz7q4tXjV5gpETsEj46uPt8Q4prN4ZDxCsB5myeVDDjq3oM49me
	kyXA4ChD8TzMhnasbUbkzUWjrCDGvJDfNbKcUmJA3x6PstkGtPKuV6EB7b6omA==
X-Gm-Gg: ASbGncvXW13WT1GFAaNohVpSeTnOVPjYaQmLE2gYjytbg8FniR8C3DtFIPGpgbtX9l1
	X9Pu99BYUL0rH2R7gBw5OZ1YsTfvtN/42OiNKr0Et+FvGeJMiu23TpQ4TI+RYjWSDUPMmFkud95
	OOkLorDLDru/QouptJ81JkcW5+J18msHGp1lG59byFm7udH+V/mi0LAdNpNwETPDGbaPj/BE9SD
	+oGQb4H2LFIN6+YYUwhFRF4CLHSfpHIRPhpTKQ19Pe2CURPGl8xi+Tf2NBuGILsGT2twHq0Jlzc
	0n0zDb0LWlmnjqhqAgTcDLeSIQksLBRVQqt9AD9/dnkgUK3wvZRNkTpPKKqL/9Z3+7rBakX3Isv
	De8NxhP0HVrqwXmrHUkn2y7yTxpWK0w==
X-Google-Smtp-Source: AGHT+IHAtT277OXKvAGGh+haK75uTP/GgvDWP4wBXrPc3QDY18CpD1rovHV4ERw49cqpk/qXrbOQOw==
X-Received: by 2002:a05:600c:1ca4:b0:43c:fbbf:7bf1 with SMTP id 5b1f17b1804b1-43d50a3a75bmr122470185e9.30.1742815583998;
        Mon, 24 Mar 2025 04:26:23 -0700 (PDT)
Message-ID: <28e23122-6cfd-464d-99f4-4ac45b8b79d0@suse.com>
Date: Mon, 24 Mar 2025 12:26:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2 1/2] 9pfs: add fstat file operation hook
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
References: <20250321093145.17882-1-jgross@suse.com>
 <20250321093145.17882-2-jgross@suse.com> <Z99PXOXocyuZtf_X@begin>
 <79a51a80-7723-4f58-b0ea-25f73d4fd796@suse.com>
 <abce7ac0-21bd-409c-bc4c-f08d04a5a5d1@suse.com> <Z-E0TUu_LWkXt-wI@begin>
 <2fa05dd3-c5ae-4e72-b42d-260433590187@suse.com>
Content-Language: en-US
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Jason Andryuk <jason.andryuk@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2fa05dd3-c5ae-4e72-b42d-260433590187@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.03.2025 12:18, Jürgen Groß wrote:
> On 24.03.25 11:30, Samuel Thibault wrote:
>> Jan Beulich, le lun. 24 mars 2025 11:21:48 +0100, a ecrit:
>>> On 23.03.2025 15:57, Jürgen Groß wrote:
>>>> On 23.03.25 01:01, Samuel Thibault wrote:
>>>>> Juergen Gross, le ven. 21 mars 2025 10:31:44 +0100, a ecrit:
>>>>>> Add a file operations fstat hook to the 9pfs frontend.
>>>>>>
>>>>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>>>>> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
>>>>>> ---
>>>>>> V2:
>>>>>> - or file access mode into st_mode (Jason Andryuk)
>>>>>> ---
>>>>>>    9pfront.c | 29 +++++++++++++++++++++++++++++
>>>>>>    1 file changed, 29 insertions(+)
>>>>>>
>>>>>> diff --git a/9pfront.c b/9pfront.c
>>>>>> index 1741d600..7257a07e 100644
>>>>>> --- a/9pfront.c
>>>>>> +++ b/9pfront.c
>>>>>> @@ -85,6 +85,8 @@ struct file_9pfs {
>>>>>>    
>>>>>>    #define P9_QID_SIZE    13
>>>>>>    
>>>>>> +#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
>>>>>> +
>>>>>>    struct p9_header {
>>>>>>        uint32_t size;
>>>>>>        uint8_t cmd;
>>>>>> @@ -950,6 +952,32 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
>>>>>>        return ret;
>>>>>>    }
>>>>>>    
>>>>>> +static int fstat_9pfs(struct file *file, struct stat *buf)
>>>>>> +{
>>>>>> +    struct file_9pfs *f9pfs = file->filedata;
>>>>>> +    struct p9_stat stat;
>>>>>> +    int ret;
>>>>>> +
>>>>>> +    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
>>>>>> +    if ( ret )
>>>>>> +    {
>>>>>> +        errno = EIO;
>>>>>> +        return -1;
>>>>>> +    }
>>>>>> +
>>>>>> +    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
>>>>>> +    buf->st_mode |= stat.mode & 0777;
>>>>>> +    buf->st_atime = stat.atime;
>>>>>> +    buf->st_mtime = stat.mtime;
>>>>>
>>>>> Should we perhaps also fill st_ctime? Leaving it at 0 could surprise
>>>>> other software layers.
>>>>
>>>> I can set it to the same value as st_mtime.
>>>
>>> Maybe the smaller of atime and mtime?
>>
>> That'd be better, yes.
> 
> According to the references I could find ctime is changed whenever
> either file contents OR file status (uid, gid, permissions) are
> modified. So using the same value as mtime seems appropriate.

Hmm, yes, one always learns something new. Having come from the DOS/Windows
world originally, 'c' in the name to me only ever could stand for "create".
When really, as you say, it's "change". I'm sorry for introducing confusion
here.

Jan


From minios-devel-bounces@lists.xenproject.org Tue Mar 25 09:24:37 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Mar 2025 09:24:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.926178.1329038 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0WR-0004uZ-E6; Tue, 25 Mar 2025 09:24:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 926178.1329038; Tue, 25 Mar 2025 09:24:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0WR-0004u9-Ad; Tue, 25 Mar 2025 09:24:35 +0000
Received: by outflank-mailman (input) for mailman id 926178;
 Tue, 25 Mar 2025 09:24:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=DLt0=WM=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tx0WQ-0004sM-BH
 for minios-devel@lists.xenproject.org; Tue, 25 Mar 2025 09:24:34 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f5f9e215-095a-11f0-9ea3-5ba50f476ded;
 Tue, 25 Mar 2025 10:24:32 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 26C5E2116E;
 Tue, 25 Mar 2025 09:24:32 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id E7FE7137AC;
 Tue, 25 Mar 2025 09:24:31 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id tBMgN0924mdoMwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 25 Mar 2025 09:24:31 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5f9e215-095a-11f0-9ea3-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894672; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=ZTqQ8xUypzZhhhoaST+VUqDY+Lww+7VAFgGiGzWGpW8=;
	b=iH0kQqa9P8iC9IE/rUJE/e1pLc5rdSTjsQULAvL5a0G8xs2aHtkdjws4KMdFX11c25gdJX
	XiI5RTSAOWswSjv367XExgXKdP5nisjEhGj3a9bVU2LWxZ/5N4f6e4z1RpB+eKkKC85Caa
	QbiQ0uABsZRTMgsDDV/7J4j62JkUS44=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=iH0kQqa9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894672; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=ZTqQ8xUypzZhhhoaST+VUqDY+Lww+7VAFgGiGzWGpW8=;
	b=iH0kQqa9P8iC9IE/rUJE/e1pLc5rdSTjsQULAvL5a0G8xs2aHtkdjws4KMdFX11c25gdJX
	XiI5RTSAOWswSjv367XExgXKdP5nisjEhGj3a9bVU2LWxZ/5N4f6e4z1RpB+eKkKC85Caa
	QbiQ0uABsZRTMgsDDV/7J4j62JkUS44=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH v3 0/2] 9pfs: add some file operation hooks
Date: Tue, 25 Mar 2025 10:24:26 +0100
Message-ID: <20250325092428.23040-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 26C5E2116E
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.98%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,suse.com:dkim,suse.com:mid];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

For being able to store the Xenstore state in preparation of a live
update operation, 9pfront is needing support for fstat and lseek.

Changes in V2:
- addressed comment for patch 1

Changes in V3:
- addressed comment for patch 1

Juergen Gross (2):
  9pfs: add fstat file operation hook
  9pfs: add lseek file operation hook

 9pfront.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Tue Mar 25 09:24:41 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Mar 2025 09:24:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.926180.1329053 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0WX-0005Cs-PB; Tue, 25 Mar 2025 09:24:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 926180.1329053; Tue, 25 Mar 2025 09:24:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0WX-0005Bw-K1; Tue, 25 Mar 2025 09:24:41 +0000
Received: by outflank-mailman (input) for mailman id 926180;
 Tue, 25 Mar 2025 09:24:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=DLt0=WM=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tx0WW-00059a-UC
 for minios-devel@lists.xenproject.org; Tue, 25 Mar 2025 09:24:40 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f945e144-095a-11f0-9ffa-bf95429c2676;
 Tue, 25 Mar 2025 10:24:39 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id E505C2116E;
 Tue, 25 Mar 2025 09:24:37 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B245F137AC;
 Tue, 25 Mar 2025 09:24:37 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id BwXGKVV24md8MwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 25 Mar 2025 09:24:37 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f945e144-095a-11f0-9ffa-bf95429c2676
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894678; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jP7aTmS4mgfcI53w0C1wXKRp4YRB4henwetMoPS3Xbc=;
	b=BVNa6zYr3Lz9nnkkVEjC1w/f583zGhf/MUZWE4YsdcbfEG3oQPIfkSJmiT14+BGawmzr39
	GgDPchOgUbD3pY+9BQbeqIV/gPobr2WMl6vMSK7vMNzmKMtdrYYPX0aEtWMSse+49qzYEF
	7YmyNi67es01byxrf7mS9s7MhvdTPS0=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894677; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=jP7aTmS4mgfcI53w0C1wXKRp4YRB4henwetMoPS3Xbc=;
	b=CfXjrCTA/QIbWCgwtvMAQTOS7aGbYI/BACsp/4aNNq8izWoPeOx3Bjho5QVbQJmLoqUsfS
	a/PDKcdP0Nmaxtd+vwRILiofM5jJxuKaX2asjNP0xvVcCE8IYDgsNixlx8rercVkYBsqG6
	WnRo7ccR1DLF9TVqhPNJA9thxBwqU7Q=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [MINI-OS PATCH v3 1/2] 9pfs: add fstat file operation hook
Date: Tue, 25 Mar 2025 10:24:27 +0100
Message-ID: <20250325092428.23040-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250325092428.23040-1-jgross@suse.com>
References: <20250325092428.23040-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Add a file operations fstat hook to the 9pfs frontend.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
V2:
- or file access mode into st_mode (Jason Andryuk)
V3:
- set st_ctime, too (Samuel Thibault)
---
 9pfront.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/9pfront.c b/9pfront.c
index 1741d600..e676da35 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -85,6 +85,8 @@ struct file_9pfs {
 
 #define P9_QID_SIZE    13
 
+#define QID_TYPE_DIR   0x80     /* Applies to qid[0]. */
+
 struct p9_header {
     uint32_t size;
     uint8_t cmd;
@@ -950,6 +952,33 @@ static int write_9pfs(struct file *file, const void *buf, size_t nbytes)
     return ret;
 }
 
+static int fstat_9pfs(struct file *file, struct stat *buf)
+{
+    struct file_9pfs *f9pfs = file->filedata;
+    struct p9_stat stat;
+    int ret;
+
+    ret = p9_stat(f9pfs->dev, f9pfs->fid, &stat);
+    if ( ret )
+    {
+        errno = EIO;
+        return -1;
+    }
+
+    buf->st_mode = (stat.qid[0] == QID_TYPE_DIR) ? S_IFDIR : S_IFREG;
+    buf->st_mode |= stat.mode & 0777;
+    buf->st_atime = stat.atime;
+    buf->st_mtime = stat.mtime;
+    buf->st_ctime = stat.mtime;   /* Best available estimate. */
+    buf->st_size = stat.length;
+    buf->st_uid = stat.n_uid;
+    buf->st_gid = stat.n_gid;
+
+    free_stat(&stat);
+
+    return 0;
+}
+
 static int close_9pfs(struct file *file)
 {
     struct file_9pfs *f9pfs = file->filedata;
@@ -1296,6 +1325,7 @@ static const struct file_ops ops_9pfs = {
     .read = read_9pfs,
     .write = write_9pfs,
     .close = close_9pfs,
+    .fstat = fstat_9pfs,
 };
 
 __attribute__((constructor))
-- 
2.43.0



From minios-devel-bounces@lists.xenproject.org Tue Mar 25 09:24:48 2025
Return-path: <minios-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 25 Mar 2025 09:24:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.926183.1329071 (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0Wd-0005lJ-WF; Tue, 25 Mar 2025 09:24:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 926183.1329071; Tue, 25 Mar 2025 09:24:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <minios-devel-bounces@lists.xenproject.org>)
	id 1tx0Wd-0005lC-TH; Tue, 25 Mar 2025 09:24:47 +0000
Received: by outflank-mailman (input) for mailman id 926183;
 Tue, 25 Mar 2025 09:24:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=DLt0=WM=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1tx0Wc-0004sM-Fn
 for minios-devel@lists.xenproject.org; Tue, 25 Mar 2025 09:24:46 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fc9ae202-095a-11f0-9ea3-5ba50f476ded;
 Tue, 25 Mar 2025 10:24:44 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 897D21F391;
 Tue, 25 Mar 2025 09:24:43 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 50915137AC;
 Tue, 25 Mar 2025 09:24:43 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id /Bk7Elt24meHMwAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 25 Mar 2025 09:24:43 +0000
X-BeenThere: minios-devel@lists.xenproject.org
List-Id: Mini-os development list <minios-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:minios-devel@lists.xenproject.org>
List-Help: <mailto:minios-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/minios-devel>, 
 <mailto:minios-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: minios-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Minios-devel" <minios-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc9ae202-095a-11f0-9ea3-5ba50f476ded
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894683; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HmEfZe35xoFKsWhTqhezGsxyfw0BNdUzc5kZ9BZLcMM=;
	b=Y/ZnsIxMGqnt5F5Cp1fY8W2OV3jNnQ5EoigwZkACeHSCFm0jVVytoSI7dDGcrLL5rJPT/6
	qMkToPoB1c2JcvVPW8bEoudLYna1u82IZb51cyKjathwPsAKXixnw2oprJczURwE6ZDSQP
	9nKkIkV9gM6/MAYDqiG0ZfT3CeVx5yg=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1742894683; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=HmEfZe35xoFKsWhTqhezGsxyfw0BNdUzc5kZ9BZLcMM=;
	b=Y/ZnsIxMGqnt5F5Cp1fY8W2OV3jNnQ5EoigwZkACeHSCFm0jVVytoSI7dDGcrLL5rJPT/6
	qMkToPoB1c2JcvVPW8bEoudLYna1u82IZb51cyKjathwPsAKXixnw2oprJczURwE6ZDSQP
	9nKkIkV9gM6/MAYDqiG0ZfT3CeVx5yg=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jason.andryuk@amd.com>
Subject: [MINI-OS PATCH v3 2/2] 9pfs: add lseek file operation hook
Date: Tue, 25 Mar 2025 10:24:28 +0100
Message-ID: <20250325092428.23040-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250325092428.23040-1-jgross@suse.com>
References: <20250325092428.23040-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a file operations lseek hook to the 9pfs frontend. Just use the
lseek_default() implementation.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 9pfront.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/9pfront.c b/9pfront.c
index e676da35..895426d1 100644
--- a/9pfront.c
+++ b/9pfront.c
@@ -1326,6 +1326,7 @@ static const struct file_ops ops_9pfs = {
     .write = write_9pfs,
     .close = close_9pfs,
     .fstat = fstat_9pfs,
+    .lseek = lseek_default,
 };
 
 __attribute__((constructor))
-- 
2.43.0



