From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cT8Ae-0003cR-VN for qemu-devel@nongnu.org; Mon, 16 Jan 2017 09:22:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cT8Ab-00007R-JG for qemu-devel@nongnu.org; Mon, 16 Jan 2017 09:22:04 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38518) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cT8Ab-00007N-Ag for qemu-devel@nongnu.org; Mon, 16 Jan 2017 09:22:01 -0500 Date: Mon, 16 Jan 2017 16:21:58 +0200 From: "Michael S. Tsirkin" Message-ID: <20170116161857-mutt-send-email-mst@kernel.org> References: <20160916033402-mutt-send-email-mst@kernel.org> <20161006041949-mutt-send-email-mst@kernel.org> <20161211052355-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] Virtual Machine Generation ID List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Ben Warren Cc: Ed Swierk , qemu-devel@nongnu.org, Igor Mammedov , Laszlo Ersek On Sat, Jan 14, 2017 at 10:17:53PM -0800, Ben Warren wrote: > Hi Michael, >=20 >=20 > On Dec 10, 2016, at 7:28 PM, Michael S. Tsirkin wr= ote: >=20 > On Tue, Dec 06, 2016 at 06:15:34PM -0800, Ben Warren wrote: >=20 > Hi Michael, >=20 > I=E2=80=99m well on my way to implementing this, but I am reall= y new to the > QEMU code base and am struggling with some concepts. Please se= e below: >=20 > On Oct 5, 2016, at 6:29 PM, Michael S. Tsirkin > wrote: >=20 > On Tue, Oct 04, 2016 at 03:51:40PM -0700, Ed Swierk wrote: >=20 > On Thu, Sep 15, 2016 at 5:36 PM, Michael S. Tsirkin < > mst@redhat.com> wrote: >=20 > On Thu, Sep 15, 2016 at 05:23:28PM -0700, Ed Swierk= wrote: >=20 > I'm wondering what it will take to finish up wo= rk on > vmgenid. >=20 > https://lists.gnu.org/archive/html/qemu-devel/2= 016-01/ > msg05599.html >=20 >=20 > We have ACPI_BUILD_TPMLOG_FILE in tree now and I th= ink it > could be > allocated in a similar way. > Integrate patch "fw-cfg: support writeable blobs" t= o > communicate the > allocated address back to QEMU. >=20 >=20 > Starting with Igor's last version at > https://github.com/imammedo/qemu/commits/vmgen_wip , it= 's not > clear to > me which changes need to be ported, which changes are o= bsoleted > by > your new fw-cfg stuff and/or upstream churn in ACPI, de= vice > properties, etc. In particular ACPI is still a total my= stery to > me, > though passing a single address from guest to host can'= t be > that hard, > can it? >=20 > Any clues would be appreciated. >=20 > --Ed >=20 >=20 > It might be best to just re-start from the beginning. > So the idea is that ACPI should be about supplying the addr= ess > to guest. To supply address to host we'll use fw cfg. > This would be new I think: >=20 > - add support for writeable fw cfg blobs >=20 > patch applied >=20 > - add linker/loader command to write address of a blob into > such a fw cfg file > - add a new file used for vm gen id, use loader command abo= ve > to pass the address of a blob allocated for it to host >=20 > I don=E2=80=99t really understand the meaning of =E2=80=9Cfile=E2= =80=9D in this context. It > seems to be a way of specifying individual fw_cfg entries witho= ut > explicitly giving an index, but is not something that is visibl= e in > either the host or guest file system. Is this about right? In= my code > I=E2=80=99m using =E2=80=9C/etc/vmgenid=E2=80=9D >=20 >=20 > yes >=20 >=20 > As for the blob, I=E2=80=99m thinking this is where my main pro= blem is. The > =E2=80=98fw_cfg_add_*()=E2=80=99 functions take a data pointer = but doesn=E2=80=99t seem to copy > the data anywhere. We pass essentially a pointer via ACPI to t= he > guest, so what it points to needs to be in an accessible region= . I > don=E2=80=99t get how to define the blob contents. There are c= ommand-line > =E2=80=98fw-cfg=E2=80=99 options where you can specify a file, = but it=E2=80=99s not clear to me > how to use them. Maybe I reserve some IO memory or something? >=20 >=20 > Not sure I understand the question. fw cfg device will make > memory accessible to guest. Put the guest physical address there. > the address needs to be calculated by linker. >=20 >=20 > I=E2=80=99m almost ready to submit a V2 of the patch set, but there=E2=80= =99s still one issue > that I can=E2=80=99t figure out. From the guest, I can read the conten= ts of the blob. > If I make a change to the contents of the blob (via QMP) the guest doe= s not > see the changes. Is there something I need to do on the QEMU side to =E2= =80=9Cpush=E2=80=9D > the updated fw_cfg contents to the guest? I=E2=80=99ve noticed this bo= th when writing > a qtest for the feature, and also in a Linux kernel module I wrote that= reads > the ACPI contents in a guest. >=20 > thanks, > Ben fw cfg entities are assumed to be immutable. This week I'll merge support for writeable fw cfg entries. I don't see why you want to change fw cfg transparently though - I think it should be like this - guest writes GPA into fw cfg - qemu writes gen id at this GPA --=20 MST