From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang2 Subject: Re: [PATCH] passthru: Fix pci bar remapping for =?iso-8859-1?q?passthru=09devices?= Date: Tue, 21 Jul 2009 11:57:25 +0200 Message-ID: <200907211157.25952.wei.wang2@amd.com> References: <200907201603.56725.wei.wang2@amd.com> <57C9024A16AD2D4C97DC78E552063EA3A91348A3@orsmsx505.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <57C9024A16AD2D4C97DC78E552063EA3A91348A3@orsmsx505.amr.corp.intel.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: "Kay, Allen M" List-Id: xen-devel@lists.xenproject.org Hi Allen, Pls find my explanations inline. > I thought the originally code already handles sizing of the BAR operations > (writing all 1's and reading the size back). How did it work before? Did = it > work because we are relying on the a well behaved guest to restore the > original value of the BAR after the sizing operation? In early qemu, remapping mmio was only allowed by pt_cmd_reg_write(). But=20 currently, guest code can also trigger mmio remapping from pt_bar_reg_write= ()=20 and pt_exp_rom_bar_reg_write() and this will cause the problem. > By reading the code, it is not obvious to me how does not doing r->addr = =3D > cfg_entry->data operation prevents calling of pt_bar_mapping_one() to > create p2m mapping. Guest OS probes pci bar after guest bios doing this, so r->addr will still= =20 have the old mmio base address assigned by guest bios before guest OS=20 writing '1's. If we prevent r->addr from being updated by cfg_entry->data,= =20 pt_bar_mapping_one() will not trigger any actual p2m updates because it wil= l=20 check whether r->addr has already been changed before calling r->map_func(). Thanks, Wei > Allen > > -----Original Message----- > From: xen-devel-bounces@lists.xensource.com > [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Wei Wang2 Sen= t: > Monday, July 20, 2009 7:04 AM > To: xen-devel@lists.xensource.com > Subject: [Xen-devel] [PATCH] passthru: Fix pci bar remapping for passthru > devices > > Hi, > When guest code tries to get the block size of mmio, it will write all "1= "s > into pci bar register and then qemu will return all "0"s to the don't care > bits in the emulated bar register to indicate the block size to guest cod= e. > In this case, we should not create p2m mapping in pt_bar_reg_write() and > pt_exp_rom_bar_reg_write(). Attached patch fixes this issue, additional > comment can be found in the patch. > > Thanks, > Wei > > Signed-off-by: Wei Wang > -- > AMD GmbH, Germany > Operating System Research Center > > Legal Information: > Advanced Micro Devices GmbH > Karl-Hammerschmidt-Str. 34 > 85609 Dornach b. M=FCnchen > > Gesch=E4ftsf=FChrer: Jochen Polster, Thomas M. McCoy, Giuliano Meroni > Sitz: Dornach, Gemeinde Aschheim, Landkreis M=FCnchen > Registergericht M=FCnchen, HRB Nr. 43632 > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel