lkml.org 
[lkml]   [2019]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2 1/4] habanalabs: Mark queue as expecting to CB handle or address
    On Thu, Oct 3, 2019 at 6:22 PM Tomer Tayar <ttayar@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 <ttayar@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.gabbay@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

    \
     
     \ /
      Last update: 2019-10-05 08:50    [W:3.755 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site