tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Protecting global lookup array
On Mon, Feb 08, 2010 at 11:40:50AM +0900, Masao Uebayashi wrote:
> I'm adding another list of vm_physseg for device pages. It's a list or array
> of physical address segments. They're frequently accessed by VM to lookup
> a physical address from a page metadata (vm_page) or vice versa.
>
> Those lists are rarely updated. When a framebuffer or memory-mappable audio
> device are attached / detached. (For RAM segments, they're updated when we'll
> support memory hot-plug. :)
>
> The update process is very rare, and expected. Administrators carefully
> connects a device when the machine is not running some important task. So
> what I need here is to protect such a data adding no run-time performance
> loss.
>
> Do we have any standard way to do this?
>
> If not, what I'm thinking is like:
>
> - a sub-system queries the kernel if it's a good time to do this
> - if yes, pass a call-back and data
> - the kernel asks all other CPUs to stop tasks and wait in some safe code
> point
> - other CPUs tells back that they're waiting
> - if all CPUs have stopped, the kernel runs the passed callback & data
> - in the callback, update array
>
> Protected data should be an array of pointers to objects, not an array of
> objects, so that already referenced objects are not affected by the lookup
> array.
please make any changes to uvm on a separate branch, as and when you
decide how best to do it, and then the branch can be merged when it's
ready.
thanks,
alistair
Home |
Main Index |
Thread Index |
Old Index