From nobody Sun Apr 12 22:37:54 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1775652976; cv=none; d=zohomail.com; s=zohoarc; b=RiY43n8oziCENYsHOLGyy3keSnAVJiUlR+aIgx6CR+Osb1/iO9rn5oMe20VN7AP6nef0sM9e16WzXNKt1LoZBbGsQL3QatZ+8lQ1p81tz+bwoFSmi+dqc91NMj3DUUzPeWHb0OCsnIfpWtVZMVX5LLs8uBd01ld42/iy41WGogc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775652976; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QkqBrdaNrBJCy0crOvcxBRylV9zvc66c7xFOX+Za0sU=; b=WSTtFTSFHb7V5xGYXOObYjxxQG9RenEMmxZXckwsi30SH+eslPAUrTt8TEPtCvyIIrE7fq1AiAYA0KoARbig9aUTzVXtvUHNeElB3VYl+nWFzy8y4+OUfq4u7Qke3OcCq+3rr1fEqwULXN83PgD7ogZ1UBKj7GOUOrMNg88uOyw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1775652976130466.8426055718536; Wed, 8 Apr 2026 05:56:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1276006.1561649 (Exim 4.92) (envelope-from ) id 1wASRe-0003FE-6J; Wed, 08 Apr 2026 12:55:46 +0000 Received: by outflank-mailman (output) from mailman id 1276006.1561649; Wed, 08 Apr 2026 12:55:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wASRe-0003F7-3W; Wed, 08 Apr 2026 12:55:46 +0000 Received: by outflank-mailman (input) for mailman id 1276006; Wed, 08 Apr 2026 12:55:45 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wASRd-0003Et-2V for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 12:55:45 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wASRa-007rbZ-TL for xen-devel@lists.xenproject.org; Wed, 08 Apr 2026 14:55:42 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69d65044-5cb7-0a2a0a5109dd-0a2a450c9820-18 for ; Wed, 08 Apr 2026 14:55:42 +0200 Received: from [209.85.128.50] (helo=mail-wm1-f50.google.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.0) (envelope-from ) id 69d6504e-f40c-0a2a450c0019-d1558032b12d-3 for ; Wed, 08 Apr 2026 14:55:42 +0200 Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-4888375f735so58779715e9.3 for ; Wed, 08 Apr 2026 05:55:42 -0700 (PDT) Received: from localhost.localdomain (5.116.208.46.dyn.plus.net. [46.208.116.5]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488c5dd63d6sm18454195e9.34.2026.04.08.05.55.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 05:55:41 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775652942; x=1776257742; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=QkqBrdaNrBJCy0crOvcxBRylV9zvc66c7xFOX+Za0sU=; b=NO+jrD6k7TzPeOjkfyHN5tEkgy9B323se6GKpXqhl3dL0wChl2hUvDXg3QK9oT1XhO 0VlMLm1sd6u5Am9K958ux41cx6w1n+3tHj/igGMGLByFXHt2feCds/PSZpAqL4f+/dLn PVKo7aCc9vqhGjNHWZlnqpKgexYgtoPLTo6xRWO2euQ405WapxQi9VOOmv8tWaqgfPmI BHVJGjFWsoKOY/BaYzlql3lVMblbf7rbRyfhgu3W8nlCrfWQOLXFTMgn2GyI34ElVC8o jkGPqmqwpr80TkBEJzy//YmyANYLzeP3VVvZ856tCWgNC3opAPP4fhSXJZHjIWjQ2dTJ XuzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775652942; x=1776257742; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=QkqBrdaNrBJCy0crOvcxBRylV9zvc66c7xFOX+Za0sU=; b=sq732y/KapxgOBbe+vEWxcbsWtpPwoSr8klMkwwSiDQWrP5R5sWMRSEJl1Xkhtcczm JXF3wGsErZ3zC+557LbLa8pdaZlIiscSxVfoMklMza+9dfctjgCaI9PkAdWEIK5JK3/T ODpxmR3JwUMjx8JUGwygz+A11yB8pdL9ze6ZDsK2rmxS1up9FQFxPZk5R0LwTevkuEFu ZOeA+FygnHSkLwWv6nnBtP4H3fkaPiYMyMWBepAdStfkTRcp/Lo2jBPJbmSEVvHSRNYQ 003fwcApvYs+A9rzU3t5gJ++/hsn4vIuyIIXxZ9bdTtidXi1krVwRFrECbCbGHpR493p Gp+w== X-Gm-Message-State: AOJu0YxZhY0+Yy22f09v1jGFufNd9DbM0weSw3lsH+CxyGb6jxpIBOlW tOqhnNZlqrRTzT/3RzmWwCF4cxpcuUjHgNsk6RHUQio4mFCLsEbsQ/FAYcGPhw== X-Gm-Gg: AeBDiet4gbT6sizMcd83Cb2Etu/Z6I0vuA335poYwaHwrrZRDxySSgJYqwGt89SIoiL 9hzCobTrCCnopRxgOJNqJyvv3LuBgvMTF3tkTy+q71AtIEfJKacZ0tucB/iErHMYYfnhpFMFyf6 8h787cDlq1alQuc6lcwHxKMiogbZ1uh1jZht2E/wqJs6Qdk20GLbpTEFNZ+pdg/3O4IaAGD1P/M yiGULcr/KJi3yGWPyCNwgCnZ5iA4PAELOVb/6s01PLyAx8AkUCUcIeqfktCjx9HnKXRNbAlniWW pfLCb2jmoNCbo1J7A3qMpROvPAVQKsZN51LkRfniprUEpAqCqp9OEibVpaFGrJLzvwZutPJXCh1 DAr/m8MygLEBfywb+JSaO7mJqFttqc8DjOR7LavuDcsGA162JjK43EBcumV3Qi80Vk+PvN6fRCy QQWPcNBifEiZcJeGplmDhM/6SdGv6HEz6lRwJ7jsN90GRWy/vbszLw2eCMEvZRXBiolQ== X-Received: by 2002:a05:600c:1c21:b0:488:b87b:3052 with SMTP id 5b1f17b1804b1-488b87b3508mr123638805e9.29.1775652941866; Wed, 08 Apr 2026 05:55:41 -0700 (PDT) From: Frediano Ziglio X-Google-Original-From: Frediano Ziglio To: xen-devel@lists.xenproject.org Cc: Frediano Ziglio , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v3] xen/x86: Check supported features even for PVH dom0 Date: Wed, 8 Apr 2026 13:55:14 +0100 Message-ID: <20260408125521.104660-1-frediano.ziglio@cloud.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-d25034/1775652942-FD358A3D-04C6BDE1/0/0 X-purgate-type: clean X-purgate-size: 3569 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1775652977932158500 Content-Type: text/plain; charset="utf-8" The supported features ELF notes was tested only if the dom0 was PV. Factor out a function to check ELF notes and reuse it even for PVH. Signed-off-by: Frediano Ziglio -- Changes since v1: - fix typo in title; - fix minor formatting issue; - use is_hardware_domain instead of checking is_pv_shim; - reduce indentation returning earlier; - return error instead of jumping to cleanup code. Changes since v2: - rename dom0_check_parms to initdom_check_parms; - move call to initdom_check_parms in PVH code earlier; - make "struct domain" constant. Reviewed-by: Jan Beulich Reviewed-by: Roger Pau Monn=C3=A9 --- xen/arch/x86/dom0_build.c | 14 ++++++++++++++ xen/arch/x86/hvm/dom0_build.c | 3 +++ xen/arch/x86/include/asm/dom0_build.h | 2 ++ xen/arch/x86/pv/dom0_build.c | 10 ++-------- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c index 864dd9e53e..56eba8f59a 100644 --- a/xen/arch/x86/dom0_build.c +++ b/xen/arch/x86/dom0_build.c @@ -320,6 +320,20 @@ unsigned long __init dom0_paging_pages(const struct do= main *d, return DIV_ROUND_UP(memkb, 1024) << (20 - PAGE_SHIFT); } =20 +int __init initdom_check_parms( + const struct domain *d, const struct elf_dom_parms *parms) +{ + if ( parms->elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type =3D=3D XEN_= ENT_NONE ) + return 0; + + if ( is_hardware_domain(d) && !test_bit(XENFEAT_dom0, parms->f_support= ed) ) + { + printk("Kernel does not support Dom0 operation\n"); + return -EINVAL; + } + + return 0; +} =20 /* * If allocation isn't specified, reserve 1/16th of available memory for diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c index d69a83b089..aa06cdb2f7 100644 --- a/xen/arch/x86/hvm/dom0_build.c +++ b/xen/arch/x86/hvm/dom0_build.c @@ -692,6 +692,9 @@ static int __init pvh_load_kernel( return -EINVAL; } =20 + if ( (rc =3D initdom_check_parms(d, &parms)) !=3D 0 ) + return rc; + /* Copy the OS image and free temporary buffer. */ elf.dest_base =3D (void *)(parms.virt_kstart - parms.virt_base); elf.dest_size =3D parms.virt_kend - parms.virt_kstart; diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/a= sm/dom0_build.h index ff021c24af..1332f18cc6 100644 --- a/xen/arch/x86/include/asm/dom0_build.h +++ b/xen/arch/x86/include/asm/dom0_build.h @@ -8,6 +8,8 @@ =20 extern unsigned int dom0_memflags; =20 +int initdom_check_parms(const struct domain *d, + const struct elf_dom_parms *parms); unsigned long dom0_compute_nr_pages(struct domain *d, struct elf_dom_parms *parms, unsigned long initrd_len); diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index 075a3646c2..12d8ba744a 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -494,14 +494,8 @@ static int __init dom0_construct(const struct boot_dom= ain *bd) return -EINVAL; } =20 - if ( parms.elf_notes[XEN_ELFNOTE_SUPPORTED_FEATURES].type !=3D XEN_ENT= _NONE ) - { - if ( !pv_shim && !test_bit(XENFEAT_dom0, parms.f_supported) ) - { - printk("Kernel does not support Dom0 operation\n"); - return -EINVAL; - } - } + if ( (rc =3D initdom_check_parms(d, &parms)) !=3D 0 ) + return rc; =20 nr_pages =3D dom0_compute_nr_pages(d, &parms, initrd_len); =20 --=20 2.43.0