This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] [PATCH] passthru: Fix pci bar remapping for passthru dev

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [Xen-devel] [PATCH] passthru: Fix pci bar remapping for passthru devices
From: Wei Wang2 <wei.wang2@xxxxxxx>
Date: Tue, 21 Jul 2009 11:57:25 +0200
Cc: "Kay, Allen M" <allen.m.kay@xxxxxxxxx>
Delivery-date: Tue, 21 Jul 2009 02:58:43 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <57C9024A16AD2D4C97DC78E552063EA3A91348A3@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <200907201603.56725.wei.wang2@xxxxxxx> <57C9024A16AD2D4C97DC78E552063EA3A91348A3@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: KMail/1.9.6 (enterprise 20070904.708012)
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 
currently, guest code can also trigger mmio remapping from pt_bar_reg_write() 
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 =
> 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 
have the old mmio base address assigned by guest bios before guest OS 
writing '1's. If we prevent r->addr from being updated by cfg_entry->data, 
pt_bar_mapping_one() will not trigger any actual p2m updates because it will 
check whether r->addr has already been changed before calling r->map_func().


> Allen
> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Wei Wang2 Sent:
> Monday, July 20, 2009 7:04 AM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> 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 code.
> 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 <wei.wang2@xxxxxxx>
> --
>  AMD GmbH, Germany
>  Operating System Research Center
>  Legal Information:
>  Advanced Micro Devices GmbH
>  Karl-Hammerschmidt-Str. 34
>  85609 Dornach b. München
>  Geschäftsführer: Jochen Polster, Thomas M. McCoy, Giuliano Meroni
>  Sitz: Dornach, Gemeinde Aschheim, Landkreis München
>  Registergericht München, HRB Nr. 43632
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

Xen-devel mailing list