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 AA74521AEB0BE for ; Wed, 9 Aug 2017 10:54:11 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 90F541557B5; Wed, 9 Aug 2017 17:56:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 90F541557B5 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-102.phx2.redhat.com [10.3.116.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id D428F77D4A; Wed, 9 Aug 2017 17:56:21 +0000 (UTC) To: Brijesh Singh , edk2-devel@lists.01.org Cc: Jordan Justen , Tom Lendacky , Ard Biesheuvel References: <1502107139-412-1-git-send-email-brijesh.singh@amd.com> <7dc9df48-98c4-4df4-9b8b-7732ad3f4f2d@amd.com> From: Laszlo Ersek Message-ID: <528814fa-03a9-cb12-57b2-5a516d087b96@redhat.com> Date: Wed, 9 Aug 2017 19:56:20 +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: <7dc9df48-98c4-4df4-9b8b-7732ad3f4f2d@amd.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 09 Aug 2017 17:56:29 +0000 (UTC) Subject: Re: [PATCH v1 00/14] OvmfPkg/Virtio: Add APIs to map system physical to device address 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, 09 Aug 2017 17:54:11 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 08/09/17 19:35, Brijesh Singh wrote: > > > On 08/09/2017 09:39 AM, Laszlo Ersek wrote: >> On 08/07/17 13:58, Brijesh Singh wrote: >>> Currently, virtio drivers provides the system physical address to the >>> device. >>> However, some systems may feature an IOMMU that requires the drivers >>> to pass >>> the device addresses to the device - which are then translated by the >>> IOMMU >>> into physical addresses in memory. The patch series introduces new >>> member >>> functions in VIRTIO_DEVICE_PROTOCOL which can be used for mapping a >>> system >>> physical address to device address. >>> >>> The approach that this patch series takes is to maps the system physical >>> address to device address for buffers (including rings, device specifc >>> request and response pointed by vring descriptor, and any further >>> memory >>> reference by those request and response). >>> >>> Patch 1 - 3: >>> Defines and implements new member functions to map a system >>> physical address >>> to device address. The patch implements Laszlo's suggestion [1]. >> >> (1) I guess under [1] you meant the following message: >> >> http://mid.mail-archive.com/841bec5f-6f6e-8b1f-25ba-0fd37a915b72@redhat.com >> >> > > Yes, thank you :) I did not realized that I forgot adding the link. > > >> If you want, you can add that link to the commit message of patch #1. >> >> (2) But, that's not my main point here. Before I forget, I'd like to >> point out that you missed one of the three virtio protocol >> implementations -- see my point (5.4) in the above-referenced message >> --, namely: >> >>> - "ArmVirtPkg/VirtioFdtDxe" (via >>> "OvmfPkg/Library/VirtioMmioDeviceLib") binds virtio-mmio devices, >>> and offers virtio 0.9.5 semantics. >> >> So please replicate patch v1 03/14 to >> "OvmfPkg/Library/VirtioMmioDeviceLib". Otherwise, the modified virtio >> device drivers will crash when they are built for ArmVirtPkg and used >> over virtio-mmio transports. >> > > Sure, I will make the necessary changes in VirtioMmioDeviceLib and try > do the build test but I don't have aarch64 platform to verify at the > runtime. Actually, dependent on your GNU/Linux distribution, it is pretty easy to do on x86_64 too. It comes together from two parts: (1) installing an aarch64 cross compiler (2) installing qemu-system-aarch64 (from source or distro package), and then either using it directly (from the cmdline) or with the libvirt toolstack The only "real" difference is that it's going to use TCG and not KVM (software emulation rather than hardware virtualization), so it will be slower, but that's not really a problem if you only care about your VM until the firmware boots the OS :) On Fedora, the cross-compiler (and cross-binutils) packages are built from the following SRPMs: https://koji.fedoraproject.org/koji/buildinfo?buildID=921790 https://koji.fedoraproject.org/koji/buildinfo?buildID=912429 ("cross-gcc", "cross-binutils") Linaro distributes distro-independent cross compilers: http://www.linaro.org/downloads/ Build instructions for ArmVirtQemu, and usage hints for the QEMU command line, can be found in the Linaro Wiki: https://wiki.linaro.org/LEG/UEFIforQEMU Thanks Laszlo >> (3) Starting with your v2, please add a reminder to your blurb -- for >> Ard and myself -- that before merging this, we should regression-test it >> on aarch64. >> > > Will do