Message ID | 20191025063713.23374-1-alex.bennee@linaro.org |
---|---|
Headers | show |
Series | tcg plugins and testing updates | expand |
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.
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
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
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
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.
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
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 <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.
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