From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:48403) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QzJxI-0001Jh-VG for qemu-devel@nongnu.org; Thu, 01 Sep 2011 22:58:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QzJxH-0008G8-PQ for qemu-devel@nongnu.org; Thu, 01 Sep 2011 22:58:08 -0400 Received: from [222.73.24.84] (port=53762 helo=song.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QzJxF-0008Ef-Qf for qemu-devel@nongnu.org; Thu, 01 Sep 2011 22:58:07 -0400 Message-ID: <4E6045E0.2090701@cn.fujitsu.com> Date: Fri, 02 Sep 2011 10:56:32 +0800 From: Wen Congyang MIME-Version: 1.0 References: <20110704094358.GA10960@redhat.com> <4E4B7DE1.3050405@cn.fujitsu.com> <4E4C8577.5000608@cn.fujitsu.com> <4E4D2C9F.6040805@redhat.com> <4E4DF0A0.6000108@cn.fujitsu.com> <4E4E808C.4000205@redhat.com> <4E51C945.6070103@cn.fujitsu.com> <4E51F5FD.4030905@redhat.com> In-Reply-To: <4E51F5FD.4030905@redhat.com> Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 Subject: Re: [Qemu-devel] [PATCH] pci: add standard bridge device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Kevin Wolf , Isaku Yamahata , qemu-devel@nongnu.org, "Michael S. Tsirkin" At 08/22/2011 02:23 PM, Avi Kivity Write: > On 08/22/2011 06:13 AM, Wen Congyang wrote: >> At 08/19/2011 11:26 PM, Avi Kivity Write: >> > On 08/18/2011 10:12 PM, Wen Congyang wrote: >> >> >> >> >> >> The following patch can fix this problem, but I'm not sure >> whether it >> >> >> is right. >> >> > >> >> > It's correct but insufficient, the filtering code >> (pci_bridge_filter) >> >> > needs to be updated to use the memory API. >> >> >> >> I read the function pci_bridge_filter(), and the function only read >> >> PCI bridge's config space(command, base and limit). If base> limit, >> >> it will set addr to PCI_BAR_UNMAPPED. >> >> >> >> I do not find anything that needs to updated to use the memory API. >> > >> > Currently it doesn't do any filtering at all. Bridges need to >> create a >> > new address space, then attach aliases of this region >> (corresponding to >> > the filtered area and to the legacy vga space) to the parent bus' >> > address space. >> >> Hmm, does this problem exist before memory API is introduced? > > Yes. There was code to handle it, but I don't think it was correct. > >> >> > >> >> I add a scsi controller on pci bus1, and a scsi disk on this >> controller. >> >> I can read and write this disk, and I do not meet any problem. >> >> >> > >> > However, filtering doesn't work. You could put a BAR outside the >> > filtered area and it would be visible to the guest. >> >> How to put a BAR outside the filtered area and confirm whether it >> would be >> virible to the guest? >> >> > > > You could use something like kvm-unit-tests.git to write a simple test > that sets up a BAR (say from hw/ivshmem.c), writes and reads to see that > it is visible, programs the bridge to filter part of the BAR out, then > writes and reads again to verify that the correct part is filtered out. I am testing ivshmem now. But I do not know how to access the memory specified in the BAR. Thanks Wen Congyang >