From 46c1ea01312b13b8aa4da286c9d868fe9b702758 Mon Sep 17 00:00:00 2001 From: Yuval Shaia Date: Sun, 3 Apr 2022 12:58:37 +0300 Subject: [PATCH 1/5] hw/pvrdma: Some cosmetic fixes Signed-off-by: Yuval Shaia Reviewed-by: Marcel Apfelbaum Message-Id: <20220403095837.2378-1-yuval.shaia.ml@gmail.com> Signed-off-by: Laurent Vivier --- hw/rdma/vmw/pvrdma_main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c index 27a7622432..58db0b8e3b 100644 --- a/hw/rdma/vmw/pvrdma_main.c +++ b/hw/rdma/vmw/pvrdma_main.c @@ -159,13 +159,13 @@ static void free_dsr(PVRDMADev *dev) free_dev_ring(pci_dev, &dev->dsr_info.cq, dev->dsr_info.cq_ring_state); rdma_pci_dma_unmap(pci_dev, dev->dsr_info.req, - sizeof(union pvrdma_cmd_req)); + sizeof(union pvrdma_cmd_req)); rdma_pci_dma_unmap(pci_dev, dev->dsr_info.rsp, - sizeof(union pvrdma_cmd_resp)); + sizeof(union pvrdma_cmd_resp)); rdma_pci_dma_unmap(pci_dev, dev->dsr_info.dsr, - sizeof(struct pvrdma_device_shared_region)); + sizeof(struct pvrdma_device_shared_region)); dev->dsr_info.dsr = NULL; } @@ -249,7 +249,8 @@ static void init_dsr_dev_caps(PVRDMADev *dev) { struct pvrdma_device_shared_region *dsr; - if (dev->dsr_info.dsr == NULL) { + if (!dev->dsr_info.dsr) { + /* Buggy or malicious guest driver */ rdma_error_report("Can't initialized DSR"); return; } From 5580b9f00e7210add5d9415664469932c96f9a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= Date: Tue, 5 Apr 2022 08:36:28 +0200 Subject: [PATCH 2/5] vdpa: Add missing tracing to batch mapping functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These functions were not traced properly. Signed-off-by: Eugenio PĂ©rez Reviewed-by: Laurent Vivier Reviewed-by: Stefano Garzarella Acked-by: Jason Wang Message-Id: <20220405063628.853745-1-eperezma@redhat.com> Signed-off-by: Laurent Vivier --- hw/virtio/trace-events | 2 ++ hw/virtio/vhost-vdpa.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events index a5102eac9e..333348d9d5 100644 --- a/hw/virtio/trace-events +++ b/hw/virtio/trace-events @@ -25,6 +25,8 @@ vhost_user_postcopy_waker_nomatch(const char *rb, uint64_t rb_offset) "%s + 0x%" # vhost-vdpa.c vhost_vdpa_dma_map(void *vdpa, int fd, uint32_t msg_type, uint64_t iova, uint64_t size, uint64_t uaddr, uint8_t perm, uint8_t type) "vdpa:%p fd: %d msg_type: %"PRIu32" iova: 0x%"PRIx64" size: 0x%"PRIx64" uaddr: 0x%"PRIx64" perm: 0x%"PRIx8" type: %"PRIu8 vhost_vdpa_dma_unmap(void *vdpa, int fd, uint32_t msg_type, uint64_t iova, uint64_t size, uint8_t type) "vdpa:%p fd: %d msg_type: %"PRIu32" iova: 0x%"PRIx64" size: 0x%"PRIx64" type: %"PRIu8 +vhost_vdpa_listener_begin_batch(void *v, int fd, uint32_t msg_type, uint8_t type) "vdpa:%p fd: %d msg_type: %"PRIu32" type: %"PRIu8 +vhost_vdpa_listener_commit(void *v, int fd, uint32_t msg_type, uint8_t type) "vdpa:%p fd: %d msg_type: %"PRIu32" type: %"PRIu8 vhost_vdpa_listener_region_add(void *vdpa, uint64_t iova, uint64_t llend, void *vaddr, bool readonly) "vdpa: %p iova 0x%"PRIx64" llend 0x%"PRIx64" vaddr: %p read-only: %d" vhost_vdpa_listener_region_del(void *vdpa, uint64_t iova, uint64_t llend) "vdpa: %p iova 0x%"PRIx64" llend 0x%"PRIx64 vhost_vdpa_add_status(void *dev, uint8_t status) "dev: %p status: 0x%"PRIx8 diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index b57be529c7..a30510ed17 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -129,6 +129,7 @@ static void vhost_vdpa_listener_begin_batch(struct vhost_vdpa *v) .iotlb.type = VHOST_IOTLB_BATCH_BEGIN, }; + trace_vhost_vdpa_listener_begin_batch(v, fd, msg.type, msg.iotlb.type); if (write(fd, &msg, sizeof(msg)) != sizeof(msg)) { error_report("failed to write, fd=%d, errno=%d (%s)", fd, errno, strerror(errno)); @@ -163,6 +164,7 @@ static void vhost_vdpa_listener_commit(MemoryListener *listener) msg.type = v->msg_type; msg.iotlb.type = VHOST_IOTLB_BATCH_END; + trace_vhost_vdpa_listener_commit(v, fd, msg.type, msg.iotlb.type); if (write(fd, &msg, sizeof(msg)) != sizeof(msg)) { error_report("failed to write, fd=%d, errno=%d (%s)", fd, errno, strerror(errno)); From eb5b72c05ef598bf540d4f493093861dae3fdda6 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 12 Apr 2022 13:38:24 +0200 Subject: [PATCH 3/5] target/mips: Remove stale TODO file The last change to this file has been done in 2012, so it seems like this is not really used anymore, and the content is likely very out of date now. Signed-off-by: Thomas Huth Reviewed-by: Richard Henderson Message-Id: <20220412113824.297108-1-thuth@redhat.com> Signed-off-by: Laurent Vivier --- target/mips/TODO | 51 ------------------------------------------------ 1 file changed, 51 deletions(-) delete mode 100644 target/mips/TODO diff --git a/target/mips/TODO b/target/mips/TODO deleted file mode 100644 index 1d782d8027..0000000000 --- a/target/mips/TODO +++ /dev/null @@ -1,51 +0,0 @@ -Unsolved issues/bugs in the mips/mipsel backend ------------------------------------------------ - -General -------- -- Unimplemented ASEs: - - MDMX - - SmartMIPS - - microMIPS DSP r1 & r2 encodings -- MT ASE only partially implemented and not functional -- Shadow register support only partially implemented, - lacks set switching on interrupt/exception. -- 34K ITC not implemented. -- A general lack of documentation, especially for technical internals. - Existing documentation is x86-centric. -- Reverse endianness bit not implemented -- The TLB emulation is very inefficient: - QEMU's softmmu implements a x86-style MMU, with separate entries - for read/write/execute, a TLB index which is just a modulo of the - virtual address, and a set of TLBs for each user/kernel/supervisor - MMU mode. - MIPS has a single entry for read/write/execute and only one MMU mode. - But it is fully associative with randomized entry indices, and uses - up to 256 ASID tags as additional matching criterion (which roughly - equates to 256 MMU modes). It also has a global flag which causes - entries to match regardless of ASID. - To cope with these differences, QEMU currently flushes the TLB at - each ASID change. Using the MMU modes to implement ASIDs hinges on - implementing the global bit efficiently. -- save/restore of the CPU state is not implemented (see machine.c). - -MIPS64 ------- -- Userland emulation (both n32 and n64) not functional. - -"Generic" 4Kc system emulation ------------------------------- -- Doesn't correspond to any real hardware. Should be removed some day, - U-Boot is the last remaining user. - -PICA 61 system emulation ------------------------- -- No framebuffer support yet. - -MALTA system emulation ----------------------- -- We fake firmware support instead of doing the real thing -- Real firmware (YAMON) falls over when trying to init RAM, presumably - due to lacking system controller emulation. -- Bonito system controller not implemented -- MSC1 system controller not implemented From 9b76572431f16dcfb99a826c3df51fcad79fef08 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Fri, 22 Apr 2022 10:30:07 +0200 Subject: [PATCH 4/5] docs: Replace Qemu -> QEMU Signed-off-by: Stefan Weil Reviewed-by: Bin Meng Reviewed-by: Knut Omang Message-Id: <20220422083007.1082667-1-sw@weilnetz.de> Signed-off-by: Laurent Vivier --- docs/pcie_sriov.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/pcie_sriov.txt b/docs/pcie_sriov.txt index f5e891e1d4..11158dbf88 100644 --- a/docs/pcie_sriov.txt +++ b/docs/pcie_sriov.txt @@ -8,8 +8,8 @@ of a PCI Express device. It allows a single physical function (PF) to appear as virtual functions (VFs) for the main purpose of eliminating software overhead in I/O from virtual machines. -Qemu now implements the basic common functionality to enable an emulated device -to support SR/IOV. Yet no fully implemented devices exists in Qemu, but a +QEMU now implements the basic common functionality to enable an emulated device +to support SR/IOV. Yet no fully implemented devices exists in QEMU, but a proof-of-concept hack of the Intel igb can be found here: git://github.com/knuto/qemu.git sriov_patches_v5 @@ -18,7 +18,7 @@ Implementation ============== Implementing emulation of an SR/IOV capable device typically consists of implementing support for two types of device classes; the "normal" physical device -(PF) and the virtual device (VF). From Qemu's perspective, the VFs are just +(PF) and the virtual device (VF). From QEMU's perspective, the VFs are just like other devices, except that some of their properties are derived from the PF. From 4a89bf188a318592324769bd2bda95172c9a7091 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Fri, 22 Apr 2022 10:34:03 +0200 Subject: [PATCH 5/5] docs: Replace HomeBrew -> Homebrew The official spelling does not use camel case. Signed-off-by: Stefan Weil Reviewed-by: Bin Meng Message-Id: <20220422083403.1082924-1-sw@weilnetz.de> Signed-off-by: Laurent Vivier --- docs/about/build-platforms.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/about/build-platforms.rst b/docs/about/build-platforms.rst index c29a4b8fe6..e9163ba556 100644 --- a/docs/about/build-platforms.rst +++ b/docs/about/build-platforms.rst @@ -80,7 +80,7 @@ Ubuntu LTS. Other distros will be assumed to ship similar software versions. For FreeBSD and OpenBSD, decisions will be made based on the contents of the respective ports repository, while NetBSD will use the pkgsrc repository. -For macOS, `HomeBrew`_ will be used, although `MacPorts`_ is expected to carry +For macOS, `Homebrew`_ will be used, although `MacPorts`_ is expected to carry similar versions. Windows @@ -92,6 +92,6 @@ hosted on Linux (Debian/Fedora). The version of the Windows API that's currently targeted is Vista / Server 2008. -.. _HomeBrew: https://brew.sh/ +.. _Homebrew: https://brew.sh/ .. _MacPorts: https://www.macports.org/ .. _Repology: https://repology.org/