mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-14 08:35:00 +00:00

Expand input panel with AMD SEV-SNP selection, and relevant optional parameters similar to existing options for AMD SEV(-ES). Further, upon selecting AMD SEV-SNP, issue a warning that EFI disks are not included when using SEV-SNP. Signed-off-by: Philipp Giersfeld <philipp.giersfeld@canarybit.eu> Tested-by: Markus Frank <m.frank@proxmox.com> Reviewed-by: Markus Frank <m.frank@proxmox.com>
157 lines
3.4 KiB
JavaScript
157 lines
3.4 KiB
JavaScript
Ext.define('PVE.qemu.SevInputPanel', {
|
|
extend: 'Proxmox.panel.InputPanel',
|
|
xtype: 'pveSevInputPanel',
|
|
|
|
onlineHelp: 'qm_memory', // TODO: change to 'qm_memory_encryption' one available
|
|
|
|
viewModel: {
|
|
data: {
|
|
type: '__default__',
|
|
},
|
|
formulas: {
|
|
sevEnabled: get => get('type') === 'std' || get('type') === 'es' || get('type') === 'snp',
|
|
snpEnabled: get => get('type') === 'snp',
|
|
},
|
|
},
|
|
|
|
onGetValues: function(values) {
|
|
if (values.delete === 'type') {
|
|
values.delete = 'amd-sev';
|
|
return values;
|
|
}
|
|
if (!values.debug) {
|
|
values["no-debug"] = 1;
|
|
}
|
|
if (!values.smt && values.type === 'snp') {
|
|
values["allow-smt"] = 0;
|
|
}
|
|
if (!values["key-sharing"] && values.type !== 'snp') {
|
|
values["no-key-sharing"] = 1;
|
|
}
|
|
delete values.debug;
|
|
delete values.smt;
|
|
delete values["key-sharing"];
|
|
let ret = {};
|
|
ret['amd-sev'] = PVE.Parser.printPropertyString(values, 'type');
|
|
return ret;
|
|
},
|
|
|
|
|
|
setValues: function(values) {
|
|
if (PVE.Parser.parseBoolean(values["no-debug"])) {
|
|
values.debug = 0;
|
|
}
|
|
values.smt = PVE.Parser.parseBoolean(values["allow-smt"], 1);
|
|
if (PVE.Parser.parseBoolean(values["no-key-sharing"])) {
|
|
values["key-sharing"] = 0;
|
|
}
|
|
this.callParent(arguments);
|
|
},
|
|
|
|
items: [{
|
|
xtype: 'proxmoxKVComboBox',
|
|
fieldLabel: gettext('AMD SEV Type'),
|
|
labelWidth: 150,
|
|
name: 'type',
|
|
value: '__default__',
|
|
comboItems: [
|
|
['__default__', Proxmox.Utils.defaultText + ' (' + Proxmox.Utils.disabledText + ')'],
|
|
['std', 'AMD SEV'],
|
|
['es', 'AMD SEV-ES (highly experimental)'],
|
|
['snp', 'AMD SEV-SNP (highly experimental)'],
|
|
],
|
|
bind: {
|
|
value: '{type}',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'displayfield',
|
|
userCls: 'pmx-hint',
|
|
value: gettext('WARNING: When using SEV-SNP no EFI disk is loaded as pflash.'),
|
|
bind: {
|
|
hidden: '{!snpEnabled}',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'displayfield',
|
|
userCls: 'pmx-hint',
|
|
value: gettext('Note: SEV-SNP requires host kernel version 6.11 or higher.'),
|
|
bind: {
|
|
hidden: '{!snpEnabled}',
|
|
},
|
|
}],
|
|
|
|
advancedItems: [
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Allow Debugging'),
|
|
labelWidth: 150,
|
|
name: 'debug',
|
|
value: 1,
|
|
bind: {
|
|
hidden: '{!sevEnabled}',
|
|
disabled: '{!sevEnabled}',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Allow Key-Sharing'),
|
|
labelWidth: 150,
|
|
name: 'key-sharing',
|
|
value: 1,
|
|
bind: {
|
|
hidden: '{!sevEnabled || snpEnabled}',
|
|
disabled: '{!sevEnabled || snpEnabled}',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Allow SMT'),
|
|
labelWidth: 150,
|
|
name: 'smt',
|
|
value: 1,
|
|
bind: {
|
|
hidden: '{!snpEnabled}',
|
|
disabled: '{!snpEnabled}',
|
|
},
|
|
},
|
|
{
|
|
xtype: 'proxmoxcheckbox',
|
|
fieldLabel: gettext('Enable Kernel Hashes'),
|
|
labelWidth: 150,
|
|
name: 'kernel-hashes',
|
|
deleteDefaultValue: false,
|
|
bind: {
|
|
hidden: '{!sevEnabled}',
|
|
disabled: '{!sevEnabled}',
|
|
},
|
|
},
|
|
],
|
|
});
|
|
|
|
Ext.define('PVE.qemu.SevEdit', {
|
|
extend: 'Proxmox.window.Edit',
|
|
|
|
subject: 'AMD Secure Encrypted Virtualization (SEV)',
|
|
|
|
items: {
|
|
xtype: 'pveSevInputPanel',
|
|
},
|
|
|
|
width: 400,
|
|
|
|
initComponent: function() {
|
|
let me = this;
|
|
|
|
me.callParent();
|
|
|
|
me.load({
|
|
success: function(response) {
|
|
let conf = response.result.data;
|
|
let amd_sev = conf['amd-sev'] || '__default__';
|
|
me.setValues(PVE.Parser.parsePropertyString(amd_sev, 'type'));
|
|
},
|
|
});
|
|
},
|
|
});
|