On Thu, Oct 3, 2019 at 6:22 PM Tomer Tayar <tta...@habana.ai> wrote: > > Jobs on some queues must be provided with a handle to a driver command > buffer object, while for other queues, jobs must be provided with an > address to a command buffer. > Currently the distinction is done based on the queue type, which is less > flexible if the same type of queue behaves differently on different > types of ASIC. > This patch adds a new queue property for this target, which is > configured per queue type per ASIC type. > > Signed-off-by: Tomer Tayar <tta...@habana.ai> > --- > drivers/misc/habanalabs/command_submission.c | 4 +++- > drivers/misc/habanalabs/goya/goya.c | 3 +++ > drivers/misc/habanalabs/habanalabs.h | 3 +++ > 3 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/misc/habanalabs/command_submission.c > b/drivers/misc/habanalabs/command_submission.c > index a9ac045dcfde..f44205540520 100644 > --- a/drivers/misc/habanalabs/command_submission.c > +++ b/drivers/misc/habanalabs/command_submission.c > @@ -414,7 +414,9 @@ static struct hl_cb *validate_queue_index(struct > hl_device *hdev, > "Queue index %d is restricted for the kernel > driver\n", > chunk->queue_index); > return NULL; > - } else if (hw_queue_prop->type == QUEUE_TYPE_INT) { > + } > + > + if (!hw_queue_prop->requires_kernel_cb) { > *ext_queue = false; > return (struct hl_cb *) (uintptr_t) chunk->cb_handle; > } > diff --git a/drivers/misc/habanalabs/goya/goya.c > b/drivers/misc/habanalabs/goya/goya.c > index 09caef7642fd..71693fcffb16 100644 > --- a/drivers/misc/habanalabs/goya/goya.c > +++ b/drivers/misc/habanalabs/goya/goya.c > @@ -337,17 +337,20 @@ void goya_get_fixed_properties(struct hl_device *hdev) > for (i = 0 ; i < NUMBER_OF_EXT_HW_QUEUES ; i++) { > prop->hw_queues_props[i].type = QUEUE_TYPE_EXT; > prop->hw_queues_props[i].driver_only = 0; > + prop->hw_queues_props[i].requires_kernel_cb = 1; > } > > for (; i < NUMBER_OF_EXT_HW_QUEUES + NUMBER_OF_CPU_HW_QUEUES ; i++) { > prop->hw_queues_props[i].type = QUEUE_TYPE_CPU; > prop->hw_queues_props[i].driver_only = 1; > + prop->hw_queues_props[i].requires_kernel_cb = 0; > } > > for (; i < NUMBER_OF_EXT_HW_QUEUES + NUMBER_OF_CPU_HW_QUEUES + > NUMBER_OF_INT_HW_QUEUES; i++) { > prop->hw_queues_props[i].type = QUEUE_TYPE_INT; > prop->hw_queues_props[i].driver_only = 0; > + prop->hw_queues_props[i].requires_kernel_cb = 0; > } > > for (; i < HL_MAX_QUEUES; i++) > diff --git a/drivers/misc/habanalabs/habanalabs.h > b/drivers/misc/habanalabs/habanalabs.h > index c3d24ffad9fa..f47f4b22cb6b 100644 > --- a/drivers/misc/habanalabs/habanalabs.h > +++ b/drivers/misc/habanalabs/habanalabs.h > @@ -98,10 +98,13 @@ enum hl_queue_type { > * @type: queue type. > * @driver_only: true if only the driver is allowed to send a job to this > queue, > * false otherwise. > + * @requires_kernel_cb: true if a CB handle must be provided for jobs on this > + * queue, false otherwise (a CB address must be > provided). > */ > struct hw_queue_properties { > enum hl_queue_type type; > u8 driver_only; > + u8 requires_kernel_cb; > }; > > /** > -- > 2.17.1 >
Patches 1-4 are: Reviewed-by: Oded Gabbay <oded.gab...@gmail.com> However, I'm only applying patches 1 & 2 to -next, because 3 & 4 mostly add code which is not relevant to GOYA, without much changing existing code, as opposed to patches 1&2. Oded