From win-pv-devel-bounces@lists.xenproject.org Fri Aug 19 10:16:00 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Aug 2022 10:16:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.390243.627564 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oOz2l-0005a5-5D; Fri, 19 Aug 2022 10:15:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 390243.627564; Fri, 19 Aug 2022 10:15:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oOz2l-0005Zy-2F; Fri, 19 Aug 2022 10:15:59 +0000
Received: by outflank-mailman (input) for mailman id 390243;
 Fri, 19 Aug 2022 10:15:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VRZm=YX=citrix.com=prvs=22353686a=owen.smith@srs-se1.protection.inumbo.net>)
 id 1oOz2j-0005Zs-LQ
 for win-pv-devel@lists.xenproject.org; Fri, 19 Aug 2022 10:15:57 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e78a6b32-1fa7-11ed-bd2e-47488cf2e6aa;
 Fri, 19 Aug 2022 12:15:54 +0200 (CEST)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e78a6b32-1fa7-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1660904154;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=4X5MBSmzuYw4R6Wre24PCrSn4VhxnAepwQDoU75cKcw=;
  b=DK6xPvbUM3djG6W3CJ5n/KIlaM60xlGn/gkjaqTQi8fTrFj8txhbVF5I
   9Lz+qcPtIYYkHtI8gf+LlcJKgq1VvbUGmIKx70p+0RMVDHG5Ub4FebyEo
   M9G/QGLJRebJiNg9oM+Q4b0jGtePN6PU4Q5tdFpwvVYUep48bFrMIh97T
   8=;
Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 2.7
X-MesageID: 78470456
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.156.83
X-Policy: $RELAYED
IronPort-Data: =?us-ascii?q?A9a23=3AC9DDv6OuYp4qVzTvrXNrnJalp4KmJRAgMBhce?=
 =?us-ascii?q?xONyBt+GVwur4U6qh/6T4CrNlZ+wcLBcFX+XO/GdP4ujdB5oVkUQOsQSOR9V?=
 =?us-ascii?q?4+ZFEiTsBugcdgL6eDCZ6ywInw63Rn1V9M2EA4hsCIr6SMTmN7IVVWAxZdYd?=
 =?us-ascii?q?laoaqQjx6lqOSLSgkUM8TyHer6x9JnOlKEqTp72CIohrtmY/d5C6A2tLGGZG?=
 =?us-ascii?q?Fovy9l35YsOTBdErek8bLWIEf42heD/4K6Pabi+2KsmSU7QwJUvqDMPBXkw8?=
 =?us-ascii?q?l6r6YOKEbvbspNEdp51l0McyEfCesOnJOewvvNefmA2OGq4UY3fYNTzVwkms?=
 =?us-ascii?q?po1mxahGJkT2sIpD2ygZ0i0jddb98y4w2jW4MuLqDwhkFyKDb2zrYE/37XzR?=
 =?us-ascii?q?jsn68Uu8LW53lwFNwn0rMeByCDSJzdOmXoDsU+KWL+epGFG3fY7B9mpCe8nj?=
 =?us-ascii?q?NAHrQ7vt8FiWA0A6h366kFJ4K8Nvnl/U1k0Cu4sJQpQgrQRq2pn5T8cdXbH2?=
 =?us-ascii?q?OIsxWrxe/+DNqt8ZaQxJlSWCFBX8fATdwTs00VlUbZn2SC3H0RaePdK6Kpy7?=
 =?us-ascii?q?qQ/PgFsEqhoLZjAr17fgGp18bz2JifYGZVWoYx4xizNJmJlz/0Md5kcUXkSK?=
 =?us-ascii?q?sOcJ9IQNbgJkF3pXCs2ZOVKi9JliWCZFyiS/fyW30f4lZlZ81h9HvB3tZiHW?=
 =?us-ascii?q?tyz24Nv7mjztShNA69pvRw8UVKE4GTEy/vmWsgn8ajb7oXXF272NWPhlbMQl?=
 =?us-ascii?q?BOHfkctSm2M+do8upLyE4cEIvdCEVQWudZZejvqyCn+bWRtbl7Cy1NnonzG7?=
 =?us-ascii?q?CAiuprvxbkbv8cLxYxbVAM9TAjdq2xWAbPbPdQipDvuPn2PiOCYdS/ubBsz9?=
 =?us-ascii?q?xAkFJYczD7qwMvqBPUywkfLTK3jmnIiJLYjDt+UKxDcXAslkVh7gfUuG1pln?=
 =?us-ascii?q?TeH/Ulbm3WotEk6Y+nDd+1KuJNgIFgzSE7YwLlDRu5KC9pqRiC4o9gP10UDg?=
 =?us-ascii?q?MvMsQYZq/Rg3Fu2JMCa8hWzyLCZYhV5Aq6Fr91AssUim+3gUcw10r8+Y0xzD?=
 =?us-ascii?q?+YLO0L/iB8HzoNljJy7YqLqI9feSkH71DKe4/1TtJhCS0MZgOHigfwDkvIXI?=
 =?us-ascii?q?u+/GTggnsrEtLBZb6gF/5aULTOJLsf4uaZly0YEurP0b1KcEjCej4aLIX9LI?=
 =?us-ascii?q?rWGErHw6SrYE4cY3YwKHcOMr2gU2460CdU6sixCzO1bd1MtcjGi0g8fNQk9L?=
 =?us-ascii?q?717eVLS71fBAezxxya2r8n38uu0WJ3Kur9hD2sxslC0jI8gpgLM9p4AHE1/3?=
 =?us-ascii?q?TUR4mxtkNunYLbLtbcohYci3jZMYf77PtiG7XegplVpOUAsORwM66UosO7XE?=
 =?us-ascii?q?RUxU4Wu9XNqhalGIuojnN6nuEqXxBzcjjpdp+SrlwQOn7CTWgN6uBdNlv02l?=
 =?us-ascii?q?Yu63IFoPQLmRTYxTZXNeqCpMMl83Hshl8pdI30mupSJ8aE86wt7/fHAbS39a?=
 =?us-ascii?q?0RyOfUH0BxsrDCschS6O6rGEttdR0uylw6JGXHzZGbsA1doHOjEbR0Sy+JNc?=
 =?us-ascii?q?HBlfk3GZqp9Pt91nz+AJxjIuBNIl0tPV9j4e8OpgRmcF0OrfXXWJqe0eYh35?=
 =?us-ascii?q?3T88QR5rSeIBtMZxZF1aH5RVUXwSdcX6ergAfgRte8GT108L2jSutsy8da0U?=
 =?us-ascii?q?oZnq3u2cuECBxcPGrStvfFqyudOG3Hd6lYGNy8ksdJLM+KS5j2WeNsIq1Ca0?=
 =?us-ascii?q?3H93KCqUd0y5UIDsIRKgGIaMlo9p0q0CWiL7kL198lcV1CdHosy7p1ehIgxd?=
 =?us-ascii?q?G3DYEKnnHZjwiX6tlhIS+RuCDmKBakkMMf2QTyM3M5l+kvkhZs8bToTNKkYW?=
 =?us-ascii?q?22HAJkqd3K/7hAAil0ddOnfqd/9iqfGH0qm7HXawZM1YWcHHsP03nyjv6PJ/?=
 =?us-ascii?q?8LpnYewcbkXGce7jiYg0cazv1oFAvX3s04H5M+4w4gjmPBM+XLn1mqW4nW9i?=
 =?us-ascii?q?X2YHnRbeXArUIScHV/8p4Hp88uHwzy0/c6ahpC8qxTGzr2jRaFUlY/oMVu/F?=
 =?us-ascii?q?9LnY60N+c6ANH5Qtw52hb3SWmOkZeEViUG05IBZRRDeT3izDOTbKVIyiF8Nx?=
 =?us-ascii?q?iYGxxdr0IQA/jP3ZJwMNgYzmJdfAMEZFsniuY0Au1yjv+SQEi7mpRQhlJ68p?=
 =?us-ascii?q?6CRjK4oNAnt5Rgm5r6PI5ALx6mi3VnZHKbS+aJBrB0inXIGlLCxuZpnR4oEV?=
 =?us-ascii?q?njgvBpaA9el74S2sNIGrf7LT43rb1ES7CLx7WQ7fz7DRRdECuG5Vmnig3IFv?=
 =?us-ascii?q?crHh69xSoRk9/uE55XZD2t2IsUZng4QBnNStr9gqTaFPTC4L1/MbpxXtYowt?=
 =?us-ascii?q?XV51Tj7V3yi9sSJFazxUySZOGQTRJsm/1FrqxEdqMxEeTwt8QrAXsePnHZ3/?=
 =?us-ascii?q?lpp83yO4BL2bPEjHt6WoyPIYvjZI5w1idzSq2D0AuhywZjza0HmAdH9rIH5j?=
 =?us-ascii?q?KxhsynVcEYAKGGAldboluqZqFJXcVIjNb8Tp5FgG/6ea/x4n3+npumY//zaK?=
 =?us-ascii?q?EtiDHjCBmvaomL1xVvmn8zSb3y8Nqq7mU25rho=3D?=
X-IronPort-AV: E=Sophos;i="5.93,247,1654574400"; 
   d="scan'208";a="78470456"
From: Owen Smith <owen.smith@citrix.com>
To: <win-pv-devel@lists.xenproject.org>
CC: Owen Smith <owen.smith@citrix.com>
Subject: [PATCH] Rework CACHE to use a FreeList
Date: Fri, 19 Aug 2022 11:15:18 +0100
Message-ID: <20220819101518.389-1-owen.smith@citrix.com>
X-Mailer: git-send-email 2.32.0.windows.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

The slab allocation method will allogate about a PAGE worth of objects, and
every object will be initialized. If the objects initializer allocates any
resources, this can result in resource starvation. A particular bad example of
this is the grant table cache, where a page of gnttab objects is 253 objects.
This is highlighted by xenvif's queues, where the receiver requires 257 grant
references (1 for the ring, and 256 for the ring slots) which results in 2 slabs,
or 506 gnttab objects, reserving 506 grant references.

Use a FreeList to contain individual objects that are not in use. This trades
an increase in smaller allocations for reducing the wastage of unused objects.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
---
 src/xenbus/cache.c | 674 ++++++++++++---------------------------------
 1 file changed, 178 insertions(+), 496 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 13fb0e5..d5500a4 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -52,20 +52,12 @@ typedef struct _XENBUS_CACHE_MAGAZINE {
     PVOID   Slot[XENBUS_CACHE_MAGAZINE_SLOTS];
 } XENBUS_CACHE_MAGAZINE, *PXENBUS_CACHE_MAGAZINE;
 
-
-#define XENBUS_CACHE_SLAB_MAGIC 'BALS'
-
-typedef struct _XENBUS_CACHE_SLAB {
-    ULONG           Magic;
+typedef struct _XENBUS_CACHE_HEADER {
     PXENBUS_CACHE   Cache;
     LIST_ENTRY      ListEntry;
-    USHORT          MaximumOccupancy;
-    USHORT          CurrentOccupancy;
-    ULONG           *Mask;
     UCHAR           Buffer[1];
-} XENBUS_CACHE_SLAB, *PXENBUS_CACHE_SLAB;
+} XENBUS_CACHE_HEADER, *PXENBUS_CACHE_HEADER;
 
-#define BITS_PER_ULONG  (sizeof (ULONG) * 8)
 #define MAXNAMELEN      128
 
 struct _XENBUS_CACHE {
@@ -79,13 +71,12 @@ struct _XENBUS_CACHE {
     VOID                    (*AcquireLock)(PVOID);
     VOID                    (*ReleaseLock)(PVOID);
     PVOID                   Argument;
-    LIST_ENTRY              SlabList;
-    PLIST_ENTRY             Cursor;
-    ULONG                   Count;
-    PXENBUS_CACHE_MAGAZINE  Magazine;
+    PXENBUS_CACHE_MAGAZINE  Magazines;
     ULONG                   MagazineCount;
-    LONG                    CurrentSlabs;
-    LONG                    MaximumSlabs;
+    KSPIN_LOCK              FreeLock;
+    LIST_ENTRY              FreeList;
+    LONG                    FreeSize;
+    LONG                    Count;
     LONG                    CurrentObjects;
     LONG                    MaximumObjects;
 };
@@ -156,372 +147,197 @@ __CacheDtor(
     Cache->Dtor(Cache->Argument, Object);
 }
 
-static PVOID
-CacheGetObjectFromMagazine(
-    IN  PXENBUS_CACHE_MAGAZINE  Magazine
-    )
-{
-    ULONG                       Index;
-
-    for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
-        PVOID   Object;
-
-        if (Magazine->Slot[Index] != NULL) {
-            Object = Magazine->Slot[Index];
-            Magazine->Slot[Index] = NULL;
-
-            return Object;
-        }
-    }
-
-    return NULL;
-}
-
+// Lock must be held
 static NTSTATUS
-CachePutObjectToMagazine(
-    IN  PXENBUS_CACHE_MAGAZINE  Magazine,
-    IN  PVOID                   Object
-    )
-{
-    ULONG                       Index;
-
-    for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; Index++) {
-        if (Magazine->Slot[Index] == NULL) {
-            Magazine->Slot[Index] = Object;
-            return STATUS_SUCCESS;
-        }
-    }
-
-    return STATUS_UNSUCCESSFUL;
-}
-
-static VOID
-CacheInsertSlab(
+CacheFill(
     IN  PXENBUS_CACHE       Cache,
-    IN  PXENBUS_CACHE_SLAB  New
-    )
-{
-#define INSERT_BEFORE(_ListEntry, _New)             \
-        do {                                        \
-            (_New)->Blink = (_ListEntry)->Blink;    \
-            (_ListEntry)->Blink->Flink = (_New);    \
-                                                    \
-            (_ListEntry)->Blink = (_New);           \
-            (_New)->Flink = (_ListEntry);           \
-        } while (FALSE)
-
-    PLIST_ENTRY             ListEntry;
-
-    ASSERT(New->CurrentOccupancy < New->MaximumOccupancy);
-
-    Cache->Cursor = NULL;
-
-    for (ListEntry = Cache->SlabList.Flink;
-         ListEntry != &Cache->SlabList;
-         ListEntry = ListEntry->Flink) {
-        PXENBUS_CACHE_SLAB  Slab;
-
-        Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
-
-        if (Slab->CurrentOccupancy < New->CurrentOccupancy) {
-            INSERT_BEFORE(ListEntry, &New->ListEntry);
-            goto done;
-        }
-
-        if (Slab->CurrentOccupancy < Slab->MaximumOccupancy &&
-            Cache->Cursor == NULL)
-            Cache->Cursor = ListEntry;
-    }
-
-    InsertTailList(&Cache->SlabList, &New->ListEntry);
-
-done:
-    if (Cache->Cursor == NULL)
-        Cache->Cursor = &New->ListEntry;
-
-#undef  INSERT_BEFORE
-}
-
-#if DBG
-static VOID
-CacheAudit(
-    IN  PXENBUS_CACHE   Cache
+    IN  ULONG               Target
     )
 {
-    ULONG               CurrentOccupancy = ULONG_MAX;
-    PLIST_ENTRY         ListEntry;
-
-    //
-    // The cursror should point at the first slab that is not fully
-    // occupied.
-    //
-    for (ListEntry = Cache->SlabList.Flink;
-         ListEntry != &Cache->SlabList;
-         ListEntry = ListEntry->Flink) {
-        PXENBUS_CACHE_SLAB  Slab;
-
-        Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
-
-        if (Slab->CurrentOccupancy < Slab->MaximumOccupancy) {
-            ASSERT3P(Cache->Cursor, ==, ListEntry);
-            break;
-        }
-    }
-
-    // Slabs should be kept in order of maximum to minimum occupancy
-    for (ListEntry = Cache->SlabList.Flink;
-         ListEntry != &Cache->SlabList;
-         ListEntry = ListEntry->Flink) {
-        PXENBUS_CACHE_SLAB  Slab;
-
-        Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
-
-        ASSERT3U(Slab->CurrentOccupancy, <=, CurrentOccupancy);
-
-        CurrentOccupancy = Slab->CurrentOccupancy;
-    }
-}
-#else
-#define CacheAudit(_Cache) ((VOID)(_Cache))
-#endif
-
-// Must be called with lock held
-static NTSTATUS
-CacheCreateSlab(
-    IN  PXENBUS_CACHE   Cache
-    )
-{
-    PXENBUS_CACHE_SLAB  Slab;
-    ULONG               NumberOfBytes;
-    ULONG               Count;
-    ULONG               Size;
-    LONG                Index;
-    LONG                SlabCount;
-    NTSTATUS            status;
-
-    NumberOfBytes = P2ROUNDUP(FIELD_OFFSET(XENBUS_CACHE_SLAB, Buffer) +
-                              Cache->Size,
-                              PAGE_SIZE);
-    Count = (NumberOfBytes - FIELD_OFFSET(XENBUS_CACHE_SLAB, Buffer)) /
-            Cache->Size;
-    ASSERT(Count != 0);
-
-    status = STATUS_INSUFFICIENT_RESOURCES;
-    if (Cache->Count + Count > Cache->Cap)
-        goto fail1;
-
-    Slab = __CacheAllocate(NumberOfBytes);
-    ASSERT3P(Slab, ==, PAGE_ALIGN(Slab));
-
-    status = STATUS_NO_MEMORY;
-    if (Slab == NULL)
-        goto fail2;
-
-    RtlZeroMemory(Slab, NumberOfBytes);
+    ULONG                   Size;
+    PXENBUS_CACHE_HEADER    Header;
+    NTSTATUS                status;
 
-    Slab->Magic = XENBUS_CACHE_SLAB_MAGIC;
-    Slab->Cache = Cache;
-    Slab->MaximumOccupancy = (USHORT)Count;
+    Size = P2ROUNDUP(FIELD_OFFSET(XENBUS_CACHE_HEADER, Buffer) + Cache->Size,
+                     sizeof(ULONG_PTR));
 
-    Size = P2ROUNDUP(Count, BITS_PER_ULONG);
-    Size /= 8;
+    while (Cache->Count < (LONG)Target) {
+        status = STATUS_NO_MEMORY;
 
-    Slab->Mask = __CacheAllocate(Size);
-    if (Slab->Mask == NULL)
-        goto fail3;
+        Header = __CacheAllocate(Size);
+        if (Header == NULL)
+            goto fail1;
 
-    for (Index = 0; Index < (LONG)Slab->MaximumOccupancy; Index++) {
-        PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
+        Header->Cache = Cache;
+        InitializeListHead(&Header->ListEntry);
 
-        status = __CacheCtor(Cache, Object);
+        status = __CacheCtor(Cache, Header->Buffer);
         if (!NT_SUCCESS(status))
-            goto fail4;
-    }
-
-    CacheInsertSlab(Cache, Slab);
-    Cache->Count += Count;
-
-    SlabCount = InterlockedIncrement(&Cache->CurrentSlabs);
-    if (SlabCount > Cache->MaximumSlabs)
-        Cache->MaximumSlabs = SlabCount;
-
-    return STATUS_SUCCESS;
-
-fail4:
-    Error("fail4\n");
+            goto fail2;
 
-    while (--Index >= 0) {
-        PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
+        ExInterlockedInsertTailList(&Cache->FreeList,
+                                    &Header->ListEntry,
+                                    &Cache->FreeLock);
+        InterlockedIncrement(&Cache->FreeSize);
 
-        __CacheDtor(Cache, Object);
+        InterlockedIncrement(&Cache->Count);
     }
 
-    __CacheFree(Slab->Mask);
-
-fail3:
-    Error("fail3\n");
-
-    __CacheFree(Slab);
+    return STATUS_SUCCESS;
 
 fail2:
-    Error("fail2\n");
+    __CacheFree(Header);
 
 fail1:
-    Error("fail1 (%08x)\n", status);
-
     return status;
 }
 
-// Must be called with lock held
+// Lock must be held
 static VOID
-CacheDestroySlab(
+CacheSpill(
     IN  PXENBUS_CACHE       Cache,
-    IN  PXENBUS_CACHE_SLAB  Slab
+    IN  ULONG               Target
     )
 {
-    LONG                    Index;
+    PLIST_ENTRY             ListEntry;
+    PXENBUS_CACHE_HEADER    Header;
 
-    ASSERT3U(Slab->CurrentOccupancy, ==, 0);
+    while (Cache->Count > (LONG)Target) {
 
-    ASSERT3U(Cache->Count, >=, Slab->MaximumOccupancy);
-    Cache->Count -= Slab->MaximumOccupancy;
+        ListEntry = ExInterlockedRemoveHeadList(&Cache->FreeList,
+                                                &Cache->FreeLock);
+        if (ListEntry == NULL)
+            break;
 
-    //
-    // The only reason the cursor should be pointing at this slab is
-    // if it is the only one in the list.
-    //
-    if (Cache->Cursor == &Slab->ListEntry)
-        Cache->Cursor = &Cache->SlabList;
+        ASSERT3S(Cache->FreeSize, >, 0);
+        InterlockedDecrement(&Cache->FreeSize);
 
-    RemoveEntryList(&Slab->ListEntry);
+        Header = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_HEADER, ListEntry);
 
-    ASSERT(Cache->Cursor != &Cache->SlabList ||
-           IsListEmpty(&Cache->SlabList));
+        __CacheDtor(Cache, Header->Buffer);
 
-    Index = Slab->MaximumOccupancy;
-    while (--Index >= 0) {
-        PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
+        __CacheFree(Header);
 
-        __CacheDtor(Cache, Object);
+        InterlockedDecrement(&Cache->Count);
     }
-
-    ASSERT(Cache->CurrentSlabs != 0);
-    InterlockedDecrement(&Cache->CurrentSlabs);
-
-    __CacheFree(Slab->Mask);
-    __CacheFree(Slab);
 }
 
-static FORCEINLINE ULONG
-__CacheMaskScan(
-    IN  ULONG   *Mask,
-    IN  ULONG   Maximum
+static PVOID
+CacheGetFromMagazine(
+    IN  PXENBUS_CACHE_MAGAZINE  Magazine
     )
 {
-    ULONG       Size;
-    ULONG       Index;
-
-    Size = P2ROUNDUP(Maximum, BITS_PER_ULONG);
-    Size /= sizeof (ULONG);
-    ASSERT(Size != 0);
+    ULONG                       Index;
 
-    for (Index = 0; Index < Size; Index++) {
-        ULONG   Free = ~Mask[Index];
-        ULONG   Bit;
+    for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; ++Index) {
+        PVOID                   Object;
 
-        if (!_BitScanForward(&Bit, Free))
-            continue;
+        if (Magazine->Slot[Index] != NULL) {
+            Object = Magazine->Slot[Index];
+            Magazine->Slot[Index] = NULL;
 
-        Bit += Index * BITS_PER_ULONG;
-        if (Bit < Maximum)
-            return Bit;
+            return Object;
+        }
     }
 
-    return Maximum;
-}
-
-static FORCEINLINE VOID
-__CacheMaskSet(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
-    )
-{
-    ULONG       Index = Bit / BITS_PER_ULONG;
-
-    Mask[Index] |= 1u << (Bit % BITS_PER_ULONG);
+    return NULL;
 }
 
-static FORCEINLINE BOOLEAN
-__CacheMaskTest(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
+static NTSTATUS
+CachePutToMagazine(
+    IN  PXENBUS_CACHE_MAGAZINE  Magazine,
+    IN  PVOID                   Object
     )
 {
-    ULONG       Index = Bit / BITS_PER_ULONG;
-
-    return (Mask[Index] & (1u << (Bit % BITS_PER_ULONG))) ? TRUE : FALSE;
-}
+    ULONG                       Index;
 
-static FORCEINLINE VOID
-__CacheMaskClear(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
-    )
-{
-    ULONG       Index = Bit / BITS_PER_ULONG;
+    for (Index = 0; Index < XENBUS_CACHE_MAGAZINE_SLOTS; ++Index) {
+        if (Magazine->Slot[Index] == NULL) {
+            Magazine->Slot[Index] = Object;
+            return STATUS_SUCCESS;
+        }
+    }
 
-    Mask[Index] &= ~(1u << (Bit % BITS_PER_ULONG));
+    return STATUS_UNSUCCESSFUL;
 }
 
-// Must be called with lock held
+// Lock must be held
 static PVOID
-CacheGetObjectFromSlab(
-    IN  PXENBUS_CACHE_SLAB  Slab
+CacheGetFromFreeList(
+    IN  PXENBUS_CACHE       Cache
     )
 {
-    PXENBUS_CACHE           Cache;
-    ULONG                   Index;
-    PVOID                   Object;
+    PLIST_ENTRY             ListEntry;
+    PXENBUS_CACHE_HEADER    Header;
+    NTSTATUS                status;
 
-    Cache = Slab->Cache;
+    ListEntry = ExInterlockedRemoveHeadList(&Cache->FreeList,
+                                            &Cache->FreeLock);
+    if (ListEntry == NULL) {
+        status = CacheFill(Cache,
+                           Cache->Count + 1);
+        if (!NT_SUCCESS(status))
+            goto fail1;
 
-    ASSERT3U(Slab->CurrentOccupancy, <=, Slab->MaximumOccupancy);
-    if (Slab->CurrentOccupancy == Slab->MaximumOccupancy)
-        return NULL;
+        ListEntry = ExInterlockedRemoveHeadList(&Cache->FreeList,
+                                                &Cache->FreeLock);
+    }
+    if (ListEntry == NULL)
+        goto fail2;
 
-    Index = __CacheMaskScan(Slab->Mask, Slab->MaximumOccupancy);
-    BUG_ON(Index >= Slab->MaximumOccupancy);
+    ASSERT3S(Cache->FreeSize, >, 0);
+    InterlockedDecrement(&Cache->FreeSize);
 
-    __CacheMaskSet(Slab->Mask, Index);
-    Slab->CurrentOccupancy++;
+    Header = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_HEADER, ListEntry);
+    ASSERT3P(Header->Cache, ==, Cache);
 
-    Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
-    ASSERT3U(Index, ==, (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) /
-             Cache->Size);
+    return Header->Buffer;
 
-    return Object;
+fail2:
+fail1:
+    return NULL;
 }
 
-// Must be called with lock held
+// Lock must be held
 static VOID
-CachePutObjectToSlab(
-    IN  PXENBUS_CACHE_SLAB  Slab,
+CachePutToFreeList(
+    IN  PXENBUS_CACHE       Cache,
     IN  PVOID               Object
     )
 {
-    PXENBUS_CACHE           Cache;
+    PXENBUS_CACHE_HEADER    Header;
+
+    Header = CONTAINING_RECORD(Object, XENBUS_CACHE_HEADER, Buffer);
+    ASSERT3P(Header->Cache, ==, Cache);
+
+    ExInterlockedInsertTailList(&Cache->FreeList,
+                                &Header->ListEntry,
+                                &Cache->FreeLock);
+    InterlockedIncrement(&Cache->FreeSize);
+}
+
+static VOID
+__CacheFlushMagazines(
+    IN  PXENBUS_CACHE       Cache
+    )
+{
+    KIRQL                   Irql;
     ULONG                   Index;
 
-    Cache = Slab->Cache;
+    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
+    __CacheAcquireLock(Cache);
 
-    Index = (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) / Cache->Size;
-    BUG_ON(Index >= Slab->MaximumOccupancy);
+    for (Index = 0; Index < Cache->MagazineCount; ++Index) {
+        PXENBUS_CACHE_MAGAZINE  Magazine = &Cache->Magazines[Index];
+        PVOID                   Object;
 
-    ASSERT(Slab->CurrentOccupancy != 0);
-    --Slab->CurrentOccupancy;
+        while ((Object = CacheGetFromMagazine(Magazine)) != NULL) {
+            CachePutToFreeList(Cache, Object);
+        }
+    }
 
-    ASSERT(__CacheMaskTest(Slab->Mask, Index));
-    __CacheMaskClear(Slab->Mask, Index);
+    __CacheReleaseLock(Cache);
+    KeLowerIrql(Irql);
 }
 
 static PVOID
@@ -532,62 +348,35 @@ CacheGet(
     )
 {
     KIRQL                   Irql;
-    ULONG                   Index;
     PXENBUS_CACHE_MAGAZINE  Magazine;
     PVOID                   Object;
-    LONG                    ObjectCount;
+    ULONG                   Index;
 
     UNREFERENCED_PARAMETER(Interface);
 
+    Object = NULL;
+
     KeRaiseIrql(DISPATCH_LEVEL, &Irql);
     Index = KeGetCurrentProcessorNumberEx(NULL);
 
     ASSERT3U(Index, <, Cache->MagazineCount);
-    Magazine = &Cache->Magazine[Index];
-
-    Object = CacheGetObjectFromMagazine(Magazine);
-    if (Object != NULL)
-        goto done;
-
-    if (!Locked)
-        __CacheAcquireLock(Cache);
-
-again:
-    if (Cache->Cursor != &Cache->SlabList) {
-        PLIST_ENTRY ListEntry = Cache->Cursor;
-        PXENBUS_CACHE_SLAB  Slab;
-
-        Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
-
-        Object = CacheGetObjectFromSlab(Slab);
-        ASSERT(Object != NULL);
-
-        if (Slab->CurrentOccupancy == Slab->MaximumOccupancy)
-            Cache->Cursor = Slab->ListEntry.Flink;
-    }
+    Magazine = &Cache->Magazines[Index];
 
+    Object = CacheGetFromMagazine(Magazine);
     if (Object == NULL) {
-        NTSTATUS status;
+        if (!Locked)
+            __CacheAcquireLock(Cache);
 
-        ASSERT3P(Cache->Cursor, ==, &Cache->SlabList);
+        Object = CacheGetFromFreeList(Cache);
 
-        status = CacheCreateSlab(Cache);
-        if (NT_SUCCESS(status)) {
-            ASSERT(Cache->Cursor != &Cache->SlabList);
-            goto again;
-        }
+        if (!Locked)
+            __CacheReleaseLock(Cache);
     }
 
-    CacheAudit(Cache);
-
-    if (!Locked)
-        __CacheReleaseLock(Cache);
-
-done:
     if (Object != NULL) {
-        ObjectCount = InterlockedIncrement(&Cache->CurrentObjects);
-        if (ObjectCount > Cache->MaximumObjects)
-            Cache->MaximumObjects = ObjectCount;
+        LONG    Count = InterlockedIncrement(&Cache->CurrentObjects);
+        if (Count > Cache->MaximumObjects)
+            Cache->MaximumObjects = Count;
     }
 
     KeLowerIrql(Irql);
@@ -606,7 +395,6 @@ CachePut(
     KIRQL                   Irql;
     ULONG                   Index;
     PXENBUS_CACHE_MAGAZINE  Magazine;
-    PXENBUS_CACHE_SLAB      Slab;
     NTSTATUS                status;
 
     UNREFERENCED_PARAMETER(Interface);
@@ -615,131 +403,23 @@ CachePut(
     Index = KeGetCurrentProcessorNumberEx(NULL);
 
     ASSERT3U(Index, <, Cache->MagazineCount);
-    Magazine = &Cache->Magazine[Index];
-
-    status = CachePutObjectToMagazine(Magazine, Object);
-
-    if (NT_SUCCESS(status))
-        goto done;
-
-    Slab = (PXENBUS_CACHE_SLAB)PAGE_ALIGN(Object);
-    ASSERT3U(Slab->Magic, ==, XENBUS_CACHE_SLAB_MAGIC);
+    Magazine = &Cache->Magazines[Index];
 
-    if (!Locked)
-        __CacheAcquireLock(Cache);
+    status = CachePutToMagazine(Magazine, Object);
 
-    CachePutObjectToSlab(Slab, Object);
+    if (!NT_SUCCESS(status)) {
+        if (!Locked)
+            __CacheAcquireLock(Cache);
 
-    /* Re-insert to keep slab list ordered */
-    RemoveEntryList(&Slab->ListEntry);
-    CacheInsertSlab(Cache, Slab);
-
-    CacheAudit(Cache);
-
-    if (!Locked)
-        __CacheReleaseLock(Cache);
-
-done:
-    ASSERT(Cache->CurrentObjects != 0);
-    InterlockedDecrement(&Cache->CurrentObjects);
-
-    KeLowerIrql(Irql);
-}
+        CachePutToFreeList(Cache, Object);
 
-static NTSTATUS
-CacheFill(
-    IN  PXENBUS_CACHE   Cache,
-    IN  ULONG           Count
-    )
-{
-    KIRQL               Irql;
-    NTSTATUS            status;
-
-    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    __CacheAcquireLock(Cache);
-
-    status = STATUS_SUCCESS;
-    while (Cache->Count < Count) {
-        status = CacheCreateSlab(Cache);
-        if (!NT_SUCCESS(status))
-            break;
+        if (!Locked)
+            __CacheReleaseLock(Cache);
     }
 
-    CacheAudit(Cache);
-
-    __CacheReleaseLock(Cache);
-    KeLowerIrql(Irql);
-
-    return status;
-}
-
-static VOID
-CacheSpill(
-    IN  PXENBUS_CACHE   Cache,
-    IN  ULONG           Count
-    )
-{
-    KIRQL               Irql;
-    PLIST_ENTRY         ListEntry;
-
-    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    __CacheAcquireLock(Cache);
-
-    if (Cache->Count <= Count)
-        goto done;
-
-    while (!IsListEmpty(&Cache->SlabList)) {
-        PXENBUS_CACHE_SLAB  Slab;
-
-        // Actual list removal is done in CacheDestroySlab()
-        ListEntry = Cache->SlabList.Blink;
-        ASSERT(ListEntry != &Cache->SlabList);
-
-        Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
-
-        if (Slab->CurrentOccupancy != 0)
-            break;
-
-        ASSERT(Cache->Count >= Slab->MaximumOccupancy);
-        if (Cache->Count - Slab->MaximumOccupancy < Count)
-            break;
-
-        CacheDestroySlab(Cache, Slab);
-    }
-
-    CacheAudit(Cache);
-
-done:
-    __CacheReleaseLock(Cache);
-    KeLowerIrql(Irql);
-}
-
-static FORCEINLINE VOID
-__CacheFlushMagazines(
-    IN  PXENBUS_CACHE   Cache
-    )
-{
-    KIRQL               Irql;
-    ULONG               Index;
-
-    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-    __CacheAcquireLock(Cache);
-
-    for (Index = 0; Index < Cache->MagazineCount; Index++) {
-        PXENBUS_CACHE_MAGAZINE  Magazine = &Cache->Magazine[Index];
-        PVOID                   Object;
-
-        while ((Object = CacheGetObjectFromMagazine(Magazine)) != NULL) {
-            PXENBUS_CACHE_SLAB  Slab;
-
-            Slab = (PXENBUS_CACHE_SLAB)PAGE_ALIGN(Object);
-            ASSERT3U(Slab->Magic, ==, XENBUS_CACHE_SLAB_MAGIC);
-
-            CachePutObjectToSlab(Slab, Object);
-        }
-    }
+    ASSERT3U(Cache->CurrentObjects, >, 0);
+    InterlockedDecrement(&Cache->CurrentObjects);
 
-    __CacheReleaseLock(Cache);
     KeLowerIrql(Irql);
 }
 
@@ -791,8 +471,8 @@ CacheCreate(
     (*Cache)->ReleaseLock = ReleaseLock;
     (*Cache)->Argument = Argument;
 
-    InitializeListHead(&(*Cache)->SlabList);
-    (*Cache)->Cursor = &(*Cache)->SlabList;
+    InitializeListHead(&(*Cache)->FreeList);
+    KeInitializeSpinLock(&(*Cache)->FreeLock);
 
     status = STATUS_INVALID_PARAMETER;
     if ((*Cache)->Reservation > (*Cache)->Cap)
@@ -803,10 +483,10 @@ CacheCreate(
         goto fail4;
 
     (*Cache)->MagazineCount = KeQueryMaximumProcessorCountEx(ALL_PROCESSOR_GROUPS);
-    (*Cache)->Magazine = __CacheAllocate(sizeof (XENBUS_CACHE_MAGAZINE) * (*Cache)->MagazineCount);
+    (*Cache)->Magazines = __CacheAllocate(sizeof (XENBUS_CACHE_MAGAZINE) * (*Cache)->MagazineCount);
 
     status = STATUS_NO_MEMORY;
-    if ((*Cache)->Magazine == NULL)
+    if ((*Cache)->Magazines == NULL)
         goto fail5;
 
     KeAcquireSpinLock(&Context->Lock, &Irql);
@@ -830,9 +510,9 @@ fail4:
 fail3:
     Error("fail3\n");
 
-    (*Cache)->Cursor = NULL;
-    ASSERT(IsListEmpty(&(*Cache)->SlabList));
-    RtlZeroMemory(&(*Cache)->SlabList, sizeof (LIST_ENTRY));
+    ASSERT(IsListEmpty(&(*Cache)->FreeList));
+    RtlZeroMemory(&(*Cache)->FreeList, sizeof (LIST_ENTRY));
+    RtlZeroMemory(&(*Cache)->FreeLock, sizeof (KSPIN_LOCK));
 
     (*Cache)->Argument = NULL;
     (*Cache)->ReleaseLock = NULL;
@@ -903,22 +583,22 @@ CacheDestroy(
 
     __CacheFlushMagazines(Cache);
 
-    ASSERT(IsZeroMemory(Cache->Magazine, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
-    __CacheFree(Cache->Magazine);
-    Cache->Magazine = NULL;
+    ASSERT(IsZeroMemory(Cache->Magazines, sizeof (XENBUS_CACHE_MAGAZINE) * Cache->MagazineCount));
+    __CacheFree(Cache->Magazines);
+    Cache->Magazines = NULL;
     Cache->MagazineCount = 0;
 
     CacheSpill(Cache, 0);
 
-    ASSERT(Cache->CurrentObjects == 0);
+    ASSERT3S(Cache->Count, ==, 0);
+    ASSERT3S(Cache->CurrentObjects, ==, 0);
     Cache->MaximumObjects = 0;
 
-    ASSERT(Cache->CurrentSlabs == 0);
-    Cache->MaximumSlabs = 0;
+    ASSERT(IsListEmpty(&Cache->FreeList));
+    ASSERT(Cache->FreeSize == 0);
 
-    Cache->Cursor = NULL;
-    ASSERT(IsListEmpty(&Cache->SlabList));
-    RtlZeroMemory(&Cache->SlabList, sizeof (LIST_ENTRY));
+    RtlZeroMemory(&Cache->FreeList, sizeof (LIST_ENTRY));
+    RtlZeroMemory(&Cache->FreeLock, sizeof (KSPIN_LOCK));
 
     Cache->Argument = NULL;
     Cache->ReleaseLock = NULL;
@@ -963,14 +643,13 @@ CacheDebugCallback(
 
             XENBUS_DEBUG(Printf,
                          &Context->DebugInterface,
-                         "- %s: Count = %d, Reservation = %d, Objects = %d / %d, Slabs = %d / %d\n",
+                         "- %s: Reservation = %d, Cap = %d, Count = %d, Objects = %d / %d\n",
                          Cache->Name,
-                         Cache->Count,
                          Cache->Reservation,
+                         Cache->Cap,
+                         Cache->Count,
                          Cache->CurrentObjects,
-                         Cache->MaximumObjects,
-                         Cache->CurrentSlabs,
-                         Cache->MaximumSlabs);
+                         Cache->MaximumObjects);
         }
     }
 }
@@ -1024,11 +703,14 @@ CacheMonitor(
 
             Cache = CONTAINING_RECORD(ListEntry, XENBUS_CACHE, ListEntry);
 
-            if (Cache->Count < Cache->Reservation)
-                CacheFill(Cache, Cache->Reservation);
-            else if (Cache->Count > Cache->Reservation)
+            if (Cache->Count < (LONG)Cache->Reservation) {
+                CacheFill(Cache,
+                          Cache->Reservation);
+            } else if (Cache->Count > (LONG)Cache->Reservation) {
                 CacheSpill(Cache,
-                           __max(Cache->Reservation, (Cache->Count / 2)));
+                           __max((LONG)Cache->Reservation,
+                                 (Cache->Count / 2)));
+            }
         }
 
 loop:
-- 
2.32.0.windows.1



From win-pv-devel-bounces@lists.xenproject.org Fri Aug 19 16:48:15 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 19 Aug 2022 16:48:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.390383.627797 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oP5AL-0002r0-Ve; Fri, 19 Aug 2022 16:48:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 390383.627797; Fri, 19 Aug 2022 16:48:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oP5AL-0002qt-Sv; Fri, 19 Aug 2022 16:48:13 +0000
Received: by outflank-mailman (input) for mailman id 390383;
 Fri, 19 Aug 2022 16:22:52 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=zfOI=YX=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oP4lo-0008CS-OU
 for win-pv-devel@lists.xenproject.org; Fri, 19 Aug 2022 16:22:52 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2b6970f8-1fdb-11ed-9250-1f966e50362f;
 Fri, 19 Aug 2022 18:22:51 +0200 (CEST)
Received: by mail-wm1-x336.google.com with SMTP id
 n23-20020a7bc5d7000000b003a62f19b453so1272058wmk.3
 for <win-pv-devel@lists.xenproject.org>; Fri, 19 Aug 2022 09:22:50 -0700 (PDT)
Received: from [10.7.236.19] ([54.239.6.184]) by smtp.gmail.com with ESMTPSA id
 z3-20020a05600c0a0300b003a5c2abc412sm11301512wmp.44.2022.08.19.09.22.49
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Aug 2022 09:22:49 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b6970f8-1fdb-11ed-9250-1f966e50362f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc;
        bh=EX2CJhyKg99JPYx6HAspAgAqjhMnkFke/+WPaCJJqWw=;
        b=LeJVChur7NJkFY4Y3ej2607XwTqjzRMTQlpARA/nQ3z2GSnOpfWBG4nD1LsAszslfF
         rT4PIW/ycXpgrCQSQb+pCik4Ei19RmlgV/2pVIiG5RRToJhE4Z2/ovxnWoCAowUXsWYB
         Y2+F616POxqF2c0HMDWoLiKKZ16sstnX2pqq+ByLgPe3EiwgfmP4LYI4xbfjXY6SCKSR
         YfE8KrSEpWce46f3dSrtIVF86BBgeSXBJBZnIgJ2jj37RFMiQPLjoMPP6d7qbgmCBMpj
         XQwDVr6M7VwmKvHGRWtXBKxVF6LnLPbYdiejiD2HmjWBjgWThZadWJgKsnGPNwLlygTT
         wdYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc;
        bh=EX2CJhyKg99JPYx6HAspAgAqjhMnkFke/+WPaCJJqWw=;
        b=udx7S0dyRsBWx2B8xGj5NyNSmx0iFh5/eXEXZBspGN3T3ZZt9WuwmW7qpcSopK2aVN
         K9WdYKYUHTrg5rz6kr5/ffLJG+egLnM2E9ZNvZMgoB1I4dLApB0Gji4naU+/ojcIY2Aq
         07lGnbAwCVIDCE3GBekpILw9Nc+ueKKUEJkHB56tQefjxZOqQgWhX4LCEGCtliuvJTnv
         V24LeMDYVYRYVzH88XXnOt80O/L9v20k/vjkDRKUi3BWU9lEFVrQglMNdSC0MNQp9Lw0
         TKMtBFgl3GaEkCfp6ot4D9iZ8XPLlEqghC9QieYlYy4885VzMWQ9JHkjlMmv+F4pngOh
         w3Ig==
X-Gm-Message-State: ACgBeo1a52Hdmj9SBqRT384nji9mViw02V1nFtEXc23hfs1PEAiaqvql
	MofiA5JF7xhi1DuPw7CJpnIaSnwj9PDe6y1t
X-Google-Smtp-Source: AA6agR5wWJLcrwLp4OKcLgnwpQhlShM8yW7r9jBzYDsNCUj7ZiD24svAW13tDyx8qiawlAUHtXTGmg==
X-Received: by 2002:a05:600c:3595:b0:3a5:c2a5:c92a with SMTP id p21-20020a05600c359500b003a5c2a5c92amr5236086wmq.170.1660926170165;
        Fri, 19 Aug 2022 09:22:50 -0700 (PDT)
Message-ID: <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
Date: Fri, 19 Aug 2022 17:22:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [PATCH] Rework CACHE to use a FreeList
Content-Language: en-US
To: win-pv-devel@lists.xenproject.org
References: <20220819101518.389-1-owen.smith@citrix.com>
From: Paul Durrant <xadimgnik@gmail.com>
In-Reply-To: <20220819101518.389-1-owen.smith@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 19/08/2022 11:15, Owen Smith wrote:
> The slab allocation method will allogate about a PAGE worth of objects, and
> every object will be initialized. If the objects initializer allocates any
> resources, this can result in resource starvation. A particular bad example of
> this is the grant table cache, where a page of gnttab objects is 253 objects.
> This is highlighted by xenvif's queues, where the receiver requires 257 grant
> references (1 for the ring, and 256 for the ring slots) which results in 2 slabs,
> or 506 gnttab objects, reserving 506 grant references.
> 
> Use a FreeList to contain individual objects that are not in use. This trades
> an increase in smaller allocations for reducing the wastage of unused objects.
> 
> Signed-off-by: Owen Smith <owen.smith@citrix.com>

Sorry I didn't comment on the RFC; I was on PTO and then snowed under 
with mail etc.
I think this is a sledgehammer to crack a nut. I agree that XENVIF is 
being a grant ref hog... but the correct thing to do there is to re-work 
the grant table cache, not the underlying slab allocator; which I think 
is fine. The problem is (ab)using the slab allocator's Ctor to get the 
reference. So a free list implementation is fine... just in the gnttab 
code, rather than the cache code.

   Paul



From win-pv-devel-bounces@lists.xenproject.org Mon Aug 22 07:24:41 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Aug 2022 07:24:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.391190.628910 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ1nc-0004HD-4X; Mon, 22 Aug 2022 07:24:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 391190.628910; Mon, 22 Aug 2022 07:24:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ1nc-0004H6-1v; Mon, 22 Aug 2022 07:24:40 +0000
Received: by outflank-mailman (input) for mailman id 391190;
 Mon, 22 Aug 2022 07:24:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=RWwq=Y2=citrix.com=prvs=2261714a3=owen.smith@srs-se1.protection.inumbo.net>)
 id 1oQ1na-0004H0-GU
 for win-pv-devel@lists.xenproject.org; Mon, 22 Aug 2022 07:24:38 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 784e4944-21eb-11ed-bd2e-47488cf2e6aa;
 Mon, 22 Aug 2022 09:24:36 +0200 (CEST)
Received: from mail-dm6nam10lp2107.outbound.protection.outlook.com (HELO
 NAM10-DM6-obe.outbound.protection.outlook.com) ([104.47.58.107])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 22 Aug 2022 03:24:33 -0400
Received: from DS7PR03MB5477.namprd03.prod.outlook.com (2603:10b6:5:2c4::17)
 by DM4PR03MB6127.namprd03.prod.outlook.com (2603:10b6:5:396::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.19; Mon, 22 Aug
 2022 07:24:31 +0000
Received: from DS7PR03MB5477.namprd03.prod.outlook.com
 ([fe80::fcd4:e4d8:7b9d:f45d]) by DS7PR03MB5477.namprd03.prod.outlook.com
 ([fe80::fcd4:e4d8:7b9d:f45d%3]) with mapi id 15.20.5546.022; Mon, 22 Aug 2022
 07:24:31 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 784e4944-21eb-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661153076;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=w3eZlgyYjH9GuuHOC73KZe4lWtGUCZ4dspOAAKmXs4A=;
  b=JjV4OWPK92KiI6bVHvjPDbDXQvDU5PYneHlyqnTr4fAxv2R2RN1/4yao
   xsQFiYdisaQy4nxBWAG/HpQvRXTPeEJIzAQ9KEVqObOWN3jYKzd6Jsd74
   9y/srbcUe49Dh9svvaqYUC5epGhxAkONz++vHhzAgEL1vT7B9s6gvlDv+
   w=;
X-IronPort-RemoteIP: 104.47.58.107
X-IronPort-MID: 79031997
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:X8k5NK9sRMDv1mT9nJ2gDrUDlH+TJUtcMsCJ2f8bNWPcYEJGY0x3m
 DFNW2qCO/7YMzHxc4p/O4Ti/UoA68eAndBgTgZsq3o8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy
 +1EN7Es+ehtFie0Si+Fa+Sn9z8kvU2xbuKUIPbePSxsThNTRi4kiBZy88Y0mYctitWia++3k
 YqaT/b3ZRn0gFaYDkpOs/jZ8EM15qyr0N8llgdWic5j7Qe2e0Y9VPrzFYnpR1PkT49dGPKNR
 uqr5NlVKUuAon/Bovv8+lrKWhViroz6ZGBiuVIPM0SWuTBQpzRa70oOHKF0hXG7Kdm+t4sZJ
 N1l7fRcQOqyV0HGsLx1vxJwS0mSMUDakVNuzLfWXcG7liX7n3XQL/pGEhAVBr1H+NlNMWwJ+
 eYXBCgnShCNvrfjqF67YrEEasULCuDOZdtallQ+iDbTALAhXIzJRLjM6ZlAxjAsi8tSHPHYI
 c0EdT5oaxeGaBpKUrsVIMtmwKH02T+iI3sB8A39SakfugA/yCR2z7XrdsHQe8CKbc5UglyZt
 iTN+GGR7hQya43HkmPUoy3EaunnxRrGZo0jSIyCyaBguG+W23QoDT8pWg7uyRW+ogvkMz5FE
 GQE8yYvqKc09U+DQdz0Xhn+q3mB1jYDWtwVC/N/5AyTx6785weCGnNCXjNHcMYhtsI9WXotz
 FDhoj/yLTlmsbnQRXfD8L6R9Gu2IXJMdTBEYjIYRwwY5dWluJs0kh/EUtdkFuiyk8HxHjbzh
 TuNqUDSmokusCLC7I3jlXivvt5mjsKhotIdjukPYl+Y0w==
IronPort-HdrOrdr: A9a23:xditLKodJXTC3ZGgGVwvEvkaV5uVL9V00zEX/kB9WHVpm5Oj+v
 xGzc5w6farsl0ssSkb6Ki90dq7MAjhHPlOkMIs1NaZLUHbUQ6TQL2KgrGSpwEIdxeeygcZ79
 YYT0EcMqy7MbEZt7ec3ODQKb9Jr7e6GeKT9IHjJhxWPGJXgtRbnmJE43GgYy9LrWd9ZaYRJd
 653I5qtjCgcXMYYoCQHX8eRdXOoNXNidbPfQMGLwRP0njDsRqYrJrBVzSI1BYXVD1ChZ0493
 LergD/7qK/99mm1x7n0XPJ5Zg+oqqv9jIDPr3DtiEmEESttu+aXvUjZ1REhkF2nAib0idqrD
 ALmWZkAy080QKUQoj/m2qW5+Cp6kdS15al8y7UvZKrm72EeBsqT8VGno5XaR3f9g4pu8x9yr
 tC2yaDu4NQFg6oplWL2zHkbWAeqqOPmwtXrccDy3hEFYcOYr5YqoISuEtTDZcbBSr/rIQqCv
 NnAs3Q7OtfNQryVQGRgkB/hNi3GngjFBaPRUYP/sSTzjhNhXh8i08V3tYWkHsM/I80D5NE++
 PHOKJ1k6wmdL5hUYttQOMaBcenAG3ERhzBdGqUPFT8DakCf2nArpbmiY9Flt1CuKZ4v6fatK
 6xLm+w71RCBH4GIff+raFj41TKXHi3Wyjrx4VX+4V504eMNIbWDQ==
X-IronPort-AV: E=Sophos;i="5.93,254,1654574400"; 
   d="scan'208";a="79031997"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=kX+6RNiL0hF9W+NsUTqWCuCeGTlmbEn8jA0L+nRNSG0d1Jeg5iD6gVJRUPhFMsK+2gCpZVTD2pptmyMYYWXMfILP9U+sjNsfEfje8riSFzyIMHroDQKvShSp8Jv7o2I0DfVG/tYkPmsNk2tunN6ATINSv/BnBJFJAXuJEc8ZzFrEcD5/fd38PGceqGjjc52z/iWazdMBRBKObMXBf4ggwVc+7IicE5qsKinIqCc/G69NvSV3PRJMQyCVEuHdPfPJ+vX8DN0OtZ8K1GV/ZlZFOJoLxoYvUbORfGp0s1QsDSQ6R2xt4tBLqOu0Ky0VeQToe14ctjzxx7XW+w/7a8l4PA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=w3eZlgyYjH9GuuHOC73KZe4lWtGUCZ4dspOAAKmXs4A=;
 b=Es/KcKNsflTq1uBQnv11dMyqCLEWyRGTnB29CqzhLrOtXlFAyc7/72tjsb8SO7pObXwTgqIfgB40TAWVgew74ZNeLC8sIuKciaM/WIPXCIGeAupeRs8kZZZY1uEocw8mtGP8hSkl7jWtYOVa/zPiP5McPijqDq8yVXLwHilvuvi61bX3zLx57TnNvBmppRcY+Mp3acNQ4tTEgPKMvj2CNct/8YoPLscsFucEcaWjrHqxLC4QlPZDav1JTm0RUFBpeqHMir6jxoyFsGmSPciKg4l5u6pHjKYUKUAvlyFLRDmr5nStAHLKT6dGVPpCeOQVZ+dofy0tYrt4213w+PeNsw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=w3eZlgyYjH9GuuHOC73KZe4lWtGUCZ4dspOAAKmXs4A=;
 b=pq+BUSbjBfoGy9ftFZPCGPg/D6JIYevM+TiHYqIhtA+DIucnIWtI4bRZ/Ql6+ahPgbAT42ubQbBrSM6fewPiX4IBvH1YrkvBO/KdfMuNgVpwwrY5C5nVa61ZkhiSNiL0rcbm3B3uNv9UgsGbFhQuMVVIYKotZ6fiW3WEZDFFQNM=
From: Owen Smith <owen.smith@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: [PATCH] Rework CACHE to use a FreeList
Thread-Topic: [PATCH] Rework CACHE to use a FreeList
Thread-Index: AQHYs7Sg9Rrov4BadECgnNCp5OuXFq22aG4AgAQeHLA=
Date: Mon, 22 Aug 2022 07:24:31 +0000
Message-ID:
 <DS7PR03MB547756DA6D8DA6F30291CA52FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
References: <20220819101518.389-1-owen.smith@citrix.com>
 <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
In-Reply-To: <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 4d817dad-24be-438c-1947-08da840f5b38
x-ms-traffictypediagnostic: DM4PR03MB6127:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 Ief/zh4lKYvcNoOskInlPgOh9cr3z+hTVw1+ZPaK8bMjDASykQpLEDHvXPPzQxtJaUGt4OKUzuYT5nSO3XKm1YgyMio1o55HvpZo/4fCBILCRaDHuv2Oj6Jc0qWo/nvSBR+KVXt/j8R9h1OAumtzNwgFSOJE7gP6mM1uGS10ZFVUovPpInRvO8iEUHWKH6SooM0hlTDzH+VU7FTMO+KEiu4T6+BNKYdLEy6OhMIRHaW2ztPPX6+ysi0nNC5f5BrKJ86d5UeGWzV//A1TmCofIScA1qkNAYmIR0P8OFeCkueEOTz8+cBUcnZPhFHDxJpTXQ+FwkrAnr6h7QmalAYrZzV/XG1DEs+i2rDtolLmxTpVU8eV3NkgGzFmzvHAmifdZsNrsryR/T4dDATi9NNkk0wHPX2nvClftIgC2wXnSLnQW5W1koZtsdKQQkWfXg0LRCO186uY0PVcs8PJXpMKg6KRPxc/oxkX5yusnBizWPCaUENw0uQ66R8qd82tUDWBooyorDrNUQ8qh9K0HT455Oms0TF785PKOTCsw73lbRlsZu4JpIm+DBPRWnhYBOd30/IjsG++p7EXAe4NrqJbAGME1nXFTGWyfzOCvzBeXdCaHgEbLi5iysGpGuoZ9P+kM6jGqi1zigx12JQy+9qAfSvbniMhkNeTf+BCEwvU2Z/TzCvVkbCap4qHWBWWbzBNxmarIk63n3Orl6HiQ7UO+HfQ7+zbaGqjYf4vkRIwmlLQEStUjo+LzZa9MLig4mQQGHgwJ+CmUEzRGWU9FMt0lw==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5477.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(136003)(39860400002)(396003)(366004)(346002)(6506007)(9686003)(83380400001)(26005)(186003)(33656002)(7696005)(53546011)(82960400001)(38070700005)(86362001)(55016003)(38100700002)(122000001)(64756008)(316002)(110136005)(52536014)(8676002)(41300700001)(8936002)(5660300002)(44832011)(66556008)(478600001)(66446008)(66476007)(76116006)(66946007)(2906002)(71200400001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bVFDTjdqL0RFYjFJQTFDaXdqbFlRaVRmSmNSN0hBZFY3MEJQQ1pPQXQzMytz?=
 =?utf-8?B?ZmJPY1A5NFI0cWRHa2VscktjdTZ4Qm9vZnR5QmJtbE0xMDBVY0VKN3JRcUw3?=
 =?utf-8?B?T3E2ZE9pOGNkU2lqNW9WMGxwV210TFVEMDNRWmhjaktGUG11L1dKVkY5V3lG?=
 =?utf-8?B?MUVhdERxOFAzZVZwNkw1RVJJU1lDLzlSazQ3eW5QTXdtRS94NjBxMkd0UGtt?=
 =?utf-8?B?Q09EWEtsbHZJQVl3dW0xRWx1M3d6Nk1TVTNZVzBLZlE3N2VPZ2JCMkZXb0hJ?=
 =?utf-8?B?VExEVFB5ZkFkNHFHMGpmMnQ2U1JwYXE3cER5eHRJaCtML09sOVRqeHQ0TXIr?=
 =?utf-8?B?YldEdHk0SENKc0dPWjRXemkyTHh1MTBVZDBSNS9pME50eHNuMklyQlJpS1dT?=
 =?utf-8?B?OUFQaEp2RnFKeVgyZlQ2Y2lmYzVxYStrelBVL3Y5a0JLQTVQUjNPc21KV1N3?=
 =?utf-8?B?bFl5ZFcvbWFrUEpmT0xxc1ZDWk1yTVNCM2RjRGpaR3liNHlXSG9uYzNyZko1?=
 =?utf-8?B?eEt6Ry80QTR4M1BGR0c4WFNnM0pXbmlaaWdIbkZwaDNHZlVLUUlCeDU1ckN3?=
 =?utf-8?B?TFA3YVVjN3BhRXp2T0FxdWF3TlIzY20ycDgvWmlZZjd3blNMdVd5M1JEcGZY?=
 =?utf-8?B?YVNSRmk3b3N3V1BqalUydDRSYUVzcndESExHS0VWaDU0NTlTNHFub2syZjA0?=
 =?utf-8?B?TDA5dDE4bURocHNzanB1RUVPU2V5UHJYcFMxZjN0bkVoSklXTzhxTlNNb1Q2?=
 =?utf-8?B?ZVBpdW5MMXkwS2VLM3E3WUJ5MWdReTZ3ek1LM3VuODZZa1pOK3NyWjBTTkhl?=
 =?utf-8?B?Wm0xT2FzNXBTVXBDR1dUS2w2QnlmSlNRZHE1U3h0NEdNN296YUpHZW9KV1F0?=
 =?utf-8?B?eCtYT3JzaFhCTC9heldFQkE3akZrMVlxVm5xRmtKdFZiSVJmc2g2ZXhJc1Qz?=
 =?utf-8?B?amRITjFBekNXamkvUUNvd3orZFNFci9PQURyVVJ1M2l0djhUdFhCVWc0b0tu?=
 =?utf-8?B?bno4Y2Q2VXNuTmtvUThyT094WkM5UmdBZEp4RXhpM2g5SHovWElDNHljRll6?=
 =?utf-8?B?Z3VDTGt4M1diQ016MVJhc3BxeXQ5Y3JiZitTVEpHZjE2b3doVG5YakNINVg2?=
 =?utf-8?B?elQxVmRQNmg5Q0ZrVDZhOC91eUViT05xZWFnaUMrWFQwZDNKQ3N4bWMvZVM2?=
 =?utf-8?B?VU40eFUvVlhka05PaXlMc3NLekcvR3c2RjZGSGdkaURXeXdTQzgxTzl3TFI4?=
 =?utf-8?B?UXM3clBpNkZNZXZOWkRRVWdjcW5yVks1UmlXWENIeXNJK25BaGIyVWxnWXR4?=
 =?utf-8?B?a253NVZMNXNZbGFYYmF1THB5bWcyOHNkQ25ROFNtbG9HQm9ITVlIVExPL2I5?=
 =?utf-8?B?a0tmcEhGclkxMWJiSWU2bmFtK05WZG5FRStBSVAwNytCdnluU2lGaTdadWF4?=
 =?utf-8?B?VXBCNTAwY2lrSUo3MllObTNrakM1Zk5DbkRpRkJkaVlGWDdPc25RZ05ndS9h?=
 =?utf-8?B?cjdFVnc4Vjl3NHViWGlNY3hSS0tnWnZ3WE1xMnJFd0VZRmpKNFdtTFZLTE5U?=
 =?utf-8?B?c1l4T3ZJWDZEU1MrRUNlOXRVNWRUa0VpbjBNS1hpWTQxWVJkLzJEYWZUZWJU?=
 =?utf-8?B?VldITjh4UmY2ZHYrU3FhNjYxR2V0YzlMU2NWaDMyVFVUcEJYTWIxSUFTNExp?=
 =?utf-8?B?MHluanMyVEZqcFpJNlZwL2F5ODRDM1hMRWYvcFJ0VW92MWd3YjZ6NWhzR2hF?=
 =?utf-8?B?MWpkMWR0MjAyL240OVgzdUZPbE9uRm9lV2E0Z0E1Rng4YUdTKytFeWRGL3JY?=
 =?utf-8?B?M05aaEd6b3ByS21WekJ0cVVnMmVDcno0QWZ6RU84Vm5KZ0hvQWdDZ2pOY1FV?=
 =?utf-8?B?R0JRcDJRL2Fqd3FVcExGdzJJTnpGWENmODJrbjBQaGp1SW1abnV5NXkyR01I?=
 =?utf-8?B?ajE2UDV0YlRDSEoyMjB2UVM3UkRFU1RVSVZ2cWpQOGdnMWZFalJOcVdBUTNQ?=
 =?utf-8?B?N0FiNHNrcmdQM0JaUGZGZ0hWcWIxTzJRbjVUUjh2VmFrNTJiNU94TGFsNjNP?=
 =?utf-8?B?cjlCeUlQbVBMdVRVOC91bmp4M3VGa3lPWXVIM0hLc096ZlFhdWF0NVBKd3Iw?=
 =?utf-8?Q?4Wr8IFomcekVX2Cs+j7oUjUC1?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5477.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4d817dad-24be-438c-1947-08da840f5b38
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Aug 2022 07:24:31.5813
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 1nHm6c/LydxECqe4OmAVVE7BRG1HZCL1MRt4v3jypubrXq+lUFov9KZMT+p5DT4Slu/KdvE8Ps+c5SsApm9Vpg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR03MB6127

DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiB3aW4tcHYtZGV2ZWwgPHdpbi1w
di1kZXZlbC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnPiBPbiBCZWhhbGYgT2YgUGF1bCBE
dXJyYW50DQpTZW50OiAxOSBBdWd1c3QgMjAyMiAxNzoyMw0KVG86IHdpbi1wdi1kZXZlbEBsaXN0
cy54ZW5wcm9qZWN0Lm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSF0gUmV3b3JrIENBQ0hFIHRvIHVz
ZSBhIEZyZWVMaXN0DQoNCltDQVVUSU9OIC0gRVhURVJOQUwgRU1BSUxdIERPIE5PVCByZXBseSwg
Y2xpY2sgbGlua3MsIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBoYXZlIHZlcmlmaWVk
IHRoZSBzZW5kZXIgYW5kIGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZS4NCg0KT24gMTkvMDgvMjAy
MiAxMToxNSwgT3dlbiBTbWl0aCB3cm90ZToNCj4gVGhlIHNsYWIgYWxsb2NhdGlvbiBtZXRob2Qg
d2lsbCBhbGxvZ2F0ZSBhYm91dCBhIFBBR0Ugd29ydGggb2YgDQo+IG9iamVjdHMsIGFuZCBldmVy
eSBvYmplY3Qgd2lsbCBiZSBpbml0aWFsaXplZC4gSWYgdGhlIG9iamVjdHMgDQo+IGluaXRpYWxp
emVyIGFsbG9jYXRlcyBhbnkgcmVzb3VyY2VzLCB0aGlzIGNhbiByZXN1bHQgaW4gcmVzb3VyY2Ug
DQo+IHN0YXJ2YXRpb24uIEEgcGFydGljdWxhciBiYWQgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBn
cmFudCB0YWJsZSBjYWNoZSwgd2hlcmUgYSBwYWdlIG9mIGdudHRhYiBvYmplY3RzIGlzIDI1MyBv
YmplY3RzLg0KPiBUaGlzIGlzIGhpZ2hsaWdodGVkIGJ5IHhlbnZpZidzIHF1ZXVlcywgd2hlcmUg
dGhlIHJlY2VpdmVyIHJlcXVpcmVzIA0KPiAyNTcgZ3JhbnQgcmVmZXJlbmNlcyAoMSBmb3IgdGhl
IHJpbmcsIGFuZCAyNTYgZm9yIHRoZSByaW5nIHNsb3RzKSANCj4gd2hpY2ggcmVzdWx0cyBpbiAy
IHNsYWJzLCBvciA1MDYgZ250dGFiIG9iamVjdHMsIHJlc2VydmluZyA1MDYgZ3JhbnQgcmVmZXJl
bmNlcy4NCj4gDQo+IFVzZSBhIEZyZWVMaXN0IHRvIGNvbnRhaW4gaW5kaXZpZHVhbCBvYmplY3Rz
IHRoYXQgYXJlIG5vdCBpbiB1c2UuIFRoaXMgDQo+IHRyYWRlcyBhbiBpbmNyZWFzZSBpbiBzbWFs
bGVyIGFsbG9jYXRpb25zIGZvciByZWR1Y2luZyB0aGUgd2FzdGFnZSBvZiB1bnVzZWQgb2JqZWN0
cy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IE93ZW4gU21pdGggPG93ZW4uc21pdGhAY2l0cml4LmNv
bT4NCg0KU29ycnkgSSBkaWRuJ3QgY29tbWVudCBvbiB0aGUgUkZDOyBJIHdhcyBvbiBQVE8gYW5k
IHRoZW4gc25vd2VkIHVuZGVyIHdpdGggbWFpbCBldGMuDQpJIHRoaW5rIHRoaXMgaXMgYSBzbGVk
Z2VoYW1tZXIgdG8gY3JhY2sgYSBudXQuIEkgYWdyZWUgdGhhdCBYRU5WSUYgaXMgYmVpbmcgYSBn
cmFudCByZWYgaG9nLi4uIGJ1dCB0aGUgY29ycmVjdCB0aGluZyB0byBkbyB0aGVyZSBpcyB0byBy
ZS13b3JrIHRoZSBncmFudCB0YWJsZSBjYWNoZSwgbm90IHRoZSB1bmRlcmx5aW5nIHNsYWIgYWxs
b2NhdG9yOyB3aGljaCBJIHRoaW5rIGlzIGZpbmUuIFRoZSBwcm9ibGVtIGlzIChhYil1c2luZyB0
aGUgc2xhYiBhbGxvY2F0b3IncyBDdG9yIHRvIGdldCB0aGUgcmVmZXJlbmNlLiBTbyBhIGZyZWUg
bGlzdCBpbXBsZW1lbnRhdGlvbiBpcyBmaW5lLi4uIGp1c3QgaW4gdGhlIGdudHRhYiBjb2RlLCBy
YXRoZXIgdGhhbiB0aGUgY2FjaGUgY29kZS4NCg0KICAgUGF1bA0KDQoNCg0KVGhpcyBhbHNvIGhp
dHMgYW55IG90aGVyIHVzZSBvZiB0aGUgQ0FDSEUgaW50ZXJmYWNlIHdoZXJlIHRoZSBvYmplY3Qn
cyBDdG9yIGFsbG9jYXRlcyBhIHJlc291cmNlIGFuZCB0aGVyZSBhcmUgbWFueSBvYmplY3RzIGlu
IGEgc2xhYi4gWGVuVmJkJ3Mgc2VnbWVudCBjYWNoZSBhbGxvY2F0ZXMgYSBwYWdlLCB3aGljaCBj
YW4gbGVhZCB0byBmYWlsdXJlcyB3aXRoIGxhcmdlIG51bWJlciBvZiBWQkRzIChvbmUgb2Ygb3Vy
IGF1dG9tYXRlZCB0ZXN0IGNhc2VzIGZhaWxzIHdpdGggYSAweDRCIE5PX1BBR0VTX0FWQUlMQUJM
RSB3aGVuIHJ1biB3aXRoIDI1NiBWQkRzIC0gSSBjYW50IHJlbWVtYmVyIGV4YWN0bHkgaG93IG1h
bnkgVkJEcyBhcmUgcmVxdWlyZWQpLg0KDQpUaGUgYWx0ZXJuYXRpdmUgaGVyZSB3b3VsZCBiZSB0
byByZXdvcmsgdGhlIEdOVFRBQiBpbnRlcmZhY2UgdG8gdXNlIGEgZnJlZSBsaXN0IHJhdGhlciB0
aGFuIHRoZSBDQUNIRSBpbnRlcmZhY2UsIGFuZCByZXdvcmsgYW55IG90aGVyIHVzZXMgd2hlcmUg
dGhlIEN0b3IgY291bGQgYWxsb2NhdGUgc2lnbmlmaWNhbnQgcmVzb3VyY2VzIChwb3NzaWJseSB1
c2luZyBhIGxhenkgYWxsb2NhdGlvbiBvZiBtZW1vcnksIGJ1dCB0aGlzIGNvdWxkIEZpbGwgd2l0
aG91dCBlbm91Z2ggU3BpbGwgdG8gc3RpbGwgbGVhZCB0byByZXNvdXJjZSBleGhhdXN0aW9uKQ0K
DQpPd2VuDQo=


From win-pv-devel-bounces@lists.xenproject.org Mon Aug 22 08:22:24 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Aug 2022 08:22:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.391222.628946 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ2hT-0003J5-7x; Mon, 22 Aug 2022 08:22:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 391222.628946; Mon, 22 Aug 2022 08:22:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ2hT-0003Iy-5O; Mon, 22 Aug 2022 08:22:23 +0000
Received: by outflank-mailman (input) for mailman id 391222;
 Mon, 22 Aug 2022 08:22:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gLDH=Y2=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oQ2hR-0003Is-RF
 for win-pv-devel@lists.xenproject.org; Mon, 22 Aug 2022 08:22:21 +0000
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com
 [2a00:1450:4864:20::42c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8a4aa894-21f3-11ed-bd2e-47488cf2e6aa;
 Mon, 22 Aug 2022 10:22:20 +0200 (CEST)
Received: by mail-wr1-x42c.google.com with SMTP id k9so12232208wri.0
 for <win-pv-devel@lists.xenproject.org>; Mon, 22 Aug 2022 01:22:20 -0700 (PDT)
Received: from [10.7.236.13] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id
 h17-20020a05600c28d100b003a331c6bffdsm13341297wmd.47.2022.08.22.01.22.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Aug 2022 01:22:19 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a4aa894-21f3-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=QtDBc4NvkeBfvWacrG9tK4yFGZFmI45ynQ/nkwlqA+E=;
        b=RAahh/+HNJFQm6O32I+C0nJg8y4vrgjkhJOGFZcONxrISjIp26HTKJqGmE7xCs8HfU
         vz0G2lhXL7iBnuzacuEK3SwHtiXLtAB6mbkTzZYqstBtHu3D3EUFrghS3mgB0Ci3CxR9
         JO8wgblG/wIZW7tOCjgKldOXqbZogugEsGdxhptYcN/MNbIWdo6GAFyxPmpSs/40d9om
         n2fXDXkQjoa93neWP5coyZtph/nCX6HogNb6EIzmBXWuZTUO8xqAHyke7LvZ08CtGXP8
         mXVv/eiJd0rhpy936PN/ZG0gTZeWI0aEmisUKazXU3KUJeRewtP6iHhjU/2N8Zj6omrR
         6tjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=QtDBc4NvkeBfvWacrG9tK4yFGZFmI45ynQ/nkwlqA+E=;
        b=triw/rFrXn7agxDhCEhtnVZ9j7TOC8dqNsWk5HnidMU6bdhIZyHXfuW6F4qz9X8lQL
         OqbKNIW+AYqVfdCMgaWDJJkPIGpOyE2yG2g9iSZZZPROKz2Uq4jJrmyjfIXhDEr9ZiXN
         gddckGQKJSqwtWaGS+WAK4Z3JVSZIvOAktrVLgjByhlLR48YpSZqAIY11lPaVcQMZnPX
         FGPYJJByl+0ig68UIZUN6YyuLRPHdE0QqNSdMNKhqviI7cDEnWmfxk4/3OaZSovBIc9w
         OHEDFCfqk30YMKZm/cJohcgKuBbumo7QdWsf4qWZl7Pi7TBp0T1Iex8CwMs5w2XBp0pN
         ENAQ==
X-Gm-Message-State: ACgBeo1nhEIt/vo07H3Vq5FOd4HJONkkeG1mPpkrwzYQe37H4Pw/xPAb
	9Xx3R0WkBmsaDzEUnSoN95w=
X-Google-Smtp-Source: AA6agR7xXfsx41j1FfLlhtfe4EIQPb8R0T2mn9UbhwI8AjfjjtwDSey/IuUGk5tAyBuq0E0i8zQ9rA==
X-Received: by 2002:a05:6000:1c7:b0:225:4cc2:ec88 with SMTP id t7-20020a05600001c700b002254cc2ec88mr4320687wrx.298.1661156540292;
        Mon, 22 Aug 2022 01:22:20 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <7aa42036-34b0-8211-04e3-cde6f416f50c@xen.org>
Date: Mon, 22 Aug 2022 09:22:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [PATCH] Rework CACHE to use a FreeList
Content-Language: en-US
To: Owen Smith <owen.smith@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <20220819101518.389-1-owen.smith@citrix.com>
 <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
 <DS7PR03MB547756DA6D8DA6F30291CA52FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <DS7PR03MB547756DA6D8DA6F30291CA52FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 22/08/2022 08:24, Owen Smith wrote:
> 
> 
> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of Paul Durrant
> Sent: 19 August 2022 17:23
> To: win-pv-devel@lists.xenproject.org
> Subject: Re: [PATCH] Rework CACHE to use a FreeList
> 
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
> 
> On 19/08/2022 11:15, Owen Smith wrote:
>> The slab allocation method will allogate about a PAGE worth of
>> objects, and every object will be initialized. If the objects
>> initializer allocates any resources, this can result in resource
>> starvation. A particular bad example of this is the grant table cache, where a page of gnttab objects is 253 objects.
>> This is highlighted by xenvif's queues, where the receiver requires
>> 257 grant references (1 for the ring, and 256 for the ring slots)
>> which results in 2 slabs, or 506 gnttab objects, reserving 506 grant references.
>>
>> Use a FreeList to contain individual objects that are not in use. This
>> trades an increase in smaller allocations for reducing the wastage of unused objects.
>>
>> Signed-off-by: Owen Smith <owen.smith@citrix.com>
> 
> Sorry I didn't comment on the RFC; I was on PTO and then snowed under with mail etc.
> I think this is a sledgehammer to crack a nut. I agree that XENVIF is being a grant ref hog... but the correct thing to do there is to re-work the grant table cache, not the underlying slab allocator; which I think is fine. The problem is (ab)using the slab allocator's Ctor to get the reference. So a free list implementation is fine... just in the gnttab code, rather than the cache code.
> 
>     Paul
> 
> 
> 
> This also hits any other use of the CACHE interface where the object's Ctor allocates a resource and there are many objects in a slab. XenVbd's segment cache allocates a page, which can lead to failures with large number of VBDs (one of our automated test cases fails with a 0x4B NO_PAGES_AVAILABLE when run with 256 VBDs - I cant remember exactly how many VBDs are required).
> 
> The alternative here would be to rework the GNTTAB interface to use a free list rather than the CACHE interface, and rework any other uses where the Ctor could allocate significant resources (possibly using a lazy allocation of memory, but this could Fill without enough Spill to still lead to resource exhaustion)
> 

Ok, so the problem is not with the use of slabs per se; it's with the 
eager calls to the Ctor. How about, rather than constructing the entire 
slab, we construct a batch and have a separate 'constructed' and 
'allocated' masks in the control structure to track what we've done. 
When we run out of constructed objects, we construct another batch. When 
we have more than two batches free, we free up one of them. How does 
that sound?

   Paul



From win-pv-devel-bounces@lists.xenproject.org Mon Aug 22 10:13:16 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 22 Aug 2022 10:13:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.391327.629098 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ4Qk-00050j-6f; Mon, 22 Aug 2022 10:13:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 391327.629098; Mon, 22 Aug 2022 10:13:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQ4Qk-00050c-40; Mon, 22 Aug 2022 10:13:14 +0000
Received: by outflank-mailman (input) for mailman id 391327;
 Mon, 22 Aug 2022 10:13:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=RWwq=Y2=citrix.com=prvs=2261714a3=owen.smith@srs-se1.protection.inumbo.net>)
 id 1oQ4Qj-00050W-Fh
 for win-pv-devel@lists.xenproject.org; Mon, 22 Aug 2022 10:13:13 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0587de1b-2203-11ed-9250-1f966e50362f;
 Mon, 22 Aug 2022 12:13:11 +0200 (CEST)
Received: from mail-dm6nam11lp2177.outbound.protection.outlook.com (HELO
 NAM11-DM6-obe.outbound.protection.outlook.com) ([104.47.57.177])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 22 Aug 2022 06:13:04 -0400
Received: from DS7PR03MB5477.namprd03.prod.outlook.com (2603:10b6:5:2c4::17)
 by SA1PR03MB6596.namprd03.prod.outlook.com (2603:10b6:806:1cb::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.19; Mon, 22 Aug
 2022 10:13:02 +0000
Received: from DS7PR03MB5477.namprd03.prod.outlook.com
 ([fe80::fcd4:e4d8:7b9d:f45d]) by DS7PR03MB5477.namprd03.prod.outlook.com
 ([fe80::fcd4:e4d8:7b9d:f45d%3]) with mapi id 15.20.5546.022; Mon, 22 Aug 2022
 10:13:02 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0587de1b-2203-11ed-9250-1f966e50362f
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661163191;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=kXI0PmSbz84HnNd5xj8kUenWub0BNlqy/wJGh2rbqW8=;
  b=diyJhrIje8qsaVCD8T1bB0Yvt6RHV1VgPis1jlKopR71hu14mNzZ31W4
   N+BRmN4RVAiIssDq1KUR+qL1qbpL4KoW0y5Dtdjz3+ZsMhxU6ewxOtpbF
   ixeS3QLvUmoKdFK1LtSINYYMG6Jlvmu+lhLJx26J13LlH2XI05rrsZ/+P
   I=;
X-IronPort-RemoteIP: 104.47.57.177
X-IronPort-MID: 81146717
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:19oWgq8nZxVSPH0TZgcTDrUDlH+TJUtcMsCJ2f8bNWPcYEJGY0x3x
 2AbDGCCM6qJMWOmKdklYITk9kxT78OHydc2Glc6pCE8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy
 +1EN7Es+ehtFie0Si+Fa+Sn9z8kvU2xbuKUIPbePSxsThNTRi4kiBZy88Y0mYctitWia++3k
 YqaT/b3ZRn0gFaYDkpOs/jZ8EM15qyr0N8llgdWic5j7Qe2e0Y9VPrzFYnpR1PkT49dGPKNR
 uqr5NlVKUuAon/Bovv8+lrKWhViroz6ZGBiuVIPM0SWuTBQpzRa70oOHKF0hXG7Kdm+t4sZJ
 N1l7fRcQOqyV0HGsLx1vxJwS0mSMUDakVNuzLfWXcG7liX7n3XQL/pGNGwWYtI9/bxNUGhh2
 P0WLhE2RxKYmLfjqF67YrEEasULCuDOZdpallQ+iDbTALAhXIzJRLjM6ZlAxjAsi8tSHPHYI
 c0EdT5oaxeGaBpKUrsVIMtmwKH02T+iLHsB9w39SakfugA/yCR2z7XrdsHQe8CKbc5UglyZt
 iTN+GGR7hQyZIXGlWTaqy3EaunnhjPaQY8bKKaBzuMwow2cyXIeM0YXSg7uyRW+ogvkMz5FE
 GQE8yYvqKc09U+DQdz0Xhn+q3mB1jYDWtwVC/N/5AyTx6785weCGnNCXjNHcMYhtsI9WXotz
 FDhoj/yLTlmsbnQRXfD8L6R9Gq2IXJMcjBEYjIYRwwY5dWluJs0kh/EUtdkFuiyk8HxHjbzh
 TuNqUDSmokusCLC7I3jlXivvt5mjsGhotIdjukPYl+Y0w==
IronPort-HdrOrdr: A9a23:elqOHqGyCsLaIYYxpLqFVpHXdLJyesId70hD6qkvc3Fom52j/f
 xGws5x6fatskdoZJhSo6H6BEDmewKWyXcV2/hYAV7GZmXbUQSTXeVfBOfZogEIXheOj9K1tp
 0QOZSWaueAamSS5PySiGbXLz9j+qjgzEnCv5a8854Zd3AOV0gW1XYaNu/0KC1LbTgDIaB8OI
 uX58JBqTblU28QdN6HCn4MWPWGj8HXlbr9CCR2SyIP2U2rt3eF+bT6Gx+X0lM1SDVU24ov9m
 DDjkjQ+rijifem0RXRvlWjoKi+2eGRhOerNvb8yvT9GQ+cyTpAo74RGYFqiQpF4d1HLmxa1e
 Uk7S1Qe/iboEmhBF1d6SGdpjUIlgxepkMKgGXo/UfLsIj3Qik3BNFGgp8cehzF61A4tNU5y6
 5T2XmF3qAnei8osR6NkuQgbSsa4nacsD4ni6oennZfWYwRZPtYqpEe5lpcFNMFEDjh4I4qHe
 FyBIWEjcwmOG+yfjTcpC1i0dasVnM8ElOPRVUDoNWc13xTkGpix0UVycQDljML9Y47SZND++
 PYW54Y4o1mX4sTd+ZwFe0BScy4BijERg/NKnubJRD9GKQOKxv22uzKCXUOlZKXkbAzveUPcc
 76ISxlXEYJCjPTINzL2oFX+RbQR2j4VSjxy6hlluhEhoE=
X-IronPort-AV: E=Sophos;i="5.93,254,1654574400"; 
   d="scan'208";a="81146717"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mUvfDD9WmLiRaDHKxIrndofkOSLjYXMnhtnFwhwAKm5S8cenIuBnkxkI/OZGnC+ZzgMSJkLLBYTt+JLCV+OlWt9MTqcOHZ+TCf83PQYiLTh42fVaNAFMkbIRbIZ6upRx9nBqCW5SqudJsG/4g0BWn5RTORx9DT/jiDDHwfCyHyyz7/3CtSuJmxKMkXYSs23w0KaNfyAHzplkk2hhN4SB6JaxKuG0+MWBiSucHx0qjDEY79yZm+g1wZPdJKzePSiicLgt5P3mlHYYoSMMujzF/cC6ftZsDrBHfUbUNtXvo6e6jfpfIsZ56Y0zEAtLI9l+ashSzMY0aWfIYlj8otIrsQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=kXI0PmSbz84HnNd5xj8kUenWub0BNlqy/wJGh2rbqW8=;
 b=lZddKUU8hJEGapj4LDUwMIhoHbTOoguNwwSy0RnQxA6X+AgMkM9+lss/X68wcO4m+ZdaMYndulvr4SRbW6EhLJ3y/J5TXJd+MQFFoOR+Qzg8T4vMxozf2vOil/q6DxrVJQGUe0MMkcIhjhgH32gmlX86S8AFJTP04Ap2aC8ctqaroQc4L9cfajc/uNpTcs5EqwSaZ72I+8GoEMhTU0f8GvF7QpWmTHRy/7F7HWFzfn3HsYl8blW1SdbeP6lEADTWCLIbX8ldat5VGxTeuJwvuVPa5usXsk/mO52obal045fh7ZwqTg1XEVCRtRQVDuZdPX9yeiwF3Z8rZ3npX0Colw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kXI0PmSbz84HnNd5xj8kUenWub0BNlqy/wJGh2rbqW8=;
 b=UieALooZx3wSr50elVY2XPBhACISuc1lt7I0pwt5qWli/JHyWGE7ECF3c9xdpakWGk7e42B6eRdPtnYaAXQKmZ5gORp6sqCrqy62q9QDlhqkD3J/LR8wJWqwBwObPW/frlxKkfdDztYbYGkrAHcs9zmrMFWSUwmihMuGksIBclc=
From: Owen Smith <owen.smith@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: [PATCH] Rework CACHE to use a FreeList
Thread-Topic: [PATCH] Rework CACHE to use a FreeList
Thread-Index: AQHYs7Sg9Rrov4BadECgnNCp5OuXFq22aG4AgAQeHLCAABKiAIAAHi6g
Date: Mon, 22 Aug 2022 10:13:02 +0000
Message-ID:
 <DS7PR03MB54775B7D555AFFCB2D7768A7FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
References: <20220819101518.389-1-owen.smith@citrix.com>
 <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
 <DS7PR03MB547756DA6D8DA6F30291CA52FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
 <7aa42036-34b0-8211-04e3-cde6f416f50c@xen.org>
In-Reply-To: <7aa42036-34b0-8211-04e3-cde6f416f50c@xen.org>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 7e2d8042-b85d-415f-15d6-08da8426e5fb
x-ms-traffictypediagnostic: SA1PR03MB6596:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 pr8WaaWKOyh8vrgrEELlT5Jbz5pYxDdr/HujeIhgIPneZguyFbz4qAYNSGPb+ZMJc8jlSMv0Q++lvVSkHRMo/DE+mCXsHNSal9iQ5P2wdKcDvLd2OcBOA81zf4ws0zz/fyXwNTo6VrnxHmEu2mudwZX8OIAR50rzKSfRnXrWWxdkwx1F9I9+euglMQr0tx441V0T7v7WYWO7z27RGcJyL5335igmbJZ/xEkSjpsE1jUT5DK1baohpfIjDT9cfn1lbXTQ8xKkkzRkaB/uEhgaIhvG0JEqr267ltVFjCX+obs2JmY5R462D5XMUE7cG0Q/PCt7K2rAYH3nrE/T67k5tBy+ndrKlbHKVa35ffq5fCmlqs+/jXmIDNxmRMZgyOQbiez6PuIdSO8L21zFoNeox6oOW6FU+Wua83rRp5lWN/KftH15V0gHPJCa6HBjfMiSRcP0GP47qDWlkZaxumlcW05DtLjQNcq/XLXVpKMsKUekO6TUKGyedfyrJKeG69+EZ4NgvEzu94fme94PRtUGVMNy97OpXaMdpu4rXAqnODjbRL9uGxetHcC/+WkEAPCRQrizNXM4pw7ApF11qJ+1LGKCs0j1J429/4U51euDLbUdymEpyEkNIluYkykr+RCvOd/6i//2x6H5IL3DoCqJCAjtQad2LQUWjwItGh+GwbNGCYDuehwht2BZhFqL4+u/+BFB8zXmv5pzmUXqZJcfGUzqlBLK2jmlPXGlCFQ/VTfPKfQM5wSNLqB0yQD8K27fAGSnlpqtWd5OGbQIdyEVIw==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR03MB5477.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(39860400002)(366004)(346002)(136003)(376002)(122000001)(186003)(5660300002)(38100700002)(83380400001)(2906002)(82960400001)(38070700005)(71200400001)(110136005)(316002)(33656002)(52536014)(66556008)(9686003)(8936002)(76116006)(64756008)(66476007)(66946007)(44832011)(55016003)(6506007)(41300700001)(26005)(478600001)(86362001)(7696005)(53546011)(66446008)(8676002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bjVFR3dZQkFPc21HNkxZTmJ4d0ZUMzZnR1NISWJmTS9SdWFlVllpYXIxUFVD?=
 =?utf-8?B?Q0Ryc1g3a3l0OVdvNTd6Q3hFdkdrWUtVRkZ3ejg4NXpVUithT3N4QmRxbWpT?=
 =?utf-8?B?WHAvc1hOYlUyYVpQSW5hQ2ZqNWo5d0NSeTJ2M0xPRnB5TzhhZ09jc0Y5dnBj?=
 =?utf-8?B?YkpBdGJ4MXpFeTRjaXFldmw1MnMxTVNLMFdiNkJSaWtKaVlvNjJ3bGp1ek8v?=
 =?utf-8?B?YnA4dmFpMzhTUkVXMy9kZytNdmFXUjNld09XZmsydzlmd1dEZHUrMWZrOHpt?=
 =?utf-8?B?SzlyaGpoZFhneGxnRVF0MkkzQzJTT2thNzBlV3lrT1hiNVFucVdSU2x6WVFV?=
 =?utf-8?B?K1RnaHBVQWJtUk1UVjczWk9ycUJzVUF0cFhiVFpyVWRqTlVIK3lTbFF1dnBV?=
 =?utf-8?B?dHpsSURFTysrQ0VyL3d5bVJaYlVYQUVjaER4elloS1ZwWFowdHhEQ2x3VDFV?=
 =?utf-8?B?c0N6TnM0WDMxMUxNRlFRSk93ZjdydUlpVHZGUmVXL0RwMzBwYUk2dXE4aUds?=
 =?utf-8?B?bENCVDU4ek4vckpGZWkvaTdTYXRyd1ZlRnRkalMwRlJYYkdPa3Jjb0dkMDVF?=
 =?utf-8?B?b0dzTFFMcVNTRVcrNWVxNk82S2o5dEdoRmUrUzRla1ZLQ0VsVzkvYThwaXhR?=
 =?utf-8?B?dW5qbTVsaHdGVXYxRTdieFk4ZEwzZ2Jia2hzdzdLOWYycUk3TGYwMGRtakFn?=
 =?utf-8?B?UDRiWEY1djd0NVNER3BKOUYwR2RzWmhIY3d6bDViVE1YQmxEMzNGNExUVzJp?=
 =?utf-8?B?WHZXU2JZNmdnUTNobjIvRkRDbjl2ZHQ5NGE1NS9LV1RoNTB6dDkxQUFMZkU2?=
 =?utf-8?B?SzlyQlF3MDkvaDlkN2kwbDN3aG9seEF6cjQrSTV4NzZuWHRyVnlBbjAxSHJt?=
 =?utf-8?B?aUlYWVdWakplL2ZqQXFTUmY4d1Ewemt4a1hkZENpa2RQM2FIRHBrRkUyNGNy?=
 =?utf-8?B?R0NqelV0ZHp5dUdxWkZlUUwzdkR6eUN2REVjTHpUWWNDNTA0dEFuVHZoTnY2?=
 =?utf-8?B?dXJhRzJEWnZ3OGRtZmJtM2VzVjR5UTZlR212aExIakNUbXJTLysrbDVTS2JW?=
 =?utf-8?B?MzJYYUNNcUFoazk2VUZ6aFQ1aHhZSVV4YSsvT3ZwVks3N0xrTkpLQXFheVdp?=
 =?utf-8?B?eHZnTHYxRnBTR04yRERIMU5pa1FybVFBRVJWaXJibk9ma2VyMWtwdXZxdFBM?=
 =?utf-8?B?Z2M0SDV5bVk2bGNjMEpiYkROUjlxWFVXNXdiOHo3TVlPdWtRVzI1ZEFMWElz?=
 =?utf-8?B?OG9VRFlvVFJZeFhSV1E1Zkp2VUVpaVJPK0NLcnFiYWNDc1JkckRvR00weDB2?=
 =?utf-8?B?dmlWNXZNRUNoQlVrMk5rUEtMS3Zqbm53WHp3NkQ2bVNEejhsU01ocC9NOWtK?=
 =?utf-8?B?cXlsVWNrTGJxN1JxSXlzUFF0bEVQM0RNcjFTb2VRTmNyQ1l1czRaYUxGK0RS?=
 =?utf-8?B?MWM0QWViWmVWSFlCVEpMdGUzazJ0ZkVDbTZ0S2d4SlNHTFZ2U3lrZGxFUDdK?=
 =?utf-8?B?aEhDZnliSXErOGZ0V1pod0VNUzBxN043TlB5cGdpMXE4aG5jSzZ4MERwdTd0?=
 =?utf-8?B?bEc0Rzk3TWxNbDlYMVdsN0REVExYbUNTY0xxV1hzWW9xUzE2RFhPanNOMkFq?=
 =?utf-8?B?THhCU0JGVDRHR0RpK2ZJUlZwZTk2czRyZjgyU2JyT2dFU1RQcVJnWDhZNXJ3?=
 =?utf-8?B?MlVHL09XTHk4a1Z6L0NxdFEvYTdBTGwvdXZEQmU2QncvVDVrNUtTTExFbjQw?=
 =?utf-8?B?ZlpEWGEzRDBJZjh2L0pJYU85alBPdlZyRDlaMWdjWUVLR1hBcnN2QTZlQW1p?=
 =?utf-8?B?ZVFxeWN2Q0drcVd4azgwUzQyYzFBNHBjOXI3VFVlVk91dFh2T2hMRStEdHJp?=
 =?utf-8?B?ZzU4czQ0d1NmTEd6UVdnMi9GcDk5bUpJSEp6WUpwVFNxQzE3MW9aeXNsVDVY?=
 =?utf-8?B?TmRJZ3RzVHNCV1hCQ0NUanlDbW9RSi8yeUJDSXNERFE2WUxUNGJMTmllc0NY?=
 =?utf-8?B?S3Bpc2xiMStHYTRqa21FWnZsTU5ybjJxWTFabjhCYXVUbXFabWFJNkoyWmZS?=
 =?utf-8?B?ZlZ5TG5SS3ZhV0U1N3VJLzJTS3BMYk15WEQ0RW5yZG05c3IvcjNpUzh3a1pt?=
 =?utf-8?Q?JR/z9srlDNUw2DczvfljLBLfr?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DS7PR03MB5477.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7e2d8042-b85d-415f-15d6-08da8426e5fb
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Aug 2022 10:13:02.7939
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: yip5+mxLIvK2JnukgTWpFqXKZdhC2a8VDdxQGMqfTVghSf5pqoM1t17cOXLG6El/UBC6QLLZMnoRThkvQho+oQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR03MB6596

DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBQYXVsIER1cnJhbnQgPHhhZGlt
Z25pa0BnbWFpbC5jb20+IA0KU2VudDogMjIgQXVndXN0IDIwMjIgMDk6MjINClRvOiBPd2VuIFNt
aXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+OyB3aW4tcHYtZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcNClN1YmplY3Q6IFJlOiBbUEFUQ0hdIFJld29yayBDQUNIRSB0byB1c2UgYSBGcmVlTGlz
dA0KDQpbQ0FVVElPTiAtIEVYVEVSTkFMIEVNQUlMXSBETyBOT1QgcmVwbHksIGNsaWNrIGxpbmtz
LCBvciBvcGVuIGF0dGFjaG1lbnRzIHVubGVzcyB5b3UgaGF2ZSB2ZXJpZmllZCB0aGUgc2VuZGVy
IGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQoNCk9uIDIyLzA4LzIwMjIgMDg6MjQsIE93
ZW4gU21pdGggd3JvdGU6DQo+IA0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g
RnJvbTogd2luLXB2LWRldmVsIDx3aW4tcHYtZGV2ZWwtYm91bmNlc0BsaXN0cy54ZW5wcm9qZWN0
Lm9yZz4gT24gDQo+IEJlaGFsZiBPZiBQYXVsIER1cnJhbnQNCj4gU2VudDogMTkgQXVndXN0IDIw
MjIgMTc6MjMNCj4gVG86IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZw0KPiBTdWJq
ZWN0OiBSZTogW1BBVENIXSBSZXdvcmsgQ0FDSEUgdG8gdXNlIGEgRnJlZUxpc3QNCj4gDQo+IFtD
QVVUSU9OIC0gRVhURVJOQUwgRU1BSUxdIERPIE5PVCByZXBseSwgY2xpY2sgbGlua3MsIG9yIG9w
ZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBoYXZlIHZlcmlmaWVkIHRoZSBzZW5kZXIgYW5kIGtu
b3cgdGhlIGNvbnRlbnQgaXMgc2FmZS4NCj4gDQo+IE9uIDE5LzA4LzIwMjIgMTE6MTUsIE93ZW4g
U21pdGggd3JvdGU6DQo+PiBUaGUgc2xhYiBhbGxvY2F0aW9uIG1ldGhvZCB3aWxsIGFsbG9nYXRl
IGFib3V0IGEgUEFHRSB3b3J0aCBvZiANCj4+IG9iamVjdHMsIGFuZCBldmVyeSBvYmplY3Qgd2ls
bCBiZSBpbml0aWFsaXplZC4gSWYgdGhlIG9iamVjdHMgDQo+PiBpbml0aWFsaXplciBhbGxvY2F0
ZXMgYW55IHJlc291cmNlcywgdGhpcyBjYW4gcmVzdWx0IGluIHJlc291cmNlIA0KPj4gc3RhcnZh
dGlvbi4gQSBwYXJ0aWN1bGFyIGJhZCBleGFtcGxlIG9mIHRoaXMgaXMgdGhlIGdyYW50IHRhYmxl
IGNhY2hlLCB3aGVyZSBhIHBhZ2Ugb2YgZ250dGFiIG9iamVjdHMgaXMgMjUzIG9iamVjdHMuDQo+
PiBUaGlzIGlzIGhpZ2hsaWdodGVkIGJ5IHhlbnZpZidzIHF1ZXVlcywgd2hlcmUgdGhlIHJlY2Vp
dmVyIHJlcXVpcmVzDQo+PiAyNTcgZ3JhbnQgcmVmZXJlbmNlcyAoMSBmb3IgdGhlIHJpbmcsIGFu
ZCAyNTYgZm9yIHRoZSByaW5nIHNsb3RzKSANCj4+IHdoaWNoIHJlc3VsdHMgaW4gMiBzbGFicywg
b3IgNTA2IGdudHRhYiBvYmplY3RzLCByZXNlcnZpbmcgNTA2IGdyYW50IHJlZmVyZW5jZXMuDQo+
Pg0KPj4gVXNlIGEgRnJlZUxpc3QgdG8gY29udGFpbiBpbmRpdmlkdWFsIG9iamVjdHMgdGhhdCBh
cmUgbm90IGluIHVzZS4gDQo+PiBUaGlzIHRyYWRlcyBhbiBpbmNyZWFzZSBpbiBzbWFsbGVyIGFs
bG9jYXRpb25zIGZvciByZWR1Y2luZyB0aGUgd2FzdGFnZSBvZiB1bnVzZWQgb2JqZWN0cy4NCj4+
DQo+PiBTaWduZWQtb2ZmLWJ5OiBPd2VuIFNtaXRoIDxvd2VuLnNtaXRoQGNpdHJpeC5jb20+DQo+
IA0KPiBTb3JyeSBJIGRpZG4ndCBjb21tZW50IG9uIHRoZSBSRkM7IEkgd2FzIG9uIFBUTyBhbmQg
dGhlbiBzbm93ZWQgdW5kZXIgd2l0aCBtYWlsIGV0Yy4NCj4gSSB0aGluayB0aGlzIGlzIGEgc2xl
ZGdlaGFtbWVyIHRvIGNyYWNrIGEgbnV0LiBJIGFncmVlIHRoYXQgWEVOVklGIGlzIGJlaW5nIGEg
Z3JhbnQgcmVmIGhvZy4uLiBidXQgdGhlIGNvcnJlY3QgdGhpbmcgdG8gZG8gdGhlcmUgaXMgdG8g
cmUtd29yayB0aGUgZ3JhbnQgdGFibGUgY2FjaGUsIG5vdCB0aGUgdW5kZXJseWluZyBzbGFiIGFs
bG9jYXRvcjsgd2hpY2ggSSB0aGluayBpcyBmaW5lLiBUaGUgcHJvYmxlbSBpcyAoYWIpdXNpbmcg
dGhlIHNsYWIgYWxsb2NhdG9yJ3MgQ3RvciB0byBnZXQgdGhlIHJlZmVyZW5jZS4gU28gYSBmcmVl
IGxpc3QgaW1wbGVtZW50YXRpb24gaXMgZmluZS4uLiBqdXN0IGluIHRoZSBnbnR0YWIgY29kZSwg
cmF0aGVyIHRoYW4gdGhlIGNhY2hlIGNvZGUuDQo+IA0KPiAgICAgUGF1bA0KPiANCj4gDQo+IA0K
PiBUaGlzIGFsc28gaGl0cyBhbnkgb3RoZXIgdXNlIG9mIHRoZSBDQUNIRSBpbnRlcmZhY2Ugd2hl
cmUgdGhlIG9iamVjdCdzIEN0b3IgYWxsb2NhdGVzIGEgcmVzb3VyY2UgYW5kIHRoZXJlIGFyZSBt
YW55IG9iamVjdHMgaW4gYSBzbGFiLiBYZW5WYmQncyBzZWdtZW50IGNhY2hlIGFsbG9jYXRlcyBh
IHBhZ2UsIHdoaWNoIGNhbiBsZWFkIHRvIGZhaWx1cmVzIHdpdGggbGFyZ2UgbnVtYmVyIG9mIFZC
RHMgKG9uZSBvZiBvdXIgYXV0b21hdGVkIHRlc3QgY2FzZXMgZmFpbHMgd2l0aCBhIDB4NEIgTk9f
UEFHRVNfQVZBSUxBQkxFIHdoZW4gcnVuIHdpdGggMjU2IFZCRHMgLSBJIGNhbnQgcmVtZW1iZXIg
ZXhhY3RseSBob3cgbWFueSBWQkRzIGFyZSByZXF1aXJlZCkuDQo+IA0KPiBUaGUgYWx0ZXJuYXRp
dmUgaGVyZSB3b3VsZCBiZSB0byByZXdvcmsgdGhlIEdOVFRBQiBpbnRlcmZhY2UgdG8gdXNlIGEg
DQo+IGZyZWUgbGlzdCByYXRoZXIgdGhhbiB0aGUgQ0FDSEUgaW50ZXJmYWNlLCBhbmQgcmV3b3Jr
IGFueSBvdGhlciB1c2VzIA0KPiB3aGVyZSB0aGUgQ3RvciBjb3VsZCBhbGxvY2F0ZSBzaWduaWZp
Y2FudCByZXNvdXJjZXMgKHBvc3NpYmx5IHVzaW5nIGEgDQo+IGxhenkgYWxsb2NhdGlvbiBvZiBt
ZW1vcnksIGJ1dCB0aGlzIGNvdWxkIEZpbGwgd2l0aG91dCBlbm91Z2ggU3BpbGwgdG8gDQo+IHN0
aWxsIGxlYWQgdG8gcmVzb3VyY2UgZXhoYXVzdGlvbikNCj4gDQoNCk9rLCBzbyB0aGUgcHJvYmxl
bSBpcyBub3Qgd2l0aCB0aGUgdXNlIG9mIHNsYWJzIHBlciBzZTsgaXQncyB3aXRoIHRoZSBlYWdl
ciBjYWxscyB0byB0aGUgQ3Rvci4gSG93IGFib3V0LCByYXRoZXIgdGhhbiBjb25zdHJ1Y3Rpbmcg
dGhlIGVudGlyZSBzbGFiLCB3ZSBjb25zdHJ1Y3QgYSBiYXRjaCBhbmQgaGF2ZSBhIHNlcGFyYXRl
ICdjb25zdHJ1Y3RlZCcgYW5kICdhbGxvY2F0ZWQnIG1hc2tzIGluIHRoZSBjb250cm9sIHN0cnVj
dHVyZSB0byB0cmFjayB3aGF0IHdlJ3ZlIGRvbmUuIA0KV2hlbiB3ZSBydW4gb3V0IG9mIGNvbnN0
cnVjdGVkIG9iamVjdHMsIHdlIGNvbnN0cnVjdCBhbm90aGVyIGJhdGNoLiBXaGVuIHdlIGhhdmUg
bW9yZSB0aGFuIHR3byBiYXRjaGVzIGZyZWUsIHdlIGZyZWUgdXAgb25lIG9mIHRoZW0uIEhvdyBk
b2VzIHRoYXQgc291bmQ/DQoNCiAgIFBhdWwNCg0KDQpZZXMsIGlmIEN0b3JzIGFyZSB0b28gZWFn
ZXIgaW4gYWxsb2NhdGluZyBmaW5pdGUgcmVzb3VyY2VzLCB0aGV5IHRlbmQgdG8gZXhoYXVzdCBy
ZXNvdXJjZXMgdG9vIHF1aWNrbHkuIEkgZGlkIGxvb2sgYXQgbGF6eSBpbml0aWFsaXphdGlvbiBp
biB0aGUgQ2FjaGUsIGJ1dCBoYXZlbuKAmXQgZ290IHRvbyBmYXIgeWV0LCBhbmQgaXQgbGlrZWx5
IHdpbGwgbmVlZCBhIG5ldyBDYWNoZSBpbnRlcmZhY2UgdmVyc2lvbiB0byBwYXNzIHRoZSBzdGVw
LXNpemUNCg0KT3dlbg0K


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 23 08:17:23 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 23 Aug 2022 08:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.391746.629692 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQP6A-0002xm-Fs; Tue, 23 Aug 2022 08:17:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 391746.629692; Tue, 23 Aug 2022 08:17:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQP6A-0002xf-Cz; Tue, 23 Aug 2022 08:17:22 +0000
Received: by outflank-mailman (input) for mailman id 391746;
 Tue, 23 Aug 2022 08:17:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=taIv=Y3=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oQP69-0002xZ-SB
 for win-pv-devel@lists.xenproject.org; Tue, 23 Aug 2022 08:17:21 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 01ecf467-22bc-11ed-bd2e-47488cf2e6aa;
 Tue, 23 Aug 2022 10:17:20 +0200 (CEST)
Received: by mail-wr1-x435.google.com with SMTP id n4so16007888wrp.10
 for <win-pv-devel@lists.xenproject.org>; Tue, 23 Aug 2022 01:17:20 -0700 (PDT)
Received: from [10.7.236.13] ([54.239.6.185]) by smtp.gmail.com with ESMTPSA id
 c188-20020a1c35c5000000b003a5f4fccd4asm20171734wma.35.2022.08.23.01.17.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Aug 2022 01:17:19 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01ecf467-22bc-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=p0+7LX7Gtqzy8fDv4tNytYYqKvR3QVY0OTLJU1BN6tY=;
        b=JClKO8/Ktz6/Y+YJHxTT5204UsNtlKZxuvvvSALN/tn6fYuTJCUlEoaCRy02fsQXcr
         6n8RVXnOhdi6H+9qyxkWdcHZv8CCQfJHRog4c7mpmA5QDjPZjc0e+qkVSjBkz6GVCQ3y
         aLzjcoiAj3VN8Ko9swugAKmgvxBYX+8FLmRR1n67Hmrn4ZOMhWhCo854/DpXlCuVqr38
         M+d0Iv0XgRFa0RxHCkGG3wFIk3trTbkBcHnSa/0uodE72rttXAPAwrWjT7iQgenI92VE
         nm011XHnJcXpoMu6HX5EDT/pOCtNUjj13OKyGyKWHc5lz7SInfYPX9zxWjVrNMghOhTJ
         01YA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=p0+7LX7Gtqzy8fDv4tNytYYqKvR3QVY0OTLJU1BN6tY=;
        b=G04j0s3cmW3f2QeQta5+/lpWThFKvcJ32aXWEtFMxFOCWe5UQD1u1B/IeOaqHEBOP6
         XYXhN1YGguavryLloF6iVh4qVh0IS9pOt3c9ih1UB0p7986/AVzkaciixe8FnHFyvMgY
         BME3aigTUdbqH8jNnvG62oyhoiHW1Dz4+XRDXwO3Vi6jPSXo0Zqo6T62uGC4aeh0Yyqj
         Fg2WCR7cumkWxGm1fsRMB+UrgvMMzRRIc7XxBle6zr4TAVTU4wVtbImM8cOX/CI0unNG
         qCh2egFmk67qjLSRaxJDRN/Yy6ZnhGhUq4aNc7dnFfonhTH7xjjOowRXjEc8sQSkc51T
         zktA==
X-Gm-Message-State: ACgBeo2zC+OmTLwn0xA2pdiSOJWHBKMIocxkE1wxVH7O8tTrhR61+4CQ
	W9HLyYja+VlYx5MHi7pUKYqbtIcdrFzFxidj
X-Google-Smtp-Source: AA6agR4HyMtfgDO8cmmDSyvNKavqfnPjMAYkzJBOx/IkRbd9BI8p4pQx54wuS/QMHuVg0PZ2+HOI+w==
X-Received: by 2002:a5d:5269:0:b0:225:4fa6:6b03 with SMTP id l9-20020a5d5269000000b002254fa66b03mr6187126wrc.163.1661242639663;
        Tue, 23 Aug 2022 01:17:19 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <b13c4010-63b7-a190-a51a-178ccb4d1487@xen.org>
Date: Tue, 23 Aug 2022 09:17:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [PATCH] Rework CACHE to use a FreeList
Content-Language: en-US
To: Owen Smith <owen.smith@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <20220819101518.389-1-owen.smith@citrix.com>
 <87c9f3f0-432e-5d24-b7c7-4ff5e2f60250@gmail.com>
 <DS7PR03MB547756DA6D8DA6F30291CA52FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
 <7aa42036-34b0-8211-04e3-cde6f416f50c@xen.org>
 <DS7PR03MB54775B7D555AFFCB2D7768A7FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <DS7PR03MB54775B7D555AFFCB2D7768A7FE719@DS7PR03MB5477.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 22/08/2022 11:13, Owen Smith wrote:
> 
> 
> -----Original Message-----
> From: Paul Durrant <xadimgnik@gmail.com>
> Sent: 22 August 2022 09:22
> To: Owen Smith <owen.smith@citrix.com>; win-pv-devel@lists.xenproject.org
> Subject: Re: [PATCH] Rework CACHE to use a FreeList
> 
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
> 
> On 22/08/2022 08:24, Owen Smith wrote:
>>
>>
>> -----Original Message-----
>> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On
>> Behalf Of Paul Durrant
>> Sent: 19 August 2022 17:23
>> To: win-pv-devel@lists.xenproject.org
>> Subject: Re: [PATCH] Rework CACHE to use a FreeList
>>
>> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
>>
>> On 19/08/2022 11:15, Owen Smith wrote:
>>> The slab allocation method will allogate about a PAGE worth of
>>> objects, and every object will be initialized. If the objects
>>> initializer allocates any resources, this can result in resource
>>> starvation. A particular bad example of this is the grant table cache, where a page of gnttab objects is 253 objects.
>>> This is highlighted by xenvif's queues, where the receiver requires
>>> 257 grant references (1 for the ring, and 256 for the ring slots)
>>> which results in 2 slabs, or 506 gnttab objects, reserving 506 grant references.
>>>
>>> Use a FreeList to contain individual objects that are not in use.
>>> This trades an increase in smaller allocations for reducing the wastage of unused objects.
>>>
>>> Signed-off-by: Owen Smith <owen.smith@citrix.com>
>>
>> Sorry I didn't comment on the RFC; I was on PTO and then snowed under with mail etc.
>> I think this is a sledgehammer to crack a nut. I agree that XENVIF is being a grant ref hog... but the correct thing to do there is to re-work the grant table cache, not the underlying slab allocator; which I think is fine. The problem is (ab)using the slab allocator's Ctor to get the reference. So a free list implementation is fine... just in the gnttab code, rather than the cache code.
>>
>>      Paul
>>
>>
>>
>> This also hits any other use of the CACHE interface where the object's Ctor allocates a resource and there are many objects in a slab. XenVbd's segment cache allocates a page, which can lead to failures with large number of VBDs (one of our automated test cases fails with a 0x4B NO_PAGES_AVAILABLE when run with 256 VBDs - I cant remember exactly how many VBDs are required).
>>
>> The alternative here would be to rework the GNTTAB interface to use a
>> free list rather than the CACHE interface, and rework any other uses
>> where the Ctor could allocate significant resources (possibly using a
>> lazy allocation of memory, but this could Fill without enough Spill to
>> still lead to resource exhaustion)
>>
> 
> Ok, so the problem is not with the use of slabs per se; it's with the eager calls to the Ctor. How about, rather than constructing the entire slab, we construct a batch and have a separate 'constructed' and 'allocated' masks in the control structure to track what we've done.
> When we run out of constructed objects, we construct another batch. When we have more than two batches free, we free up one of them. How does that sound?
> 
>     Paul
> 
> 
> Yes, if Ctors are too eager in allocating finite resources, they tend to exhaust resources too quickly. I did look at lazy initialization in the Cache, but haven’t got too far yet, and it likely will need a new Cache interface version to pass the step-size
> 

I can take a look over the next few days; shouldn't be too much churn in 
the code.

   Paul




From win-pv-devel-bounces@lists.xenproject.org Wed Aug 24 15:31:46 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 24 Aug 2022 15:31:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.392850.631453 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQsM5-0005HR-Iz; Wed, 24 Aug 2022 15:31:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 392850.631453; Wed, 24 Aug 2022 15:31:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oQsM5-0005HJ-Fl; Wed, 24 Aug 2022 15:31:45 +0000
Received: by outflank-mailman (input) for mailman id 392850;
 Wed, 24 Aug 2022 15:31:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+HQJ=Y4=citrix.com=prvs=2286ed837=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oQsM3-0005HB-VV
 for win-pv-devel@lists.xenproject.org; Wed, 24 Aug 2022 15:31:44 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d8fc7a4d-23c1-11ed-bd2e-47488cf2e6aa;
 Wed, 24 Aug 2022 17:31:42 +0200 (CEST)
Received: from mail-dm6nam04lp2049.outbound.protection.outlook.com (HELO
 NAM04-DM6-obe.outbound.protection.outlook.com) ([104.47.73.49])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 24 Aug 2022 11:31:17 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by DS7PR03MB5624.namprd03.prod.outlook.com (2603:10b6:5:2d1::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5546.16; Wed, 24 Aug
 2022 15:31:14 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.015; Wed, 24 Aug 2022
 15:31:14 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8fc7a4d-23c1-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661355102;
  h=from:to:subject:date:message-id:mime-version;
  bh=ZwIwpguzNCUG2hNmWoulvBQILNq086xNIrxoBCTIlGM=;
  b=YMyPCZ4rZISlOOCHR3cYI822MNbixYS1BTLHL+w2+DQfTw/L/Q/fiMVt
   jFGNeaYVf+PEV+XgvESsCQi/ofcgeVZNT1ZeSzHqgZatVFF/9P9UIbQRo
   7/SXFS9OimkG9e0gjbycg+gviDnh4idC2wp3UK9Sc03mM2/Tvrpy78xIF
   U=;
X-IronPort-RemoteIP: 104.47.73.49
X-IronPort-MID: 81367923
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:OzBFO68grtnpfA7+HWCpDrUD+n+TJUtcMsCJ2f8bNWPcYEJGY0x3z
 WofUWyEb/+NY2fwed9yaNjl8k0Hu5aAn9ZhQFBkpSs8E34SpcT7XtnIdU2Y0wF+jyHgoOCLy
 +1EN7Es+ehtFie0Si+Fa+Sn9z8kvU2xbuKUIPbePSxsThNTRi4kiBZy88Y0mYctitWia++3k
 YqaT/b3ZRn0gFaYDkpOs/jZ8EM14Kyr0N8llgdWic5j7Qe2e0Y9VPrzFYnpR1PkT49dGPKNR
 uqr5NlVKUuAon/Bovv8+lrKWhViroz6ZGBiuVIPM0SWuTBQpzRa70oOHKF0hXG7Kdm+t4sZJ
 N1l7fRcQOqyV0HGsLx1vxJwS0mSMUDakVNuzLfWXcG7liX7n3XQL/pGF3sUbLNE+P5OEEpf5
 +VbNjc/TzC5mLfjqF67YrEEasULCuDOZN9allQ+iDbTALAhXIzJRLjM6ZlAxjAsi8tSHPHYI
 c0EdT5oaxeGaBpKUrsVIMtmwKH02T+gKHsE+Tp5poJui4TX5Al4yqTsNpzVc8aUSNR9lUeEv
 GPWuW/+B3n2MfTPkGHbrSP23YcjmwvcWrgjFuaf78dho0KaxkUcBy0vCleC9KzRZkmWHog3x
 1Yv0jUvq+0q6gmnQ8fwWzW8oWWYpVgMVtxICeo45QqRjK3O7G6k6nMsSzdAbJkqsZEwTDlyi
 luRxYu1VHporaGfTm+b+vGMtzSuNCMJLGgEIygZUQ8C5Nqlq4Y25v7Scute/GeOpoWdMVnNL
 /qi9nNWa2k75SLT65iGwA==
IronPort-HdrOrdr: A9a23:x9Bbe6uiCEv/lbdWjMBdm3kG7skC+oMji2hC6mlwRA09TyXGra
 2TdaUgvyMc1gx7ZJh5o6HnBEDyewKkyXcV2/hmAV7GZmXbUQSTXeVfBOfZogEIeBeOv9K1t5
 0QFJSWYeeYZTcVsS+Q2njaLz9U+qjjzEnev5a9854Cd2FXQpAlyz08JheQE0VwSgUDL4E+Do
 Cg6s1OoCflUWgLb+ygb0N1FNTrlpnurtbLcBQGDxko5E2lljWz8oP3FBCew1M3Ty5P+7E/6m
 LI+jaJrJlL8svLhyM05VWjoKi+q+GRhOerw/b8y/T9Hw+cxjpAor4RG4Fq8gpF491Ho2xa6O
 Uk6y1QRPibrUmhNl1d6CGdoTXIwXIg7WTvxkSfhmamqcvlRCgiA84Eno5BdADFgnBQye2U/Z
 g7rF5xjaAnfy/ojWD4/ZzFRhtqnk27rT4rlvMSlWVWVc8bZKVKpYIS8UtJGNNYdRiKn7wPAa
 1rFoXR9fxWeVSVYzTQuXRu2sWlWjA2Eg2dSkYPt8SJ23xdnWx/zUEf2MsD901wgK4VWt1B/a
 DJI65onLZBQosfar98Hv4IRY+tBmnEUXv3QRKvyJTcZdA60l722uLKCe8OlZyXkbQzveQPsY
 WEVk9EvmgvfE+rAdGS3fRwg27wfFk=
X-IronPort-AV: E=Sophos;i="5.93,260,1654574400"; 
   d="scan'208,217";a="81367923"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ntv539YFPcGcuCdsHAqlx/4RU+pHbTshXbFqCOo3ByLU2CsFn6MPAucU1BRSK5Spov05eBvT0Ti3TJd+3XPNC8UNYqD5c2RCWQPNyQQ1RxtLzm033WuDvqHdzxq0VtIViJxE5td8uN99koWSYCwVKmB2ydDCUQGk8z3jdTefpT5gMPeJ9DIrWghKa9qhgOM/cbefoszXv0VF0ewH/blnAHeVd5WNgXHJzWq5CVl815eyvTtHuSuX40ESFc4J3cVd667Wor2p2ml5dRgdemA1A5LKEQ8fuxni80yHC5QK8vBvFj1N2PoSDMQcNWpvKuHEQD79H2CdERW/NujF3Zsp7w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=4iO8bbm8ywO3S547bc3rH2FJemXuZDpFSGyUG2+UcRY=;
 b=CsIE0/FbwoqkMwfEwAZE8hRh7abDkGYDubkbymV9fLqZW1xS531jOPuodOVAtoQn8tZ6BCJ5qZjF5fXME6ym+0MTqbcl3wxn1r/vJNifLW94qpqo1yqfaeBqsVWMCy0VPh9Vc9uPtoHdv6E8orgBePCpBIon8Tm0muu7gryUusNVXSFcKkvPlDApHennOG2mk5SjPxRZdM9LdtGdRxHU/5frrzlx5noxTE74AETNBz1MZoY5QVVNV4dzv2rPa4lAcOzvVc5ml+ehLlUmLtvrlKEPSaJks5MltCBzQ0PIfob6sS8ibtVD44IH8FkYnst1hzlW0Xg0Xs8Cxk95SVTyAg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4iO8bbm8ywO3S547bc3rH2FJemXuZDpFSGyUG2+UcRY=;
 b=pUXlyTMLRGu58s5TONYkjetCJXO7x00w8cz1dpwD7zYkPMObxs4n56x6s3KAvqQpZejX1u2u+u2AissfN2Bs7/VI7mQL1NK+f6DxTrllW+77A3uU1Q85DW2pZ6aj8qI1XnHgy/zRFz+3NUV/0/GNWhe0KICoxQWLxQ8xm6WUQSU=
From: Martin Harvey <martin.harvey@citrix.com>
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: [RFC] Design changes for bidirectional interface compatibility.
Thread-Topic: [RFC] Design changes for bidirectional interface compatibility.
Thread-Index: Adi3zfZIeioY1WCfTXGZlPfbnnICHQ==
Date: Wed, 24 Aug 2022 15:31:14 +0000
Message-ID:
 <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a1d39cbd-da2d-4e2a-8955-08da85e5ae31
x-ms-traffictypediagnostic: DS7PR03MB5624:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 uW+HriYz022D7Xjkw+G6B46YVKX34u49OmgwksKrhU2GfKye+/teCrn7WUm9eDp9fDAjy7xjnSukfG3elcIRmYkz3E4kKJfRao55MartXuPo/DQsd21EsOLs+ffoj1VXTt9YHs1YQdqSZe0/unhpa1aQNjbnbhV+HehlzB7SO3QbXTI1iACHChY8e9qgA7VULiRC6+lYXDylz4XVL330nuU0VxLzWYGvcss7TOFq4solQkXMF2jmDo4KnlmzGsdBTqS8dIhVS/oGx/fkIHlDFjjJOcfPgqBeLGuxLwQ+r/bJBDkKPdqO8Op4G+5QYqajZYvlUUKyl6U/Fs3702ighdw0PHlDY4gRdsJY0qZDhYHVSEOmtp78WgjsBuexWbjIqn9FApyOFfrAo0jmBGvUyjlXVhLV2DMNeC1wH6Er0pwx2pVLYQmznL91Z4zIV5g0eZKFe/Me14zw/R9oR3E36CgB/XvbSRGwEVwoJf7NhExYOwlSYQVqCvEJ+pibDt5d12fAPcv9OGpQfggKtVGBO8kZI167+PEx6JI6bAAJepw17D1fokk/A0AanICw0SuR9E7jbOOe+61OqPaecdi6dYXf/aHEWrkosWKfGw9jZZDbDxqXCbvVK0lJzaVl2fd6/3fGCF/Oj+t+YhoKAllJtBMNNh98JMkGB/arjcbrYEF2GNP4AGwWQeZuluIvcjePJmabqrkkrlhQOqFEoMZQ7ByfPROTcCG9hL2+rXkW6+XP/A9/63SGEMlr04Z/09LK2WDCD2iS2t123u6VbaBB/QdAklFUWhfuHEcSdB7RCmE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(376002)(366004)(136003)(396003)(39860400002)(66556008)(2906002)(8676002)(55016003)(5660300002)(66476007)(64756008)(6506007)(66946007)(76116006)(66446008)(9686003)(41300700001)(26005)(316002)(7696005)(71200400001)(966005)(33656002)(6916009)(478600001)(38070700005)(166002)(52536014)(186003)(86362001)(82960400001)(4744005)(122000001)(44832011)(38100700002)(83380400001)(8936002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?HxnxpK4WUHDVhubg+a3rSHtAc87zQTg8WsI+nfOWRPdMBCDXX2HM65prWLEE?=
 =?us-ascii?Q?nC49iChl8CMWBsjsC3Caa5TftHKANc0DZwFzuliAwfGVmVNp9lhmwGPhvhDe?=
 =?us-ascii?Q?bL7qZ3+X1s0jfgmooA11HBmJVBXcDUn9xNuQ3fgrfGnz8krQQdGqD5T1YG4o?=
 =?us-ascii?Q?kJzIlpDNAWdF+EVx2g0KR86egiZ4ZZouTLfAB5LORQRgJKammmf/enOuUcMp?=
 =?us-ascii?Q?oVvMnNfQu+vEtcIDbXwm4NApQlg4yzsoz35HfBSDS+AlWL8rPK3ILh+L78hb?=
 =?us-ascii?Q?dKyplB70rQnQ+G+noMbzmEC6epwJap1Aqrn/SP3DTalmkDsremfjT54MaX4d?=
 =?us-ascii?Q?xcf9hDtNWjUvetSR7zj0PMhKCoh6K5wNhgm/tadNKMjNXCRrN2HXYPdX7w1y?=
 =?us-ascii?Q?9fOmsU0Xfemr7ya6S8AMj1c0oHHLz8lxG5fZsmY91AcBEQcv/9pPxMtPMZCE?=
 =?us-ascii?Q?49o9IAJZzjlhxr4GFOKn4P/Ov8l1Hhcd6liXfIWNVRoW6MpIQe2knO5UIxzs?=
 =?us-ascii?Q?jK9zKjCKqnuZWrnPACMaj6PR0YcQ5r7CMPmwHVV5vxBWT9S6CDnJJ+0hBk0F?=
 =?us-ascii?Q?PfgKten2EBW7vFBb4DvQUTczmdoI9uTgArE70lpzIlzB6vRH4fTJfFhBdgma?=
 =?us-ascii?Q?OIO04TinGIZE6GauSpa2hRy5/PaHVVvbf09QjhcFkB1AJhow0g2saauZ399X?=
 =?us-ascii?Q?Q0Mmaf9QVuxGtLgnlG33hjTanhbRv51vJnVJroKBbMasvd0q4jpCGUCymN+5?=
 =?us-ascii?Q?afjJToPPxrea4YW2Y1bDKL42PrxTpljFJF0IifMoBwCwoRGc1dYJ73AIvrpH?=
 =?us-ascii?Q?fjfEXl62uyUR2TURw0zFbfTJvRcEV/4brzDtZeD2uPpbUoFgCOPFfSyvGJcY?=
 =?us-ascii?Q?GF5E4kcQNg2cU6RlM64fD7J42aZQG93ZLRgOVWxgV1in/vnXYDkfaAsjBYjD?=
 =?us-ascii?Q?ezwYBo5JYgONkiHqN7fTZIqRD30+k+Uoza2k4AhGNSzpH2xvHT5qb3UnXvMd?=
 =?us-ascii?Q?wLWEe3PKwMeYsUKPY59E5Il1nD+COAwHYhSBwNfx5ta30sWU8i96P9Xtw09a?=
 =?us-ascii?Q?dCjEXSWvUjIrLkE4XcxTzkSOyJztoOSK44q2crx7A8YJlBwL3YJ+B2taNfqE?=
 =?us-ascii?Q?xEy/fnGXtkLZip3N1mD05T/T8fkPurniZap5JWbz0ewlmvY9R+6oAYk2V195?=
 =?us-ascii?Q?V99oU4sUlUpN0b7smVyinylq7Alc3bwtrQy5YcT3oc48Y+9ZfHm6h0a20EwT?=
 =?us-ascii?Q?5OMbOemzRxPGF9y9MeqzyVpJl8K22I+MSdmugJqjmX4xJA8Kc3YTOARKFoxr?=
 =?us-ascii?Q?P2YbiJBYNsEc5XgQVVPR6pj6m/izbbVpCJRNO0HeCodSROa/XOWVTvR14O0i?=
 =?us-ascii?Q?4qAPVsRl5il64b2eFMnBrjqxEa3lkaT2YS+1dAN6YVmkQQ0N4qSTcJnt22RE?=
 =?us-ascii?Q?n+zu1Cz82QCyZiuFSOXDo6K9cMuvz7oeutk/OjfjmbJaNnoLvfhoW9Q3oifz?=
 =?us-ascii?Q?Q54GBnN7oTOqgtW6b4eounQJWpOB3u18c8WLUE2i8PsM0iznkUljNW/F69D6?=
 =?us-ascii?Q?mQr65HTQ0r/RHHGlnIuXnVS3GsHkY+e94lYacGlm?=
Content-Type: multipart/alternative;
	boundary="_000_MW4PR03MB634774846BCA873EF7B623209A739MW4PR03MB6347namp_"
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a1d39cbd-da2d-4e2a-8955-08da85e5ae31
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Aug 2022 15:31:14.2364
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: JZVICheZf3km0Fp664TI67QiiHMg6/HGuK5Z1vAQwxVcjiELatRxUEpia6WsyfBn1x0CroGTDeyVwQvHe+J2/xTvvKM/g+e7dSoCVOh38WM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR03MB5624

--_000_MW4PR03MB634774846BCA873EF7B623209A739MW4PR03MB6347namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


I have a request for comments on some design changes which would considerab=
ly ease our support load, and work towards solving VM upgrade issues with P=
V drivers installed. Since it was originally a wiki, I've had to convert it=
 to PDF, which I hope is a format that most readers of this list find accep=
table.

Design doc v1 in PDF format:

https://citrix.sharefile.com/d-s722cae4e280f4148ae689f972a2cea10

Paul, there is further documentation concerning details of shortcomings of =
the current system which I shall send to you separately.

MH.

--_000_MW4PR03MB634774846BCA873EF7B623209A739MW4PR03MB6347namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:DengXian;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@DengXian";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-GB" link=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I have a request for comments on some design changes=
 which would considerably ease our support load, and work towards solving V=
M upgrade issues with PV drivers installed. Since it was originally a wiki,=
 I&#8217;ve had to convert it to PDF, which
 I hope is a format that most readers of this list find acceptable.<o:p></o=
:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Design doc v1 in PDF format:<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><a href=3D"https://citrix.sharefile.com/d-s722cae4e2=
80f4148ae689f972a2cea10">https://citrix.sharefile.com/d-s722cae4e280f4148ae=
689f972a2cea10</a><o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Paul, there is further documentation concerning deta=
ils of shortcomings of the current system which I shall send to you separat=
ely.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">MH.<o:p></o:p></p>
</div>
</body>
</html>

--_000_MW4PR03MB634774846BCA873EF7B623209A739MW4PR03MB6347namp_--


From win-pv-devel-bounces@lists.xenproject.org Fri Aug 26 14:26:04 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Aug 2022 14:26:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.393917.633129 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oRaHa-0006HN-0Q; Fri, 26 Aug 2022 14:26:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 393917.633129; Fri, 26 Aug 2022 14:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oRaHZ-0006HG-Tp; Fri, 26 Aug 2022 14:26:01 +0000
Received: by outflank-mailman (input) for mailman id 393917;
 Fri, 26 Aug 2022 14:26:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/MF6=Y6=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oRaHX-0006Gr-Kr
 for win-pv-devel@lists.xenproject.org; Fri, 26 Aug 2022 14:26:00 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ff054417-254a-11ed-9250-1f966e50362f;
 Fri, 26 Aug 2022 16:25:58 +0200 (CEST)
Received: by mail-wm1-x32f.google.com with SMTP id h1so980365wmd.3
 for <win-pv-devel@lists.xenproject.org>; Fri, 26 Aug 2022 07:25:55 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 c13-20020a5d63cd000000b0021e43b4edf0sm2037980wrw.20.2022.08.26.07.25.54
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Aug 2022 07:25:54 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ff054417-254a-11ed-9250-1f966e50362f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :from:to:cc;
        bh=Jz5WgnPmlbQFeoeovKkcGobxJd1ria+jW9y3y7szmwk=;
        b=JdkyC5AmnXHXktUUfXelhY4ZVfACnkXmDjz/4FHjHcIlnYcKrdT+BHtkgEpYRcVhIc
         qgzUezZ/mZ6n2gHwFzvAGkky4v+EN4zqk2B/iRwUaI7Y9BkXXNQsMQBD99n/DO96uC3a
         bijTBXICbcQKCgBPpfY0XCeAxUZCdGEl9kevKIGuotQ3QSO9//2o/KKJPMTFtCmxBo0n
         k6zr0rC37d9oOsLie6RqAYnazv8Z6BMYvMjmhrZYkXZsHN8/VCi/kXuN9gaMl2arG2Z+
         xmK2K8+LAP+sFHsEHLxaOwKZkMcKII0RFPzBeLsS3K0lkjxtQpRBwyz2fAcL2rmi89AR
         qAxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :x-gm-message-state:from:to:cc;
        bh=Jz5WgnPmlbQFeoeovKkcGobxJd1ria+jW9y3y7szmwk=;
        b=EW3OAaB7jb3hH6i95Ue8LSjQHJfJBjfD+JYBwVWsL/feMWtr1J4yidsGZMVYtC5eGl
         PBWEORjR2cnROZvVA6ae8ewQ7wOx0JxNI9g4AhGEDXZqJeifji8SoAfwJj3eir9735p7
         m0tLCnCUqdwzWUt4wl4J3pLM9tBHQomnCz60nKrq6IID0f6+itQ6A3mcQkLx3RWgp0cG
         kHPD1l2PT7kuFEmjSbqqB1MN2igwb/GdfQl3ZnB1EzXeZWgNQK3iQADEJStgCtWgfuYm
         YWBXlkjRlMGJ6kgTluKcXwoSXS8cyrxwk76nz95pUNZApq21hfDDAsjafCt1yG815INJ
         1HoQ==
X-Gm-Message-State: ACgBeo1soRmD5i2phlp7/B3Vrrn+pH8sy3n3XJf6T7uwCfZeOmo3OKJe
	pQRTrQThxZQsm1SnFbAkkKEsqhUZAU2Rg0R+
X-Google-Smtp-Source: AA6agR5U1uIn80nldzTwuYTE751pAaOh7wKZOctABS/DgVsUKqpZ5lG2iSxccIx0Em4PzoI93++g1Q==
X-Received: by 2002:a05:600c:4e8c:b0:3a6:11e:cc08 with SMTP id f12-20020a05600c4e8c00b003a6011ecc08mr5533289wmq.198.1661523955117;
        Fri, 26 Aug 2022 07:25:55 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
Date: Fri, 26 Aug 2022 15:25:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [RFC] Design changes for bidirectional interface compatibility.
To: win-pv-devel@lists.xenproject.org
References: <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Language: en-US
Organization: Xen Project
In-Reply-To: <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 24/08/2022 16:31, Martin Harvey wrote:
> I have a request for comments on some design changes which would 
> considerably ease our support load, and work towards solving VM upgrade 
> issues with PV drivers installed. Since it was originally a wiki, I’ve 
> had to convert it to PDF, which I hope is a format that most readers of 
> this list find acceptable.
> 
> Design doc v1 in PDF format:
> 
> https://citrix.sharefile.com/d-s722cae4e280f4148ae689f972a2cea10 
> <https://citrix.sharefile.com/d-s722cae4e280f4148ae689f972a2cea10>
> 
> Paul, there is further documentation concerning details of shortcomings 
> of the current system which I shall send to you separately.
> 

Can you send it to the list too? I don't see a problem statement in your 
doc. What precisely is the problem with the current mechanism? The 
currently implemented use of PDO names to match available interface 
versions was very deliberately chosen to avoid the need for any child 
driver to maintain compatibility with an older parent. As long as the 
rule is followed (i.e a new interface combo in the parent requires that 
the PDO rev is bumped) there really should not be any compatibility 
problem to fix.

   Paul


From win-pv-devel-bounces@lists.xenproject.org Fri Aug 26 14:34:31 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Fri, 26 Aug 2022 14:34:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.393937.633155 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oRaPn-0008NF-4p; Fri, 26 Aug 2022 14:34:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 393937.633155; Fri, 26 Aug 2022 14:34:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oRaPn-0008N8-21; Fri, 26 Aug 2022 14:34:31 +0000
Received: by outflank-mailman (input) for mailman id 393937;
 Fri, 26 Aug 2022 14:34:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/MF6=Y6=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oRaPl-0008N2-CV
 for win-pv-devel@lists.xenproject.org; Fri, 26 Aug 2022 14:34:29 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2ede2d10-254c-11ed-bd2e-47488cf2e6aa;
 Fri, 26 Aug 2022 16:34:28 +0200 (CEST)
Received: by mail-wm1-x32c.google.com with SMTP id
 i66-20020a1c3b45000000b003a7b6ae4eb2so757958wma.4
 for <win-pv-devel@lists.xenproject.org>; Fri, 26 Aug 2022 07:34:25 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 p13-20020a05600c358d00b003a607e395ebsm11476503wmq.9.2022.08.26.07.34.24
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Aug 2022 07:34:24 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2ede2d10-254c-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=U/FYgNrhciL8gpO0IUPOZkoxuZnH8NKyVATtKsn4HjM=;
        b=URr7SlBbIA0RFiykqfedm+MxY5viEaBMtepaFlokgT+FM0jTL8z3sHkufk1v75rLUT
         YolkbDvfipgFAfU3mGIngcseDDVB4TjIAmfyfLfcBf7KACXmB+N4d3Osw9LgYi3MyM/H
         oFPNgq0H/h4cS9cn2QZNpmxpoaZOP+zkjpb4ot+QXJu4kbT8pVOniGoX9EYRdLyTYmKB
         1NtCC8sjLuP/CSe1ZrB0sCwcmzzRIo+h7fgMHBF4cN58BKPHwkMiSBQKLvdQBoJssXXm
         ozVDc4xkFFY+s9dEJyabPx+sFqYhA/Yjh+QbEZ8cctJqLLZuHnGXgJJcJcSGpTJOJ9EI
         qStw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=U/FYgNrhciL8gpO0IUPOZkoxuZnH8NKyVATtKsn4HjM=;
        b=wZHvx7AtTO4ZMGu2vkqXyYKzDyfjUKoDqMfZEa1hQa6aPHIpc+1nWDLKUVHrX6JGY5
         obAXjRyZrCgm3sdZLyxZtRIbPTCbv5WwSCaFTZcgQYHrmQtRGBDFHviY7wdPQSrhAMeN
         LNKbQ/AvJ/ZT112yWnB+dcobEXYrS3A8l5PJ7+1fdzsh2/XpMN1ZLDgvK2BG8LGb6DmB
         fDYciqWZVmbKwEkA8QFUdhNDoJUy7el/fL+8uJkxlfOj+W2+hs3f0LJoXK62hN65stG0
         XwXSUujT0ZcL7/Ph66CDgnZdcNVoCfLZzc/mtE6LPiPfiV/po+idFIdQLl7E/JN6OFmT
         r3NA==
X-Gm-Message-State: ACgBeo2uVklyAiJbwz8q8ecbwy9S2Si+HSYzx64T5FE57IJBaTG/U88t
	1GsfFx57akrBzReNrEWxC0BeCMJbRnRKYir6
X-Google-Smtp-Source: AA6agR5m22UCTVWI3y0iWA0/+/FtxLG4Gvdz3/k9L8fo1hkYP/baBa9awwm/GWcT12RK8M9nCt0s5A==
X-Received: by 2002:a1c:7418:0:b0:3a6:5e8:148b with SMTP id p24-20020a1c7418000000b003a605e8148bmr5575650wmc.128.1661524464887;
        Fri, 26 Aug 2022 07:34:24 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
Date: Fri, 26 Aug 2022 15:34:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [RFC] Design changes for bidirectional interface compatibility.
Content-Language: en-US
To: win-pv-devel@lists.xenproject.org
References: <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
 <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
Organization: Xen Project
In-Reply-To: <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/08/2022 15:25, Paul Durrant wrote:
> On 24/08/2022 16:31, Martin Harvey wrote:
>> I have a request for comments on some design changes which would 
>> considerably ease our support load, and work towards solving VM 
>> upgrade issues with PV drivers installed. Since it was originally a 
>> wiki, I’ve had to convert it to PDF, which I hope is a format that 
>> most readers of this list find acceptable.
>>
>> Design doc v1 in PDF format:
>>
>> https://citrix.sharefile.com/d-s722cae4e280f4148ae689f972a2cea10 
>> <https://citrix.sharefile.com/d-s722cae4e280f4148ae689f972a2cea10>
>>
>> Paul, there is further documentation concerning details of 
>> shortcomings of the current system which I shall send to you separately.
>>
> 
> Can you send it to the list too? I don't see a problem statement in your 
> doc. What precisely is the problem with the current mechanism? The 
> currently implemented use of PDO names to match available interface 
> versions was very deliberately chosen to avoid the need for any child 
> driver to maintain compatibility with an older parent. As long as the 
> rule is followed (i.e a new interface combo in the parent requires that 
> the PDO rev is bumped) there really should not be any compatibility 
> problem to fix.
> 

I guess I should elaborate by saying *if* a new child driver is 
installed in system that requires an interface that the parent can't 
provide (because it is older) then the PDO naming should mean that it 
does not load (yet), and the older version of the child driver currently 
running in the system continues to be used. Thus, another mistake that 
can lead to problems, is removal of 'old' drivers when new ones are 
installed. Just don't do that. Leave the currently installed set alone.

Paul



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 09:39:48 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 09:39:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394916.634511 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSxij-0006mE-LF; Tue, 30 Aug 2022 09:39:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394916.634511; Tue, 30 Aug 2022 09:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSxij-0006m7-Ia; Tue, 30 Aug 2022 09:39:45 +0000
Received: by outflank-mailman (input) for mailman id 394916;
 Tue, 30 Aug 2022 09:39:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oSxih-0006m1-Pu
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 09:39:44 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7cdb188-2847-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 11:39:40 +0200 (CEST)
Received: from mail-mw2nam04lp2168.outbound.protection.outlook.com (HELO
 NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.168])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 05:39:33 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by SJ0PR03MB5535.namprd03.prod.outlook.com (2603:10b6:a03:288::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Tue, 30 Aug
 2022 09:39:31 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 09:39:31 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7cdb188-2847-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661852380;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=/7MHMYeLWy7/6KyZgN7u5xFHY9OSeaJrpP8z7OqrjzY=;
  b=BEU6dP/xWFxJw2RUnAUVbqhAYxDIGkaa0WaDfBfu+FvnyKaZs4JEHfPO
   9FzKgOQUvArrRCrdytto1OvACSPQ8u1lyROPetRwn2lf1Pp2tZPiIRdA/
   mPsotON/LjeLim9NMypnodeOGmGEfVZv2F6/byU180/em+UJjZoDtQp6O
   s=;
X-IronPort-RemoteIP: 104.47.73.168
X-IronPort-MID: 79372732
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: =?us-ascii?q?A9a23=3AjzeBB6x5B8nr70ucLiR6t4n5zX0R/x4+Zka6j?=
 =?us-ascii?q?kTwloqbGYm8dYe22nJ607RAn3sAnzwXZV242jFrw00AOeabblmtZXEuyk5Ka?=
 =?us-ascii?q?FXNggZhFYCCoOOp4btY4ENpUQnZ8iFhRCf1701wxEJNZ8mnTNk8UHzzRhg8C?=
 =?us-ascii?q?RYJcThM4QgLvBz/sEqwhpLx+Gjrhvj6K6FO4kym/pzEb89hNnvR5w0pJ9wO1?=
 =?us-ascii?q?axG+jDi7mK4SJRUp/NGzta6RVp9SWNxRLRPOsr7eiQiQV5NE32UmNeGP7Jtt?=
 =?us-ascii?q?Aujmy48R0EypqmOXYdXmbNjFFZLSNhn1zqZ2AXoBqgvHeJ/2YpLq7R1DyR2i?=
 =?us-ascii?q?oq61IKquT/+fdmZi0+CY6m+jmX6zvnN/+uEhmkCY/XiaLv+dPXdmPguzfCRT?=
 =?us-ascii?q?UiFdCEp6gD8I96vRw7pzE/36ezMsuVqQ3CGv7tM+65BXdxu6kZSPTWwlTMK7?=
 =?us-ascii?q?4kGgYB9GZ7JCGW+uPxWVuJ9sxdqSiaHMg9SvwE1fr/vOOBWV0qrLwqGOAjU3?=
 =?us-ascii?q?BWBSDQo6oR8uQG5kCd1O6SSrwwWAqDs66XpQ9KonZQWSdf3MZQ3O+E8WLIz7?=
 =?us-ascii?q?AAJ/uCXC6CrH9M2WQG34U/hZk7h15n4F8SvZbTpo6AiDy6xJE2GErlgVO64M?=
 =?us-ascii?q?7Yfv320p1vJVilsdyVVaLvAuzxBeNyESqrJ+t9hV7KFyL7VFJKcQkj6cV9Qj?=
 =?us-ascii?q?miIwscfaQXE4cdWAhyphFo58fQnK876L7SMsdCp/8iJ6LgRdBrEIwY/kF0ZO?=
 =?us-ascii?q?dFkuX2NxOa43lWeI5R4MQC6qFivcLknFHbEUqcTTz6WK4Ir14OIMHnsHrnWr?=
 =?us-ascii?q?TOOERbZFuyOjthx7ATStwctvYta0VbBKUxM9RDEBLOCY0kHVXEKToyPhEjxP?=
 =?us-ascii?q?KqTvmukOcfciEXgRyo/84zWmSlylsK0w85fBiRnNJrtYqzuF+Ke27QV8D3pf?=
 =?us-ascii?q?fyMrrqA9lPpz8mmyTomEiAvFvcUfIh8w4F+v98J2prppC/t6zrv8lAEtlq5t?=
 =?us-ascii?q?vmPvD3qcSWAMfmOLlD4Q3IvxN1yKobkfOMEXtHDtrOS9KmAsIRTteBCeVcIL?=
 =?us-ascii?q?adAs+log8unfKfa4rlAc10Fe0eh+6SNy8+olmqMEi9riiSn9Aq3UZ1dbaD8P?=
 =?us-ascii?q?KD5hP+aMVejbOuHdIpz+UA3FhFFeANkhb3adjD95r+EzidrvVMcGJWj8ZZAF?=
 =?us-ascii?q?HK6ABdV6kdAglI6V7kF07jVMULHP9uFjWgtMzhi6+H6lgN6vheRvKiqjbOGE?=
 =?us-ascii?q?/RDl1FKHQtxGX3PU6QbkQmxWzTp8tNJ95RZf52ARPluuJarn7ZmbHdqpgf5T?=
 =?us-ascii?q?eJGQBc7d/KaM3SrKJBx81wkyHx7CEeHpTURmliJPS+eggemgNmsn3GAXI9tp?=
 =?us-ascii?q?dvRF2/XD6pVRhkjF6wIsOT2M6V2IJ2XIFYfmjNembzWS6w+v5MQix5J6IdqN?=
 =?us-ascii?q?RI4Uz7YDSuiR38+b4GnllrNW8H7LRd1OljDr4kmWr0SiT285b1ExFrzC3kt1?=
 =?us-ascii?q?lWUkqmai5q2qAmIDMVPd72EGep79bZrA1kVMlSB3VnfyOatxpCW5DvtdcUT4?=
 =?us-ascii?q?M+XVYWlKGKb2NUoM0DI6uNOnE2Et3x4OBkaSAMctbWh/nQ99rAuNIvHwSqaT?=
 =?us-ascii?q?D36YsbyZ/BwOmPgZ+Zw9+XbmjU9IXhZkyKDQSIP3/+LTrR3Bd/Mb7XB/CGt4?=
 =?us-ascii?q?pAqdWDegNIIfCaOOkatjVpIF5lFA+m3Gfen+NvpWJ9ymPbV1HTFva39Qo5ig?=
 =?us-ascii?q?dWa96FxHmvZ9kM06oMvkGiCOfvITNMOKHpPqdgF0Kwy5XsFsHK5c3EwEi/Sa?=
 =?us-ascii?q?taNk6R5wUNOvidG/C4hPvzdb6JuOIXAjhvpFv/MJG8seVD8nxxmlw33C+j/6?=
 =?us-ascii?q?rS+OLl5Fs2aFfBZ8di8k/OrsHpBtzeY2L272jzUTP4ECj1xZ/OipniHKpj8i?=
 =?us-ascii?q?uIKVXddRtHpfjUYOZ+UPWqQ+GgrxEmJq1U2QIoxJ7wfVufKxkmTLCPxm8miy?=
 =?us-ascii?q?y7NNqP5dXN5xB0nLgnGc+AESrLNHJJQzDLpOVaGmf+b4UNURuTHtBIHDdh4G?=
 =?us-ascii?q?rM+syD+5WyplZhg+/iaekyzxQL7CjGvSF3FKZPjqjbHot016N6+665qTrsFm?=
 =?us-ascii?q?DdeQa+2WfxSr9sveXWuvizCuzXpb5x2AFnPZkTW50MpwNQNWj52gLkQodR3I?=
 =?us-ascii?q?+uevG84V0KAFMyfXMQA2IFZiiC46lLbvbwoFHegAB/Cfyz755Q/Jwkvop3sc?=
 =?us-ascii?q?snzCqgooWYAD5oTaXCjJIbrkxkWD5giU/6jsE+GaVFFNhc0XodzU1ruoi51c?=
 =?us-ascii?q?v1+be1Dh7pYy5xKMPKGiTxZ7ax6qWoHJUOGL6vRQc8/zQ+7TRbyXDGEU8dwO?=
 =?us-ascii?q?8NO?=
X-IronPort-AV: E=Sophos;i="5.93,274,1654574400"; 
   d="scan'208";a="79372732"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Si9ut73mCPqEFe2pES+LaQ4uGt2XdMsty6N3XJ9mv2noWLgZb7Q6cPJ8bsAGu3gpUlA64JnwS+obPSEqdSwbuqtWmBYZyumDpwpdXFNMqQQlt9rtzWvD2/Sp7d19JugOm6KCz03sRwyB0mbf+Oob+pLURLM3IjSvupphBLBHWvebudfRfdJijSUYV9yepL9Yk+cH/LmWoBq4a36CbDbdMzxxiY7/oRs5Qs2aUcuJCPPenpkz02T3Nie5+Cv1uidQG6eH4HvL7LS5S5iIfl89QtBeHg2vryho25eD0dWwc+OHsfDaS6Q89Z4PWOUtZA6xv17Xmux+c0vP8sgnzVMh8g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=/7MHMYeLWy7/6KyZgN7u5xFHY9OSeaJrpP8z7OqrjzY=;
 b=GZGDct/P6HZqKnxeCK5XLJUcvFSXe/mZovejxaobpektQohW3E2UzxnpoKC0FGPwIYUrk4kAxmbA0qpUTW4/xsH8lWpDf/exw4XqH7l0sR96qdT0PWutXMxIU/UvmabaocAoF54J3Suxs1iIrq7X/9FmxhAYu6KB2kmSib/c2/jOl+FZWC7oi+UD3JcbtecRQzrWzwGe5lYTjqqdyZjBjpwazfgUeFlTi32JbqLIILmRYGmCOWIRYOgGesy5aarRRMdGPzsp+3Z3pM0FVftz7oz3hdjrsJAdnhaRtErXsDRgc6XmEx+O6BbTxQ9bhvwrz10A1B33YHxruv8I3c8iCw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/7MHMYeLWy7/6KyZgN7u5xFHY9OSeaJrpP8z7OqrjzY=;
 b=henTKP/CvZ7WVvmx+a8DzIFJXuNmBfcdNsFl4P/AI0Rex0VDrFPeIWV5Vrp/dTDnScrhyQHZCFOEj7qQy4hHTs/4656JXq8BYruqMnSqD3830jLPjMtkZ+GBan0H+mOzF5wTpLV5zZ4mKHf+PuOD39HuGp6MK0ABeZDwyZWtiUI=
From: Martin Harvey <martin.harvey@citrix.com>
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: RE: [RFC] Design changes for bidirectional interface compatibility.
Thread-Topic: [RFC] Design changes for bidirectional interface compatibility.
Thread-Index: Adi3zfZIeioY1WCfTXGZlPfbnnICHQBickCAAABL/4AAvn1/cA==
Date: Tue, 30 Aug 2022 09:39:31 +0000
Message-ID:
 <MW4PR03MB63479AF90159696CAFF7D6F59A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
 <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
 <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
In-Reply-To: <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 2be717ee-2855-40ac-5e6d-08da8a6b8a51
x-ms-traffictypediagnostic: SJ0PR03MB5535:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 TaGcIDKJhgE2uEVZpeuNyhay+5tVOnEpPHjooeBERNtgwtjxY0u4RbKqyZqogPcxnH7tQbATp8moHQB/ls2nupxYTniUuwPsN1gSHl86HiIbepdYDmVzKMFs+BQ9PR6xPm0tv9Mjowqe1STeAhQ7LEecJtQcxn9gs8c4fYMztey8fWlRwpqZO4YXSjQO37Snsnf3oXvuSo/nILQhIpOGvQgXYwGh2nAjsNKrAuqvjPgnqS+HRLRX2OsgKzE/HRurFSgO6eGx+Nb8qSG/dIeBHE+OZvRn7IJ30aWlB4H5d2VdKkbVEe22VwsQobbqaqdM03XhnTFG98j0DDbWSciBYUBoac/oiQWDdkTgcq6i/qcpX8VOXQd0Z/5nu5Bt9oC7s0GI6ONIlNXAnVjHE0FGpI7X+7NlyHRnxk6OP4rcdyRscZs1ocV8K1nEIezcwxLVepxJp9bp663xat69eP9mhPrhyCmvItJ5W+nB4W46Uz8twwc6Lcr8ueajvNKsW+nL4z806XdTBfv5ZwNv81qdUA1cPv0vgYWFfMwXyLLEienyaL0Le9jsmMChAyY3eC884bjD+RTp6ekO2WszdO0sBFF0xfRyelbwP+Yc7cz1+3djc2WFfKk8DEGgBKt5P6Yrc0Cy1ewKTFYJh0P2wtEi3iQDSwwu2eMiDP9t6C5Oo2nU79nYcHYu8sb8/XKTXQOTOEn0BbuYY8VRuWZSa2aD5Ursk5HO1/wQIVuUXB8Qsz9eGZx8GOWFCqE3d9gcAMC1FM6hztQtIDQGKF+ZgPiMymR0kSbJnnqZ5Syd8h+CbuE=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(396003)(346002)(39860400002)(136003)(376002)(186003)(966005)(316002)(86362001)(71200400001)(66946007)(8676002)(76116006)(66556008)(66476007)(64756008)(66446008)(5660300002)(478600001)(52536014)(82960400001)(38070700005)(8936002)(41300700001)(44832011)(7696005)(26005)(122000001)(6916009)(38100700002)(6506007)(2906002)(55016003)(83380400001)(33656002)(9686003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?NnP2OfYoyOnYEn4OfSsZ3XwW+hvgbVx9oqc7z6eOrlBOGaO/O9vKoQa/aj0y?=
 =?us-ascii?Q?SC0qpnWEi+z5HwmGWLKy19Rns+nb9hw+fLJzaJ3FIVzPf49fEMPoP5Flu//2?=
 =?us-ascii?Q?vBBiGoxOKc986l742W+b+zJl7W6yaGQGJfQaHZa1dFvbQc6k+Ij4DmKBrlqQ?=
 =?us-ascii?Q?Gk/5r4wOKEgY25Uod/7Bn8qV2YzYNYQH6SzXVdZUf9qmxuZRiq3Zgq7Ls0LF?=
 =?us-ascii?Q?lKjE3mqSaqtcGH3zWyhMuGTlMfDS/3tzdzTUVX+vW3yyO/nANr27AyFoy2Qv?=
 =?us-ascii?Q?4jBYB+lc5HZ+n4nazOytRLY+Dyf34VrbWdEwD2Zqwvq4mp0IarjZqdxoXfTp?=
 =?us-ascii?Q?y1Gc4Fsoq1MJLL86efIo5rqDsleg+1Sl1dLCPUEgTSzu4GIQBsU1kFhK4xgp?=
 =?us-ascii?Q?ZTKQu5Oa47DJYBO2ZcG3AQmsGwrk1M9MXjhfgIqIArkbZd0X1xZUOVVWZAG4?=
 =?us-ascii?Q?KNXdxKscnash/LslkgVuoCmK9XdNTeCUMPIIKiO745y4lTR0mihZzwN7UdfV?=
 =?us-ascii?Q?G2OBXG8kj94OhuRdmTSz/mT9LXeMs/GfBa2vGPdfaVblmukI6sqJR6TSjwN3?=
 =?us-ascii?Q?IBQFZ3g9OIAKFvU+xNZ3iU+yhBTP4g6qHyg/Z79THr9Wrc9PXqKQpJvdlBP9?=
 =?us-ascii?Q?RGDjgIU5Cold4ULc5KJWCNHcxV7w7hzw6UkMuGsV4REsaRyDSQPmv6TBZLcR?=
 =?us-ascii?Q?f/8trEd7TtTb9fGkfvaa1tj98x2QVMzJv53iDAQtvTyORIQ1Tk3eaW7R168U?=
 =?us-ascii?Q?sFst4ICXphiuH1scC3wxIqLriERwSCK8FJtD9T1wvJdkRH5r+UpPLZTY0M3S?=
 =?us-ascii?Q?jKmfsio5nl5GiJYb8J/ZAgn/TdH1+JBWoHtxFl8iOy0NTkUSMKRX+SrDz2AY?=
 =?us-ascii?Q?UXoPKfd2vN27woBNmScl1Dsd1QSw/ODkivc/BSxF9UqNuQyArYLhCwo56AkI?=
 =?us-ascii?Q?JbMLAUk4TqTzh0uU7mycq5dTQb13ylbqzkjQghCsHTyulJnJB84Vm3j6ocLg?=
 =?us-ascii?Q?W5AK2TnSWZaOQVcjLYYQmtmGSvHGzXfZTwpXwtKVKbsyC1ocn7OqYPQY7BYV?=
 =?us-ascii?Q?/Z6lBnUej4kTCfyIVJbjS5my/yezOyoDhjF1lifB8SKkPZy7v4HUFFkdvTlM?=
 =?us-ascii?Q?8f53Jr/pvh2tXQu9bPcVlN4EDcZzlqNX0dfXlhJkY9+Ldtp/54Xb0gH4UMkW?=
 =?us-ascii?Q?TSDCS5KoPLmLWV/+vZuK6WYhmZxLjzyyrsdsHbfGyN5x2xBtQF2LAUl4H7OC?=
 =?us-ascii?Q?nLii3Qyd9Vi08o+F679tTAWkYL+rtvxznnQuNd2tc32kQji+uPMzhkVCtTNA?=
 =?us-ascii?Q?+5DLTxUroYqWmEBA1wLmFZuRRd/kGDsfIzOoGIm6HYBk9mXVgf2IvTBjZayj?=
 =?us-ascii?Q?KLzJyVL+w5rfk2V6C6/w/HnNwwh91VOS2t6PUMYmiMunEtmBrXVgt7Ng6vls?=
 =?us-ascii?Q?11/HlA3qKFSE3zuZakNJHwoPZs2VRzdkRiAU8t4KKfiyUb+xNAvSBHBYzD+K?=
 =?us-ascii?Q?FxfgCkEfeaJdY2LidMkJ+KM2M7kzxavPNhTft3Wwvieb49zYGNSsG8Zvu2w6?=
 =?us-ascii?Q?dCHJWf3EoFc+PUyiv++JxlEZyjKcWoYpJo/Geaca?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2be717ee-2855-40ac-5e6d-08da8a6b8a51
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 09:39:31.2756
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +bYmQi54JcyxmoKBMuqTImfv5e46AbGZx6qltsKYsYqh0RaPNbQSDwy6bYoY1762nRQx3bEx4Pe8i/kF6V1Mx5MU1G4xbZ7SetTPma05+Zw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR03MB5535



-----Original Message-----
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of=
 Paul Durrant

> Can you send it to the list too? I don't see a problem statement in=20
> your doc. What precisely is the problem with the current mechanism?=20

Problem statement, and some of the issues we are seeing mentioned here:

https://citrix.sharefile.com/d-sa7ef342dad7b46c1a06f77436f282e64


> The currently implemented use of PDO names to match available=20
> interface versions was very deliberately chosen to avoid the need for=20
> any child driver to maintain compatibility with an older parent.

Prima facie, This seems to be a good idea. However, the point of device ID'=
s is to indicate that the H/W (or virtualised H/W, or other discrete piece =
of kernel functionality) is fundamentally the same.

> As=20
> long as the rule is followed (i.e a new interface combo in the parent=20
> requires that the PDO rev is bumped) there really should not be any=20
> compatibility problem to fix.

You're correct that there is not currently a compatibility problem at the m=
oment, it's just that by bumping revisions, and changing the H/W ID's, wind=
ows is not able to determine that the device that's been added to the syste=
m is fundamentally the same as the previous device that was in the system, =
just with some tweaks to the kernel software.

We have two fundamental problems (as elaborated in the doc above).

- Net connection configuration settings get lost when we bump the rev ID.
- We would like windows update to be able to update drivers in pretty much =
any order as it find them.

> I guess I should elaborate by saying *if* a new child driver is installed=
 in system that requires an interface
> that the parent can't provide (because it is older) then the PDO naming s=
hould mean that it does not load
> (yet), and the older version of the child driver currently running in the=
 system continues to be used.=20

Well, that's one way of solving the problem. The whole point of compatibili=
ty code is that it should be perfectly possible to get the newer driver to =
load in some "reduced functionality" mode.

This does not exclude the possibility that for interface changes which are =
bugfixes where compatibility is not possible (or reasonable), of course we =
can still bump the RevID in such cases.

My document contains a review of all the interface chances for the interfac=
es currently supported between drivers, and they are not that many or large=
 (in the grand scheme of things).

I should add from a "management" perspective, we now have more people in th=
e trenches here, including a couple of new developers and some excellent de=
dicated test engineers, and if we need a 2k more lines of code, and a cpl o=
f guys running upgrade / downgrade / siedegrade regression tests (possibly =
with results posted to this list), then that's not a problem for us.

If you wanted us to run internally with the changes for a couple of months =
as well, just to be quite sure things will work, then that's possible too.

MH.


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 11:35:41 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 11:35:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394948.634549 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzWt-0002jI-Px; Tue, 30 Aug 2022 11:35:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394948.634549; Tue, 30 Aug 2022 11:35:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzWt-0002jB-My; Tue, 30 Aug 2022 11:35:39 +0000
Received: by outflank-mailman (input) for mailman id 394948;
 Tue, 30 Aug 2022 11:35:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oSzWr-0002j5-QU
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 11:35:37 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id db5e7db7-2857-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 13:35:35 +0200 (CEST)
Received: from mail-mw2nam04lp2173.outbound.protection.outlook.com (HELO
 NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.173])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 07:35:31 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by DM6PR03MB5257.namprd03.prod.outlook.com (2603:10b6:5:249::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Tue, 30 Aug
 2022 11:35:29 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 11:35:29 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db5e7db7-2857-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661859335;
  h=from:to:subject:date:message-id:mime-version;
  bh=gggpxVVwCBBq69/vHUMeuobmV+3gfoSVUZz2vAGb860=;
  b=cMNyRG/B3bFgV9MdhGzVvTzwtKizRZVGcue3cmXs4Of+OjQToMzNHJ6s
   aNQWqfGQhiFqHZeZntxaR8+MYcpZgmv0SQZHtFQmS6mXB4o2YVqpE9GoO
   LN5AGOt5qyOwyRqfNZwWAXjzs/0BRNqgk2TKTLByZGkijRgS1q0Jled2c
   8=;
X-IronPort-RemoteIP: 104.47.73.173
X-IronPort-MID: 79816326
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:MW5fba3WwioLtXmtsfbD5alwkn2cJEfYwER7XKvMYLTBsI5bpzIDm
 jBLC2GAOPuJZmfwKth/O4mxoUsA78TWztIwQAtspC1hF35El5HIVI+TRqvS04J+DSFhoGZPt
 Zh2hgzodZhsJpPkjk7xdOKn9RGQ7InQLpLkEunIJyttcgFtTSYlmHpLlvUwx4VlmrBVOSvU0
 T/Ji5CZaQTNNwJcaDpOsfrT80s35ZwehRtD1rAATaET1LPhvyF94KI3fcmZM3b+S49IKe+2L
 86rIGaRpz6xE78FU7tJo56jGqE4aue60Tum0xK6b5OKkBlazhHe545gXBYqheW7vB3S9zx54
 I0lWZVd0m7FNIWU8AgWe0Ew/y2TocSqUVIISJSymZX78qHIT5fj6+gtFm1uH4BAw+lQO09Q2
 f1EBhUNbDnW0opawJrjIgVtruIKCZG3eaYg4DRnxzyfCus6S5feRamM/cVfwDo7msFJG7DZe
 tYdbj1sKh/HZnWjOH9OUM54wLju2SK5KmIDwL6WjfNfD2z7yQVrzLnrdtrcYMKHVO1en1qCp
 3KA9GP8av0fHIPOmWPbqSjy7gPJtS7hcsURMJy+z8VRql2Cmjw/T0Y7bGLu9JFVjWb7AbqzM
 Xc85Sso6LAssUCmUNT5dxm5u2Kf+A4RXcJKFO834x3LzbDbizt1HUABRz9FLdk57sk/QGR20
 kfTxoyyQztyrLeSVHSRsK+Oqi+/MjQUKmlEYjIYSQwC4J/op4RbYg/zc+uP2ZWd1rXdcQwcC
 RjQxMTir93/VfI26pg=
IronPort-HdrOrdr: A9a23:6QwW+qA95LPlQ1jlHeggsceALOsnbusQ8zAXPh9KJCC9I/bzqy
 nxpp8mPEfP+VAssQIb6Km90ci7MAXhHPtOjbX5Uo3SODUO1FHIEGgA1/qq/9SDIVyYygc178
 4JHMZD4bbLfDtHZLPBkWyF+qEbsbu6Gc6T5dv2/jNId0VHeqtg5wB2BkKwCUttXjRLApI/Cd
 61+tdHjyDIQwVdUu2LQl0+G8TTrdzCk5zrJTQcAQQ81QWIhTS0rJbnDhmj2AsEWT8n+8ZpzY
 GFqX212kyQiYD19vbu7R6c032Qoqqh9jJ3Pr3BtiHSEESttu/nXvUjZ1TIhkFMnAjm0idQrD
 CLmWZpAy070QKqQkil5RTqwAXuyzAo9jvrzkKZm2LqpYjjSCs9ENcpv/MtTvL10TtSgDhH6t
 M440uJ855MSR/QliX04NbFExlsi0qvuHIn1eoelWZWX4cSYKJY6dV3xjIjLL4QWCbhrIw3Gu
 hnC8/RoP5QbFOBdnjc+m1i2salUHg/FgqPBkICpsuW2T5Lm20R9Tpt+OUP2nMbsJ4tQZhN4O
 rJdqxuibFVV8cTKblwAe8QKPHHelAlgSi8QV56DW6XaJ3vYUi91qIfyI9Fm92CadgP0IY4no
 jHXRdRqXMyEnied/Gz4A==
X-IronPort-AV: E=Sophos;i="5.93,274,1654574400"; 
   d="scan'208,217";a="79816326"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=hKgFy2TSvldyOpoBR1ZswSy6JbWpn+ASjiflC7DWSl5qZOW3FG/yvd+Ua+Isr4cEzxQSD/1gXuhLj/NhHf2HI3CCIdCHV/0/Gt8TDyKYdkauPccRyctkNABjwIDrK8+rejKBQPg5mgxn1wCOjlK4cmNPYJotvkrLki1hNtJLMb9T4TTDzUOw/MAtTPfEkb20dlfyTU6Z9o2cq20gFynVg0oVHU+cB55U+FvRbPfoziYqBoE24nF1nDttLSNWrbb4mpCCMP5H2uWOXbPPjtAVjzKYGRsZqtZEcdSURdrFyf+hidWmiAVUlW/R1x+L8Fa0HRujMDo2fwc837ujqDJGrw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=sQ4nvKvhiJn/qLtemJ5nz0S3Tr9liodQSBryY3k/em0=;
 b=B7rYXEpegymTcvPFe3Y3B80LYE9Apf9f28nMSrlY9QLFd8UlCRJtDnbRriYYEtq7dH1DtwKZTWa607RVsMUes4soMDEPE/hs0FCPttQQ1Lhp+w/+pt8o/Tf3v4k21V71MykZN3aMoy/NkTqtXhq1EbIyjvPQXpSR/aLhQpd/uY7EQpiV2UNqb3Jjur611OO8cOjh36zV5rYuIb2Do5LMaLEwK5lLYexgjU+R/z9656kI0th/DiPSixYpuyl/tIAsHPNr1VnXddsvlNxW4+hxVk55fpvTbwgpmxqYptkI9gQhWQroKNf+M8f8Q/WGv4q6ylQkqAayEpORolh4PJuTIQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sQ4nvKvhiJn/qLtemJ5nz0S3Tr9liodQSBryY3k/em0=;
 b=gA43jvDSZa6Ag41kEGX08rdta3Wz8M2drX5xwbkXS3NeKXELk7cXwO3O74zkVtF73EIq8PyIw2Dd6/C2qssjFIW/EW1+nxRMIITLIDUvg1uq/arz0PH1B4qO7lhjwl8U8SJdLyMOzyO3OKIjdg695C/wGQtdEplZx360nhCnaqc=
From: Martin Harvey <martin.harvey@citrix.com>
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: Use of newer locking primitives...
Thread-Topic: Use of newer locking primitives...
Thread-Index: Adi8ZD8ojTv0cYRiTIesy/wwgsnlOA==
Date: Tue, 30 Aug 2022 11:35:29 +0000
Message-ID:
 <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 237b2608-0e58-4755-e102-08da8a7bbdf4
x-ms-traffictypediagnostic: DM6PR03MB5257:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 yEaQtkQUlFWaoz0dxRt86XU14kCbDSZQBP3kGfeK0519jZW0V5prELSRtoiO+VYfgsJzLCQZUqiAG5UYsFsn/4FCaeaG2m6i7EKWsgzCk7EpE7bAphSC5JUIqvghjG0cWFJKKIvLsDNZM9wjkMCC6wyZ+om1IgDbnA/erdP3uvdwvIYhvRG4ZpoNr14ZKd1Jcepr1bydB75P49acfH58CwLLfsT8jpEdgoigtEQlm/Klx8CYnK6YyZojhNvyEd1jEfpCDvn35R1Tvq0HwhQStUswW3ap77ZWRMA17qqtC1YSKC+LMyJx1tLzK3Dpfl1yYBRIu7NydzsGhPkYotE7Xiz/5o0IsbeleFaGxZ9CBv3vSc36M792JX8xghUOqc2xIp4s+zAsrkx0bK47S/fA+p1J7upKa5Dzuoa66v+oJ/ZrYMiRgwmHk0p13h7yoF4tpMWXPgTtqru+ftkRynA3s4wsuiH11DS3LYaatW3IoYrTQ1hycSFPM2GQPnDM7OGPV6ah29qX5TMtggvEPVcltNsnBdbp94zUvgVACCHk3Zq17niOoURp3EKSJuSb46Xub1ikO5908lpnW+olVwCipcseH7RtygtPnB2kpCw15cP6mvUTJkzWGmcebcYDIVv/x4qfp6Da/6xPjxTH75PmBnsYBs8R93YSkwx5TepUZg5Jb92PxAv+HKXwTX1EADlEsmjzVEnqYpEZyjC1vjVcU/AupWtjLDObTKtcEZ/s4JjdOO0oaQt+uY45wdVOqIFr
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(86362001)(33656002)(558084003)(122000001)(38100700002)(41300700001)(83380400001)(6506007)(26005)(9686003)(7696005)(186003)(6916009)(71200400001)(55016003)(66946007)(66556008)(66446008)(64756008)(8676002)(478600001)(76116006)(316002)(66476007)(44832011)(82960400001)(38070700005)(2906002)(5660300002)(52536014)(8936002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?yBTZBstflz41SeT9c9fVbHs4GmbRM9E5pwReA4bE/IDqqaF9NY1FtDp2Q4WT?=
 =?us-ascii?Q?y8wIEtCAF4QCAaIQ0YzUH21kMKC+JLBy3AfCkyNuK5BIKO8s1X0KdWVYxCYd?=
 =?us-ascii?Q?ExjnpAkcQCJ6Jb5CyY4GxczngkM1LBvUMXXO72Em3/zN/6grKGg1iTexfdra?=
 =?us-ascii?Q?yTkOTPGY86EVN1ci2vyhM9qltTHN+dHXf1A4JTuhPbk15sY+gX5hrHxqpH8C?=
 =?us-ascii?Q?WQuZho2PEpqo9CWibvjDr2xd95QOEQ00yvZr6tkb4KJe8VTglA6BVVdfmNpw?=
 =?us-ascii?Q?Ei9xH0fwiYYI/kIn4bWZW5sTFsDGIEqW+Z2iL49L3uPCmwyzf1V6QnpBQS3a?=
 =?us-ascii?Q?UJIPiulI9iXJ7pXEDUhVfYv6e110MCWjS+l2B19rxnDUeAMlGUe+4VYzIWg6?=
 =?us-ascii?Q?F1Svxcguc0RDS1bAOWRFcHlyJLZ3nPPJtFvjG69DJ3JKgV5h6iVyJxu8T1fH?=
 =?us-ascii?Q?TkdKg3paO6PVGym9Y31IJWta34ef3UGDuDoFAURv8DWx/gcDJZoTNXtgI5C4?=
 =?us-ascii?Q?NMgOaoVgzOZEexaYHZhOJ9jgcYXiBGuc4JE5vH2TPvtBIGOxZcAk9oZhNdhS?=
 =?us-ascii?Q?zl5Qs7nu0+zJepXkB+V/4iaCHA9uNAJWathXr/O38e4ZhAh3Wl6PYU/HaBLV?=
 =?us-ascii?Q?Txp5QwNdun4h2H1wHnrG6FBVGn5AOu3307zzpG432vfUAxCAkyA3EQNx3wMb?=
 =?us-ascii?Q?sXur/LlXMVK6zlCq8u1Tkw99O5l3YlwFbikVIaKhdrKMw+h/75DYfAwrHi4t?=
 =?us-ascii?Q?5YGilxNdl/F3ZyM2zKUbPmX9ckiLo/QmzY1UO+MqeI9qBKepwaSeA2qLm/v2?=
 =?us-ascii?Q?7k+VgZy7fCnMcHUrkBhQEZe+EQS382ADP1a2IL7Mc6eDskyCuTv9rRKqixW7?=
 =?us-ascii?Q?WPj28g26NtWS0O/9ij9omOTJH7HrNCmtt3uC4n/yWXfEIPIyTIgrsFslPuGL?=
 =?us-ascii?Q?NN4ZsmSpqVBNjlTQOV0TT8kM02tSv91pcjdpXQf8WQkRKRTnEEfivSR2zFQx?=
 =?us-ascii?Q?TGw37+lAb7q0FU8NE77QzQ4Ba4s7JHZtbLaqjSOZJi051JROv5AT+qHeCEOa?=
 =?us-ascii?Q?D98KCl6JgbWADqrX9e5MYRjOIvNGDlZDrWNgvBN1G1duOXsrE9IPHhPZSDpZ?=
 =?us-ascii?Q?6kPkkM6RKrFRwJc3sPVTiE2KasB+xIVh9V5A39ljjZhRYBvyYTiJ33wG3ED0?=
 =?us-ascii?Q?XVql3M6qzl87dChtgtbuuwVKSD24kiOmdzS968F796+ndHFzLKIp4w1NYXq9?=
 =?us-ascii?Q?Rujni7azoXmLjQXsBnWPMDJfo66MIV1duYsEqu/I8Hm7KFZMjT2z6zLxfyRj?=
 =?us-ascii?Q?yTrCyPX20xHG6Oa4k8Z2nQQpGikJWFztGVGCaQDm4Fnh/zGQ69zFvXn7958q?=
 =?us-ascii?Q?i1AGKUYoa+uyhUhg0qsSScp9fDilTYV5BVCZsf9ZA9fjS6wn8RPSAQ9W+3A5?=
 =?us-ascii?Q?SyzhN7sAqm/CPKI9pIVzub5vM2N27Vpegr5u1hPJzOjf521o/m9VgXgVI2Il?=
 =?us-ascii?Q?zJ0BHpf21PLXBWXLSKUoEtpZCClj7f8gngvz9mswQI7ll6pCZ8QehT7B9GyR?=
 =?us-ascii?Q?M8mptJRV44g0MGLoqyDS5hZ5x/Yb7kOgjyjOrADl?=
Content-Type: multipart/alternative;
	boundary="_000_MW4PR03MB6347ABC2176EB4499F55923D9A799MW4PR03MB6347namp_"
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 237b2608-0e58-4755-e102-08da8a7bbdf4
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 11:35:29.8430
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: jdfzfqUGuJigVlxQAt5U8b2GeZsskiOikGAbYlsO1aY5i/2KSdzBBi0066bpsLMTLVQi+A/bli3eGXVWzWvz3L7oWVX2COC2KPSwEW/dVpo=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR03MB5257

--_000_MW4PR03MB6347ABC2176EB4499F55923D9A799MW4PR03MB6347namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


Hello folks.

Has anyone taken it upon themselves to try using higher performance locking=
 primitives, (i.e. Queued spinlocks) in our drivers? Anyone see any issues =
where we depend on the implementation of locking primitives, or could we ju=
st do a "drop in" (i.e. search and replace) replacement?

MH.

--_000_MW4PR03MB6347ABC2176EB4499F55923D9A799MW4PR03MB6347namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:DengXian;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@DengXian";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-GB" link=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Hello folks.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Has anyone taken it upon themselves to try using hig=
her performance locking primitives, (i.e. Queued spinlocks) in our drivers?=
 Anyone see any issues where we depend on the implementation of locking pri=
mitives, or could we just do a &#8220;drop
 in&#8221; (i.e. search and replace) replacement?<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">MH.<o:p></o:p></p>
</div>
</body>
</html>

--_000_MW4PR03MB6347ABC2176EB4499F55923D9A799MW4PR03MB6347namp_--


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 11:47:26 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 11:47:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394957.634555 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSziH-0003kG-LA; Tue, 30 Aug 2022 11:47:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394957.634555; Tue, 30 Aug 2022 11:47:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSziH-0003k9-IZ; Tue, 30 Aug 2022 11:47:25 +0000
Received: by outflank-mailman (input) for mailman id 394957;
 Tue, 30 Aug 2022 11:47:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oSziG-0003k3-Do
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 11:47:24 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 82f7e55d-2859-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 13:47:23 +0200 (CEST)
Received: by mail-wr1-x433.google.com with SMTP id bq11so13842288wrb.12
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 04:47:23 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 m6-20020a5d6a06000000b00226d3e9f8f4sm8086055wru.98.2022.08.30.04.47.22
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 04:47:22 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82f7e55d-2859-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=G+fihd3sZaV33lJGgQRaDQn8s6rhPCsx7lgHsYJoN5E=;
        b=mDlXFFCdDWMhTfAZNo5cW5vtVanucx7iZ4Jt1V+qE63qZ5kJiRj8x29it8XtDlRknq
         IdSQqMH8PJ33TgowYrKODbWf3I8uvZC+AocZRE9m4wQSk29woux23yZhEx5gu1cLMnfx
         UXN/USn87ZpMCxLi0HvARa+j62uQeclsRO/StM8QR0Ir9wRLw8kkl8kq9fSZoZ1dYbVp
         ZhIZU1ySYqKpdUZH33cGDnlan0iieDejLmgaNENex8nvM06/2VfXvYtmMtOdGSxRWNY7
         j2bDxEOlYDzjw1Bg6uNFi4r+Om4rqMS1LMnic8K7mSZPxr7X/OiXiVF8HcKOE6h7iPAj
         SAFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=G+fihd3sZaV33lJGgQRaDQn8s6rhPCsx7lgHsYJoN5E=;
        b=x9J9kX7Eco2TTrn5APZpsSk3+17ppKac9Y3F7hAfA0eoLVrkAlGVjrlC00K9BnoqJX
         OC6egfoFkT8ix6pqXzVwtPfyZESHxxfpudxlr0MRYF5Engr1lGioPhFlUlx+7yO29hn4
         xhSFNb+N1VP0FTCAk5wQ1tXNGT3Dxs4rhZT0TYwl4DEjQ68uhmmVBWaQIzl7eDbe1eh6
         r76d80sBq5DzSOCqqicqaJHP41/UgysDmKwuVd9XiMov5rYbruHjsF3gGNnPM8tkJv1F
         GKTwi6VFmXuKKoTNT/U0mY7di7Z5nlmXGgM0KD3CQHC4yNzmjKwJCLkep0nkWJNA2XvM
         GGSQ==
X-Gm-Message-State: ACgBeo3HjgO+YoIic48w3sXaOW8+JfbkZwKlNG5VmPocLboQSzr9ceEX
	q9PDVl22G6Lx7auo5UZga0rnw4kZIDdS1jzr
X-Google-Smtp-Source: AA6agR4YTSsCXlmZV6tCqTRgR0HnyBH/z7k8jDZTcXqaZBpMduVg04P2POwmwGl9WYCB/mgUlD/8HA==
X-Received: by 2002:a05:6000:68c:b0:226:e12f:6ec8 with SMTP id bo12-20020a056000068c00b00226e12f6ec8mr1970008wrb.681.1661860042916;
        Tue, 30 Aug 2022 04:47:22 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
Date: Tue, 30 Aug 2022 12:47:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: Use of newer locking primitives...
Content-Language: en-US
To: win-pv-devel@lists.xenproject.org
References: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 30/08/2022 12:35, Martin Harvey wrote:
> Hello folks.
> 
> Has anyone taken it upon themselves to try using higher performance 
> locking primitives, (i.e. Queued spinlocks) in our drivers? Anyone see 
> any issues where we depend on the implementation of locking primitives, 
> or could we just do a “drop in” (i.e. search and replace) replacement?
> 

We have various wrappers around locks in a lot of places so a drop-in 
replacement might be doable. I did think about using in-stack queued 
spinlocks at one point but the extra argument makes that a pain. Still, 
probably worth doing if anyone has the time and motivation.

   Paul



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 11:57:22 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 11:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394967.634559 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzrt-0004iD-Bb; Tue, 30 Aug 2022 11:57:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394967.634559; Tue, 30 Aug 2022 11:57:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzrt-0004i6-95; Tue, 30 Aug 2022 11:57:21 +0000
Received: by outflank-mailman (input) for mailman id 394967;
 Tue, 30 Aug 2022 11:57:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oSzrs-0004i0-As
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 11:57:20 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e4c0e648-285a-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 13:57:17 +0200 (CEST)
Received: by mail-wm1-x32f.google.com with SMTP id
 m3-20020a05600c3b0300b003a5e0557150so685027wms.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 04:57:17 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 l4-20020a05600c2cc400b003a502c23f2asm12701525wmc.16.2022.08.30.04.57.15
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 04:57:16 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4c0e648-285a-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=m5Oi4GUExyS/oNYO8VpBeVS4FVTL9zYGVF+C0092VbI=;
        b=A18k6w3xQVPxtuXcTsRjVoe2YvwygQ/vIjPtUXoNVb4y3znOHUvp+hoeL+m0mKwFjB
         ylh7vJGVYO3EN3xLadD+r+zB3ZWLjHCqHwCEsbgsBY/8WvZpB4JUUe6ZRF8+DY22Mvix
         Cnj3Y5JV0dyCrjKucO/UIA/97yQzuas09Eglj0AEDJIbYGhGn+b21dk9k2qWEMRwli8Z
         XGLaRw3qQ2ZORY/a/ERpnJIf0w89NVrjoHS6r3Y0KGZgbLVn4yrGofCC08Bhya6T+1ch
         oKqVeYG/xBw+tWe/h2adgRsW/3kkhMUkZSymuCimQzIpKlCoUQCUpWzqVNpAGS6aw6p4
         Yn8g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=m5Oi4GUExyS/oNYO8VpBeVS4FVTL9zYGVF+C0092VbI=;
        b=iS6JnbyGB/az5WUNr6jaE1TQ61pDY2h/KyjeKi28ZKPAmV/stWy98MpN7ZSbdNYvYS
         NoaWRT+CPM21bp47/fFhf9BiD9h3UUK6V1w6vh8kOVRUMq5NTkSzN0dzXT+9gIszt2Jw
         hoJXk0PvyhHfqlxyueb5pBYOIhUigWOBUDxzqXyNixKLS3WZo7tk9rTr/ioqkedjhJsH
         nVwsvTh/3IIgmSsSNDxX7BnH2s8oU27OXeUiZnvzDkvG4EICsTwVwgtXZXXwEuFquoch
         tJ3NZV3Yud8Ftckfr6VGTJeIlY8MU0lSXm4DMAVPw9qP4VgiH66xvViueJx3HJIfiIJO
         TJCA==
X-Gm-Message-State: ACgBeo3BJh3AEav5faytvsFP9VMhqnptyxJHwwWEBGuQs2RcC5s335jG
	ZXjQvARarC+m4JFUCDbgWCc8eMZCM4ZAR61a
X-Google-Smtp-Source: AA6agR7Auj6AOlhVZlbVZtrEuwLFKYCM92naMY4eWpu5rwkNwKW7nHJUBM5mZvpNEOjAMvBZnaZi0g==
X-Received: by 2002:a05:600c:4f0e:b0:3a6:3395:ec12 with SMTP id l14-20020a05600c4f0e00b003a63395ec12mr9288036wmq.181.1661860636547;
        Tue, 30 Aug 2022 04:57:16 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <28ac503c-0582-8e8d-9f4c-c4164faf54d6@xen.org>
Date: Tue, 30 Aug 2022 12:57:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.1.2
Subject: Re: [RFC] Design changes for bidirectional interface compatibility.
Content-Language: en-US
To: win-pv-devel@lists.xenproject.org
References: <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
 <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
 <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
 <MW4PR03MB63479AF90159696CAFF7D6F59A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <MW4PR03MB63479AF90159696CAFF7D6F59A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 10:39, Martin Harvey wrote:
> 
> 
> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of Paul Durrant
> 
>> Can you send it to the list too? I don't see a problem statement in
>> your doc. What precisely is the problem with the current mechanism?
> 
> Problem statement, and some of the issues we are seeing mentioned here:
> 
> https://citrix.sharefile.com/d-sa7ef342dad7b46c1a06f77436f282e64
> 
> 
>> The currently implemented use of PDO names to match available
>> interface versions was very deliberately chosen to avoid the need for
>> any child driver to maintain compatibility with an older parent.
> 
> Prima facie, This seems to be a good idea. However, the point of device ID's is to indicate that the H/W (or virtualised H/W, or other discrete piece of kernel functionality) is fundamentally the same.

Yes, which is why we only bump the revision to indicate that the nature 
of the 'hardware' has changed.

> 
>> As
>> long as the rule is followed (i.e a new interface combo in the parent
>> requires that the PDO rev is bumped) there really should not be any
>> compatibility problem to fix.
> 
> You're correct that there is not currently a compatibility problem at the moment, it's just that by bumping revisions, and changing the H/W ID's, windows is not able to determine that the device that's been added to the system is fundamentally the same as the previous device that was in the system, just with some tweaks to the kernel software.

Well, we want Windows to think it is something new... that's the point.

> 
> We have two fundamental problems (as elaborated in the doc above).
> 
> - Net connection configuration settings get lost when we bump the rev ID.

Ok, and that needs investigation because the container id is hashed from 
the MAC address and *that* should not change.

> - We would like windows update to be able to update drivers in pretty much any order as it find them.
> 

And that should work because, as I said, any new dependent driver should 
remain inactive until the driver(s) it depends on are updated. I.e. the 
staging of drivers can be in any order but the PDO revisions should 
ensure that they actually *install* in the correct order.

>> I guess I should elaborate by saying *if* a new child driver is installed in system that requires an interface
>> that the parent can't provide (because it is older) then the PDO naming should mean that it does not load
>> (yet), and the older version of the child driver currently running in the system continues to be used.
> 
> Well, that's one way of solving the problem. The whole point of compatibility code is that it should be perfectly possible to get the newer driver to load in some "reduced functionality" mode.
> 
> This does not exclude the possibility that for interface changes which are bugfixes where compatibility is not possible (or reasonable), of course we can still bump the RevID in such cases.

Right, so there is no need for more compatibility code and I'd really 
like to keep it that way unless there is a fundamental reason why the 
current scheme will not work. To my mind compatibility in both 
directions will just complicate the code for no *good* reason.

The network settings issue is therefore what we need to understand 
first, I think.

   Paul

> 
> My document contains a review of all the interface chances for the interfaces currently supported between drivers, and they are not that many or large (in the grand scheme of things).
> 
> I should add from a "management" perspective, we now have more people in the trenches here, including a couple of new developers and some excellent dedicated test engineers, and if we need a 2k more lines of code, and a cpl of guys running upgrade / downgrade / siedegrade regression tests (possibly with results posted to this list), then that's not a problem for us.
> 
> If you wanted us to run internally with the changes for a couple of months as well, just to be quite sure things will work, then that's possible too.
> 
> MH.
> 



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 12:01:04 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 12:01:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394976.634564 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzvT-0005eM-N3; Tue, 30 Aug 2022 12:01:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394976.634564; Tue, 30 Aug 2022 12:01:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzvT-0005eF-KC; Tue, 30 Aug 2022 12:01:03 +0000
Received: by outflank-mailman (input) for mailman id 394976;
 Tue, 30 Aug 2022 12:01:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oSzvS-0005dn-8O
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:01:02 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 661e07fd-285b-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 14:00:57 +0200 (CEST)
Received: from mail-dm6nam11lp2172.outbound.protection.outlook.com (HELO
 NAM11-DM6-obe.outbound.protection.outlook.com) ([104.47.57.172])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 08:00:52 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by CH2PR03MB5190.namprd03.prod.outlook.com (2603:10b6:610:91::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Tue, 30 Aug
 2022 12:00:51 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 12:00:51 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 661e07fd-285b-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661860858;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=+I4FZXKh4YgvaikDu4V5hQmJD6Yc55SbPKH1PQzWbz0=;
  b=UROJ9M1aBpgPJ0IFlKRvqwtJZRa5gtu3ksWpqwFFtXB40H7l8G7CFZTE
   WPwK4sf2YxhLjXvMeGfHrHsd7qGZyGjWO0BevnjjXwoMmZJn6+1cYdRfZ
   h+QEBtcjztR95T0AMjU1WjweLmrLY+4mL+6octetJKSh9IPsmpao2suQL
   0=;
X-IronPort-RemoteIP: 104.47.57.172
X-IronPort-MID: 79381141
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: =?us-ascii?q?A9a23=3ALLrPBK4tqe0vXyfQ00Ig3wxR2vbMJeamayYv2?=
 =?us-ascii?q?z7Jzl8q3hzsZEP+nkxmKEPf8Hef3zy27J1ACkIEyQy1kr1dnnTDx0xjDv+Lc?=
 =?us-ascii?q?bH3q/f4j0SAuhIWJIdH7s7gamLLC8wTp/TFPo1Kd85gIQ0CTcEe/sAPYkbYd?=
 =?us-ascii?q?6gfoHWu1ZeRD5Mbqz2o85SDQfbGC10IlF4hnL/2cOwilYHshtBBrDLDLmmiF?=
 =?us-ascii?q?GYluwIRRqRkness3qMKm/BVHoJehKdu8//ZXueQpxkfbpfSQSiux9o0E3tqO?=
 =?us-ascii?q?Jzft6MlOO75hiJcY8daKAJO24XhM+eMmtfbG5fEEk15h+Zwcb79NFHrlVD+v?=
 =?us-ascii?q?Sumk5DwZXic7gnkvnQfF9FbUScYumyn5T6IPU2xKiuOUs+ZmC9IulQGQDFk2?=
 =?us-ascii?q?eB74pEsRTfudY4uf9ANiyw7UNo3pMXOR8hkb66J0qRSRiv4TQDwbAytFLlzz?=
 =?us-ascii?q?akDcNkKBz48ZOF5qLLQ3prmIEXVkyqtRfKYr9pxBBhJ9imyAN5f2PD7P5ihf?=
 =?us-ascii?q?DU81A0sbLvYvjxctCQoFD0VtsHFIrn0qP5N92Rc8Dy6MF6c/BXd4Fzb+uNxH?=
 =?us-ascii?q?G2CbwtMuYrshRlJ+7to4ok9H6UwMEonHYVAXiPg8dYPzlq90lhEu/w1sWTdI?=
 =?us-ascii?q?P/5Os7HFS7Fql5cB8czT/4bAG98vCcR2d83IdUQBtCPk2oY3aODUB1qCmili?=
 =?us-ascii?q?4iBdJTJUWpegw/DYMxIVLxcpwkAS6kHcfmWAg6zGdyImR2YNG2SPhGvWoJWO?=
 =?us-ascii?q?qK0BUUzukfBpzw7ynjQ73ZUXsIup5Mdr6C9CjE21mbrqL2AwNby5usl+VtUY?=
 =?us-ascii?q?BmTEVXLwHUBRN0y2SZlN5HIKaeaZmQNRkwFb06vIDRBNpvehHqUqcCYQLU7R?=
 =?us-ascii?q?ZFMVKKh5NbSVddxd2TSb9+8cF0MpVF2f22Gaukq4BXCRAzMyUFMOAjdRKEOP?=
 =?us-ascii?q?jfX5oslNnPlUrpT8rJ9PhylCED08HKKqAJ40ekqM3BE2mqxGlfpj0IhdJzSh?=
 =?us-ascii?q?vODmBl4Ok0o7Hy2VDlm06YIfzxH8hbtCqrIE4e5cyBGNpiQJEKI/Nz8V2kyW?=
 =?us-ascii?q?NrHaO9dekot3YqVJ160BEjA8ZC0ouOBGvMOIKWgMSjoosjUIv+2pKTVMcD0S?=
 =?us-ascii?q?PoXNmDLPoTgikBDBbt+h6ToQevRHEAFKHHYFmMAN5o745FJ/0gO2MEfYP4TA?=
 =?us-ascii?q?+jPdUdeUqTUdm7lIXLorsphT7OGneUNYtgOM8mw/PpuS9TNKKx1FWVIIv4/z?=
 =?us-ascii?q?qFmcEzWvhpKAan6Lo+/arEWeysmT07409g9oW9Jkpn9RgMF6+vxWayOPyGNM?=
 =?us-ascii?q?ZD7wCUCJraI45W8ZHb4tHG14yLBzkkwTdX2i/Q4cdb+LtzumyEWfBH1FXjqm?=
 =?us-ascii?q?Cdxd862nM20FYTwLV2feKwOzIgbqrVVtCqGALnT+o0+nGxrOzJHHia2gHzbC?=
 =?us-ascii?q?uhOygT/fuLkp47eEZp6VpqBoQaG28f7fiSeL5h/Nw1SIxd5FScweiFl4/SJ3?=
 =?us-ascii?q?TdNcFYYkhEN0B2ghPXLDEW3DqFlj94kMXXO9ByteSVshlwq6UqB4KCIy+jtK?=
 =?us-ascii?q?L/5dLkS+dcZgti3WDD68/rTI183ttffPm1ycLrRHuHrREbYV7k9Zuzzss/Gz?=
 =?us-ascii?q?C10N5SPiLEMt7ANWNJAVh4fvRLxf+5JahveKQY9vPIp38yEGsaXkJUjznlfg?=
 =?us-ascii?q?grb1z3g7oKj2ckTXNszI8W2SrEFoXyQ8YpaCAGivKIi7HAA7OH7C7svud1KR?=
 =?us-ascii?q?zjkKMvFj0uaqvQ1YaLuNErXrXPu1S0bJP9QUSxZ8EdYFDLlpF8EKBvE57xfj?=
 =?us-ascii?q?f+EYdtPYIG5VutXl+bjRdb3ljb4Y2Au26q0wKU4bIYxJ0SkDGqd+zNWZwK5a?=
 =?us-ascii?q?9EdloVxXfwkddvokmlTiWLlpyLtyoBPKmqr8vUFyqO4r4nBR5iNrgr2Au6hu?=
 =?us-ascii?q?Q4iiQIwI9qDhMkUH2YqNkifTJv9R53kidhoiCjDw5IT/oNaqgbDEqeYmz6QA?=
 =?us-ascii?q?UHNHJy5c+sQdy14MzV+QS5T3bEFgNn1QGE9hllPfQkHulua48vJMaL3K0wZr?=
 =?us-ascii?q?VCXgYgr6RIckUrrNVvytyQZg9EXpkmzoigNxgyiLPtHSXl68gGnHQfAl2Y5R?=
 =?us-ascii?q?cXZshBiJDswQrkDsy3hnOwdUrsHrzRJfIQe9UAcaiy+6xAU3W8VSmiRBbear?=
 =?us-ascii?q?EY60ajdCCn5608iNwWnSHdNC3AiAekfI9x/FCoVPwreku36C04eYqPV3MUT0?=
 =?us-ascii?q?eoFM5Z9EuYYeX64mW6drWVTkwTjhjgsuxKcvWvv4AALcfkF2sgSEVeIoubC6?=
 =?us-ascii?q?2r4nQviUytmGto5W+kVDuU6RGh4HRLbKPJtf9ajaYHEMK87f0ZF9qh0Gl8wf?=
 =?us-ascii?q?6fRBN3s4AuCmPbg7Ie/vvw5Ek8km5WHzgINJYqop7F+Df9uC2Xb4oORr7kx?=
X-IronPort-AV: E=Sophos;i="5.93,274,1654574400"; 
   d="scan'208";a="79381141"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=MmftRhyDMMGD8C6YoO3ZOUBRNFT4DH4HOL24uhe6n87Owkz3/IytRIH3Ad2tdJBM+Fckz5V4YPkYiTWqVqRiXCyLB1qaIvp2W8GgiXEWgqa6kyaZGjH22wdXHcI4cGLEq3AaWNdjiJ0Ve9XXp4KKRr3M5XF7tmFKoeyxH1K0V569wpT6gRsw3uLsyzV7VvCQOfjZWM7NgU3Vt+SmYe1gKTKCQ4DWfJ3awjF9uoPrOFKlEHfFFjt2vbqwpG+brx9QsoMuAscbw6ccYM0V1T/BXGmwQoie7cYepheZP0XlGnpr+aUu7y+FE1z/39xsrDb5mL0WgDMw9tAPqDFR9Xrhtw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=+I4FZXKh4YgvaikDu4V5hQmJD6Yc55SbPKH1PQzWbz0=;
 b=hniNoCJQIFO5MCS0Xcw3W4j5URp3yZADl3oCvkMHqwFRMPnQ9Awzq2SCxpkF8KpSkIRJWf7TRT62nNIqAtEiBrrSR42h5uJqs/2WkphjGTWvTTaauehmNbG+AMc2SyPwg8cpZZGBoQzU5plB5KNV3adkRC37rXifSUHmWYjR/s7T8R5RQI3HfEyouzQt5IZTp9kSZSuPkNvDkCQliBWp61Wj3UW525Dqhi/tqw5VCdv1egSiaNrFn2Jgvt53WsbQ3Zt7XPRh3HOx4weW0Beli4MVk/3TtPJSSIjWbt7bhWJeVAJKJt7OXUPu/w/gunnvGxcC3B0Qb1sEzQlJ8mrH0Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+I4FZXKh4YgvaikDu4V5hQmJD6Yc55SbPKH1PQzWbz0=;
 b=Kto7G++AbSIqc43XZE9BH8wok/XKG5XtvowP/eeawKe5zF8X/ltU+ngJJu7PK7EwGNfmdREGvxMP38VQ4fdcUB5ba4yFJJ0jiOoDvvR6pLOs6UFkzEdJa9S0rshcISkppQnsdPJs2JKVqjLTf51FTDdsxSRGjDPCvw7tuOQmf9o=
From: Martin Harvey <martin.harvey@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: Use of newer locking primitives...
Thread-Topic: Use of newer locking primitives...
Thread-Index: Adi8ZD8ojTv0cYRiTIesy/wwgsnlOAAAgQyAAABev9A=
Date: Tue, 30 Aug 2022 12:00:50 +0000
Message-ID:
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
In-Reply-To: <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 6c18c8f4-6218-4cad-6303-08da8a7f4896
x-ms-traffictypediagnostic: CH2PR03MB5190:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 KKXtWKDCfSCwrZGqXhlz7ox8/AZQsEQ+KU3VPydaSurL0N6zxKHf1BWAOQXrngPfeVq+Snlir/G4EP33IZvvvBIKu6P2uHW2xQQA4b4MS0lIZcPgDA7mVwmMIuqkIykDJvdzX79DaosD+EQFKmCVbUpXzMq9NQWik+fzyoaqvq1WX0iUo5nMPyngU5XBxSKRJ69W0nEZBJrZWWe9OAMEmKhSoFSIvdL+prD8mQjMw7PJM29SV+RX1nTs3uf3W3G+0FEtXfViPTyEmWKMSe4zbtjkjRf3zGBRZWH9hOqBN3eOruqaWGosc6ZTr/DK5ExWlmphL04+AC3BoJNYhBtTBhrfNaocsjhrxYLnzvI+Ty3s2N37w+qjeon1SS7DwgL5FQD53bcC5RX0MWHsbemz2H1n4cNYqwtgst/Yw7MRvovU20UUWhlsKCQSipQYSkkPv3649C7rNNQ3JNxcVCmWzlWfXgeNTpbdgHyQf9FeSyDK4IUMz/gIdQOUfsfZWY2O13n6MqhcVlawsA4dEzu/u59WA4gKUtdsFURo2L101UsI6Qp6080HfS3YvsYaHWV7gPogQmr5/eZ/FXNT/MdV4+kMBYwqumYgDOu6BGc3JDwYo7VwKWQF8ITvdqyWitRitFokgGl/4TREnW2oB0XA6V8CZ7JdFVu1fvacKaFiDUFgd5teGKjXXk33RgFVAQTWAWw2KfDBu4mwI4bDUlxz40X5X3BdVA8IuX4WYTNdsmMvV+eo0gUBqjZ7JT6vHtTK6uxNyA+G3iRm6VOfTNSNug==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(396003)(39860400002)(346002)(376002)(136003)(478600001)(82960400001)(45080400002)(66556008)(76116006)(64756008)(8676002)(66476007)(66446008)(66946007)(71200400001)(38100700002)(38070700005)(110136005)(316002)(122000001)(8936002)(55016003)(52536014)(86362001)(5660300002)(41300700001)(33656002)(83380400001)(9686003)(7696005)(2906002)(53546011)(6506007)(26005)(44832011)(186003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?NTEwdnFYTDJGZ1BXenJXeFUwckUwMmhjdEJ5cDU1Z2dMRWloUkZWOC9nQnli?=
 =?utf-8?B?TnU2RHpaS0U2dzRQOEMyQ1hkcnZkcnlSSC9ybCtXMEI5REMzTmlzY2dqd0J4?=
 =?utf-8?B?SVd1ajZhS0kwdXhRVG81RTlKZGdYOC8yRWE5M1oyMVdybFZnaFA1MnNRQlkv?=
 =?utf-8?B?OS9rMUJNbU83OFBxUnRpaUhtTDJvREM5UHRyNG5Vb3NYa3VoZjhuNlhXRGRs?=
 =?utf-8?B?UkFRcC9TUy9XbWZEc2kyT1FBN1U3V0VWWG05VzZXRG1XZFZMTTZxL1ppQlJx?=
 =?utf-8?B?bFphTkNZSURsSjljNTk0RXB2V2o2dnJkQ2IzYUJ5Y0Jtc09OUTVzalR3anpt?=
 =?utf-8?B?cGxhdTNJT1ZZVmkyNWVKQlFJRW5lWlVGT3Q3bUxGa2xYOVIrRnB1TUU5c20z?=
 =?utf-8?B?Z3IxSGtYMVk3TDRxcVkxQ21mZnhDeE1SZVFHeTA1VWJ1N2JwZkJ2Tk5WQWQ2?=
 =?utf-8?B?c3FKVkhZOGJPZ3UrNXVKMWFrTW93ejJyMWl4LzllclgvSkkrUmpPZHpJck1I?=
 =?utf-8?B?WWpXNTZzTkJ6ckpOT2FDVzZLYnBIYXdpUWtsZlBiNVFxb2tpMDNRb2pXcENX?=
 =?utf-8?B?RVpZczY0TUsxSTdWblRHVjltZksrZktJTEJWQXFiaFZkcVptMlhLNzhqR1Q4?=
 =?utf-8?B?R0V6alFJVGtESHhsdkdVeHk4c1RPWm5GUlNaNi8waDNPbEIyOXByWDlPMm11?=
 =?utf-8?B?V1E1a3F6N1FnSXVIOTRFQkszR0w1aHdPaVZOTmVDeHFYT0RwdDR4dkJlUkNM?=
 =?utf-8?B?OWg5emVtYVVVNW12TDJBd21HZWRDUkZKWm1rcHFPSEs2d0dLMVd0TVlWdGpF?=
 =?utf-8?B?L3NWaUhxdFZhaFdnL2RQQnpJOEpXM0ZzbXA5MWordmJXeXVhK0JpL2NlU1RO?=
 =?utf-8?B?RXZqRHluOWx0cDl0T1JvMDZLbWNEMjIzUUpqWXBLeXBzNFdmclRVQzZiMUtu?=
 =?utf-8?B?cDhtekFQSEV4cGROMGxYWTJmOUd3S1FaUFcrY3NwRkxIY0xYYXdKSC9LR0FS?=
 =?utf-8?B?Qy9SQkNCUytJMm1wMGxncUxramFRK3I2dVcrbTQyNHhZMmVYK3RvdXcrMlFp?=
 =?utf-8?B?ajVMMk5hcjAxNkdCcnBURkhBbjRHbCtqeWExazBJek5aR2h1NmMrSXFoL3pn?=
 =?utf-8?B?VDE2ZUdzc1JkWFNpUittaXRkT05kNUNvSTBpWDlPbEpaUklJNndONGg3Y2VJ?=
 =?utf-8?B?RmFpaXk1RnhqaHVQd1NPRUJRdTkreWFZa0dCZEQ5MnFjZ2hHUmt0Y0ZUUTVO?=
 =?utf-8?B?RGJ0RHhBNURIZHY5dExWVEhkTXRmVitYVDNESEx1UFlBaUJ2RXU5M0JhNys3?=
 =?utf-8?B?N3NtRHk5RkI1RXRJaS8zNmZHY3ZpcjkyaE0wRnJzMFpnWVVwd1cvNU0zaVQ5?=
 =?utf-8?B?RzJZckJOU3dNOURrVVY1THVoaWZKSGV5aFhaa1pyYVMwSEViZ0RlT1RXVGZX?=
 =?utf-8?B?QmFJQndwcmtxUkdoTUpDcGQzUk1pdGIzdkdoa0ozTFFCZ2Z6bXl4K2tjYVNQ?=
 =?utf-8?B?eUlqRURQbkRQRUduem8wa2pMd0g4YnBDT00rZW4vVHdGa3cvYXh3cXFPUEZi?=
 =?utf-8?B?T3puNWJSYnoyc0lIQ0ZWQmcwRmxEMzhteW5IRWJVOC92QS9mVzRIL0JhKzVu?=
 =?utf-8?B?QytldFh1c0VXMXZ3KzBQMTVpcXVLUzBrTFRCUEVoZDk1K0N4RTFGUzAxcWpN?=
 =?utf-8?B?MkpSL0xjczNOQVpRUHk2ZXBHNEhycGpwRUtnbEd6TTZSYXpQOXNQVnNqR1FU?=
 =?utf-8?B?R290QXJzNzQ4MFN1aGpHeG1YVEdsUW9Dak9jYm1ZT001cUc2VUdiS0pTdzlC?=
 =?utf-8?B?NXByZEozeDdNRnY1UkZuZXJaRUJUbGgrbkV3T29zRWliaU9GZDFZaUdpVytM?=
 =?utf-8?B?LzZvcmhVZ052ZkNhWTNBbm5lcFFIVnZSekJHWlRCYkxWdmdudnh1Qkp2VHFH?=
 =?utf-8?B?YUVXRGhDdHZXaEVnTXNzNXRMQzJES2hDQk5lZVUzUVBWUkhuMGt5QmhwYlZn?=
 =?utf-8?B?cGt0eUR6ZGtFSG0yeTdIOEYyaHNrbG5McG9sNnh1U2FQdnBhR28vSmpMWCtu?=
 =?utf-8?B?OTVXRDBoT04vMThXaUdxODlJNnJHcTJWNUdZM2ZKeERoSnFaUUovSXdIYldk?=
 =?utf-8?Q?MrPdvRbYDq2nLXic2liF63G4v?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6c18c8f4-6218-4cad-6303-08da8a7f4896
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 12:00:50.9016
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: bQGzKvjBuMKjrXNeH+1ZjYBMh6+aaECQn5Hf4CD/bdP5LFvOpx2taDYVPgwP52q9tk/P1NFYEjUzyv0w5YNXIG3NU7/mS5w70tZTb2pLQzY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR03MB5190

V2VsbCBub3cgeW91IG1lbnRpb24gaXQsIEkndmUgc2VlbiBhIGNwbCBvZiBhbXVzaW5nIGNhc2Vz
IHdoZXJlIFRyYW5zbWl0dGVyUmluZ1BvbGxEcGMgdGFrZXMgNG1zIHRvIGNvbXBsZXRlLCB3aGlj
aCBsZWFkcyB0byBUeCBqaXR0ZXIuIEkgY2FuIHNlZSB0d28gcG90ZW50aWFsIGlzc3VlczoNCg0K
LSBUaGUgdXNlIG9mIHRoZSBUeCByaW5nIGxvY2sgYXMgYm90aCBhIGxvY2sgYW5kIGEgcXVldWUu
IElmIHdlIHVuZG8gdGhlICJyb2xsIG91ciBvd24iIGJpdCBvbiB0aGlzIGFuZCB1c2UgYSBwbGFp
biBsb2NrIGFuZCBhIHBsYWluIHF1ZXVlLCB3ZSBjYW4gdGhlbiB1c2UgdGhlIGZhc3RlciBzeW5j
IHByaXZpdGl2ZXMgYXMgdGVzdGVkLCBkZWJ1Z2dlZCwgdHVuZWQsIGFuZCB0d2Vha2VkIGJ5IE1p
Y3Jvc29mdC4NCg0KLSBXZSBkbyBhIFhlbkJ1cyBHbnRUYWJSZXZva2UgZm9yIGV2ZXJ5IHNpbmds
ZSBkYW1uIGZyYWdtZW50IGluZGl2aWR1YWxseSBvbiB0aGUgVHggZmFzdCBwYXRoLiBUaGVyZSBh
cmUgcHJvYmFibHkgc29tZSB3YXlzIG9mIGJhdGNoaW5nIC8gZGVmZXJyaW5nIHRoZXNlIHNvIGFz
IHRvIG1ha2UgZXZlcnl0aGluZyBydW4gYSBiaXQgbW9yZSBzbW9vdGhseS4NCg0KTUguDQoNCi0t
LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiB3aW4tcHYtZGV2ZWwgPHdpbi1wdi1kZXZl
bC1ib3VuY2VzQGxpc3RzLnhlbnByb2plY3Qub3JnPiBPbiBCZWhhbGYgT2YgUGF1bCBEdXJyYW50
DQpTZW50OiAzMCBBdWd1c3QgMjAyMiAxMjo0Nw0KVG86IHdpbi1wdi1kZXZlbEBsaXN0cy54ZW5w
cm9qZWN0Lm9yZw0KU3ViamVjdDogUmU6IFVzZSBvZiBuZXdlciBsb2NraW5nIHByaW1pdGl2ZXMu
Li4NCg0KW0NBVVRJT04gLSBFWFRFUk5BTCBFTUFJTF0gRE8gTk9UIHJlcGx5LCBjbGljayBsaW5r
cywgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IGhhdmUgdmVyaWZpZWQgdGhlIHNlbmRl
ciBhbmQga25vdyB0aGUgY29udGVudCBpcyBzYWZlLg0KDQpPbiAzMC8wOC8yMDIyIDEyOjM1LCBN
YXJ0aW4gSGFydmV5IHdyb3RlOg0KPiBIZWxsbyBmb2xrcy4NCj4gDQo+IEhhcyBhbnlvbmUgdGFr
ZW4gaXQgdXBvbiB0aGVtc2VsdmVzIHRvIHRyeSB1c2luZyBoaWdoZXIgcGVyZm9ybWFuY2UgDQo+
IGxvY2tpbmcgcHJpbWl0aXZlcywgKGkuZS4gUXVldWVkIHNwaW5sb2NrcykgaW4gb3VyIGRyaXZl
cnM/IEFueW9uZSBzZWUgDQo+IGFueSBpc3N1ZXMgd2hlcmUgd2UgZGVwZW5kIG9uIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBsb2NraW5nIA0KPiBwcmltaXRpdmVzLCBvciBjb3VsZCB3ZSBqdXN0IGRv
IGEg4oCcZHJvcCBpbuKAnSAoaS5lLiBzZWFyY2ggYW5kIHJlcGxhY2UpIHJlcGxhY2VtZW50Pw0K
PiANCg0KV2UgaGF2ZSB2YXJpb3VzIHdyYXBwZXJzIGFyb3VuZCBsb2NrcyBpbiBhIGxvdCBvZiBw
bGFjZXMgc28gYSBkcm9wLWluIHJlcGxhY2VtZW50IG1pZ2h0IGJlIGRvYWJsZS4gSSBkaWQgdGhp
bmsgYWJvdXQgdXNpbmcgaW4tc3RhY2sgcXVldWVkIHNwaW5sb2NrcyBhdCBvbmUgcG9pbnQgYnV0
IHRoZSBleHRyYSBhcmd1bWVudCBtYWtlcyB0aGF0IGEgcGFpbi4gU3RpbGwsIHByb2JhYmx5IHdv
cnRoIGRvaW5nIGlmIGFueW9uZSBoYXMgdGhlIHRpbWUgYW5kIG1vdGl2YXRpb24uDQoNCiAgIFBh
dWwNCg0KDQo=


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 12:03:34 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 12:03:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.394985.634568 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzxt-0005lF-UG; Tue, 30 Aug 2022 12:03:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 394985.634568; Tue, 30 Aug 2022 12:03:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oSzxt-0005l8-RW; Tue, 30 Aug 2022 12:03:33 +0000
Received: by outflank-mailman (input) for mailman id 394985;
 Tue, 30 Aug 2022 12:03:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oSzxs-0005jH-2Q
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:03:32 +0000
Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com
 [216.71.155.175]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c2af5c42-285b-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 14:03:30 +0200 (CEST)
Received: from mail-mw2nam04lp2173.outbound.protection.outlook.com (HELO
 NAM04-MW2-obe.outbound.protection.outlook.com) ([104.47.73.173])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 08:03:20 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by BL1PR03MB6023.namprd03.prod.outlook.com (2603:10b6:208:31b::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Tue, 30 Aug
 2022 12:03:16 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 12:03:16 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2af5c42-285b-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661861010;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=xVbJeps8HTLp5qHxSp/hN1jhQRenUgumhvpuGwq86XI=;
  b=hY33ofe3bCyoPFYNueLrfTVpHRu7Kdhseh0okmWVvZ4SHl/BBkHul1PY
   9ezLj9ze+uALE0ptwO6x8YwtR/NnytfRi5r28/JJUm4N9+PMn5Oq1o2XL
   v0SlN9we2l6arGbn+aTDnZCfRlh2BF/fZM8cNmTIWCnVG6Rpd3T2c31q0
   Y=;
X-IronPort-RemoteIP: 104.47.73.173
X-IronPort-MID: 79089033
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:cNPYhKDYaZ+VbRVW/zjiw5YqxClBgxIJ4kV8jS/XYbTApDlz1zZWm
 DAdDzzTO/yJamr8Lt9+PY7l9BsFuZLWxtcyQQY4rX1jcSlH+JHPbTi7wuYcHM8wwunrFh8PA
 xA2M4GYRCwMZiaA4E3ratANlFEkvYmQXL3wFeXYDS54QA5gWU8JhAlq3uU0meaEu/Dga++2k
 Y608pa31GONgWYuaDpEsPrb8XuDgdyp0N8mlg1mDRx0lAe2e0k9VPo3Oay3Jn3kdYhYdsbSq
 zHrlezREsvxpn/BO/v9+lrJWhRiro36ZGBivkF+Sam66iWukwRpukoN2FjwXm8M49mBt4gZJ
 NygLvVcQy9xVkHHsLx1vxW1j0iSlECJkVPKCSHXjCCd86HJW1LOzudrNUUbBrY7ot5XG35p8
 vsWcxlYO3hvh8ruqF66Ys9Fo5x/aezUZsYYsHwmyizFB/E7R5yFW7/N+dJTwDY3gIZJAOraY
 M0aLzFoaXwsYTUWYgtRVM14w7zu3yakG9FbgAv9Sa4f5mHJ0A13lrjkKsTYa/SBRNlPn1ber
 WXDl4j8Kk5LbIzOkWHemp6qrt3PzXrYV9sgL72xyq5XuUCNyW4ONAJDADNXptH80CZSQel3O
 0UY+y8hq6kx3EOuR9j5GRa/pRasoR8aHsJOVuE39gyJ4q7V+BqCQHgJSCZbb94rv9NwQiYlv
 mJlhPvsDD1r9biKE3SU8+/IqSvoYHdOa2gfeSUDUA0JpcH5p50+hQ7OSdAlF7OpitryGnf7x
 DXiQDUCuoj/RPUjj82TlW0rSRr1znQVZmbZPjnqY18=
IronPort-HdrOrdr: A9a23:USRop6N7DQjJ68BcT3/155DYdb4zR+YMi2TDiHoddfUFSKalfp
 6V98jzjSWE8Ar5K0tQ4uxoX5PwCk80lKQFqbX5WI3PYOCIghrNEGgP1+rfKnjbalTDH41mpO
 1dmspFebrN5DFB5K6UjjVQUexQpuVvm5rY5ts2uk0dKD2CHJsQjTuRZDz6LmRGAC19QbYpHp
 uV4cRK4xC6f24MU8i9Dn4ZG8DeutzijvvdEFI7Li9izDPLoSKj6bb8HRTd9AwZSSlzzbAr9n
 WAuxDl55+kr+qwxnbnpiDuBtVt6ZXcI+l4dYyxY/suW3bRY8GTFcZcsoi5zXEISSeUmRMXeZ
 f30lMd1o9ImgnslymO0GbQMk/boXsTAjbZuCOlqGqmrsrjSD0gDc1dwYpfbxvC8kIl+Mpxya
 RRwguixu1q5D777VHADuLzJmVXv1vxpWBnnf8YjnRZX4dbYLhNrZYH9EcQFJsbBir15I0uDe
 ErVajnlb9rWELfa2qcsnhkwdSqUHh2FhCaQlIassjQ1zRNhnh2w0YR2cRalHYd85A2TYVC+o
 3/Q9JVvaALStVTYbN2Be8HT8fyAmvRQQjUOGbXOljjHLFvAQO+l3c22sRH2AiHQu138HJpou
 W/bLpxjx9CR2v+TcuTwZZM7hfBBG2gQDWF8LAv26RE
X-IronPort-AV: E=Sophos;i="5.93,274,1654574400"; 
   d="scan'208";a="79089033"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=f1AVVy3nTvruxY27XZaWU42RFB8G2QOj5mwYcQLJQb6TxboXBJnM5GLl6+dteFhbbWg/FmjY+KscQcpDht/a3wb7qyWDNrC885dfKU0ObXmQTi0fJrHpOX0/HV/m77hmSUcNGmuu9ZF5ybWPrnkMM13zDtC3moBx5TG97xGeOb7WvsheR+H2BFKtSIgkkSSv9M3pU58ibfJaqmYN6TK6jPePAIsRFtN+hRxWP6VVkC+H25Si8EwWO3yC0xyUoIjApE6O9VpjzvFPrtPxWEW8JTJiYh+l1tNHimL9KSzHdU2awUW1GjRLjXt38wO3bBEb6H5Xs5YglmjBcdyLBIaNwQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=xVbJeps8HTLp5qHxSp/hN1jhQRenUgumhvpuGwq86XI=;
 b=AKT1WBnj/Lr+MS+lcuMaCT2MlQJYNXw9Dx9EcPYW9WvrCbp1VTdr9HhESvXErSRSW9M83RH73XgRSHKKA/OprvduUuHZwlOwT9w4Q1oq28mO8IGBZRC8ROx8LDLUia8DzoRQC9DjmVqmjN6ijw9gT0d+CyaXMlNQrNASNBnf1WezGuzvBKJ0rO0A2q+OBXXmvLfWjlEz2g7ilebIq6sufSv06R9A2VbGCoDHlHlSmdKhel/y6FjVfnMuwsr1tmtiKlJVDfIaJePYIURKDm1p9l3rc6Uxeq9o0i2/kfNoAteWw92NiuuMdsDVc0V5YSoR6yFvYucqSnVOfazu9QZusA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xVbJeps8HTLp5qHxSp/hN1jhQRenUgumhvpuGwq86XI=;
 b=pmLqZz9upTMnRAEnRk5Ekp4WWk2cP07Kez/PsudI0OWQXVI+umTj+TIiBM1/uLnRFzxUbg1n2ZWD0JcngNPmUHYH5TP1GYLaIIr9rdqM3Kp5P0W9tlYiKLdBYSl4LuWsDRY/Cwc9A9h83Z8XWxlYYpoN/szZFgnT0PRtvISymfQ=
From: Martin Harvey <martin.harvey@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: [RFC] Design changes for bidirectional interface compatibility.
Thread-Topic: [RFC] Design changes for bidirectional interface compatibility.
Thread-Index: Adi3zfZIeioY1WCfTXGZlPfbnnICHQBickCAAABL/4AAvn1/cAAFMAmAAAAsQrA=
Date: Tue, 30 Aug 2022 12:03:15 +0000
Message-ID:
 <MW4PR03MB6347E3D795E990265B3BF34E9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
 <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
 <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
 <MW4PR03MB63479AF90159696CAFF7D6F59A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <28ac503c-0582-8e8d-9f4c-c4164faf54d6@xen.org>
In-Reply-To: <28ac503c-0582-8e8d-9f4c-c4164faf54d6@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 47db1b48-53d7-4f0f-0143-08da8a7f9ec9
x-ms-traffictypediagnostic: BL1PR03MB6023:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 4d05oJG8Ex4sEko9UesUZgqsSuI2/uUOnCficXL2ZhJBdJhGAsTDULFKShDZWtI2SfX02KbtS77q2a66V5Duaax2IDwAknKekokL02mAxteb0xKqRMq4mflbugctTTkEzQfD93YmauO/D2BllxDsZD5CG4PKZWqVjp992RFnUQaJd0pE0x4mBshswJa3oTBsyi8f8gGy1seE/8FXODqUIVfHqYhV2ezL/puFxAGxZz/nVPFBAEk1wBjGalHY7J2BhiH6nku033JJpIdCh3d3i1ioCpPNC7wfsPfWG5KXOjACF5vhzHiTbA+wjWN3C4OIbtVmPRVggLSbOsWzbtF4Qe44nfXLfo82dH3n/h8gOpLbO8Nj3EJEBZvXM7BsQ3STfvprTyBV303hH3vqliZShv7aQ29tnb861PwnOq5jxo1UEsJEJKIIyIisP5WPGe+ZvIiGEaWuBUJZYTMtSsUQonZCN758U+6EWsnjzVpqsEjFfwwpsebI1/Z8ykJ+7BtIdr9ulqSQE4+zxCRGrbufnu5LQKR+TbEpfN+JbSm1oCvn108q5bpbBAY1gBXR59SONX9fh9HgVHvbT1idjG3+ljWIvJJBIsCkiCk6LKLPRyG9AfaD8Qdsf0rsu31bqfz5zRZPznldrtVvksatgujsxT+HsA4eq6pOdMV7vKwNTTM/YH9WO2z36C9FSBNMQXRBXbog9vCasQLfJS5AflrzPrGxMAUupdXmqrz4J+7tiZ8iPkuLK1nZpmU4sqFF44wCeYY/w1HU8VpBwWl196o7Zw==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(366004)(136003)(396003)(346002)(39860400002)(5660300002)(8936002)(44832011)(4744005)(41300700001)(316002)(122000001)(52536014)(66476007)(76116006)(478600001)(71200400001)(66446008)(8676002)(66556008)(64756008)(38100700002)(110136005)(66946007)(33656002)(186003)(6506007)(9686003)(83380400001)(7696005)(26005)(2906002)(38070700005)(55016003)(82960400001)(86362001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?QKbeFCOKIA/xybqHHfKkirJFbB1TKUcRRlTtuHjXFmnooaQuMLimY17My6RS?=
 =?us-ascii?Q?tJmuOtrtAf9u0NBpzCNELSyKYEy3wcE+CKxEa7HiQKh8B3y3m6lR0opLWAeu?=
 =?us-ascii?Q?mwxw+yQ+osG9k8MU6Hbl/qatn2mbP6weslGD9m20ZFepIpR3NTOknfcElJIC?=
 =?us-ascii?Q?9YwAl/ajCS3cmUFOmgVkFCiftdP+VaCU+4j7o5uLBkgRy0/rjwCEK8LJ9vio?=
 =?us-ascii?Q?HBiCRRxq7IlUatFIuz01h0K6ASwQF9PL/Pp0nXK4bTlq3qFkQG+u1xILNwr/?=
 =?us-ascii?Q?5/CFMyuoLPpLVV1A7tyOxmfa4MRrOKKKhA04af0tGJUoL0PIlAEBPKyfGs9f?=
 =?us-ascii?Q?kXXcdlROBYRZjQtqQnCMCI08IuP8wjZRvIS1rgvQHEL+miw8P+3W7ZAgKnYh?=
 =?us-ascii?Q?+zS1P8UKo9L7cy7s9dtCBRTVQMzmn4Rm6J5pbu4r5aIrdJC0dwL+Jl8Nj25u?=
 =?us-ascii?Q?HWaty/LNoWN6fn4a9SS02NpwhMzQ2iLldBqmNutdAimNbqX3wqlaGTtcGloh?=
 =?us-ascii?Q?830BNhYQtDOMA2VgfuzuCQhns+GSrR49okkVPBfPVSZx1vpEpcRV6a0YyHzM?=
 =?us-ascii?Q?cJFdDzadsUbN0nselzIBVJO/YLOy+Y7lXiymiIWACLnN7zloOsAA41/Ld79W?=
 =?us-ascii?Q?IItqV/hqSlBrUyZDgJBrb/ZrjKz0U0LSWoBupZLEghZTfzFr1ShAZmjkoqZa?=
 =?us-ascii?Q?FFHCyxpTvrQu/IBN3Hm5pCfitmY6ty9KhDc2ufecu3HMcBngE9ws2//jUXAo?=
 =?us-ascii?Q?rhqplSKxxcZc0+zqA1sY8e8vxQ9igeGs5toCGMpxasAr1bZISCzRANHvoaNm?=
 =?us-ascii?Q?YBhAe8jVTziKX+3nlKMe422Ujbu7DLR+OdWiQ1rFzGj24OhIqnANv8WWvJHr?=
 =?us-ascii?Q?Sb8T6HGi3EwXQBVKt84pcwKkp9ZW8sO81lzkkVHoSyzevSHX02UGI1ctYeA1?=
 =?us-ascii?Q?CkZEBkY8KzPYEeg1ULsyXS9vbLkTD57dwoncVChpdb5Y0UHvvk7wOXh7YccM?=
 =?us-ascii?Q?eCT7h0saK+Xd97jvbYldYauS7YGdVduoZ0QALW/JAibKy0+hpNLklP9KXZWh?=
 =?us-ascii?Q?itDnNUMrwpS9OKT1QP3DxRbGi6QR8CgL3+ygvzBx3W8CnspExn+Xq3/2YShc?=
 =?us-ascii?Q?SifHc7VdxT/XkfgayDVlOkzJXoQkM1pZgBBs+zU7gfMUYpwpKYY9pMI0J7Jh?=
 =?us-ascii?Q?KsQxgWWIpprvxhp1E0/laj4xUE7+D1RMGEkCAvHcSvssz3dpvhKcedcovoPe?=
 =?us-ascii?Q?uFysteBJcyuxoZ3P3YGz45sAeYuPjMPQloXwJTbgOzMJjv6qZnBGAh2Z49OW?=
 =?us-ascii?Q?NZWIWx0JjGxDWYjivCmHJeIZg7rq0A8L3/bRJPsWAhFx51MulThGKZBWgJOm?=
 =?us-ascii?Q?3SAgwz6xWFX3CSFV3X4nCJkuH7QU+KvV79kPaPh4Uvo5KCpZZnFr/O5Az6gS?=
 =?us-ascii?Q?AxgPOfO82D4vHYZQOwGXxtdq1RmJaKsRjx6G3GqQER63LOtTkFAu+P725bVH?=
 =?us-ascii?Q?P9W6KoPJf7OQH+ypzQlHzsWQOqFbH4rAHKKy41uvgr4bhgePGA+4oAck+CTE?=
 =?us-ascii?Q?huIkxx7NhTOu2ZG+YJsBWMT4ctjZB+XBE7tl4nPG?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 47db1b48-53d7-4f0f-0143-08da8a7f9ec9
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 12:03:15.5174
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: bOKcm0oTPbT9txuLEQujPCLtPoAsU2Kn9h6t+Ug1Ro6jAz8gVGCXMKfezQQkk7WGstDsB++JwMqZ/pPxWWDITZh5rJSvmp39O6dQIFRazgk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR03MB6023



-----Original Message-----
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of=
 Paul Durrant

> Right, so there is no need for more compatibility code and I'd really lik=
e to keep it that way unless=20
> there is a fundamental reason why the current scheme will not work. To my=
 mind compatibility=20
> in both directions will just complicate the code for no *good* reason.

OK, you reckon it will be more pain than gain.

> The network settings issue is therefore what we need to understand first,=
 I think.

Agreed. There is something FUBAR there.

MH.


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 12:16:37 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 12:16:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395000.634582 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0AW-0007K7-2l; Tue, 30 Aug 2022 12:16:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395000.634582; Tue, 30 Aug 2022 12:16:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0AW-0007K0-0B; Tue, 30 Aug 2022 12:16:36 +0000
Received: by outflank-mailman (input) for mailman id 395000;
 Tue, 30 Aug 2022 12:16:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oT0AU-0007Ju-2I
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:16:34 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 95db7ec6-285d-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 14:16:33 +0200 (CEST)
Received: by mail-wm1-x32e.google.com with SMTP id ay12so5689343wmb.1
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 05:16:33 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 o8-20020a05600c4fc800b003a32297598csm12432969wmq.43.2022.08.30.05.16.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 05:16:32 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95db7ec6-285d-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :from:to:cc;
        bh=tA9mn7vs+y1LqbtSI1h+AggA0dVJ7SPTl4ihA8qVSyY=;
        b=GkrSaPTcCTm9Dr5x5VRHD5aaEzL8dbUOrLjg4CTJ9FxfvivtJR8eb3sstQnQRgR4+J
         IWvOnQHaQSjNOxSvV/yCovZ8vXheDNfsX7wJ8HjjcLD4teE41x6k49SryaUQZosSwRyl
         2P+LqWCMbDiQcHDPacSFpDZjyNRLM2JnVtG2zLd7wfU8nw23KHvSwsTZSEinVhAcrSIg
         aKgIXsp8v37uNuL5wBb7+F03ZmyE4cE8RCWbS6KBMWU7QK+wbMu2xlryAGbZMcnxlo1v
         Cq3aSwBz7zkrl2PFPWP1mJkVX8Pbux4QG5dg9PBjrf11udsERf8SEeD1q3624W1Kx83Y
         Mxuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :x-gm-message-state:from:to:cc;
        bh=tA9mn7vs+y1LqbtSI1h+AggA0dVJ7SPTl4ihA8qVSyY=;
        b=cMl/u4eROEf/8WbxZX2aWQr9mzOPK274HfxjI7gyX4gSB0IGWziEsExviRSk6ZyGET
         7M1BKtM5k/wre8D9BX+km351XLfFL2ozWzkN+LthOUoXM2gUbFsafcWgBlfXJl0cSt3x
         JzCoCVVTpouIFUSZo8mJjlligwotovNaO+PKvb/NckO1Wae86EFuTbTFPIfLySf0JBXu
         PiZ7tTz3GNDh990ZPdZkoA+4TBxBxSXDJ7NSZiBTtG78ogiB2ixPh3HhapHQh076NldI
         7gaKEMUgKk0SFg4w5ONeF2KTR6Anm48LHkuPGOjWH89ApPUvRFFOL7kij69Z1s8QIO3o
         6CJw==
X-Gm-Message-State: ACgBeo1iTn7BJYUNNpNQXHGR8FJ62INhgie7qFRZnjAV3D3TWGkf8meq
	16MVGj7Tlwf4ZTUmrCsHVc4=
X-Google-Smtp-Source: AA6agR4xgRMd75at5zQpvjFe5rajR21hbhAAEkFerTO5RX1yHX+07bsWuWMySpuWVRv0zWEBAhqN3g==
X-Received: by 2002:a7b:c451:0:b0:3a6:829a:6102 with SMTP id l17-20020a7bc451000000b003a6829a6102mr9695406wmi.12.1661861792615;
        Tue, 30 Aug 2022 05:16:32 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <0f2c650f-7488-f667-612f-3c5e351ad2ae@xen.org>
Date: Tue, 30 Aug 2022 13:16:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [RFC] Design changes for bidirectional interface compatibility.
To: Martin Harvey <martin.harvey@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <MW4PR03MB634774846BCA873EF7B623209A739@MW4PR03MB6347.namprd03.prod.outlook.com>
 <8370873c-5422-bd86-70b0-d17732c05b7c@xen.org>
 <b430830b-88e8-7513-5a07-284dd2c52428@xen.org>
 <MW4PR03MB63479AF90159696CAFF7D6F59A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <28ac503c-0582-8e8d-9f4c-c4164faf54d6@xen.org>
 <MW4PR03MB6347E3D795E990265B3BF34E9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Language: en-US
Organization: Xen Project
In-Reply-To: <MW4PR03MB6347E3D795E990265B3BF34E9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 13:03, Martin Harvey wrote:
> 
> 
> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of Paul Durrant
> 
>> Right, so there is no need for more compatibility code and I'd really like to keep it that way unless
>> there is a fundamental reason why the current scheme will not work. To my mind compatibility
>> in both directions will just complicate the code for no *good* reason.
> 
> OK, you reckon it will be more pain than gain.
> 

Yes, that's exactly my concern.

>> The network settings issue is therefore what we need to understand first, I think.
> 
> Agreed. There is something FUBAR there.
> 

Yes. I am sure it is written somewhere that the network config follows 
the container id such that things like the PCIe serial number cap 
(https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_pci_express_serial_number_capability) 
because it is use to generate the DO's container id if it is present. 
Hence by generating the container id from the MAC address we should be 
able to keep the settings. OTOH maybe bumping the instance id is 
overriding that in some way... which would be annoying.

   Paul

> MH.



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 12:22:41 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 12:22:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395010.634587 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0GO-0008F9-IX; Tue, 30 Aug 2022 12:22:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395010.634587; Tue, 30 Aug 2022 12:22:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0GO-0008F2-Fq; Tue, 30 Aug 2022 12:22:40 +0000
Received: by outflank-mailman (input) for mailman id 395010;
 Tue, 30 Aug 2022 12:22:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oT0GN-0008Ew-IT
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:22:39 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6fb6acb3-285e-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 14:22:38 +0200 (CEST)
Received: by mail-wr1-x42b.google.com with SMTP id b5so13979247wrr.5
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 05:22:38 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 m3-20020a05600c4f4300b003a84375d0d1sm8978592wmq.44.2022.08.30.05.22.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 05:22:37 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6fb6acb3-285e-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=sN1a9PSneIZJcc4F3SZLBpgo3RHn18M+KiBwGjyUARQ=;
        b=RZ0f5Os36HcBZFR1fZZXyXMgpcQe7C1BUp7QKY2Kf3EUAMCdsUhhQxtlw4M0rkDhE0
         E+5TPvoytFFsCxm9AVGLLwJxeZBTJer3r5suahJ9+Jitomg1LwCnoBeoFPeoibt1z5X/
         9Ogfu5jHGegAt+LjPCJflGGcR+lNkrd4hAWQETTegccJGTQgrpCnzm8JT+lbPexCX8y9
         PMlVshnMxqmUjuOZmGjV7rMsvU17LsWoQcdUSN3ohaLldWojSU/Av849QUgMVBtjo7Xz
         IFngqe3X0wdOCKCeqNz3Ag0vvpOytTFQhuQDVuJskudIK91nxmKaj6MnIuMNOcMTphmT
         t+Dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=sN1a9PSneIZJcc4F3SZLBpgo3RHn18M+KiBwGjyUARQ=;
        b=wIWrGJSJOyQXtngqzZPUpyUpZlrfjon+dHHoj5xEiMFPbV7BN6lO/vssu2W9EyO8Ad
         6l+i98nldlX9AXTkN013pa0cTu4fSTolTdHcGdo9UTtSmNE3ys0ZMPEm8IRURvIznAif
         40jY+NNJMRb7oVGPkGWxJmNyc9gBrXfpD4bBLJbwyO21NP1Z+czBgVRvAQKtqLHX2BON
         fefrBoXl4XtdNGsR+rL+ie2iCWXnyk5ePRBd8DlN4YUm4+BuIS+0DneI7/YK08S//St8
         Q4xmIItRPgaJQLIxHVQw455x5xQBPUs4bhY0xIJJOmE1pjUc67rANAgoMVKEsZ+UEqHX
         bJCg==
X-Gm-Message-State: ACgBeo2JMZR6sJWQ0u/mWpfIndIFCVN/kKTdNKNR4khRaflZjJf27/6w
	JB2j3CbfSKXCYgVFSLNpgluCBcNGvkcmKkRu
X-Google-Smtp-Source: AA6agR4jBKj06xGChu1kD/KfYT9Uew+Ia4v0/A4g5cglurFvq8xdvXKYf6QTUTsP6Zn727aBLi3+fQ==
X-Received: by 2002:a5d:6b10:0:b0:21e:4bbd:e893 with SMTP id v16-20020a5d6b10000000b0021e4bbde893mr8930177wrw.613.1661862158166;
        Tue, 30 Aug 2022 05:22:38 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
Date: Tue, 30 Aug 2022 13:22:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: Use of newer locking primitives...
Content-Language: en-US
To: Martin Harvey <martin.harvey@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 13:00, Martin Harvey wrote:
> Well now you mention it, I've seen a cpl of amusing cases where TransmitterRingPollDpc takes 4ms to complete, which leads to Tx jitter. I can see two potential issues:
> 
> - The use of the Tx ring lock as both a lock and a queue. If we undo the "roll our own" bit on this and use a plain lock and a plain queue, we can then use the faster sync privitives as tested, debugged, tuned, and tweaked by Microsoft.
> 

I wouldn't necessarily be convinced that moving away from the atomic 
lock/queue would be any faster. Limiting the queue drain may help from a 
fairness PoV, which I guess could be achieved by actually blocking on 
the ring lock if the queue gets to a certain length.

> - We do a XenBus GntTabRevoke for every single damn fragment individually on the Tx fast path. There are probably some ways of batching / deferring these so as to make everything run a bit more smoothly.

A revoke ought to be fairly cheap; it's essentially some bit flips. It 
does, of course, involve some memory barriering... but is that really 
slowing things down?

   Paul


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 12:40:24 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 12:40:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395018.634590 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0XX-0001fA-SS; Tue, 30 Aug 2022 12:40:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395018.634590; Tue, 30 Aug 2022 12:40:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0XX-0001f3-Pl; Tue, 30 Aug 2022 12:40:23 +0000
Received: by outflank-mailman (input) for mailman id 395018;
 Tue, 30 Aug 2022 12:40:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oT0XW-0001ex-FD
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:40:22 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7bc975c-2860-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 14:40:20 +0200 (CEST)
Received: from mail-dm6nam10lp2107.outbound.protection.outlook.com (HELO
 NAM10-DM6-obe.outbound.protection.outlook.com) ([104.47.58.107])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 08:40:17 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by MW5PR03MB7007.namprd03.prod.outlook.com (2603:10b6:303:1aa::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Tue, 30 Aug
 2022 12:40:15 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 12:40:15 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7bc975c-2860-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661863220;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=T4KKKyF3Hd3XH8LETIB6jnrhVLmFmK9Ljp5oDkT0MAU=;
  b=Cs2WaU1vLLNrE7IsVamjoo8pPVMS/cpAz6WBRLs3t5bafjbfqpwFP1ug
   UOuh5diwRWsp8WyIFcjZFtnWHM7ZwDx88XGsM9Fgd5ulXz0e1rwYlCOKX
   YgTbmE7NgsnszEbJQspY2Z0ylbPgsTvSU2jGuK0NB6uRWLQo3lXOsMMMy
   8=;
X-IronPort-RemoteIP: 104.47.58.107
X-IronPort-MID: 79821088
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:g4B346LzKUnG+9HXFE+RwJQlxSXFcZb7ZxGr2PjKsXjdYENShjADm
 2BMWGGFPviIZmf3Lth+b9u/oE4D7ZLdx4dnT1BlqX01Q3x08seUXt7xwmUcns+xwm8vaGo9s
 q3yv/GZdJhcokf0/0vraP65xZVF/fngbqLmD+LZMTxGSwZhSSMw4TpugOd8iYNz6TSDK1rlV
 eja/ouOYzdJ5xYuajhOs/LY8Es21BjPkGhwUmIWNKgjUGD2zxH5PLpHTYmtIn3xRJVjH+LSb
 44vG5ngows1Vz90Yj+Uuu6Tnn8iG9Y+DiDX4pZiYICwgwAqm8AH+v1T2Mzwy6tgo27hc9hZk
 L2hvHErIOsjFvWkdO81C3G0H8ziVEHvFXCuzXWX6KSuI0P6n3TEw9ZDFRgzFM4i9ud7O25ez
 8ADGjMfR0XW7w626OrTpuhEoO0GdZGuEKZB/3ZqwHfeEOosRo3FT+PS/9hE0Twsh8dIW/HDe
 84ebjkpZxPFC/FNEg5PVNRiw6H11j+mK2IwRFG9/MLb50DWxRZt0b6rMNPPZNGbbc5UglyZt
 iTN+GGR7hQya43Pk2PdoiLEaunnxzrGB4sdPpCCyvNa3QKrwlYfAxwOWg7uyRW+ogvkMz5FE
 GQE8yYvqKc09U+DQdz0Xhn+q3mB1jYDWtwVC/N/5AyTx6785weCGnNCXjNHcMYhtsI9WXotz
 FDhoj/yLTlmsbnQRXfD8L6R9Gu2IXJMdTBEYjIYRwwY5dWluJs0kh/EUtdkFuiyk8HxHjbzh
 TuNqUDSmokusCLC7I3jlXivvt5mjsGhotIdjukPYl+Y0w==
IronPort-HdrOrdr: A9a23:JLd1DaFU+cXNSnmupLqFVpHXdLJyesId70hD6qkvc3Fom52j/f
 xGws5x6fatskdoZJhSo6H6BEDmewKWyXcV2/hYAV7GZmXbUQSTXeVfBOfZogEIXheOj9K1tp
 0QOZSWaueAamSS5PySiGbXLz9j+qjgzEnCv5a8854Zd3AOV0gW1XYaNu/0KC1LbTgDIaB8OI
 uX58JBqTblU28QdN6HCn4MWPWGj8HXlbr9CCR2SyIP2U2rt3eF+bT6Gx+X0lM1SDVU24ov9m
 DDjkjQ+rijifem0RXRvlWjoKi+2eGRhOerNvb8yvT9GQ+cyTpAo74RGYFqiQpF4d1HLmxa1e
 Uk7S1Qe/iboEmhBF1d6SGdpjUIlgxepkMKgGXo/UfLsIj3Qik3BNFGgp8cehzF61A4tNU5y6
 5T2XmF3qAnei8osR6NkuQgbSsa4nacsD4ni6oennZfWYwRZPtYqpEe5lpcFNMFEDjh4I4qHe
 FyBIWEjcwmOG+yfjTcpC1i0dasVnM8ElOPRVUDoNWc13xTkGpix0UVycQDljML9Y47SZND++
 PYW54Y4o1mX4sTd+ZwFe0BScy4BijERg/NKnubJRD9GKQOKxv22uzKCXUOlZKXkbAzveUPcc
 76ISxlXEYJCjPTINzL2oFX+RbQR2j4VSjxy6hlluhEhoE=
X-IronPort-AV: E=Sophos;i="5.93,274,1654574400"; 
   d="scan'208";a="79821088"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=YXQbZJ7KQxrI9QrlO1ZTQJrdfEUrdfyUJW4GL8Kh/qCjTn6wp5lt/KivewzgXo7WxsvUGvDIy7oIU7w+brEiOy2iNZL6PaNP9Ht+yUNRz8RgG6EDldlmjIBurSn8hool18wrbPN31fvFu+drEcuxmfHBxOBaULSngfHGIV1qd27PwNSiBexLsQ8Q7n1e2H0VWIdTzjovxj0nxZQ9oHT3AbguRCOkMjK+JaeV7i3HSD+4xFK3NzlIa4+niwTXIR0eFsC8FVbtxr9U0rn1g/UiE7eku8zTr8tZW467DDmFVmX6NtmyWcO+VBL0UZpIRU26CNJwSkp/Q0PCKwJmzIdZSQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=T4KKKyF3Hd3XH8LETIB6jnrhVLmFmK9Ljp5oDkT0MAU=;
 b=jKYPshA3skAQRbwuVAkm032udbE3MTwS7we7JNLoHZkQuNH3aO6PForHkvXASVkrzBwviRO2y1cI7iZvNwEnnjfgyG1BUcFkVdMkLwjHdkz4omwdqi5jbhLR3sfM8UYVjNlBIkEwHxqchAjpV+wN461Gnu9tYWMdjBWFPMH+4ckevWvkHNKoALlA8ECmCEBrf+Panxhct3wEYhwp/JRsGE59q7ffsdrlZt/BRa3ynMnKSwB34DjvCFg1f8UeGeEvtiP4w2SwIOtEZwDyTtMOS9HyCKkn/DC6RQU6kVOHalafNAfalaE0H34k1LsohFCfkwcfvVSpN0s+sVXFRrotoQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=T4KKKyF3Hd3XH8LETIB6jnrhVLmFmK9Ljp5oDkT0MAU=;
 b=og1ac84cZYXY6XiPfmuXVrHh5dTuigZDymSrDSH148VKGRB1Tn2g+Ebxa95Jvx/+lYw7eTp4OsXRd1fvYbzn+X9tpGxu4hoR82WfkuGZeH6se2LLnDgxydrhNqpllO4We2QgTJ7Ug+PCWnYe0JidwwKR4XJhnTnyeczoN0+NlGk=
From: Martin Harvey <martin.harvey@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: Use of newer locking primitives...
Thread-Topic: Use of newer locking primitives...
Thread-Index: Adi8ZD8ojTv0cYRiTIesy/wwgsnlOAAAgQyAAABev9AAANxqAAAAa08g
Date: Tue, 30 Aug 2022 12:40:15 +0000
Message-ID:
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
In-Reply-To: <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 077963b4-f310-4f34-d216-08da8a84c9e4
x-ms-traffictypediagnostic: MW5PR03MB7007:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 24Yj8tlpnl7U2Ahd0rIbYBSxQXvonP8Zh2FnrM7jQjtnWVqW5fI30zv2N6mR3YNpValQBe7YfQ2lNvFijuZ2BWw3P8ciSkCVZ9FKmUiZG2Otx9P7PuTnNw54LhE4S8xWbcxuxv2CFCoaUyfQN6O9r3Wa2T5VhxrNceK9oQmmYy03CIOAdux7U/TqHATXSTerj/dJlWDz+rVVQGhRZbAlGGbUJd//7lEpJwbZGuTVoggcL52Qzcp81y6r2FZgAU7iMzidxYmC8Ppp2JglJ5i7SvDVVRO5LnsELVVKtzb9v98IC96hOzJj1/wIGkTwtXJmZrXoHK8o+kTjGqwH876ONCdR2Zln/EFXvMZuy5jzov5xLzzoSA3cvQOf0DrEBksmwt6MV9tP34xxovFWyoTfdxyCu8AWcqt3/Pc4KTFBoI5jfHBC0XBrgwiBZlTY+I8nEBWYAg+OJOx4Yhu7AFFbdq5LsLlYJu1AeSNHboL24ol1UIuqH32HBVErT3inIUha3gGupdtj9wHdxC02JvAUS+OGHzW/U8k+up5QdG/6HiifgjGHajbMeJw62F/cuuXf8pnxqXVlh4NVPn3AIcN1Ya6VQ+JeMZHK6Q5J17b6ampkIV7jhaai7/3cJW6s+nfmHDXMCqGpm9Xc3A7BR50kLXdBmp+yq2JVt57kCTOPgyPOz/tZrz4GmQ1g7lxWTP8i6djrO6gXILWLJlBsmiZvrIWWF8sGI5AmUsRQMZ7NTAuff4hblxcpQ2ugkC8WnB8OSXyp6pv7mWKy7aMFy75s6A==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(376002)(396003)(366004)(136003)(82960400001)(71200400001)(26005)(110136005)(38070700005)(478600001)(38100700002)(9686003)(186003)(41300700001)(6506007)(7696005)(55016003)(33656002)(44832011)(64756008)(5660300002)(66476007)(316002)(66946007)(76116006)(8676002)(66446008)(66556008)(2906002)(83380400001)(52536014)(122000001)(86362001)(8936002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?N0dkbkpWTk9NK1dueE5xK1BZams4SlFHcnpFcU55bDNMcTZqQmpRNUZoMUk2?=
 =?utf-8?B?VjZwQW9FUFRBdVUxQmNDQlRhVHlPOUVLRFVkRzY0S2pyUFB5ZzQxTE1xbGU0?=
 =?utf-8?B?MkNjVDBwSyttR0tuK1Mrcy90cXloeFNIUmpITm4rSUJweHFoQXVkS2w0Ryt0?=
 =?utf-8?B?eVhZeHFRbFA1SzZVS2VMZUlOTW5vUnZoV2h1eWRUamM5NzdVclJ3V0V5LzVl?=
 =?utf-8?B?Vnhid3FlNmMrZktyYmtSMFRTb2wrdWNaUVBFTXVNVSsvcE1JVnpXMVREWndM?=
 =?utf-8?B?RytsOWM5T2IzenZGWUthYVJYVUozSXRBRHhwelZQWEVyUnhnOVRVczlzSVI0?=
 =?utf-8?B?a1Q4QnlnQVhoYmFWSWJvTmU1dkh3RmkyRW9GUUxwUzZOYWIvbHAybWFPQzh1?=
 =?utf-8?B?Sk9nWFhuTmtTV0orSjkzankrZ2lYY3crQVR4SnhTSFJ6Y2ZOWUUyUlc1ZUFy?=
 =?utf-8?B?SGZ0cXAwRERhTUhGNUZIb0lIU0VGRkFlM09tSkNZbHVHL0tOVko4b0xUNEZa?=
 =?utf-8?B?WWU1ZFV0SnB3REdVb28xNEIvU0hrRnlnSHU1UFNFS3cyTHBJNVZ6eDBRNVg1?=
 =?utf-8?B?NUZRL2kwMTVwa3hvMG9wWDhwMXB5cTk2ZFF2ZFQrZVB1a0dKVldTV1MxWHBY?=
 =?utf-8?B?TzNWRk1OWHY3c2dBL2RYajFiV0kvb1JGMTJ6aWJ0L29zVlEyUEYyNkJ1ZW90?=
 =?utf-8?B?ZW1QTUsvMFkwd0c3RFI3QkpqWDJLNlNEQTAwQ24vNlVsRlZvdm14QzdlS0g1?=
 =?utf-8?B?U2JnVElvNmFZVFI4MFpsRzJLMnViSnNqWmNMc21RbnNFN3pRWGNwOStSZHZ4?=
 =?utf-8?B?WFBKYmcxY0ZpWFR6YXNieXpzZWhyMFJ3SlFXb1BqenZwSGlwVjdQTzZJS1V0?=
 =?utf-8?B?THk3dFRtOXU0ZGMxa3czazRwalNMZzB4QXVmcWRkNEdBZnNleXB1aVc3ZXdL?=
 =?utf-8?B?akJsUEhHQmc4RG5qMUNvZVVnNG93TFpJNkpIWC9IOG5uNlBsZ0FJZm81QTBy?=
 =?utf-8?B?ZW05RTdHdzRranFzTXExekd2MTYvbVhadnhhZDJVS0dwb3hDZnJuTFl3dm1T?=
 =?utf-8?B?NXpZLzcvWm44U1kvcUZPQXR3SWMvZ2xMNWY3azdjNE5BRFd3Y3dpREVycVY1?=
 =?utf-8?B?bE1lbm92dVQ3bUZ6RUI1OVpZVHFLRW1aQWxhNUV5dkFSZVIwS1Bic0ZmQ25l?=
 =?utf-8?B?M3BOaUIzUEZrcXdDN2dtRXV5MzVJMGRJZkpUR1dQWEFSWWYyUU5WWG9XcFZ3?=
 =?utf-8?B?RXBkY2RCYVhUSWtVajF5UjZPaXJFTnBselhpdVZpLy9ieWk4R3VjNXA3RmN4?=
 =?utf-8?B?eHE1Wm9LeVBzR0ZKSEFQaldHcXVhNnhGY1I5ZlVSVno0QnZlK3QyWWhDeWxT?=
 =?utf-8?B?R0o2cGhrWFg4cDkxYkVFSVVpWEgyUXhaUUVwUGE5aUI4N25ZWUE5c3drdi9S?=
 =?utf-8?B?L3NhbUxFUVkrZG9CZWQrQ3JXcHE1RUcxRGtZSEF0TlVqblB3UEtyYkhVbGxL?=
 =?utf-8?B?QUZBQW90WDgyOUJsM2lRRWVZRDA3cElSRlh3aXVJSXRMbUQ1amZKaEx1ajZU?=
 =?utf-8?B?WWV2WWlKeXhEREhrNHY1ODlqSzVaWk4xSlFFWnZPQWN2WVA0ZFBOT3JZcmdJ?=
 =?utf-8?B?dG9HaG1GQm5wTlhrbXprQmFZK2EwYjhKQ01sMkZOZkRMbGxHT2xyOENxb0gz?=
 =?utf-8?B?b2JrOUtNeUcvdUdwblFCcC9tdDZVVEQrYVVPVDFmVEo5WUE2aUlQQVZRcHMy?=
 =?utf-8?B?RFpsZVFJWDFPWDVCRVQrSGdoeHppT1N3TVFsQlpTRkN3bGN2RDhmem05cHJq?=
 =?utf-8?B?WXVtdVB6MVZhcFl6bmd0aG5PWUh2dUxybTVBSnNObW5FbTAwS3NndElBTGRl?=
 =?utf-8?B?cFR6RmRCZmlsSXhaTExHYUFYZmhlTXl4YjdlaWNtVDVpUTZ4UHZDbGtUUkc1?=
 =?utf-8?B?WGpGMXg4S0VaWHJlbnNPWmduRnU1TG1jUk1RZXlSZHBTMlBoejkwRllMYk80?=
 =?utf-8?B?THFNUExYdTJPWk9Kbkhmc2U3ZExtREh0VC9BMHp6NDNFa0VHSG5aRlg3WTdy?=
 =?utf-8?B?bllCeWEzN2dIS2NLb1M4aFRUYXUyMUZFajZTU1BXdHAxZ3ZWcFdDSzlNdCt3?=
 =?utf-8?Q?24Sb0nmza62e6/7FyUE/o3TFA?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 077963b4-f310-4f34-d216-08da8a84c9e4
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 12:40:15.3410
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: unOwYuSqP4hqhZh7OVbhTTjOzyBBwnCQHySh8Yl26YpRuDFPiLL6DAg36hZOGBZDYToJvh6nrig9cq6TpQOmdac0txofxmkv6gpD3kf2Bds=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR03MB7007

DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBQYXVsIER1cnJhbnQgPHhhZGlt
Z25pa0BnbWFpbC5jb20+IA0KDQo+IEkgd291bGRuJ3QgbmVjZXNzYXJpbHkgYmUgY29udmluY2Vk
IHRoYXQgbW92aW5nIGF3YXkgZnJvbSB0aGUgYXRvbWljIGxvY2svcXVldWUgd291bGQgYmUgYW55
IGZhc3Rlci4gDQoNCkh1bW0uIE1heWJlIGRlcGVuZHMgb24gSC9XIGNhY2hlIGltcGxlbWVudGF0
aW9uLiBJZiB5b3UncmUgZG9pbmcgaW50ZXJsb2NrZWQgb3BzIG9uIHRoZSBsb2NrLCBhbmQgbm9u
LWludGVybG9ja2VkIG9wcyBvbiBhIHF1ZXVlLCBhbmQgdGhleSBhcmUgb24gc2VwYXJhdGUgY2Fj
aGUgbGluZXMuLi4gbWF5YmUuDQoNCj4gTGltaXRpbmcgdGhlIHF1ZXVlIGRyYWluIG1heSBoZWxw
IGZyb20gYSBmYWlybmVzcyBQb1YsIHdoaWNoIEkgZ3Vlc3MgY291bGQgYmUgYWNoaWV2ZWQgYnkg
YWN0dWFsbHkgYmxvY2tpbmcgb24gdGhlIHJpbmcgbG9jayBpZiB0aGUgcXVldWUgZ2V0cyB0byBh
IGNlcnRhaW4gbGVuZ3RoLg0KDQo+IC0gV2UgZG8gYSBYZW5CdXMgR250VGFiUmV2b2tlIGZvciBl
dmVyeSBzaW5nbGUgZGFtbiBmcmFnbWVudCBpbmRpdmlkdWFsbHkgb24gdGhlIFR4IGZhc3QgcGF0
aC4gVGhlcmUgYXJlIHByb2JhYmx5IHNvbWUgd2F5cyBvZiBiYXRjaGluZyAvIGRlZmVycmluZyB0
aGVzZSBzbyBhcyB0byBtYWtlIGV2ZXJ5dGhpbmcgcnVuIGEgYml0IG1vcmUgc21vb3RobHkuDQoN
Cj4gQSByZXZva2Ugb3VnaHQgdG8gYmUgZmFpcmx5IGNoZWFwOyBpdCdzIGVzc2VudGlhbGx5IHNv
bWUgYml0IGZsaXBzLiBJdCBkb2VzLCBvZiBjb3Vyc2UsIGludm9sdmUgc29tZSBtZW1vcnkgYmFy
cmllcmluZy4uLiBidXQgaXMgdGhhdCByZWFsbHkgc2xvd2luZyB0aGluZ3MgZG93bj8NCg0KV2Vs
bCwgaXQgZG9lcyBkbyBhIFNDSEVET1BfWWllbGQsIHdoZXJlIEkgdGhpbmsgcGVyaGFwcyBLZVN0
YWxsRXhlY3V0aW9uUHJvY2Vzc29yIG1pZ2h0IGJlIGJldHRlciBmb3IgYSBzaG9ydGVyIChtaWNy
b3NlY29uZCkgd2FpdC4gSWYgdGhlIHlpZWxkIGlzIGEgaHlwZXJjYWxsLCB0aGVuIEkgdGhpbmsg
YXNzb3J0ZWQgY29udGV4dCBzd2l0Y2hpbmcgZXRjIGlzIHdhc3RlZCB3b3JrLCBhbmQgcG9zcyBs
b25nZXIgd2FpdCBncmFudWxhcml0eS4NCg0KSXQgd291bGQgYmUgKnJlYWxseSBuaWNlKiB0byBn
ZXQgdlR1bmUgLyB1UHJvZiB3b3JraW5nIG9uIGd1ZXN0cyB3aXRoIGFsbCB0aGUgdUFyY2hpdGVj
dHVyZSBjb3VudGVycyB3b3JraW5nIHNvIHdlIGNvdWxkIGFjdHVhbGx5IGZpbmQgb3V0IGV4YWN0
bHkgaG93IG1hbnkgY3ljbGVzIGdldCBzcGVudCB3aGVyZS4NCg0KV2Ugc2VlIDk5JSBvZiBUeFBv
bGxEcGMncyBjb21wbGV0aW5nIHJhcGlkbHkgKG1pY3Jvc2Vjb25kcyksIGFuZCB0aGVuIHZlcnkg
b2NjYXNpb25hbGx5IHdlIGdldCBhIDRtcyBQb2xsRHBjLiBUaGlzIGlzIHRpbWluZyB2aWEgRVRX
LiBJZiBJIGdldCB0aW1lIHRvIHJlcHJvIGl0IChjcGwgb2Ygd2Vla3MpLCB0aGVuIEkgbWlnaHQg
dHJ5IGNoYW5naW5nIHRoZSBzdGFsbCBtZWNoYW5pc21zLCBhbmQgcG9zc2libHkgdGhlIGxvY2tp
bmcsIHNlcGFyYXRlbHkuDQoNCk1ILg0K


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 13:00:01 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 13:00:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395026.634594 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0qV-0002kn-Ar; Tue, 30 Aug 2022 12:59:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395026.634594; Tue, 30 Aug 2022 12:59:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0qV-0002kg-8C; Tue, 30 Aug 2022 12:59:59 +0000
Received: by outflank-mailman (input) for mailman id 395026;
 Tue, 30 Aug 2022 12:59:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oT0qT-0002ka-Mw
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 12:59:57 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a53ca012-2863-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 14:59:55 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id k9so14159625wri.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 05:59:55 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 n123-20020a1c2781000000b003a5b788993csm11932118wmn.42.2022.08.30.05.59.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 05:59:55 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a53ca012-2863-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:from:to:cc;
        bh=aPmytcoH2+sHldaEQSTVUjetcTgnfsvoc4kh+d6/ODE=;
        b=YS4lJPBFsE2MEGaTrjBb69ZcBfJFlfSeZr6UXihAGI7Ph3GgtGUW/yLXdFE2BAVcCk
         jtpefJ03MzhfF9clXbr2l2076YFN+mj4OMEP08Ddi+VQ0bCFInzX2tKsZRAkbEE4gBD7
         VhrWMtkEqRw1stsWvc6/Xvl9TvtYlpQO5TDxjGDOKnwG3kW46zq3JPWDkpoZKh0juQFO
         y7x0CZlj7o4WOZgMhQPrlHdqvdKELuDNQ3gB5I6hub9eU+QygG80OVxSt+y1C58NhaSw
         MxuMyXr9a8jX2Y1IwWQuAdfWsHzEb+xaogebm2QFa67YCk4GEBEgkyg6f8RcDk0JpU7v
         4USg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:x-gm-message-state:from:to:cc;
        bh=aPmytcoH2+sHldaEQSTVUjetcTgnfsvoc4kh+d6/ODE=;
        b=YyoT9W/VJkhYf8ZGrVDo72c8izyzEoUcP8Ynnrm7VnXaQzcQXpOr6mBlieNEfKxdOn
         17UlOAophHn8oSEND1KBjCCGWrOxeN+OihaORUkw1LHbfQCrSxoV2jntMBF68mS1TLoq
         8k6L2tFdt6gYwuRK2zo3k+Og+vQVVkCDtZy3T/P0S6YQyr2OYetD6V+fk9tgO/BZXAB/
         eQN0S2HUo9rPR4O+qb+4rfZ9+yVEWwu7T7R2EZ7khDXScAtfOuUIWeVJCF2DyWXRQ5OL
         eJP+Ecuo0sk+qws8Dm2sL4faoiX0O7YR4OqJYR7HgpiDJs/eV/8ZYSwt2DKlARNJehNX
         oncg==
X-Gm-Message-State: ACgBeo2aKCkbPQCV79hi8JqFWc7J1soqEKqWsK8TjDMjQBpAnMBNQbqo
	n9FisRrze0s12qPoppalyek=
X-Google-Smtp-Source: AA6agR4NLPuRgONrKxF0OhNo6R3BuiBhN97OK6YFJ+uk2JyB5mweOG8X6HP+Dwkd/QNemJ311rJjSg==
X-Received: by 2002:adf:f942:0:b0:225:82f9:1c0f with SMTP id q2-20020adff942000000b0022582f91c0fmr9127940wrr.332.1661864395425;
        Tue, 30 Aug 2022 05:59:55 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
Date: Tue, 30 Aug 2022 13:59:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: Use of newer locking primitives...
Content-Language: en-US
To: Martin Harvey <martin.harvey@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Organization: Xen Project
In-Reply-To: <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 13:40, Martin Harvey wrote:
> 
> 
> -----Original Message-----
> From: Paul Durrant <xadimgnik@gmail.com>
> 
>> I wouldn't necessarily be convinced that moving away from the atomic lock/queue would be any faster.
> 
> Humm. Maybe depends on H/W cache implementation. If you're doing interlocked ops on the lock, and non-interlocked ops on a queue, and they are on separate cache lines... maybe.
> 
>> Limiting the queue drain may help from a fairness PoV, which I guess could be achieved by actually blocking on the ring lock if the queue gets to a certain length.
> 
>> - We do a XenBus GntTabRevoke for every single damn fragment individually on the Tx fast path. There are probably some ways of batching / deferring these so as to make everything run a bit more smoothly.
> 
>> A revoke ought to be fairly cheap; it's essentially some bit flips. It does, of course, involve some memory barriering... but is that really slowing things down?
> 
> Well, it does do a SCHEDOP_Yield, where I think perhaps KeStallExecutionProcessor might be better for a shorter (microsecond) wait. If the yield is a hypercall, then I think assorted context switching etc is wasted work, and poss longer wait granularity.

Surely KeStallExecutionProcessor() is likely to HLT while waiting, so 
why is that going to be better than a yield? Also the yield is only done 
if the interlocked op fails, which it shouldn't do in the normal case.

> 
> It would be *really nice* to get vTune / uProf working on guests with all the uArchitecture counters working so we could actually find out exactly how many cycles get spent where.
> 
> We see 99% of TxPollDpc's completing rapidly (microseconds), and then very occasionally we get a 4ms PollDpc. This is timing via ETW. If I get time to repro it (cpl of weeks), then I might try changing the stall mechanisms, and possibly the locking, separately.
> 

Right, that could be because something has just dumped (or is still 
dumping) a load of packets on the queue. Whoever has the lock has to 
drain the entire queue... that's the lack of fairness I was referring 
to. If there's a need to let other DPCs run then perhaps that 
requirement could be relaxed... but we'd have to be careful that packets 
don't get stuck in the queue.

   Paul

> MH.



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 13:04:32 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 13:04:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395042.634610 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0uu-0004Dl-1K; Tue, 30 Aug 2022 13:04:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395042.634610; Tue, 30 Aug 2022 13:04:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT0ut-0004De-UZ; Tue, 30 Aug 2022 13:04:31 +0000
Received: by outflank-mailman (input) for mailman id 395042;
 Tue, 30 Aug 2022 13:04:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oT0us-0004DW-Vo
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 13:04:30 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 470ed780-2864-11ed-bd2e-47488cf2e6aa;
 Tue, 30 Aug 2022 15:04:29 +0200 (CEST)
Received: from mail-bn8nam11lp2168.outbound.protection.outlook.com (HELO
 NAM11-BN8-obe.outbound.protection.outlook.com) ([104.47.58.168])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 09:04:26 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by BY5PR03MB5235.namprd03.prod.outlook.com (2603:10b6:a03:21b::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Tue, 30 Aug
 2022 13:04:17 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 13:04:17 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 470ed780-2864-11ed-bd2e-47488cf2e6aa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661864669;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=Q16Aj3Fwg0MSPQD+3YBWdDBCwOMazygfxBiNsokEyKA=;
  b=LVIIHr5f1V9x3TvQLT2k/K2qtfxVEd+tIW7Ki6Tw3/mjWmmsETEuR5D2
   crroQVYgemI1foFGG7Fqlvi8qGINjtM3zr9SIM9Rj2DhXBTGZRH8XFIYl
   nU43k0h0A5+YZVjIYv85mfoHseUam0tJ8bEZSlwT+V5JurdOSvBGK2xI3
   8=;
X-IronPort-RemoteIP: 104.47.58.168
X-IronPort-MID: 79824043
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:E7mYcKpY6TGEr4c/fsRztko6gGZeBmIJZBIvgKrLsJaIsI4StFCzt
 garIBmOa6mPa2akc98kbIS08ksF78OGn9JnTVRo/no2Fysa+JuZCYyVIHmrMnLJJKUvbq7GA
 +byyDXkBJppJpMJjk71atANlVEliefSAOKU5NfsYkhZXRVjRDoqlSVtkus4hp8AqdWiCkaGt
 MiaT/f3YTdJ4BYpdDNPg06/gEk35q6q6GhA5gZWic1j5zcyqVFEVPrzGonpR5fIatE8NvK3Q
 e/F0Ia48gvxl/v6Ior4+lpTWhRiro/6ZWBiuFIPM0SRqkEqShgJ+rQ6LJIhhXJ/0F1lqTzTJ
 OJl7vRcQS9xVkHFdX90vxNwS0mSNoUekFPLzOTWXWV+ACQqflO1q8iCAn3aMqU5xf96PHB+1
 8BFOQA2XAu5hL/t3ImCH7wEasQLdKEHPas5k1Q5lHTzK6ZjRprOBaLX+dVfwTE8wNhUGurTb
 NYYbjwpawncZxpIOREcD5dWcOWA3yGjNWEH7g/F4/NpswA/zyQouFTpGN/cYMCLQ4NVl1yGq
 3Pu9GXlGBAKcteYzFJp91rz17+VwXunA+r+EpWfydll0WGLwlAoNzs5Z2OwnvS5g06HDoc3x
 0s8v3BGQbIJ3FyiQtj4UBu5o1aLuxcdX5xbFOhSwB6MzO/M/UOVC3YJShZFacc6r4kmSDoyz
 FiLktj1Qzt1v9WopWm1876VqXa4P3gTJGpbPCscF1Jbs5/kvZ05iQ/JQpB7Cqmpg9bpGDb2h
 TeXsCw5gLZVhskOv0mmwW36b/uXjsChZmYICs//BApJMisRiFaZWrGV
IronPort-HdrOrdr: A9a23:frYu86y3fpntJcLx8MsvKrPxkuskLtp133Aq2lEZdPULSKGlfp
 GV9sjziyWetN9IYgBZpTnyAtj6fZq6z+8/3WBxB8brYOCCggeVxe5ZnO/fKlHbehEWs9QtrJ
 uIEJIOQuEYb2IK6voSiTPQe7lP/DDEytHPuQ609QYPcegeUdAE0+4PMHf4LqQZfml7LKt8MK
 DZyttMpjKmd3hSRN+8HGM5U+/KoMCOvI76YDYdbiRXpDWmvHeN0vrXAhKY1hARX3dk2rE561
 XIlAT/++GKr+y78BnBzGXehq4m1+cJi+EzSvBkuPJlagkEuTzYJ7iJnIfy/gzdldvfqWrCVu
 O85ivIcf4Dr085NVvF2ycFkzOQrQrGrUWShGNwyEGT3fDRVXY0DdFMipledQac4008vMtk2K
 YOxG6BsYFLZCmw6xgVyuK4Ii2CrHDE1UYKgKoWlThSQIEeYLheocgW+15UCo4JGGb/5Jo8GO
 djAcnA7LIOGGnqJkzxry1q2pihT34zFhCJTgwLvdGUySFfmDR8w1EDzMISk38c/NY2SoVC5e
 7DLqN0/Ys+OPM+fOZ4HqMMUMG3AmvCTVbFN3+TO03uEOUdN3fEu/fMkccIDSGRCe81JbcJ6e
 r8uQljxBEPkmrVeLyz9YwO9AzRS2OgWjmowt1C5vFCy83BeIY=
X-IronPort-AV: E=Sophos;i="5.93,275,1654574400"; 
   d="scan'208";a="79824043"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=XXPl3ZIl0nUH4OPmFi1ukh+Ov/OpEzQITi7oiI+I0tQP15FZ0Jjn8qwQ8BiMwHbphzmsIhJfs87qSbcJo1KublWDTvsQBjiCtD3XlyVCWRhSLGIOV5hvz3lkEmXK4Udf/5JyKKecou1L7nMtUqoWwETw/bjk/ODg0dDpPYGjify5NTgeq2c+KQxNUQaotWldbVAdGfHaPci2ZHaJcDhxSdOSn3sz/PQHLb71yX7uz3QHHt7JC2s6DMaxgWkcqOkZJvUDNODkfl1TSfNqTrgh/n0L/F6yQLDl314VUNuMAeq3oI9ZfY8ybUghZvaIgu7YXTzAlMA/9X0mQ+SzMHginw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=Q16Aj3Fwg0MSPQD+3YBWdDBCwOMazygfxBiNsokEyKA=;
 b=O4gnYDN4Lni8UkNpxjGDS8PMMzlG5Y8LZjRakU1YYGiLCdDAcFDdqKNTBIPEcuBi18lKuGbDY/5c8mJwZ7mcftCO387JrowYN1MLNgmEi4nttgdVZtxcVJGgC2ZYD+F+ADvLv1ARk3Wf9jwj7lpAGw32jtIrXe3nGpueY6QLkCvAM9YiV4dpouCBSadBls6f5Uz9A3tHKdbTz0BnHdXeujQcDgQJHRs7rwIRe7ob0ffJOgE5xIJeCREJb+eQ48DAynJVJNSIefX4G2Ap8EHW0xhViFfJSRmC7Ds9BAKRrDqEXkYw8zGNff0h3syUqp2q1/lwaScIgVAeTeYo+0Bzvw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Q16Aj3Fwg0MSPQD+3YBWdDBCwOMazygfxBiNsokEyKA=;
 b=KRdKai/4x6g3zoGa/5IFGgCoB//CX2gmlAqigZxTQf5YUMtsKXbTPIJVeqjlu1qqYsMMObrQncArvAjS2zOGTVXTJwZAUYkgPW3YSpRJHA+7StreoCU8JwuoEzfDfX+tmA0uQYoH9tls4fC9SPZKPoZ8J0RvBiW3FatKOGAQ/vI=
From: Martin Harvey <martin.harvey@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: Use of newer locking primitives...
Thread-Topic: Use of newer locking primitives...
Thread-Index:
 Adi8ZD8ojTv0cYRiTIesy/wwgsnlOAAAgQyAAABev9AAANxqAAAAa08gAADiLQAAAAxCMA==
Date: Tue, 30 Aug 2022 13:04:16 +0000
Message-ID:
 <MW4PR03MB6347CFAADC37A322536642B99A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
In-Reply-To: <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: db220965-a0e9-4e5a-852d-08da8a882522
x-ms-traffictypediagnostic: BY5PR03MB5235:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 M2IfcO699Nsy3anLGu/HqV8IqZv8HXO+4bNytrsUbxtJqTZj+F6wK3mj0h1pZS2WquR2u/xEpX6rN7v8H+hC2XMXI0V74/AsnCQzP1+vIFcXsfyUaYpn9id6abg55aSXNf7tE61gMci7UgLcfFivHz6SDg0QZ9zHXLYIm8ZZHbI1uUWVnQmRh3qAdRuDC4z0Xq157uOb+RrIfiiiEKiL2fWlrtffW+in0YXPbTh1xElcIPiUkSWS3jGObBIt6fnkTxojpqKbyD8S301XzG+QJPpVXj2EgiMl6R9yBCEhq2aTSrMHN7CPaqzg2yvw0K8TBHGvb9sJujDAwHfKBZKTfAgJluBAYP7YtNdq8RArp2kt1y7TUuz0Dw/79rVhQevxjdMjLj2OFqsSDTLyMhvlRYTZOJTCtfIbHcMVekrLxgUa8VRxJS4Wj+2LOoCQhmzN4qnxI7LtRoZHy5o0uo8lFH0i5PfoVbrXlxBg0ZqfrPC1VPfPinR71vWn8Ry836W/+0lUb/GKJ4nRMpa9kYa0EhWMHaIzax5C1Igce+pA8tnylAvBUVvEDbtQ2ohKEuApWdz+uqTADstA+K1zwBf+RSlD9eSuCKQ4LSqkx2fIJ6D3FSFM2dhnsw4sowatxfLYuqEa5DtWUDjMjS4DzPLmzBmCHWJuXprGnCwDmybfaPWfJYBt+9i2lKvcSiFS40dRchh6BKZFay9T4lMz/G5Nhf5H/YcYwZorqwABM1gLZCT/nUhh8+muRsThuN84hk9fy6Bdqk9f4rYcwpzb+WhqGgOdKD11x0i3mtu7+xUHrgk=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(376002)(39860400002)(396003)(136003)(366004)(26005)(6506007)(122000001)(7696005)(38100700002)(2906002)(44832011)(186003)(55016003)(33656002)(9686003)(83380400001)(82960400001)(86362001)(66946007)(66476007)(71200400001)(66446008)(64756008)(8676002)(76116006)(66556008)(110136005)(316002)(52536014)(8936002)(38070700005)(41300700001)(5660300002)(478600001)(557884004);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?WUpOcWpXM3hBbEpMQ1lPOXJJWmp3SnNXZXE3WVE2RHEvYlQyZi9kbGlVV0Nq?=
 =?utf-8?B?Qm9ic05XUmo3d012aERDOWdPLytwNWRhY3FTTjZZRjBBVmlTd0dMbU9ybWlV?=
 =?utf-8?B?cko2RWZVcmRGTG1MV1JVdVNvREJIVmc3ZStjM2FCekJueEhTUTBPWFBNaGkv?=
 =?utf-8?B?RUJmcHJ0aG0waExLSUNybGdNeUVTWmFjajlXWmExajRLV0NyVjFObHk3Q2RF?=
 =?utf-8?B?TUN2NmJWVzNveHg4cGh4VWVuWGlScWdvUU1WdC90bUt1anozWEtoVElBTlhH?=
 =?utf-8?B?ZUxabVJ0RHFPU0M5L1NRQUhlVS9HS1pqekdYZWUxS1RSeEFzdlZkWWxpTWhl?=
 =?utf-8?B?WW1zS2ZqL1N4N1M3UEpqQnJ0WFJEN3dEV3k4eFd6UkpwUjZ4Mit6LzFpN0dD?=
 =?utf-8?B?bkJKWWFaSHRKK2pvZ1IvSGNwci9peXZIS1dSR3F6RjZCSzl2Q2tycXRmTHFl?=
 =?utf-8?B?eGJnVGF1SnY3N01GRytackh6Um4yMWdQaTJDN3UxVEkvbGF0azlMN0c4Rkxa?=
 =?utf-8?B?QUpzRk9xU243enVHenM0dDV5a3o4NlhFdFRLSzR5RXNRS2QxS1A4RlFRN1dM?=
 =?utf-8?B?TFk2SzRGR1I0SFdWa3pYREdFZWxMQTVZcjdQVEkvcEViZXIrSGxicWlQUUN3?=
 =?utf-8?B?V3dReTRYZ0xkekRPTnB6MHJsaG92dVE3Vms4UndZbDFUK2dCd1M4WUdaa3Rm?=
 =?utf-8?B?RGMvKzNqMjQ4ZEZwcTNaNWY3SFpja2ZaSHNvM0JMVVY5b2pUMy9CZGZQUzdT?=
 =?utf-8?B?WkxuUnZoV1NjcldaMDZ6TUxUUE1uakxBUG40WHFxNnJTTEJrMHN0a2RVNEFL?=
 =?utf-8?B?VTlLWjlhRm9McFJLcEQyOWR6QjNldTgyUW4xL3dZRG56QktZcWFKdmpwdkgz?=
 =?utf-8?B?SWlJNnpBOVIzcU0wb3NsbW5TUFRSVjEyQXFjWGxpQ1ByTmFaOEUvZFcvQ1Ft?=
 =?utf-8?B?UVNlOWpoaS9IeFl2SVVhbGlGbFRVWEN2dlUvMHJEK0puMkpYTW1zQU9aZTZY?=
 =?utf-8?B?aE01ZG1HM1RVcXBISFZKdkVEM3VwaWZjUThhUkFBekNENGh0Qk83N3hkd0FR?=
 =?utf-8?B?L1M1Z2crQjhrcVl3eTF4dERSdkg1QytGdmRvWUJwYWtma3JZbThoTXZIcVZT?=
 =?utf-8?B?RkEzb0c2eVhpVWgzZ045Tk5ka1dvUGNVWjZqdll4QkNnME1DYlRFcXl0Q01E?=
 =?utf-8?B?cU9ydEsvY2RjbEhGcG80ajRXekhQb2NDd2tFNW01QTM1dERPZDNsUTJpRGoy?=
 =?utf-8?B?WW1SUWVVaWdpOEUvVElQaEFYS2pmdUdGUExWb1JRamtFUjNHUWVtNThVYi9K?=
 =?utf-8?B?RFRocFJveU9IbGJMOUpOSnZoekpadVJOTytXWGZMOGdhNWdwZEdLb2dhWDFz?=
 =?utf-8?B?T2hHSG9XQkFnY0VoUmxlL3E0L0gxbUtVdXVkSXcvL2FkWTZpeFNHU01PL1pU?=
 =?utf-8?B?MU1iR2ZMU1NzeFE4dHAyYzl3eXlydktlMC9rNWdJNnZNLzFNd05vcjdXM2pH?=
 =?utf-8?B?L1RzZ3BqY29ZNlpZaW9ickc2d1hoY2NzMGc1S0lySUVxcjdOVzVLNEZQSDl4?=
 =?utf-8?B?UU5uekxpUC8rWU5GVUpQU1JoQUlrREExSXJZdG5oMDl6UHhaWE1JbHo4aUt0?=
 =?utf-8?B?enptekVaWUVjZWdRZklIV1E4WkkyWENZMkhFZkE1V1hTMVdDc2xSRHpjQUE5?=
 =?utf-8?B?b2Y4cmlqcE9NSDJxK29Gdkg3UGJBSGZOb3NBS3RKYVAzVVJrYVlMbDRsR1pJ?=
 =?utf-8?B?VVBxUkMwb2xCL3dJVUlIM0U4c1FTdUI3d0lGZFZlREJqUitvdGExOW5LaGg5?=
 =?utf-8?B?NENtRHB5TWFxQnVaOWdBOUtDOCtoY0tEZUNZUzVGOUhpY0twekJManllVnhP?=
 =?utf-8?B?WFZwUDUvVlU0dTVKVlpJUFgwU2NucndHN2xRVWJXcWl0T2lQdjU5bkw1NS9w?=
 =?utf-8?B?UUVpRnhBb2lna29DZE1KT3ZVZWdSczQ5STQrZHhpeWVOVlRuZklHU1FLZVU3?=
 =?utf-8?B?MmdvanR1ZXdLcmtoeTZPbTYzK2M2c2VHdkpobWhxSU9zWlpaQW1TbzVyRUxm?=
 =?utf-8?B?ZUVMRy9kazRaVHVXOUZSREpPMXY3aU1XejBtQkp3MlJ5VnIvS0hsaDdlZWZh?=
 =?utf-8?Q?yK5OXc70EoTp3b8sIeVG5wNRu?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: db220965-a0e9-4e5a-852d-08da8a882522
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 13:04:16.9238
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: TsSASt9Z6y60IHPqZH+Pgk6c3dYbh1vVkMTAB+rz3VE7HLKuZ6IY8dVLHdc3j4TNiPec6Dk3g03BRmTnjYCQ9VlPyzKgOEmMsPpb3H4nhhk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR03MB5235

DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBQYXVsIER1cnJhbnQgPHhhZGlt
Z25pa0BnbWFpbC5jb20+IA0KDQoNCj4gU3VyZWx5IEtlU3RhbGxFeGVjdXRpb25Qcm9jZXNzb3Io
KSBpcyBsaWtlbHkgdG8gSExUIHdoaWxlIHdhaXRpbmcsIHNvIHdoeSBpcyB0aGF0IGdvaW5nIHRv
IGJlIGJldHRlciB0aGFuIGEgeWllbGQ/IA0KDQpOb3BlLiBLZVN0YWxsRXhlY3V0aW9uUHJvY2Vz
c29yIGp1c3QgcGF1c2VzLCBpdCBkb2Vzbid0IEhMVCwgbm90IGludGVycnVwdHMgcmVxdWlyZWQu
IEl0J3MgYSBzcGluLCBzbyBpdCBkb2VzIGEgUEFVU0UuDQoNCj4gQWxzbyB0aGUgeWllbGQgaXMg
b25seSBkb25lIGlmIHRoZSBpbnRlcmxvY2tlZCBvcCBmYWlscywgd2hpY2ggaXQgc2hvdWxkbid0
IGRvIGluIHRoZSBub3JtYWwgY2FzZS4NCg0KSSdtIHRyeWluZyB0byBkZWJ1ZyB0aGUgKndvcnN0
IGNhc2UqIGxhdGVuY3kgd2hpY2ggaXMgZ2l2aW5nIHVzIHRyb3VibGUsIG5vdCB0aGUgbm9ybWFs
IGNhc2UuDQoNCj4gDQo+IEl0IHdvdWxkIGJlICpyZWFsbHkgbmljZSogdG8gZ2V0IHZUdW5lIC8g
dVByb2Ygd29ya2luZyBvbiBndWVzdHMgd2l0aCBhbGwgdGhlIHVBcmNoaXRlY3R1cmUgY291bnRl
cnMgd29ya2luZyBzbyB3ZSBjb3VsZCBhY3R1YWxseSBmaW5kIG91dCBleGFjdGx5IGhvdyBtYW55
IGN5Y2xlcyBnZXQgc3BlbnQgd2hlcmUuDQo+IA0KPiBXZSBzZWUgOTklIG9mIFR4UG9sbERwYydz
IGNvbXBsZXRpbmcgcmFwaWRseSAobWljcm9zZWNvbmRzKSwgYW5kIHRoZW4gdmVyeSBvY2Nhc2lv
bmFsbHkgd2UgZ2V0IGEgNG1zIFBvbGxEcGMuIFRoaXMgaXMgdGltaW5nIHZpYSBFVFcuIElmIEkg
Z2V0IHRpbWUgdG8gcmVwcm8gaXQgKGNwbCBvZiB3ZWVrcyksIHRoZW4gSSBtaWdodCB0cnkgY2hh
bmdpbmcgdGhlIHN0YWxsIG1lY2hhbmlzbXMsIGFuZCBwb3NzaWJseSB0aGUgbG9ja2luZywgc2Vw
YXJhdGVseS4NCj4gDQoNCj4gUmlnaHQsIHRoYXQgY291bGQgYmUgYmVjYXVzZSBzb21ldGhpbmcg
aGFzIGp1c3QgZHVtcGVkIChvciBpcyBzdGlsbA0KZHVtcGluZykgYSBsb2FkIG9mIHBhY2tldHMg
b24gdGhlIHF1ZXVlLiBXaG9ldmVyIGhhcyB0aGUgbG9jayBoYXMgdG8gZHJhaW4gdGhlIGVudGly
ZSBxdWV1ZS4uLiB0aGF0J3MgdGhlIGxhY2sgb2YgZmFpcm5lc3MgSSB3YXMgcmVmZXJyaW5nIHRv
Lg0KDQpSaWdodCBPSy4gSSdsbCBoYXZlIGEgZ28gYXQgdGhpcyBvbmUgb24gYSAic3VjayBpdCBh
bmQgc2VlIiBhcHByb2FjaC4gSSdtIGFzc3VtaW5nIHlvdSdkIGJlIGhhcHB5IHRvIHRha2UgYSBs
b29rIGF0IGFwcHJvYWNoZXMgc3VwcG9ydGVkIGJ5IHNvbWUgZ29vZCBwcm9maWxpbmcgZGF0YS4N
Cg0KTUguDQoNCg==


From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 13:26:26 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 13:26:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395061.634624 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT1G5-0006lI-SR; Tue, 30 Aug 2022 13:26:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395061.634624; Tue, 30 Aug 2022 13:26:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT1G5-0006lB-Ph; Tue, 30 Aug 2022 13:26:25 +0000
Received: by outflank-mailman (input) for mailman id 395061;
 Tue, 30 Aug 2022 13:26:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=SoMq=ZC=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oT1G3-0006l3-W7
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 13:26:24 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5739cf45-2867-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 15:26:23 +0200 (CEST)
Received: by mail-wr1-x42f.google.com with SMTP id k9so14265504wri.0
 for <win-pv-devel@lists.xenproject.org>; Tue, 30 Aug 2022 06:26:23 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 z1-20020a05600c0a0100b003a1980d55c4sm14287945wmp.47.2022.08.30.06.26.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Aug 2022 06:26:22 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5739cf45-2867-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :from:to:cc;
        bh=CgIU++oEUVcPC7HN8MMuFF+xGHHtU+vnCXyPXGDKIvs=;
        b=N/FWrlbchVwWr1jwKIXW3pRbZdUIPmU4yca5inZXphx8XgZodYRae+JpHUPaDGYQdN
         C80n8sk5+NAjsfREoBqKFmEDaw1qM+ORzJvyuCa5hAMCgscJbfLElHa+byrv9D6UUK7Z
         F//0maPOcxK6CKfFhU3QHdnQuLpkymxN5kU5Bp2Q+rNxP6z/wgneLiyQiY1uyCd+xAd7
         v+g0/KCbe1KlSZBUtlAXBw6WtE+ElRVkK4e1M3moJmgUYXL8SlVlbPA2P4nYvkT1k7zD
         lZRdlZFAPjaz+ZrYcCHLJIh7jSJp6QRS7H9RvNCslpSA9dOVwswy/IToHxCWQRTw/194
         TttQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :x-gm-message-state:from:to:cc;
        bh=CgIU++oEUVcPC7HN8MMuFF+xGHHtU+vnCXyPXGDKIvs=;
        b=esvsaTZ8Zr9KaAy71i8lqvqm0nkIEO4TZE7Vffi7CUuzMiIc8FLd2NGjJstSKq23Xj
         Z6bM1OqIZGQIADe7sijclFnkbnsJC8b7CEQMOZeACq+LPS1v0caAdEs6CEy9hN5JnwqS
         wHtpmB6g77nPI4KKhHHdRpFCfIPCfLDyETkS/hbbbQ3HOZLCHzmY+gC5h024fi7YBPnY
         pnOnKsaIbTw/nWd4XTbb113upYLqRvdDVJNRtw13elqIPxnNIqNK5fEeBUqTytLW5Fc1
         NS/+5XtUh1q2WGFnBPEvZr9Remd20tgIlbwpCuIeIbN9s3oMdibWcr4ELeb+4jxOYVWG
         Tfkw==
X-Gm-Message-State: ACgBeo0G06Eku22sBuBid9JLfINKgz9Upu9OhjaQH9c9Ml+QcvtszfKV
	h48bEqtDu0lQ+DGDzEqC0pc=
X-Google-Smtp-Source: AA6agR7U0H6mJ6ZIyCl67WPjZy2Y84rlFndlDo6WKIA1aCa2xibE2YKB4dZGPYQQlXa/eInuI8DuWQ==
X-Received: by 2002:adf:dd11:0:b0:226:db7e:39e3 with SMTP id a17-20020adfdd11000000b00226db7e39e3mr5520141wrm.572.1661865982614;
        Tue, 30 Aug 2022 06:26:22 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <f8522c13-ef32-da7a-0951-94fa1883f3ae@xen.org>
Date: Tue, 30 Aug 2022 14:26:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: Use of newer locking primitives...
To: Martin Harvey <martin.harvey@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
 <MW4PR03MB6347CFAADC37A322536642B99A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Language: en-US
Organization: Xen Project
In-Reply-To: <MW4PR03MB6347CFAADC37A322536642B99A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 14:04, Martin Harvey wrote:
> 
> 
> -----Original Message-----
> From: Paul Durrant <xadimgnik@gmail.com>
> 
> 
>> Surely KeStallExecutionProcessor() is likely to HLT while waiting, so why is that going to be better than a yield?
> 
> Nope. KeStallExecutionProcessor just pauses, it doesn't HLT, not interrupts required. It's a spin, so it does a PAUSE.
> 

So directly equivalent to yield then. See 
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/x86/hvm/vmx/vmx.c;hb=HEAD#l4528

>> Also the yield is only done if the interlocked op fails, which it shouldn't do in the normal case.
> 
> I'm trying to debug the *worst case* latency which is giving us trouble, not the normal case.
> 
>>
>> It would be *really nice* to get vTune / uProf working on guests with all the uArchitecture counters working so we could actually find out exactly how many cycles get spent where.
>>
>> We see 99% of TxPollDpc's completing rapidly (microseconds), and then very occasionally we get a 4ms PollDpc. This is timing via ETW. If I get time to repro it (cpl of weeks), then I might try changing the stall mechanisms, and possibly the locking, separately.
>>
> 
>> Right, that could be because something has just dumped (or is still
> dumping) a load of packets on the queue. Whoever has the lock has to drain the entire queue... that's the lack of fairness I was referring to.
> 
> Right OK. I'll have a go at this one on a "suck it and see" approach. I'm assuming you'd be happy to take a look at approaches supported by some good profiling data.
> 

Yes. If there is still a copy of chariot lying around inside Citrix then 
some numbers from that would be good.

   Paul



From win-pv-devel-bounces@lists.xenproject.org Tue Aug 30 18:01:30 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 30 Aug 2022 18:01:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395124.634703 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT5YG-0002gt-UH; Tue, 30 Aug 2022 18:01:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395124.634703; Tue, 30 Aug 2022 18:01:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oT5YG-0002gm-RB; Tue, 30 Aug 2022 18:01:28 +0000
Received: by outflank-mailman (input) for mailman id 395124;
 Tue, 30 Aug 2022 18:01:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rF1E=ZC=citrix.com=prvs=234be146b=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oT5YG-0002gg-4v
 for win-pv-devel@lists.xenproject.org; Tue, 30 Aug 2022 18:01:28 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c1e817c0-288d-11ed-a60c-1f1ba7de4fb0;
 Tue, 30 Aug 2022 20:01:24 +0200 (CEST)
Received: from mail-dm6nam12lp2176.outbound.protection.outlook.com (HELO
 NAM12-DM6-obe.outbound.protection.outlook.com) ([104.47.59.176])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 30 Aug 2022 14:01:21 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by PH0PR03MB6591.namprd03.prod.outlook.com (2603:10b6:510:a8::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Tue, 30 Aug
 2022 18:01:18 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%7]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022
 18:01:18 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1e817c0-288d-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661882484;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=w0CAHC1tdq+K87bIuzvcDujVATdTze37aJx6xv2mzak=;
  b=PhNtYtwCpicmFLwmJKVk/bpCNdNUz5il3z600mJp/RUB7qceQfK1wWzK
   T7VhC22bTRak3NE2Y2P155lk5XxwgbfcNCh96FZxAM+q1FJo4fOJZV4O4
   OEItDDaJvp/8yuyBPwYGTjjYsORdWey7dtFBDSRDcbzAKSDPfNO0CY9ov
   0=;
X-IronPort-RemoteIP: 104.47.59.176
X-IronPort-MID: 79415173
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: =?us-ascii?q?A9a23=3ArevnYqJZwaHpz4jHFE//H55yty3KRhNe8xNQt?=
 =?us-ascii?q?wglJ83Js8Nw70h2pDvUis+CsALUu3xhte5ftD2d3sJWGzaqAWgaC2UT0lZKa?=
 =?us-ascii?q?E8HB7xi8Y+W2h5vleXXfoSKF6waErvD6yQQTSP6+N4mEfuZzHK+TlRcga75l?=
 =?us-ascii?q?py69uiMPD8YdBW6+2LwzgwFrBQMWgYONpVPY9c5JPlDeZvUrBc2FU2v5GoJV?=
 =?us-ascii?q?QFYUL9eCGZRy7riXb8wqtSoalATRynFKkpT8+LlVckt9VmO19Wv+QRFTvaMy?=
 =?us-ascii?q?bNPc+pyHkcChzyrGPEW42Q5vRo/NiUfagwXU2OutBQc4JZBYhnE7DUB93s6x?=
 =?us-ascii?q?pXMGLFgEpJdyR77sZiCmhpe+lSBy7Kw+F8w+3IDjCUn+1AcJmJS8L3mFlQi0?=
 =?us-ascii?q?10CglyFjkkKrQDdC33c6BzUkebLMU+wM4TJW5E27ri89neMKcB9sdgNxDYrx?=
 =?us-ascii?q?9wOcJyW+GAwxVq4lGuYu3MSO9bYTHK+VYHrg0qbWf5BYq2H9kWLHMtb3yGxG?=
 =?us-ascii?q?cu3pj2UtQQOi8Vbf0XFXyLlQoq4gcXjZ8FAWge+SxCCTlLoiyDEPo3aNhRsF?=
 =?us-ascii?q?vGIKPgyBngVXlKm8Uq3VnNOz5vB1ptN6GyarITkwrowL8EkgilxDxa37RQLE?=
 =?us-ascii?q?Mk8ooX5cakKnMrzWZNhom1qwLxVos9d2tnTXjBZAL8c+WvpLHPIP1vVvqh3o?=
 =?us-ascii?q?nbd6EhKmKpiC4BRQXMb0eOY+zrcfODS5reT3h6j5pxC1xShpj5UIxsLmIctn?=
 =?us-ascii?q?M3CS5/KazMd+fVAo5xpdFL8tiWaA0jmB34UAqP2eNH9Kjs6h4Au+ssGUrqm0?=
 =?us-ascii?q?IsoLl51MszX7+PPNALThXLdSRFcOKOHMumzSSysE+QZ67wLpCGCYTLP7WK7E?=
 =?us-ascii?q?IZ9ejvi8qs7JlDTVzGAGt3q9SAzb/A+smUf9OmvF82EBUtNcItwFfXkaX0Nh?=
 =?us-ascii?q?s2+8B4visZWsZZMBjY/BALL5v10IOyQqIWUlV4G+pBtXx05Qrb0ioc/3hUnr?=
 =?us-ascii?q?sWwGLXTq31RWGoeSwX+iKeuEiDEgC6UDSmAxuQTp7WDn+XaJZEwT9Y+TLBRM?=
 =?us-ascii?q?UUJCUpQAB0IBEu4OkeJkbNa5ZGHe+a1kfVwIoFTKEC8yDegl6gnBNytfXvs5?=
 =?us-ascii?q?bNdnDBAAfAH1zX6ranIrEkk/xcNq5TsMFuVYcBg/TWiFivCXaEGVnhJ3nBIJ?=
 =?us-ascii?q?IiCVvWKbwvSNs5KRI0cs1LfAJWXjaIiuBcYXJHxZITCcl768+R31SAVRXb/v?=
 =?us-ascii?q?LpWAqB94EJYTwHIGLTV0cURapMzSVWf1z27zHa2aAzCh19eqfvcMVW7bpLZH?=
 =?us-ascii?q?s+KFqYXiuidqG+MCJODtZB0O3jAmQKv7qnVHzCiXRzMB/PTVjxzUC4to2vq+?=
 =?us-ascii?q?sS4SEhfBzjisByHJ+qCLLaT7fYONTzlkqCGhoIN8FOrKRBc+eFg4qb975Nsu?=
 =?us-ascii?q?JsCsIrKGPjPFr8wNWAHa3ECjrVrKHWCj8zlPeNj6jsGwTh14S0p1X6e1ZBRs?=
 =?us-ascii?q?x4a6gMbr6lPZ7zyqMDsL0k67Dajwy3jl7ucM4vKfUm9pvJHt2VPBlki7NV0b?=
 =?us-ascii?q?CzqFC1+0+nzCstbBD+Hse2tbDJagHn03V650Fsnjx6vWVyvyZxTJNJnqUAH0?=
 =?us-ascii?q?0wzdj5YBkB5CQgcSpL0XJt7hen3LgeUJMDS34wlrggG2YDVteHlhcL1KJ+nL?=
 =?us-ascii?q?i3rBeE3tk2LLeZnMkjvdLwfRkjxBOiTZ95nyqL+9rxPE3uxDkE53H+mVer36?=
 =?us-ascii?q?OH4TNDtSC88bDYCmVjA1c9GaYweTiwPgc0lKNyDY9tTA4IpNuQc+P9HxWXPE?=
 =?us-ascii?q?yqyi7Auy1WCB4sZu8Wms6tdlAnwNPBgIJjod8eltZWmGE+0SZ3puKpChn1px?=
 =?us-ascii?q?9z/JSnQz1Tww8/+0G3/MmmmTWdIvRGMjzfUmN5TeiTm2rYfr23bt1/JWMz37?=
 =?us-ascii?q?zJegtN/drE7TuTWa4e6JEpECzshAB2hFQDVAJOtWDhsFwejufkmfCP0Mm8Ki?=
 =?us-ascii?q?5F3jRCc5vmtJG+vAKf7SAWcBbd79vAtegNDthY6y+Tl+SnnDehKGwlRqftLc?=
 =?us-ascii?q?EPtrcqN7j6D7JFfP6PDZYc/YQuGtkkRxl4FBWmyX1yggbpZp0HmsvMKdxdKo?=
 =?us-ascii?q?zvTld4pZe09kWbM6KcMrF1nsscShJHcJcxZY5OhFPB9GLzbhvCkY7XGwq10Q?=
 =?us-ascii?q?aETCXs8P19MTFVT6MFjRugD7ANm1JwImfnP5lUfMdQ7uxdI3L9aG/24qoIBq?=
 =?us-ascii?q?jn+NK3qBQznAACm+xsxUXVr64ae0Z/hmzBG0I952bjlmAwPnawigYTxlv90B?=
 =?us-ascii?q?t2cxVZi9KIYqq+IwVyelQ6X7FM1H9FJqykPWLZA6gAP5JjJobdrOe+rBl8UK?=
 =?us-ascii?q?ts7IvPrK6bQYHC5A+MdzN2Hm1jkkrv+RivCc32xBwK6as90ok3R0Mk=3D?=
X-IronPort-AV: E=Sophos;i="5.93,275,1654574400"; 
   d="scan'208";a="79415173"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=bhUeqKTxh2LlEGqCW9sfSQuS9H906+phR7oi8s9RdjeHn/tIx/KvB+97yfzpcD8S4AQ0AVQBP22dH+284rBcqVbb+pLwJvb7PHlpXyZWA335zhgIzoH3DEcJoVh4KUGhh8U2yR7RzwPA5RjyftHoMA4tcJwckmJhaOv3WwLFK9xwewdxEiDbYFFnsFFDUuPFFC62LVpnjyw6CDz+cRokmjixSmkO5ALvvkRJogInUVxDZdQb0sr+NYQlgOLjcB5fg4u3V2v/07FaplCBsIQP4uuw+VkrsFBkTqZ2pS1zfVQjpxqc315zemiuRwaWz8NL+a3Djr5yR7C11d3+GYaknA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=w0CAHC1tdq+K87bIuzvcDujVATdTze37aJx6xv2mzak=;
 b=c39OB/QB9TLbm59TW6ZSha0u/n0UosjysKCz1QkmVYVhtmGvUBcSQjV80Cl6py42+W9njzcZhbPz74zlFxoyOHUOdl29fqQo84UCXlljWcBT7yiQsyvSbbpxTTt0oNAa4zszxXzM+q6bxy7U2FUhkwnqRNfvUwoL5xBXzzKTC0lFUY5BaB8wAzT7v/T2pGX21m3IGRUHUyziDhDd14beNDMBhQ+CNt0LU4QUT9felt2+0gndGlLdOaSVPfNcfEZ4dLKsB6rajSrFHa9MQEGrxFIhf/2APm4CcpVSMQkNrAP8hSGOUdLe9iECYQCiBkLwKm/2BZt/jmeFUgSX1JbHNQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=w0CAHC1tdq+K87bIuzvcDujVATdTze37aJx6xv2mzak=;
 b=gR8X7oxyriEoprVTDf0rb4eAQMI+pQPr9s/TPHj5joOvu8zx54YuqC4V8V4ScSSySrwtP4eUGSl3wG1H4ioXmVdUPw8VOcv4k1GQjS7mnq+KqIFkBoxIs4UAgiuoALLUOPiblXSfVMLVGTfmUdX2pIDueRCdnNUXenX/mTLaU7Y=
From: Martin Harvey <martin.harvey@citrix.com>
To: Paul Durrant <xadimgnik@gmail.com>, "win-pv-devel@lists.xenproject.org"
	<win-pv-devel@lists.xenproject.org>
Subject: RE: Use of newer locking primitives...
Thread-Topic: Use of newer locking primitives...
Thread-Index:
 Adi8ZD8ojTv0cYRiTIesy/wwgsnlOAAAgQyAAABev9AAANxqAAAAa08gAADiLQAAAAxCMAAA4DqAAAl8XAA=
Date: Tue, 30 Aug 2022 18:01:18 +0000
Message-ID:
 <MW4PR03MB6347A7370E7A9F5D4FBCCC679A799@MW4PR03MB6347.namprd03.prod.outlook.com>
References:
 <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
 <MW4PR03MB6347CFAADC37A322536642B99A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f8522c13-ef32-da7a-0951-94fa1883f3ae@xen.org>
In-Reply-To: <f8522c13-ef32-da7a-0951-94fa1883f3ae@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b908ce15-662c-4b0c-8c10-08da8ab1a39a
x-ms-traffictypediagnostic: PH0PR03MB6591:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 2pyMwabMCdZZSluIOLo+eambCcsVZFPl1z+wbMGSJrNmcVzT0DOvqCgiPK88Wku0hTx+wsXsF7Py/8CoIOi178dpfoGpbtwK0QfiSJI9MKfdyg+4kazUnEtdRYOUeqUDCpJkdkgobpAA/dd0FaOmKGIi4o/pQmi/pWNPmaSBy4tBLNBLVg1dmfzsnBD0TgxmbZff2Kg/ZcNxWldnK5VOlvrgYdKkDpU+Q6NSsuyEM2TG3hEQHH/FwtqkHMu5iryh2Y/WLP5j6uavCHbR5PE6hmjt5NBjfcw1rJA+Lwx9ALvlvudbQdSSTMoph8AIiYeL2iuvqdTC2mvZ34x8uqQQTyqoE5skX75P6P164SN8ydy3BtKQTCyegOED6e4zr8UrsYDQ2zIuuzXuT4HZB/e7N2xC129DCIOkrgXV7Z2CuxpjIyzueL+EviMKtJcnDoKQqQj6qs4hJ7wenrP089owEyzvMb2Ex/rVQ+Lgzu5KXzYn+uOFvkP391fB5IUDI1PJwQ7WMYQ9J+LLtHM8r6uQg8n5YDrZQO8TLCtNQKg5JHThupEK94dcdGFr7rDEAtn4URORGWyUH/bXFvWrPuttmMG4CciCe4TN8H5Nu280pRmpSmEv2t7RLQiydKssZnHGkgSJChXO0+6+kw8jUFD/JX+zb2P2qV9rTq0rp9+A/yjs9LF1UMBWl6VknM2RbaWp+H4266nWsKGgk6wS7yjVScUvy31ZuyxwYFSXvEfZtjU7Z06vnzdM/KAfXDCPZNS8md1awD3wOP9oqyESVYGqhQ==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(396003)(366004)(136003)(39860400002)(376002)(9686003)(66476007)(64756008)(5660300002)(66556008)(52536014)(66946007)(76116006)(8936002)(66446008)(26005)(122000001)(4744005)(478600001)(2906002)(83380400001)(6506007)(55016003)(44832011)(8676002)(41300700001)(33656002)(110136005)(82960400001)(86362001)(7696005)(38070700005)(38100700002)(186003)(316002)(71200400001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?gbky/xcq5nfmbmo+/v2K0QpZ198KGMmzVxW7s4tCWS/jnNDvmMOVE4BQLjVf?=
 =?us-ascii?Q?X5ySmt6Oo1auxKPu8zf17cWxeN+uBOX9hFUKFdGjKCi29FxU027P0w6h2nB3?=
 =?us-ascii?Q?B/Yb4ds5i93gkSIsxT/aRsmwnjgs3Z10RQSH6curaOMCglnrL0GD3km4JEns?=
 =?us-ascii?Q?GsDtlrtLMtt4Ecd6sswgmp5/CvKw2uAJYyMuqIiUZFqx6hdU3t0Ykxq5LP96?=
 =?us-ascii?Q?dnpjPPY3BLUg4kXlb5OpUyVBKY8D9K+5X7vpO7CbcLWg/+C+ZEL/sBBkHwkL?=
 =?us-ascii?Q?j1uS8FN9p4VPaphq5JNm+Ei4hzRDyFFAQA3WR2hWBXb9JVRLPmOgvI/MZ0qK?=
 =?us-ascii?Q?NKVpQVz/imGad9pzZHJgsy72ANYbDC6ZhfiOtJcUAJ4PTSPbJbY6cO3LPAJe?=
 =?us-ascii?Q?Wdj86Big5nQM9yowDV6lxxbviOSGqPrXKKkEvvUbS2VpLCTAZg1pvImtLeXl?=
 =?us-ascii?Q?gbesuObFvfqvy42GQbajIxw942qu0hzZsC+NElO9UtEX/gs9p2TdlqRLCzgv?=
 =?us-ascii?Q?ErVn+qZ8182D7xPJDyhYThKxRbjEeTNBe65pqspmxFdf2oq7S/bGQtVjYgW1?=
 =?us-ascii?Q?ZWVuV+Mwk15eFGdpwgHSHk7FjY9mLj5KWCyWqTgbOz2/vcVS3o9aGmYjxKL8?=
 =?us-ascii?Q?N4TI3dnb5iqAUXSKtYcKmrSiiueUcL8zJWjusOkk2BQHwEb6VD6Y295ppmCh?=
 =?us-ascii?Q?ZxuxblxwPMRv1/JR+7ZZ7FSUuO24kxYqrXw2bphlEUJiFxFpcePGnejirwQ3?=
 =?us-ascii?Q?DaXhjIBtcfcJioZRoIhzxAh0sig0McklWFRW9aWhWgPxARmlC2FZVprOoIdX?=
 =?us-ascii?Q?vSkWbVgJTPY70V7zWaWOlmwg0axYs4sPYnD4W5aaWaCHQ3pORGtToTTGr8JF?=
 =?us-ascii?Q?gUyG4B6yneqZprWvqKtZ0mFHqb96Ku77gfkZUlvYCce2annlHCW+X6gW6g1y?=
 =?us-ascii?Q?DP9z7yxaLmHi9tvQ5MNJQFDjFDtoJI1mSjtra6LT1oFq8NQKt/BBKxf8rtwm?=
 =?us-ascii?Q?lFXboB4dXRPFh7BAsT0hom7L7NuJ9+J/veN4QIzjkf3yqcUmIqaF87jgpH2y?=
 =?us-ascii?Q?7fWvZ6Rr5KQSeNRafn9pPQ47McKtsrWdl6RLLR/UZ9cu4vFcslakyyd8FLUZ?=
 =?us-ascii?Q?mUwR0D6GQxvFLtsnsr6T4mErn2D5wyQuXOKpWxjlyDSO8FqDsDB1Iqgm8pBs?=
 =?us-ascii?Q?KlAy1XevhQRPrxfH2LdjODhLzj9Bz97ievJanTRvQsu8/ndxR+Q5kooeGtel?=
 =?us-ascii?Q?Pvn/DOJP83I7gCLILNyPDaFjmnaGUX7CP/B/uKmJoAf9lLgmmuc7k/niwbRu?=
 =?us-ascii?Q?uvQck39Ym6rVA7RVi1kEKR2rPQmsbumimIdak44KtZIO1peN8jGrqTzoeOPc?=
 =?us-ascii?Q?3lOEp3P5l5xJYcJaEskAtywf7K+cFP3B0sLc3cjCn2TXAYGtahnviCZoApHT?=
 =?us-ascii?Q?FqCWO1uIALNQk/5FQFmx/zOxQ+SvKziAX11LSy1LqZiN7KkImONcApSoxnXV?=
 =?us-ascii?Q?IjUVotv5OkTYmyLLeB9IToro/pZjodzGLYIeth6RNVV5zkfHPBmDt0D/lI2d?=
 =?us-ascii?Q?h1o02iAD6VY3vjPAKI72e6uqt01oM8jbvzp0a8ll?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b908ce15-662c-4b0c-8c10-08da8ab1a39a
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 18:01:18.4380
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: SIGNxc+yp4WNI1L6px6PxFQ9JmQYhPs9NVrQxr8w+r/pSWAMS6XCRtmUx03H5roHZywkNlLDIhwJ4OCp3iw7VDR4TyM9LE2nut+hbTtDrtA=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR03MB6591



-----Original Message-----
From: Paul Durrant <xadimgnik@gmail.com>=20

> Nope. KeStallExecutionProcessor just pauses, it doesn't HLT, not interrup=
ts required. It's a spin, so it does a PAUSE.
>=20

> So directly equivalent to yield then. See

Ouch. Pause is one of the optional vmexit instructions. So you do an entire=
 vm-exit, when all you wanted to do is sit on your backside for a few nanos=
econds.

=20
>> Right, that could be because something has just dumped (or is still
> dumping) a load of packets on the queue. Whoever has the lock has to drai=
n the entire queue...=20

Yes, isn't that funny? How could we change it?

> Profiling ...

We have iPerf. It seems to work with with ETW, and we have the other profil=
ers somewhat automated.

MH.


From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 07:14:01 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 07:14:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395545.635296 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTHvD-0005Gx-6g; Wed, 31 Aug 2022 07:13:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395545.635296; Wed, 31 Aug 2022 07:13:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTHvD-0005Gq-46; Wed, 31 Aug 2022 07:13:59 +0000
Received: by outflank-mailman (input) for mailman id 395545;
 Wed, 31 Aug 2022 07:13:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OksP=ZD=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oTHvB-0005Gh-Io
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 07:13:57 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 79a49d5d-28fc-11ed-a60c-1f1ba7de4fb0;
 Wed, 31 Aug 2022 09:13:55 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id b16so9374921wru.7
 for <win-pv-devel@lists.xenproject.org>; Wed, 31 Aug 2022 00:13:55 -0700 (PDT)
Received: from [192.168.1.186]
 (host86-143-223-21.range86-143.btcentralplus.com. [86.143.223.21])
 by smtp.gmail.com with ESMTPSA id
 j2-20020a056000124200b0022537d826f3sm11236365wrx.23.2022.08.31.00.13.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Aug 2022 00:13:54 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79a49d5d-28fc-11ed-a60c-1f1ba7de4fb0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:from:references:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:to:cc;
        bh=b+xUjcF0u7eeZpMAKQ1qFoyyKCOGx4/QNjkgFs/u/Sw=;
        b=UMdRdh8stB4CSBs/GpOlQLWjS4RCcrmD02y+R/FJxJFHbbBfMeVGd4P4h0EDFRKg5n
         HOrbDH0rfLKPlzJCciBGluQ8D3N1eLSYNhlE5R40yjoH+RUJZP9GSspP3L2e8VwzHej2
         FArHdN087M8RItaigp4AI/+cla3+FQUorA/bK6BRQu+Q/5AgcGXHlokcP3Xv5ONV2L74
         AeXbuvketHsUNZuMnaZzz0TBI2sq66JT6W3aLGvNsOrHDjRVi1khS7dQZXLHjhTxPvb6
         G/nWQmYELKeuSyeadOs0TjuTFgP7oCpnPiaQb8snGTTQErYfcHKCBhp48369SwL8VKv+
         m95w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:from:references:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc;
        bh=b+xUjcF0u7eeZpMAKQ1qFoyyKCOGx4/QNjkgFs/u/Sw=;
        b=6/RBczPZfCZYFrHpITTJVJFD0stiapPr8XoMBjLx/kF5r2AmEn8uTn8q7U05WweiRG
         EpM3DAmuWxRsvHVZFQuL7dGzzQtq9Nd3/FT6qmGoe6IaOzrUS+O/cViOFmoP8auEGYxe
         +bXEOTOuMsb0bh2dPWztZdrMnl+BXvPzId7P/tdWrXQdY1CQV0Q4aqRiGF5ll5WTz5Jv
         WKEJAJ/bsfUwsXg+l57aHloJ2rC/3LfpRTEX5EQea1SMIMY78kSg4U5m9gCHTJ+hpJKd
         Hcq2VNfh0kTUlJREYTCl46vtKTU3iUdCZjUoAeORw4IZgOr7C4KRAncVIuDcyZ1OBn0N
         ROxA==
X-Gm-Message-State: ACgBeo1tv+fJr8Ayzy3JdgDXX450JRKl1YXgPdpUl63AOj++HdWwZeCi
	cZ70f260M1Pz2RCIhZSbPwk=
X-Google-Smtp-Source: AA6agR5f1nTFDlaQA+TMsSWBABWR20LbJbvFKQguLdO9Kybk+Btbomha2mdg0+ODx1U7hfndixsDHw==
X-Received: by 2002:a05:6000:144:b0:226:da62:6d90 with SMTP id r4-20020a056000014400b00226da626d90mr7770808wrx.609.1661930035168;
        Wed, 31 Aug 2022 00:13:55 -0700 (PDT)
Message-ID: <977e7aa3-a099-78da-2a94-e0f3d9798e94@gmail.com>
Date: Wed, 31 Aug 2022 08:13:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Thunderbird/91.12.0
Reply-To: paul@xen.org
Subject: Re: Use of newer locking primitives...
Content-Language: en-US
To: Martin Harvey <martin.harvey@citrix.com>,
 "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
References: <MW4PR03MB6347ABC2176EB4499F55923D9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f6ff5101-75c4-9098-4609-4b06ac49d4d9@xen.org>
 <MW4PR03MB6347880ED15E5552C7C37E3B9A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <2ec8c201-9734-f093-c643-239838198ef6@xen.org>
 <MW4PR03MB6347E553AABA2E7878B4C0889A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <73c3d698-3aa0-730f-5816-6750204e5e15@xen.org>
 <MW4PR03MB6347CFAADC37A322536642B99A799@MW4PR03MB6347.namprd03.prod.outlook.com>
 <f8522c13-ef32-da7a-0951-94fa1883f3ae@xen.org>
 <MW4PR03MB6347A7370E7A9F5D4FBCCC679A799@MW4PR03MB6347.namprd03.prod.outlook.com>
From: "Durrant, Paul" <xadimgnik@gmail.com>
In-Reply-To: <MW4PR03MB6347A7370E7A9F5D4FBCCC679A799@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 30/08/2022 19:01, Martin Harvey wrote:
> 
> 
> -----Original Message-----
> From: Paul Durrant <xadimgnik@gmail.com>
> 
>> Nope. KeStallExecutionProcessor just pauses, it doesn't HLT, not interrupts required. It's a spin, so it does a PAUSE.
>>
> 
>> So directly equivalent to yield then. See
> 
> Ouch. Pause is one of the optional vmexit instructions. So you do an entire vm-exit, when all you wanted to do is sit on your backside for a few nanoseconds.
> 

Well, arguably the guest is being a better citizen by exiting. If we 
really want to be a potential CPU hog then we could remove the yield. 
The Hyper-V enlightenments do define a 'long spin lock' limit so we 
could perhaps compromise by counting spins and then only yielding when 
we reach that limit.

>   
>>> Right, that could be because something has just dumped (or is still
>> dumping) a load of packets on the queue. Whoever has the lock has to drain the entire queue...
> 
> Yes, isn't that funny? How could we change it?
> 

Given that the queues are supposed to be per-vcpu I think we have to 
determine whether the current behaviour is actually bad in the normal 
case... Only the 'right' vcpu should be acquiring the lock for the queue.

>> Profiling ...
> 
> We have iPerf. It seems to work with with ETW, and we have the other profilers somewhat automated.
> 

Ok, cool.

   Paul



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:23:51 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:23:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395874.635786 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVK-0006Xz-5d; Wed, 31 Aug 2022 16:23:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395874.635786; Wed, 31 Aug 2022 16:23:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVK-0006Xs-2z; Wed, 31 Aug 2022 16:23:50 +0000
Received: by outflank-mailman (input) for mailman id 395874;
 Wed, 31 Aug 2022 16:23:49 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>) id 1oTQVJ-0006Xm-Il
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:23:49 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVJ-0002Q0-Gy; Wed, 31 Aug 2022 16:23:49 +0000
Received: from [54.239.6.189] (helo=u1e9fc85ad7cc5b.ant.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVJ-0008M6-7a; Wed, 31 Aug 2022 16:23:49 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:
	Subject:Cc:To:From; bh=dEb8M4Qxmr0sexrwh/dUN+sOxqAzK6uzAS665+Neyaw=; b=Bh/5EY
	lXNOzLYRP2AHL4lDYRdY9CvYIJr89yboHef2Ny7MwnqrswG2646tWBCou1wX4wP/T0JXclqkHy/Mc
	v7iYuw7l1tdQaZSJDdRofwe0W8s3U9CqQzul7sFhE5nnU8t7RBwIeGgHbowI36Vr9whZp+R6u08vB
	Otn2lLpSxGY=;
From: Paul Durrant <paul@xen.org>
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 1/5] Add an explicit type parameter to the P2ROUNDUP() macro
Date: Wed, 31 Aug 2022 17:23:41 +0100
Message-Id: <20220831162345.1498013-1-paul@xen.org>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Paul Durrant <pdurrant@amazon.com>

Because it uses signed logic internally it is currently quite vulnerable to
mismatched argument types leading to weird evaluations. Therefore it's safer
to give it an explicit type parameter and have it cast its other arguments to
that type.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
 src/common/util.h  | 4 ++--
 src/xen/system.c   | 2 +-
 src/xenbus/cache.c | 9 +++++----
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/common/util.h b/src/common/util.h
index 36a36dd639ec..31a224d5e9f4 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -36,8 +36,8 @@
 
 #include "assert.h"
 
-#define	P2ROUNDUP(_x, _a)   \
-        (-(-(_x) & -(_a)))
+#define	P2ROUNDUP(_t, _x, _a)   \
+        (-(-((_t)(_x)) & -(((_t)(_a)))))
 
 static FORCEINLINE LONG
 __ffs(
diff --git a/src/xen/system.c b/src/xen/system.c
index 7220faafd25f..6b2a3dc1eff9 100644
--- a/src/xen/system.c
+++ b/src/xen/system.c
@@ -922,7 +922,7 @@ SystemAllocateVcpuInfo(
 
     Size = sizeof (vcpu_info_t) * HVM_MAX_VCPUS;
     Size += sizeof (BOOLEAN) * HVM_MAX_VCPUS;
-    Size = P2ROUNDUP(Size, PAGE_SIZE);
+    Size = P2ROUNDUP(ULONG, Size, PAGE_SIZE);
 
     Context->Mdl = DriverGetNamedPages("VCPU_INFO", Size >> PAGE_SHIFT);
 
diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 13fb0e5cfdb8..3813e414de58 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -299,7 +299,8 @@ CacheCreateSlab(
     LONG                SlabCount;
     NTSTATUS            status;
 
-    NumberOfBytes = P2ROUNDUP(FIELD_OFFSET(XENBUS_CACHE_SLAB, Buffer) +
+    NumberOfBytes = P2ROUNDUP(ULONG,
+                              FIELD_OFFSET(XENBUS_CACHE_SLAB, Buffer) +
                               Cache->Size,
                               PAGE_SIZE);
     Count = (NumberOfBytes - FIELD_OFFSET(XENBUS_CACHE_SLAB, Buffer)) /
@@ -323,7 +324,7 @@ CacheCreateSlab(
     Slab->Cache = Cache;
     Slab->MaximumOccupancy = (USHORT)Count;
 
-    Size = P2ROUNDUP(Count, BITS_PER_ULONG);
+    Size = P2ROUNDUP(ULONG, Count, BITS_PER_ULONG);
     Size /= 8;
 
     Slab->Mask = __CacheAllocate(Size);
@@ -421,7 +422,7 @@ __CacheMaskScan(
     ULONG       Size;
     ULONG       Index;
 
-    Size = P2ROUNDUP(Maximum, BITS_PER_ULONG);
+    Size = P2ROUNDUP(ULONG, Maximum, BITS_PER_ULONG);
     Size /= sizeof (ULONG);
     ASSERT(Size != 0);
 
@@ -777,7 +778,7 @@ CacheCreate(
     if (!NT_SUCCESS(status))
         goto fail2;
 
-    Size = P2ROUNDUP(Size, sizeof (ULONG_PTR));
+    Size = P2ROUNDUP(ULONG, Size, sizeof (ULONG_PTR));
 
     if (Cap == 0)
         Cap = ULONG_MAX;
-- 
2.25.1



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:23:51 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:23:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395875.635790 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVL-0006Zt-7a; Wed, 31 Aug 2022 16:23:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395875.635790; Wed, 31 Aug 2022 16:23:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVL-0006Zm-4N; Wed, 31 Aug 2022 16:23:51 +0000
Received: by outflank-mailman (input) for mailman id 395875;
 Wed, 31 Aug 2022 16:23:50 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>) id 1oTQVK-0006ZQ-BX
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:23:50 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVK-0002Q5-9k; Wed, 31 Aug 2022 16:23:50 +0000
Received: from [54.239.6.189] (helo=u1e9fc85ad7cc5b.ant.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVJ-0008M6-VK; Wed, 31 Aug 2022 16:23:50 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=+v2WectbkopfBsKTnfZ8ZvY/AAZ3j3PEZ+TqbzRRHUk=; b=gCWeT2qEsCj/9n5+DHYPyU2WU5
	2wwddNGe2WYupdSmAC++vY+J7IaIpSLcmbpSjWCYj/Pfr3czDXfOdcCmIhNzyahfYxYrlBmIXKJGl
	6jj8YcV/8VPaS1U38gffj9J7k3z8MGLbbRkkHxALwSljae7Icc74xFaOEUyB3Q8KRNU4=;
From: Paul Durrant <paul@xen.org>
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 2/5] Add a new XENBUS_CACHE_MASK absraction
Date: Wed, 31 Aug 2022 17:23:42 +0100
Message-Id: <20220831162345.1498013-2-paul@xen.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20220831162345.1498013-1-paul@xen.org>
References: <20220831162345.1498013-1-paul@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Paul Durrant <pdurrant@amazon.com>

This abstracts away the current array along with the size of the mask. This
slightly shortens the slab pre-amble, potentially allowing more objects per
slab.

The __CacheMaskScan() is also dropped in favour of a simple loop implemented
directly in CacheGetObjectFromSlab(). This is done to simplify subsequent
patches.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
 src/xenbus/cache.c | 175 +++++++++++++++++++++++++--------------------
 1 file changed, 97 insertions(+), 78 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 3813e414de58..591a6fca550d 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -52,20 +52,25 @@ typedef struct _XENBUS_CACHE_MAGAZINE {
     PVOID   Slot[XENBUS_CACHE_MAGAZINE_SLOTS];
 } XENBUS_CACHE_MAGAZINE, *PXENBUS_CACHE_MAGAZINE;
 
-
 #define XENBUS_CACHE_SLAB_MAGIC 'BALS'
 
+typedef struct _XENBUS_CACHE_MASK {
+    ULONG   Size;
+    ULONG   Mask[1];
+} XENBUS_CACHE_MASK, *PXENBUS_CACHE_MASK;
+
+#define BITS_PER_ULONG  (sizeof (ULONG) * 8)
+
 typedef struct _XENBUS_CACHE_SLAB {
-    ULONG           Magic;
-    PXENBUS_CACHE   Cache;
-    LIST_ENTRY      ListEntry;
-    USHORT          MaximumOccupancy;
-    USHORT          CurrentOccupancy;
-    ULONG           *Mask;
-    UCHAR           Buffer[1];
+    ULONG               Magic;
+    PXENBUS_CACHE       Cache;
+    LIST_ENTRY          ListEntry;
+    USHORT              MaximumOccupancy;
+    USHORT              CurrentOccupancy;
+    PXENBUS_CACHE_MASK  Mask;
+    UCHAR               Buffer[1];
 } XENBUS_CACHE_SLAB, *PXENBUS_CACHE_SLAB;
 
-#define BITS_PER_ULONG  (sizeof (ULONG) * 8)
 #define MAXNAMELEN      128
 
 struct _XENBUS_CACHE {
@@ -195,6 +200,79 @@ CachePutObjectToMagazine(
     return STATUS_UNSUCCESSFUL;
 }
 
+static PXENBUS_CACHE_MASK
+CacheMaskCreate(
+    IN  ULONG           Size
+    )
+{
+    ULONG               NumberOfBytes;
+    PXENBUS_CACHE_MASK  Mask;
+
+    NumberOfBytes = FIELD_OFFSET(XENBUS_CACHE_MASK, Mask) +
+        (P2ROUNDUP(ULONG, Size, BITS_PER_ULONG) / 8);
+
+    Mask = __CacheAllocate(NumberOfBytes);
+    if (Mask == NULL)
+        goto fail1;
+
+    Mask->Size = Size;
+
+    return Mask;
+
+fail1:
+    return NULL;
+}
+
+static VOID
+CacheMaskDestroy(
+    IN  PXENBUS_CACHE_MASK  Mask
+    )
+{
+    __CacheFree(Mask);
+}
+
+static FORCEINLINE VOID
+__CacheMaskSet(
+    IN  PXENBUS_CACHE_MASK  Mask,
+    IN  ULONG               Bit
+    )
+{
+    ULONG                   Index = Bit / BITS_PER_ULONG;
+    ULONG                   Value = 1u << (Bit % BITS_PER_ULONG);
+
+    ASSERT3U(Bit, <, Mask->Size);
+
+    Mask->Mask[Index] |= Value;
+}
+
+static FORCEINLINE BOOLEAN
+__CacheMaskTest(
+    IN  PXENBUS_CACHE_MASK  Mask,
+    IN  ULONG               Bit
+    )
+{
+    ULONG                   Index = Bit / BITS_PER_ULONG;
+    ULONG                   Value = 1u << (Bit % BITS_PER_ULONG);
+
+    ASSERT3U(Bit, <, Mask->Size);
+
+    return (Mask->Mask[Index] & Value) ? TRUE : FALSE;
+}
+
+static FORCEINLINE VOID
+__CacheMaskClear(
+    IN  PXENBUS_CACHE_MASK  Mask,
+    IN  ULONG               Bit
+    )
+{
+    ULONG                   Index = Bit / BITS_PER_ULONG;
+    ULONG                   Value = 1u << (Bit % BITS_PER_ULONG);
+
+    ASSERT3U(Bit, <, Mask->Size);
+
+    Mask->Mask[Index] &= ~Value;
+}
+
 static VOID
 CacheInsertSlab(
     IN  PXENBUS_CACHE       Cache,
@@ -294,7 +372,6 @@ CacheCreateSlab(
     PXENBUS_CACHE_SLAB  Slab;
     ULONG               NumberOfBytes;
     ULONG               Count;
-    ULONG               Size;
     LONG                Index;
     LONG                SlabCount;
     NTSTATUS            status;
@@ -324,10 +401,7 @@ CacheCreateSlab(
     Slab->Cache = Cache;
     Slab->MaximumOccupancy = (USHORT)Count;
 
-    Size = P2ROUNDUP(ULONG, Count, BITS_PER_ULONG);
-    Size /= 8;
-
-    Slab->Mask = __CacheAllocate(Size);
+    Slab->Mask = CacheMaskCreate(Count);
     if (Slab->Mask == NULL)
         goto fail3;
 
@@ -357,7 +431,7 @@ fail4:
         __CacheDtor(Cache, Object);
     }
 
-    __CacheFree(Slab->Mask);
+    CacheMaskDestroy(Slab->Mask);
 
 fail3:
     Error("fail3\n");
@@ -409,71 +483,10 @@ CacheDestroySlab(
     ASSERT(Cache->CurrentSlabs != 0);
     InterlockedDecrement(&Cache->CurrentSlabs);
 
-    __CacheFree(Slab->Mask);
+    CacheMaskDestroy(Slab->Mask);
     __CacheFree(Slab);
 }
 
-static FORCEINLINE ULONG
-__CacheMaskScan(
-    IN  ULONG   *Mask,
-    IN  ULONG   Maximum
-    )
-{
-    ULONG       Size;
-    ULONG       Index;
-
-    Size = P2ROUNDUP(ULONG, Maximum, BITS_PER_ULONG);
-    Size /= sizeof (ULONG);
-    ASSERT(Size != 0);
-
-    for (Index = 0; Index < Size; Index++) {
-        ULONG   Free = ~Mask[Index];
-        ULONG   Bit;
-
-        if (!_BitScanForward(&Bit, Free))
-            continue;
-
-        Bit += Index * BITS_PER_ULONG;
-        if (Bit < Maximum)
-            return Bit;
-    }
-
-    return Maximum;
-}
-
-static FORCEINLINE VOID
-__CacheMaskSet(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
-    )
-{
-    ULONG       Index = Bit / BITS_PER_ULONG;
-
-    Mask[Index] |= 1u << (Bit % BITS_PER_ULONG);
-}
-
-static FORCEINLINE BOOLEAN
-__CacheMaskTest(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
-    )
-{
-    ULONG       Index = Bit / BITS_PER_ULONG;
-
-    return (Mask[Index] & (1u << (Bit % BITS_PER_ULONG))) ? TRUE : FALSE;
-}
-
-static FORCEINLINE VOID
-__CacheMaskClear(
-    IN  ULONG   *Mask,
-    IN  ULONG   Bit
-    )
-{
-    ULONG       Index = Bit / BITS_PER_ULONG;
-
-    Mask[Index] &= ~(1u << (Bit % BITS_PER_ULONG));
-}
-
 // Must be called with lock held
 static PVOID
 CacheGetObjectFromSlab(
@@ -490,7 +503,13 @@ CacheGetObjectFromSlab(
     if (Slab->CurrentOccupancy == Slab->MaximumOccupancy)
         return NULL;
 
-    Index = __CacheMaskScan(Slab->Mask, Slab->MaximumOccupancy);
+    Index = 0;
+    while (Index < Slab->MaximumOccupancy) {
+        if (!__CacheMaskTest(Slab->Mask, Index))
+            break;
+
+        Index++;
+    }
     BUG_ON(Index >= Slab->MaximumOccupancy);
 
     __CacheMaskSet(Slab->Mask, Index);
-- 
2.25.1



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:23:52 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:23:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395876.635793 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVM-0006bw-93; Wed, 31 Aug 2022 16:23:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395876.635793; Wed, 31 Aug 2022 16:23:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVM-0006bn-5g; Wed, 31 Aug 2022 16:23:52 +0000
Received: by outflank-mailman (input) for mailman id 395876;
 Wed, 31 Aug 2022 16:23:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>) id 1oTQVL-0006ZW-11
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:23:51 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVL-0002QA-01; Wed, 31 Aug 2022 16:23:51 +0000
Received: from [54.239.6.189] (helo=u1e9fc85ad7cc5b.ant.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVK-0008M6-Mj; Wed, 31 Aug 2022 16:23:50 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=h98cc5Bfc2/BjrHgA5JKtZROQ6CXqxUi1tuUmI9t9Kg=; b=wqiOGDkl29DP6DtVb1bi6zWvpK
	RopBRNI/0IJt83eEbFZJR/UljyQEoznhGoA4VFWef7Gu5Hu40ptyyoeErCdv9oOVoNTCL3XvzB7s7
	nr+O/Mbsixbc7+V8DKb+HYrva9PPLLerhPyAba4YOqwF39ozLRUZ1U8G+exOX4JuVdr0=;
From: Paul Durrant <paul@xen.org>
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 3/5] Track slab occupancy using the mask
Date: Wed, 31 Aug 2022 17:23:43 +0100
Message-Id: <20220831162345.1498013-3-paul@xen.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20220831162345.1498013-1-paul@xen.org>
References: <20220831162345.1498013-1-paul@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Paul Durrant <pdurrant@amazon.com>

This further shortens the slab pre-amble and allows the occupancy to be
amended directly in __CacheMaskSet/Clear().

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
 src/xenbus/cache.c | 76 +++++++++++++++++++++++++++-------------------
 1 file changed, 45 insertions(+), 31 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 591a6fca550d..ec56cc092f52 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -56,6 +56,7 @@ typedef struct _XENBUS_CACHE_MAGAZINE {
 
 typedef struct _XENBUS_CACHE_MASK {
     ULONG   Size;
+    ULONG   Count;
     ULONG   Mask[1];
 } XENBUS_CACHE_MASK, *PXENBUS_CACHE_MASK;
 
@@ -65,8 +66,6 @@ typedef struct _XENBUS_CACHE_SLAB {
     ULONG               Magic;
     PXENBUS_CACHE       Cache;
     LIST_ENTRY          ListEntry;
-    USHORT              MaximumOccupancy;
-    USHORT              CurrentOccupancy;
     PXENBUS_CACHE_MASK  Mask;
     UCHAR               Buffer[1];
 } XENBUS_CACHE_SLAB, *PXENBUS_CACHE_SLAB;
@@ -228,6 +227,7 @@ CacheMaskDestroy(
     IN  PXENBUS_CACHE_MASK  Mask
     )
 {
+    ASSERT(Mask->Count == 0);
     __CacheFree(Mask);
 }
 
@@ -242,7 +242,10 @@ __CacheMaskSet(
 
     ASSERT3U(Bit, <, Mask->Size);
 
+    ASSERT(!(Mask->Mask[Index] & Value));
     Mask->Mask[Index] |= Value;
+    ASSERT(Mask->Count < Mask->Size);
+    Mask->Count++;
 }
 
 static FORCEINLINE BOOLEAN
@@ -270,9 +273,28 @@ __CacheMaskClear(
 
     ASSERT3U(Bit, <, Mask->Size);
 
+    ASSERT(Mask->Count != 0);
+    --Mask->Count;
+    ASSERT(Mask->Mask[Index] & Value);
     Mask->Mask[Index] &= ~Value;
 }
 
+static ULONG
+CacheMaskSize(
+    IN  PXENBUS_CACHE_MASK  Mask
+    )
+{
+    return Mask->Size;
+}
+
+static ULONG
+CacheMaskCount(
+    IN  PXENBUS_CACHE_MASK  Mask
+    )
+{
+    return Mask->Count;
+}
+
 static VOID
 CacheInsertSlab(
     IN  PXENBUS_CACHE       Cache,
@@ -290,7 +312,7 @@ CacheInsertSlab(
 
     PLIST_ENTRY             ListEntry;
 
-    ASSERT(New->CurrentOccupancy < New->MaximumOccupancy);
+    ASSERT(CacheMaskCount(New->Mask) < CacheMaskSize(New->Mask));
 
     Cache->Cursor = NULL;
 
@@ -301,12 +323,12 @@ CacheInsertSlab(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (Slab->CurrentOccupancy < New->CurrentOccupancy) {
+        if (CacheMaskCount(Slab->Mask) < CacheMaskCount(New->Mask)) {
             INSERT_BEFORE(ListEntry, &New->ListEntry);
             goto done;
         }
 
-        if (Slab->CurrentOccupancy < Slab->MaximumOccupancy &&
+        if (CacheMaskCount(Slab->Mask) < CacheMaskSize(Slab->Mask) &&
             Cache->Cursor == NULL)
             Cache->Cursor = ListEntry;
     }
@@ -326,7 +348,7 @@ CacheAudit(
     IN  PXENBUS_CACHE   Cache
     )
 {
-    ULONG               CurrentOccupancy = ULONG_MAX;
+    ULONG               Count = ULONG_MAX;
     PLIST_ENTRY         ListEntry;
 
     //
@@ -340,7 +362,7 @@ CacheAudit(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (Slab->CurrentOccupancy < Slab->MaximumOccupancy) {
+        if (CacheMaskCount(Slab->Mask) < CacheMaskSize(Slab->Mask)) {
             ASSERT3P(Cache->Cursor, ==, ListEntry);
             break;
         }
@@ -354,9 +376,9 @@ CacheAudit(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        ASSERT3U(Slab->CurrentOccupancy, <=, CurrentOccupancy);
+        ASSERT3U(CacheMaskCount(Slab->Mask), <=, Count);
 
-        CurrentOccupancy = Slab->CurrentOccupancy;
+        Count = CacheMaskCount(Slab->Mask);
     }
 }
 #else
@@ -399,13 +421,12 @@ CacheCreateSlab(
 
     Slab->Magic = XENBUS_CACHE_SLAB_MAGIC;
     Slab->Cache = Cache;
-    Slab->MaximumOccupancy = (USHORT)Count;
 
     Slab->Mask = CacheMaskCreate(Count);
     if (Slab->Mask == NULL)
         goto fail3;
 
-    for (Index = 0; Index < (LONG)Slab->MaximumOccupancy; Index++) {
+    for (Index = 0; Index < (LONG)CacheMaskSize(Slab->Mask); Index++) {
         PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
 
         status = __CacheCtor(Cache, Object);
@@ -456,10 +477,8 @@ CacheDestroySlab(
 {
     LONG                    Index;
 
-    ASSERT3U(Slab->CurrentOccupancy, ==, 0);
-
-    ASSERT3U(Cache->Count, >=, Slab->MaximumOccupancy);
-    Cache->Count -= Slab->MaximumOccupancy;
+    ASSERT3U(Cache->Count, >=, CacheMaskSize(Slab->Mask));
+    Cache->Count -= CacheMaskSize(Slab->Mask);
 
     //
     // The only reason the cursor should be pointing at this slab is
@@ -473,7 +492,7 @@ CacheDestroySlab(
     ASSERT(Cache->Cursor != &Cache->SlabList ||
            IsListEmpty(&Cache->SlabList));
 
-    Index = Slab->MaximumOccupancy;
+    Index = CacheMaskSize(Slab->Mask);
     while (--Index >= 0) {
         PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
 
@@ -499,21 +518,20 @@ CacheGetObjectFromSlab(
 
     Cache = Slab->Cache;
 
-    ASSERT3U(Slab->CurrentOccupancy, <=, Slab->MaximumOccupancy);
-    if (Slab->CurrentOccupancy == Slab->MaximumOccupancy)
-        return NULL;
+    ASSERT(CacheMaskCount(Slab->Mask) <= CacheMaskSize(Slab->Mask));
+    if (CacheMaskCount(Slab->Mask) == CacheMaskSize(Slab->Mask))
+	    return NULL;
 
     Index = 0;
-    while (Index < Slab->MaximumOccupancy) {
+    while (Index < CacheMaskSize(Slab->Mask)) {
         if (!__CacheMaskTest(Slab->Mask, Index))
             break;
 
         Index++;
     }
-    BUG_ON(Index >= Slab->MaximumOccupancy);
+    BUG_ON(Index >= CacheMaskSize(Slab->Mask));
 
     __CacheMaskSet(Slab->Mask, Index);
-    Slab->CurrentOccupancy++;
 
     Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
     ASSERT3U(Index, ==, (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) /
@@ -535,12 +553,8 @@ CachePutObjectToSlab(
     Cache = Slab->Cache;
 
     Index = (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) / Cache->Size;
-    BUG_ON(Index >= Slab->MaximumOccupancy);
-
-    ASSERT(Slab->CurrentOccupancy != 0);
-    --Slab->CurrentOccupancy;
+    BUG_ON(Index >= CacheMaskSize(Slab->Mask));
 
-    ASSERT(__CacheMaskTest(Slab->Mask, Index));
     __CacheMaskClear(Slab->Mask, Index);
 }
 
@@ -582,7 +596,7 @@ again:
         Object = CacheGetObjectFromSlab(Slab);
         ASSERT(Object != NULL);
 
-        if (Slab->CurrentOccupancy == Slab->MaximumOccupancy)
+        if (CacheMaskCount(Slab->Mask) == CacheMaskSize(Slab->Mask))
             Cache->Cursor = Slab->ListEntry.Flink;
     }
 
@@ -717,11 +731,11 @@ CacheSpill(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (Slab->CurrentOccupancy != 0)
+        if (CacheMaskCount(Slab->Mask) != 0)
             break;
 
-        ASSERT(Cache->Count >= Slab->MaximumOccupancy);
-        if (Cache->Count - Slab->MaximumOccupancy < Count)
+        ASSERT(Cache->Count >= CacheMaskSize(Slab->Mask));
+        if (Cache->Count - CacheMaskSize(Slab->Mask) < Count)
             break;
 
         CacheDestroySlab(Cache, Slab);
-- 
2.25.1



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:23:52 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:23:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395877.635800 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVM-0006cC-DW; Wed, 31 Aug 2022 16:23:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395877.635800; Wed, 31 Aug 2022 16:23:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVM-0006c3-71; Wed, 31 Aug 2022 16:23:52 +0000
Received: by outflank-mailman (input) for mailman id 395877;
 Wed, 31 Aug 2022 16:23:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>) id 1oTQVL-0006ba-O4
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:23:51 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVL-0002QI-ND; Wed, 31 Aug 2022 16:23:51 +0000
Received: from [54.239.6.189] (helo=u1e9fc85ad7cc5b.ant.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVL-0008M6-E8; Wed, 31 Aug 2022 16:23:51 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=iM/Ghkc5JhwuHz1CcXwNApBVmvZSdq2zQfqVpzSGJl0=; b=x20Fa5AzBVoVN3x9OnQsSYxYCj
	oQDECzIDtwL500wsxO6LP+q+lI/SNMVGdd0ccszpYUdx6ygEHEoC9gFIoj/9hjhXBrfkmhSpWmp0r
	aMZyE7WRieBvzRGddHCAEsJKSsMF91GowQLxipEFgykisTFWwYbvSu2mNJcuOpA9jr5s=;
From: Paul Durrant <paul@xen.org>
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 4/5] Rename the XENBUS_CACHE_SLAB 'Mask' field
Date: Wed, 31 Aug 2022 17:23:44 +0100
Message-Id: <20220831162345.1498013-4-paul@xen.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20220831162345.1498013-1-paul@xen.org>
References: <20220831162345.1498013-1-paul@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Paul Durrant <pdurrant@amazon.com>

Change the field name to 'Allocated' to reflect its purpose. A subsequent
patch will add another mask.

No functional change.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
 src/xenbus/cache.c | 54 +++++++++++++++++++++++-----------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index ec56cc092f52..681698743e9e 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -66,7 +66,7 @@ typedef struct _XENBUS_CACHE_SLAB {
     ULONG               Magic;
     PXENBUS_CACHE       Cache;
     LIST_ENTRY          ListEntry;
-    PXENBUS_CACHE_MASK  Mask;
+    PXENBUS_CACHE_MASK  Allocated;
     UCHAR               Buffer[1];
 } XENBUS_CACHE_SLAB, *PXENBUS_CACHE_SLAB;
 
@@ -312,7 +312,7 @@ CacheInsertSlab(
 
     PLIST_ENTRY             ListEntry;
 
-    ASSERT(CacheMaskCount(New->Mask) < CacheMaskSize(New->Mask));
+    ASSERT(CacheMaskCount(New->Allocated) < CacheMaskSize(New->Allocated));
 
     Cache->Cursor = NULL;
 
@@ -323,12 +323,12 @@ CacheInsertSlab(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (CacheMaskCount(Slab->Mask) < CacheMaskCount(New->Mask)) {
+        if (CacheMaskCount(Slab->Allocated) < CacheMaskCount(New->Allocated)) {
             INSERT_BEFORE(ListEntry, &New->ListEntry);
             goto done;
         }
 
-        if (CacheMaskCount(Slab->Mask) < CacheMaskSize(Slab->Mask) &&
+        if (CacheMaskCount(Slab->Allocated) < CacheMaskSize(Slab->Allocated) &&
             Cache->Cursor == NULL)
             Cache->Cursor = ListEntry;
     }
@@ -362,7 +362,7 @@ CacheAudit(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (CacheMaskCount(Slab->Mask) < CacheMaskSize(Slab->Mask)) {
+        if (CacheMaskCount(Slab->Allocated) < CacheMaskSize(Slab->Allocated)) {
             ASSERT3P(Cache->Cursor, ==, ListEntry);
             break;
         }
@@ -376,9 +376,9 @@ CacheAudit(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        ASSERT3U(CacheMaskCount(Slab->Mask), <=, Count);
+        ASSERT3U(CacheMaskCount(Slab->Allocated), <=, Count);
 
-        Count = CacheMaskCount(Slab->Mask);
+        Count = CacheMaskCount(Slab->Allocated);
     }
 }
 #else
@@ -422,11 +422,11 @@ CacheCreateSlab(
     Slab->Magic = XENBUS_CACHE_SLAB_MAGIC;
     Slab->Cache = Cache;
 
-    Slab->Mask = CacheMaskCreate(Count);
-    if (Slab->Mask == NULL)
+    Slab->Allocated = CacheMaskCreate(Count);
+    if (Slab->Allocated == NULL)
         goto fail3;
 
-    for (Index = 0; Index < (LONG)CacheMaskSize(Slab->Mask); Index++) {
+    for (Index = 0; Index < (LONG)CacheMaskSize(Slab->Allocated); Index++) {
         PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
 
         status = __CacheCtor(Cache, Object);
@@ -452,7 +452,7 @@ fail4:
         __CacheDtor(Cache, Object);
     }
 
-    CacheMaskDestroy(Slab->Mask);
+    CacheMaskDestroy(Slab->Allocated);
 
 fail3:
     Error("fail3\n");
@@ -477,8 +477,8 @@ CacheDestroySlab(
 {
     LONG                    Index;
 
-    ASSERT3U(Cache->Count, >=, CacheMaskSize(Slab->Mask));
-    Cache->Count -= CacheMaskSize(Slab->Mask);
+    ASSERT3U(Cache->Count, >=, CacheMaskSize(Slab->Allocated));
+    Cache->Count -= CacheMaskSize(Slab->Allocated);
 
     //
     // The only reason the cursor should be pointing at this slab is
@@ -492,7 +492,7 @@ CacheDestroySlab(
     ASSERT(Cache->Cursor != &Cache->SlabList ||
            IsListEmpty(&Cache->SlabList));
 
-    Index = CacheMaskSize(Slab->Mask);
+    Index = CacheMaskSize(Slab->Allocated);
     while (--Index >= 0) {
         PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
 
@@ -502,7 +502,7 @@ CacheDestroySlab(
     ASSERT(Cache->CurrentSlabs != 0);
     InterlockedDecrement(&Cache->CurrentSlabs);
 
-    CacheMaskDestroy(Slab->Mask);
+    CacheMaskDestroy(Slab->Allocated);
     __CacheFree(Slab);
 }
 
@@ -518,20 +518,20 @@ CacheGetObjectFromSlab(
 
     Cache = Slab->Cache;
 
-    ASSERT(CacheMaskCount(Slab->Mask) <= CacheMaskSize(Slab->Mask));
-    if (CacheMaskCount(Slab->Mask) == CacheMaskSize(Slab->Mask))
+    ASSERT(CacheMaskCount(Slab->Allocated) <= CacheMaskSize(Slab->Allocated));
+    if (CacheMaskCount(Slab->Allocated) == CacheMaskSize(Slab->Allocated))
 	    return NULL;
 
     Index = 0;
-    while (Index < CacheMaskSize(Slab->Mask)) {
-        if (!__CacheMaskTest(Slab->Mask, Index))
+    while (Index < CacheMaskSize(Slab->Allocated)) {
+        if (!__CacheMaskTest(Slab->Allocated, Index))
             break;
 
         Index++;
     }
-    BUG_ON(Index >= CacheMaskSize(Slab->Mask));
+    BUG_ON(Index >= CacheMaskSize(Slab->Allocated));
 
-    __CacheMaskSet(Slab->Mask, Index);
+    __CacheMaskSet(Slab->Allocated, Index);
 
     Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
     ASSERT3U(Index, ==, (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) /
@@ -553,9 +553,9 @@ CachePutObjectToSlab(
     Cache = Slab->Cache;
 
     Index = (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) / Cache->Size;
-    BUG_ON(Index >= CacheMaskSize(Slab->Mask));
+    BUG_ON(Index >= CacheMaskSize(Slab->Allocated));
 
-    __CacheMaskClear(Slab->Mask, Index);
+    __CacheMaskClear(Slab->Allocated, Index);
 }
 
 static PVOID
@@ -596,7 +596,7 @@ again:
         Object = CacheGetObjectFromSlab(Slab);
         ASSERT(Object != NULL);
 
-        if (CacheMaskCount(Slab->Mask) == CacheMaskSize(Slab->Mask))
+        if (CacheMaskCount(Slab->Allocated) == CacheMaskSize(Slab->Allocated))
             Cache->Cursor = Slab->ListEntry.Flink;
     }
 
@@ -731,11 +731,11 @@ CacheSpill(
 
         Slab = CONTAINING_RECORD(ListEntry, XENBUS_CACHE_SLAB, ListEntry);
 
-        if (CacheMaskCount(Slab->Mask) != 0)
+        if (CacheMaskCount(Slab->Allocated) != 0)
             break;
 
-        ASSERT(Cache->Count >= CacheMaskSize(Slab->Mask));
-        if (Cache->Count - CacheMaskSize(Slab->Mask) < Count)
+        ASSERT(Cache->Count >= CacheMaskSize(Slab->Allocated));
+        if (Cache->Count - CacheMaskSize(Slab->Allocated) < Count)
             break;
 
         CacheDestroySlab(Cache, Slab);
-- 
2.25.1



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:23:53 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:23:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395878.635801 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVN-0006fv-CT; Wed, 31 Aug 2022 16:23:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395878.635801; Wed, 31 Aug 2022 16:23:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQVN-0006fo-9o; Wed, 31 Aug 2022 16:23:53 +0000
Received: by outflank-mailman (input) for mailman id 395878;
 Wed, 31 Aug 2022 16:23:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>) id 1oTQVM-0006fS-G1
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:23:52 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVM-0002QP-EG; Wed, 31 Aug 2022 16:23:52 +0000
Received: from [54.239.6.189] (helo=u1e9fc85ad7cc5b.ant.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <paul@xen.org>)
 id 1oTQVM-0008M6-5V; Wed, 31 Aug 2022 16:23:52 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=PO96MIlgEdt5O1YtvDR2d6aVWuOVThRVY9AeGIpHMp0=; b=il9akO0GhsXHapZNwnO9hsQz3e
	4dgmgaENcAmISvO9lhk0c9CfFd5cASgQgmfHATleh9RJE8gBTe1OMcCA7vWfkTT9/F1weCNNbDMQS
	b8YbTSH/24xypXtU5dFYsn/fxZicS42mT1EFztJ6zcDFlcpHYO0oXdCHJnSOiZO0nEZk=;
From: Paul Durrant <paul@xen.org>
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 5/5] Lazily construct slab objects
Date: Wed, 31 Aug 2022 17:23:45 +0100
Message-Id: <20220831162345.1498013-5-paul@xen.org>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20220831162345.1498013-1-paul@xen.org>
References: <20220831162345.1498013-1-paul@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Paul Durrant <pdurrant@amazon.com>

To avoid a large overhead in both time and potemtially space when a new slab
is created, only construct objects as they are allocated. When they are freed
we keep them constructed to increase the chance of finding an already-
constructed object during subsequent allocations.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>
---
 src/xenbus/cache.c | 65 ++++++++++++++++++++++++++++++----------------
 1 file changed, 42 insertions(+), 23 deletions(-)

diff --git a/src/xenbus/cache.c b/src/xenbus/cache.c
index 681698743e9e..b1d3fe55320f 100644
--- a/src/xenbus/cache.c
+++ b/src/xenbus/cache.c
@@ -66,6 +66,7 @@ typedef struct _XENBUS_CACHE_SLAB {
     ULONG               Magic;
     PXENBUS_CACHE       Cache;
     LIST_ENTRY          ListEntry;
+    PXENBUS_CACHE_MASK  Constructed;
     PXENBUS_CACHE_MASK  Allocated;
     UCHAR               Buffer[1];
 } XENBUS_CACHE_SLAB, *PXENBUS_CACHE_SLAB;
@@ -394,7 +395,6 @@ CacheCreateSlab(
     PXENBUS_CACHE_SLAB  Slab;
     ULONG               NumberOfBytes;
     ULONG               Count;
-    LONG                Index;
     LONG                SlabCount;
     NTSTATUS            status;
 
@@ -422,17 +422,13 @@ CacheCreateSlab(
     Slab->Magic = XENBUS_CACHE_SLAB_MAGIC;
     Slab->Cache = Cache;
 
-    Slab->Allocated = CacheMaskCreate(Count);
-    if (Slab->Allocated == NULL)
+    Slab->Constructed = CacheMaskCreate(Count);
+    if (Slab->Constructed == NULL)
         goto fail3;
 
-    for (Index = 0; Index < (LONG)CacheMaskSize(Slab->Allocated); Index++) {
-        PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
-
-        status = __CacheCtor(Cache, Object);
-        if (!NT_SUCCESS(status))
-            goto fail4;
-    }
+    Slab->Allocated = CacheMaskCreate(Count);
+    if (Slab->Allocated == NULL)
+        goto fail4;
 
     CacheInsertSlab(Cache, Slab);
     Cache->Count += Count;
@@ -446,13 +442,7 @@ CacheCreateSlab(
 fail4:
     Error("fail4\n");
 
-    while (--Index >= 0) {
-        PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
-
-        __CacheDtor(Cache, Object);
-    }
-
-    CacheMaskDestroy(Slab->Allocated);
+    CacheMaskDestroy(Slab->Constructed);
 
 fail3:
     Error("fail3\n");
@@ -496,13 +486,17 @@ CacheDestroySlab(
     while (--Index >= 0) {
         PVOID Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
 
-        __CacheDtor(Cache, Object);
+        if (__CacheMaskTest(Slab->Constructed, Index)) {
+            __CacheDtor(Cache, Object);
+            __CacheMaskClear(Slab->Constructed, Index);
+        }
     }
 
     ASSERT(Cache->CurrentSlabs != 0);
     InterlockedDecrement(&Cache->CurrentSlabs);
 
     CacheMaskDestroy(Slab->Allocated);
+    CacheMaskDestroy(Slab->Constructed);
     __CacheFree(Slab);
 }
 
@@ -515,29 +509,54 @@ CacheGetObjectFromSlab(
     PXENBUS_CACHE           Cache;
     ULONG                   Index;
     PVOID                   Object;
+    NTSTATUS                status;
 
     Cache = Slab->Cache;
 
     ASSERT(CacheMaskCount(Slab->Allocated) <= CacheMaskSize(Slab->Allocated));
+
+    status = STATUS_NO_MEMORY;
     if (CacheMaskCount(Slab->Allocated) == CacheMaskSize(Slab->Allocated))
-	    return NULL;
+	    goto fail1;
+
+    //
+    // If there are unallocated but constructed objects then look for one of those,
+    // otherwise look for a free unconstructed object. (NOTE: The 'Constructed' mask
+    // should always be contiguous).
+    //
+    Index = (CacheMaskCount(Slab->Allocated) < CacheMaskCount(Slab->Constructed)) ?
+        0 : CacheMaskCount(Slab->Constructed);
 
-    Index = 0;
     while (Index < CacheMaskSize(Slab->Allocated)) {
         if (!__CacheMaskTest(Slab->Allocated, Index))
             break;
 
         Index++;
     }
-    BUG_ON(Index >= CacheMaskSize(Slab->Allocated));
-
-    __CacheMaskSet(Slab->Allocated, Index);
 
     Object = (PVOID)&Slab->Buffer[Index * Cache->Size];
     ASSERT3U(Index, ==, (ULONG)((PUCHAR)Object - &Slab->Buffer[0]) /
              Cache->Size);
 
+    if (!__CacheMaskTest(Slab->Constructed, Index)) {
+        status = __CacheCtor(Cache, Object);
+        if (!NT_SUCCESS(status))
+            goto fail2;
+
+        __CacheMaskSet(Slab->Constructed, Index);
+    }
+
+    __CacheMaskSet(Slab->Allocated, Index);
+
     return Object;
+
+fail2:
+    Error("fail2\n");
+
+fail1:
+    Error("fail1 (%08x)\n", status);
+
+    return NULL;
 }
 
 // Must be called with lock held
-- 
2.25.1



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 16:49:42 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 16:49:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395933.635827 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQuL-0001Xv-Q4; Wed, 31 Aug 2022 16:49:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395933.635827; Wed, 31 Aug 2022 16:49:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTQuL-0001Xo-NV; Wed, 31 Aug 2022 16:49:41 +0000
Received: by outflank-mailman (input) for mailman id 395933;
 Wed, 31 Aug 2022 16:49:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=hF64=ZD=citrix.com=prvs=235eb4e8d=martin.harvey@srs-se1.protection.inumbo.net>)
 id 1oTQuK-0001XX-P7
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 16:49:40 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e546c53a-294c-11ed-82f2-63bd783d45fa;
 Wed, 31 Aug 2022 18:49:38 +0200 (CEST)
Received: from mail-dm6nam10lp2108.outbound.protection.outlook.com (HELO
 NAM10-DM6-obe.outbound.protection.outlook.com) ([104.47.58.108])
 by ob1.hc3370-68.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256;
 31 Aug 2022 12:49:26 -0400
Received: from MW4PR03MB6347.namprd03.prod.outlook.com (2603:10b6:303:11e::22)
 by BL1PR03MB6008.namprd03.prod.outlook.com (2603:10b6:208:30a::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Wed, 31 Aug
 2022 16:49:24 +0000
Received: from MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5]) by MW4PR03MB6347.namprd03.prod.outlook.com
 ([fe80::7531:cd20:3214:abd5%9]) with mapi id 15.20.5588.010; Wed, 31 Aug 2022
 16:49:24 +0000
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e546c53a-294c-11ed-82f2-63bd783d45fa
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1661964578;
  h=from:to:subject:date:message-id:references:in-reply-to:
   content-transfer-encoding:mime-version;
  bh=blmw4ibIXerROqVe6eDp0Kvft9y6aVmfDRVUppeNyCw=;
  b=IHDL3ybn1utCpvb8eunZPCgQxD/JempMnUWqgQ8XSJdn0jIMP6VcWNn2
   5a1n75CQNh2OdpkO7Qf8OdgoJPUPbcTYPo+ilVE9Xz+SIkoifQTzed1ag
   3OusYlaeqZkVBIYD0ZjqNeJenGgEJmIIrquXTtYwtrbyK7Kcu30P27Pnz
   Y=;
X-IronPort-RemoteIP: 104.47.58.108
X-IronPort-MID: 82033713
X-IronPort-Reputation: None
X-IronPort-Listener: OutboundMail
X-IronPort-SenderGroup: RELAY_O365
X-IronPort-MailFlowPolicy: $RELAYED
IronPort-Data: A9a23:a/Qn3Ku4xOffSbl1c83tyNt84+fnVCxfMUV32f8akzHdYApBsoF/q
 tZmKWnXa/uDYWCgetwibYTg/UsCv8fRzYVqQApt+3g9RSsX+JbJXdiXEBz9bniYRiHhoOOLz
 Cm8hv3odp1coqr0/0/1WlTZhSAgk/vOHtIQMcacUghpXwhoVSw9vhxqnu89k+ZAjMOwRgiAo
 rsemeWGULOe82MyYzl8B56r8ks15qyi42pA5DTSWNgQ1LPgvyhNZH4gDfnZw0vQGuF8AuO8T
 uDf+7C1lkuxE8AFU47Nfh7TKyXmc5aKVeS8oiM+t5uK23CukhcawKcjXMfwXG8M49m/c3Kd/
 /0W3XC4YV9B0qQhA43xWTEAe811FfUuFLMqvRFTGCFcpqHLWyKE/hlgMK05FYI3oqFbMHhqy
 eIJImssYjbfnruxw63uH4GAhux7RCXqFKU2nyg4iB38U7MhS52FRLjW79hF2jt2ntpJAfvVe
 8seb3xocQjEZBpMfFwQDfrSns/x3iW5L2Ie9QLT/PJni4TQ5FUZPLzFNdPPZt2MA8VchFiVt
 0rN/njjAwFcP9uaodaA2iL23rSUwnqgMG4UPK2F8v142XLO/30SNjgwBX6/nqOwtEHrDrqzL
 GRRoELCt5Ma602tC8HjGhG1vnOAlhodQMZLVf037hmXzajZ6BrfAXILJgOtc/Qjvc4yADAvi
 FmAmoqxASQ16eXFD3WA6r2TsDW+fzAPKnMPbjMFSg1D5MT/pIY0jVTESdML/LOJs+AZ0ArYm
 1iixBXSTZ1K5SLX/81XJWz6vg8=
IronPort-HdrOrdr: A9a23:v459raugwX6oBPDt3LWaIApd7skDjNV00zEX/kB9WHVpm6yj+v
 xGUs566faUskd0ZJhEo7q90ca7Lk80maQa3WBzB8bGYOCFghrKEGgK1+KLrwEIcxeUygc379
 YDT0ERMrzN5VgRt7eG3OG7eexQvOVuJsqT9JjjJ3QGd3AVV0l5hT0JbTpyiidNNXJ77ZxSLu
 v72uN34wCOVF4wdcqBCnwMT4H41qf2fMKPW29+O/Y/gjP+9Q+V1A==
X-IronPort-AV: E=Sophos;i="5.93,278,1654574400"; 
   d="scan'208";a="82033713"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=S2QLBgG39Q/eMZf0e93ML3xswmIx20KMPxiddzZ8PZCTwGFk0gj5SrqsYf+tlQTcXYRKbcajAlDtUYrIwcpQQwjiYwfEQeltMakRFkLxV7RKBDHeHTlR4hjx7h26OJAPUj3TOETxt1wJYbxKXueXGDm1gpElHuxpim0+ATezAQAMn76O94q5imjqDDrH65LWWEGcK9z8xmg+/AhThdX7Vjmwi2npsfnJKDg5D9wVcfk83PPo0pxXQOGj5wgC6f/MpvtPpIsG53vF2B5piZXMbaUgShD72gsDdt+oYzVhYpLSKSTq+t2bnMOeL8B6k6DVzyL6/vpSqIz8UtUWlToa9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=blmw4ibIXerROqVe6eDp0Kvft9y6aVmfDRVUppeNyCw=;
 b=EVQ4vMse9Vc5A0SXK/y5bAdNjYuRqu/T3zifDMJ0PQCbhgj3+6flS6CSA/QKn+2OozVx3cnN/rXtvTllpORY0G7vERe237Byma8Sx1X8lbC58JYGeIX3fh5cYpa9GaMZudxDzyPDEg3/Vu6kvHaVyuEniWzR2GeLhOgxLEgb83VE3XRde8m48kKEftf5JyO9A6hxTRtQ9NFz42AitU+PauV4EfM+XiKZMcuQ+IO/qerPZas82XZq3G8iAQk8osU4VMD84VOObRs8tqhJnTmiPMwtqo1qFc2dD3Je61owrVfY1W/3NPbP7fU+O0iL3f9rcb7u1XKv3vfvDDH+I9mhtw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com;
 dkim=pass header.d=citrix.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=citrix.onmicrosoft.com; s=selector2-citrix-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=blmw4ibIXerROqVe6eDp0Kvft9y6aVmfDRVUppeNyCw=;
 b=rPx97CrUcJOUHLA0UiLiVpvJCwT84hMrm5rC2nNsUinuApjU8TSBRx+t4ieCQLLg/rl8hOrQBJQ7HRC/IsPtiB3zIwFv4AAFAg4QHMoU1stBSklQVfhUKwOjfd/KbYbsyZ7VQWRQhPdNe9Zs8vCbtPnp3Zcgi6X48KpT9CVBFzo=
From: Martin Harvey <martin.harvey@citrix.com>
To: "win-pv-devel@lists.xenproject.org" <win-pv-devel@lists.xenproject.org>
Subject: RE: [PATCH 5/5] Lazily construct slab objects
Thread-Topic: [PATCH 5/5] Lazily construct slab objects
Thread-Index: AQHYvVYdlarU6ARGHkGUXPSsHetIZa3JOBOg
Date: Wed, 31 Aug 2022 16:49:24 +0000
Message-ID:
 <MW4PR03MB63476EABBA6D45673ABA31489A789@MW4PR03MB6347.namprd03.prod.outlook.com>
References: <20220831162345.1498013-1-paul@xen.org>
 <20220831162345.1498013-5-paul@xen.org>
In-Reply-To: <20220831162345.1498013-5-paul@xen.org>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=citrix.com;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: a0aa22bd-effc-4b7c-9587-08da8b70c2d5
x-ms-traffictypediagnostic: BL1PR03MB6008:EE_
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 EsRypkdFLJIXG4jQeGAdf1oTe50Xx/WcxqUleQWa/EItP2hdNjhsKJmpl/q/cSmZ1l5qxyLcnNq/oOMNqZpDW7uF9OZNv2uF6CJXepDwGUmBIk2D9HXnocBHFYTo8Z2PxBhvdmPIt+HZeWrXYJaGay2XqGfnwzibUsAyjsgZT044G5ciGr32dySBvzj07wJT8AbQok5RlABu64Pi6RmK19MPw0ncIlf/MKB3/ekXZpgki7MOWvjnSAR36nNd4bI4ZeyMaMjDhhfNLQV5XWXRSi42Iv8/AJS6PZbX+Um0kC+J8fF3SeuBOHuy7YZNAjn1KI6bCt7Y4zkBJCYyqSDKdB0Uahwq7yP+Kz8MQTfqdGJXcZkou6VwxHZlWPE1e6z7IgZqqhMAXHTW0mww8z2QW4J0gInoDi9G5xEaAjNbrVn7GxWIUikKtHGeIqMisE3lbNG6nCud8mvnwuTsRs6yPiPQ9LZxrg1RO9raCA5PMk7EjUwLVh2KvoH8AshGPf34tLIuEPHvTasbDaOUyZ+TI92bPMtGbeZVeYVxr6/xJa5qVGVX1czXzA3GyxKSrN81DNYgoxggv/uy9HMGCbPDTGHDCDWdarqQbaUBg253wbvC+in/Xi3HT25zeqHQuOI2cWgKnODppwII4Dk8A18mqzNI/4kzCAIOcz9EfDBC2xnlVf9QYE+QOcl8/10r7P2WTixPwSPQm93jPTL32oBNWBCT4byGySSqM+LPRr6I3LB7Z/H2li8LB2b9HimuJwaJG7lXZYFdLilZ7cttxtAhBg==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR03MB6347.namprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(346002)(376002)(136003)(366004)(39860400002)(52536014)(66556008)(8676002)(66446008)(64756008)(66946007)(478600001)(76116006)(44832011)(53546011)(9686003)(26005)(2906002)(41300700001)(6506007)(7696005)(83380400001)(8936002)(4744005)(86362001)(33656002)(5660300002)(186003)(66476007)(71200400001)(6916009)(82960400001)(38070700005)(55016003)(316002)(122000001)(38100700002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?EAHEQzu/14g4J9GGI5NLSWulMaeIGwnDlx5N+AYBPG0aDieuntajZQOTZbtY?=
 =?us-ascii?Q?53rSPQ9muA9dZftcfAUgGRpqMh2QhOcmfXU/pORDg/GT1JVPJtCpbrgu9Ozs?=
 =?us-ascii?Q?awO+nBFneNvj/GGwQf/+CVDr/RA5RF46fqaWqlWAlVkTkXb8SgqUuEqCjDCX?=
 =?us-ascii?Q?Tp+52PGTNzsP1tnURZikb+a9RV3kAhco8Id2rqd1micvu+l/D8D3m13SKpmk?=
 =?us-ascii?Q?3kPQGaEpBePUKN/wGf9M2CZDA1J3Q9h6mBcFsRkJWVLub8Bh1GKkkgdIgCD5?=
 =?us-ascii?Q?cs15UhXmFUYbIr7eUGz+ZONvmruqkvFcvl9GIm66Uxn3WdwMDGoVYSOPLAB2?=
 =?us-ascii?Q?FSj8UlDYetYkoHTLLiX2fwHsnv64/yRmVYdLE1WLTMFD+HM0WipkooH27AGR?=
 =?us-ascii?Q?gy55IIiKP04h1niqBZJQ6lBZ3bYGsarMdgoxxIJ4DiVeWIPljLr/zxr5H20t?=
 =?us-ascii?Q?uMtMnLGe0ztFwV/D4FiDxffEE+SjbjHgIte7chfYBFj4sdyzWY4Nkzgcahuz?=
 =?us-ascii?Q?LE8UhMFg69u/KJC64UOnd3DzUXj5pFckCT2er/Lfyocy2blQhxHduphzZBtE?=
 =?us-ascii?Q?C2jsWXL0hPKq3W4pK0anpbJRcbYuH/M5QbJMRdc5BEQEZjIwkRqz4sKJi6Sc?=
 =?us-ascii?Q?sb3uFAKqwBU/ar9eubL/s7sEdqZpVRDV3LM7vMXN0e93wIRMsgDQbGf30Fd0?=
 =?us-ascii?Q?ZhgeujcLEYgURb1a6rs35Ag+KEDmWHz+GVDmTDc5pYKeAaoERKcYvFL+D1z9?=
 =?us-ascii?Q?Pp3+HfpjSc2yH2oZS+/2Kku7K2VeE2snoOjK+XC0nefoSTbXFjR4E88cTTpR?=
 =?us-ascii?Q?H/vXzAZKH3pC5pPe2YiAAT8hFqdjUUClzwHYC5PQHosI7GK6dhcLraobNaee?=
 =?us-ascii?Q?2S56S7ejT4kBKh4M090ciAsq66Lbzcd1eiyeTJMXQaSMQSDmaetOn++tR3Vn?=
 =?us-ascii?Q?/H6TgaESiXp9yw9PKMcAqN4PEsaf1QN87IFGq57SJ6471lTWEqkCdjrselbm?=
 =?us-ascii?Q?KycORqjBVSoaJelvf8UaRzsgkCvM4ifNmOhSBHJDP+l1GbvZD22PUROd2xeL?=
 =?us-ascii?Q?8Ix7ZRe9+JQVsGWZSgK9WFeV3Nkd7GOxbdptzLWo/sGNIbOzWO3FgG0b5sag?=
 =?us-ascii?Q?/V5AYCwMlhCc7Fumada3ngd7JfCAwzYM1D3xYDQsA8lnvH2HRQ7j4pDlUnN5?=
 =?us-ascii?Q?Ko2QRNn+wleT/idKEHbWl5Eva3e7MfADEZ7x18fAdLqJsOPVL84j7MGxsb6a?=
 =?us-ascii?Q?Yqf4nXSSanpB52M9IcQPqW/37UYJvyMwbMcLCF4Llldv22Y8Oi4oapVkfuw5?=
 =?us-ascii?Q?1eF/CV70lGT09VJ6Oxyik5D+sfVHlN6/rS0ixNj6eWq3pQWcNh4f/sOLTx5j?=
 =?us-ascii?Q?nb/I4IG40xVS53AilohljTll+pWk6aRDT4jsrGMRWsW3PzkEByCHZEWK4Wau?=
 =?us-ascii?Q?vi019bNAiPxFCwCHlY9dWtRsRpJPqGtaDZQbhssszTEhHYBWe3kvHvdm147G?=
 =?us-ascii?Q?QnXPMHbVyuJgjbWj0efT9DjcJ1s5MfKUJTZ5s0anzhDwJ2EmzVtN1UAwyihB?=
 =?us-ascii?Q?JSLOGZNLU9+8V5epahD4gteO6bVLlU49bwJF2dqy?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: citrix.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MW4PR03MB6347.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a0aa22bd-effc-4b7c-9587-08da8b70c2d5
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2022 16:49:24.7096
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 335836de-42ef-43a2-b145-348c2ee9ca5b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +0LeeC014qZN7X2THR8XCrbjYUrk2z1pLUjsUnBI3eG3aPRZMK0mxKNan0R+uk/AXki4CwfN+jmZjdQluPYyonx3fFSKSXGpzbAPwt6ZeSU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR03MB6008


This will help our resource usage issues as well as Owen's gnttab work. I h=
ave checked, and unless he modified more source files, this does not curren=
tly conflict with anything Owen has in the works.

Approved, MCH.


-----Original Message-----
From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of=
 Paul Durrant
Sent: 31 August 2022 17:24
To: win-pv-devel@lists.xenproject.org
Cc: Paul Durrant <pdurrant@amazon.com>
Subject: [PATCH 5/5] Lazily construct slab objects

[CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments u=
nless you have verified the sender and know the content is safe.

From: Paul Durrant <pdurrant@amazon.com>

To avoid a large overhead in both time and potemtially space when a new sla=
b is created, only construct objects as they are allocated. When they are f=
reed we keep them constructed to increase the chance of finding an already-=
 constructed object during subsequent allocations.

Signed-off-by: Paul Durrant <pdurrant@amazon.com>



From win-pv-devel-bounces@lists.xenproject.org Wed Aug 31 17:01:08 2022
Return-path: <win-pv-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Wed, 31 Aug 2022 17:01:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.395964.635875 (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTR5Q-0005dK-MB; Wed, 31 Aug 2022 17:01:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 395964.635875; Wed, 31 Aug 2022 17:01:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <win-pv-devel-bounces@lists.xenproject.org>)
	id 1oTR5Q-0005dD-JW; Wed, 31 Aug 2022 17:01:08 +0000
Received: by outflank-mailman (input) for mailman id 395964;
 Wed, 31 Aug 2022 17:01:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OksP=ZD=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1oTR5P-0005d7-4O
 for win-pv-devel@lists.xenproject.org; Wed, 31 Aug 2022 17:01:07 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 80333706-294e-11ed-934f-f50d60e1c1bd;
 Wed, 31 Aug 2022 19:01:06 +0200 (CEST)
Received: by mail-wm1-x32f.google.com with SMTP id
 i188-20020a1c3bc5000000b003a7b6ae4eb2so7074086wma.4
 for <win-pv-devel@lists.xenproject.org>; Wed, 31 Aug 2022 10:01:05 -0700 (PDT)
Received: from [10.7.236.44] ([54.239.6.188]) by smtp.gmail.com with ESMTPSA id
 n8-20020adff088000000b002258235bda3sm12322176wro.61.2022.08.31.10.01.04
 for <win-pv-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Aug 2022 10:01:04 -0700 (PDT)
X-BeenThere: win-pv-devel@lists.xenproject.org
List-Id: Developer list for the Windows PV Drivers subproject
 <win-pv-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:win-pv-devel@lists.xenproject.org>
List-Help: <mailto:win-pv-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/win-pv-devel>, 
 <mailto:win-pv-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: win-pv-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "win-pv-devel" <win-pv-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 80333706-294e-11ed-934f-f50d60e1c1bd
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :from:to:cc;
        bh=/845nKguGFOSMjq6pqfa5rJEVzqmcfNKsWGi1ek3Xgc=;
        b=ChTqMmOaqbJ2iFibrJxKMmrMjU3IP/TqDtZfYRcD0KrowqZCDwAYGc7EGA0AhzkfmC
         vHVvC2THVMKsabz8eA5oqQLU+81UkO6YQmO7uVE77x28h2vX1cxxT/pyUVubIdafcsNG
         rRZfODH/Jm+XrkU9inORAK+1HEDJFktkJ+qOFbSgdwzR65oK4CPR7Es9ecNrrA0yWJX4
         hGNO/75YlupN/279CfhjEMx9v5uVvvI833U5Nmd0KBFNmoZkOo8u9cmleIMA4SDz7K/f
         Ok0bJZFrokFQeCq1MapYixCcZEmyvXx6E2+DFOfv8vbezcYY1IqS2h65V48OPhUP4wf/
         HPSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=content-transfer-encoding:in-reply-to:organization:content-language
         :references:to:subject:user-agent:mime-version:date:message-id:from
         :x-gm-message-state:from:to:cc;
        bh=/845nKguGFOSMjq6pqfa5rJEVzqmcfNKsWGi1ek3Xgc=;
        b=IUPJ4F4qu6C+owTfSEPh0I+wAretrl8uah4vawtDh3d+E+56h4yfRmahN8uzz1/B1c
         lsitNs4Wth/GIJlcZALWjky2y2qb7U4I1/K2espVeryXZyITdDVIaWSnWLZzPGa5CNsb
         L34ynOzTwpW8FLoNhGAfMMFD9XxqtfOfne1Zxv8iR3Z65VburuhWHCuiHwzxTXtaOg93
         NhaQnmyyQ39ZWKQndns/NahefTEBKOFF/7F331vHOKUBh5wFFHIebJTSOIwxfa7PhtKS
         LXAbJZKyD62za76FjEIoUEDb1Ijp+CaoY8nN+Jv/8oKeZD2aEyutPNAGzXY3S48IjUmg
         6OEg==
X-Gm-Message-State: ACgBeo3Qi46oDsafFuVu7eRcGegl8d7lS4iW572lgZeBoTEh3fYOeGLE
	nQ557nhV3UCHP9U2Gn5debTGnwU1rimlulKl
X-Google-Smtp-Source: AA6agR75/EWkwqTBd27rUmtXk256f1KaLF9tuaj1Jfaev9o1w5H9igCIRiGE/I5/WYeybzTsxdllHw==
X-Received: by 2002:a05:600c:1d14:b0:3a5:e8ba:f394 with SMTP id l20-20020a05600c1d1400b003a5e8baf394mr2587933wms.137.1661965264999;
        Wed, 31 Aug 2022 10:01:04 -0700 (PDT)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <470678c1-49ae-cb8f-3420-c702ba07518b@xen.org>
Date: Wed, 31 Aug 2022 18:01:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH 5/5] Lazily construct slab objects
To: win-pv-devel@lists.xenproject.org
References: <20220831162345.1498013-1-paul@xen.org>
 <20220831162345.1498013-5-paul@xen.org>
 <MW4PR03MB63476EABBA6D45673ABA31489A789@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Language: en-US
Organization: Xen Project
In-Reply-To: <MW4PR03MB63476EABBA6D45673ABA31489A789@MW4PR03MB6347.namprd03.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 31/08/2022 17:49, Martin Harvey wrote:
> 
> This will help our resource usage issues as well as Owen's gnttab work. I have checked, and unless he modified more source files, this does not currently conflict with anything Owen has in the works.
> 
> Approved, MCH.
> 

Cool, thanks. If I don't hear in any dissenting voice I'll push these 
tomorrow.

   Paul

> 
> -----Original Message-----
> From: win-pv-devel <win-pv-devel-bounces@lists.xenproject.org> On Behalf Of Paul Durrant
> Sent: 31 August 2022 17:24
> To: win-pv-devel@lists.xenproject.org
> Cc: Paul Durrant <pdurrant@amazon.com>
> Subject: [PATCH 5/5] Lazily construct slab objects
> 
> [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.
> 
> From: Paul Durrant <pdurrant@amazon.com>
> 
> To avoid a large overhead in both time and potemtially space when a new slab is created, only construct objects as they are allocated. When they are freed we keep them constructed to increase the chance of finding an already- constructed object during subsequent allocations.
> 
> Signed-off-by: Paul Durrant <pdurrant@amazon.com>
> 
> 



