From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53003) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZdPHT-0002CX-Rd for qemu-devel@nongnu.org; Sat, 19 Sep 2015 17:02:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZdPHQ-0006lq-LX for qemu-devel@nongnu.org; Sat, 19 Sep 2015 17:02:47 -0400 Received: from mail-pa0-x233.google.com ([2607:f8b0:400e:c03::233]:33188) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZdPHQ-0006lZ-Fu for qemu-devel@nongnu.org; Sat, 19 Sep 2015 17:02:44 -0400 Received: by pacex6 with SMTP id ex6so80543949pac.0 for ; Sat, 19 Sep 2015 14:02:43 -0700 (PDT) Sender: Richard Henderson References: <1442552129-19242-1-git-send-email-rth@twiddle.net> <1442552129-19242-21-git-send-email-rth@twiddle.net> From: Richard Henderson Message-ID: <55FDCD6F.6080803@twiddle.net> Date: Sat, 19 Sep 2015 14:02:39 -0700 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 20/22] tcg: Save insn data and use it in cpu_restore_state_from_tb List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: =?UTF-8?Q?Alex_Benn=c3=a9e?= , QEMU Developers , Aurelien Jarno On 09/18/2015 06:08 AM, Peter Maydell wrote: > On 18 September 2015 at 05:55, Richard Henderson wrote: >> We can now restore state without retranslation. >> >> Signed-off-by: Richard Henderson >> --- >> +/* Encode the data collected about the instructions while compiling TB. >> + Place the data at BLOCK, and return the number of bytes consumed. >> + >> + The logical table consisits of TARGET_INSN_START_WORDS target_ulong's, > > "consists". No apostrophe in 'target_ulongs'. > >> + which come from the target's insn_start data, followed by a uintptr_t >> + which comes from the host pc of the end of the code implementing the insn. >> + >> + Each line of the table is encoded as sleb128 deltas from the previous >> + line. The seed for the first line is { tb->pc, 0..., tb->tc_ptr }. >> + That is, the first column is seeded with the guest pc, the last column >> + with the host pc, and the middle columns with zeros. */ > > You're still not allowing for your worst-case datatable size when we > calculate tcg_ctx.code_gen_buffer_max_size. I'll note that the current worst-case estimate is way too big: 122kB. Which honestly means we're wasting a ton of space at the end of the code_gen_buffer. While down-thread we talk about guard pages and sigsegv handlers etc, I now believe this shouldn't be a blocker for this patch set. (And in particular, setting up a SEH handler for Win32 to act as a sigsegv handler is just too annoyingly difficult. It'd be one thing if we only targeted VC++, but doing SEH in GCC at present is just Too Ugly. So we'd have two different schemes for win32 and posix, which doesn't seem to be the best of ideas.) r~