Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-07-01 Thread Jerome Glisse
On Tue, Jun 30, 2015 at 07:51:12PM -0700, Mark Hairgrove wrote: > On Mon, 29 Jun 2015, Jerome Glisse wrote: > > [...] > > > > Iterator is what protect against concurrent freeing of the directory so it > > has to return to caller on directory boundary (for 64bits arch with 64bits > > pte it has ret

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-30 Thread Mark Hairgrove
On Mon, 29 Jun 2015, Jerome Glisse wrote: > [...] > > Iterator is what protect against concurrent freeing of the directory so it > has to return to caller on directory boundary (for 64bits arch with 64bits > pte it has return every 512 entries). Otherwise pt_iter_fini() would have > to walk ove

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-29 Thread Jerome Glisse
On Fri, Jun 26, 2015 at 06:34:16PM -0700, Mark Hairgrove wrote: > > > On Fri, 26 Jun 2015, Jerome Glisse wrote: > > > On Thu, Jun 25, 2015 at 03:57:29PM -0700, Mark Hairgrove wrote: > > > On Thu, 21 May 2015, j.gli...@gmail.com wrote: > > > > From: Jérôme Glisse > > > > [...] > > > > + > > > >

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-26 Thread Mark Hairgrove
On Fri, 26 Jun 2015, Jerome Glisse wrote: > On Thu, Jun 25, 2015 at 03:57:29PM -0700, Mark Hairgrove wrote: > > On Thu, 21 May 2015, j.gli...@gmail.com wrote: > > > From: Jérôme Glisse > > > [...] > > > + > > > +void hmm_pt_iter_init(struct hmm_pt_iter *iter); > > > +void hmm_pt_iter_fini(struc

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-26 Thread Jerome Glisse
On Thu, Jun 25, 2015 at 03:57:29PM -0700, Mark Hairgrove wrote: > On Thu, 21 May 2015, j.gli...@gmail.com wrote: > > From: Jérôme Glisse > > [...] > > + > > +void hmm_pt_iter_init(struct hmm_pt_iter *iter); > > +void hmm_pt_iter_fini(struct hmm_pt_iter *iter, struct hmm_pt *pt); > > +unsigned long

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-25 Thread Mark Hairgrove
On Thu, 21 May 2015, j.gli...@gmail.com wrote: > From: Jérôme Glisse > > [...] > + > +void hmm_pt_iter_init(struct hmm_pt_iter *iter); > +void hmm_pt_iter_fini(struct hmm_pt_iter *iter, struct hmm_pt *pt); > +unsigned long hmm_pt_iter_next(struct hmm_pt_iter *iter, > +

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-19 Thread Mark Hairgrove
On Fri, 19 Jun 2015, Jerome Glisse wrote: > On Thu, Jun 18, 2015 at 07:06:08PM -0700, Mark Hairgrove wrote: > > On Thu, 21 May 2015, j.gli...@gmail.com wrote: > > [...] > > > + > > > +static inline dma_addr_t hmm_pde_from_pfn(dma_addr_t pfn) > > > +{ > > > + return (pfn << PAGE_SHIFT) | HMM_PDE

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-19 Thread Jerome Glisse
On Thu, Jun 18, 2015 at 07:06:08PM -0700, Mark Hairgrove wrote: > On Thu, 21 May 2015, j.gli...@gmail.com wrote: [...] > > + > > +static inline dma_addr_t hmm_pde_from_pfn(dma_addr_t pfn) > > +{ > > + return (pfn << PAGE_SHIFT) | HMM_PDE_VALID; > > +} > > + > > +static inline unsigned long hmm_p

Re: [PATCH 06/36] HMM: add HMM page table v2.

2015-06-18 Thread Mark Hairgrove
On Thu, 21 May 2015, j.gli...@gmail.com wrote: > From: Jérôme Glisse > > Heterogeneous memory management main purpose is to mirror a process address. > To do so it must maintain a secondary page table that is use by the device > driver to program the device or build a device specific page tabl

[PATCH 06/36] HMM: add HMM page table v2.

2015-05-21 Thread j . glisse
From: Jérôme Glisse Heterogeneous memory management main purpose is to mirror a process address. To do so it must maintain a secondary page table that is use by the device driver to program the device or build a device specific page table. Radix tree can not be use to create this secondary page