From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VikTH-0000E7-Cr for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:32:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VikTA-0003cI-8l for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:31:59 -0500 Received: from mx1.redhat.com ([209.132.183.28]:2562) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VikTA-0003cC-0q for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:31:52 -0500 Message-ID: <528B5A2B.3060100@redhat.com> Date: Tue, 19 Nov 2013 13:31:39 +0100 From: Laszlo Ersek MIME-Version: 1.0 References: <1384269110-23613-1-git-send-email-lersek@redhat.com> <528AA407.8070503@redhat.com> <1384851266.16718.162.camel@nilsson.home.kraxel.org> In-Reply-To: <1384851266.16718.162.camel@nilsson.home.kraxel.org> Content-Type: multipart/mixed; boundary="------------000600080606060600000701" Subject: Re: [Qemu-devel] [edk2] [edk2 PATCH 0/1] OvmfPkg: grab ACPI tables from QEMU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: edk2-devel@lists.sourceforge.net Cc: "Michael S. Tsirkin" , Wei Liu , Gerd Hoffmann , qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------000600080606060600000701 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 11/19/13 09:54, Gerd Hoffmann wrote: > Hi, > >> ACPI PciWindow32: Base=0xA0000000 End=0xFEEFFFFF Length=0x5EF00000 > >> begin32=c0000000 end32=fec00000 begin64=0 end64=0 > > qemu & seabios pick a 32bit window size which allows to cover it with > a single mtrr entry. Size must be a power of two for that to work. > > [root@fedora ~]# cat /proc/mtrr > reg00: base=0x080000000 ( 2048MB), size= 2048MB, count=1: uncachable > > So we have three cases for piix (as you've figured in the source code > already). Start at 0x80000000 (2G window), 0xc0000000 (1G window) and > 0xe0000000 (512M window). > > btw: q35 has a fixed 1G window, max low ram addr is 0xb000000, the > remaining address space (0xb0000000 -> 0xc0000000) is used for > mmconfig. > >> I guess the range starting at 0xc0000000 is somehow "incompatible" >> with the EFI memory map. (I can't actually explain this idea because, >> again, this second range is a proper subset of the former, and its >> size is still 1004MB.) > > Probably efi places the gfx memory bar somewhere between 0xa0000000 > and 0xc0000000. Sets up efifb accordingly. Then the linux kernel > loads and figures "Oh, that bar is outside the 0xc0000000+ window" and > goes remap it -> efifb writes go into nowhere. Thank you for the explanation. How do I fix it though? :) I could change the MMIO HOBs in PEI (OvmfPkg/PlatformPei/Platform.c): // // Video memory + Legacy BIOS region // AddIoMemoryRangeHob (0x0A0000, BASE_1MB); // // address purpose size // ------------ -------- ------------------------- // max(top, 2g) PCI MMIO 0xFC000000 - max(top, 2g) // 0xFC000000 gap 44 MB // 0xFEC00000 IO-APIC 4 KB // 0xFEC01000 gap 1020 KB // 0xFED00000 HPET 1 KB // 0xFED00400 gap 1023 KB // 0xFEE00000 LAPIC 1 MB // AddIoMemoryRangeHob (TopOfMemory < BASE_2GB ? BASE_2GB : TopOfMemory, 0xFC000000); AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_4KB); AddIoMemoryBaseSizeHob (0xFED00000, SIZE_1KB); AddIoMemoryBaseSizeHob (PcdGet32(PcdCpuLocalApicBaseAddress), SIZE_1MB); to imitate the same three cases. The HOB with the lowest address produced here would affect the BAR placement as well. ... Yes, I tested the attached patch, and it makes the display work in both 2560MB guests. However, I don't like the idea of hardwiring those boundaries here. (The current values are also hardwired, but they are better: they are not the consequence of "SeaBIOS has done it like this forever" -- inter-firmware dependency, especially when they aren't each other's payloads, is bad IMHO.) We'd need something dynamic here, like a memory map from qemu. ... Which puts us in the same boat with Wei :) Thanks Laszlo --------------000600080606060600000701 Content-Type: text/plain; charset=ISO-8859-2; name="0001-OvmfPkg-PlatformPei-follow-SeaBIOS-tradition-with-32.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-OvmfPkg-PlatformPei-follow-SeaBIOS-tradition-with-32.pa"; filename*1="tch" RnJvbSA5Y2YyYWY4MjM5OWQ3ZDdhOTcxN2ZmNmFjMTc4NjBiNjZjNzA1YTY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29t PgpEYXRlOiBUdWUsIDE5IE5vdiAyMDEzIDEzOjA3OjQxICswMTAwClN1YmplY3Q6IFtQQVRD SF0gT3ZtZlBrZy9QbGF0Zm9ybVBlaTogZm9sbG93IFNlYUJJT1MgdHJhZGl0aW9uIHdpdGgg MzItYml0IFBDSQogaG9sZSBwbGFjZW1lbnQKCkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0Nv cmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjAKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVy c2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRm b3JtLmMgfCA2ICsrKystLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3Jt LmMgYi9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmMKaW5kZXggZmI1NmU5OS4uNWJj MGQ3NCAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jCisrKyBi L092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIE1l bU1hcEluaXRpYWxpemF0aW9uICgKICAgLy8NCiAgIC8vIGFkZHJlc3MgICAgICAgcHVycG9z ZSAgIHNpemUNCiAgIC8vIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCi0gIC8vIG1heCh0b3AsIDJnKSAgUENJIE1NSU8gIDB4RkMwMDAwMDAg LSBtYXgodG9wLCAyZykNCisgIC8vIDJHLzNHLzMuNUcgICAgUENJIE1NSU8gICAgMHhGQzAw MDAwMCAtIDJHLzNHLzMuNUcNCiAgIC8vIDB4RkMwMDAwMDAgICAgZ2FwICAgICAgICAgICAg ICAgICAgICAgICAgICAgNDQgTUINCiAgIC8vIDB4RkVDMDAwMDAgICAgSU8tQVBJQyAgICAg ICAgICAgICAgICAgICAgICAgIDQgS0INCiAgIC8vIDB4RkVDMDEwMDAgICAgZ2FwICAgICAg ICAgICAgICAgICAgICAgICAgIDEwMjAgS0INCkBAIC0yMDUsNyArMjA1LDkgQEAgTWVtTWFw SW5pdGlhbGl6YXRpb24gKAogICAvLyAweEZFRDAwNDAwICAgIGdhcCAgICAgICAgICAgICAg ICAgICAgICAgICAxMDIzIEtCDQogICAvLyAweEZFRTAwMDAwICAgIExBUElDICAgICAgICAg ICAgICAgICAgICAgICAgICAxIE1CDQogICAvLw0KLSAgQWRkSW9NZW1vcnlSYW5nZUhvYiAo VG9wT2ZNZW1vcnkgPCBCQVNFXzJHQiA/IEJBU0VfMkdCIDogVG9wT2ZNZW1vcnksIDB4RkMw MDAwMDApOw0KKyAgQWRkSW9NZW1vcnlSYW5nZUhvYiAoVG9wT2ZNZW1vcnkgPD0gMHg4MDAw MDAwMCA/IDB4ODAwMDAwMDAgOg0KKyAgICAgICAgICAgICAgICAgICAgICAgVG9wT2ZNZW1v cnkgPD0gMHhDMDAwMDAwMCA/IDB4QzAwMDAwMDAgOg0KKyAgICAgICAgICAgICAgICAgICAg ICAgMHhFMDAwMDAwMCwgMHhGQzAwMDAwMCk7DQogICBBZGRJb01lbW9yeUJhc2VTaXplSG9i ICgweEZFQzAwMDAwLCBTSVpFXzRLQik7DQogICBBZGRJb01lbW9yeUJhc2VTaXplSG9iICgw eEZFRDAwMDAwLCBTSVpFXzFLQik7DQogICBBZGRJb01lbW9yeUJhc2VTaXplSG9iIChQY2RH ZXQzMihQY2RDcHVMb2NhbEFwaWNCYXNlQWRkcmVzcyksIFNJWkVfMU1CKTsNCi0tIAoxLjgu My4xCgo= --------------000600080606060600000701--