Message ID | cover.1620755942.git.edvin.torok@citrix.com (mailing list archive) |
---|---|
Headers | show |
Series | live update and gnttab patches | expand |
On Tue, 2021-05-11 at 19:05 +0100, Edwin Török wrote: > These patches have been posted previously. A git tree is available here for easier reviewing: https://github.com/edwintorok/xen/pull/2 > The gnttab patches (tools/ocaml/libs/mmap) were not applied at the > time > to avoid conflicts with an in-progress XSA. > The binary format live-update and fuzzing patches were not applied > because it was too close to the next Xen release freeze. > > The patches depend on each-other: live-update only works correctly > when the gnttab > patches are taken too (MFN is not part of the binary live-update > stream), > so they are included here as a single series. > The gnttab patches replaces one use of libxenctrl with stable > interfaces, leaving one unstable > libxenctrl interface used by oxenstored. > > The 'vendor external dependencies' may be optional, it is useful to > be part > of a patchqueue in a specfile so that you can build everything > without external dependencies, > but might as well commit it so everyone has it easily available not > just XenServer. > > Note that the live-update fuzz test doesn't yet pass, it is still > able to find bugs. > However the reduced version with a fixed seed used as a unit test > does pass, > so it is useful to have it committed, and further improvements can be > made later > as more bugs are discovered and fixed. > > Edwin Török (17): > docs/designs/xenstore-migration.md: clarify that deletes are > recursive > tools/ocaml: add unit test skeleton with Dune build system > tools/ocaml: vendor external dependencies for convenience > tools/ocaml/xenstored: implement the live migration binary format > tools/ocaml/xenstored: add binary dump format support > tools/ocaml/xenstored: add support for binary format > tools/ocaml/xenstored: validate config file before live update > Add structured fuzzing unit test > tools/ocaml: use common macros for manipulating mmap_interface > tools/ocaml/libs/mmap: allocate correct number of bytes > tools/ocaml/libs/mmap: Expose stub_mmap_alloc > tools/ocaml/libs/mmap: mark mmap/munmap as blocking > tools/ocaml/libs/xb: import gnttab stubs from mirage > tools/ocaml: safer Xenmmap interface > tools/ocaml/xenstored: use gnttab instead of xenctrl's > foreign_map_range > tools/ocaml/xenstored: don't store domU's mfn of ring page > tools/ocaml/libs/mmap: Clean up unused read/write > > docs/designs/xenstore-migration.md | 3 +- > tools/ocaml/.gitignore | 2 + > tools/ocaml/Makefile | 53 + > tools/ocaml/dune-project | 5 + > tools/ocaml/duniverse/cmdliner/.gitignore | 10 + > tools/ocaml/duniverse/cmdliner/.ocp-indent | 1 + > tools/ocaml/duniverse/cmdliner/B0.ml | 9 + > tools/ocaml/duniverse/cmdliner/CHANGES.md | 255 +++ > tools/ocaml/duniverse/cmdliner/LICENSE.md | 13 + > tools/ocaml/duniverse/cmdliner/Makefile | 77 + > tools/ocaml/duniverse/cmdliner/README.md | 51 + > tools/ocaml/duniverse/cmdliner/_tags | 3 + > tools/ocaml/duniverse/cmdliner/build.ml | 155 ++ > tools/ocaml/duniverse/cmdliner/cmdliner.opam | 32 + > tools/ocaml/duniverse/cmdliner/doc/api.odocl | 1 + > tools/ocaml/duniverse/cmdliner/dune-project | 2 + > tools/ocaml/duniverse/cmdliner/pkg/META | 7 + > tools/ocaml/duniverse/cmdliner/pkg/pkg.ml | 33 + > .../ocaml/duniverse/cmdliner/src/cmdliner.ml | 309 ++++ > .../ocaml/duniverse/cmdliner/src/cmdliner.mli | 1624 > +++++++++++++++++ > .../duniverse/cmdliner/src/cmdliner.mllib | 11 + > .../duniverse/cmdliner/src/cmdliner_arg.ml | 356 ++++ > .../duniverse/cmdliner/src/cmdliner_arg.mli | 111 ++ > .../duniverse/cmdliner/src/cmdliner_base.ml | 302 +++ > .../duniverse/cmdliner/src/cmdliner_base.mli | 68 + > .../duniverse/cmdliner/src/cmdliner_cline.ml | 199 ++ > .../duniverse/cmdliner/src/cmdliner_cline.mli | 34 + > .../duniverse/cmdliner/src/cmdliner_docgen.ml | 352 ++++ > .../cmdliner/src/cmdliner_docgen.mli | 30 + > .../duniverse/cmdliner/src/cmdliner_info.ml | 233 +++ > .../duniverse/cmdliner/src/cmdliner_info.mli | 140 ++ > .../cmdliner/src/cmdliner_manpage.ml | 502 +++++ > .../cmdliner/src/cmdliner_manpage.mli | 100 + > .../duniverse/cmdliner/src/cmdliner_msg.ml | 116 ++ > .../duniverse/cmdliner/src/cmdliner_msg.mli | 56 + > .../cmdliner/src/cmdliner_suggest.ml | 54 + > .../cmdliner/src/cmdliner_suggest.mli | 25 + > .../duniverse/cmdliner/src/cmdliner_term.ml | 41 + > .../duniverse/cmdliner/src/cmdliner_term.mli | 40 + > .../duniverse/cmdliner/src/cmdliner_trie.ml | 97 + > .../duniverse/cmdliner/src/cmdliner_trie.mli | 35 + > tools/ocaml/duniverse/cmdliner/src/dune | 4 + > tools/ocaml/duniverse/cmdliner/test/chorus.ml | 31 + > tools/ocaml/duniverse/cmdliner/test/cp_ex.ml | 54 + > .../ocaml/duniverse/cmdliner/test/darcs_ex.ml | 149 ++ > tools/ocaml/duniverse/cmdliner/test/dune | 12 + > tools/ocaml/duniverse/cmdliner/test/revolt.ml | 9 + > tools/ocaml/duniverse/cmdliner/test/rm_ex.ml | 53 + > .../ocaml/duniverse/cmdliner/test/tail_ex.ml | 73 + > .../ocaml/duniverse/cmdliner/test/test_man.ml | 100 + > .../duniverse/cmdliner/test/test_man_utf8.ml | 11 + > .../duniverse/cmdliner/test/test_opt_req.ml | 13 + > .../ocaml/duniverse/cmdliner/test/test_pos.ml | 13 + > .../duniverse/cmdliner/test/test_pos_all.ml | 11 + > .../duniverse/cmdliner/test/test_pos_left.ml | 11 + > .../duniverse/cmdliner/test/test_pos_req.ml | 15 + > .../duniverse/cmdliner/test/test_pos_rev.ml | 14 + > .../duniverse/cmdliner/test/test_term_dups.ml | 19 + > .../cmdliner/test/test_with_used_args.ml | 18 + > tools/ocaml/duniverse/cppo/.gitignore | 5 + > tools/ocaml/duniverse/cppo/.ocp-indent | 22 + > tools/ocaml/duniverse/cppo/.travis.yml | 16 + > tools/ocaml/duniverse/cppo/CODEOWNERS | 8 + > tools/ocaml/duniverse/cppo/Changes | 85 + > tools/ocaml/duniverse/cppo/INSTALL.md | 17 + > tools/ocaml/duniverse/cppo/LICENSE.md | 24 + > tools/ocaml/duniverse/cppo/Makefile | 18 + > tools/ocaml/duniverse/cppo/README.md | 521 ++++++ > tools/ocaml/duniverse/cppo/VERSION | 1 + > tools/ocaml/duniverse/cppo/appveyor.yml | 14 + > tools/ocaml/duniverse/cppo/cppo.opam | 31 + > .../ocaml/duniverse/cppo/cppo_ocamlbuild.opam | 27 + > tools/ocaml/duniverse/cppo/dune-project | 3 + > tools/ocaml/duniverse/cppo/examples/Makefile | 8 + > tools/ocaml/duniverse/cppo/examples/debug.ml | 7 + > tools/ocaml/duniverse/cppo/examples/dune | 32 + > tools/ocaml/duniverse/cppo/examples/french.ml | 34 + > tools/ocaml/duniverse/cppo/examples/lexer.mll | 9 + > .../duniverse/cppo/ocamlbuild_plugin/_tags | 1 + > .../duniverse/cppo/ocamlbuild_plugin/dune | 6 + > .../cppo/ocamlbuild_plugin/ocamlbuild_cppo.ml | 35 + > .../ocamlbuild_plugin/ocamlbuild_cppo.mli | 9 + > tools/ocaml/duniverse/cppo/src/compat.ml | 7 + > .../ocaml/duniverse/cppo/src/cppo_command.ml | 63 + > .../ocaml/duniverse/cppo/src/cppo_command.mli | 11 + > tools/ocaml/duniverse/cppo/src/cppo_eval.ml | 697 +++++++ > tools/ocaml/duniverse/cppo/src/cppo_eval.mli | 29 + > tools/ocaml/duniverse/cppo/src/cppo_lexer.mll | 721 ++++++++ > tools/ocaml/duniverse/cppo/src/cppo_main.ml | 230 +++ > .../ocaml/duniverse/cppo/src/cppo_parser.mly | 266 +++ > tools/ocaml/duniverse/cppo/src/cppo_types.ml | 98 + > tools/ocaml/duniverse/cppo/src/cppo_types.mli | 70 + > .../ocaml/duniverse/cppo/src/cppo_version.mli | 1 + > tools/ocaml/duniverse/cppo/src/dune | 21 + > tools/ocaml/duniverse/cppo/test/capital.cppo | 6 + > tools/ocaml/duniverse/cppo/test/capital.ref | 6 + > tools/ocaml/duniverse/cppo/test/comments.cppo | 7 + > tools/ocaml/duniverse/cppo/test/comments.ref | 8 + > tools/ocaml/duniverse/cppo/test/cond.cppo | 47 + > tools/ocaml/duniverse/cppo/test/cond.ref | 17 + > tools/ocaml/duniverse/cppo/test/dune | 130 ++ > tools/ocaml/duniverse/cppo/test/ext.cppo | 10 + > tools/ocaml/duniverse/cppo/test/ext.ref | 28 + > tools/ocaml/duniverse/cppo/test/incl.cppo | 3 + > tools/ocaml/duniverse/cppo/test/incl2.cppo | 1 + > tools/ocaml/duniverse/cppo/test/loc.cppo | 8 + > tools/ocaml/duniverse/cppo/test/loc.ref | 21 + > .../ocaml/duniverse/cppo/test/paren_arg.cppo | 3 + > tools/ocaml/duniverse/cppo/test/paren_arg.ref | 4 + > tools/ocaml/duniverse/cppo/test/source.sh | 13 + > tools/ocaml/duniverse/cppo/test/test.cppo | 144 ++ > tools/ocaml/duniverse/cppo/test/tuple.cppo | 38 + > tools/ocaml/duniverse/cppo/test/tuple.ref | 20 + > .../ocaml/duniverse/cppo/test/unmatched.cppo | 14 + > tools/ocaml/duniverse/cppo/test/unmatched.ref | 15 + > tools/ocaml/duniverse/cppo/test/version.cppo | 30 + > tools/ocaml/duniverse/crowbar/.gitignore | 5 + > tools/ocaml/duniverse/crowbar/CHANGES.md | 9 + > tools/ocaml/duniverse/crowbar/LICENSE.md | 8 + > tools/ocaml/duniverse/crowbar/README.md | 82 + > tools/ocaml/duniverse/crowbar/crowbar.opam | 33 + > tools/ocaml/duniverse/crowbar/dune | 1 + > tools/ocaml/duniverse/crowbar/dune-project | 2 + > .../duniverse/crowbar/examples/.gitignore | 1 + > .../duniverse/crowbar/examples/calendar/dune | 3 + > .../examples/calendar/test_calendar.ml | 29 + > .../duniverse/crowbar/examples/fpath/dune | 4 + > .../crowbar/examples/fpath/test_fpath.ml | 18 + > .../duniverse/crowbar/examples/input/testcase | 1 + > .../ocaml/duniverse/crowbar/examples/map/dune | 3 + > .../crowbar/examples/map/test_map.ml | 47 + > .../duniverse/crowbar/examples/pprint/dune | 3 + > .../crowbar/examples/pprint/test_pprint.ml | 39 + > .../crowbar/examples/serializer/dune | 3 + > .../crowbar/examples/serializer/serializer.ml | 34 + > .../examples/serializer/test_serializer.ml | 47 + > .../duniverse/crowbar/examples/uunf/dune | 3 + > .../crowbar/examples/uunf/test_uunf.ml | 75 + > .../duniverse/crowbar/examples/xmldiff/dune | 3 + > .../crowbar/examples/xmldiff/test_xmldiff.ml | 42 + > tools/ocaml/duniverse/crowbar/src/crowbar.ml | 582 ++++++ > tools/ocaml/duniverse/crowbar/src/crowbar.mli | 251 +++ > tools/ocaml/duniverse/crowbar/src/dune | 3 + > tools/ocaml/duniverse/crowbar/src/todo | 16 + > tools/ocaml/duniverse/csexp/CHANGES.md | 45 + > tools/ocaml/duniverse/csexp/LICENSE.md | 21 + > tools/ocaml/duniverse/csexp/Makefile | 23 + > tools/ocaml/duniverse/csexp/README.md | 33 + > .../duniverse/csexp/bench/csexp_bench.ml | 22 + > tools/ocaml/duniverse/csexp/bench/dune | 11 + > tools/ocaml/duniverse/csexp/bench/main.ml | 1 + > tools/ocaml/duniverse/csexp/bench/runner.sh | 4 + > tools/ocaml/duniverse/csexp/csexp.opam | 51 + > .../ocaml/duniverse/csexp/csexp.opam.template | 14 + > tools/ocaml/duniverse/csexp/dune-project | 42 + > .../ocaml/duniverse/csexp/dune-workspace.dev | 6 + > tools/ocaml/duniverse/csexp/src/csexp.ml | 333 ++++ > tools/ocaml/duniverse/csexp/src/csexp.mli | 369 ++++ > tools/ocaml/duniverse/csexp/src/dune | 3 + > tools/ocaml/duniverse/csexp/test/dune | 6 + > tools/ocaml/duniverse/csexp/test/test.ml | 142 ++ > tools/ocaml/duniverse/dune | 4 + > tools/ocaml/duniverse/fmt/.gitignore | 8 + > tools/ocaml/duniverse/fmt/.ocp-indent | 1 + > tools/ocaml/duniverse/fmt/CHANGES.md | 98 + > tools/ocaml/duniverse/fmt/LICENSE.md | 13 + > tools/ocaml/duniverse/fmt/README.md | 35 + > tools/ocaml/duniverse/fmt/_tags | 7 + > tools/ocaml/duniverse/fmt/doc/api.odocl | 3 + > tools/ocaml/duniverse/fmt/doc/index.mld | 11 + > tools/ocaml/duniverse/fmt/dune-project | 2 + > tools/ocaml/duniverse/fmt/fmt.opam | 35 + > tools/ocaml/duniverse/fmt/pkg/META | 40 + > tools/ocaml/duniverse/fmt/pkg/pkg.ml | 18 + > tools/ocaml/duniverse/fmt/src/dune | 30 + > tools/ocaml/duniverse/fmt/src/fmt.ml | 787 ++++++++ > tools/ocaml/duniverse/fmt/src/fmt.mli | 689 +++++++ > tools/ocaml/duniverse/fmt/src/fmt.mllib | 1 + > tools/ocaml/duniverse/fmt/src/fmt_cli.ml | 32 + > tools/ocaml/duniverse/fmt/src/fmt_cli.mli | 45 + > tools/ocaml/duniverse/fmt/src/fmt_cli.mllib | 1 + > tools/ocaml/duniverse/fmt/src/fmt_top.ml | 23 + > tools/ocaml/duniverse/fmt/src/fmt_top.mllib | 1 + > tools/ocaml/duniverse/fmt/src/fmt_tty.ml | 78 + > tools/ocaml/duniverse/fmt/src/fmt_tty.mli | 50 + > tools/ocaml/duniverse/fmt/src/fmt_tty.mllib | 1 + > .../duniverse/fmt/src/fmt_tty_top_init.ml | 23 + > tools/ocaml/duniverse/fmt/test/test.ml | 322 ++++ > .../duniverse/ocaml-afl-persistent/.gitignore | 2 + > .../duniverse/ocaml-afl-persistent/CHANGES.md | 22 + > .../duniverse/ocaml-afl-persistent/LICENSE.md | 8 + > .../duniverse/ocaml-afl-persistent/README.md | 17 + > .../ocaml-afl-persistent/afl-persistent.opam | 49 + > .../afl-persistent.opam.template | 16 + > .../aflPersistent.available.ml | 21 + > .../ocaml-afl-persistent/aflPersistent.mli | 1 + > .../aflPersistent.stub.ml | 1 + > .../duniverse/ocaml-afl-persistent/detect.sh | 43 + > .../ocaml/duniverse/ocaml-afl-persistent/dune | 20 + > .../ocaml-afl-persistent/dune-project | 23 + > .../duniverse/ocaml-afl-persistent/test.ml | 3 + > .../ocaml-afl-persistent/test/harness.ml | 22 + > .../ocaml-afl-persistent/test/test.ml | 73 + > .../ocaml-afl-persistent/test/test.sh | 33 + > .../ocaml/duniverse/ocplib-endian/.gitignore | 3 + > .../ocaml/duniverse/ocplib-endian/.travis.yml | 19 + > .../ocaml/duniverse/ocplib-endian/CHANGES.md | 55 + > .../ocaml/duniverse/ocplib-endian/COPYING.txt | 521 ++++++ > tools/ocaml/duniverse/ocplib-endian/Makefile | 13 + > tools/ocaml/duniverse/ocplib-endian/README.md | 16 + > .../duniverse/ocplib-endian/dune-project | 2 + > .../ocplib-endian/ocplib-endian.opam | 30 + > .../ocplib-endian/src/be_ocaml_401.ml | 32 + > .../duniverse/ocplib-endian/src/common.ml | 24 + > .../ocplib-endian/src/common_401.cppo.ml | 100 + > .../ocplib-endian/src/common_float.ml | 5 + > tools/ocaml/duniverse/ocplib-endian/src/dune | 75 + > .../ocplib-endian/src/endianBigstring.cppo.ml | 112 ++ > .../src/endianBigstring.cppo.mli | 128 ++ > .../ocplib-endian/src/endianBytes.cppo.ml | 130 ++ > .../ocplib-endian/src/endianBytes.cppo.mli | 124 ++ > .../ocplib-endian/src/endianString.cppo.ml | 118 ++ > .../ocplib-endian/src/endianString.cppo.mli | 121 ++ > .../ocplib-endian/src/le_ocaml_401.ml | 32 + > .../ocplib-endian/src/ne_ocaml_401.ml | 20 + > .../duniverse/ocplib-endian/tests/bench.ml | 436 +++++ > .../ocaml/duniverse/ocplib-endian/tests/dune | 35 + > .../duniverse/ocplib-endian/tests/test.ml | 39 + > .../tests/test_bigstring.cppo.ml | 191 ++ > .../ocplib-endian/tests/test_bytes.cppo.ml | 185 ++ > .../ocplib-endian/tests/test_string.cppo.ml | 185 ++ > tools/ocaml/duniverse/result/CHANGES.md | 15 + > tools/ocaml/duniverse/result/LICENSE.md | 24 + > tools/ocaml/duniverse/result/Makefile | 17 + > tools/ocaml/duniverse/result/README.md | 5 + > tools/ocaml/duniverse/result/dune | 12 + > tools/ocaml/duniverse/result/dune-project | 3 + > .../duniverse/result/result-as-alias-4.08.ml | 2 + > .../ocaml/duniverse/result/result-as-alias.ml | 2 + > .../duniverse/result/result-as-newtype.ml | 2 + > tools/ocaml/duniverse/result/result.opam | 18 + > tools/ocaml/duniverse/result/which_result.ml | 14 + > tools/ocaml/duniverse/stdlib-shims/CHANGES.md | 5 + > tools/ocaml/duniverse/stdlib-shims/LICENSE | 203 +++ > tools/ocaml/duniverse/stdlib-shims/README.md | 2 + > .../ocaml/duniverse/stdlib-shims/dune-project | 1 + > .../duniverse/stdlib-shims/dune-workspace.dev | 14 + > tools/ocaml/duniverse/stdlib-shims/src/dune | 97 + > .../duniverse/stdlib-shims/stdlib-shims.opam | 24 + > tools/ocaml/duniverse/stdlib-shims/test/dune | 3 + > .../ocaml/duniverse/stdlib-shims/test/test.ml | 2 + > tools/ocaml/libs/eventchn/dune | 8 + > tools/ocaml/libs/mmap/Makefile | 19 +- > tools/ocaml/libs/mmap/dune | 18 + > tools/ocaml/libs/mmap/gnt.ml | 62 + > tools/ocaml/libs/mmap/gnt.mli | 87 + > tools/ocaml/libs/mmap/gnttab_stubs.c | 106 ++ > tools/ocaml/libs/mmap/mmap_stubs.h | 11 +- > tools/ocaml/libs/mmap/xenmmap.ml | 17 +- > tools/ocaml/libs/mmap/xenmmap.mli | 13 +- > tools/ocaml/libs/mmap/xenmmap_stubs.c | 86 +- > tools/ocaml/libs/xb/dune | 7 + > tools/ocaml/libs/xb/xb.ml | 10 +- > tools/ocaml/libs/xb/xb.mli | 4 +- > tools/ocaml/libs/xb/xs_ring_stubs.c | 14 +- > tools/ocaml/libs/xc/dune | 9 + > tools/ocaml/libs/xc/xenctrl.ml | 6 +- > tools/ocaml/libs/xc/xenctrl.mli | 5 +- > tools/ocaml/libs/xs/dune | 4 + > tools/ocaml/xen.opam | 1 + > tools/ocaml/xen.opam.locked | 119 ++ > tools/ocaml/xenstore.opam | 1 + > tools/ocaml/xenstored.opam | 21 + > tools/ocaml/xenstored/Makefile | 4 +- > tools/ocaml/xenstored/connection.ml | 63 +- > tools/ocaml/xenstored/disk.ml | 319 ++++ > tools/ocaml/xenstored/domain.ml | 9 +- > tools/ocaml/xenstored/domains.ml | 13 +- > tools/ocaml/xenstored/dune | 19 + > tools/ocaml/xenstored/parse_arg.ml | 6 +- > tools/ocaml/xenstored/perms.ml | 2 + > tools/ocaml/xenstored/poll.ml | 3 +- > tools/ocaml/xenstored/process.ml | 30 +- > tools/ocaml/xenstored/store.ml | 1 + > tools/ocaml/xenstored/test/dune | 23 + > tools/ocaml/xenstored/test/generator.ml | 189 ++ > tools/ocaml/xenstored/test/gnt.ml | 52 + > tools/ocaml/xenstored/test/model.ml | 253 +++ > tools/ocaml/xenstored/test/old/arbitrary.ml | 261 +++ > tools/ocaml/xenstored/test/old/gen_paths.ml | 66 + > .../xenstored/test/old/xenstored_test.ml | 527 ++++++ > tools/ocaml/xenstored/test/pathtree.ml | 40 + > tools/ocaml/xenstored/test/testable.ml | 380 ++++ > tools/ocaml/xenstored/test/types.ml | 437 +++++ > .../xenmmap.mli => xenstored/test/xenctrl.ml} | 40 +- > tools/ocaml/xenstored/test/xeneventchn.ml | 50 + > tools/ocaml/xenstored/test/xenstored_test.ml | 147 ++ > tools/ocaml/xenstored/test/xs_protocol.ml | 733 ++++++++ > tools/ocaml/xenstored/transaction.ml | 119 +- > tools/ocaml/xenstored/xenstored.ml | 224 ++- > tools/ocaml/xenstored/xenstored_main.ml | 1 + > 301 files changed, 22724 insertions(+), 193 deletions(-) > create mode 100644 tools/ocaml/.gitignore > create mode 100644 tools/ocaml/dune-project > create mode 100644 tools/ocaml/duniverse/cmdliner/.gitignore > create mode 100644 tools/ocaml/duniverse/cmdliner/.ocp-indent > create mode 100644 tools/ocaml/duniverse/cmdliner/B0.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/CHANGES.md > create mode 100644 tools/ocaml/duniverse/cmdliner/LICENSE.md > create mode 100644 tools/ocaml/duniverse/cmdliner/Makefile > create mode 100644 tools/ocaml/duniverse/cmdliner/README.md > create mode 100644 tools/ocaml/duniverse/cmdliner/_tags > create mode 100755 tools/ocaml/duniverse/cmdliner/build.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/cmdliner.opam > create mode 100644 tools/ocaml/duniverse/cmdliner/doc/api.odocl > create mode 100644 tools/ocaml/duniverse/cmdliner/dune-project > create mode 100644 tools/ocaml/duniverse/cmdliner/pkg/META > create mode 100755 tools/ocaml/duniverse/cmdliner/pkg/pkg.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/src/cmdliner.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/src/cmdliner.mli > create mode 100644 tools/ocaml/duniverse/cmdliner/src/cmdliner.mllib > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_arg.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_arg.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_base.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_base.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_cline.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_cline.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_docgen.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_docgen.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_info.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_info.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_manpage.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_manpage.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_msg.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_msg.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_suggest.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_suggest.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_term.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_term.mli > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_trie.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/src/cmdliner_trie.mli > create mode 100644 tools/ocaml/duniverse/cmdliner/src/dune > create mode 100644 tools/ocaml/duniverse/cmdliner/test/chorus.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/cp_ex.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/darcs_ex.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/dune > create mode 100644 tools/ocaml/duniverse/cmdliner/test/revolt.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/rm_ex.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/tail_ex.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/test_man.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_man_utf8.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_opt_req.ml > create mode 100644 tools/ocaml/duniverse/cmdliner/test/test_pos.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_pos_all.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_pos_left.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_pos_req.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_pos_rev.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_term_dups.ml > create mode 100644 > tools/ocaml/duniverse/cmdliner/test/test_with_used_args.ml > create mode 100644 tools/ocaml/duniverse/cppo/.gitignore > create mode 100644 tools/ocaml/duniverse/cppo/.ocp-indent > create mode 100644 tools/ocaml/duniverse/cppo/.travis.yml > create mode 100644 tools/ocaml/duniverse/cppo/CODEOWNERS > create mode 100644 tools/ocaml/duniverse/cppo/Changes > create mode 100644 tools/ocaml/duniverse/cppo/INSTALL.md > create mode 100644 tools/ocaml/duniverse/cppo/LICENSE.md > create mode 100644 tools/ocaml/duniverse/cppo/Makefile > create mode 100644 tools/ocaml/duniverse/cppo/README.md > create mode 100644 tools/ocaml/duniverse/cppo/VERSION > create mode 100644 tools/ocaml/duniverse/cppo/appveyor.yml > create mode 100644 tools/ocaml/duniverse/cppo/cppo.opam > create mode 100644 tools/ocaml/duniverse/cppo/cppo_ocamlbuild.opam > create mode 100644 tools/ocaml/duniverse/cppo/dune-project > create mode 100644 tools/ocaml/duniverse/cppo/examples/Makefile > create mode 100644 tools/ocaml/duniverse/cppo/examples/debug.ml > create mode 100644 tools/ocaml/duniverse/cppo/examples/dune > create mode 100644 tools/ocaml/duniverse/cppo/examples/french.ml > create mode 100644 tools/ocaml/duniverse/cppo/examples/lexer.mll > create mode 100644 > tools/ocaml/duniverse/cppo/ocamlbuild_plugin/_tags > create mode 100644 tools/ocaml/duniverse/cppo/ocamlbuild_plugin/dune > create mode 100644 > tools/ocaml/duniverse/cppo/ocamlbuild_plugin/ocamlbuild_cppo.ml > create mode 100644 > tools/ocaml/duniverse/cppo/ocamlbuild_plugin/ocamlbuild_cppo.mli > create mode 100644 tools/ocaml/duniverse/cppo/src/compat.ml > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_command.ml > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_command.mli > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_eval.ml > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_eval.mli > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_lexer.mll > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_main.ml > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_parser.mly > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_types.ml > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_types.mli > create mode 100644 tools/ocaml/duniverse/cppo/src/cppo_version.mli > create mode 100644 tools/ocaml/duniverse/cppo/src/dune > create mode 100644 tools/ocaml/duniverse/cppo/test/capital.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/capital.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/comments.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/comments.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/cond.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/cond.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/dune > create mode 100644 tools/ocaml/duniverse/cppo/test/ext.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/ext.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/incl.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/incl2.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/loc.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/loc.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/paren_arg.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/paren_arg.ref > create mode 100755 tools/ocaml/duniverse/cppo/test/source.sh > create mode 100644 tools/ocaml/duniverse/cppo/test/test.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/tuple.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/tuple.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/unmatched.cppo > create mode 100644 tools/ocaml/duniverse/cppo/test/unmatched.ref > create mode 100644 tools/ocaml/duniverse/cppo/test/version.cppo > create mode 100644 tools/ocaml/duniverse/crowbar/.gitignore > create mode 100644 tools/ocaml/duniverse/crowbar/CHANGES.md > create mode 100644 tools/ocaml/duniverse/crowbar/LICENSE.md > create mode 100644 tools/ocaml/duniverse/crowbar/README.md > create mode 100644 tools/ocaml/duniverse/crowbar/crowbar.opam > create mode 100644 tools/ocaml/duniverse/crowbar/dune > create mode 100644 tools/ocaml/duniverse/crowbar/dune-project > create mode 100644 tools/ocaml/duniverse/crowbar/examples/.gitignore > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/calendar/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/calendar/test_calendar.ml > create mode 100644 tools/ocaml/duniverse/crowbar/examples/fpath/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/fpath/test_fpath.ml > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/input/testcase > create mode 100644 tools/ocaml/duniverse/crowbar/examples/map/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/map/test_map.ml > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/pprint/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/pprint/test_pprint.ml > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/serializer/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/serializer/serializer.ml > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/serializer/test_serializer.ml > create mode 100644 tools/ocaml/duniverse/crowbar/examples/uunf/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/uunf/test_uunf.ml > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/xmldiff/dune > create mode 100644 > tools/ocaml/duniverse/crowbar/examples/xmldiff/test_xmldiff.ml > create mode 100644 tools/ocaml/duniverse/crowbar/src/crowbar.ml > create mode 100644 tools/ocaml/duniverse/crowbar/src/crowbar.mli > create mode 100644 tools/ocaml/duniverse/crowbar/src/dune > create mode 100644 tools/ocaml/duniverse/crowbar/src/todo > create mode 100644 tools/ocaml/duniverse/csexp/CHANGES.md > create mode 100644 tools/ocaml/duniverse/csexp/LICENSE.md > create mode 100644 tools/ocaml/duniverse/csexp/Makefile > create mode 100644 tools/ocaml/duniverse/csexp/README.md > create mode 100644 tools/ocaml/duniverse/csexp/bench/csexp_bench.ml > create mode 100644 tools/ocaml/duniverse/csexp/bench/dune > create mode 100644 tools/ocaml/duniverse/csexp/bench/main.ml > create mode 100755 tools/ocaml/duniverse/csexp/bench/runner.sh > create mode 100644 tools/ocaml/duniverse/csexp/csexp.opam > create mode 100644 tools/ocaml/duniverse/csexp/csexp.opam.template > create mode 100644 tools/ocaml/duniverse/csexp/dune-project > create mode 100644 tools/ocaml/duniverse/csexp/dune-workspace.dev > create mode 100644 tools/ocaml/duniverse/csexp/src/csexp.ml > create mode 100644 tools/ocaml/duniverse/csexp/src/csexp.mli > create mode 100644 tools/ocaml/duniverse/csexp/src/dune > create mode 100644 tools/ocaml/duniverse/csexp/test/dune > create mode 100644 tools/ocaml/duniverse/csexp/test/test.ml > create mode 100644 tools/ocaml/duniverse/dune > create mode 100644 tools/ocaml/duniverse/fmt/.gitignore > create mode 100644 tools/ocaml/duniverse/fmt/.ocp-indent > create mode 100644 tools/ocaml/duniverse/fmt/CHANGES.md > create mode 100644 tools/ocaml/duniverse/fmt/LICENSE.md > create mode 100644 tools/ocaml/duniverse/fmt/README.md > create mode 100644 tools/ocaml/duniverse/fmt/_tags > create mode 100644 tools/ocaml/duniverse/fmt/doc/api.odocl > create mode 100644 tools/ocaml/duniverse/fmt/doc/index.mld > create mode 100644 tools/ocaml/duniverse/fmt/dune-project > create mode 100644 tools/ocaml/duniverse/fmt/fmt.opam > create mode 100644 tools/ocaml/duniverse/fmt/pkg/META > create mode 100755 tools/ocaml/duniverse/fmt/pkg/pkg.ml > create mode 100644 tools/ocaml/duniverse/fmt/src/dune > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt.ml > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt.mli > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt.mllib > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_cli.ml > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_cli.mli > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_cli.mllib > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_top.ml > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_top.mllib > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_tty.ml > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_tty.mli > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_tty.mllib > create mode 100644 tools/ocaml/duniverse/fmt/src/fmt_tty_top_init.ml > create mode 100644 tools/ocaml/duniverse/fmt/test/test.ml > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/.gitignore > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/CHANGES.md > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/LICENSE.md > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/README.md > create mode 100644 tools/ocaml/duniverse/ocaml-afl-persistent/afl- > persistent.opam > create mode 100644 tools/ocaml/duniverse/ocaml-afl-persistent/afl- > persistent.opam.template > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/aflPersistent.available.ml > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/aflPersistent.mli > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/aflPersistent.stub.ml > create mode 100755 tools/ocaml/duniverse/ocaml-afl- > persistent/detect.sh > create mode 100644 tools/ocaml/duniverse/ocaml-afl-persistent/dune > create mode 100644 tools/ocaml/duniverse/ocaml-afl-persistent/dune- > project > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/test.ml > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/test/harness.ml > create mode 100644 tools/ocaml/duniverse/ocaml-afl- > persistent/test/test.ml > create mode 100755 tools/ocaml/duniverse/ocaml-afl- > persistent/test/test.sh > create mode 100644 tools/ocaml/duniverse/ocplib-endian/.gitignore > create mode 100644 tools/ocaml/duniverse/ocplib-endian/.travis.yml > create mode 100644 tools/ocaml/duniverse/ocplib-endian/CHANGES.md > create mode 100644 tools/ocaml/duniverse/ocplib-endian/COPYING.txt > create mode 100644 tools/ocaml/duniverse/ocplib-endian/Makefile > create mode 100644 tools/ocaml/duniverse/ocplib-endian/README.md > create mode 100644 tools/ocaml/duniverse/ocplib-endian/dune-project > create mode 100644 tools/ocaml/duniverse/ocplib-endian/ocplib- > endian.opam > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/be_ocaml_401.ml > create mode 100644 tools/ocaml/duniverse/ocplib-endian/src/common.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/common_401.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/common_float.ml > create mode 100644 tools/ocaml/duniverse/ocplib-endian/src/dune > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianBigstring.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianBigstring.cppo.mli > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianBytes.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianBytes.cppo.mli > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianString.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/endianString.cppo.mli > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/le_ocaml_401.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/src/ne_ocaml_401.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/tests/bench.ml > create mode 100644 tools/ocaml/duniverse/ocplib-endian/tests/dune > create mode 100644 tools/ocaml/duniverse/ocplib-endian/tests/test.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/tests/test_bigstring.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/tests/test_bytes.cppo.ml > create mode 100644 tools/ocaml/duniverse/ocplib- > endian/tests/test_string.cppo.ml > create mode 100755 tools/ocaml/duniverse/result/CHANGES.md > create mode 100755 tools/ocaml/duniverse/result/LICENSE.md > create mode 100755 tools/ocaml/duniverse/result/Makefile > create mode 100755 tools/ocaml/duniverse/result/README.md > create mode 100755 tools/ocaml/duniverse/result/dune > create mode 100755 tools/ocaml/duniverse/result/dune-project > create mode 100755 tools/ocaml/duniverse/result/result-as-alias- > 4.08.ml > create mode 100755 tools/ocaml/duniverse/result/result-as-alias.ml > create mode 100755 tools/ocaml/duniverse/result/result-as-newtype.ml > create mode 100755 tools/ocaml/duniverse/result/result.opam > create mode 100755 tools/ocaml/duniverse/result/which_result.ml > create mode 100644 tools/ocaml/duniverse/stdlib-shims/CHANGES.md > create mode 100644 tools/ocaml/duniverse/stdlib-shims/LICENSE > create mode 100644 tools/ocaml/duniverse/stdlib-shims/README.md > create mode 100644 tools/ocaml/duniverse/stdlib-shims/dune-project > create mode 100644 tools/ocaml/duniverse/stdlib-shims/dune- > workspace.dev > create mode 100644 tools/ocaml/duniverse/stdlib-shims/src/dune > create mode 100644 tools/ocaml/duniverse/stdlib-shims/stdlib- > shims.opam > create mode 100644 tools/ocaml/duniverse/stdlib-shims/test/dune > create mode 100644 tools/ocaml/duniverse/stdlib-shims/test/test.ml > create mode 100644 tools/ocaml/libs/eventchn/dune > create mode 100644 tools/ocaml/libs/mmap/dune > create mode 100644 tools/ocaml/libs/mmap/gnt.ml > create mode 100644 tools/ocaml/libs/mmap/gnt.mli > create mode 100644 tools/ocaml/libs/mmap/gnttab_stubs.c > create mode 100644 tools/ocaml/libs/xb/dune > create mode 100644 tools/ocaml/libs/xc/dune > create mode 100644 tools/ocaml/libs/xs/dune > create mode 100644 tools/ocaml/xen.opam > create mode 100644 tools/ocaml/xen.opam.locked > create mode 100644 tools/ocaml/xenstore.opam > create mode 100644 tools/ocaml/xenstored.opam > create mode 100644 tools/ocaml/xenstored/dune > create mode 100644 tools/ocaml/xenstored/test/dune > create mode 100644 tools/ocaml/xenstored/test/generator.ml > create mode 100644 tools/ocaml/xenstored/test/gnt.ml > create mode 100644 tools/ocaml/xenstored/test/model.ml > create mode 100644 tools/ocaml/xenstored/test/old/arbitrary.ml > create mode 100644 tools/ocaml/xenstored/test/old/gen_paths.ml > create mode 100644 tools/ocaml/xenstored/test/old/xenstored_test.ml > create mode 100644 tools/ocaml/xenstored/test/pathtree.ml > create mode 100644 tools/ocaml/xenstored/test/testable.ml > create mode 100644 tools/ocaml/xenstored/test/types.ml > copy tools/ocaml/{libs/mmap/xenmmap.mli => > xenstored/test/xenctrl.ml} (54%) > create mode 100644 tools/ocaml/xenstored/test/xeneventchn.ml > create mode 100644 tools/ocaml/xenstored/test/xenstored_test.ml > create mode 100644 tools/ocaml/xenstored/test/xs_protocol.ml > create mode 100644 tools/ocaml/xenstored/xenstored_main.ml >
On 11/05/2021 19:05, Edwin Török wrote: > These patches have been posted previously. > The gnttab patches (tools/ocaml/libs/mmap) were not applied at the time > to avoid conflicts with an in-progress XSA. > The binary format live-update and fuzzing patches were not applied > because it was too close to the next Xen release freeze. > > The patches depend on each-other: live-update only works correctly when the gnttab > patches are taken too (MFN is not part of the binary live-update stream), > so they are included here as a single series. > The gnttab patches replaces one use of libxenctrl with stable interfaces, leaving one unstable > libxenctrl interface used by oxenstored. > > The 'vendor external dependencies' may be optional, it is useful to be part > of a patchqueue in a specfile so that you can build everything without external dependencies, > but might as well commit it so everyone has it easily available not just XenServer. > > Note that the live-update fuzz test doesn't yet pass, it is still able to find bugs. > However the reduced version with a fixed seed used as a unit test does pass, > so it is useful to have it committed, and further improvements can be made later > as more bugs are discovered and fixed. > > Edwin Török (17): > docs/designs/xenstore-migration.md: clarify that deletes are recursive > tools/ocaml: add unit test skeleton with Dune build system > tools/ocaml: vendor external dependencies for convenience > tools/ocaml/xenstored: implement the live migration binary format > tools/ocaml/xenstored: add binary dump format support > tools/ocaml/xenstored: add support for binary format > tools/ocaml/xenstored: validate config file before live update > Add structured fuzzing unit test > tools/ocaml: use common macros for manipulating mmap_interface > tools/ocaml/libs/mmap: allocate correct number of bytes > tools/ocaml/libs/mmap: Expose stub_mmap_alloc > tools/ocaml/libs/mmap: mark mmap/munmap as blocking > tools/ocaml/libs/xb: import gnttab stubs from mirage > tools/ocaml: safer Xenmmap interface > tools/ocaml/xenstored: use gnttab instead of xenctrl's > foreign_map_range > tools/ocaml/xenstored: don't store domU's mfn of ring page > tools/ocaml/libs/mmap: Clean up unused read/write Gitlab CI reports failures across the board in Debian Stretch 32-bit builds. All logs https://gitlab.com/xen-project/patchew/xen/-/pipelines/301146112 but the tl;dr seems to be: File "disk.ml", line 179, characters 26-37: Error: Integer literal exceeds the range of representable integers of type int ~Andrew
On Tue, 2021-05-11 at 21:05 +0100, Andrew Cooper wrote: > On 11/05/2021 19:05, Edwin Török wrote: > > These patches have been posted previously. > > The gnttab patches (tools/ocaml/libs/mmap) were not applied at the > > time > > to avoid conflicts with an in-progress XSA. > > The binary format live-update and fuzzing patches were not applied > > because it was too close to the next Xen release freeze. > > > > The patches depend on each-other: live-update only works correctly > > when the gnttab > > patches are taken too (MFN is not part of the binary live-update > > stream), > > so they are included here as a single series. > > The gnttab patches replaces one use of libxenctrl with stable > > interfaces, leaving one unstable > > libxenctrl interface used by oxenstored. > > > > The 'vendor external dependencies' may be optional, it is useful to > > be part > > of a patchqueue in a specfile so that you can build everything > > without external dependencies, > > but might as well commit it so everyone has it easily available not > > just XenServer. > > > > Note that the live-update fuzz test doesn't yet pass, it is still > > able to find bugs. > > However the reduced version with a fixed seed used as a unit test > > does pass, > > so it is useful to have it committed, and further improvements can > > be made later > > as more bugs are discovered and fixed. > > > > Edwin Török (17): > > docs/designs/xenstore-migration.md: clarify that deletes are > > recursive > > tools/ocaml: add unit test skeleton with Dune build system > > tools/ocaml: vendor external dependencies for convenience > > tools/ocaml/xenstored: implement the live migration binary format > > tools/ocaml/xenstored: add binary dump format support > > tools/ocaml/xenstored: add support for binary format > > tools/ocaml/xenstored: validate config file before live update > > Add structured fuzzing unit test > > tools/ocaml: use common macros for manipulating mmap_interface > > tools/ocaml/libs/mmap: allocate correct number of bytes > > tools/ocaml/libs/mmap: Expose stub_mmap_alloc > > tools/ocaml/libs/mmap: mark mmap/munmap as blocking > > tools/ocaml/libs/xb: import gnttab stubs from mirage > > tools/ocaml: safer Xenmmap interface > > tools/ocaml/xenstored: use gnttab instead of xenctrl's > > foreign_map_range > > tools/ocaml/xenstored: don't store domU's mfn of ring page > > tools/ocaml/libs/mmap: Clean up unused read/write > > Gitlab CI reports failures across the board in Debian Stretch 32-bit > builds. All logs > https://gitlab.com/xen-project/patchew/xen/-/pipelines/301146112 but > the > tl;dr seems to be: > > File "disk.ml", line 179, characters 26-37: > Error: Integer literal exceeds the range of representable integers of > type int Thanks, this should fix it, I refreshed my git tree (there is also a fix there for the older version of Make): https://gitlab.com/xen-project/patchew/xen/-/pipelines/301146112 Not sure whether it is worth continuing to support 32-bit i686 builds, any modern Intel/AMD CPU would be 64-bit capable, but perhaps 32-bit is still popular in the ARM world and keeping 32-bit Intel supported is the easiest way to build-test it? diff --git a/tools/ocaml/xenstored/disk.ml b/tools/ocaml/xenstored/disk.ml index 59794324e1..b7678af87f 100644 --- a/tools/ocaml/xenstored/disk.ml +++ b/tools/ocaml/xenstored/disk.ml @@ -176,7 +176,7 @@ let write store = output_byte ch i let w32 ch v = - assert (v >= 0 && v <= 0xFFFF_FFFF); + assert (v >= 0 && Int64.of_int v <= 0xFFFF_FFFFL); output_binary_int ch v let pos = pos_out @@ -213,7 +213,7 @@ let write store = let r32 t = (* read unsigned 32-bit int *) - let r = input_binary_int t land 0xFFFF_FFFF in + let r = Int64.logand (Int64.of_int (input_binary_int t)) 0xFFFF_FFFFL |> Int64.to_int in assert (r >= 0); r @@ -293,7 +293,7 @@ module LiveRecord = struct write_record t Type.global_data 8 @@ fun b -> O.w32 b (FD.to_int rw_sock); (* TODO: this needs a unit test/live update test too! *) - O.w32 b 0xFFFF_FFFF + O.w32 b 0x3FFF_FFFF let read_global_data t ~len f = read_expect t "global_data" 8 len; > > ~Andrew
On 12/05/2021 11:10, Edwin Torok wrote: > On Tue, 2021-05-11 at 21:05 +0100, Andrew Cooper wrote: >> On 11/05/2021 19:05, Edwin Török wrote: >>> These patches have been posted previously. >>> The gnttab patches (tools/ocaml/libs/mmap) were not applied at the >>> time >>> to avoid conflicts with an in-progress XSA. >>> The binary format live-update and fuzzing patches were not applied >>> because it was too close to the next Xen release freeze. >>> >>> The patches depend on each-other: live-update only works correctly >>> when the gnttab >>> patches are taken too (MFN is not part of the binary live-update >>> stream), >>> so they are included here as a single series. >>> The gnttab patches replaces one use of libxenctrl with stable >>> interfaces, leaving one unstable >>> libxenctrl interface used by oxenstored. >>> >>> The 'vendor external dependencies' may be optional, it is useful to >>> be part >>> of a patchqueue in a specfile so that you can build everything >>> without external dependencies, >>> but might as well commit it so everyone has it easily available not >>> just XenServer. >>> >>> Note that the live-update fuzz test doesn't yet pass, it is still >>> able to find bugs. >>> However the reduced version with a fixed seed used as a unit test >>> does pass, >>> so it is useful to have it committed, and further improvements can >>> be made later >>> as more bugs are discovered and fixed. >>> >>> Edwin Török (17): >>> docs/designs/xenstore-migration.md: clarify that deletes are >>> recursive >>> tools/ocaml: add unit test skeleton with Dune build system >>> tools/ocaml: vendor external dependencies for convenience >>> tools/ocaml/xenstored: implement the live migration binary format >>> tools/ocaml/xenstored: add binary dump format support >>> tools/ocaml/xenstored: add support for binary format >>> tools/ocaml/xenstored: validate config file before live update >>> Add structured fuzzing unit test >>> tools/ocaml: use common macros for manipulating mmap_interface >>> tools/ocaml/libs/mmap: allocate correct number of bytes >>> tools/ocaml/libs/mmap: Expose stub_mmap_alloc >>> tools/ocaml/libs/mmap: mark mmap/munmap as blocking >>> tools/ocaml/libs/xb: import gnttab stubs from mirage >>> tools/ocaml: safer Xenmmap interface >>> tools/ocaml/xenstored: use gnttab instead of xenctrl's >>> foreign_map_range >>> tools/ocaml/xenstored: don't store domU's mfn of ring page >>> tools/ocaml/libs/mmap: Clean up unused read/write >> Gitlab CI reports failures across the board in Debian Stretch 32-bit >> builds. All logs >> https://gitlab.com/xen-project/patchew/xen/-/pipelines/301146112 but >> the >> tl;dr seems to be: >> >> File "disk.ml", line 179, characters 26-37: >> Error: Integer literal exceeds the range of representable integers of >> type int > Thanks, this should fix it, I refreshed my git tree (there is also a > fix there for the older version of Make): > https://gitlab.com/xen-project/patchew/xen/-/pipelines/301146112 > > Not sure whether it is worth continuing to support 32-bit i686 builds, > any modern Intel/AMD CPU would be 64-bit capable, but perhaps 32-bit is > still popular in the ARM world and keeping 32-bit Intel supported is > the easiest way to build-test it? Yes - arm32 is very much a thing, and currently 32bit userspace on x86 is a supported configuration. > > diff --git a/tools/ocaml/xenstored/disk.ml > b/tools/ocaml/xenstored/disk.ml > index 59794324e1..b7678af87f 100644 > --- a/tools/ocaml/xenstored/disk.ml > +++ b/tools/ocaml/xenstored/disk.ml > @@ -176,7 +176,7 @@ let write store = > output_byte ch i > > let w32 ch v = > - assert (v >= 0 && v <= 0xFFFF_FFFF); > + assert (v >= 0 && Int64.of_int v <= 0xFFFF_FFFFL); In the case that v is 32 bits wide, it will underflow and fail the v >= 0 check, before the upcast to Int64. ~Andrew
On Wed, 2021-05-12 at 13:51 +0100, Andrew Cooper wrote: > On 12/05/2021 11:10, Edwin Torok wrote: > > On Tue, 2021-05-11 at 21:05 +0100, Andrew Cooper wrote: > > > > > diff --git a/tools/ocaml/xenstored/disk.ml > > b/tools/ocaml/xenstored/disk.ml > > index 59794324e1..b7678af87f 100644 > > --- a/tools/ocaml/xenstored/disk.ml > > +++ b/tools/ocaml/xenstored/disk.ml > > @@ -176,7 +176,7 @@ let write store = > > output_byte ch i > > > > let w32 ch v = > > - assert (v >= 0 && v <= 0xFFFF_FFFF); > > + assert (v >= 0 && Int64.of_int v <= 0xFFFF_FFFFL); > > In the case that v is 32 bits wide, it will underflow and fail the v > >= > 0 check, before the upcast to Int64. I'll have to review the callers of this, I think my intention was to forbid dumping negative values because it is ambigous what it means. In case you are running on 64-bit that is most likely a bug because I think most 32-bit values were defined as unsigned in the migration spec or in the original xen public headers (I'll have to double check). However in case of a 32-bit system we can have negative values where an otherwise unsigned 32-bit quantity in xen is represented as an ocaml int, or even silently truncated (if the xen value actually uses all 32- bits, because OCaml ints are only 31-bits on 32-bit systems, one would have to use the int32 type to get true 32-bit quantities in ocaml but that comes with additional boxing and a more complicated syntax, so in most places in Xen I see the difference just being ignored). Perhaps this should forbid negative values only on 64-bit systems (where that would be a bug), and allow it on 32-bit systems (where a negative value might be legitimate or a bug, we can't tell). Checking Sys.word_size should tell us what system we are on. Best regards, --Edwin