qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/12] user-mode: Prune build dependencies (part 1)
@ 2020-03-15 23:57 Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
                   ` (12 more replies)
  0 siblings, 13 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier, qemu-s390x,
	Alistair Francis, Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson

This is the first part of a series reducing user-mode
dependencies. By stripping out unused code, the build
and testing time is reduced (as is space used by objects).

Part 1:
- reduce user-mode object list
- remove some migration code from user-mode
- remove cpu_get_crash_info()

Since v1:
- Addressed Laurent/Richard review comments
- Removed 'exec: Drop redundant #ifdeffery'
- Removed 'target: Restrict write_elfXX_note() handlers to system-mode'

v1: https://www.mail-archive.com/qemu-devel@nongnu.org/msg688456.html

Philippe Mathieu-Daudé (12):
  Makefile: Only build virtiofsd if system-mode is enabled
  configure: Avoid building TCG when not needed
  tests/Makefile: Only display TCG-related tests when TCG is available
  tests/Makefile: Restrict some softmmu-only tests
  util/Makefile: Reduce the user-mode object list
  stubs/Makefile: Reduce the user-mode object list
  target/riscv/cpu: Restrict CPU migration to system-mode
  exec: Assert CPU migration is not used on user-only build
  arch_init: Remove unused 'qapi-commands-misc.h' include
  target/i386: Restrict CpuClass::get_crash_info() to system-mode
  target/s390x: Restrict CpuClass::get_crash_info() to system-mode
  hw/core: Restrict CpuClass::get_crash_info() to system-mode

 configure              |  4 +++
 Makefile               |  2 +-
 include/hw/core/cpu.h  |  7 ++++-
 arch_init.c            |  1 -
 exec.c                 |  4 ++-
 hw/core/cpu.c          |  2 ++
 target/i386/cpu.c      |  6 ++++-
 target/riscv/cpu.c     |  6 +++--
 target/s390x/cpu.c     | 12 ++++-----
 stubs/Makefile.objs    | 52 +++++++++++++++++++++----------------
 tests/Makefile.include | 18 +++++++------
 util/Makefile.objs     | 59 +++++++++++++++++++++++++++---------------
 12 files changed, 108 insertions(+), 65 deletions(-)

-- 
2.21.1



^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-16 18:57   ` Richard Henderson
  2020-03-19 11:13   ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 02/12] configure: Avoid building TCG when not needed Philippe Mathieu-Daudé
                   ` (11 subsequent siblings)
  12 siblings, 2 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier, qemu-s390x,
	Alistair Francis, Paolo Bonzini, Philippe Mathieu-Daudé,
	Richard Henderson

Do not build the virtiofsd helper when configured with
--disable-system.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: Use single line with ifeq='yyyy' (lvivier, rth)
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 7df22fcc5d..7d27941803 100644
--- a/Makefile
+++ b/Makefile
@@ -345,7 +345,7 @@ HELPERS-y += vhost-user-gpu$(EXESUF)
 vhost-user-json-y += contrib/vhost-user-gpu/50-qemu-gpu.json
 endif
 
-ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
+ifeq ($(CONFIG_SOFTMMU)$(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyyy)
 HELPERS-y += virtiofsd$(EXESUF)
 vhost-user-json-y += tools/virtiofsd/50-qemu-virtiofsd.json
 endif
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 02/12] configure: Avoid building TCG when not needed
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available Philippe Mathieu-Daudé
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Avoid building TCG when building only tools:

  ./configure --enable-tools --disable-system --disable-user

This saves us from running the soft-float tests enabled since
commit 76170102508.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 configure | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/configure b/configure
index eb49bb6680..c2ffcb0431 100755
--- a/configure
+++ b/configure
@@ -1650,6 +1650,10 @@ if [ "$ARCH" = "unknown" ]; then
   linux_user="no"
 fi
 
+if [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then
+  tcg="no"
+fi
+
 default_target_list=""
 
 mak_wilds=""
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 02/12] configure: Avoid building TCG when not needed Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-19 11:15   ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 04/12] tests/Makefile: Restrict some softmmu-only tests Philippe Mathieu-Daudé
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 tests/Makefile.include | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 67e8fcddda..99db5eb3e0 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -12,8 +12,10 @@ check-help:
 	@echo " $(MAKE) check-speed          Run qobject speed tests"
 	@echo " $(MAKE) check-qapi-schema    Run QAPI schema tests"
 	@echo " $(MAKE) check-block          Run block tests"
+ifeq ($(CONFIG_TCG),y)
 	@echo " $(MAKE) check-tcg            Run TCG tests"
 	@echo " $(MAKE) check-softfloat      Run FPU emulation tests"
+endif
 	@echo " $(MAKE) check-acceptance     Run all acceptance (functional) tests"
 	@echo
 	@echo " $(MAKE) check-report.tap     Generates an aggregated TAP test report"
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 04/12] tests/Makefile: Restrict some softmmu-only tests
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (2 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 05/12] util/Makefile: Reduce the user-mode object list Philippe Mathieu-Daudé
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

In the next commit we are going to remove some objects from the
util-obj-y variable (objects which are not used by user-mode,
when configured with --disable-system).
Then some system-mode tests are going to fail, due to the missing
objects:

  $ make check-unit -k
    LINK    tests/test-iov
  /usr/bin/ld: tests/test-iov.o: in function `iov_from_buf':
  include/qemu/iov.h:49: undefined reference to `iov_from_buf_full'
  make: *** [rules.mak:124: tests/test-iov] Error 1
    LINK    tests/test-timed-average
  /usr/bin/ld: tests/test-timed-average.o: in function `account':
  tests/test-timed-average.c:27: undefined reference to `timed_average_account'
  make: *** [rules.mak:124: tests/test-timed-average] Error 1
    LINK    tests/test-util-filemonitor
  /usr/bin/ld: tests/test-util-filemonitor.o: in function `qemu_file_monitor_test_event_loop':
  tests/test-util-filemonitor.c:83: undefined reference to `main_loop_wait'
  make: *** [rules.mak:124: tests/test-util-filemonitor] Error 1
    LINK    tests/test-util-sockets
  /usr/bin/ld: tests/test-util-sockets.o: in function `test_socket_fd_pass_name_good':
  tests/test-util-sockets.c:91: undefined reference to `socket_connect'
  make: *** [rules.mak:124: tests/test-util-sockets] Error 1
    LINK    tests/test-base64
  /usr/bin/ld: tests/test-base64.o: in function `test_base64_good':
  tests/test-base64.c:35: undefined reference to `qbase64_decode'
  collect2: error: ld returned 1 exit status
  make: *** [rules.mak:124: tests/test-base64] Error 1
    LINK    tests/test-bufferiszero
  /usr/bin/ld: tests/test-bufferiszero.o: in function `test_1':
  tests/test-bufferiszero.c:31: undefined reference to `buffer_is_zero'
  make: *** [rules.mak:124: tests/test-bufferiszero] Error 1
  make: Target 'check-unit' not remade because of errors.

Instead, restrict these tests to system-mode, by using the
$(CONFIG_SOFTMMU) variable.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: Reworded description with example (rth)
---
 tests/Makefile.include | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 99db5eb3e0..bf11f765c3 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -64,14 +64,14 @@ check-unit-y += tests/check-qlit$(EXESUF)
 check-unit-y += tests/test-qobject-output-visitor$(EXESUF)
 check-unit-y += tests/test-clone-visitor$(EXESUF)
 check-unit-y += tests/test-qobject-input-visitor$(EXESUF)
-check-unit-y += tests/test-qmp-cmds$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-qmp-cmds$(EXESUF)
 check-unit-y += tests/test-string-input-visitor$(EXESUF)
 check-unit-y += tests/test-string-output-visitor$(EXESUF)
 check-unit-y += tests/test-qmp-event$(EXESUF)
 check-unit-y += tests/test-opts-visitor$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-coroutine$(EXESUF)
 check-unit-y += tests/test-visitor-serialization$(EXESUF)
-check-unit-y += tests/test-iov$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-iov$(EXESUF)
 check-unit-y += tests/test-bitmap$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-aio$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-aio-multithread$(EXESUF)
@@ -106,7 +106,7 @@ check-unit-y += tests/test-qht$(EXESUF)
 check-unit-y += tests/test-qht-par$(EXESUF)
 check-unit-y += tests/test-bitops$(EXESUF)
 check-unit-y += tests/test-bitcnt$(EXESUF)
-check-unit-y += tests/test-qdev-global-props$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-qdev-global-props$(EXESUF)
 check-unit-y += tests/check-qom-interface$(EXESUF)
 check-unit-y += tests/check-qom-proplist$(EXESUF)
 check-unit-y += tests/test-qemu-opts$(EXESUF)
@@ -124,9 +124,9 @@ check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_GNUTLS)) += tests/test-crypto-tl
 ifneq (,$(findstring qemu-ga,$(TOOLS)))
 check-unit-$(call land,$(CONFIG_LINUX),$(CONFIG_VIRTIO_SERIAL)) += tests/test-qga$(EXESUF)
 endif
-check-unit-y += tests/test-timed-average$(EXESUF)
-check-unit-$(CONFIG_INOTIFY1) += tests/test-util-filemonitor$(EXESUF)
-check-unit-y += tests/test-util-sockets$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-timed-average$(EXESUF)
+check-unit-$(call land,$(CONFIG_SOFTMMU),$(CONFIG_INOTIFY1)) += tests/test-util-filemonitor$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-util-sockets$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-authz-simple$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-authz-list$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-authz-listfile$(EXESUF)
@@ -137,7 +137,7 @@ check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-file$(EXESUF)
 check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_GNUTLS)) += tests/test-io-channel-tls$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-command$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-io-channel-buffer$(EXESUF)
-check-unit-y += tests/test-base64$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-base64$(EXESUF)
 check-unit-$(call land,$(CONFIG_BLOCK),$(if $(CONFIG_NETTLE),y,$(CONFIG_GCRYPT))) += tests/test-crypto-pbkdf$(EXESUF)
 check-unit-$(CONFIG_BLOCK) += tests/test-crypto-ivgen$(EXESUF)
 check-unit-$(CONFIG_BLOCK)  += tests/test-crypto-afsplit$(EXESUF)
@@ -145,7 +145,7 @@ check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_QEMU_PRIVATE_XTS)) += tests/test
 check-unit-$(CONFIG_BLOCK)  += tests/test-crypto-block$(EXESUF)
 check-unit-y += tests/test-logging$(EXESUF)
 check-unit-$(call land,$(CONFIG_BLOCK),$(CONFIG_REPLICATION)) += tests/test-replication$(EXESUF)
-check-unit-y += tests/test-bufferiszero$(EXESUF)
+check-unit-$(CONFIG_SOFTMMU) += tests/test-bufferiszero$(EXESUF)
 check-unit-y += tests/test-uuid$(EXESUF)
 check-unit-y += tests/ptimer-test$(EXESUF)
 check-unit-y += tests/test-qapi-util$(EXESUF)
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 05/12] util/Makefile: Reduce the user-mode object list
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (3 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 04/12] tests/Makefile: Restrict some softmmu-only tests Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 06/12] stubs/Makefile: " Philippe Mathieu-Daudé
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

These objects are not required when configured with --disable-system.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 util/Makefile.objs | 59 +++++++++++++++++++++++++++++-----------------
 1 file changed, 38 insertions(+), 21 deletions(-)

diff --git a/util/Makefile.objs b/util/Makefile.objs
index 6718a38b61..24ae2e4dfa 100644
--- a/util/Makefile.objs
+++ b/util/Makefile.objs
@@ -1,8 +1,4 @@
 util-obj-y = osdep.o cutils.o unicode.o qemu-timer-common.o
-util-obj-y += bufferiszero.o
-util-obj-y += lockcnt.o
-util-obj-y += aiocb.o async.o aio-wait.o thread-pool.o qemu-timer.o
-util-obj-y += main-loop.o
 util-obj-$(call lnot,$(CONFIG_ATOMIC64)) += atomic64.o
 util-obj-$(CONFIG_POSIX) += aio-posix.o
 util-obj-$(CONFIG_POSIX) += fdmon-poll.o
@@ -21,31 +17,20 @@ util-obj-$(CONFIG_WIN32) += oslib-win32.o
 util-obj-$(CONFIG_WIN32) += qemu-thread-win32.o
 util-obj-y += envlist.o path.o module.o
 util-obj-y += host-utils.o
-util-obj-y += bitmap.o bitops.o hbitmap.o
+util-obj-y += bitmap.o bitops.o
 util-obj-y += fifo8.o
-util-obj-y += nvdimm-utils.o
 util-obj-y += cacheinfo.o
 util-obj-y += error.o qemu-error.o
 util-obj-y += qemu-print.o
 util-obj-y += id.o
-util-obj-y += iov.o qemu-config.o qemu-sockets.o uri.o notify.o
+util-obj-y += qemu-config.o notify.o
 util-obj-y += qemu-option.o qemu-progress.o
 util-obj-y += keyval.o
-util-obj-y += hexdump.o
 util-obj-y += crc32c.o
 util-obj-y += uuid.o
-util-obj-y += throttle.o
 util-obj-y += getauxval.o
-util-obj-y += readline.o
 util-obj-y += rcu.o
 util-obj-$(CONFIG_MEMBARRIER) += sys_membarrier.o
-util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
-util-obj-y += qemu-coroutine-sleep.o
-util-obj-y += qemu-co-shared-resource.o
-util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
-util-obj-y += buffer.o
-util-obj-y += timed-average.o
-util-obj-y += base64.o
 util-obj-y += log.o
 util-obj-y += pagesize.o
 util-obj-y += qdist.o
@@ -54,12 +39,44 @@ util-obj-y += qsp.o
 util-obj-y += range.o
 util-obj-y += stats64.o
 util-obj-y += systemd.o
-util-obj-y += iova-tree.o
-util-obj-$(CONFIG_INOTIFY1) += filemonitor-inotify.o
-util-obj-$(call lnot,$(CONFIG_INOTIFY1)) += filemonitor-stub.o
-util-obj-$(CONFIG_LINUX) += vfio-helpers.o
 util-obj-$(CONFIG_POSIX) += drm.o
 util-obj-y += guest-random.o
 util-obj-$(CONFIG_GIO) += dbus.o
 dbus.o-cflags = $(GIO_CFLAGS)
 dbus.o-libs = $(GIO_LIBS)
+
+#######################################################################
+# code used by both qemu system emulation and qemu-img
+
+ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
+
+util-obj-y += aio-wait.o
+util-obj-y += aiocb.o
+util-obj-y += async.o
+util-obj-y += base64.o
+util-obj-y += buffer.o
+util-obj-y += bufferiszero.o
+util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o
+util-obj-y += hexdump.o
+util-obj-y += lockcnt.o
+util-obj-y += iov.o
+util-obj-y += iova-tree.o
+util-obj-y += hbitmap.o
+util-obj-y += main-loop.o
+util-obj-y += nvdimm-utils.o
+util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o
+util-obj-y += qemu-coroutine-sleep.o
+util-obj-y += qemu-co-shared-resource.o
+util-obj-y += qemu-sockets.o
+util-obj-y += qemu-timer.o
+util-obj-y += thread-pool.o
+util-obj-y += throttle.o
+util-obj-y += timed-average.o
+util-obj-y += uri.o
+
+util-obj-$(CONFIG_LINUX) += vfio-helpers.o
+util-obj-$(CONFIG_INOTIFY1) += filemonitor-inotify.o
+util-obj-$(call lnot,$(CONFIG_INOTIFY1)) += filemonitor-stub.o
+util-obj-$(CONFIG_BLOCK) += readline.o
+
+endif # CONFIG_SOFTMMU || CONFIG_TOOLS
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 06/12] stubs/Makefile: Reduce the user-mode object list
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (4 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 05/12] util/Makefile: Reduce the user-mode object list Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 07/12] target/riscv/cpu: Restrict CPU migration to system-mode Philippe Mathieu-Daudé
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

These stubs are not required when configured with --disable-system.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 stubs/Makefile.objs | 52 ++++++++++++++++++++++++++-------------------
 1 file changed, 30 insertions(+), 22 deletions(-)

diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
index 45be5dc0ed..5ffa085c67 100644
--- a/stubs/Makefile.objs
+++ b/stubs/Makefile.objs
@@ -1,46 +1,54 @@
-stub-obj-y += arch_type.o
-stub-obj-y += bdrv-next-monitor-owned.o
 stub-obj-y += blk-commit-all.o
-stub-obj-y += blockdev-close-all-bdrv-states.o
-stub-obj-y += clock-warp.o
 stub-obj-y += cpu-get-clock.o
 stub-obj-y += cpu-get-icount.o
 stub-obj-y += dump.o
 stub-obj-y += error-printf.o
 stub-obj-y += fdset.o
 stub-obj-y += gdbstub.o
-stub-obj-y += get-vm-name.o
-stub-obj-y += iothread.o
 stub-obj-y += iothread-lock.o
 stub-obj-y += is-daemonized.o
 stub-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
 stub-obj-$(CONFIG_LINUX_IO_URING) += io_uring.o
-stub-obj-y += machine-init-done.o
-stub-obj-y += migr-blocker.o
-stub-obj-y += change-state-handler.o
-stub-obj-y += monitor.o
 stub-obj-y += monitor-core.o
 stub-obj-y += notify-event.o
+stub-obj-y += qmp_memory_device.o
 stub-obj-y += qtest.o
+stub-obj-y += ramfb.o
 stub-obj-y += replay.o
-stub-obj-y += replay-user.o
 stub-obj-y += runstate-check.o
+stub-obj-$(CONFIG_SOFTMMU) += semihost.o
 stub-obj-y += set-fd-handler.o
+stub-obj-y += vmgenid.o
 stub-obj-y += sysbus.o
 stub-obj-y += tpm.o
 stub-obj-y += trace-control.o
-stub-obj-y += uuid.o
-stub-obj-y += vm-stop.o
 stub-obj-y += vmstate.o
+
+#######################################################################
+# code used by both qemu system emulation and qemu-img
+
+ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
+
+stub-obj-y += arch_type.o
+stub-obj-y += bdrv-next-monitor-owned.o
+stub-obj-y += blockdev-close-all-bdrv-states.o
+stub-obj-y += change-state-handler.o
+stub-obj-y += clock-warp.o
 stub-obj-y += fd-register.o
-stub-obj-y += qmp_memory_device.o
-stub-obj-y += target-monitor-defs.o
-stub-obj-y += target-get-monitor-def.o
-stub-obj-y += vmgenid.o
-stub-obj-y += xen-common.o
-stub-obj-y += xen-hvm.o
+stub-obj-y += fw_cfg.o
+stub-obj-y += get-vm-name.o
+stub-obj-y += iothread.o
+stub-obj-y += machine-init-done.o
+stub-obj-y += migr-blocker.o
+stub-obj-y += monitor.o
 stub-obj-y += pci-host-piix.o
 stub-obj-y += ram-block.o
-stub-obj-y += ramfb.o
-stub-obj-y += fw_cfg.o
-stub-obj-$(CONFIG_SOFTMMU) += semihost.o
+stub-obj-y += replay-user.o
+stub-obj-y += target-get-monitor-def.o
+stub-obj-y += target-monitor-defs.o
+stub-obj-y += uuid.o
+stub-obj-y += vm-stop.o
+stub-obj-y += xen-common.o
+stub-obj-y += xen-hvm.o
+
+endif # CONFIG_SOFTMMU || CONFIG_TOOLS
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 07/12] target/riscv/cpu: Restrict CPU migration to system-mode
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (5 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 06/12] stubs/Makefile: " Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 08/12] exec: Assert CPU migration is not used on user-only build Philippe Mathieu-Daudé
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: open list:RISC-V TCG CPUs, Eduardo Habkost, Sagar Karandikar,
	Bastian Koppelmann, Cornelia Huck, Richard Henderson,
	Laurent Vivier, qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Palmer Dabbelt, Richard Henderson

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/riscv/cpu.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index c0b7023100..b59e09209e 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -475,10 +475,12 @@ static void riscv_cpu_init(Object *obj)
     cpu_set_cpustate_pointers(cpu);
 }
 
+#ifndef CONFIG_USER_ONLY
 static const VMStateDescription vmstate_riscv_cpu = {
     .name = "cpu",
     .unmigratable = 1,
 };
+#endif
 
 static Property riscv_cpu_properties[] = {
     DEFINE_PROP_BOOL("i", RISCVCPU, cfg.ext_i, true),
@@ -534,13 +536,13 @@ static void riscv_cpu_class_init(ObjectClass *c, void *data)
     cc->do_transaction_failed = riscv_cpu_do_transaction_failed;
     cc->do_unaligned_access = riscv_cpu_do_unaligned_access;
     cc->get_phys_page_debug = riscv_cpu_get_phys_page_debug;
+    /* For now, mark unmigratable: */
+    cc->vmsd = &vmstate_riscv_cpu;
 #endif
 #ifdef CONFIG_TCG
     cc->tcg_initialize = riscv_translate_init;
     cc->tlb_fill = riscv_cpu_tlb_fill;
 #endif
-    /* For now, mark unmigratable: */
-    cc->vmsd = &vmstate_riscv_cpu;
     device_class_set_props(dc, riscv_cpu_properties);
 }
 
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 08/12] exec: Assert CPU migration is not used on user-only build
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (6 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 07/12] target/riscv/cpu: Restrict CPU migration to system-mode Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 09/12] arch_init: Remove unused 'qapi-commands-misc.h' include Philippe Mathieu-Daudé
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 exec.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/exec.c b/exec.c
index 0cc500d53a..7bc9828c5b 100644
--- a/exec.c
+++ b/exec.c
@@ -946,7 +946,9 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
 
     qemu_plugin_vcpu_init_hook(cpu);
 
-#ifndef CONFIG_USER_ONLY
+#ifdef CONFIG_USER_ONLY
+    assert(cc->vmsd == NULL);
+#else /* !CONFIG_USER_ONLY */
     if (qdev_get_vmsd(DEVICE(cpu)) == NULL) {
         vmstate_register(NULL, cpu->cpu_index, &vmstate_cpu_common, cpu);
     }
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 09/12] arch_init: Remove unused 'qapi-commands-misc.h' include
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (7 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 08/12] exec: Assert CPU migration is not used on user-only build Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 10/12] target/i386: Restrict CpuClass::get_crash_info() to system-mode Philippe Mathieu-Daudé
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Commit ffaee83bcb2 moved qmp_query_target but forgot to remove
this include.

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 arch_init.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch_init.c b/arch_init.c
index 705d0b94ad..074fa621b6 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -27,7 +27,6 @@
 #include "sysemu/arch_init.h"
 #include "hw/pci/pci.h"
 #include "hw/audio/soundhw.h"
-#include "qapi/qapi-commands-misc.h"
 #include "qapi/error.h"
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 10/12] target/i386: Restrict CpuClass::get_crash_info() to system-mode
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (8 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 09/12] arch_init: Remove unused 'qapi-commands-misc.h' include Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 11/12] target/s390x: " Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/i386/cpu.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 92fafa2659..a84553e50c 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6778,6 +6778,7 @@ static void x86_cpu_register_feature_bit_props(X86CPU *cpu,
     x86_cpu_register_bit_prop(cpu, name, w, bitnr);
 }
 
+#if !defined(CONFIG_USER_ONLY)
 static GuestPanicInformation *x86_cpu_get_crash_info(CPUState *cs)
 {
     X86CPU *cpu = X86_CPU(cs);
@@ -6821,6 +6822,7 @@ static void x86_cpu_get_crash_info_qom(Object *obj, Visitor *v,
                                      errp);
     qapi_free_GuestPanicInformation(panic_info);
 }
+#endif /* !CONFIG_USER_ONLY */
 
 static void x86_cpu_initfn(Object *obj)
 {
@@ -6866,8 +6868,10 @@ static void x86_cpu_initfn(Object *obj)
                         x86_cpu_get_unavailable_features,
                         NULL, NULL, NULL, &error_abort);
 
+#if !defined(CONFIG_USER_ONLY)
     object_property_add(obj, "crash-information", "GuestPanicInformation",
                         x86_cpu_get_crash_info_qom, NULL, NULL, NULL, NULL);
+#endif
 
     for (w = 0; w < FEATURE_WORDS; w++) {
         int bitnr;
@@ -7180,7 +7184,6 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
     cc->cpu_exec_interrupt = x86_cpu_exec_interrupt;
 #endif
     cc->dump_state = x86_cpu_dump_state;
-    cc->get_crash_info = x86_cpu_get_crash_info;
     cc->set_pc = x86_cpu_set_pc;
     cc->synchronize_from_tb = x86_cpu_synchronize_from_tb;
     cc->gdb_read_register = x86_cpu_gdb_read_register;
@@ -7191,6 +7194,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
     cc->asidx_from_attrs = x86_asidx_from_attrs;
     cc->get_memory_mapping = x86_cpu_get_memory_mapping;
     cc->get_phys_page_attrs_debug = x86_cpu_get_phys_page_attrs_debug;
+    cc->get_crash_info = x86_cpu_get_crash_info;
     cc->write_elf64_note = x86_cpu_write_elf64_note;
     cc->write_elf64_qemunote = x86_cpu_write_elf64_qemunote;
     cc->write_elf32_note = x86_cpu_write_elf32_note;
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 11/12] target/s390x: Restrict CpuClass::get_crash_info() to system-mode
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (9 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 10/12] target/i386: Restrict CpuClass::get_crash_info() to system-mode Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-15 23:57 ` [PATCH v2 12/12] hw/core: " Philippe Mathieu-Daudé
  2020-03-16  0:16 ` [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Aleksandar Markovic
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, David Hildenbrand, Cornelia Huck,
	Richard Henderson, Laurent Vivier, qemu-s390x, Alistair Francis,
	Paolo Bonzini, Philippe Mathieu-Daudé, Richard Henderson

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 target/s390x/cpu.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 3dd396e870..3b1377c20a 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -237,6 +237,7 @@ out:
     error_propagate(errp, err);
 }
 
+#if !defined(CONFIG_USER_ONLY)
 static GuestPanicInformation *s390_cpu_get_crash_info(CPUState *cs)
 {
     GuestPanicInformation *panic_info;
@@ -246,11 +247,7 @@ static GuestPanicInformation *s390_cpu_get_crash_info(CPUState *cs)
     panic_info = g_malloc0(sizeof(GuestPanicInformation));
 
     panic_info->type = GUEST_PANIC_INFORMATION_TYPE_S390;
-#if !defined(CONFIG_USER_ONLY)
     panic_info->u.s390.core = cpu->env.core_id;
-#else
-    panic_info->u.s390.core = 0; /* sane default for non system emulation */
-#endif
     panic_info->u.s390.psw_mask = cpu->env.psw.mask;
     panic_info->u.s390.psw_addr = cpu->env.psw.addr;
     panic_info->u.s390.reason = cpu->env.crash_reason;
@@ -276,6 +273,7 @@ static void s390_cpu_get_crash_info_qom(Object *obj, Visitor *v,
                                      errp);
     qapi_free_GuestPanicInformation(panic_info);
 }
+#endif
 
 static void s390_cpu_initfn(Object *obj)
 {
@@ -285,16 +283,16 @@ static void s390_cpu_initfn(Object *obj)
     cpu_set_cpustate_pointers(cpu);
     cs->halted = 1;
     cs->exception_index = EXCP_HLT;
+#if !defined(CONFIG_USER_ONLY)
     object_property_add(obj, "crash-information", "GuestPanicInformation",
                         s390_cpu_get_crash_info_qom, NULL, NULL, NULL, NULL);
-    s390_cpu_model_register_props(obj);
-#if !defined(CONFIG_USER_ONLY)
     cpu->env.tod_timer =
         timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_tod_timer, cpu);
     cpu->env.cpu_timer =
         timer_new_ns(QEMU_CLOCK_VIRTUAL, s390x_cpu_timer, cpu);
     s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu);
 #endif
+    s390_cpu_model_register_props(obj);
 }
 
 static void s390_cpu_finalize(Object *obj)
@@ -477,13 +475,13 @@ static void s390_cpu_class_init(ObjectClass *oc, void *data)
     cc->do_interrupt = s390_cpu_do_interrupt;
 #endif
     cc->dump_state = s390_cpu_dump_state;
-    cc->get_crash_info = s390_cpu_get_crash_info;
     cc->set_pc = s390_cpu_set_pc;
     cc->gdb_read_register = s390_cpu_gdb_read_register;
     cc->gdb_write_register = s390_cpu_gdb_write_register;
 #ifndef CONFIG_USER_ONLY
     cc->get_phys_page_debug = s390_cpu_get_phys_page_debug;
     cc->vmsd = &vmstate_s390_cpu;
+    cc->get_crash_info = s390_cpu_get_crash_info;
     cc->write_elf64_note = s390_cpu_write_elf64_note;
 #ifdef CONFIG_TCG
     cc->cpu_exec_interrupt = s390_cpu_exec_interrupt;
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 12/12] hw/core: Restrict CpuClass::get_crash_info() to system-mode
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (10 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 11/12] target/s390x: " Philippe Mathieu-Daudé
@ 2020-03-15 23:57 ` Philippe Mathieu-Daudé
  2020-03-16  0:16 ` [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Aleksandar Markovic
  12 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-15 23:57 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini,
	Philippe Mathieu-Daudé, Richard Henderson

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 include/hw/core/cpu.h | 7 ++++++-
 hw/core/cpu.c         | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index 73e9a869a4..48ab5ec3ed 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -492,6 +492,8 @@ bool cpu_paging_enabled(const CPUState *cpu);
 void cpu_get_memory_mapping(CPUState *cpu, MemoryMappingList *list,
                             Error **errp);
 
+#if !defined(CONFIG_USER_ONLY)
+
 /**
  * cpu_write_elf64_note:
  * @f: pointer to a function that writes memory to a file
@@ -541,6 +543,8 @@ int cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
  */
 GuestPanicInformation *cpu_get_crash_info(CPUState *cpu);
 
+#endif /* !CONFIG_USER_ONLY */
+
 /**
  * CPUDumpFlags:
  * @CPU_DUMP_CODE:
@@ -634,7 +638,8 @@ static inline int cpu_asidx_from_attrs(CPUState *cpu, MemTxAttrs attrs)
     }
     return ret;
 }
-#endif
+
+#endif /* CONFIG_USER_ONLY */
 
 /**
  * cpu_list_add:
diff --git a/hw/core/cpu.c b/hw/core/cpu.c
index fe65ca62ac..debdd7e670 100644
--- a/hw/core/cpu.c
+++ b/hw/core/cpu.c
@@ -209,6 +209,7 @@ static bool cpu_common_exec_interrupt(CPUState *cpu, int int_req)
     return false;
 }
 
+#if !defined(CONFIG_USER_ONLY)
 GuestPanicInformation *cpu_get_crash_info(CPUState *cpu)
 {
     CPUClass *cc = CPU_GET_CLASS(cpu);
@@ -219,6 +220,7 @@ GuestPanicInformation *cpu_get_crash_info(CPUState *cpu)
     }
     return res;
 }
+#endif
 
 void cpu_dump_state(CPUState *cpu, FILE *f, int flags)
 {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 00/12] user-mode: Prune build dependencies (part 1)
  2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
                   ` (11 preceding siblings ...)
  2020-03-15 23:57 ` [PATCH v2 12/12] hw/core: " Philippe Mathieu-Daudé
@ 2020-03-16  0:16 ` Aleksandar Markovic
  2020-03-16  7:45   ` Philippe Mathieu-Daudé
  12 siblings, 1 reply; 18+ messages in thread
From: Aleksandar Markovic @ 2020-03-16  0:16 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier,
	qemu-devel@nongnu.org, qemu-s390x@nongnu.org, Alistair Francis,
	Paolo Bonzini, Richard Henderson

[-- Attachment #1: Type: text/plain, Size: 2383 bytes --]

On Monday, March 16, 2020, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:

> This is the first part of a series reducing user-mode
> dependencies. By stripping out unused code, the build
> and testing time is reduced (as is space used by objects).
>
> Part 1:
> - reduce user-mode object list
> - remove some migration code from user-mode
> - remove cpu_get_crash_info()
>
>
What is the purpose of dividing into parts? What is the content of other
parts, and when do you plan to submit those? A series is usually a
stand-alone and a complete logical unit - why did you decide to submit
"parts" separately (just curious)?

Does this series affect executables' size, or cut build times only?

Thanks,
Aleksandar



> Since v1:
> - Addressed Laurent/Richard review comments
> - Removed 'exec: Drop redundant #ifdeffery'
> - Removed 'target: Restrict write_elfXX_note() handlers to system-mode'
>
> v1: https://www.mail-archive.com/qemu-devel@nongnu.org/msg688456.html
>
> Philippe Mathieu-Daudé (12):
>   Makefile: Only build virtiofsd if system-mode is enabled
>   configure: Avoid building TCG when not needed
>   tests/Makefile: Only display TCG-related tests when TCG is available
>   tests/Makefile: Restrict some softmmu-only tests
>   util/Makefile: Reduce the user-mode object list
>   stubs/Makefile: Reduce the user-mode object list
>   target/riscv/cpu: Restrict CPU migration to system-mode
>   exec: Assert CPU migration is not used on user-only build
>   arch_init: Remove unused 'qapi-commands-misc.h' include
>   target/i386: Restrict CpuClass::get_crash_info() to system-mode
>   target/s390x: Restrict CpuClass::get_crash_info() to system-mode
>   hw/core: Restrict CpuClass::get_crash_info() to system-mode
>
>  configure              |  4 +++
>  Makefile               |  2 +-
>  include/hw/core/cpu.h  |  7 ++++-
>  arch_init.c            |  1 -
>  exec.c                 |  4 ++-
>  hw/core/cpu.c          |  2 ++
>  target/i386/cpu.c      |  6 ++++-
>  target/riscv/cpu.c     |  6 +++--
>  target/s390x/cpu.c     | 12 ++++-----
>  stubs/Makefile.objs    | 52 +++++++++++++++++++++----------------
>  tests/Makefile.include | 18 +++++++------
>  util/Makefile.objs     | 59 +++++++++++++++++++++++++++---------------
>  12 files changed, 108 insertions(+), 65 deletions(-)
>
> --
> 2.21.1
>
>
>

[-- Attachment #2: Type: text/html, Size: 3100 bytes --]

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 00/12] user-mode: Prune build dependencies (part 1)
  2020-03-16  0:16 ` [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Aleksandar Markovic
@ 2020-03-16  7:45   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-16  7:45 UTC (permalink / raw)
  To: Aleksandar Markovic
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier,
	qemu-devel@nongnu.org, qemu-s390x@nongnu.org, Alistair Francis,
	Paolo Bonzini, Richard Henderson

On 3/16/20 1:16 AM, Aleksandar Markovic wrote:
> 
> 
> On Monday, March 16, 2020, Philippe Mathieu-Daudé <philmd@redhat.com 
> <mailto:philmd@redhat.com>> wrote:
> 
>     This is the first part of a series reducing user-mode
>     dependencies. By stripping out unused code, the build
>     and testing time is reduced (as is space used by objects).
> 
>     Part 1:
>     - reduce user-mode object list
>     - remove some migration code from user-mode
>     - remove cpu_get_crash_info()
> 
> 
> What is the purpose of dividing into parts? What is the content of other 
> parts, and when do you plan to submit those? A series is usually a 
> stand-alone and a complete logical unit - why did you decide to submit 
> "parts" separately (just curious)?

Big series are hard to digest and scare reviewers. Peter told me twice 
his rule of thumb is to split a series if it gets bigger than 20 patches 
(and a patch if it modify more than 200 lines). He also recently said he 
skipped review of a ~32 patches series of mine which was too big. I 
don't want other reviewers to do that neither, so I try to split <=20.

Each series could be applied apart, except the last patch from the 3rd 
part (qapi: Restrict code generated for user-mode) which is the one 
really cutting down user-mode code by avoiding pulling in system-mode 
symbols.

First part is generic, second part is QAPI-related, and third part 
concerns hw/core/qdev-properties.c. Each part is covered by different 
maintainers.

> 
> Does this series affect executables' size, or cut build times only?

Both. It will saves us CI testing time, save time to distributions 
packaging linux-user-only builds, produce smaller binaries.

> 
> Thanks,
> Aleksandar
> 
>     Since v1:
>     - Addressed Laurent/Richard review comments
>     - Removed 'exec: Drop redundant #ifdeffery'
>     - Removed 'target: Restrict write_elfXX_note() handlers to system-mode'
> 
>     v1:
>     https://www.mail-archive.com/qemu-devel@nongnu.org/msg688456.html
>     <https://www.mail-archive.com/qemu-devel@nongnu.org/msg688456.html>
> 
>     Philippe Mathieu-Daudé (12):
>        Makefile: Only build virtiofsd if system-mode is enabled
>        configure: Avoid building TCG when not needed
>        tests/Makefile: Only display TCG-related tests when TCG is available
>        tests/Makefile: Restrict some softmmu-only tests
>        util/Makefile: Reduce the user-mode object list
>        stubs/Makefile: Reduce the user-mode object list
>        target/riscv/cpu: Restrict CPU migration to system-mode
>        exec: Assert CPU migration is not used on user-only build
>        arch_init: Remove unused 'qapi-commands-misc.h' include
>        target/i386: Restrict CpuClass::get_crash_info() to system-mode
>        target/s390x: Restrict CpuClass::get_crash_info() to system-mode
>        hw/core: Restrict CpuClass::get_crash_info() to system-mode
> 
>       configure              |  4 +++
>       Makefile               |  2 +-
>       include/hw/core/cpu.h  |  7 ++++-
>       arch_init.c            |  1 -
>       exec.c                 |  4 ++-
>       hw/core/cpu.c          |  2 ++
>       target/i386/cpu.c      |  6 ++++-
>       target/riscv/cpu.c     |  6 +++--
>       target/s390x/cpu.c     | 12 ++++-----
>       stubs/Makefile.objs    | 52 +++++++++++++++++++++----------------
>       tests/Makefile.include | 18 +++++++------
>       util/Makefile.objs     | 59 +++++++++++++++++++++++++++---------------
>       12 files changed, 108 insertions(+), 65 deletions(-)
> 
>     -- 
>     2.21.1
> 
> 



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled
  2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
@ 2020-03-16 18:57   ` Richard Henderson
  2020-03-19 11:13   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 18+ messages in thread
From: Richard Henderson @ 2020-03-16 18:57 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier, qemu-s390x,
	Alistair Francis, Paolo Bonzini, Richard Henderson

On 3/15/20 4:57 PM, Philippe Mathieu-Daudé wrote:
> Do not build the virtiofsd helper when configured with
> --disable-system.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> v2: Use single line with ifeq='yyyy' (lvivier, rth)
> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled
  2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
  2020-03-16 18:57   ` Richard Henderson
@ 2020-03-19 11:13   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-19 11:13 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Laurent Vivier, qemu-s390x,
	Alistair Francis, Paolo Bonzini, Richard Henderson

This patch is reviewed, can it get in 5.0 as build fix?

On 3/16/20 12:57 AM, Philippe Mathieu-Daudé wrote:
> Do not build the virtiofsd helper when configured with
> --disable-system.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> v2: Use single line with ifeq='yyyy' (lvivier, rth)
> ---
>   Makefile | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 7df22fcc5d..7d27941803 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -345,7 +345,7 @@ HELPERS-y += vhost-user-gpu$(EXESUF)
>   vhost-user-json-y += contrib/vhost-user-gpu/50-qemu-gpu.json
>   endif
>   
> -ifeq ($(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyy)
> +ifeq ($(CONFIG_SOFTMMU)$(CONFIG_LINUX)$(CONFIG_SECCOMP)$(CONFIG_LIBCAP_NG),yyyy)
>   HELPERS-y += virtiofsd$(EXESUF)
>   vhost-user-json-y += tools/virtiofsd/50-qemu-virtiofsd.json
>   endif
> 



^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available
  2020-03-15 23:57 ` [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available Philippe Mathieu-Daudé
@ 2020-03-19 11:15   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 18+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-03-19 11:15 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Cornelia Huck, Richard Henderson, Laurent Vivier,
	qemu-s390x, Alistair Francis, Paolo Bonzini, Richard Henderson

This patch might be worth for 5.0 too.

On 3/16/20 12:57 AM, Philippe Mathieu-Daudé wrote:
> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>   tests/Makefile.include | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 67e8fcddda..99db5eb3e0 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -12,8 +12,10 @@ check-help:
>   	@echo " $(MAKE) check-speed          Run qobject speed tests"
>   	@echo " $(MAKE) check-qapi-schema    Run QAPI schema tests"
>   	@echo " $(MAKE) check-block          Run block tests"
> +ifeq ($(CONFIG_TCG),y)
>   	@echo " $(MAKE) check-tcg            Run TCG tests"
>   	@echo " $(MAKE) check-softfloat      Run FPU emulation tests"
> +endif
>   	@echo " $(MAKE) check-acceptance     Run all acceptance (functional) tests"
>   	@echo
>   	@echo " $(MAKE) check-report.tap     Generates an aggregated TAP test report"
> 



^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-03-19 11:16 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-15 23:57 [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 01/12] Makefile: Only build virtiofsd if system-mode is enabled Philippe Mathieu-Daudé
2020-03-16 18:57   ` Richard Henderson
2020-03-19 11:13   ` Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 02/12] configure: Avoid building TCG when not needed Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 03/12] tests/Makefile: Only display TCG-related tests when TCG is available Philippe Mathieu-Daudé
2020-03-19 11:15   ` Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 04/12] tests/Makefile: Restrict some softmmu-only tests Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 05/12] util/Makefile: Reduce the user-mode object list Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 06/12] stubs/Makefile: " Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 07/12] target/riscv/cpu: Restrict CPU migration to system-mode Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 08/12] exec: Assert CPU migration is not used on user-only build Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 09/12] arch_init: Remove unused 'qapi-commands-misc.h' include Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 10/12] target/i386: Restrict CpuClass::get_crash_info() to system-mode Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 11/12] target/s390x: " Philippe Mathieu-Daudé
2020-03-15 23:57 ` [PATCH v2 12/12] hw/core: " Philippe Mathieu-Daudé
2020-03-16  0:16 ` [PATCH v2 00/12] user-mode: Prune build dependencies (part 1) Aleksandar Markovic
2020-03-16  7:45   ` Philippe Mathieu-Daudé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).