From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by passt.top (Postfix) with ESMTP id 82D0D5A004E for ; Thu, 11 Jul 2024 14:07:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1720699634; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=1+9qNk7fxzyPB3RNfuYrhQtdJf++km8q3h7yaprqyH8=; b=Ybk+yB5KDaavNCan1Zh2U7vhuVVMH31vzK3rnORgpbB/x4sJWHPydB9oaygQlcKdYO8HOP 31X9SMupKYlC7n7bClQdVglvQ/eiRteUelYsmvllrRdOcsPehIVooco7Zi9oRXEvd37UkL kkrYl5M60hs6VRiA+hmb6ECQwWpEC9k= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-100-KOIANtneNbC5bEQxddz-oA-1; Thu, 11 Jul 2024 08:07:11 -0400 X-MC-Unique: KOIANtneNbC5bEQxddz-oA-1 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4272718b9b0so5178535e9.1 for ; Thu, 11 Jul 2024 05:07:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720699621; x=1721304421; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1+9qNk7fxzyPB3RNfuYrhQtdJf++km8q3h7yaprqyH8=; b=aH5gobJp/5xBbAE63y2DlSEVCPzye7K3IIKDXNqCZGZx2Tb5+7s/xsjRNm+h6dsjcw 7FKuM5Gr7KuIVUGntpckiHE25ct5V2mG24pyI18smjbX7Cf3DlVTyO0QfMvjlVOKZ2Kj kBsGfNbb3l8fzxstI+jhUkQrmbx4+h4ULhfIfnZph6MPt3m7S7rL+/o5BXN5xdaJWXk1 WgvBjG+sro7IzKBkPD3pg2N4ANUZMVtNJMjF72YYGXEVlNgHdVUqnFihNMzFrf9y8NlC fupdMXdkCuxGgd2GLVFhpb0MQHEtXo9KfqELgyLHZ6LilB6JmDKetda4GP67NzMhULa5 ByEg== X-Gm-Message-State: AOJu0YzMQg6DWGZ16iaYI3BgAqHfEzaWlvJOD5tRIJZVsqpszv3yKeDE jKcrRO8+wQVGO3co5PfdO7HPtrJKj0iLWlfKWsIoRTDibPxzlofZeBWHxzXaGYiAsGdnFYWN+wO BhG846s/EVznLT0xOI1GzlpBP8GaHjyPhFH227Jh+qCTyZeUWFLTthyg1Yg== X-Received: by 2002:a05:600c:42cb:b0:421:7bed:5274 with SMTP id 5b1f17b1804b1-426707d88e9mr59857305e9.10.1720699621572; Thu, 11 Jul 2024 05:07:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGLTVg37Bl8vo9phjMlleVTxOMH5vvrrK8bq8fx6i4fUowblVmQC+ayFUL4Tzb/6bLai2gxig== X-Received: by 2002:a05:600c:42cb:b0:421:7bed:5274 with SMTP id 5b1f17b1804b1-426707d88e9mr59857115e9.10.1720699621143; Thu, 11 Jul 2024 05:07:01 -0700 (PDT) Received: from ?IPV6:2a01:e0a:e10:ef90:8e19:3414:44f0:befd? ([2a01:e0a:e10:ef90:8e19:3414:44f0:befd]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4266f6e07e1sm117413625e9.7.2024.07.11.05.07.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 11 Jul 2024 05:07:00 -0700 (PDT) Message-ID: <4b401408-9816-4c91-82e4-2d7550cda5d5@redhat.com> Date: Thu, 11 Jul 2024 14:07:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/5] vhost-user: introduce vhost-user API To: David Gibson References: <20240621145640.1914287-1-lvivier@redhat.com> <20240621145640.1914287-4-lvivier@redhat.com> From: Laurent Vivier Autocrypt: addr=lvivier@redhat.com; keydata= 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 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID-Hash: PQI6XD4ZMQMQUABXNRKBQNRE4QUEI7S2 X-Message-ID-Hash: PQI6XD4ZMQMQUABXNRKBQNRE4QUEI7S2 X-MailFrom: lvivier@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On 24/06/2024 05:02, David Gibson wrote: > On Fri, Jun 21, 2024 at 04:56:38PM +0200, Laurent Vivier wrote: >> Add vhost_user.c and vhost_user.h that define the functions needed >> to implement vhost-user backend. >> >> Signed-off-by: Laurent Vivier > > I'm a little confused by this patch. The commit message seems to > suggest that like the previous patch it's basically just a code import > from qemu. However... > > [snip] >> diff --git a/passt.c b/passt.c >> index a5e2c5a8e151..9d21c545b9cf 100644 >> --- a/passt.c >> +++ b/passt.c >> @@ -73,6 +73,8 @@ char *epoll_type_str[] = { >> [EPOLL_TYPE_TAP_PASTA] = "/dev/net/tun device", >> [EPOLL_TYPE_TAP_PASST] = "connected qemu socket", >> [EPOLL_TYPE_TAP_LISTEN] = "listening qemu socket", >> + [EPOLL_TYPE_VHOST_CMD] = "vhost-user command socket", >> + [EPOLL_TYPE_VHOST_KICK] = "vhost-user kick socket", > > ... we also have real changes to passt specific code. It's not very > obvious to me what the boundaries of that are. I have moved all of this to the last patch. ... >> +/* Translate qemu virtual address to our virtual address. */ > > Now that this code is not in qemu, it's not very clear what either of > these "virtual addresses" is. It's actually QEMU virtual address (QEMU or any other vhost-user client). it's also called userspace address in vhost data structure but I don't like this term as we don't know if it's our userspace or the user space of the vhost-user client. Our userspace address is called mmap address. We have also the guest physical address that is the address from inside the guest. The vring addresses are provided from the QEMU userspace address (information from the vhost-user level): https://qemu-project.gitlab.io/qemu/interop/vhost-user.html#a-vring-address-description The descriptor ring addresses are provided from the guest space so they are physical addresses (information from the virtio level): https://docs.oasis-open.org/virtio/virtio/v1.1/cs01/virtio-v1.1-cs01.html#x1-7500013 >> +static void *qva_to_va(VuDev *dev, uint64_t qemu_addr) >> +{ >> + unsigned int i; >> + >> + /* Find matching memory region. */ >> + for (i = 0; i < dev->nregions; i++) { >> + const VuDevRegion *r = &dev->regions[i]; >> + >> + if ((qemu_addr >= r->qva) && (qemu_addr < (r->qva + r->size))) { >> + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ >> + return (void *)(qemu_addr - r->qva + r->mmap_addr + >> + r->mmap_offset); >> + } >> + } >> + >> + return NULL; >> +} This function translate the QEMU userspace address to our process userspace address (mmapped memory). I'm updating all the function comment headers to describe this kind of information. Thanks, Laurent