[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] device-mmio emulation in Xen
At 16:32 +0000 on 05 Jan (1262709121), Abhinav Srivastava wrote: > 1. How does Xen know which code path to execute? What I am noticing is > that sometimes it goes to all the way till the end of the page fault > handler code to call handle_mmio function, and sometimes it goes into > the fast path to call this function, bypassing all the page fault > handlers code? Why it does not go into the fast path all the time? OR > Xen does something at the first time so that second time, the execution > can directly go into the fast path? Yes. In the slow path, it creates a deliberately invalid shadow PTE. When the MMU signals an invalid-PTE fault, Xen knows tro take the fast path. > And, does this needs to be done for all physical pages given to MMIO? Yes. Some kind of pagefault needs to happen for emulated MMIO. The fast-path trick just makes the fault handler faster. Tim. > > Thanks, > Abhinav > > > > --- On Tue, 5/1/10, Tim Deegan <Tim.Deegan@xxxxxxxxxx> wrote: > > > From: Tim Deegan <Tim.Deegan@xxxxxxxxxx> > > Subject: Re: [Xen-devel] device-mmio emulation in Xen > > To: "Abhinav Srivastava" <abhinavs_iitkgp@xxxxxxxxxxx> > > Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx> > > Date: Tuesday, 5 January, 2010, 9:30 PM > > Hi, > > > > At 15:32 +0000 on 05 Jan (1262705557), Abhinav Srivastava > > wrote: > > > I noticed that during a network copy operation Xen > > page faults a lot and control goes to sh_page_fault > > function. When I printed some debugging info, it showed me > > gmfn = -1. Then the execution goes through the regular path > > of the page fault handler code, which means it creates an > > entry using shadow_get_and_create_l1e, propagates it using > > l1e_propagate_from_guest, and finally updates the entry > > using shadow_set_l1e. It finally goes into the device-model > > mmio condition. In this condition, it extracts a guest > > physical address and calls "goto mmio", which in turn calls > > handle_mmio function that emulates the instruction. > > > > > > However with the gmfn = -1 condition, the execution > > sometimes directly goto > > > to handle_mmio function using the fast_fault_path with > > going through the regular path. It seems like there are two > > possible execution paths, and I did not understand which one > > is chosen when? > > > > > > > /****************************************************************************** > > * We implement a "fast path" for two special cases: faults > > that require > > * MMIO emulation, and faults where the guest PTE is not > > present. We > > * record these as shadow l1 entries that have reserved > > bits set in > > * them, so we can spot them immediately in the fault > > handler and handle > > * them without needing to hold the shadow lock or walk the > > guest > > * pagetables. > > * > > * This is only feasible for PAE and 64bit Xen: 32-bit > > non-PAE PTEs don't > > * have reserved bits that we can use for this. > > */ > > > > > I have some questions related to this behavior: > > > > > > 1. Why are there so many faults duing network copy > > operation? > > > > The faults are a HVM guest doing MMIO operations to control > > its emulated > > network card. > > > > > 2. What does gmfn = -1 signify? Is it reserved for > > mmio addresses? > > > > It's INVALID_MFN. It means there is no memory mapped > > at the address the > > guest accessed. Xen treats that as MMIO, though > > there's a plan to have > > MMIO regions explicitly registered instead. > > > > > 3. How does Xen handle this gmfn = -1? It seems like > > on the regular path > > > it still creates, propagates, and updates entries for > > gmfn = -1. How does Xen handles this at the shadow page > > table level? > > > > Yes, it creates a deliberately invalid shadow PTE; then in > > the pagefault > > handler it can use the pagefault error code and the > > contents of the PTE > > to skip the bulk of the shadow fault handling and go > > straight to handle_mmio. > > > > > 4. What are these two code execution paths, and when > > does Xen decide which > > > path to choose? > > > > > > 5. Finally, is there anyway these faults can be > > reduced? > > > > Yes, use PV drivers in the guest. That eliminates the > > whole > > emulated-MMIO system, and all the pagefaults associated > > with it. > > > > Cheers, > > > > Tim. > > > > > I would very appreciate any help in this regard. > > > > > > Thanks, > > > Abhinav > > > > > > > > > > > > The INTERNET now has a > > personality. YOURS! See your Yahoo! Homepage. http://in.yahoo.com/ > > > > > > _______________________________________________ > > > Xen-devel mailing list > > > Xen-devel@xxxxxxxxxxxxxxxxxxx > > > http://lists.xensource.com/xen-devel > > > > -- > > Tim Deegan <Tim.Deegan@xxxxxxxxxx> > > Principal Software Engineer, Citrix Systems (R&D) Ltd. > > [Company #02300071, SL9 0DZ, UK.] > > > > > The INTERNET now has a personality. YOURS! See your Yahoo! Homepage. > http://in.yahoo.com/ -- Tim Deegan <Tim.Deegan@xxxxxxxxxx> Principal Software Engineer, Citrix Systems (R&D) Ltd. [Company #02300071, SL9 0DZ, UK.] _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |