Message ID | 1476771193-2759-2-git-send-email-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
NACK, I think you want to use 'iomap_create_wc()' instead to avoid aliasing. Kind Regards, Edward. On 10/18/2016 05:13 PM, Dave Airlie wrote: > From: Dave Airlie <airlied@redhat.com> > > These functions are needed for gpu/ttm drivers to reserve the > VRAM area as write combined. In a lot of places we don't ioremap > but still need to insert pfn from it into a VMA using vm_insert_mixed, > but a recent change in mixed insertion means we need to reserve > VRAM as WC upfront, so we need these APIs exported. > > Signed-off-by: Dave Airlie <airlied@redhat.com> > --- > arch/x86/mm/pat.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 170cc4f..5ce2fbb 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -719,6 +719,7 @@ out_free: > out_err: > return ret; > } > +EXPORT_SYMBOL(io_reserve_memtype); > > /** > * io_free_memtype - Release a memory type mapping for a region of memory > @@ -729,6 +730,7 @@ void io_free_memtype(resource_size_t start, resource_size_t end) > { > free_memtype(start, end); > } > +EXPORT_SYMBOL(io_free_memtype); > > pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, > unsigned long size, pgprot_t vma_prot) >
On 18 Oct. 2016 17:23, "Edward O'Callaghan" <funfunctor@folklore1984.net> wrote: > > NACK, > > I think you want to use 'iomap_create_wc()' instead to avoid aliasing. Please explain what can alias here? Dave. > > Kind Regards, > Edward. > > On 10/18/2016 05:13 PM, Dave Airlie wrote: > > From: Dave Airlie <airlied@redhat.com> > > > > These functions are needed for gpu/ttm drivers to reserve the > > VRAM area as write combined. In a lot of places we don't ioremap > > but still need to insert pfn from it into a VMA using vm_insert_mixed, > > but a recent change in mixed insertion means we need to reserve > > VRAM as WC upfront, so we need these APIs exported. > > > > Signed-off-by: Dave Airlie <airlied@redhat.com> > > --- > > arch/x86/mm/pat.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > > index 170cc4f..5ce2fbb 100644 > > --- a/arch/x86/mm/pat.c > > +++ b/arch/x86/mm/pat.c > > @@ -719,6 +719,7 @@ out_free: > > out_err: > > return ret; > > } > > +EXPORT_SYMBOL(io_reserve_memtype); > > > > /** > > * io_free_memtype - Release a memory type mapping for a region of memory > > @@ -729,6 +730,7 @@ void io_free_memtype(resource_size_t start, resource_size_t end) > > { > > free_memtype(start, end); > > } > > +EXPORT_SYMBOL(io_free_memtype); > > > > pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, > > unsigned long size, pgprot_t vma_prot) > > >
On 10/18/2016 07:29 PM, Dave Airlie wrote: > On 18 Oct. 2016 17:23, "Edward O'Callaghan" <funfunctor@folklore1984.net > <mailto:funfunctor@folklore1984.net>> wrote: >> >> NACK, >> >> I think you want to use 'iomap_create_wc()' instead to avoid aliasing. > > Please explain what can alias here? Ah disregard the alias comment, I was remembering how it was introduced and that referred to 'io_mapping_create_wc()' not hard coding WC. Any way, I think 'iomap_create_wc()' is what your looking for so no need to expose those symbols and hook them though. Cheers, Edward. > > Dave. > >> >> Kind Regards, >> Edward. >> >> On 10/18/2016 05:13 PM, Dave Airlie wrote: >> > From: Dave Airlie <airlied@redhat.com <mailto:airlied@redhat.com>> >> > >> > These functions are needed for gpu/ttm drivers to reserve the >> > VRAM area as write combined. In a lot of places we don't ioremap >> > but still need to insert pfn from it into a VMA using vm_insert_mixed, >> > but a recent change in mixed insertion means we need to reserve >> > VRAM as WC upfront, so we need these APIs exported. >> > >> > Signed-off-by: Dave Airlie <airlied@redhat.com > <mailto:airlied@redhat.com>> >> > --- >> > arch/x86/mm/pat.c | 2 ++ >> > 1 file changed, 2 insertions(+) >> > >> > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c >> > index 170cc4f..5ce2fbb 100644 >> > --- a/arch/x86/mm/pat.c >> > +++ b/arch/x86/mm/pat.c >> > @@ -719,6 +719,7 @@ out_free: >> > out_err: >> > return ret; >> > } >> > +EXPORT_SYMBOL(io_reserve_memtype); >> > >> > /** >> > * io_free_memtype - Release a memory type mapping for a region of > memory >> > @@ -729,6 +730,7 @@ void io_free_memtype(resource_size_t start, > resource_size_t end) >> > { >> > free_memtype(start, end); >> > } >> > +EXPORT_SYMBOL(io_free_memtype); >> > >> > pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, >> > unsigned long size, pgprot_t vma_prot) >> > >> >
For the series, no regressions in my testing, no stalls, no issues noted. Tested by: Shawn Starr <shawn.starr@rogers.com> Thanks, Shawn On Tuesday, October 18, 2016 4:13:11 PM EDT Dave Airlie wrote: > From: Dave Airlie <airlied@redhat.com> > > These functions are needed for gpu/ttm drivers to reserve the > VRAM area as write combined. In a lot of places we don't ioremap > but still need to insert pfn from it into a VMA using vm_insert_mixed, > but a recent change in mixed insertion means we need to reserve > VRAM as WC upfront, so we need these APIs exported. > > Signed-off-by: Dave Airlie <airlied@redhat.com> > --- > arch/x86/mm/pat.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c > index 170cc4f..5ce2fbb 100644 > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -719,6 +719,7 @@ out_free: > out_err: > return ret; > } > +EXPORT_SYMBOL(io_reserve_memtype); > > /** > * io_free_memtype - Release a memory type mapping for a region of memory > @@ -729,6 +730,7 @@ void io_free_memtype(resource_size_t start, > resource_size_t end) { > free_memtype(start, end); > } > +EXPORT_SYMBOL(io_free_memtype); > > pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, > unsigned long size, pgprot_t vma_prot)
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index 170cc4f..5ce2fbb 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c @@ -719,6 +719,7 @@ out_free: out_err: return ret; } +EXPORT_SYMBOL(io_reserve_memtype); /** * io_free_memtype - Release a memory type mapping for a region of memory @@ -729,6 +730,7 @@ void io_free_memtype(resource_size_t start, resource_size_t end) { free_memtype(start, end); } +EXPORT_SYMBOL(io_free_memtype); pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, unsigned long size, pgprot_t vma_prot)