[libvirt] [PATCH 4/4] qemu: Add support for setting the TSEG size
Ján Tomko
jtomko at redhat.com
Thu Jun 7 19:58:04 UTC 2018
On Thu, Jun 07, 2018 at 10:37:43AM +0200, Martin Kletzander wrote:
>The default is stable per machine type so there should be no need to keep that.
>
>Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1469338
>
>Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>---
> src/conf/domain_conf.c | 3 +-
> src/qemu/qemu_command.c | 18 ++++++++
> src/qemu/qemu_domain.c | 35 ++++++++++++++
> .../tseg-explicit-size.x86_64-latest.args | 35 ++++++++++++++
> tests/qemuxml2argvdata/tseg-explicit-size.xml | 23 ++++++++++
> tests/qemuxml2argvdata/tseg-i440fx.xml | 23 ++++++++++
> tests/qemuxml2argvdata/tseg-invalid-size.xml | 23 ++++++++++
> tests/qemuxml2argvtest.c | 25 ++++++++++
> .../qemuxml2xmloutdata/tseg-explicit-size.xml | 46 +++++++++++++++++++
> .../tseg-old-machine-type.xml | 44 ++++++++++++++++++
> tests/qemuxml2xmloutdata/tseg.xml | 44 ++++++++++++++++++
> tests/qemuxml2xmltest.c | 9 ++++
> 12 files changed, 327 insertions(+), 1 deletion(-)
> create mode 100644 tests/qemuxml2argvdata/tseg-explicit-size.x86_64-latest.args
> create mode 100644 tests/qemuxml2argvdata/tseg-explicit-size.xml
> create mode 100644 tests/qemuxml2argvdata/tseg-i440fx.xml
> create mode 100644 tests/qemuxml2argvdata/tseg-invalid-size.xml
> create mode 100644 tests/qemuxml2xmloutdata/tseg-explicit-size.xml
> create mode 100644 tests/qemuxml2xmloutdata/tseg-old-machine-type.xml
> create mode 100644 tests/qemuxml2xmloutdata/tseg.xml
>
>diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>index 62bf6bb803bb..e83487d6b0de 100644
>--- a/src/conf/domain_conf.c
>+++ b/src/conf/domain_conf.c
>@@ -22043,7 +22043,8 @@ virDomainDefFeaturesCheckABIStability(virDomainDefPtr src,
> return false;
> }
>
>- if (src->tseg_size != dst->tseg_size) {
>+ if (src->tseg_specified &&
Why this change?
IIUC if they weren't specified on both sides, they should both be 0
here.
If you're sure it's needed, put it in the commit adding this check.
>+ src->tseg_size != dst->tseg_size) {
> const char *unit_src, *unit_dst;
> unsigned long long short_size_src = virFormatIntPretty(src->tseg_size,
> &unit_src);
>diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>index 6bc9bf5ffab8..4a87b892b7c5 100644
>--- a/src/qemu/qemu_command.c
>+++ b/src/qemu/qemu_command.c
>@@ -7295,6 +7295,22 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
> return ret;
> }
>
>+
>+static void
>+qemuBuildTSEGCommandLine(virCommandPtr cmd,
>+ const virDomainDef *def)
>+{
>+ if (!def->tseg_size)
>+ return;
If you don't need the tseg_specified bool at all, I suggest just
dropping it. Does a size of 0 MiB make sense? It's divisible by 1 MiB.
>+
>+ virCommandAddArg(cmd, "-global");
>+
>+ /* PostParse callback guarantees that the size is divisible by 1 MiB */
>+ virCommandAddArgFormat(cmd, "mch.extended-tseg-mbytes=%llu",
>+ def->tseg_size >> 20);
>+}
>+
>+
> static int
> qemuBuildSmpCommandLine(virCommandPtr cmd,
> virDomainDefPtr def)
>@@ -10108,6 +10124,8 @@ qemuBuildCommandLine(virQEMUDriverPtr driver,
> if (qemuBuildMachineCommandLine(cmd, cfg, def, qemuCaps) < 0)
> goto error;
>
>+ qemuBuildTSEGCommandLine(cmd, def);
>+
> if (qemuBuildCpuCommandLine(cmd, driver, def, qemuCaps) < 0)
> goto error;
>
>diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>index a2c4d3a36090..643fca52c17b 100644
>--- a/src/qemu/qemu_domain.c
>+++ b/src/qemu/qemu_domain.c
>@@ -3632,6 +3632,38 @@ qemuDomainDefCPUPostParse(virDomainDefPtr def)
> }
>
>
>+static int
>+qemuDomainDefTsegPostParse(virDomainDefPtr def,
s/qemuDomainDefTsegPostParse/qemuDomainDefTSEGPostParse/
>+ virQEMUCapsPtr qemuCaps)
>+{
>+ if (def->features[VIR_DOMAIN_FEATURE_SMM] != VIR_TRISTATE_SWITCH_ON)
>+ return 0;
>+
With the bool variable dropped or defended and consistently used:
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180607/a4b4693a/attachment-0001.sig>
More information about the libvir-list
mailing list