From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 93F3521CFA600 for ; Wed, 16 Aug 2017 15:16:18 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2BF4C4022A; Wed, 16 Aug 2017 22:18:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2BF4C4022A Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=lersek@redhat.com Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-59.phx2.redhat.com [10.3.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id C24206BF68; Wed, 16 Aug 2017 22:18:42 +0000 (UTC) To: Brijesh Singh , edk2-devel@lists.01.org Cc: Jordan Justen , Tom Lendacky , Ard Biesheuvel References: <1502710605-8058-1-git-send-email-brijesh.singh@amd.com> <1502710605-8058-16-git-send-email-brijesh.singh@amd.com> From: Laszlo Ersek Message-ID: <723acd67-abab-1998-9115-712515e5f101@redhat.com> Date: Thu, 17 Aug 2017 00:18:41 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <1502710605-8058-16-git-send-email-brijesh.singh@amd.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 16 Aug 2017 22:18:44 +0000 (UTC) Subject: Re: [PATCH v2 15/23] OvmfPkg/VirtioLib: alloc vring buffer with AllocateSharedPages() X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 22:16:18 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 08/14/17 13:36, Brijesh Singh wrote: > Cc: Ard Biesheuvel > Cc: Jordan Justen > Cc: Tom Lendacky > Cc: Laszlo Ersek > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Brijesh Singh > --- > OvmfPkg/Library/VirtioLib/VirtioLib.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) (1) Where did the commit message go? :) It was pretty good. Here's my suggestion for reinstating it: The VRING buffer is a communication area between guest and hypervisor. Allocate it using VIRTIO_DEVICE_PROTOCOL.AllocateSharedPages() so that it can be mapped later with VirtioRingMap() for bi-directional access. (This is a VirtioLib patch so we can refer to VirtioRingMap() -- after the reordering that I requested under [PATCH v2 12/23], point (2), the VirtioRingMap() function will be introduced just before this patch.) > diff --git a/OvmfPkg/Library/VirtioLib/VirtioLib.c b/OvmfPkg/Library/VirtioLib/VirtioLib.c > index 7d07dcc09d3d..8010b5cf4735 100644 > --- a/OvmfPkg/Library/VirtioLib/VirtioLib.c > +++ b/OvmfPkg/Library/VirtioLib/VirtioLib.c > @@ -61,6 +61,7 @@ VirtioRingInit ( > OUT VRING *Ring > ) > { > + EFI_STATUS Status; > UINTN RingSize; > volatile UINT8 *RingPagesPtr; > > @@ -79,9 +80,16 @@ VirtioRingInit ( > sizeof *Ring->Used.AvailEvent, > EFI_PAGE_SIZE); > > + // > + // Allocate a shared ring buffer > + // > Ring->NumPages = EFI_SIZE_TO_PAGES (RingSize); > - Ring->Base = AllocatePages (Ring->NumPages); > - if (Ring->Base == NULL) { > + Status = VirtIo->AllocateSharedPages ( > + VirtIo, > + Ring->NumPages, > + &Ring->Base > + ); > + if (EFI_ERROR (Status)) { > return EFI_OUT_OF_RESOURCES; > } > SetMem (Ring->Base, RingSize, 0x00); > @@ -143,7 +151,7 @@ VirtioRingUninit ( > IN OUT VRING *Ring > ) > { > - FreePages (Ring->Base, Ring->NumPages); > + VirtIo->FreeSharedPages (VirtIo, Ring->NumPages, Ring->Base); > SetMem (Ring, sizeof *Ring, 0x00); > } > > You seem to have missed my points (2), (3) and (4) from my previous review : > (2) Please update the documentation of "@retval EFI_OUT_OF_RESOURCES" > -- replace it with > > @return Status codes propagated from VirtIo->AllocateSharedPages(). > > (3) Accordingly, please forward the Status received, on the error > branch. > > (4) Please remove MemoryAllocationLib from the #includes and also from > [LibraryClasses]. (5) In addition, the indentation of the AllocateSharedPages() arguments is incorrect. To be continued. Thanks, Laszlo