From: Laurent Vivier <laurent@vivier.eu>
To: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH] target/m68k: add a mechanism to automatically free TCGv
Date: Mon, 19 Mar 2018 10:07:12 +0100 [thread overview]
Message-ID: <755d05ce-50d1-a3c0-f3a5-822916916f03@vivier.eu> (raw)
In-Reply-To: <2e64bf25-1318-2773-5d17-6c8a9bb835c9@linaro.org>
Le 19/03/2018 à 09:39, Richard Henderson a écrit :
> On 03/19/2018 12:12 AM, Laurent Vivier wrote:
>> SRC_EA() and gen_extend() can return either a temporary
>> TCGv or a memory allocated one. Mark them when they are
>> allocated, and free them automatically at end of the
>> instruction translation.
>>
>> We want to free locally allocated TCGv to avoid
>> overflow in sequence like:
>>
>> 0xc00ae406: movel %fp@(-132),%fp@(-268)
>> 0xc00ae40c: movel %fp@(-128),%fp@(-264)
>> 0xc00ae412: movel %fp@(-20),%fp@(-212)
>> 0xc00ae418: movel %fp@(-16),%fp@(-208)
>> 0xc00ae41e: movel %fp@(-60),%fp@(-220)
>> 0xc00ae424: movel %fp@(-56),%fp@(-216)
>> 0xc00ae42a: movel %fp@(-124),%fp@(-252)
>> 0xc00ae430: movel %fp@(-120),%fp@(-248)
>> 0xc00ae436: movel %fp@(-12),%fp@(-260)
>> 0xc00ae43c: movel %fp@(-8),%fp@(-256)
>> 0xc00ae442: movel %fp@(-52),%fp@(-276)
>> 0xc00ae448: movel %fp@(-48),%fp@(-272)
>> ...
>>
>> That can fill a lot of TCGv entries in a sequence,
>> especially since 15fa08f845 ("tcg: Dynamically allocate TCGOps")
>> we have no limit to fill the TCGOps cache and we can fill
>> the entire TCG variables array and overflow it.
>>
>> Suggested-by: Richard Henderson <rth@twiddle.net>
>> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
>> ---
>
> This is a good start. It's hard to see all of where else might have been
> missed; at least the call to gen_load in gen_lea_indexed.
>
> For next development cycle it would be good to convert the translator loop and
> enable TCGv leak detection.
I agree.
> That said, this looks good so far.
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
I'm going to update the patch by splitting it in two as Philippe asked
and mark the missing gen_load() in gen_lea_indexed().
Thanks,
Laurent
prev parent reply other threads:[~2018-03-19 9:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-18 16:12 [Qemu-devel] [PATCH] target/m68k: add a mechanism to automatically free TCGv Laurent Vivier
2018-03-18 23:27 ` Philippe Mathieu-Daudé
2018-03-19 8:39 ` Richard Henderson
2018-03-19 9:07 ` Laurent Vivier [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=755d05ce-50d1-a3c0-f3a5-822916916f03@vivier.eu \
--to=laurent@vivier.eu \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).