From: Anton Iacobaeus <anton.iacobaeus@canarybit.eu>
To: pve-devel@lists.proxmox.com
Cc: Anton Iacobaeus <anton.iacobaeus@canarybit.eu>,
Philipp Giersfeld <philipp.giersfeld@canarybit.eu>
Subject: [pve-devel] [PATCH manager 1/1] Add support for Intel TDX
Date: Tue, 16 Sep 2025 09:52:50 +0200 [thread overview]
Message-ID: <20250916075406.33084-8-anton.iacobaeus@canarybit.eu> (raw)
In-Reply-To: <20250916075406.33084-2-anton.iacobaeus@canarybit.eu>
From: Philipp Giersfeld <philipp.giersfeld@canarybit.eu>
This commit adds suppport to enable Intel TDX for a VM similar to AMD
SEV.
Signed-off-by: Philipp Giersfeld <philipp.giersfeld@canarybit.eu>
Signed-off-by: Anton Iacobaeus <anton.iacobaeus@canarybit.eu>
---
www/manager6/Makefile | 1 +
www/manager6/qemu/Options.js | 12 +++++
www/manager6/qemu/TdxEdit.js | 90 ++++++++++++++++++++++++++++++++++++
3 files changed, 103 insertions(+)
create mode 100644 www/manager6/qemu/TdxEdit.js
diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 07401f21..5a79eed7 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -275,6 +275,7 @@ JSSRC= \
qemu/SevEdit.js \
qemu/Smbios1Edit.js \
qemu/SystemEdit.js \
+ qemu/TdxEdit.js \
qemu/USBEdit.js \
qemu/VirtiofsEdit.js \
sdn/Browser.js \
diff --git a/www/manager6/qemu/Options.js b/www/manager6/qemu/Options.js
index 6fe96fe2..044ed227 100644
--- a/www/manager6/qemu/Options.js
+++ b/www/manager6/qemu/Options.js
@@ -386,6 +386,18 @@ Ext.define('PVE.qemu.Options', {
return value;
},
},
+ 'intel-tdx': {
+ header: gettext('Intel TDX'),
+ editor: caps.vms['VM.Config.HWType'] ? 'PVE.qemu.TdxEdit' : undefined,
+ defaultValue: Proxmox.Utils.defaultText + ' (' + Proxmox.Utils.disabledText + ')',
+ renderer: function(value, metaData, record, ri, ci, store, pending) {
+ let intel_tdx = PVE.Parser.parsePropertyString(value, "type");
+ if (intel_tdx.type === 'tdx') {
+ return 'Intel (' + value + ')';
+ }
+ return value;
+ },
+ },
hookscript: {
header: gettext('Hookscript'),
},
diff --git a/www/manager6/qemu/TdxEdit.js b/www/manager6/qemu/TdxEdit.js
new file mode 100644
index 00000000..735a478c
--- /dev/null
+++ b/www/manager6/qemu/TdxEdit.js
@@ -0,0 +1,90 @@
+Ext.define('PVE.qemu.TdxInputPanel', {
+ extend: 'Proxmox.panel.InputPanel',
+ xtype: 'pveTdxInputPanel',
+
+ onlineHelp: 'qm_memory', // TODO: change to 'qm_memory_encryption' one available
+
+ viewModel: {
+ data: {
+ type: '__default__',
+ },
+ formulas: {
+ tdxEnabled: get => get('type') === 'tdx',
+ },
+ },
+
+ onGetValues: function(values) {
+ if (values.delete === 'type') {
+ values.delete = 'intel-tdx';
+ return values;
+ }
+ let ret = {};
+ ret['intel-tdx'] = PVE.Parser.printPropertyString(values, 'type');
+ return ret;
+ },
+
+
+ setValues: function(values) {
+ this.callParent(arguments);
+ },
+
+ items: [{
+ xtype: 'proxmoxKVComboBox',
+ fieldLabel: gettext('Intel TDX Type'),
+ labelWidth: 150,
+ name: 'type',
+ value: '__default__',
+ comboItems: [
+ ['__default__', Proxmox.Utils.defaultText + ' (' + Proxmox.Utils.disabledText + ')'],
+ ['tdx', 'Intel TDX'],
+ ],
+ bind: {
+ value: '{type}',
+ },
+ },
+ {
+ xtype: 'displayfield',
+ userCls: 'pmx-hint',
+ value: gettext('WARNING: When using Intel TDX no EFI disk is loaded as pflash.'),
+ bind: {
+ hidden: '{!tdxEnabled}',
+ },
+ },
+ {
+ xtype: 'displayfield',
+ userCls: 'pmx-hint',
+ value: gettext('Note: Intel TDX requires host kernel version 6.16 or higher.'),
+ bind: {
+ hidden: '{!tdxEnabled}',
+ },
+ }],
+
+ advancedItems: [
+ ],
+});
+
+Ext.define('PVE.qemu.TdxEdit', {
+ extend: 'Proxmox.window.Edit',
+
+ subject: 'Intel Trust Domain Extension (TDX)',
+
+ items: {
+ xtype: 'pveTdxInputPanel',
+ },
+
+ width: 400,
+
+ initComponent: function() {
+ let me = this;
+
+ me.callParent();
+
+ me.load({
+ success: function(response) {
+ let conf = response.result.data;
+ let intel_tdx = conf['intel-tdx'] || '__default__';
+ me.setValues(PVE.Parser.parsePropertyString(intel_tdx, 'type'));
+ },
+ });
+ },
+});
--
2.43.0
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-09-16 9:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-16 7:52 [pve-devel] [PATCH edk2-firmware/manager/qemu-server 0/8] " Anton Iacobaeus
2025-09-16 7:52 ` [pve-devel] [PATCH edk2-firmware 1/4] Change name of SEV-related OVMF files Anton Iacobaeus
2025-09-16 9:48 ` Thomas Lamprecht
2025-09-16 7:52 ` [pve-devel] [PATCH edk2-firmware 2/4] Add firmware target for TDFV Anton Iacobaeus
2025-09-16 7:52 ` [pve-devel] [PATCH edk2-firmware 3/4] Add SCSI in NCCFV for TD guest Anton Iacobaeus
2025-09-16 7:52 ` [pve-devel] [PATCH edk2-firmware 4/4] Adapt APIC frequency " Anton Iacobaeus
2025-09-16 9:51 ` Thomas Lamprecht
2025-09-16 7:52 ` Anton Iacobaeus [this message]
2025-09-16 7:52 ` [pve-devel] [PATCH qemu-server 1/3] Adapt AMD SEV code for compatibility with other platforms Anton Iacobaeus
2025-09-16 7:52 ` [pve-devel] [PATCH qemu-server 2/3] Add check for TDX support Anton Iacobaeus
2025-09-16 10:22 ` Thomas Lamprecht
2025-09-16 7:52 ` [pve-devel] [PATCH qemu-server 3/3] Add support for Intel TDX Anton Iacobaeus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250916075406.33084-8-anton.iacobaeus@canarybit.eu \
--to=anton.iacobaeus@canarybit.eu \
--cc=philipp.giersfeld@canarybit.eu \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox