tech-kern archive

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

Re: XIP (Rev. 2)



I think your approach descibed here is something intermediate
between my "generic" one and a "dedicated" one - which we talked
privately long time ago - that designing a dedicated ROM format,
hooks map with XIP execution in exec handler, etc.

I chose "generic" approach, because I wanted to

- Avoid unexpected problems (I didn't know what I didn't know), and
- Avoid creating dedicated filesystem and its tools
- Honor abstraction
- Avoid code duplication
- Optimize later

So mine reuses all the existing code path of filesystem, vnode
pager (except the genfs_getpages_xip).

Pros:
- Fully COW'ed
- No code duplication
- Existing resources are reusable

Cons:
- Slow
- Inefficient (use normal sized TLBs)
- Too generic; redefine some fundamental assumptions of Unix

I admit this is hard to understand.  But it's not solely my fault.
XIP is an odd concept by nature...

Masao

On Tue, Nov 09, 2010 at 09:19:15AM -0800, Matt Thomas wrote:
> 
> On Nov 9, 2010, at 9:06 AM, Masao Uebayashi wrote:
> 
> > On Tue, Nov 09, 2010 at 08:39:16AM -0800, Matt Thomas wrote:
> >> 
> >> On Nov 8, 2010, at 11:25 PM, Masao Uebayashi wrote:
> >> 
> >>>   http://uebayasi.dyndns.org/~uebayasi/tmp/uebayasi-xip-20101109.txt
> >> 
> >> Besides the churn (and there is a lot of it), I think my fundamental
> >> problem with this incarnation of XIP is that it took a wrong approach.
> >> It has tried to fit itself under uvm_vnodeops and I think that's a
> >> fatal flaw by requiring invasive changes to contort to that decision.
> >> 
> >> Instead, XIP should have its own pager ops uvm_xipops and vnodes should
> >> be set to use that in vnalloc/insmntque which is easily done since you 
> >> can just check for MNT_XIP in the passed mount point.
> > 
> > I understand having a separate pager would work too.  If you go
> > that route, you have to give up COW.  The two layered amap/uobj is
> > the fundamental design of UVM.
> 
> You don't have to give up COW, you have to deal with it.  And those
> changes will be far less pervasive than the changes you've had to make.
> 
> > I'd also point out that pgo_fault() is prepaired only for *special*
> > purposes.  My plan is to rewrite those backends to use pgo_get().
> > Then use single pmap_enter().
> 
> And XIP isn't special?  But I disagree that pgo_fault is only for
> those purposes.  It could be used for more but that hasn't been
> needed.
> 
> > Both of yours and mine are possible, and there're pros and cons.
> 
> That's true.  

-- 
Masao Uebayashi / Tombi Inc. / Tel: +81-90-9141-4635


Home | Main Index | Thread Index | Old Index