summary refs log tree commit diff stats
path: root/scripts (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
| * scripts/qmp-shell: Accept SocketAddrT instead of stringJohn Snow2021-06-181-5/+7
| | | | | | | | | | | | | | | | | | Don't "extend" QEMUMonitorProtocol by changing the argument types. Move the string parsing just outside of the class instead. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-29-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: add mypy typesJohn Snow2021-06-181-26/+41
| | | | | | | | | | | | | | | | | | | | | | As per my usual, this patch is annotations only. Any changes with side effects are done elsewhere. Note: pylint does not understand the subscripts for Collection in Python 3.6, so use the stronger Sequence type as a workaround. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-28-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: initialize completer earlyJohn Snow2021-06-181-1/+1
| | | | | | | | | | | | | | | | | | Add an empty completer as a more type-safe placeholder instead of 'None'. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-26-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: refactor QMPCompleterJohn Snow2021-06-181-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | list is a generic type, but we expect to use strings directly. We could subclass list[str], but pylint does not presently understand that invocation. Change this class to envelop a list instead of *being* a list, for simpler mypy typing. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-25-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: Fix "FuzzyJSON" parserJohn Snow2021-06-181-10/+10
| | | | | | | | | | | | | | | | | | | | I'm not sure when this regressed (Or maybe if it was ever working right to begin with?), but the Python AST requires you to change "Names" to "Constants" in order to truly convert `false` to `False`. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-24-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: move the REPL functionality into QMPShellJohn Snow2021-06-181-3/+7
| | | | | | | | | | | | | | | | | | | | Instead of doing this in main, move it into the class itself. (This makes it easier to put into the qemu.qmp package later by removing as much as we can from the main() function.) Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-23-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: remove prompt argument from read_exec_commandJohn Snow2021-06-181-3/+3
| | | | | | | | | | | | | | | | It's only ever used by one caller, we can just absorb that logic. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-22-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: move get_prompt() to prompt propertyJohn Snow2021-06-181-4/+5
| | | | | | | | | | | | | | | | | | Small tidying; treat "prompt" like an immutable property instead of function/method/routine. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-21-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: Make verbose a public attributeJohn Snow2021-06-181-10/+6
| | | | | | | | | | | | | | | | No real reason to hide this behind an underscore; make it part of the initializer and make it a regular RW attribute. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-20-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: Add pretty attribute to HMP shellJohn Snow2021-06-181-7/+4
| | | | | | | | | | | | | | | | | | It's less useful, but it makes the initialization methods LSP consistent, which quiets a mypy complaint. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-19-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: use argparseJohn Snow2021-06-181-51/+33
| | | | | | | | | | | | | | | | | | Use argparse instead of an open-coded CLI parser, for consistency with everything else. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-18-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: use isinstance() instead of type()John Snow2021-06-181-2/+2
| | | | | | | | | | | | | | | | A bit more idiomatic, and quiets some linter warnings. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-17-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: remove if-raise-else patternsJohn Snow2021-06-181-4/+4
| | | | | | | | | | | | | | | | | | | | Shushes pylint. I don't always mind these patterns personally, but I'm not as sure that I want to remove the warning from pylint's repertoire entirely. Oh well. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-16-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: fix shell history exception handlingJohn Snow2021-06-181-9/+6
| | | | | | | | | | | | | | | | | | We want to remove exceptions that are too broad here; we only want to catch IOErrors that get raised as a direct result of the open call. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-15-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: rename one and two-letter variablesJohn Snow2021-06-181-12/+12
| | | | | | | | | | | | | | | | A bit of churn and housekeeping for pylint, flake8 et al. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-14-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: make QMPCompleter returns explicitJohn Snow2021-06-181-3/+3
| | | | | | | | | | | | | | | | | | This function returns None when it doesn't find a match; do that explicitly. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-13-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: ignore visit_Name nameJohn Snow2021-06-181-1/+1
| | | | | | | | | | | | | | | | Not something I control, sorry, pylint. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-12-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: use triple-double-quote docstring styleJohn Snow2021-06-181-2/+5
| | | | | | | | | | | | | | | | (2014 me had never written python before.) Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-11-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: declare verbose in __init__John Snow2021-06-181-0/+1
| | | | | | | | | | | | | | | | Linters get angry when we don't define state at init time. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-10-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: Use python3-style super()John Snow2021-06-181-3/+3
| | | | | | | | | | | | Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-9-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: use @classmethod where appropriateJohn Snow2021-06-181-2/+4
| | | | | | | | | | | | | | | | Methods with no self-use should belong to the class. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-8-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: remove shadowed variable from _print()John Snow2021-06-181-2/+2
| | | | | | | | | | | | | | | | Don't use 'qmp' here, which shadows the qmp module. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-7-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: fix connect method signatureJohn Snow2021-06-181-1/+1
| | | | | | | | | | | | | | | | | | It needs to match the parent's signature -- the negotiate parameter must be optional. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-6-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: fix exception handlingJohn Snow2021-06-181-1/+1
| | | | | | | | | | | | | | | | Fixes: 50d189c Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-5-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: fix show_banner signatureJohn Snow2021-06-181-2/+2
| | | | | | | | | | | | | | | | The signatures need to match. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-4-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: Apply flake8 rulesJohn Snow2021-06-181-21/+43
| | | | | | | | | | | | | | | | A lot of fiddling around to get us below 80 columns. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-3-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp-shell: apply isort rulesJohn Snow2021-06-181-5/+7
| | | | | | | | | | | | Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210607200649.1840382-2-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: Add forwarder shimJohn Snow2021-06-181-0/+11
| | | | | | | | | | | | | | | | | | Add a little forwarder shim until we are sure that everyone is comfortable with how to use the tools in their new packaged location. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-12-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: move to python/qemu/qmp/qemu_ga_client.pyJohn Snow2021-06-181-327/+0
| | | | | | | | | | | | | | | | | | | | | | | | The script itself will be unavailable for a few commits before being restored, with no way to run it right after this commit. This helps move git history into the new file. To prevent linter regressions, though, we do need to immediately touch up the filename to remove dashes (to make the module importable), and remove the executable bit. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-10-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: add mypy type hintsJohn Snow2021-06-181-40/+49
| | | | | | | | | | | | | | | | | | | | | | | | This script is in slightly rough shape, but it still works. A lot of care went into its initial development. In good faith, I'm updating it to the latest Python coding standards. If there is in interest in this script, though, I'll be asking for a contributor to take care of it further. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-9-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: apply (most) pylint rulesJohn Snow2021-06-181-3/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm only doing a very quick best-effort to preserve this script, to help keep it from breaking further. I think there are pending ideas swirling on the right way to implement better SDKs and better clients, and this script might be a handy reference for those discussions. It presents some interesting design problems, like static type safety when using a dynamic RPC mechanism. I believe it's worth preserving the effort and care that went into making this script by updating it to work with our current infrastructure. However, I am disabling the requirement for docstrings in this file. If you would like to help improve this script, please add docstrings alongside any refactors or rejuvenations you might apply at that time. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-7-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: add module docstringJohn Snow2021-06-181-32/+33
| | | | | | | | | | | | | | | | Turn that nice usage comment into a docstring. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-6-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: replace deprecated optparse with argparseJohn Snow2021-06-181-18/+16
| | | | | | | | | | | | | | | | | | optparse isn't supported anymore, it's from the python2 days. Replace it with the mostly similar argparse. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-5-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: Fix exception handlingJohn Snow2021-06-181-6/+4
| | | | | | | | | | | | | | | | | | | | Fixes: 50d189c These error classes aren't available anymore. Fix the bitrot. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-4-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: apply (most) flake8 rulesJohn Snow2021-06-181-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | - Line length should be < 80 - You shouldn't perform unscoped imports except at the top of the module Notably, the sys.path hack creates problems with the import rule. This will be fixed later. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-3-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qemu-ga-client: apply isort rulesJohn Snow2021-06-181-4/+5
| | | | | | | | | | | | | | | | | | | | | | Hint: > ln -s scripts/qmp/qemu-ga-client python/qemu/qmp/qemu_ga_client.py > cd python > isort qemu Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210604155532.1499282-2-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: add redirection shim to python/qemu/qmp/qom-fuse.pyJohn Snow2021-06-181-0/+11
| | | | | | | | | | | | | | | | | | | | By leaving the script absent for a commit, git-blame travels to the new file instead of staying on the shim. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-19-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: move to python/qemu/qmp/qom_fuse.pyJohn Snow2021-06-181-214/+0
| | | | | | | | | | | | | | | | | | | | Move qom-fuse over to the python package now that it passes the linter. Update the import paradigms so that it continues to pass in the context of the Python package. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210603003719.1321369-18-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: add static type hintsJohn Snow2021-06-181-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because fusepy does not have type hints, add some targeted warning suppressions. Namely, we need to allow subclassing something of an unknown type (in qom_fuse.py), and we need to allow missing imports (recorded against fuse itself) because mypy will be unable to import fusepy (even when installed) as it has no types nor type stubs available. Note: Until now, it was possible to run invocations like 'mypy qemu/' from ./python and have that work. However, these targeted suppressions require that you run 'mypy -p qemu/' instead. The correct, canonical invocation is recorded in ./python/tests/mypy.sh and all of the various CI invocations always use this correct form. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210603003719.1321369-16-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: ensure QOMFuse.read always returns bytesJohn Snow2021-06-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | - Use FuseOSError to signal ENOENT instead of returning it - Wrap qom-get in str(), as we don't always know its type - The empty return should be b'', not ''. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-15-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: use QOMCommand.qom_list()John Snow2021-06-181-10/+8
| | | | | | | | | | | | | | | | | | | | the qom_list method provides a type-safe object that's easier to type check, so switch to using it. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-14-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: Convert to QOMCommandJohn Snow2021-06-181-13/+46
| | | | | | | | | | | | | | | | | | | | | | Move qom-fuse onto the QOMCommand base established in python/qemu/qmp/qom_common.py. The interface doesn't change incompatibly, "qom-fuse mountpoint" still works as an invocation, and QMP_SOCKET is still used as the environment variable. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210603003719.1321369-13-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: Add docstringsJohn Snow2021-06-181-2/+19
| | | | | | | | | | | | | | | | | | The methods inherited from fuse don't need docstrings; that's up to fusepy to handle. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210603003719.1321369-12-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: Apply pylint rulesJohn Snow2021-06-181-8/+8
| | | | | | | | | | | | | | | | | | | | | | - Catch specific exceptions from QMP - Reraise errors with explicit context - method parameters should match parent's names Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-11-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: apply flake8 rulesJohn Snow2021-06-181-38/+43
| | | | | | | | | | | | | | | | | | | | flake8 still has one warning because of the sys.path hack, but that will be going away by the end of this patch series. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-9-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qom-fuse: apply isort rulesJohn Snow2021-06-181-3/+9
| | | | | | | | | | | | | | | | | | | | | | Hint: you can use symlinks to create qom_fuse.py in python/qemu/qmp/ and point to scripts/qom-fuse to apply the standard linting rules to this script. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-8-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * scripts/qmp: redirect qom-xxx scripts to python/qemu/qmp/John Snow2021-06-184-250/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Redirect to the new qom scripts. These forwarders can be deleted eventually when there has been more time for the dust on the Python packaging to settle and people understand how to find these commands. Note: You can run these by setting $PYTHONPATH in your shell and then running "python3 -m qemu.qmp.qom", or you can install the qemu namespace package and use the "qom" or "qom-set" scripts. I've written how to install the package elsewhere, but for the sake of git-blame, cd to ./python, and then do: - pip3 install [--user] [-e] . --user will install to your local user install (will not work inside of a venv), omitting this flag installs to your system-wide packages (outside of a venv) or to your current virtual environment (inside the venv). When installing to a venv or to your system-wide packages, "qom" should be in your $PATH already. If you do a user install, you may need to add ~/.local/bin to your $PATH if you haven't already. -e installs in editable mode: the installed package is effectively just a symlink to this folder; so changes to your git working tree are reflected in the installed package. Note: installing these packages to an environment outside a venv can be dangerous: Many QEMU scripts will begin to prefer the installed version instead of the version directly in the tree. Use with caution. editable mode is recommended when working outside of a venv. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-id: 20210603003719.1321369-7-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
| * python/qmp: add parse_address classmethodJohn Snow2021-06-181-19/+2
| | | | | | | | | | | | | | | | | | | | This takes the place of qmp-shell's __get_address function. It also allows other utilities to share the same parser and syntax for specifying QMP locations. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20210603003719.1321369-4-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
* | Merge remote-tracking branch ↵Peter Maydell2021-06-211-0/+194
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'remotes/ehabkost-gl/tags/x86-next-pull-request' into staging x86 queue, 2021-06-18 Features: * Add ratelimit for bus locks acquired in guest (Chenyi Qiang) Documentation: * SEV documentation updates (Tom Lendacky) * Add a table showing x86-64 ABI compatibility levels (Daniel P. Berrangé) Automated changes: * Update Linux headers to 5.13-rc4 (Eduardo Habkost) # gpg: Signature made Fri 18 Jun 2021 20:51:26 BST # gpg: using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6 # gpg: issuer "ehabkost@redhat.com" # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" [full] # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost-gl/tags/x86-next-pull-request: scripts: helper to generate x86_64 CPU ABI compat info docs: add a table showing x86-64 ABI compatibility levels docs/interop/firmware.json: Add SEV-ES support docs: Add SEV-ES documentation to amd-memory-encryption.txt doc: Fix some mistakes in the SEV documentation i386: Add ratelimit for bus locks acquired in guest Update Linux headers to 5.13-rc4 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
| * | scripts: helper to generate x86_64 CPU ABI compat infoDaniel P. Berrangé2021-06-171-0/+194
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This script is what is used to generate the docs data table in: docs/system/cpu-models-x86-abi.csv It can be useful to run if adding new CPU models / versions and the csv needs updating. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Acked-by: Eduardo Habkost <ehabkost@redhat.com> Message-Id: <20210607135843.196595-4-berrange@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>