qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] TB Chaining NOT Reset on TLB Flush??
@ 2007-06-16 13:22 amateur
  2007-06-16 13:27 ` Paul Brook
  0 siblings, 1 reply; 3+ messages in thread
From: amateur @ 2007-06-16 13:22 UTC (permalink / raw)
  To: qemu-devel

Hi guys,

I read from the Qemu internal documentation this:
    ``When MMU mappings change, only the chaining of the basic 
    blocks is reset (i.e. a basic block can no longer jump directly 
    to another one).''

But when I read the code, I find that tlb_flush() doesn't reset the
chaining between TBs. Is that the intended behaviour?? Won't that
cause problems on guest context switch??

-- 
If two people love each other, there can be no happy end to it.
		-- Ernest Hemingway

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] TB Chaining NOT Reset on TLB Flush??
  2007-06-16 13:22 [Qemu-devel] TB Chaining NOT Reset on TLB Flush?? amateur
@ 2007-06-16 13:27 ` Paul Brook
  2007-06-17  3:11   ` amateur
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Brook @ 2007-06-16 13:27 UTC (permalink / raw)
  To: qemu-devel, amateur

> I read from the Qemu internal documentation this:
>     ``When MMU mappings change, only the chaining of the basic
>     blocks is reset (i.e. a basic block can no longer jump directly
>     to another one).''
>
> But when I read the code, I find that tlb_flush() doesn't reset the
> chaining between TBs. Is that the intended behaviour?? Won't that
> cause problems on guest context switch??

The internals documentation is out of date. TBs are only chained directly when 
both source and destination are on the same page.

Paul

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] TB Chaining NOT Reset on TLB Flush??
  2007-06-16 13:27 ` Paul Brook
@ 2007-06-17  3:11   ` amateur
  0 siblings, 0 replies; 3+ messages in thread
From: amateur @ 2007-06-17  3:11 UTC (permalink / raw)
  To: qemu-devel

On Sat, Jun 16, 2007 at 02:27:05PM +0100, Paul Brook wrote:
> > I read from the Qemu internal documentation this:
> >     ``When MMU mappings change, only the chaining of the basic
> >     blocks is reset (i.e. a basic block can no longer jump directly
> >     to another one).''
> >
> > But when I read the code, I find that tlb_flush() doesn't reset the
> > chaining between TBs. Is that the intended behaviour?? Won't that
> > cause problems on guest context switch??
> 
> The internals documentation is out of date. TBs are only chained directly when 
> both source and destination are on the same page.
-------------------------
Thank you, Paul. I got it.

I can imagine that this decision is based on a performance evaluation,
right? But given that TLB flush(mov %cr3, %reg | invlpg) be a relative
rare case, it's hard to believe that reset the chaining on each TLB
flush would hurt the performance a lot. Can you shed some light on
where can I find some profiling data or performance statistics, or
links to some discussions on this?

-- 
You will not be elected to public office this year.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-06-17  3:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-06-16 13:22 [Qemu-devel] TB Chaining NOT Reset on TLB Flush?? amateur
2007-06-16 13:27 ` Paul Brook
2007-06-17  3:11   ` amateur

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).