diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2017-12-28 04:08:00 -0500 |
---|---|---|
committer | Jens Wiklander <jens.wiklander@linaro.org> | 2017-12-28 04:08:00 -0500 |
commit | 95ffe4ca43877eea176d7e95aa0d38bbdc3d2903 (patch) | |
tree | 2cd89f1386594cb4702b48d5358c214b0751d313 | |
parent | ef8e08d24ca84846ce639b835ebd2f15a943f42b (diff) |
tee: add start argument to shm_register callback
Adds a start argument to the shm_register callback to allow the callback
to check memory type of the passed pages.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r-- | drivers/tee/optee/call.c | 6 | ||||
-rw-r--r-- | drivers/tee/optee/optee_private.h | 6 | ||||
-rw-r--r-- | drivers/tee/tee_shm.c | 2 | ||||
-rw-r--r-- | include/linux/tee_drv.h | 3 |
4 files changed, 11 insertions, 6 deletions
diff --git a/drivers/tee/optee/call.c b/drivers/tee/optee/call.c index e675e82ff095..d61c14b788f2 100644 --- a/drivers/tee/optee/call.c +++ b/drivers/tee/optee/call.c | |||
@@ -536,7 +536,8 @@ void optee_free_pages_list(void *list, size_t num_entries) | |||
536 | } | 536 | } |
537 | 537 | ||
538 | int optee_shm_register(struct tee_context *ctx, struct tee_shm *shm, | 538 | int optee_shm_register(struct tee_context *ctx, struct tee_shm *shm, |
539 | struct page **pages, size_t num_pages) | 539 | struct page **pages, size_t num_pages, |
540 | unsigned long start) | ||
540 | { | 541 | { |
541 | struct tee_shm *shm_arg = NULL; | 542 | struct tee_shm *shm_arg = NULL; |
542 | struct optee_msg_arg *msg_arg; | 543 | struct optee_msg_arg *msg_arg; |
@@ -606,7 +607,8 @@ int optee_shm_unregister(struct tee_context *ctx, struct tee_shm *shm) | |||
606 | } | 607 | } |
607 | 608 | ||
608 | int optee_shm_register_supp(struct tee_context *ctx, struct tee_shm *shm, | 609 | int optee_shm_register_supp(struct tee_context *ctx, struct tee_shm *shm, |
609 | struct page **pages, size_t num_pages) | 610 | struct page **pages, size_t num_pages, |
611 | unsigned long start) | ||
610 | { | 612 | { |
611 | /* | 613 | /* |
612 | * We don't want to register supplicant memory in OP-TEE. | 614 | * We don't want to register supplicant memory in OP-TEE. |
diff --git a/drivers/tee/optee/optee_private.h b/drivers/tee/optee/optee_private.h index de7962ebc1b6..f04930879762 100644 --- a/drivers/tee/optee/optee_private.h +++ b/drivers/tee/optee/optee_private.h | |||
@@ -173,11 +173,13 @@ void optee_enable_shm_cache(struct optee *optee); | |||
173 | void optee_disable_shm_cache(struct optee *optee); | 173 | void optee_disable_shm_cache(struct optee *optee); |
174 | 174 | ||
175 | int optee_shm_register(struct tee_context *ctx, struct tee_shm *shm, | 175 | int optee_shm_register(struct tee_context *ctx, struct tee_shm *shm, |
176 | struct page **pages, size_t num_pages); | 176 | struct page **pages, size_t num_pages, |
177 | unsigned long start); | ||
177 | int optee_shm_unregister(struct tee_context *ctx, struct tee_shm *shm); | 178 | int optee_shm_unregister(struct tee_context *ctx, struct tee_shm *shm); |
178 | 179 | ||
179 | int optee_shm_register_supp(struct tee_context *ctx, struct tee_shm *shm, | 180 | int optee_shm_register_supp(struct tee_context *ctx, struct tee_shm *shm, |
180 | struct page **pages, size_t num_pages); | 181 | struct page **pages, size_t num_pages, |
182 | unsigned long start); | ||
181 | int optee_shm_unregister_supp(struct tee_context *ctx, struct tee_shm *shm); | 183 | int optee_shm_unregister_supp(struct tee_context *ctx, struct tee_shm *shm); |
182 | 184 | ||
183 | int optee_from_msg_param(struct tee_param *params, size_t num_params, | 185 | int optee_from_msg_param(struct tee_param *params, size_t num_params, |
diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 04e1b8b37046..6a17b02ada5e 100644 --- a/drivers/tee/tee_shm.c +++ b/drivers/tee/tee_shm.c | |||
@@ -299,7 +299,7 @@ struct tee_shm *tee_shm_register(struct tee_context *ctx, unsigned long addr, | |||
299 | } | 299 | } |
300 | 300 | ||
301 | rc = teedev->desc->ops->shm_register(ctx, shm, shm->pages, | 301 | rc = teedev->desc->ops->shm_register(ctx, shm, shm->pages, |
302 | shm->num_pages); | 302 | shm->num_pages, start); |
303 | if (rc) { | 303 | if (rc) { |
304 | ret = ERR_PTR(rc); | 304 | ret = ERR_PTR(rc); |
305 | goto err; | 305 | goto err; |
diff --git a/include/linux/tee_drv.h b/include/linux/tee_drv.h index a1d7f467657c..230a1ebbf3bc 100644 --- a/include/linux/tee_drv.h +++ b/include/linux/tee_drv.h | |||
@@ -108,7 +108,8 @@ struct tee_driver_ops { | |||
108 | int (*supp_send)(struct tee_context *ctx, u32 ret, u32 num_params, | 108 | int (*supp_send)(struct tee_context *ctx, u32 ret, u32 num_params, |
109 | struct tee_param *param); | 109 | struct tee_param *param); |
110 | int (*shm_register)(struct tee_context *ctx, struct tee_shm *shm, | 110 | int (*shm_register)(struct tee_context *ctx, struct tee_shm *shm, |
111 | struct page **pages, size_t num_pages); | 111 | struct page **pages, size_t num_pages, |
112 | unsigned long start); | ||
112 | int (*shm_unregister)(struct tee_context *ctx, struct tee_shm *shm); | 113 | int (*shm_unregister)(struct tee_context *ctx, struct tee_shm *shm); |
113 | }; | 114 | }; |
114 | 115 | ||