qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] When do we need to do TB unchaining?


From: 陳韋任
Subject: Re: [Qemu-devel] When do we need to do TB unchaining?
Date: Fri, 30 Sep 2011 09:53:02 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

Hi, Blue

> I don't think it is possible. The only non-device cases for x86 are
> tb_invalidate_phys_page_range(), cpu_x86_set_a20() and
> do_inject_x86_mce(), none of which should be reachable from user
> emulator.
> 
> Maybe these should be #ifdeffed out from user emulator builds.

  I am not sure if SMC will use tb_invalidate_phys_page_range. Currently,
QEMU defines tcg_handle_interrupt (replace original cpu_interrupt)
and cpu_interrupt for system and process mode separately. Perhaps
this should leave to x86 experts to judge.
 
> > 2. cpu_exit:
> >
> >  QEMU will register a host SIGALRM handler, host_alarm_handler
> > (qemu-timer.c),  when initialize the enviroment in system mode.
> > Then when host OS delivers SIGALRM to QEMU, host_alarm_handler
> > calls qemu_notify_event -> cpu_exit. cpu_exit raise env->exit_request
> > , then call cpu_unlink_tb to unlink env's TBs.
> >
> >  There are other places where cpu_exit is called, like
> >
> >  - cpu_signal: I think this is used when IOTHREAD is enabled.
> >
> >  - DMA_init: I guess cpu_exit is called when DMA is done so
> >              that control is gave back to QEMU from the code
> >              cache.
> 
> Yes, this is a questionable hack to improve performance. Maybe it's
> also not needed anymore since I/O thread was enabled.
> 
> >  - gdb_do_syscall: Don't know when it get called.
> >
> >  - vm_stop -> cpu_stop_current: Don't know when it get called.
> 
> grep -r is your friend.

  I'll dig into it. Thanks. :)
 
Regards,
chenwj

-- 
Wei-Ren Chen (陳韋任)
Computer Systems Lab, Institute of Information Science,
Academia Sinica, Taiwan (R.O.C.)
Tel:886-2-2788-3799 #1667



reply via email to

[Prev in Thread] Current Thread [Next in Thread]