mbox series

[PULL,v2,00/73] tcg plugins and testing updates

Message ID 20191025063713.23374-1-alex.bennee@linaro.org
Headers show
Series tcg plugins and testing updates | expand

Message

Alex Bennée Oct. 25, 2019, 6:36 a.m. UTC
The following changes since commit 81c1f71eeb874c4cbbb9c5c4d1a1dc0ba7391dff:

  Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging (2019-10-24 10:43:20 +0100)

are available in the Git repository at:

  https://github.com/stsquad/qemu.git tags/pull-testing-and-plugins-241019-2

for you to fetch changes up to 18900c2d7901680457b51b3ad3f684ef9cba8b64:

  travis.yml: enable linux-gcc-debug-tcg cache (2019-10-24 22:31:29 +0100)

----------------------------------------------------------------
Core TCG plugin support and testing updates

  - TCG plugin support
  - netbsd VM autoinstall
  - various Travis dependency updates
  - enable tcg debug for check-tcg
  - additional Xcode build for Cirrus
  - dependency tweak for gitlab

----------------------------------------------------------------
Alex Bennée (30):
      travis.yml: reduce scope of the --enable-debug build
      travis.yml: bump Xcode 10 to latest dot release
      cirrus.yml: add latest Xcode build target
      travis.yml: cache the clang sanitizer build
      travis.yml: --enable-debug-tcg to check-tcg
      tests/docker: set HOST_ARCH if we don't have ARCH
      tests/docker: update Travis image to a more current version
      trace: add mmu_index to mem_info
      docs/devel: add plugins.rst design document
      plugin: add implementation of the api
      plugins: implement helpers for resolving hwaddr
      cputlb: ensure _cmmu helper functions follow the naming standard
      configure: add --enable-plugins
      plugin: expand the plugin_init function to include an info block
      plugin: add qemu_plugin_insn_disas helper
      plugin: add qemu_plugin_outs helper
      tests/tcg/Makefile.target: fix path to config-host.mak
      tests/tcg: set QEMU_OPTS for all cris runs
      tests/tcg: move "virtual" tests to EXTRA_TESTS
      tests/tcg: drop test-i386-fprem from TESTS when not SLOW
      tests/tcg: enable plugin testing
      tests/plugin: add a hotblocks plugin
      tests/plugin: add instruction execution breakdown
      tests/plugin: add hotpages to analyse memory access patterns
      accel/stubs: reduce headers from tcg-stub
      include/exec: wrap cpu_ldst.h in CONFIG_TCG
      .travis.yml: add --enable-plugins tests
      scripts/checkpatch.pl: don't complain about (foo, /* empty */)
      MAINTAINERS: add me for the TCG plugins code
      travis.yml: enable linux-gcc-debug-tcg cache

Eduardo Habkost (2):
      tests/vm: Let subclasses disable IPv6
      tests/vm/netbsd: Disable IPv6

Emilio G. Cota (32):
      trace: expand mem_info:size_shift to 4 bits
      cpu: introduce cpu_in_exclusive_context()
      translate-all: use cpu_in_exclusive_work_context() in tb_flush
      plugin: add user-facing API
      plugin: add core code
      queue: add QTAILQ_REMOVE_SEVERAL
      cputlb: document get_page_addr_code
      cputlb: introduce get_page_addr_code_hostp
      tcg: add tcg_gen_st_ptr
      plugin-gen: add module for TCG-related code
      atomic_template: add inline trace/plugin helpers
      tcg: let plugins instrument virtual memory accesses
      translate-all: notify plugin code of tb_flush
      *-user: notify plugin of exit
      *-user: plugin syscalls
      cpu: hook plugin vcpu events
      plugin-gen: add plugin_insn_append
      translator: add translator_ld{ub,sw,uw,l,q}
      target/arm: fetch code with translator_ld
      target/ppc: fetch code with translator_ld
      target/sh4: fetch code with translator_ld
      target/i386: fetch code with translator_ld
      target/hppa: fetch code with translator_ld
      target/m68k: fetch code with translator_ld
      target/alpha: fetch code with translator_ld
      target/riscv: fetch code with translator_ld
      target/sparc: fetch code with translator_ld
      target/xtensa: fetch code with translator_ld
      target/openrisc: fetch code with translator_ld
      translator: inject instrumentation from plugins
      plugin: add API symbols to qemu-plugins.symbols
      tests/plugin: add sample plugins

Gerd Hoffmann (1):
      tests/vm: netbsd autoinstall, using serial console

Lluís Vilanova (2):
      vl: support -plugin option
      linux-user: support -plugin option

Philippe Mathieu-Daudé (1):
      travis.yml: Test the release tarball

Thomas Huth (5):
      travis.yml: Add libvdeplug-dev to compile-test net/vde.c
      travis.yml: Use libsdl2 instead of libsdl1.2, and install libsdl2-image
      travis.yml: Use newer version of libgnutls and libpng
      travis.yml: Fix the ccache lines
      gitlab-ci.yml: Use libvdeplug-dev to compile-test the VDE network backend

 .cirrus.yml                               |  11 +
 .gitlab-ci.yml                            |   2 +-
 .shippable.yml                            |   2 -
 .travis.yml                               |  69 ++-
 MAINTAINERS                               |   6 +
 Makefile                                  |  16 +-
 Makefile.target                           |   2 +
 accel/stubs/tcg-stub.c                    |   1 -
 accel/tcg/Makefile.objs                   |   1 +
 accel/tcg/atomic_common.inc.c             |  54 ++
 accel/tcg/atomic_template.h               |  94 +--
 accel/tcg/cpu-exec.c                      |   8 +-
 accel/tcg/cputlb.c                        |  84 ++-
 accel/tcg/plugin-gen.c                    | 932 ++++++++++++++++++++++++++++++
 accel/tcg/plugin-helpers.h                |   5 +
 accel/tcg/translate-all.c                 |  15 +-
 accel/tcg/translator.c                    |  20 +
 accel/tcg/user-exec.c                     |   3 +
 bsd-user/syscall.c                        |  24 +-
 configure                                 |  89 +++
 cpus-common.c                             |   4 +
 cpus.c                                    |  10 +
 disas.c                                   | 110 ++++
 docs/devel/index.rst                      |   1 +
 docs/devel/plugins.rst                    | 112 ++++
 exec.c                                    |   2 +
 hw/core/cpu.c                             |   2 +
 include/disas/disas.h                     |   2 +
 include/exec/cpu-defs.h                   |   1 +
 include/exec/cpu_ldst.h                   |  11 +
 include/exec/cpu_ldst_template.h          |  41 +-
 include/exec/cpu_ldst_useronly_template.h |  32 +-
 include/exec/exec-all.h                   |  64 +-
 include/exec/helper-gen.h                 |   1 +
 include/exec/helper-proto.h               |   1 +
 include/exec/helper-tcg.h                 |   1 +
 include/exec/plugin-gen.h                 |  71 +++
 include/exec/translator.h                 |  62 +-
 include/hw/core/cpu.h                     |  19 +
 include/qemu/log.h                        |   1 +
 include/qemu/plugin-memory.h              |  40 ++
 include/qemu/plugin.h                     | 255 ++++++++
 include/qemu/qemu-plugin.h                | 393 +++++++++++++
 include/qemu/queue.h                      |  10 +
 include/user/syscall-trace.h              |  40 ++
 linux-user/exit.c                         |   1 +
 linux-user/main.c                         |  18 +
 linux-user/syscall.c                      |   7 +-
 plugins/.gitignore                        |   2 +
 plugins/Makefile.objs                     |  21 +
 plugins/api.c                             | 341 +++++++++++
 plugins/core.c                            | 502 ++++++++++++++++
 plugins/loader.c                          | 377 ++++++++++++
 plugins/plugin.h                          |  97 ++++
 plugins/qemu-plugins.symbols              |  40 ++
 qemu-options.hx                           |  17 +
 scripts/checkpatch.pl                     |   2 +-
 scripts/tracetool/transform.py            |   1 +
 target/alpha/translate.c                  |   2 +-
 target/arm/arm_ldst.h                     |  15 +-
 target/cris/translate_v10.inc.c           |   3 +-
 target/hppa/translate.c                   |   2 +-
 target/i386/translate.c                   |  10 +-
 target/m68k/translate.c                   |   2 +-
 target/openrisc/translate.c               |   2 +-
 target/ppc/translate.c                    |   8 +-
 target/riscv/translate.c                  |   2 +-
 target/sh4/translate.c                    |   4 +-
 target/sparc/translate.c                  |   2 +-
 target/xtensa/translate.c                 |   4 +-
 tcg/tcg-op.c                              |  40 +-
 tcg/tcg-op.h                              |  16 +
 tcg/tcg-opc.h                             |   3 +
 tcg/tcg.c                                 |  22 +
 tcg/tcg.h                                 |  41 +-
 tests/Makefile.include                    |  11 +-
 tests/docker/Makefile.include             |   6 +-
 tests/docker/dockerfiles/travis.docker    |   6 +-
 tests/plugin/Makefile                     |  31 +
 tests/plugin/bb.c                         |  64 ++
 tests/plugin/empty.c                      |  30 +
 tests/plugin/hotblocks.c                  | 143 +++++
 tests/plugin/hotpages.c                   | 191 ++++++
 tests/plugin/howvec.c                     | 352 +++++++++++
 tests/plugin/insn.c                       |  61 ++
 tests/plugin/mem.c                        |  97 ++++
 tests/tcg/Makefile.target                 |  43 +-
 tests/tcg/aarch64/Makefile.softmmu-target |   2 +-
 tests/tcg/aarch64/Makefile.target         |   6 +
 tests/tcg/arm/Makefile.softmmu-target     |   1 +
 tests/tcg/arm/Makefile.target             |   6 +
 tests/tcg/cris/Makefile.target            |   2 +-
 tests/tcg/i386/Makefile.target            |  11 +-
 tests/vm/basevm.py                        |  15 +-
 tests/vm/netbsd                           | 195 ++++++-
 trace-events                              |   8 +-
 trace/mem-internal.h                      |  39 +-
 trace/mem.h                               |   7 +-
 util/log.c                                |   3 +
 vl.c                                      |  11 +
 100 files changed, 5462 insertions(+), 207 deletions(-)
 create mode 100644 accel/tcg/atomic_common.inc.c
 create mode 100644 accel/tcg/plugin-gen.c
 create mode 100644 accel/tcg/plugin-helpers.h
 create mode 100644 docs/devel/plugins.rst
 create mode 100644 include/exec/plugin-gen.h
 create mode 100644 include/qemu/plugin-memory.h
 create mode 100644 include/qemu/plugin.h
 create mode 100644 include/qemu/qemu-plugin.h
 create mode 100644 include/user/syscall-trace.h
 create mode 100644 plugins/.gitignore
 create mode 100644 plugins/Makefile.objs
 create mode 100644 plugins/api.c
 create mode 100644 plugins/core.c
 create mode 100644 plugins/loader.c
 create mode 100644 plugins/plugin.h
 create mode 100644 plugins/qemu-plugins.symbols
 create mode 100644 tests/plugin/Makefile
 create mode 100644 tests/plugin/bb.c
 create mode 100644 tests/plugin/empty.c
 create mode 100644 tests/plugin/hotblocks.c
 create mode 100644 tests/plugin/hotpages.c
 create mode 100644 tests/plugin/howvec.c
 create mode 100644 tests/plugin/insn.c
 create mode 100644 tests/plugin/mem.c

--
2.20.1

Comments

Markus Armbruster Oct. 25, 2019, 12:59 p.m. UTC | #1
I hate to interfere with the merging of working code for non-technical
reasons....

This is a plugin interface.  As I wrote in reply to v4, I'd like to see
a pragmatic argument why abuse of the plugin interface to circumvent the
GPL is not practical.  This might include "not a stable interface", "you
have to link with a truckload of gpl code", "the set of things you can
do is deliberately extremely limited".

Perhaps such an argument is made somewhere in these 73 patches already.
I admit to not having read them all :)  In the TCG plugin design document
perhaps?  Assuming it exists...

I proposed discussing the project's requirements for external interfaces
on GPL circumvention deterrence at the QEMU Summit next week.

If merging this could be delayed until the licensing ramifications have
become a bit more clear, I'd be obliged.
Alex Bennée Oct. 25, 2019, 3:04 p.m. UTC | #2
Markus Armbruster <armbru@redhat.com> writes:

> I hate to interfere with the merging of working code for non-technical

> reasons....

>

> This is a plugin interface.  As I wrote in reply to v4, I'd like to see

> a pragmatic argument why abuse of the plugin interface to circumvent the

> GPL is not practical.  This might include "not a stable interface", "you

> have to link with a truckload of gpl code", "the set of things you can

> do is deliberately extremely limited".


I included a link to the description in lead patch of the following two
revisions posted after v4 for this purpose. To repeat myself:

  QEMU TCG plugins provide a way for users to run experiments taking
  advantage of the total system control emulation can have over a guest.
  It provides a mechanism for plugins to subscribe to events during
  translation and execution and optionally callback into the plugin
  during these events. TCG plugins are unable to change the system state
  only monitor it passively. However they can do this down to an
  individual instruction granularity including potentially subscribing
  to all load and store operations.

So to summarise it is a deliberately limited set of passive observations
that can be made by the plugins. You cannot implement a new device using
this interface.

> Perhaps such an argument is made somewhere in these 73 patches already.

> I admit to not having read them all :)  In the TCG plugin design document

> perhaps?  Assuming it exists...


Indeed there is - docs/devel/plugins.rst

A high level tour of the design decisions and approaches is the subject
of my talk on Friday morning.

> I proposed discussing the project's requirements for external interfaces

> on GPL circumvention deterrence at the QEMU Summit next week.


That should certainly be an agenda item for the summit. I don't think
this provides a mechanism for GPL circumnavigation though.

> If merging this could be delayed until the licensing ramifications have

> become a bit more clear, I'd be obliged.


I'd rather not unless we can make an exception for late merging of the
PR. I've worked quite hard to make sure everything is ready for the 4.2
window and I'd rather not miss a whole release cycle on a
misunderstanding of what these plugins allow.

--
Alex Bennée
Peter Maydell Oct. 25, 2019, 4:53 p.m. UTC | #3
On Fri, 25 Oct 2019 at 07:37, Alex Bennée <alex.bennee@linaro.org> wrote:
>

> The following changes since commit 81c1f71eeb874c4cbbb9c5c4d1a1dc0ba7391dff:

>

>   Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging (2019-10-24 10:43:20 +0100)

>

> are available in the Git repository at:

>

>   https://github.com/stsquad/qemu.git tags/pull-testing-and-plugins-241019-2

>

> for you to fetch changes up to 18900c2d7901680457b51b3ad3f684ef9cba8b64:

>

>   travis.yml: enable linux-gcc-debug-tcg cache (2019-10-24 22:31:29 +0100)

>

> ----------------------------------------------------------------

> Core TCG plugin support and testing updates

>

>   - TCG plugin support

>   - netbsd VM autoinstall

>   - various Travis dependency updates

>   - enable tcg debug for check-tcg

>   - additional Xcode build for Cirrus

>   - dependency tweak for gitlab

>


This makes the vm-build-netbsd target stop working:
looking at the log file it seems to try to do an install,
but there's a pkg_add command failure and then it
times out because it expects a menu with an 'Enable sshd'
option and it isn't there:

con recv: >a: Host                      ftp.NetBSD.org
con recv: b: Base directorypub/pkgsrc/packages/NetBSD
con recv:  c: Package directory/amd64/8.1/All
con recv:  d: Userftp
con recv:  e: Password
con recv:  f: Proxy
con recv:  g: Additional packages
con recv:  h: Configure network
con recv:  i: Quit installing binary pkgs
con recv:  x: Install pkgin
con send: x<enter>
con recv:  and update package summary a: Host
ftp.NetBSD.org>x: Install pkgin and update package summary
con recv: Status: RunningCommand: pkg_add
http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin
con recv: --------------------------------------------------------------------------------pkg_add:
Can't process http://ftp.NetBSD.org:80/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin*:
Not Found
con recv: pkg_add: no pkg found for
'http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin',
sorry.
con recv: pkg_add: 1 package addition failed
con recv: Command failedHit enter to continue
con send: <enter>
con recv: Enabling binary packages with pkgin requires setting up the
repository.  The
con recv:  following are the host, directory, user, and password that
will be used.  If
con recv:  "user" is "ftp", then the password is not needed.
con recv:
con recv: >a: Host                      ftp.NetBSD.org
con recv: b: Base directorypub/pkgsrc/packages/NetBSD
con recv:  c: Package directory/amd64/8.1/All
con recv:  d: Userftp
con recv:  e: Password
con recv:  f: Proxy
con recv:  g: Additional packages
con recv:  h: Configure network
con recv:  i: Quit installing binary pkgs
console: *** read timeout ***
console: waiting for: 'g: Enable sshd'
console: line buffer:

con recv:  x: Install pkgin and update package summary

Failed to prepare guest environment
Traceback (most recent call last):
  File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 362, in main
    return vm.build_image(args.image)
  File "/home/peter.maydell/qemu-netbsd/tests/vm/netbsd", line 173, in
build_image
    self.console_wait_send("g: Enable sshd",           "g\n")
  File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 262,
in console_wait_send
    self.console_wait(wait)
  File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 224,
in console_wait
    chars = vm.console_socket.recv(1)
socket.timeout: timed out


I tried a couple of times and it failed the same way both times.


thanks
-- PMM
Alex Bennée Oct. 25, 2019, 7:38 p.m. UTC | #4
Peter Maydell <peter.maydell@linaro.org> writes:

> On Fri, 25 Oct 2019 at 07:37, Alex Bennée <alex.bennee@linaro.org> wrote:

>>

>> The following changes since commit 81c1f71eeb874c4cbbb9c5c4d1a1dc0ba7391dff:

>>

>>   Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging (2019-10-24 10:43:20 +0100)

>>

>> are available in the Git repository at:

>>

>>   https://github.com/stsquad/qemu.git tags/pull-testing-and-plugins-241019-2

>>

>> for you to fetch changes up to 18900c2d7901680457b51b3ad3f684ef9cba8b64:

>>

>>   travis.yml: enable linux-gcc-debug-tcg cache (2019-10-24 22:31:29 +0100)

>>

>> ----------------------------------------------------------------

>> Core TCG plugin support and testing updates

>>

>>   - TCG plugin support

>>   - netbsd VM autoinstall

>>   - various Travis dependency updates

>>   - enable tcg debug for check-tcg

>>   - additional Xcode build for Cirrus

>>   - dependency tweak for gitlab

>>

>

> This makes the vm-build-netbsd target stop working:

> looking at the log file it seems to try to do an install,

> but there's a pkg_add command failure and then it

> times out because it expects a menu with an 'Enable sshd'

> option and it isn't there:


OK I've dropped this (again) and re-sent a testing only PR. I'll resend
the remaining plugin stuff on Monday.

>

> con recv: >a: Host                      ftp.NetBSD.org

> con recv: b: Base directorypub/pkgsrc/packages/NetBSD

> con recv:  c: Package directory/amd64/8.1/All

> con recv:  d: Userftp

> con recv:  e: Password

> con recv:  f: Proxy

> con recv:  g: Additional packages

> con recv:  h: Configure network

> con recv:  i: Quit installing binary pkgs

> con recv:  x: Install pkgin

> con send: x<enter>

> con recv:  and update package summary a: Host

> ftp.NetBSD.org>x: Install pkgin and update package summary

> con recv: Status: RunningCommand: pkg_add

> http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin

> con recv: --------------------------------------------------------------------------------pkg_add:

> Can't process http://ftp.NetBSD.org:80/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin*:

> Not Found

> con recv: pkg_add: no pkg found for

> 'http://ftp.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/8.1/All/pkgin',

> sorry.

> con recv: pkg_add: 1 package addition failed

> con recv: Command failedHit enter to continue

> con send: <enter>

> con recv: Enabling binary packages with pkgin requires setting up the

> repository.  The

> con recv:  following are the host, directory, user, and password that

> will be used.  If

> con recv:  "user" is "ftp", then the password is not needed.

> con recv:

> con recv: >a: Host                      ftp.NetBSD.org

> con recv: b: Base directorypub/pkgsrc/packages/NetBSD

> con recv:  c: Package directory/amd64/8.1/All

> con recv:  d: Userftp

> con recv:  e: Password

> con recv:  f: Proxy

> con recv:  g: Additional packages

> con recv:  h: Configure network

> con recv:  i: Quit installing binary pkgs

> console: *** read timeout ***

> console: waiting for: 'g: Enable sshd'

> console: line buffer:

>

> con recv:  x: Install pkgin and update package summary

>

> Failed to prepare guest environment

> Traceback (most recent call last):

>   File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 362, in main

>     return vm.build_image(args.image)

>   File "/home/peter.maydell/qemu-netbsd/tests/vm/netbsd", line 173, in

> build_image

>     self.console_wait_send("g: Enable sshd",           "g\n")

>   File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 262,

> in console_wait_send

>     self.console_wait(wait)

>   File "/home/peter.maydell/qemu-netbsd/tests/vm/basevm.py", line 224,

> in console_wait

>     chars = vm.console_socket.recv(1)

> socket.timeout: timed out

>

>

> I tried a couple of times and it failed the same way both times.

>

>

> thanks

> -- PMM



--
Alex Bennée
Markus Armbruster Oct. 25, 2019, 8:23 p.m. UTC | #5
Alex Bennée <alex.bennee@linaro.org> writes:

> Markus Armbruster <armbru@redhat.com> writes:

>

>> I hate to interfere with the merging of working code for non-technical

>> reasons....

>>

>> This is a plugin interface.  As I wrote in reply to v4, I'd like to see

>> a pragmatic argument why abuse of the plugin interface to circumvent the

>> GPL is not practical.  This might include "not a stable interface", "you

>> have to link with a truckload of gpl code", "the set of things you can

>> do is deliberately extremely limited".

>

> I included a link to the description in lead patch of the following two

> revisions posted after v4 for this purpose. To repeat myself:


If you had cc'ed me, I might have even read it :)

>   QEMU TCG plugins provide a way for users to run experiments taking

>   advantage of the total system control emulation can have over a guest.

>   It provides a mechanism for plugins to subscribe to events during

>   translation and execution and optionally callback into the plugin

>   during these events. TCG plugins are unable to change the system state

>   only monitor it passively. However they can do this down to an

>   individual instruction granularity including potentially subscribing

>   to all load and store operations.

>

> So to summarise it is a deliberately limited set of passive observations

> that can be made by the plugins. You cannot implement a new device using

> this interface.

>

>> Perhaps such an argument is made somewhere in these 73 patches already.

>> I admit to not having read them all :)  In the TCG plugin design document

>> perhaps?  Assuming it exists...

>

> Indeed there is - docs/devel/plugins.rst


In 21/73.  I'll read it as soon as I can.

File contents is about *TCG* plugins, file name advertises plugins
without a qualifier.  We can rename when it bothers us.

> A high level tour of the design decisions and approaches is the subject

> of my talk on Friday morning.


Good move.

>> I proposed discussing the project's requirements for external interfaces

>> on GPL circumvention deterrence at the QEMU Summit next week.

>

> That should certainly be an agenda item for the summit. I don't think

> this provides a mechanism for GPL circumnavigation though.

>

>> If merging this could be delayed until the licensing ramifications have

>> become a bit more clear, I'd be obliged.

>

> I'd rather not unless we can make an exception for late merging of the

> PR. I've worked quite hard to make sure everything is ready for the 4.2

> window and I'd rather not miss a whole release cycle on a

> misunderstanding of what these plugins allow.


I think there are multiple ways to avoid the nuclear outcome.

Coming to a conclusion before the soft freeze is the nicest one.

Making an exception for late merging is another one, but Peter may
prefer not to.

Yet another one is merging the pull request before the soft freeze with
the understanding that it'll be reverted unless we come to a positive
conclusion before say -rc0 (Nov 5).  I'm confident we can work it out in
Lyon.
Peter Maydell Oct. 27, 2019, 7:44 p.m. UTC | #6
On Fri, 25 Oct 2019 at 21:24, Markus Armbruster <armbru@redhat.com> wrote:
> Alex Bennée <alex.bennee@linaro.org> writes:

> > I'd rather not unless we can make an exception for late merging of the

> > PR. I've worked quite hard to make sure everything is ready for the 4.2

> > window and I'd rather not miss a whole release cycle on a

> > misunderstanding of what these plugins allow.

>

> I think there are multiple ways to avoid the nuclear outcome.

>

> Coming to a conclusion before the soft freeze is the nicest one.

>

> Making an exception for late merging is another one, but Peter may

> prefer not to.

>

> Yet another one is merging the pull request before the soft freeze with

> the understanding that it'll be reverted unless we come to a positive

> conclusion before say -rc0 (Nov 5).  I'm confident we can work it out in

> Lyon.


I'm happy with any of these (and we have a longstanding rule
that as long as a version of the pullreq was on list before soft
freeze it's ok to apply before hardfreeze, even if it needed to
go through a few versions or was otherwise a bit delayed).

In practice, since I'm on holiday Mon/Tues and this hotel wifi is
awful it's quite likely that I wouldn't get round to actually processing
a pullreq with the TCG plugins in it before we all get a chance
to talk face-to-face on Wednesday anyhow :-)

Alex: I suggest you send out a pullreq with the plugins stuff
(I've just applied your testing pullreq), and then we can
make sure it gets over the "passes merge build/tests" hurdle.

thanks
-- PMM
Alex Bennée Oct. 28, 2019, 9:07 a.m. UTC | #7
Peter Maydell <peter.maydell@linaro.org> writes:

> On Fri, 25 Oct 2019 at 21:24, Markus Armbruster <armbru@redhat.com> wrote:

>> Alex Bennée <alex.bennee@linaro.org> writes:

>> > I'd rather not unless we can make an exception for late merging of the

>> > PR. I've worked quite hard to make sure everything is ready for the 4.2

>> > window and I'd rather not miss a whole release cycle on a

>> > misunderstanding of what these plugins allow.

>>

>> I think there are multiple ways to avoid the nuclear outcome.

>>

>> Coming to a conclusion before the soft freeze is the nicest one.

>>

>> Making an exception for late merging is another one, but Peter may

>> prefer not to.

>>

>> Yet another one is merging the pull request before the soft freeze with

>> the understanding that it'll be reverted unless we come to a positive

>> conclusion before say -rc0 (Nov 5).  I'm confident we can work it out in

>> Lyon.

>

> I'm happy with any of these (and we have a longstanding rule

> that as long as a version of the pullreq was on list before soft

> freeze it's ok to apply before hardfreeze, even if it needed to

> go through a few versions or was otherwise a bit delayed).

>

> In practice, since I'm on holiday Mon/Tues and this hotel wifi is

> awful it's quite likely that I wouldn't get round to actually processing

> a pullreq with the TCG plugins in it before we all get a chance

> to talk face-to-face on Wednesday anyhow :-)


I do actually have a little bit in my talk about the history of plugins
and the worries about GPL circumnavigation in my talk on Friday but that
doesn't stop us previewing it on Wednesday ;-)

>

> Alex: I suggest you send out a pullreq with the plugins stuff

> (I've just applied your testing pullreq), and then we can

> make sure it gets over the "passes merge build/tests" hurdle.


I'll spin a new PR. I split the testing changes (and reverted the netbsd
autoinstall patch again) and sent that on Friday. Would it be OK still
to base the plugins PR on top of the new testing PR to avoid the
conflicts in Travis?

>

> thanks

> -- PMM



--
Alex Bennée
Markus Armbruster Nov. 6, 2019, 12:42 p.m. UTC | #8
Markus Armbruster <armbru@redhat.com> writes:

> Alex Bennée <alex.bennee@linaro.org> writes:

>

>> Markus Armbruster <armbru@redhat.com> writes:

>>

>>> I hate to interfere with the merging of working code for non-technical

>>> reasons....

>>>

>>> This is a plugin interface.  As I wrote in reply to v4, I'd like to see

>>> a pragmatic argument why abuse of the plugin interface to circumvent the

>>> GPL is not practical.  This might include "not a stable interface", "you

>>> have to link with a truckload of gpl code", "the set of things you can

>>> do is deliberately extremely limited".

[...]
>>> If merging this could be delayed until the licensing ramifications have

>>> become a bit more clear, I'd be obliged.

>>

>> I'd rather not unless we can make an exception for late merging of the

>> PR. I've worked quite hard to make sure everything is ready for the 4.2

>> window and I'd rather not miss a whole release cycle on a

>> misunderstanding of what these plugins allow.

>

> I think there are multiple ways to avoid the nuclear outcome.

>

> Coming to a conclusion before the soft freeze is the nicest one.

>

> Making an exception for late merging is another one, but Peter may

> prefer not to.

>

> Yet another one is merging the pull request before the soft freeze with

> the understanding that it'll be reverted unless we come to a positive

> conclusion before say -rc0 (Nov 5).  I'm confident we can work it out in

> Lyon.


The series has since been merged, so just for the record: we did.  The
plugin interface looks useful for its stated purposes, yet pretty
useless for GPL circumvention.  We'll evolve it deliberately to preserve
that property.

Alex, thank you for your patience.
Peter Maydell Nov. 8, 2019, 5:23 p.m. UTC | #9
On Wed, 6 Nov 2019 at 12:42, Markus Armbruster <armbru@redhat.com> wrote:
>

> Markus Armbruster <armbru@redhat.com> writes:

>

> > Alex Bennée <alex.bennee@linaro.org> writes:

> >

> >> Markus Armbruster <armbru@redhat.com> writes:

> >>

> >>> I hate to interfere with the merging of working code for non-technical

> >>> reasons....

> >>>

> >>> This is a plugin interface.  As I wrote in reply to v4, I'd like to see

> >>> a pragmatic argument why abuse of the plugin interface to circumvent the

> >>> GPL is not practical.  This might include "not a stable interface", "you

> >>> have to link with a truckload of gpl code", "the set of things you can

> >>> do is deliberately extremely limited".

> [...]

> >>> If merging this could be delayed until the licensing ramifications have

> >>> become a bit more clear, I'd be obliged.

> >>

> >> I'd rather not unless we can make an exception for late merging of the

> >> PR. I've worked quite hard to make sure everything is ready for the 4.2

> >> window and I'd rather not miss a whole release cycle on a

> >> misunderstanding of what these plugins allow.

> >

> > I think there are multiple ways to avoid the nuclear outcome.

> >

> > Coming to a conclusion before the soft freeze is the nicest one.

> >

> > Making an exception for late merging is another one, but Peter may

> > prefer not to.

> >

> > Yet another one is merging the pull request before the soft freeze with

> > the understanding that it'll be reverted unless we come to a positive

> > conclusion before say -rc0 (Nov 5).  I'm confident we can work it out in

> > Lyon.

>

> The series has since been merged, so just for the record: we did.  The

> plugin interface looks useful for its stated purposes, yet pretty

> useless for GPL circumvention.  We'll evolve it deliberately to preserve

> that property.


The one specific thing that did come out of discussions at Lyon
was that we'd like to have a basic "check the version" to catch
mismatched/out-of-date plugins; Alex has a patch on list for that.

thanks
-- PMM