Skip to content
Snippets Groups Projects
  1. Oct 26, 2022
  2. Oct 24, 2022
    • Stefan Hajnoczi's avatar
      Merge tag 'pull-9p-20221024' of https://github.com/cschoenebeck/qemu into staging · e750a7ac
      Stefan Hajnoczi authored
      9pfs: performance, Windows host prep, tests restructure
      
      * Highlight of this PR is Linus Heckemann's GHashTable patch which
        brings massive general performance improvements of 9p server
        somewhere between factor 6 .. 12.
      
      * Bin Meng's g_mkdir patch is a preparatory patch for upcoming
        Windows host support of 9p server.
      
      * The rest of the patches in this PR are 9p test code restructuring
        and refactoring changes to improve readability and to ease
        maintenance of 9p test code on the long-term.
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJLBAABCgA1FiEEltjREM96+AhPiFkBNMK1h2Wkc5UFAmNWbs8XHHFlbXVfb3Nz
      # QGNydWRlYnl0ZS5jb20ACgkQNMK1h2Wkc5V4cw/8CqoSJqoJixlP8kAGDYWq3CgF
      # SKd09rIzLSWyyufAoZr1TqLwRrvEQRlZJSpL4fGvRpQLv0IQCu4x59ohHRob25Tm
      # Fe7IxYBNuBwLW4yu+Y7FaujeGoYAi9Qw5q4ijq3/aSSiIeuXySKB2JmW71CQ+Tbe
      # uwivsnMtWzQ7qsNwrtXYbxDs7UGkdsiW2sEQUS26GMApAXZoB+38hwtTW2Y9MOrC
      # 58JuZza/fUVPzo0V1D0ggRawb5O2VTF5fz8aGFG4FvoyIW6DDZFSfnyre9QxivOl
      # 5McWwSQ/D04vdEK9ornGPYr9YRGuP8g07p1EW9OfKeie4I41e9pS3UminK5lVCgo
      # SfBHzz96efM5XR+Wnl4yVKowivmTqjwUU8lDqW2eB/7YBRuYUzrpxYe//UPv4q1J
      # zaQV3pgwFAVkVJCnkcLCa1JQbH581bXSsuRlDdYqoRYfyzXoxbywNjvn9BXE0PrG
      # WRecS//GyN3GVZYxMwb3H052110pYsYIg2YZ2H4QiqCwpEHHvy+L/ZXm19vbDm7B
      # GYJQPUK8/y0NGwZsUYcUSx1TWlU9ZPwrbqZfv7e7+B6FL4VNjdaqb8PvS9admWSq
      # LOSzrVVIus+nb7tP99d1Fb6oRyCy3x8E48gTr5UtTJHC4SAw/OBJmem6GOc/D490
      # H7Dq8Y27qsQ6fT7iPm8=
      # =MxSG
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Mon 24 Oct 2022 06:54:07 EDT
      # gpg:                using RSA key 96D8D110CF7AF8084F88590134C2B58765A47395
      # gpg:                issuer "qemu_oss@crudebyte.com"
      # gpg: Good signature from "Christian Schoenebeck <qemu_oss@crudebyte.com>" [unknown]
      # gpg: WARNING: The key's User ID is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: ECAB 1A45 4014 1413 BA38  4926 30DB 47C3 A012 D5F4
      #      Subkey fingerprint: 96D8 D110 CF7A F808 4F88  5901 34C2 B587 65A4 7395
      
      * tag 'pull-9p-20221024' of https://github.com/cschoenebeck/qemu
      
      : (23 commits)
        tests/9p: remove unnecessary g_strdup() calls
        tests/9p: merge v9fs_tunlinkat() and do_unlinkat()
        tests/9p: merge v9fs_tlink() and do_hardlink()
        tests/9p: merge v9fs_tsymlink() and do_symlink()
        tests/9p: merge v9fs_tlcreate() and do_lcreate()
        tests/9p: merge v9fs_tmkdir() and do_mkdir()
        tests/9p: convert v9fs_tflush() to declarative arguments
        tests/9p: simplify callers of twrite()
        tests/9p: convert v9fs_twrite() to declarative arguments
        tests/9p: simplify callers of tlopen()
        tests/9p: convert v9fs_tlopen() to declarative arguments
        tests/9p: simplify callers of treaddir()
        tests/9p: convert v9fs_treaddir() to declarative arguments
        tests/9p: simplify callers of tgetattr()
        tests/9p: convert v9fs_tgetattr() to declarative arguments
        tests/9p: simplify callers of tattach()
        tests/9p: merge v9fs_tattach(), do_attach(), do_attach_rqid()
        tests/9p: merge v9fs_tversion() and do_version()
        tests/9p: simplify callers of twalk()
        tests/9p: merge *walk*() functions
        ...
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      e750a7ac
    • Stefan Hajnoczi's avatar
      Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging · e52d57c8
      Stefan Hajnoczi authored
      * target/i386: new decoder bugfix
      * target/i386: complete x86-v3 support for TCG
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQFHBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmNTlqQUHHBib256aW5p
      # QHJlZGhhdC5jb20ACgkQv/vSX3jHroOQNQf430MHbrtN9WKKiXv3684XxmcnoRqg
      # PHmaGg2SKp7UB+hI2FMYgCZWOl5s3cGTHtwX8byFCttmE4kI7HJR7IouW6znm57j
      # 7QVx2TJXIZgqSYcfYzfLu46yS6pNqJUA+mBv5In3Vqt4ZQT2szefVBg6BzmuF6lT
      # HXbu/llc3iVfW4SNLJOABXzKNbPacmmpmLjoporfwOHwHjv4iikuXNUOZ84FFL11
      # 2tkdcff282q00IRgHm1lSyiRiqh+kAxzSDanMjOZbphBiE9gNJjLGoV5F2X63e1O
      # DQGg4wqBWP68O/r8Fj8tOUMCTW212DwWyv1+d/lQB+wwpJK+P4O14dCW
      # =Fd+y
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Sat 22 Oct 2022 03:07:16 EDT
      # gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
      # gpg:                issuer "pbonzini@redhat.com"
      # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
      # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
      # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
      #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
      
      * tag 'for-upstream' of https://gitlab.com/bonzini/qemu
      
      :
        target/i386: implement FMA instructions
        target/i386: implement F16C instructions
        target/i386: introduce function to set rounding mode from FPCW or MXCSR bits
        target/i386: decode-new: avoid out-of-bounds access to xmm_regs[-1]
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      e52d57c8
    • Stefan Hajnoczi's avatar
      Merge tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k into staging · ce58c8ee
      Stefan Hajnoczi authored
      Pull request m68k branch 20221024
      
      Update rng seed boot parameter
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmNWU7YSHGxhdXJlbnRA
      # dml2aWVyLmV1AAoJEPMMOL0/L748C/kQAJHbVrDGCCfw+imsOAOqXBL3K0WpUadP
      # T+lCIHpqCPsppJ2ikQlZ95ky0RZREPiRwmwJHQsgaTiVJgKDGJ3hsDuGNAyu3sn4
      # C/QFVyH2E7dcrDjSNk+n1nGVw+h6gnH9G6qRYrJZHlQXN9WsaMrcofhjDdPUC9bK
      # o2IexKWBs80wJ/k/O9be8hPARkdwbVYRbR3+khtcUVv7sgeoKfUmpUiliIhi1G3G
      # jphHEMgWtjyK8HmTyeOujmbOO4RZGhScnCJpUnYitBmun6YWedP+DrOz5kXU5xgP
      # vIJOalpPqQt+Fpe6OF5fBXwLl0QNPlLjhBP+YXe6inKWHk3RYZRYbFNz4+HZt6WY
      # i5wO0pz77vzL6+7nnESS7Q9g/8ASQcUgOsswUBY2uhQoGUG8LuUl2O5SyJWGB41o
      # MjNq+h7PcFD8MalLMMvf5jKIuZ0lJrkirUXbTXlGu19ynyf0lASY773cENch+ApS
      # fu2De777qwYDx3CvR+K5oObiTqUTplQT9Mq+yUlD5mgJs1bCP+XPFGlL+JemgR25
      # EjV5kLDY2f5i0hb7ZQ8IEL3O4siW9GoHXBBFkLY3WPO36Nd71cfhzVv2jUaoSyom
      # xsFsJ/TGBapdiDj2Y5DjZQWrUIsm3TgcwATLhEyH2+Bt4hLd+yI6s1m16vVUn74O
      # UgMzybUqLwk0
      # =B+rc
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Mon 24 Oct 2022 04:58:30 EDT
      # gpg:                using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
      # gpg:                issuer "laurent@vivier.eu"
      # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
      # gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
      # gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
      # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C
      
      * tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k
      
      :
        m68k: write bootinfo as rom section and re-randomize on reboot
        m68k: rework BI_VIRT_RNG_SEED as BI_RNG_SEED
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      ce58c8ee
    • Christian Schoenebeck's avatar
      tests/9p: remove unnecessary g_strdup() calls · 3ce77865
      Christian Schoenebeck authored
      
      This is a leftover from before the recent function merge and
      refactoring patches:
      
      As these functions do not return control to the caller in
      between, it is not necessary to duplicate strings passed to them.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <0f80141cde3904ed0591354059da49d1d60bcdbc.1664917004.git.qemu_oss@crudebyte.com>
      3ce77865
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tunlinkat() and do_unlinkat() · 43e0d9fb
      Christian Schoenebeck authored
      
      As with previous patches, unify those 2 functions into a single function
      v9fs_tunlinkat() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <1dea593edd464908d92501933c068388c01f1744.1664917004.git.qemu_oss@crudebyte.com>
      43e0d9fb
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tlink() and do_hardlink() · d41a9462
      Christian Schoenebeck authored
      
      As with previous patches, unify those 2 functions into a single function
      v9fs_tlink() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <cb4d42203e1e4e6027df4924bbe4bdbc002f668b.1664917004.git.qemu_oss@crudebyte.com>
      d41a9462
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tsymlink() and do_symlink() · 9beabfa5
      Christian Schoenebeck authored
      
      As with previous patches, unify those 2 functions into a single function
      v9fs_tsymlink() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <563f3ad04fe596ce0ae1e2654d1d08237f18c830.1664917004.git.qemu_oss@crudebyte.com>
      9beabfa5
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tlcreate() and do_lcreate() · bd4660d4
      Christian Schoenebeck authored
      
      As with previous patches, unify those 2 functions into a single function
      v9fs_tlcreate() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <4c01b2caa5f5b54a2020fc92701deadd2abf0571.1664917004.git.qemu_oss@crudebyte.com>
      bd4660d4
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tmkdir() and do_mkdir() · e1168010
      Christian Schoenebeck authored
      
      As with previous patches, unify those 2 functions into a single function
      v9fs_tmkdir() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <b87b2c972921df980440ff5b2d3e6bb8163d6551.1664917004.git.qemu_oss@crudebyte.com>
      e1168010
    • Christian Schoenebeck's avatar
      tests/9p: convert v9fs_tflush() to declarative arguments · d89146fd
      Christian Schoenebeck authored
      
      Use declarative function arguments for function v9fs_tflush().
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <91b7b154298c500d100b05137146c2905c3acdec.1664917004.git.qemu_oss@crudebyte.com>
      d89146fd
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of twrite() · bb286ff8
      Christian Schoenebeck authored
      
      Now as twrite() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <7f280ec6a1f9d8afed46567a796562c4dc28afa9.1664917004.git.qemu_oss@crudebyte.com>
      bb286ff8
    • Christian Schoenebeck's avatar
      tests/9p: convert v9fs_twrite() to declarative arguments · ac9e4e61
      Christian Schoenebeck authored
      
      Use declarative function arguments for function v9fs_twrite().
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <be0326e2d9ab66f68c06b1766ddf103849d570b4.1664917004.git.qemu_oss@crudebyte.com>
      ac9e4e61
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of tlopen() · 0e4c4ff0
      Christian Schoenebeck authored
      
      Now as tlopen() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <f74b6153e079fc7a340e5cb575ee32e0fe1e0ae6.1664917004.git.qemu_oss@crudebyte.com>
      0e4c4ff0
    • Christian Schoenebeck's avatar
      tests/9p: convert v9fs_tlopen() to declarative arguments · 3878ce4c
      Christian Schoenebeck authored
      
      Use declarative function arguments for function v9fs_tlopen().
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <765ab515353c56f88f0a163631f626a44e9565d6.1664917004.git.qemu_oss@crudebyte.com>
      3878ce4c
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of treaddir() · a9a53769
      Christian Schoenebeck authored
      
      Now as treaddir() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <7cec6f2c7011a481806c34908893b7282702a7a6.1664917004.git.qemu_oss@crudebyte.com>
      a9a53769
    • Christian Schoenebeck's avatar
      tests/9p: convert v9fs_treaddir() to declarative arguments · 1ebacc40
      Christian Schoenebeck authored
      
      Use declarative function arguments for function v9fs_treaddir().
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <a66aae4ceb19ec12d245b8c7f33a639584c8e272.1664917004.git.qemu_oss@crudebyte.com>
      1ebacc40
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of tgetattr() · 28c73670
      Christian Schoenebeck authored
      
      Now as tgetattr() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <60c6a083f320b86f3172951445df7bbc895932e2.1664917004.git.qemu_oss@crudebyte.com>
      28c73670
    • Christian Schoenebeck's avatar
      tests/9p: convert v9fs_tgetattr() to declarative arguments · 2af5be47
      Christian Schoenebeck authored
      
      Use declarative function arguments for function v9fs_tgetattr().
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <d340a91be96fbfecfb8dacdd7558223b3c0d0e2c.1664917004.git.qemu_oss@crudebyte.com>
      2af5be47
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of tattach() · 1125ddf6
      Christian Schoenebeck authored
      
      Now as tattach() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <9b50e5b89a0072e84a9191d18c19a53546a28bba.1664917004.git.qemu_oss@crudebyte.com>
      1125ddf6
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tattach(), do_attach(), do_attach_rqid() · 74a160ab
      Christian Schoenebeck authored
      
      As with previous patches, unify those 3 functions into a single function
      v9fs_tattach() by using a declarative function arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <a6756b30bf2a1b25729c5bbabd1c9534a8f20d6f.1664917004.git.qemu_oss@crudebyte.com>
      74a160ab
    • Christian Schoenebeck's avatar
      tests/9p: merge v9fs_tversion() and do_version() · bee8fda2
      Christian Schoenebeck authored
      
      As with previous patches, unify functions v9fs_tversion() and do_version()
      into a single function v9fs_tversion() by using a declarative function
      arguments approach.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <2d253491aaffd267ec295f056dda47456692cd0c.1664917004.git.qemu_oss@crudebyte.com>
      bee8fda2
    • Christian Schoenebeck's avatar
      tests/9p: simplify callers of twalk() · 3f3e9232
      Christian Schoenebeck authored
      
      Now as twalk() is using a declarative approach, simplify the
      code of callers of this function.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <8b9d3c656ad43b6c953d6bdacd8d9f4c8e599b2a.1664917004.git.qemu_oss@crudebyte.com>
      3f3e9232
    • Christian Schoenebeck's avatar
      tests/9p: merge *walk*() functions · 569f3b63
      Christian Schoenebeck authored
      
      Introduce declarative function calls.
      
      There are currently 4 different functions for sending a 9p 'Twalk'
      request: v9fs_twalk(), do_walk(), do_walk_rqids() and
      do_walk_expect_error(). They are all doing the same thing, just in a
      slightly different way and with slightly different function arguments.
      
      Merge those 4 functions into a single function by using a struct for
      function call arguments and use designated initializers when calling
      this function to turn usage into a declarative approach, which is
      better readable and easier to maintain.
      
      Also move private functions genfid(), split() and split_free() from
      virtio-9p-test.c to virtio-9p-client.c.
      
      Based-on: <E1odrya-0004Fv-97@lizzy.crudebyte.com>
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <607969dbfbc63c1be008df9131133711b046e979.1664917004.git.qemu_oss@crudebyte.com>
      569f3b63
    • Linus Heckemann's avatar
      9pfs: use GHashTable for fid table · f5265c8f
      Linus Heckemann authored
      
      The previous implementation would iterate over the fid table for
      lookup operations, resulting in an operation with O(n) complexity on
      the number of open files and poor cache locality -- for every open,
      stat, read, write, etc operation.
      
      This change uses a hashtable for this instead, significantly improving
      the performance of the 9p filesystem. The runtime of NixOS's simple
      installer test, which copies ~122k files totalling ~1.8GiB from 9p,
      decreased by a factor of about 10.
      
      Signed-off-by: default avatarLinus Heckemann <git@sphalerite.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      [CS: - Retain BUG_ON(f->clunked) in get_fid().
           - Add TODO comment in clunk_fid(). ]
      Message-Id: <20221004104121.713689-1-git@sphalerite.org>
      [CS: - Drop unnecessary goto and out: label. ]
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      f5265c8f
    • Christian Schoenebeck's avatar
      tests/9p: split virtio-9p-test.c into tests and 9p client part · 684f9120
      Christian Schoenebeck authored
      
      This patch is pure refactoring, it does not change behaviour.
      
      virtio-9p-test.c grew to 1657 lines. Let's split this file up between
      actual 9p test cases vs. 9p test client, to make it easier to
      concentrate on the actual 9p tests.
      
      Move the 9p test client code to a new unit virtio-9p-client.c, which
      are basically all functions and types prefixed with v9fs_* already.
      
      Note that some client wrapper functions (do_*) are preserved in
      virtio-9p-test.c, simply because these wrapper functions are going to
      be wiped with subsequent patches anyway.
      
      As the global QGuestAllocator variable is moved to virtio-9p-client.c,
      add a new function v9fs_set_allocator() to be used by virtio-9p-test.c
      instead of fiddling with a global variable across units and libraries.
      
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
      Message-Id: <E1odrya-0004Fv-97@lizzy.crudebyte.com>
      684f9120
    • Bin Meng's avatar
      fsdev/virtfs-proxy-helper: Use g_mkdir() · f723f626
      Bin Meng authored
      
      Use g_mkdir() to create a directory on all platforms.
      
      Signed-off-by: default avatarBin Meng <bin.meng@windriver.com>
      Reviewed-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      Message-Id: <20220927110632.1973965-27-bmeng.cn@gmail.com>
      Signed-off-by: default avatarChristian Schoenebeck <qemu_oss@crudebyte.com>
      f723f626
    • Jason A. Donenfeld's avatar
      m68k: write bootinfo as rom section and re-randomize on reboot · 281ac13e
      Jason A. Donenfeld authored
      
      Rather than poking directly into RAM, add the bootinfo block as a proper
      ROM, so that it's restored when rebooting the system. This way, if the
      guest corrupts any of the bootinfo items, but then tries to reboot,
      it'll still be restored back to normal as expected.
      
      Then, since the RNG seed needs to be fresh on each boot, regenerate the
      RNG seed in the ROM when reseting the CPU.
      
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Cc: Laurent Vivier <laurent@vivier.eu>
      Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
      Message-Id: <20221023191340.36238-1-Jason@zx2c4.com>
      Signed-off-by: default avatarLaurent Vivier <laurent@vivier.eu>
      281ac13e
  3. Oct 22, 2022
    • Paolo Bonzini's avatar
      target/i386: implement FMA instructions · 2872b0f3
      Paolo Bonzini authored
      
      The only issue with FMA instructions is that there are _a lot_ of them (30
      opcodes, each of which comes in up to 4 versions depending on VEX.W and
      VEX.L; a total of 96 possibilities).  However, they can be implement with
      only 6 helpers, two for scalar operations and four for packed operations.
      (Scalar versions do not do any merging; they only affect the bottom 32
      or 64 bits of the output operand.  Therefore, there is no separate XMM
      and YMM of the scalar helpers).
      
      First, we can reduce the number of helpers to one third by passing four
      operands (one output and three inputs); the reordering of which operands
      go to the multiply and which go to the add is done in emit.c.
      
      Second, the different instructions also dispatch to the same softfloat
      function, so the flags for float32_muladd and float64_muladd are passed
      in the helper as int arguments, with a little extra complication to
      handle FMADDSUB and FMSUBADD.
      
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      2872b0f3
  4. Oct 21, 2022
  5. Oct 20, 2022
    • Stefan Hajnoczi's avatar
      Merge tag 'pull-target-arm-20221020' of... · 05292454
      Stefan Hajnoczi authored
      Merge tag 'pull-target-arm-20221020' of https://git.linaro.org/people/pmaydell/qemu-arm into staging
      
      target-arm queue:
       * Switch to TARGET_TB_PCREL
       * More pagetable-walk refactoring preparatory to HAFDBS
       * update the cortex-a15 MIDR to latest rev
       * hw/char/pl011: fix baud rate calculation
       * hw/ide/microdrive: Use device_cold_reset() for self-resets
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmNRPQ4ZHHBldGVyLm1h
      # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3l/BD/0ZAUmL9FtLHUtf9Y7S1sb/
      # nuKcbaXim88AWRgSpiCJaSCIiyxNPydrRwfC1wZ7kQEXBKczR9x3ZsE8jdU6lway
      # muqaLdzpBKVYZSh0Q03+3iufbm7s3hGxvCvNj0s5986ITmW86ndZM9CGm4bkyB6B
      # KKN7v7lGPeYCF/sR+Ax/++eXK2BOALoPFF7bWycmJNcO4aYXE12onDNIDJU9CyCu
      # y+nqPXTM5xAJ950iCOmdGKnMwOX1sBfZYUvCuG4tS63SYnjnKThyfLDttggapTB0
      # T4I1SZ22+Bh7UuGEn9JAIeVZK4UUkYu78ufnX7FT2NDOFJJV1BJtKRe8UT/CsZha
      # n2eAuVcddBwEStAhgUIvpbDm6WjtH3xiQWPphFX9bZl4AD1uI3sx/xe1b7PsPBTc
      # e8kYRVW8zkRlCbC2BaJnPhcDiujf6AE2Sq3A8hgG1izS6juvHzzk9zn69TTbodIl
      # ETtt+jn9E/OtlLC7bLJGgudGerqBELubwwVAHqYo207fvhLLiMMAhm0NbZmnJCqU
      # hEgg6a9w4Ss3CYx5oNagWZ2Nfw5ru5KiwjZJ1wltjbBEQzp4y42a4XFWRvcXFFiz
      # 3yGyvLmtHBywsIRpMc8IpXLC1SdD0fgT8/5VbWCHRziFjQLNCiuihsKkdiZOcJ22
      # MoetN7iJxSDPCbHUp8ldsg==
      # =NEl6
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Thu 20 Oct 2022 08:20:30 EDT
      # gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
      # gpg:                issuer "peter.maydell@linaro.org"
      # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [full]
      # gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full]
      # gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [unknown]
      # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE
      
      * tag 'pull-target-arm-20221020' of https://git.linaro.org/people/pmaydell/qemu-arm
      
      : (24 commits)
        hw/ide/microdrive: Use device_cold_reset() for self-resets
        target/arm: Enable TARGET_TB_PCREL
        target/arm: Introduce gen_pc_plus_diff for aarch32
        target/arm: Introduce gen_pc_plus_diff for aarch64
        target/arm: Change gen_jmp* to work on displacements
        target/arm: Remove gen_exception_internal_insn pc argument
        target/arm: Change gen_exception_insn* to work on displacements
        target/arm: Change gen_*set_pc_im to gen_*update_pc
        target/arm: Change gen_goto_tb to work on displacements
        target/arm: Introduce curr_insn_len
        target/arm: Use bool consistently for get_phys_addr subroutines
        target/arm: Split out get_phys_addr_twostage
        target/arm: Use softmmu tlbs for page table walking
        target/arm: Move be test for regime into S1TranslateResult
        target/arm: Plumb debug into S1Translate
        target/arm: Split out S1Translate type
        target/arm: Restrict tlb flush from vttbr_write to vmid change
        target/arm: Move ARMMMUIdx_Stage2 to a real tlb mmu_idx
        target/arm: Add ARMMMUIdx_Phys_{S,NS}
        target/arm: Use probe_access_full for BTI
        ...
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      05292454
    • Paolo Bonzini's avatar
      target/i386: implement F16C instructions · cf5ec664
      Paolo Bonzini authored
      
      F16C only consists of two instructions, which are a bit peculiar
      nevertheless.
      
      First, they access only the low half of an YMM or XMM register for the
      packed-half operand; the exact size still depends on the VEX.L flag.
      This is similar to the existing avx_movx flag, but not exactly because
      avx_movx is hardcoded to affect operand 2.  To this end I added a "ph"
      format name; it's possible to reuse this approach for the VPMOVSX and
      VPMOVZX instructions, though that would also require adding two more
      formats for the low-quarter and low-eighth of an operand.
      
      Second, VCVTPS2PH is somewhat weird because it *stores* the result of
      the instruction into memory rather than loading it.
      
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cf5ec664
    • Paolo Bonzini's avatar
      target/i386: introduce function to set rounding mode from FPCW or MXCSR bits · 314d3eff
      Paolo Bonzini authored
      
      VROUND, FSTCW and STMXCSR all have to perform the same conversion from
      x86 rounding modes to softfloat constants.  Since the ISA is consistent
      on the meaning of the two-bit rounding modes, extract the common code
      into a wrapper for set_float_rounding_mode.
      
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      314d3eff
    • Paolo Bonzini's avatar
      target/i386: decode-new: avoid out-of-bounds access to xmm_regs[-1] · 0d4bcac3
      Paolo Bonzini authored
      
      If the destination is a memory register, op->n is -1.  Going through
      tcg_gen_gvec_dup_imm path is both useless (the value has been stored
      by the gen_* function already) and wrong because of the out-of-bounds
      access.
      
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      0d4bcac3
    • Peter Maydell's avatar
      hw/ide/microdrive: Use device_cold_reset() for self-resets · 5db89930
      Peter Maydell authored
      
      Currently the microdrive code uses device_legacy_reset() to reset
      itself, and has its reset method call reset on the IDE bus as the
      last thing it does.  Switch to using device_cold_reset().
      
      The only concrete microdrive device is the TYPE_DSCM1XXXX; it is not
      command-line pluggable, so it is used only by the old pxa2xx Arm
      boards 'akita', 'borzoi', 'spitz', 'terrier' and 'tosa'.
      
      You might think that this would result in the IDE bus being
      reset automatically, but it does not, because the IDEBus type
      does not set the BusClass::reset method. Instead the controller
      must explicitly call ide_bus_reset(). We therefore leave that
      call in md_reset().
      
      Note also that because the PCMCIA card device is a direct subclass of
      TYPE_DEVICE and we don't model the PCMCIA controller-to-card
      interface as a qbus, PCMCIA cards are not on any qbus and so they
      don't get reset when the system is reset.  The reset only happens via
      the dscm1xxxx_attach() and dscm1xxxx_detach() functions during
      machine creation.
      
      Because our aim here is merely to try to get rid of calls to the
      device_legacy_reset() function, we leave these other dubious
      reset-related issues alone.  (They all stem from this code being
      absolutely ancient.)
      
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
      Message-id: 20221013174042.1602926-1-peter.maydell@linaro.org
      5db89930
    • Richard Henderson's avatar
      target/arm: Enable TARGET_TB_PCREL · abb80995
      Richard Henderson authored
      
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20221020030641.2066807-10-richard.henderson@linaro.org
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      abb80995
    • Richard Henderson's avatar
      target/arm: Introduce gen_pc_plus_diff for aarch32 · 35dbeb81
      Richard Henderson authored
      
      In preparation for TARGET_TB_PCREL, reduce reliance on absolute values.
      
      Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
      Message-id: 20221020030641.2066807-9-richard.henderson@linaro.org
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      35dbeb81
Loading