From owner-freebsd-emulation@FreeBSD.ORG Tue Mar 30 20:11:33 2010 Return-Path: Delivered-To: freebsd-emulation@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F7F2106564A for ; Tue, 30 Mar 2010 20:11:33 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 4D3458FC08 for ; Tue, 30 Mar 2010 20:11:33 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id 575681E00172; Tue, 30 Mar 2010 22:11:32 +0200 (CEST) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.3/8.14.3) with ESMTP id o2UK9m1q002283; Tue, 30 Mar 2010 22:09:48 +0200 (CEST) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.3/8.14.3/Submit) id o2UK9lAv002282; Tue, 30 Mar 2010 22:09:47 +0200 (CEST) (envelope-from nox) Date: Tue, 30 Mar 2010 22:09:47 +0200 (CEST) From: Juergen Lock Message-Id: <201003302009.o2UK9lAv002282@triton8.kn-bremen.de> To: rth@twiddle.net X-Newsgroups: local.list.qemu In-Reply-To: <4BB2540B.90704@twiddle.net> References: <20100325204423.GA46954@triton8.kn-bremen.de> <20100330191629.GA95521@triton8.kn-bremen.de> Organization: home Cc: Blue Swirl , freebsd-emulation@freebsd.org, Toni , qemu-devel@nongnu.org, Andreas Tobler Subject: Re: [Qemu-devel] qemu git head 20100323 on FreeBSD - qemu-devel port update for testing X-BeenThere: freebsd-emulation@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Development of Emulators of other operating systems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Mar 2010 20:11:33 -0000 In article <4BB2540B.90704@twiddle.net> you write: >On 03/30/2010 12:16 PM, Juergen Lock wrote: >> I first tried to replace the endaddr in the !h2g_valid(endaddr) case with >> ((abi_ulong)1 << L1_MAP_ADDR_SPACE_BITS) - 1 >> if TARGET_ABI_BITS > L1_MAP_ADDR_SPACE_BITS (which comes from the condition >> of the assert in page_set_flags() that was triggered on the ~0ul value), >> but that caused the qemu process to grow into swap and made the box >> usuable when that code was reached and I had to kill qemu. (The box has >> 8 GB RAM.) And so I thought just leaving that page range unprotected >> if only the start address is valid was the lesser evil... > >What's are the real arguments to the page_set_flags that causes things >to go into swap? I can't imagine the range really being so large that >it causes massive allocation within that function... Oh sorry if that was not clear, things go into swap if I _replace_ the endaddr ~0ul (which caused the assert) with the max value the assert still tolerates i.e. ((abi_ulong)1 << L1_MAP_ADDR_SPACE_BITS) - 1 which in this case seems to be 0x7fffffffffff: #3 0x0000000060012731 in page_set_flags (start=140737488224256, end=18446744073709551615, flags=32) at /usr/ports/emulators/qemu-devel-20100323a/work/qemu-snapshot-20100323_20/exec.c:2426 2426 assert(end < ((abi_ulong)1 << L1_MAP_ADDR_SPACE_BITS)); (gdb) i li 2426 Line 2426 of "/usr/ports/emulators/qemu-devel-20100323a/work/qemu-snapshot-20100323_20/exec.c" starts at address 0x60012662 and ends at 0x60012675 . (gdb) disassemble 0x60012662 0x60012675 Dump of assembler code from 0x60012662 to 0x60012675: 0x0000000060012662 : mov $0x7fffffffffff,%rax ^^^^^^^^^^^^^^ 0x000000006001266c : cmp %rax,%rsi 0x000000006001266f : ja 0x60012718 End of assembler dump. (gdb) q Cheers, Juergen