From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CeusH-0003xP-DH for qemu-devel@nongnu.org; Thu, 16 Dec 2004 07:36:53 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CeusG-0003x3-Jt for qemu-devel@nongnu.org; Thu, 16 Dec 2004 07:36:53 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CeusE-0003wp-5j for qemu-devel@nongnu.org; Thu, 16 Dec 2004 07:36:52 -0500 Received: from [64.233.184.194] (helo=wproxy.gmail.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CeueZ-0006DD-5b for qemu-devel@nongnu.org; Thu, 16 Dec 2004 07:22:48 -0500 Received: by wproxy.gmail.com with SMTP id 71so192028wra for ; Thu, 16 Dec 2004 04:22:41 -0800 (PST) Message-ID: Date: Thu, 16 Dec 2004 13:22:41 +0100 From: Piotras Subject: Re: [Qemu-devel] softmmu thoughts In-Reply-To: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_394_25525703.1103199761694" 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_394_25525703.1103199761694 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi! I updated the patch to solve problems reported by Jens Arm: * compilation problem on Mandrake 9.1 * SEGV problem when working with non-TLS glibc. Jens, thanks for your help! I also cleaned-up the code and comments in several places (for example page_unprotect). The patch should apply cleanly to recent CVS. It should work with 0.6.1 without problems too. Regards, Piotrek On Tue, 14 Dec 2004 18:54:04 +0100, Piotras wrote: > 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_394_25525703.1103199761694 Content-Type: application/x-tar; name="v1-part1.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-part1.patch.gz" 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 C48cAAA= ------=_Part_394_25525703.1103199761694 Content-Type: application/x-tar; name="v1-part2.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-part2.patch.gz" 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 ------=_Part_394_25525703.1103199761694 Content-Type: application/x-tar; name="v1-part3.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-part3.patch.gz" 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 ------=_Part_394_25525703.1103199761694--