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