Even though the presence of softfloat does not cause --disable-tcg builds to fail,
it is the single largest .o file in them. Remove it, since TCG is the only client.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Makefile.target | 2 +-
hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++
2 files changed, 133 insertions(+), 1 deletion(-)
create mode 100644 hw/i386/x86-iommu-stub.c
diff --git a/Makefile.target b/Makefile.target
index d0ec77a307..dad2cf8778 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -97,7 +97,7 @@ obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o
obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o
obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o
-obj-y += fpu/softfloat.o
+obj-$(CONFIG_TCG) += fpu/softfloat.o
obj-y += target/$(TARGET_BASE_ARCH)/
obj-y += disas.o
obj-$(call notempty,$(TARGET_XML_FILES)) += gdbstub-xml.o
diff --git a/hw/i386/x86-iommu-stub.c b/hw/i386/x86-iommu-stub.c
new file mode 100644
index 0000000000..8a01a2dd25
--- /dev/null
+++ b/hw/i386/x86-iommu-stub.c
@@ -0,0 +1,132 @@
+/*
+ * QEMU emulation of common X86 IOMMU
+ *
+ * Copyright (C) 2016 Peter Xu, Red Hat <peterx@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "qemu/osdep.h"
+#include "hw/sysbus.h"
+#include "hw/boards.h"
+#include "hw/i386/x86-iommu.h"
+#include "hw/i386/pc.h"
+#include "qapi/error.h"
+#include "qemu/error-report.h"
+#include "trace.h"
+
+void x86_iommu_iec_register_notifier(X86IOMMUState *iommu,
+ iec_notify_fn fn, void *data)
+{
+ IEC_Notifier *notifier = g_new0(IEC_Notifier, 1);
+
+ notifier->iec_notify = fn;
+ notifier->private = data;
+
+ QLIST_INSERT_HEAD(&iommu->iec_notifiers, notifier, list);
+}
+
+void x86_iommu_iec_notify_all(X86IOMMUState *iommu, bool global,
+ uint32_t index, uint32_t mask)
+{
+ IEC_Notifier *notifier;
+
+ trace_x86_iommu_iec_notify(global, index, mask);
+
+ QLIST_FOREACH(notifier, &iommu->iec_notifiers, list) {
+ if (notifier->iec_notify) {
+ notifier->iec_notify(notifier->private, global,
+ index, mask);
+ }
+ }
+}
+
+/* Default X86 IOMMU device */
+static X86IOMMUState *x86_iommu_default = NULL;
+
+static void x86_iommu_set_default(X86IOMMUState *x86_iommu)
+{
+ assert(x86_iommu);
+
+ if (x86_iommu_default) {
+ error_report("QEMU does not support multiple vIOMMUs "
+ "for x86 yet.");
+ exit(1);
+ }
+
+ x86_iommu_default = x86_iommu;
+}
+
+X86IOMMUState *x86_iommu_get_default(void)
+{
+ return x86_iommu_default;
+}
+
+IommuType x86_iommu_get_type(void)
+{
+ return x86_iommu_default->type;
+}
+
+static void x86_iommu_realize(DeviceState *dev, Error **errp)
+{
+ X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(dev);
+ X86IOMMUClass *x86_class = X86_IOMMU_GET_CLASS(dev);
+ MachineState *ms = MACHINE(qdev_get_machine());
+ MachineClass *mc = MACHINE_GET_CLASS(ms);
+ PCMachineState *pcms =
+ PC_MACHINE(object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE));
+ QLIST_INIT(&x86_iommu->iec_notifiers);
+
+ if (!pcms || !pcms->bus) {
+ error_setg(errp, "Machine-type '%s' not supported by IOMMU",
+ mc->name);
+ return;
+ }
+
+ if (x86_class->realize) {
+ x86_class->realize(dev, errp);
+ }
+
+ x86_iommu_set_default(X86_IOMMU_DEVICE(dev));
+}
+
+static Property x86_iommu_properties[] = {
+ DEFINE_PROP_BOOL("intremap", X86IOMMUState, intr_supported, false),
+ DEFINE_PROP_BOOL("device-iotlb", X86IOMMUState, dt_supported, false),
+ DEFINE_PROP_BOOL("pt", X86IOMMUState, pt_supported, true),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
+static void x86_iommu_class_init(ObjectClass *klass, void *data)
+{
+ DeviceClass *dc = DEVICE_CLASS(klass);
+ dc->realize = x86_iommu_realize;
+ dc->props = x86_iommu_properties;
+}
+
+static const TypeInfo x86_iommu_info = {
+ .name = TYPE_X86_IOMMU_DEVICE,
+ .parent = TYPE_SYS_BUS_DEVICE,
+ .instance_size = sizeof(X86IOMMUState),
+ .class_init = x86_iommu_class_init,
+ .class_size = sizeof(X86IOMMUClass),
+ .abstract = true,
+};
+
+static void x86_iommu_register_types(void)
+{
+ type_register_static(&x86_iommu_info);
+}
+
+type_init(x86_iommu_register_types)
--
2.17.0
Hi, This series seems to have some coding style problems. See output below for more information: Type: series Message-id: 20180522192034.13318-1-pbonzini@redhat.com Subject: [Qemu-devel] [PATCH] tcg: remove softfloat from --disable-tcg builds === TEST SCRIPT BEGIN === #!/bin/bash BASE=base n=1 total=$(git log --oneline $BASE.. | wc -l) failed=0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram commits="$(git log --format=%H --reverse $BASE..)" for c in $commits; do echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..." if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then failed=1 echo fi n=$((n+1)) done exit $failed === TEST SCRIPT END === Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384 From https://github.com/patchew-project/qemu * [new tag] patchew/20180522192034.13318-1-pbonzini@redhat.com -> patchew/20180522192034.13318-1-pbonzini@redhat.com Switched to a new branch 'test' 2b374b4a9d tcg: remove softfloat from --disable-tcg builds === OUTPUT BEGIN === Checking PATCH 1/1: tcg: remove softfloat from --disable-tcg builds... WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? #26: new file mode 100644 ERROR: do not initialise statics to 0 or NULL #86: FILE: hw/i386/x86-iommu-stub.c:56: +static X86IOMMUState *x86_iommu_default = NULL; total: 1 errors, 1 warnings, 140 lines checked Your patch has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 --- Email generated automatically by Patchew [http://patchew.org/]. Please send your feedback to patchew-devel@redhat.com
On 22 May 2018 at 20:20, Paolo Bonzini <pbonzini@redhat.com> wrote: > Even though the presence of softfloat does not cause --disable-tcg builds to fail, > it is the single largest .o file in them. Remove it, since TCG is the only client. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > Makefile.target | 2 +- > hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++ > 2 files changed, 133 insertions(+), 1 deletion(-) > create mode 100644 hw/i386/x86-iommu-stub.c Is this new x86-iommu-stub.c file intended to be in this patch? thanks -- PMM
On 22/05/2018 21:27, Peter Maydell wrote: > On 22 May 2018 at 20:20, Paolo Bonzini <pbonzini@redhat.com> wrote: >> Even though the presence of softfloat does not cause --disable-tcg builds to fail, >> it is the single largest .o file in them. Remove it, since TCG is the only client. >> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- >> Makefile.target | 2 +- >> hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 133 insertions(+), 1 deletion(-) >> create mode 100644 hw/i386/x86-iommu-stub.c > > Is this new x86-iommu-stub.c file intended to be in this patch? No, of course not. I probably fat fingered a "r" into "f" in git rebase -i... Paolo
On 05/22/2018 12:20 PM, Paolo Bonzini wrote: > Even though the presence of softfloat does not cause --disable-tcg builds to fail, > it is the single largest .o file in them. Remove it, since TCG is the only client. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > Makefile.target | 2 +- > hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++ Assuming this wasn't supposed to be here. > 2 files changed, 133 insertions(+), 1 deletion(-) > create mode 100644 hw/i386/x86-iommu-stub.c > > diff --git a/Makefile.target b/Makefile.target > index d0ec77a307..dad2cf8778 100644 > --- a/Makefile.target > +++ b/Makefile.target > @@ -97,7 +97,7 @@ obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o > obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o > obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o > obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o > -obj-y += fpu/softfloat.o > +obj-$(CONFIG_TCG) += fpu/softfloat.o But for this change alone, Acked-by: Richard Henderson <richard.henderson@linaro.org> r~
On 22/05/2018 22:53, Richard Henderson wrote: > On 05/22/2018 12:20 PM, Paolo Bonzini wrote: >> Even though the presence of softfloat does not cause --disable-tcg builds to fail, >> it is the single largest .o file in them. Remove it, since TCG is the only client. >> >> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> >> --- >> Makefile.target | 2 +- >> hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++ > > Assuming this wasn't supposed to be here. Oops, no it wasn't. Thanks for the quick review! Paolo >> 2 files changed, 133 insertions(+), 1 deletion(-) >> create mode 100644 hw/i386/x86-iommu-stub.c >> >> diff --git a/Makefile.target b/Makefile.target >> index d0ec77a307..dad2cf8778 100644 >> --- a/Makefile.target >> +++ b/Makefile.target >> @@ -97,7 +97,7 @@ obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o >> obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o >> obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o >> obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o >> -obj-y += fpu/softfloat.o >> +obj-$(CONFIG_TCG) += fpu/softfloat.o > > But for this change alone, > Acked-by: Richard Henderson <richard.henderson@linaro.org> > > r~ >
On 22.05.2018 21:20, Paolo Bonzini wrote: > Even though the presence of softfloat does not cause --disable-tcg builds to fail, > it is the single largest .o file in them. Remove it, since TCG is the only client. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > Makefile.target | 2 +- > hw/i386/x86-iommu-stub.c | 132 +++++++++++++++++++++++++++++++++++++++ > 2 files changed, 133 insertions(+), 1 deletion(-) > create mode 100644 hw/i386/x86-iommu-stub.c > > diff --git a/Makefile.target b/Makefile.target > index d0ec77a307..dad2cf8778 100644 > --- a/Makefile.target > +++ b/Makefile.target > @@ -97,7 +97,7 @@ obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o > obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o > obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o > obj-$(CONFIG_TCG_INTERPRETER) += disas/tci.o > -obj-y += fpu/softfloat.o > +obj-$(CONFIG_TCG) += fpu/softfloat.o > obj-y += target/$(TARGET_BASE_ARCH)/ > obj-y += disas.o > obj-$(call notempty,$(TARGET_XML_FILES)) += gdbstub-xml.o Without that x86-iommu-stub.c file: Reviewed-by: Thomas Huth <thuth@redhat.com>
© 2016 - 2024 Red Hat, Inc.