From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=37892 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Opu3T-0005p9-0w for qemu-devel@nongnu.org; Sun, 29 Aug 2010 22:25:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Opu3R-0006Rw-RE for qemu-devel@nongnu.org; Sun, 29 Aug 2010 22:25:02 -0400 Received: from mail.valinux.co.jp ([210.128.90.3]:50373) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Opu3R-0006Rb-AO for qemu-devel@nongnu.org; Sun, 29 Aug 2010 22:25:01 -0400 Date: Mon, 30 Aug 2010 11:36:49 +0900 From: Isaku Yamahata Subject: Re: [Qemu-devel] Re: Unusual physical address when using 64-bit BAR Message-ID: <20100830023649.GC22847@valinux.co.jp> References: <20100713204157.GI31689@valinux.co.jp> <20100714025216.GK31689@valinux.co.jp> <20100720095223.GC24957@valinux.co.jp> <20100721033101.GD11146@redhat.com> <20100721034918.GA6285@valinux.co.jp> <20100825022136.GB7547@valinux.co.jp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cam Macdonell Cc: "qemu-devel@nongnu.org Developers" , seabios@seabios.org, Avi Kivity , "Michael S. Tsirkin" On Fri, Aug 27, 2010 at 01:35:23PM -0600, Cam Macdonell wrote: > In upstream seabios.git, the c040 is not written, but the device > returns ffffffff from 0x1c (only reads and writes to 0x18 and 0x1c are > shown below) > > pci_read_config: (val) 0x4 <- 0x18 (addr) > pci_write_config: (val) 0xffffffff -> 0x18 (addr) > pci_read_config: (val) 0xe0000004 <- 0x18 (addr) > pci_write_config: (val) 0x4 -> 0x18 (addr) > pci_read_config: (val) 0x4 <- 0x18 (addr) this read is useless. I sent out the patch. > pci_write_config: (val) 0x0 -> 0x18 (addr) > pci_write_config: (val) 0x0 -> 0x1c (addr) It looks like that overflow occurred. You need overflow patch. As the size is huge, seabios can't map it. Anyway even with overflow patch, the expected result is to leave the bar unmodified(initial value). > pci_read_config: (val) 0x4 <- 0x18 (addr) > pci_write_config: (val) 0xffffffff -> 0x18 (addr) > IVSHMEM: guest pci addr = e0000000, guest h/w addr = 2164588544, size = 20000000 > pci_read_config: (val) 0xe0000004 <- 0x18 (addr) > pci_write_config: (val) 0x4 -> 0x18 (addr) > pci_read_config: (val) 0x0 <- 0x1c (addr) > pci_write_config: (val) 0xffffffff -> 0x1c (addr) > IVSHMEM: guest pci addr = ffffffff00000000, guest h/w addr = > 2164588544, size = 20000000 > pci_read_config: (val) 0xffffffff <- 0x1c (addr) > pci_write_config: (val) 0x0 -> 0x1c (addr) Is the above done by guest OS? The guest OS doesn't seem to know 64bit bar. -- yamahata