qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: TeLeMan <geleman@gmail.com>
Cc: "Avi Kivity" <avi@redhat.com>, qemu-devel <qemu-devel@nongnu.org>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH] exec: fix breakpoint_invalidate() breakage
Date: Wed, 23 May 2012 23:00:44 -0300	[thread overview]
Message-ID: <4FBD964C.4080401@web.de> (raw)
In-Reply-To: <CAETRQW=34s9GdUc8AFLKxAPyMLJMVsfdDxZKxiz4NG2xR97g8w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2239 bytes --]

On 2012-05-23 22:29, TeLeMan wrote:
> On Thu, May 24, 2012 at 1:36 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>> On 2012-05-23 13:02, Jan Kiszka wrote:
>>> On 2012-05-23 11:11, TeLeMan wrote:
>>>> On Wed, May 23, 2012 at 7:22 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>>>> On 2012-05-23 04:09, TeLeMan wrote:
>>>>>> On Wed, May 23, 2012 at 11:41 AM, Andreas Färber <afaerber@suse.de> wrote:
>>>>>>> Am 18.05.2012 11:49, schrieb TeLeMan:
>>>>>>>> This breakage was introduced by the commit "memory: make
>>>>>>>> phys_page_find() return an unadjusted".
>>>>>>>
>>>>>>> You seem to have found the origin of your problem. If you also mention
>>>>>>> the commit hash in your commit message then certain frontends (gitk,
>>>>>>> repo.or.cz) will display it as a handy hyperlink to that commit.
>>>>>>>
>>>>>>>>
>>>>>>>> Signed-off-by: TeLeMan <geleman@gmail.com>
>>>>>>>
>>>>>>> Signed-off-by is a legal statement of origin and must not be a pseudonym.
>>>>>> Ok, please ignore this patch. I won't submit any patch just report bugs.
>>>>>
>>>>> Then please describe this bug in more details, e.g. how to reproduce.
>>>> I think its evident. cpu_get_phys_page_debug(env, pc) is not the
>>>> physical address of pc but the physical page base address of pc.
>>>
>>> ...so this bites us if the instruction spans two pages as
>>> tb_invalidate_phys_addr requests invalidation on a page granularity.
>>
>> In fact, this is irrelevant. We only need to flush the address at which
>> the instruction starts, and that is achieved by flushing all TB that
>> relate to that page as the current code does.
> 
> But the instruction start is wrong and its TB may not be found. For example,
> the pc is 0x1234 and its physical address is 0x1234. The correct
> "start" and "end" of tb_invalidate_phys_page_range() is 0x1234 and
> 0x1235. But now the "start" and "end" is 0x1000 and 0x1001.
> If 0x1000 is not translated yet, the real TB won't be invalidated.

The tb containing 0x1234 would be linked to the list of TBs that are
related to the 0x1000 page. As we declare that page invalid, all
affected TBs are dropped, not just the one containing the breakpoint.
See tb_invalidate_phys_page_range.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

  reply	other threads:[~2012-05-24  2:00 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-18  9:49 [Qemu-devel] [PATCH] exec: fix breakpoint_invalidate() breakage TeLeMan
2012-05-22 22:54 ` TeLeMan
2012-05-23  3:41 ` Andreas Färber
2012-05-23  7:09   ` TeLeMan
2012-05-23 11:22     ` Jan Kiszka
2012-05-23 14:11       ` TeLeMan
2012-05-23 16:02         ` Jan Kiszka
2012-05-23 17:36           ` Jan Kiszka
2012-05-24  1:29             ` TeLeMan
2012-05-24  2:00               ` Jan Kiszka [this message]
2012-05-24  2:16                 ` TeLeMan
2012-05-24  2:21                 ` Jan Kiszka
2012-05-23 19:40   ` Blue Swirl
2012-05-23 20:04     ` Andreas Färber
2012-05-23 20:28       ` Blue Swirl
2012-05-23 20:44         ` Anthony Liguori
2012-05-24  2:12           ` TeLeMan
2012-05-24 13:35             ` Andreas Färber
2012-05-24 18:12               ` Stefan Weil
2012-05-24 18:36                 ` Anthony Liguori
2012-05-24 19:42                   ` Stefan Weil
2012-05-24 19:51                     ` Anthony Liguori
2012-05-25  0:43                       ` TeLeMan

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=4FBD964C.4080401@web.de \
    --to=jan.kiszka@web.de \
    --cc=afaerber@suse.de \
    --cc=avi@redhat.com \
    --cc=geleman@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /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).