Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6d6288c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Allocate global buffers through paged memory"

parents 7aad8dee 8b931bb5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3908,7 +3908,7 @@ int kgsl_device_platform_probe(struct kgsl_device *device)
		goto error_close_mmu;

	status = kgsl_allocate_global(device, &device->memstore,
		KGSL_MEMSTORE_SIZE, 0, 0);
		KGSL_MEMSTORE_SIZE, 0, KGSL_MEMDESC_CONTIG);

	if (status != 0)
		goto error_close_mmu;
+2 −0
Original line number Diff line number Diff line
@@ -163,6 +163,8 @@ struct kgsl_memdesc_ops {
#define KGSL_MEMDESC_PRIVILEGED BIT(6)
/* The memdesc is TZ locked content protection */
#define KGSL_MEMDESC_TZ_LOCKED BIT(7)
/* The memdesc is allocated through contiguous memory */
#define KGSL_MEMDESC_CONTIG BIT(8)

/**
 * struct kgsl_memdesc - GPU memory object descriptor
+1 −5
Original line number Diff line number Diff line
@@ -313,10 +313,6 @@ kgsl_sharedmem_init_sysfs(void)
		drv_attr_list);
}

static int kgsl_sharedmem_page_alloc_user(struct kgsl_memdesc *memdesc,
				struct kgsl_pagetable *pagetable,
				uint64_t size);

static int kgsl_cma_alloc_secure(struct kgsl_device *device,
			struct kgsl_memdesc *memdesc, uint64_t size);

@@ -640,7 +636,7 @@ static inline int get_page_size(size_t size, unsigned int align)
}
#endif

static int
int
kgsl_sharedmem_page_alloc_user(struct kgsl_memdesc *memdesc,
			struct kgsl_pagetable *pagetable,
			uint64_t size)
+14 −1
Original line number Diff line number Diff line
@@ -71,6 +71,10 @@ int kgsl_allocate_user(struct kgsl_device *device,

void kgsl_get_memory_usage(char *str, size_t len, uint64_t memflags);

int kgsl_sharedmem_page_alloc_user(struct kgsl_memdesc *memdesc,
				struct kgsl_pagetable *pagetable,
				uint64_t size);

#define MEMFLAGS(_flags, _mask, _shift) \
	((unsigned int) (((_flags) & (_mask)) >> (_shift)))

@@ -266,7 +270,16 @@ static inline int kgsl_allocate_global(struct kgsl_device *device,
	memdesc->flags = flags;
	memdesc->priv = priv;

	ret = kgsl_sharedmem_alloc_contig(device, memdesc, NULL, (size_t) size);
	if ((memdesc->priv & KGSL_MEMDESC_CONTIG) != 0)
		ret = kgsl_sharedmem_alloc_contig(device, memdesc, NULL,
						(size_t) size);
	else {
		ret = kgsl_sharedmem_page_alloc_user(memdesc, NULL,
						(size_t) size);
		if (ret == 0)
			kgsl_memdesc_map(memdesc);
	}

	if (ret == 0)
		kgsl_mmu_add_global(device, memdesc);