search for: cio_gp_dma_free

Displaying 20 results from an estimated 37 matches for "cio_gp_dma_free".

2019 May 23
0
[PATCH v2 2/8] s390/cio: introduce DMA pools to cio
...id css_schedule_reprobe(void); +extern void *cio_dma_zalloc(size_t size); +extern void cio_dma_free(void *cpu_addr, size_t size); +extern struct device *cio_get_dma_css_dev(void); + +struct gen_pool; +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, + size_t size); +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); + /* Function from drivers/s390/cio/chsc.c */ int chsc_sstpc(void *page, unsigned int op, u1...
2019 Apr 26
0
[PATCH 05/10] s390/cio: introduce DMA pools to cio
...id css_schedule_reprobe(void); +extern void *cio_dma_zalloc(size_t size); +extern void cio_dma_free(void *cpu_addr, size_t size); +extern struct device *cio_get_dma_css_dev(void); + +struct gen_pool; +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, + size_t size); +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); + /* Function from drivers/s390/cio/chsc.c */ int chsc_sstpc(void *page, unsigned int op, u1...
2019 May 29
0
[PATCH v3 2/8] s390/cio: introduce DMA pools to cio
...id css_schedule_reprobe(void); +extern void *cio_dma_zalloc(size_t size); +extern void cio_dma_free(void *cpu_addr, size_t size); +extern struct device *cio_get_dma_css_dev(void); + +struct gen_pool; +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, + size_t size); +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); + /* Function from drivers/s390/cio/chsc.c */ int chsc_sstpc(void *page, unsigned int op, u1...
2019 Jun 06
0
[PATCH v4 2/8] s390/cio: introduce DMA pools to cio
...(void); extern void css_schedule_reprobe(void); +extern void *cio_dma_zalloc(size_t size); +extern void cio_dma_free(void *cpu_addr, size_t size); +extern struct device *cio_get_dma_css_dev(void); + +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, + size_t size); +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); + /* Function from drivers/s390/cio/chsc.c */ int chsc_sstpc(void *page, unsigned int op, u1...
2019 Jun 12
0
[PATCH v5 2/8] s390/cio: introduce DMA pools to cio
...(void); extern void css_schedule_reprobe(void); +extern void *cio_dma_zalloc(size_t size); +extern void cio_dma_free(void *cpu_addr, size_t size); +extern struct device *cio_get_dma_css_dev(void); + +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, + size_t size); +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); + /* Function from drivers/s390/cio/chsc.c */ int chsc_sstpc(void *page, unsigned int op, u1...
2019 May 08
4
[PATCH 05/10] s390/cio: introduce DMA pools to cio
...ss */ > +#define CIO_DMA_GFP (GFP_KERNEL | __GFP_ZERO) __GFP_ZERO has no meaning with the dma api (since all implementations do an implicit zero initialization) but let's keep it for the sake of documentation. We need GFP_DMA here (which will return addresses < 2G on s390)! > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > +{ > + if (!cpu_addr) > + return; > + memset(cpu_addr, 0, size); Hm, normally I'd do the memset during alloc not during free - but maybe this makes more sense here with your usecase in mind. > @@ -1063,6 +1163,7 @@ static...
2019 May 08
4
[PATCH 05/10] s390/cio: introduce DMA pools to cio
...ss */ > +#define CIO_DMA_GFP (GFP_KERNEL | __GFP_ZERO) __GFP_ZERO has no meaning with the dma api (since all implementations do an implicit zero initialization) but let's keep it for the sake of documentation. We need GFP_DMA here (which will return addresses < 2G on s390)! > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > +{ > + if (!cpu_addr) > + return; > + memset(cpu_addr, 0, size); Hm, normally I'd do the memset during alloc not during free - but maybe this makes more sense here with your usecase in mind. > @@ -1063,6 +1163,7 @@ static...
2019 May 27
3
[PATCH v2 2/8] s390/cio: introduce DMA pools to cio
...) dma_alloc_coherent(dma_dev, > + chunk_size, &dma_addr, CIO_DMA_GFP); > + if (!addr) > + return NULL; > + gen_pool_add_virt(gp_dma, addr, dma_addr, chunk_size, -1); > + addr = gen_pool_alloc(gp_dma, size); > + } > + return (void *) addr; > +} > + > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > +{ > + if (!cpu_addr) > + return; > + memset(cpu_addr, 0, size); > + gen_pool_free(gp_dma, (unsigned long) cpu_addr, size); > +} > + > +/** > + * Allocate dma memory from the css global pool. Intended for memory not...
2019 May 27
3
[PATCH v2 2/8] s390/cio: introduce DMA pools to cio
...) dma_alloc_coherent(dma_dev, > + chunk_size, &dma_addr, CIO_DMA_GFP); > + if (!addr) > + return NULL; > + gen_pool_add_virt(gp_dma, addr, dma_addr, chunk_size, -1); > + addr = gen_pool_alloc(gp_dma, size); > + } > + return (void *) addr; > +} > + > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > +{ > + if (!cpu_addr) > + return; > + memset(cpu_addr, 0, size); > + gen_pool_free(gp_dma, (unsigned long) cpu_addr, size); > +} > + > +/** > + * Allocate dma memory from the css global pool. Intended for memory not...
2019 May 08
0
[PATCH 05/10] s390/cio: introduce DMA pools to cio
On Wed, 8 May 2019 15:18:10 +0200 (CEST) Sebastian Ott <sebott at linux.ibm.com> wrote: > > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > > +{ > > + if (!cpu_addr) > > + return; > > + memset(cpu_addr, 0, size); > > Hm, normally I'd do the memset during alloc not during free - but maybe > this makes more sense here with your usecase in min...
2019 Jun 03
5
[PATCH v3 2/8] s390/cio: introduce DMA pools to cio
..., size_t size); > +extern struct device *cio_get_dma_css_dev(void); > + > +struct gen_pool; That forward declaration is a bit ugly... I guess the alternative was include hell? > +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, > + size_t size); > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); > +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); > +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); > + > /* Function from drivers/s390/cio/chsc.c */ > int chsc_sstpc(void *...
2019 Jun 03
5
[PATCH v3 2/8] s390/cio: introduce DMA pools to cio
..., size_t size); > +extern struct device *cio_get_dma_css_dev(void); > + > +struct gen_pool; That forward declaration is a bit ugly... I guess the alternative was include hell? > +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, > + size_t size); > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); > +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); > +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); > + > /* Function from drivers/s390/cio/chsc.c */ > int chsc_sstpc(void *...
2019 Jun 11
2
[PATCH v4 4/8] s390/airq: use DMA memory for adapter interrupts
On Tue, 11 Jun 2019 16:27:21 +0200 Halil Pasic <pasic at linux.ibm.com> wrote: > On Tue, 11 Jun 2019 12:17:21 +0200 > Cornelia Huck <cohuck at redhat.com> wrote: > > > On Thu, 6 Jun 2019 13:51:23 +0200 > > Halil Pasic <pasic at linux.ibm.com> wrote: > > > > > Protected virtualization guests have to use shared pages for airq > > >
2019 Jun 11
2
[PATCH v4 4/8] s390/airq: use DMA memory for adapter interrupts
On Tue, 11 Jun 2019 16:27:21 +0200 Halil Pasic <pasic at linux.ibm.com> wrote: > On Tue, 11 Jun 2019 12:17:21 +0200 > Cornelia Huck <cohuck at redhat.com> wrote: > > > On Thu, 6 Jun 2019 13:51:23 +0200 > > Halil Pasic <pasic at linux.ibm.com> wrote: > > > > > Protected virtualization guests have to use shared pages for airq > > >
2019 Jun 03
0
[PATCH v3 2/8] s390/cio: introduce DMA pools to cio
...ss the alternative was > include hell? That's an easy one. #include <linux/bitops.h> +#include <linux/genalloc.h> #include <asm/types.h> > >> +void *cio_gp_dma_zalloc(struct gen_pool *gp_dma, struct device *dma_dev, >> + size_t size); >> +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size); >> +void cio_gp_dma_destroy(struct gen_pool *gp_dma, struct device *dma_dev); >> +struct gen_pool *cio_gp_dma_create(struct device *dma_dev, int nr_pages); >> + >> /* Function from drivers/s390/cio/chsc.c */ >>...
2019 May 27
0
[PATCH v2 2/8] s390/cio: introduce DMA pools to cio
...nk_size, &dma_addr, CIO_DMA_GFP); > > + if (!addr) > > + return NULL; > > + gen_pool_add_virt(gp_dma, addr, dma_addr, chunk_size, -1); > > + addr = gen_pool_alloc(gp_dma, size); > > + } > > + return (void *) addr; > > +} > > + > > +void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > > +{ > > + if (!cpu_addr) > > + return; > > + memset(cpu_addr, 0, size); > > + gen_pool_free(gp_dma, (unsigned long) cpu_addr, size); > > +} > > + > > +/** > > + * Allocate dma memory from...
2019 May 10
3
[PATCH 05/10] s390/cio: introduce DMA pools to cio
On Fri, 10 May 2019 00:11:12 +0200 Halil Pasic <pasic at linux.ibm.com> wrote: > On Thu, 9 May 2019 12:11:06 +0200 > Cornelia Huck <cohuck at redhat.com> wrote: > > > On Wed, 8 May 2019 23:22:10 +0200 > > Halil Pasic <pasic at linux.ibm.com> wrote: > > > > > On Wed, 8 May 2019 15:18:10 +0200 (CEST) > > > Sebastian Ott <sebott
2019 May 10
3
[PATCH 05/10] s390/cio: introduce DMA pools to cio
On Fri, 10 May 2019 00:11:12 +0200 Halil Pasic <pasic at linux.ibm.com> wrote: > On Thu, 9 May 2019 12:11:06 +0200 > Cornelia Huck <cohuck at redhat.com> wrote: > > > On Wed, 8 May 2019 23:22:10 +0200 > > Halil Pasic <pasic at linux.ibm.com> wrote: > > > > > On Wed, 8 May 2019 15:18:10 +0200 (CEST) > > > Sebastian Ott <sebott
2019 May 13
2
[PATCH 05/10] s390/cio: introduce DMA pools to cio
...DMA_GFP); > if (!addr) > return NULL; > - gen_pool_add_virt(gp_dma, addr, dma_addr, PAGE_SIZE, -1); > + gen_pool_add_virt(gp_dma, addr, dma_addr, chunk_size, -1); > addr = gen_pool_alloc(gp_dma, size); > } > return (void *) addr; > @@ -1108,6 +1113,13 @@ void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > gen_pool_free(gp_dma, (unsigned long) cpu_addr, size); > } > > +/** > + * Allocate dma memory from the css global pool. Intended for memory not > + * specific to any single device within the css. > + * > + * Cautio...
2019 May 13
2
[PATCH 05/10] s390/cio: introduce DMA pools to cio
...DMA_GFP); > if (!addr) > return NULL; > - gen_pool_add_virt(gp_dma, addr, dma_addr, PAGE_SIZE, -1); > + gen_pool_add_virt(gp_dma, addr, dma_addr, chunk_size, -1); > addr = gen_pool_alloc(gp_dma, size); > } > return (void *) addr; > @@ -1108,6 +1113,13 @@ void cio_gp_dma_free(struct gen_pool *gp_dma, void *cpu_addr, size_t size) > gen_pool_free(gp_dma, (unsigned long) cpu_addr, size); > } > > +/** > + * Allocate dma memory from the css global pool. Intended for memory not > + * specific to any single device within the css. > + * > + * Cautio...