[PULL 00/57] pc,pci,virtio: features, fixes

Michael S. Tsirkin posted 57 patches 2 years, 6 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211005155946.513818-1-mst@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Shannon Zhao <shannon.zhaosl@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Jason Wang <jasowang@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Xiao Guangrong <xiaoguangrong.eric@gmail.com>, Dongjiu Geng <gengdongjiu1@gmail.com>, Eduardo Habkost <ehabkost@redhat.com>, Ani Sinha <ani@anisinha.ca>, Igor Mammedov <imammedo@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, David Hildenbrand <david@redhat.com>
There is a newer version of this series
include/hw/acpi/acpi-defs.h            | 528 +------------------------------
include/hw/acpi/acpi_dev_interface.h   |   3 +-
include/hw/acpi/aml-build.h            |  37 ++-
include/hw/acpi/ich9.h                 |   2 +-
include/hw/i386/pc.h                   |   6 +-
include/hw/virtio/vhost-vdpa.h         |   1 +
include/hw/virtio/vhost-vsock-common.h |   5 +
include/hw/virtio/vhost.h              |   2 +
include/hw/virtio/virtio-net.h         |   5 +-
include/net/net.h                      |   5 +
include/net/vhost_net.h                |   6 +-
hw/acpi/acpi-x86-stub.c                |   3 +-
hw/acpi/aml-build.c                    | 193 +++++++-----
hw/acpi/cpu.c                          |  17 +-
hw/acpi/ghes.c                         |  10 +-
hw/acpi/hmat.c                         |  14 +-
hw/acpi/nvdimm.c                       |  76 ++---
hw/acpi/pci.c                          |  18 +-
hw/acpi/vmgenid.c                      |  13 +-
hw/arm/virt-acpi-build.c               | 553 +++++++++++++++++++--------------
hw/core/machine.c                      |   5 +-
hw/i386/acpi-build.c                   | 292 +++++++++--------
hw/i386/acpi-common.c                  | 160 +++++-----
hw/i386/acpi-microvm.c                 |  13 +-
hw/i386/amd_iommu.c                    |  41 ++-
hw/net/vhost_net.c                     |  55 +++-
hw/net/virtio-net.c                    | 165 +++++-----
hw/virtio/vhost-user-vsock.c           |   4 +-
hw/virtio/vhost-vdpa.c                 |  56 +++-
hw/virtio/vhost-vsock-common.c         |  31 ++
hw/virtio/vhost-vsock.c                |  11 +-
hw/virtio/virtio-balloon.c             |   2 +-
hw/virtio/virtio.c                     |  31 +-
net/net.c                              |  24 +-
net/vhost-vdpa.c                       | 127 +++++++-
tests/data/acpi/q35/DSDT               | Bin 8289 -> 8289 bytes
tests/data/acpi/q35/DSDT.acpihmat      | Bin 9614 -> 9614 bytes
tests/data/acpi/q35/DSDT.bridge        | Bin 11003 -> 11003 bytes
tests/data/acpi/q35/DSDT.cphp          | Bin 8753 -> 8753 bytes
tests/data/acpi/q35/DSDT.dimmpxm       | Bin 9943 -> 9943 bytes
tests/data/acpi/q35/DSDT.ipmibt        | Bin 8364 -> 8364 bytes
tests/data/acpi/q35/DSDT.memhp         | Bin 9648 -> 9648 bytes
tests/data/acpi/q35/DSDT.mmio64        | Bin 9419 -> 9419 bytes
tests/data/acpi/q35/DSDT.nohpet        | Bin 8147 -> 8147 bytes
tests/data/acpi/q35/DSDT.numamem       | Bin 8295 -> 8295 bytes
tests/data/acpi/q35/DSDT.tis.tpm12     | Bin 8894 -> 8894 bytes
tests/data/acpi/q35/DSDT.tis.tpm2      | Bin 8894 -> 8894 bytes
47 files changed, 1202 insertions(+), 1312 deletions(-)
[PULL 00/57] pc,pci,virtio: features, fixes
Posted by Michael S. Tsirkin 2 years, 6 months ago
The following changes since commit 9618c5badaa8eed25259cf095ff880efb939fbe7:

  Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request' into staging (2021-10-04 16:27:35 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream

for you to fetch changes up to c7d2f59cf940b8c8c52c29d5fa25613fe662f7b6:

  hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI (2021-10-05 11:46:45 -0400)

----------------------------------------------------------------
pc,pci,virtio: features, fixes

VDPA multiqueue support.
A huge acpi refactoring.
Fixes, cleanups all over the place.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

----------------------------------------------------------------
Ani Sinha (3):
      bios-tables-test: allow changes in DSDT ACPI tables for q35
      hw/i386/acpi: fix conflicting IO address range for acpi pci hotplug in q35
      bios-tables-test: Update ACPI DSDT table golden blobs for q35

Dr. David Alan Gilbert (1):
      virtio-balloon: Fix page-poison subsection name

Igor Mammedov (35):
      acpi: add helper routines to initialize ACPI tables
      acpi: build_rsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_xsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_slit: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_fadt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_tpm2: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: acpi_build_hest: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_mcfg: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_hmat: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: nvdimm_build_nfit: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: nvdimm_build_ssdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: vmgenid_build_acpi: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: x86: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_hpet: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_tpm_tcpa: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: arm/x86: build_srat: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: use build_append_int_noprefix() API to compose SRAT table
      acpi: build_dmar_q35: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_waet: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_amd_iommu: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: madt: arm/x86: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: x86: remove dead code
      acpi: x86: set enabled when composing _MAT entries
      acpi: x86: madt: use build_append_int_noprefix() API to compose MADT table
      acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table
      acpi: build_dsdt_microvm: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: arm: virt: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: arm: virt: build_iort: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: arm/virt: convert build_iort() to endian agnostic build_append_FOO() API
      acpi: arm/virt: build_spcr: fix invalid cast
      acpi: arm/virt: build_spcr: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: arm/virt: build_gtdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
      acpi: build_facs: use build_append_int_noprefix() API to compose table
      acpi: remove no longer used build_header()
      acpi: AcpiGenericAddress no longer used to map/access fields of MMIO, drop packed attribute

Jason Wang (10):
      vhost-vdpa: open device fd in net_init_vhost_vdpa()
      vhost-vdpa: classify one time request
      vhost-vdpa: prepare for the multiqueue support
      vhost-vdpa: let net_vhost_vdpa_init() returns NetClientState *
      net: introduce control client
      vhost-net: control virtqueue support
      virtio-net: use "queue_pairs" instead of "queues" when possible
      vhost: record the last virtqueue index for the virtio device
      virtio-net: vhost control virtqueue support
      vhost-vdpa: multiqueue support

Li Zhijian (1):
      nvdimm: release the correct device list

Philippe Mathieu-Daudé (5):
      hw/virtio: Acquire RCU read lock in virtqueue_packed_drop_all()
      hw/virtio: Have virtqueue_get_avail_bytes() pass caches arg to callees
      hw/i386/amd_iommu: Rename amdviPCI TypeInfo
      hw/i386/amd_iommu: Rename SysBus specific functions as amdvi_sysbus_X()
      hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI

Stefano Garzarella (2):
      vhost-vsock: fix migration issue when seqpacket is supported
      vhost-vsock: handle common features in vhost-vsock-common

 include/hw/acpi/acpi-defs.h            | 528 +------------------------------
 include/hw/acpi/acpi_dev_interface.h   |   3 +-
 include/hw/acpi/aml-build.h            |  37 ++-
 include/hw/acpi/ich9.h                 |   2 +-
 include/hw/i386/pc.h                   |   6 +-
 include/hw/virtio/vhost-vdpa.h         |   1 +
 include/hw/virtio/vhost-vsock-common.h |   5 +
 include/hw/virtio/vhost.h              |   2 +
 include/hw/virtio/virtio-net.h         |   5 +-
 include/net/net.h                      |   5 +
 include/net/vhost_net.h                |   6 +-
 hw/acpi/acpi-x86-stub.c                |   3 +-
 hw/acpi/aml-build.c                    | 193 +++++++-----
 hw/acpi/cpu.c                          |  17 +-
 hw/acpi/ghes.c                         |  10 +-
 hw/acpi/hmat.c                         |  14 +-
 hw/acpi/nvdimm.c                       |  76 ++---
 hw/acpi/pci.c                          |  18 +-
 hw/acpi/vmgenid.c                      |  13 +-
 hw/arm/virt-acpi-build.c               | 553 +++++++++++++++++++--------------
 hw/core/machine.c                      |   5 +-
 hw/i386/acpi-build.c                   | 292 +++++++++--------
 hw/i386/acpi-common.c                  | 160 +++++-----
 hw/i386/acpi-microvm.c                 |  13 +-
 hw/i386/amd_iommu.c                    |  41 ++-
 hw/net/vhost_net.c                     |  55 +++-
 hw/net/virtio-net.c                    | 165 +++++-----
 hw/virtio/vhost-user-vsock.c           |   4 +-
 hw/virtio/vhost-vdpa.c                 |  56 +++-
 hw/virtio/vhost-vsock-common.c         |  31 ++
 hw/virtio/vhost-vsock.c                |  11 +-
 hw/virtio/virtio-balloon.c             |   2 +-
 hw/virtio/virtio.c                     |  31 +-
 net/net.c                              |  24 +-
 net/vhost-vdpa.c                       | 127 +++++++-
 tests/data/acpi/q35/DSDT               | Bin 8289 -> 8289 bytes
 tests/data/acpi/q35/DSDT.acpihmat      | Bin 9614 -> 9614 bytes
 tests/data/acpi/q35/DSDT.bridge        | Bin 11003 -> 11003 bytes
 tests/data/acpi/q35/DSDT.cphp          | Bin 8753 -> 8753 bytes
 tests/data/acpi/q35/DSDT.dimmpxm       | Bin 9943 -> 9943 bytes
 tests/data/acpi/q35/DSDT.ipmibt        | Bin 8364 -> 8364 bytes
 tests/data/acpi/q35/DSDT.memhp         | Bin 9648 -> 9648 bytes
 tests/data/acpi/q35/DSDT.mmio64        | Bin 9419 -> 9419 bytes
 tests/data/acpi/q35/DSDT.nohpet        | Bin 8147 -> 8147 bytes
 tests/data/acpi/q35/DSDT.numamem       | Bin 8295 -> 8295 bytes
 tests/data/acpi/q35/DSDT.tis.tpm12     | Bin 8894 -> 8894 bytes
 tests/data/acpi/q35/DSDT.tis.tpm2      | Bin 8894 -> 8894 bytes
 47 files changed, 1202 insertions(+), 1312 deletions(-)


Re: [PULL 00/57] pc,pci,virtio: features, fixes
Posted by Richard Henderson 2 years, 6 months ago
On 10/5/21 9:00 AM, Michael S. Tsirkin wrote:
> The following changes since commit 9618c5badaa8eed25259cf095ff880efb939fbe7:
> 
>    Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request' into staging (2021-10-04 16:27:35 -0700)
> 
> are available in the Git repository at:
> 
>    git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> 
> for you to fetch changes up to c7d2f59cf940b8c8c52c29d5fa25613fe662f7b6:
> 
>    hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI (2021-10-05 11:46:45 -0400)
> 
> ----------------------------------------------------------------
> pc,pci,virtio: features, fixes
> 
> VDPA multiqueue support.
> A huge acpi refactoring.
> Fixes, cleanups all over the place.
> 
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> 
> ----------------------------------------------------------------
> Ani Sinha (3):
>        bios-tables-test: allow changes in DSDT ACPI tables for q35
>        hw/i386/acpi: fix conflicting IO address range for acpi pci hotplug in q35
>        bios-tables-test: Update ACPI DSDT table golden blobs for q35
> 
> Dr. David Alan Gilbert (1):
>        virtio-balloon: Fix page-poison subsection name
> 
> Igor Mammedov (35):
>        acpi: add helper routines to initialize ACPI tables
>        acpi: build_rsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_xsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_slit: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_fadt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_tpm2: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: acpi_build_hest: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_mcfg: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_hmat: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: nvdimm_build_nfit: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: nvdimm_build_ssdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: vmgenid_build_acpi: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: x86: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_hpet: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_tpm_tcpa: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: arm/x86: build_srat: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: use build_append_int_noprefix() API to compose SRAT table
>        acpi: build_dmar_q35: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_waet: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_amd_iommu: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: madt: arm/x86: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: x86: remove dead code
>        acpi: x86: set enabled when composing _MAT entries
>        acpi: x86: madt: use build_append_int_noprefix() API to compose MADT table
>        acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table
>        acpi: build_dsdt_microvm: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: arm: virt: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: arm: virt: build_iort: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: arm/virt: convert build_iort() to endian agnostic build_append_FOO() API
>        acpi: arm/virt: build_spcr: fix invalid cast
>        acpi: arm/virt: build_spcr: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: arm/virt: build_gtdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
>        acpi: build_facs: use build_append_int_noprefix() API to compose table
>        acpi: remove no longer used build_header()
>        acpi: AcpiGenericAddress no longer used to map/access fields of MMIO, drop packed attribute
> 
> Jason Wang (10):
>        vhost-vdpa: open device fd in net_init_vhost_vdpa()
>        vhost-vdpa: classify one time request
>        vhost-vdpa: prepare for the multiqueue support
>        vhost-vdpa: let net_vhost_vdpa_init() returns NetClientState *
>        net: introduce control client
>        vhost-net: control virtqueue support
>        virtio-net: use "queue_pairs" instead of "queues" when possible
>        vhost: record the last virtqueue index for the virtio device
>        virtio-net: vhost control virtqueue support
>        vhost-vdpa: multiqueue support
> 
> Li Zhijian (1):
>        nvdimm: release the correct device list
> 
> Philippe Mathieu-Daudé (5):
>        hw/virtio: Acquire RCU read lock in virtqueue_packed_drop_all()
>        hw/virtio: Have virtqueue_get_avail_bytes() pass caches arg to callees
>        hw/i386/amd_iommu: Rename amdviPCI TypeInfo
>        hw/i386/amd_iommu: Rename SysBus specific functions as amdvi_sysbus_X()
>        hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI
> 
> Stefano Garzarella (2):
>        vhost-vsock: fix migration issue when seqpacket is supported
>        vhost-vsock: handle common features in vhost-vsock-common
> 
>   include/hw/acpi/acpi-defs.h            | 528 +------------------------------
>   include/hw/acpi/acpi_dev_interface.h   |   3 +-
>   include/hw/acpi/aml-build.h            |  37 ++-
>   include/hw/acpi/ich9.h                 |   2 +-
>   include/hw/i386/pc.h                   |   6 +-
>   include/hw/virtio/vhost-vdpa.h         |   1 +
>   include/hw/virtio/vhost-vsock-common.h |   5 +
>   include/hw/virtio/vhost.h              |   2 +
>   include/hw/virtio/virtio-net.h         |   5 +-
>   include/net/net.h                      |   5 +
>   include/net/vhost_net.h                |   6 +-
>   hw/acpi/acpi-x86-stub.c                |   3 +-
>   hw/acpi/aml-build.c                    | 193 +++++++-----
>   hw/acpi/cpu.c                          |  17 +-
>   hw/acpi/ghes.c                         |  10 +-
>   hw/acpi/hmat.c                         |  14 +-
>   hw/acpi/nvdimm.c                       |  76 ++---
>   hw/acpi/pci.c                          |  18 +-
>   hw/acpi/vmgenid.c                      |  13 +-
>   hw/arm/virt-acpi-build.c               | 553 +++++++++++++++++++--------------
>   hw/core/machine.c                      |   5 +-
>   hw/i386/acpi-build.c                   | 292 +++++++++--------
>   hw/i386/acpi-common.c                  | 160 +++++-----
>   hw/i386/acpi-microvm.c                 |  13 +-
>   hw/i386/amd_iommu.c                    |  41 ++-
>   hw/net/vhost_net.c                     |  55 +++-
>   hw/net/virtio-net.c                    | 165 +++++-----
>   hw/virtio/vhost-user-vsock.c           |   4 +-
>   hw/virtio/vhost-vdpa.c                 |  56 +++-
>   hw/virtio/vhost-vsock-common.c         |  31 ++
>   hw/virtio/vhost-vsock.c                |  11 +-
>   hw/virtio/virtio-balloon.c             |   2 +-
>   hw/virtio/virtio.c                     |  31 +-
>   net/net.c                              |  24 +-
>   net/vhost-vdpa.c                       | 127 +++++++-
>   tests/data/acpi/q35/DSDT               | Bin 8289 -> 8289 bytes
>   tests/data/acpi/q35/DSDT.acpihmat      | Bin 9614 -> 9614 bytes
>   tests/data/acpi/q35/DSDT.bridge        | Bin 11003 -> 11003 bytes
>   tests/data/acpi/q35/DSDT.cphp          | Bin 8753 -> 8753 bytes
>   tests/data/acpi/q35/DSDT.dimmpxm       | Bin 9943 -> 9943 bytes
>   tests/data/acpi/q35/DSDT.ipmibt        | Bin 8364 -> 8364 bytes
>   tests/data/acpi/q35/DSDT.memhp         | Bin 9648 -> 9648 bytes
>   tests/data/acpi/q35/DSDT.mmio64        | Bin 9419 -> 9419 bytes
>   tests/data/acpi/q35/DSDT.nohpet        | Bin 8147 -> 8147 bytes
>   tests/data/acpi/q35/DSDT.numamem       | Bin 8295 -> 8295 bytes
>   tests/data/acpi/q35/DSDT.tis.tpm12     | Bin 8894 -> 8894 bytes
>   tests/data/acpi/q35/DSDT.tis.tpm2      | Bin 8894 -> 8894 bytes
>   47 files changed, 1202 insertions(+), 1312 deletions(-)

You missed updating the stub version of these functions:

../src/hw/net/vhost_net-stub.c:34:5: error: conflicting types for ‘vhost_net_start’
    34 | int vhost_net_start(VirtIODevice *dev,
       |     ^~~~~~~~~~~~~~~
In file included from ../src/hw/net/vhost_net-stub.c:19:
/home/rth/qemu-publish/src/include/net/vhost_net.h:24:5: note: previous declaration of 
‘vhost_net_start’ was here
    24 | int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
       |     ^~~~~~~~~~~~~~~
../src/hw/net/vhost_net-stub.c:40:6: error: conflicting types for ‘vhost_net_stop’
    40 | void vhost_net_stop(VirtIODevice *dev,
       |      ^~~~~~~~~~~~~~
In file included from ../src/hw/net/vhost_net-stub.c:19:
/home/rth/qemu-publish/src/include/net/vhost_net.h:26:6: note: previous declaration of 
‘vhost_net_stop’ was here
    26 | void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
       |      ^~~~~~~~~~~~~~


r~

Re: [PULL 00/57] pc,pci,virtio: features, fixes
Posted by Michael S. Tsirkin 2 years, 6 months ago
On Tue, Oct 05, 2021 at 10:21:43AM -0700, Richard Henderson wrote:
> On 10/5/21 9:00 AM, Michael S. Tsirkin wrote:
> > The following changes since commit 9618c5badaa8eed25259cf095ff880efb939fbe7:
> > 
> >    Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request' into staging (2021-10-04 16:27:35 -0700)
> > 
> > are available in the Git repository at:
> > 
> >    git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> > 
> > for you to fetch changes up to c7d2f59cf940b8c8c52c29d5fa25613fe662f7b6:
> > 
> >    hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI (2021-10-05 11:46:45 -0400)
> > 
> > ----------------------------------------------------------------
> > pc,pci,virtio: features, fixes
> > 
> > VDPA multiqueue support.
> > A huge acpi refactoring.
> > Fixes, cleanups all over the place.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > 
> > ----------------------------------------------------------------
> > Ani Sinha (3):
> >        bios-tables-test: allow changes in DSDT ACPI tables for q35
> >        hw/i386/acpi: fix conflicting IO address range for acpi pci hotplug in q35
> >        bios-tables-test: Update ACPI DSDT table golden blobs for q35
> > 
> > Dr. David Alan Gilbert (1):
> >        virtio-balloon: Fix page-poison subsection name
> > 
> > Igor Mammedov (35):
> >        acpi: add helper routines to initialize ACPI tables
> >        acpi: build_rsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_xsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_slit: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_fadt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_tpm2: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: acpi_build_hest: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_mcfg: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_hmat: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: nvdimm_build_nfit: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: nvdimm_build_ssdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: vmgenid_build_acpi: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: x86: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_hpet: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_tpm_tcpa: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: arm/x86: build_srat: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: use build_append_int_noprefix() API to compose SRAT table
> >        acpi: build_dmar_q35: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_waet: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_amd_iommu: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: madt: arm/x86: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: x86: remove dead code
> >        acpi: x86: set enabled when composing _MAT entries
> >        acpi: x86: madt: use build_append_int_noprefix() API to compose MADT table
> >        acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table
> >        acpi: build_dsdt_microvm: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: arm: virt: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: arm: virt: build_iort: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: arm/virt: convert build_iort() to endian agnostic build_append_FOO() API
> >        acpi: arm/virt: build_spcr: fix invalid cast
> >        acpi: arm/virt: build_spcr: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: arm/virt: build_gtdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> >        acpi: build_facs: use build_append_int_noprefix() API to compose table
> >        acpi: remove no longer used build_header()
> >        acpi: AcpiGenericAddress no longer used to map/access fields of MMIO, drop packed attribute
> > 
> > Jason Wang (10):
> >        vhost-vdpa: open device fd in net_init_vhost_vdpa()
> >        vhost-vdpa: classify one time request
> >        vhost-vdpa: prepare for the multiqueue support
> >        vhost-vdpa: let net_vhost_vdpa_init() returns NetClientState *
> >        net: introduce control client
> >        vhost-net: control virtqueue support
> >        virtio-net: use "queue_pairs" instead of "queues" when possible
> >        vhost: record the last virtqueue index for the virtio device
> >        virtio-net: vhost control virtqueue support
> >        vhost-vdpa: multiqueue support
> > 
> > Li Zhijian (1):
> >        nvdimm: release the correct device list
> > 
> > Philippe Mathieu-Daudé (5):
> >        hw/virtio: Acquire RCU read lock in virtqueue_packed_drop_all()
> >        hw/virtio: Have virtqueue_get_avail_bytes() pass caches arg to callees
> >        hw/i386/amd_iommu: Rename amdviPCI TypeInfo
> >        hw/i386/amd_iommu: Rename SysBus specific functions as amdvi_sysbus_X()
> >        hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI
> > 
> > Stefano Garzarella (2):
> >        vhost-vsock: fix migration issue when seqpacket is supported
> >        vhost-vsock: handle common features in vhost-vsock-common
> > 
> >   include/hw/acpi/acpi-defs.h            | 528 +------------------------------
> >   include/hw/acpi/acpi_dev_interface.h   |   3 +-
> >   include/hw/acpi/aml-build.h            |  37 ++-
> >   include/hw/acpi/ich9.h                 |   2 +-
> >   include/hw/i386/pc.h                   |   6 +-
> >   include/hw/virtio/vhost-vdpa.h         |   1 +
> >   include/hw/virtio/vhost-vsock-common.h |   5 +
> >   include/hw/virtio/vhost.h              |   2 +
> >   include/hw/virtio/virtio-net.h         |   5 +-
> >   include/net/net.h                      |   5 +
> >   include/net/vhost_net.h                |   6 +-
> >   hw/acpi/acpi-x86-stub.c                |   3 +-
> >   hw/acpi/aml-build.c                    | 193 +++++++-----
> >   hw/acpi/cpu.c                          |  17 +-
> >   hw/acpi/ghes.c                         |  10 +-
> >   hw/acpi/hmat.c                         |  14 +-
> >   hw/acpi/nvdimm.c                       |  76 ++---
> >   hw/acpi/pci.c                          |  18 +-
> >   hw/acpi/vmgenid.c                      |  13 +-
> >   hw/arm/virt-acpi-build.c               | 553 +++++++++++++++++++--------------
> >   hw/core/machine.c                      |   5 +-
> >   hw/i386/acpi-build.c                   | 292 +++++++++--------
> >   hw/i386/acpi-common.c                  | 160 +++++-----
> >   hw/i386/acpi-microvm.c                 |  13 +-
> >   hw/i386/amd_iommu.c                    |  41 ++-
> >   hw/net/vhost_net.c                     |  55 +++-
> >   hw/net/virtio-net.c                    | 165 +++++-----
> >   hw/virtio/vhost-user-vsock.c           |   4 +-
> >   hw/virtio/vhost-vdpa.c                 |  56 +++-
> >   hw/virtio/vhost-vsock-common.c         |  31 ++
> >   hw/virtio/vhost-vsock.c                |  11 +-
> >   hw/virtio/virtio-balloon.c             |   2 +-
> >   hw/virtio/virtio.c                     |  31 +-
> >   net/net.c                              |  24 +-
> >   net/vhost-vdpa.c                       | 127 +++++++-
> >   tests/data/acpi/q35/DSDT               | Bin 8289 -> 8289 bytes
> >   tests/data/acpi/q35/DSDT.acpihmat      | Bin 9614 -> 9614 bytes
> >   tests/data/acpi/q35/DSDT.bridge        | Bin 11003 -> 11003 bytes
> >   tests/data/acpi/q35/DSDT.cphp          | Bin 8753 -> 8753 bytes
> >   tests/data/acpi/q35/DSDT.dimmpxm       | Bin 9943 -> 9943 bytes
> >   tests/data/acpi/q35/DSDT.ipmibt        | Bin 8364 -> 8364 bytes
> >   tests/data/acpi/q35/DSDT.memhp         | Bin 9648 -> 9648 bytes
> >   tests/data/acpi/q35/DSDT.mmio64        | Bin 9419 -> 9419 bytes
> >   tests/data/acpi/q35/DSDT.nohpet        | Bin 8147 -> 8147 bytes
> >   tests/data/acpi/q35/DSDT.numamem       | Bin 8295 -> 8295 bytes
> >   tests/data/acpi/q35/DSDT.tis.tpm12     | Bin 8894 -> 8894 bytes
> >   tests/data/acpi/q35/DSDT.tis.tpm2      | Bin 8894 -> 8894 bytes
> >   47 files changed, 1202 insertions(+), 1312 deletions(-)
> 
> You missed updating the stub version of these functions:
> 
> ../src/hw/net/vhost_net-stub.c:34:5: error: conflicting types for ‘vhost_net_start’
>    34 | int vhost_net_start(VirtIODevice *dev,
>       |     ^~~~~~~~~~~~~~~
> In file included from ../src/hw/net/vhost_net-stub.c:19:
> /home/rth/qemu-publish/src/include/net/vhost_net.h:24:5: note: previous
> declaration of ‘vhost_net_start’ was here
>    24 | int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>       |     ^~~~~~~~~~~~~~~
> ../src/hw/net/vhost_net-stub.c:40:6: error: conflicting types for ‘vhost_net_stop’
>    40 | void vhost_net_stop(VirtIODevice *dev,
>       |      ^~~~~~~~~~~~~~
> In file included from ../src/hw/net/vhost_net-stub.c:19:
> /home/rth/qemu-publish/src/include/net/vhost_net.h:26:6: note: previous
> declaration of ‘vhost_net_stop’ was here
>    26 | void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
>       |      ^~~~~~~~~~~~~~
> 
> 

Indeed. I dropped these patches for now.
Could you refetch from same tag and confirm it's ok?
Jason, I think you want to respin.

-- 
MST


Re: [PULL 00/57] pc,pci,virtio: features, fixes
Posted by Richard Henderson 2 years, 6 months ago
On 10/5/21 2:32 PM, Michael S. Tsirkin wrote:
> On Tue, Oct 05, 2021 at 10:21:43AM -0700, Richard Henderson wrote:
>> On 10/5/21 9:00 AM, Michael S. Tsirkin wrote:
>>> The following changes since commit 9618c5badaa8eed25259cf095ff880efb939fbe7:
>>>
>>>     Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request' into staging (2021-10-04 16:27:35 -0700)
>>>
>>> are available in the Git repository at:
>>>
>>>     git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
>>>
>>> for you to fetch changes up to c7d2f59cf940b8c8c52c29d5fa25613fe662f7b6:
>>>
>>>     hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI (2021-10-05 11:46:45 -0400)
>>>
>>> ----------------------------------------------------------------
...
>> You missed updating the stub version of these functions:
>>
>> ../src/hw/net/vhost_net-stub.c:34:5: error: conflicting types for ‘vhost_net_start’
>>     34 | int vhost_net_start(VirtIODevice *dev,
>>        |     ^~~~~~~~~~~~~~~
>> In file included from ../src/hw/net/vhost_net-stub.c:19:
>> /home/rth/qemu-publish/src/include/net/vhost_net.h:24:5: note: previous
>> declaration of ‘vhost_net_start’ was here
>>     24 | int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
>>        |     ^~~~~~~~~~~~~~~
>> ../src/hw/net/vhost_net-stub.c:40:6: error: conflicting types for ‘vhost_net_stop’
>>     40 | void vhost_net_stop(VirtIODevice *dev,
>>        |      ^~~~~~~~~~~~~~
>> In file included from ../src/hw/net/vhost_net-stub.c:19:
>> /home/rth/qemu-publish/src/include/net/vhost_net.h:26:6: note: previous
>> declaration of ‘vhost_net_stop’ was here
>>     26 | void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
>>        |      ^~~~~~~~~~~~~~
>>
>>
> 
> Indeed. I dropped these patches for now.
> Could you refetch from same tag and confirm it's ok?

Yes, that works. Applied, thanks.

r~

Re: [PULL 00/57] pc,pci,virtio: features, fixes
Posted by Jason Wang 2 years, 6 months ago
On Wed, Oct 6, 2021 at 5:32 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Tue, Oct 05, 2021 at 10:21:43AM -0700, Richard Henderson wrote:
> > On 10/5/21 9:00 AM, Michael S. Tsirkin wrote:
> > > The following changes since commit 9618c5badaa8eed25259cf095ff880efb939fbe7:
> > >
> > >    Merge remote-tracking branch 'remotes/vivier/tags/trivial-branch-for-6.2-pull-request' into staging (2021-10-04 16:27:35 -0700)
> > >
> > > are available in the Git repository at:
> > >
> > >    git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git tags/for_upstream
> > >
> > > for you to fetch changes up to c7d2f59cf940b8c8c52c29d5fa25613fe662f7b6:
> > >
> > >    hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI (2021-10-05 11:46:45 -0400)
> > >
> > > ----------------------------------------------------------------
> > > pc,pci,virtio: features, fixes
> > >
> > > VDPA multiqueue support.
> > > A huge acpi refactoring.
> > > Fixes, cleanups all over the place.
> > >
> > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > >
> > > ----------------------------------------------------------------
> > > Ani Sinha (3):
> > >        bios-tables-test: allow changes in DSDT ACPI tables for q35
> > >        hw/i386/acpi: fix conflicting IO address range for acpi pci hotplug in q35
> > >        bios-tables-test: Update ACPI DSDT table golden blobs for q35
> > >
> > > Dr. David Alan Gilbert (1):
> > >        virtio-balloon: Fix page-poison subsection name
> > >
> > > Igor Mammedov (35):
> > >        acpi: add helper routines to initialize ACPI tables
> > >        acpi: build_rsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_xsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_slit: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_fadt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_tpm2: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: acpi_build_hest: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_mcfg: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_hmat: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: nvdimm_build_nfit: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: nvdimm_build_ssdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: vmgenid_build_acpi: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: x86: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_hpet: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_tpm_tcpa: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: arm/x86: build_srat: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: use build_append_int_noprefix() API to compose SRAT table
> > >        acpi: build_dmar_q35: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_waet: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_amd_iommu: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: madt: arm/x86: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: x86: remove dead code
> > >        acpi: x86: set enabled when composing _MAT entries
> > >        acpi: x86: madt: use build_append_int_noprefix() API to compose MADT table
> > >        acpi: arm/virt: madt: use build_append_int_noprefix() API to compose MADT table
> > >        acpi: build_dsdt_microvm: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: arm: virt: build_dsdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: arm: virt: build_iort: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: arm/virt: convert build_iort() to endian agnostic build_append_FOO() API
> > >        acpi: arm/virt: build_spcr: fix invalid cast
> > >        acpi: arm/virt: build_spcr: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: arm/virt: build_gtdt: use acpi_table_begin()/acpi_table_end() instead of build_header()
> > >        acpi: build_facs: use build_append_int_noprefix() API to compose table
> > >        acpi: remove no longer used build_header()
> > >        acpi: AcpiGenericAddress no longer used to map/access fields of MMIO, drop packed attribute
> > >
> > > Jason Wang (10):
> > >        vhost-vdpa: open device fd in net_init_vhost_vdpa()
> > >        vhost-vdpa: classify one time request
> > >        vhost-vdpa: prepare for the multiqueue support
> > >        vhost-vdpa: let net_vhost_vdpa_init() returns NetClientState *
> > >        net: introduce control client
> > >        vhost-net: control virtqueue support
> > >        virtio-net: use "queue_pairs" instead of "queues" when possible
> > >        vhost: record the last virtqueue index for the virtio device
> > >        virtio-net: vhost control virtqueue support
> > >        vhost-vdpa: multiqueue support
> > >
> > > Li Zhijian (1):
> > >        nvdimm: release the correct device list
> > >
> > > Philippe Mathieu-Daudé (5):
> > >        hw/virtio: Acquire RCU read lock in virtqueue_packed_drop_all()
> > >        hw/virtio: Have virtqueue_get_avail_bytes() pass caches arg to callees
> > >        hw/i386/amd_iommu: Rename amdviPCI TypeInfo
> > >        hw/i386/amd_iommu: Rename SysBus specific functions as amdvi_sysbus_X()
> > >        hw/i386/amd_iommu: Add description/category to TYPE_AMD_IOMMU_PCI
> > >
> > > Stefano Garzarella (2):
> > >        vhost-vsock: fix migration issue when seqpacket is supported
> > >        vhost-vsock: handle common features in vhost-vsock-common
> > >
> > >   include/hw/acpi/acpi-defs.h            | 528 +------------------------------
> > >   include/hw/acpi/acpi_dev_interface.h   |   3 +-
> > >   include/hw/acpi/aml-build.h            |  37 ++-
> > >   include/hw/acpi/ich9.h                 |   2 +-
> > >   include/hw/i386/pc.h                   |   6 +-
> > >   include/hw/virtio/vhost-vdpa.h         |   1 +
> > >   include/hw/virtio/vhost-vsock-common.h |   5 +
> > >   include/hw/virtio/vhost.h              |   2 +
> > >   include/hw/virtio/virtio-net.h         |   5 +-
> > >   include/net/net.h                      |   5 +
> > >   include/net/vhost_net.h                |   6 +-
> > >   hw/acpi/acpi-x86-stub.c                |   3 +-
> > >   hw/acpi/aml-build.c                    | 193 +++++++-----
> > >   hw/acpi/cpu.c                          |  17 +-
> > >   hw/acpi/ghes.c                         |  10 +-
> > >   hw/acpi/hmat.c                         |  14 +-
> > >   hw/acpi/nvdimm.c                       |  76 ++---
> > >   hw/acpi/pci.c                          |  18 +-
> > >   hw/acpi/vmgenid.c                      |  13 +-
> > >   hw/arm/virt-acpi-build.c               | 553 +++++++++++++++++++--------------
> > >   hw/core/machine.c                      |   5 +-
> > >   hw/i386/acpi-build.c                   | 292 +++++++++--------
> > >   hw/i386/acpi-common.c                  | 160 +++++-----
> > >   hw/i386/acpi-microvm.c                 |  13 +-
> > >   hw/i386/amd_iommu.c                    |  41 ++-
> > >   hw/net/vhost_net.c                     |  55 +++-
> > >   hw/net/virtio-net.c                    | 165 +++++-----
> > >   hw/virtio/vhost-user-vsock.c           |   4 +-
> > >   hw/virtio/vhost-vdpa.c                 |  56 +++-
> > >   hw/virtio/vhost-vsock-common.c         |  31 ++
> > >   hw/virtio/vhost-vsock.c                |  11 +-
> > >   hw/virtio/virtio-balloon.c             |   2 +-
> > >   hw/virtio/virtio.c                     |  31 +-
> > >   net/net.c                              |  24 +-
> > >   net/vhost-vdpa.c                       | 127 +++++++-
> > >   tests/data/acpi/q35/DSDT               | Bin 8289 -> 8289 bytes
> > >   tests/data/acpi/q35/DSDT.acpihmat      | Bin 9614 -> 9614 bytes
> > >   tests/data/acpi/q35/DSDT.bridge        | Bin 11003 -> 11003 bytes
> > >   tests/data/acpi/q35/DSDT.cphp          | Bin 8753 -> 8753 bytes
> > >   tests/data/acpi/q35/DSDT.dimmpxm       | Bin 9943 -> 9943 bytes
> > >   tests/data/acpi/q35/DSDT.ipmibt        | Bin 8364 -> 8364 bytes
> > >   tests/data/acpi/q35/DSDT.memhp         | Bin 9648 -> 9648 bytes
> > >   tests/data/acpi/q35/DSDT.mmio64        | Bin 9419 -> 9419 bytes
> > >   tests/data/acpi/q35/DSDT.nohpet        | Bin 8147 -> 8147 bytes
> > >   tests/data/acpi/q35/DSDT.numamem       | Bin 8295 -> 8295 bytes
> > >   tests/data/acpi/q35/DSDT.tis.tpm12     | Bin 8894 -> 8894 bytes
> > >   tests/data/acpi/q35/DSDT.tis.tpm2      | Bin 8894 -> 8894 bytes
> > >   47 files changed, 1202 insertions(+), 1312 deletions(-)
> >
> > You missed updating the stub version of these functions:
> >
> > ../src/hw/net/vhost_net-stub.c:34:5: error: conflicting types for ‘vhost_net_start’
> >    34 | int vhost_net_start(VirtIODevice *dev,
> >       |     ^~~~~~~~~~~~~~~
> > In file included from ../src/hw/net/vhost_net-stub.c:19:
> > /home/rth/qemu-publish/src/include/net/vhost_net.h:24:5: note: previous
> > declaration of ‘vhost_net_start’ was here
> >    24 | int vhost_net_start(VirtIODevice *dev, NetClientState *ncs,
> >       |     ^~~~~~~~~~~~~~~
> > ../src/hw/net/vhost_net-stub.c:40:6: error: conflicting types for ‘vhost_net_stop’
> >    40 | void vhost_net_stop(VirtIODevice *dev,
> >       |      ^~~~~~~~~~~~~~
> > In file included from ../src/hw/net/vhost_net-stub.c:19:
> > /home/rth/qemu-publish/src/include/net/vhost_net.h:26:6: note: previous
> > declaration of ‘vhost_net_stop’ was here
> >    26 | void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
> >       |      ^~~~~~~~~~~~~~
> >
> >
>
> Indeed. I dropped these patches for now.
> Could you refetch from same tag and confirm it's ok?
> Jason, I think you want to respin.

Will do.

Thanks

>
> --
> MST
>