From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CeHAN-0007z6-Da for qemu-devel@nongnu.org; Tue, 14 Dec 2004 13:12:55 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CeHAL-0007yA-5J for qemu-devel@nongnu.org; Tue, 14 Dec 2004 13:12:54 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CeHAK-0007xy-SC for qemu-devel@nongnu.org; Tue, 14 Dec 2004 13:12:53 -0500 Received: from [64.233.184.197] (helo=wproxy.gmail.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CeGsF-0008Og-Ar for qemu-devel@nongnu.org; Tue, 14 Dec 2004 12:54:12 -0500 Received: by wproxy.gmail.com with SMTP id 70so90151wra for ; Tue, 14 Dec 2004 09:54:05 -0800 (PST) Message-ID: Date: Tue, 14 Dec 2004 18:54:04 +0100 From: Piotras Subject: Re: [Qemu-devel] softmmu thoughts In-Reply-To: <41765D06.4020006@bellard.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_171_13003258.1103046844878" References: <1098217677.26133.26.camel@kubu.opensource.se> <4175B3CA.9050209@sti.net> <41765D06.4020006@bellard.org> Reply-To: Piotras , qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fabrice Bellard , Magnus Damm , qemu-devel@nongnu.org ------=_Part_171_13003258.1103046844878 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! I'm attaching a new patch based on your suggestions. On my machine nbench gives: memory index: 37% up integer index: 36% up fp index: 4% up The patch is divided in three files to simplify review. Part 1 contains mostly rearrangement existing code necessary for the patch. Part 2 adds the new mmu mode. Part 3 contains heuristic to optimize performance of iomem and self modifying code. To test the patch create a build directory and run: > tar -zxf _PATH_TO_qemu-0.6.1.tar.gz > tar -zxf _PATH_TO_linux-test-0.5.1.tar.gz > cd qemu-0.6.1 > ./configure --target-list=i386-softmmu > gunzip < _PATH_TO_mmu-part1.patch.gz | patch -p1 > gunzip < _PATH_TO_mmu-part2.patch.gz | patch -p1 > gunzip < _PATH_TO_mmu-part3.patch.gz | patch -p1 > make > ./i386-softmmu/qemu -m 64 -L pc-bios -hda ../linux-test/linux.img Last but not least. I'd like to acknowledge Magnus contribution -- VM setup code is derived from his work. Regards, Piotrek On Wed, 20 Oct 2004 14:41:42 +0200, Fabrice Bellard wrote: > Hi, > > The idea is interesting. Here are several suggestions: > > - It would be more efficient and simpler to map one 4KB host memory page > every 8 KB. Then you can have a fixed mmap() mapping (no syscall > overhead to change the mappings) and a simple way to handle unaligned > accesses. > - The critical point would be to keep standard soft MMU accesses for > device access. An architectural change is needed to do that, but it > seems easy to add. > - This patch should work with qemu, not qemu-fast. The future of > qemu-fast is to use a kernel module to have near native performances. It > is not worthwhile to invest time in soft MMU or dynamic translation when > you can just execute the code as is ! > > Fabrice. ------=_Part_171_13003258.1103046844878 Content-Type: application/x-tar; name="mmu-part1.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mmu-part1.patch.gz" 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 oMYYUVbhX5pyKtnwGAAA ------=_Part_171_13003258.1103046844878 Content-Type: application/x-tar; name="mmu-part2.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mmu-part2.patch.gz" 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 ------=_Part_171_13003258.1103046844878 Content-Type: application/x-tar; name="mmu-part3.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mmu-part3.patch.gz" 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 ------=_Part_171_13003258.1103046844878--