This change adds support for allocating channels for queues and
submitting tasks through them. This is useful in cases where
direct MMIO cannot be used for task submission (e.g. virtualization).
JIRA PVA-443
Change-Id: Iae819d03d1d378059310b67ebc2e5af4690d5c80
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/1481833
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This change modifies code to support to determine if an allocation
has been done from the CVNAS or DRAM. This information is needed
primarily for PVA since it needs to choose the port that is used
for DMA accesses.
JIRA PVA-457
Change-Id: I99305f8940a2c07eadd65999ee175185b257713c
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/1488003
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-by: Vinod Gopalakrishnakurup <vinodg@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Currently releasing of the buffers goes through the rb tree,
releases buffers and goes to the next node. However, if the
buffer has been released, rb_next() will point to a released
memory address.
Since rb_tree() might get rebalanced after removal of a node,
rb_next() pointer may no longer be the correct next node. In
order to overcome the issue, this change adds a separate list
for traversing through the nodes sequentically.
JIRA HOSTX-214
Change-Id: I7ab5fd547dec0d3b8d66361bad9f1412ff875b7e
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/1483987
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sai Gurrappadi <sgurrappadi@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Vinod Gopalakrishnakurup <vinodg@nvidia.com>
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Tested-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
- pass task timeout parameter from user to engine for book keeping
of task runtime
- as stack framesize crossing limit of 2048 bytes, reduce number of
maximum task can be submitted in one go.
Jira DLA-374
Bug 200302518
Change-Id: I99d3706d9d80ac0201529d68c0a959cdd22a1488
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-on: http://git-master/r/1468355
Reviewed-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
Reviewed-by: Inamdar Sharif <isharif@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
- User needed to set minimum one postaction as syncpoint, this
limitation has been removed in enhancement in KMD.
- Don't allow user to set queue resume and suspend at same time.
Change-Id: I5d780d4941040211809f72ec770fc4db853551c6
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-on: http://git-master/r/1478966
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
GVS: Gerrit_Virtual_Submit
- Enhance KMD to add multiple postactions of type syncpoint and syncfd
while task submit only a syncpoint was assigned to given task as
a postaction. This was limiting to user to submit a task with
multiple types of actions like, syncpoint, syncfd.
To overcome limitation: added fence counter for type syncpoint and syncfd,
registered fence counter with nvhost for syncpoint completion notifier,
and for individual postaction respective fence sent back to user.
- Timestamp semaphore as a separate preaction is not supported
by engine, However timestamp semaphore preaction can be inserted
as semaphore preaction. In that case, engine ignore timestamp
data and validates semaphore value.
- add debug messages for buffer pin failure paths
Jira DLA-273
Jira DLA-375
Change-Id: I26882d0d61f46bed3c3cace99901ba7c506b9977
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1470472
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Fence type as syncfd is between user and kernel. Kernel translates
syncpoint as syncfd before sending back postactions.
For engine, syncfd is same as syncpt/gos action, so send syncfd actions as
as syncpt/gos.
Jira DLA-273
Change-Id: I750f112544d2c28bdc14f03f5e823503b09a18ad
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1469528
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Inamdar Sharif <isharif@nvidia.com>
GVS: Gerrit_Virtual_Submit
The buffer management code is currently using fd as the buffer
identifier, however, fds are ambiguous as identifiers: If user
closes a dmabuf fd and allocates a new one, the two buffers may
share the same fd. If the new dmabuf fd is passed to kernel,
kernel incorrectly uses the old memory buffer.
This patch reworks buffer management code to use dmabuf pointers
as identifier instead of dmabuf fds.
Reduce PVA_MAX_PIN_BUFFER from 256 to 64
nvhost_buffer_pin, nvhost_buffer_unpin, nvhost_get_iova_addr,
nvhost_buffer_submit_pin and nvhost_buffer_submit_unpin are
modified to pass dmabuf pointer instead of fd handle.
JIRA PVA-357
Change-Id: I1f736cbcf704d0872a8e97de28308649f0f1586b
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Signed-off-by: Vinod G <vinodg@nvidia.com>
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1455918
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
- Add IOCTL to send DLA firmware version.
- If DLA engine is not powered on before IOCTL call, poweron engine and
send version.
- Add IOCTL to send queue status, like current fence
Jira DLA-316
Jira DLA-336
Change-Id: I2367446f99809253c4b765b751d66712f969442c
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1326511
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
- add flag to check gos enabled status
- As there is no clean way to get GoS enable status without invoking any
GoS API, ignore error from retrieving GoS regions table.
- However, update gos enable flag based on return status from GoS API.
- Use this flag for retriving GoS syncpoint IOVA, this is required to
avoid
un-necessary calls to nvhost and nvmap.
- __func__ is already included in DLA debug print wrapper API's, remove
redundant parameters passing
- Fix dumping num of prefences
- In task submission, as network descriptor is mandatory to pass to
engine, expect minimum one num of addresses per task.
Jira DLA-326
Change-Id: I2483a606fd8454a92363cfbaf4462280e221e20c
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1322085
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
- use of GoS region gives better performance for reading for than
one GoS from same region compared to reading using semaphores.
- Add Gos region based approach for filling GoS action
Jira DLA-326
Change-Id: I4fab7d7fad2f3120b1d0900dfb94912bce01b95b
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1317112
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
- postfence completion routine triggers clean up of task data and
inform UMD of completion of task, so expect minimum one postfence
for task submit.
- add more debug message.
- validate task data after copying user data
- use local task pointer for copying postfences
- dump input task parameters
Jira DLA-251
Bug 200088648
Change-Id: I3980e095586112d50381057aa7e19991d77fdf32
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1311386
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Update syncpoint based actions with GoS semaphores.
For post actions get both GoS and MSS sem address, for pre actions
use MSS sem if GoS sem is not available.
In postactions, write 1 to MSS memory and write current max + 1 to GoS
memory.
DLA-98
Change-Id: I6dbf850bc2c5b86c372ad963a30e9cfad1fc787f
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1283462
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
This patch addresses two fixes:
[1]
Removes updating user buffers with IOVA.
- In address translation of address list of a tasks, handle and
offset were replaced with actual IOVA into user buffer and same buffer
was shared with engine. This approach is error prone.
- To fix this issue, kernel keeps IOVA list and shares with engine.
- In task submit, mem_handle list from user and updated in kernel
copy of task.
- and while pinning user buffers, engine shared list updated with
actual dma address retrieved from submit pin call.
[2]
Remove dynamic allocation required in address translation
- Required memory of 'kernel copy address list' and 'engine shared
address list' both allocated from queue memory pool.
- and assigned and released along with task data.
DLA-286
Change-Id: I4d5a322adaff25e6e587d3305847540757850c77
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1293124
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
Nvhost power domain support has been refactored and
as part of that the function nvhost_module_add_domain
is no longer necessary and has been removed. Therefore
remove calls to this function from unit drivers.
JIRA HOSTX-156
Bug 1852328
Change-Id: Id5d404e40c301bccd531091622a92f359532b384
Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
Reviewed-on: http://git-master/r/1284202
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Add following details to dla debugfs:
1. To check firmware version
- /d/nvdla*/firmware/version
2. To enable/disbale the dla firmware traces.
- /d/nvdla*/firmware/trace/enable
3. To dump the data in readable format
- /d/nvdla*/firmware/trace/text_trace
4. To dump the data in binary format
- /d/nvdla*/firmware/trace/bin_trace
5. To set the categories of events
- /d/nvdla*/firmware/trace/events/category
6. To get the help menu for setting the trace categories:
- /d/nvdla*/firmware/trace/events/help
Rename API debug_dla_dump_show -> debug_dla_tracedump_show, and
move /d/nvdla0/fw_version -> /d/nvdla*/firmware/version.
DLA-225
DLA-254
DLA-199
Change-Id: I396b31102a1995e4deffdb6e03ab7377bb0b7fc3
Signed-off-by: Amit Sharma (SW-Tegra) <amisharma@nvidia.com>
Reviewed-on: http://git-master/r/1291924
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
In IOCTL path, temporary handles are dynamically allocated which keeps
user data until it populated and used by driver for different
operations. This dynamic allocation in currently done for buffer pin,
task submit and buffer unpin.
As MISRA C guidelines, keeping minimal dynamic allocation and making
static allocation for temporary handles.
Jira DLA-283
Change-Id: I1589c6f96e674e74b4607614c035ef0a0606b7db
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1291492
Reviewed-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
GVS: Gerrit_Virtual_Submit
- Correct engine cmd timeout which was set to earlier to high value.
Use timeout in msec.
- Bundle data into struct and pass pointer of data to avoid sending
multiple parameters. This should help to add additional parameter in
future.
- Remove un-used MACRO defines
Change-Id: If6bd9686b4e2dd38c65ba81d9ed05cf0dedf9a8c
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1286687
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
- nvhost_queue_task_pool_alloc() also allocates kcalloc based memory.
Use this memory to keep kernel copy of task and get this memory
assigned during task submission. Release memory during task cleanup
along with dma alloc.
- Memory pool free'd while freeing queue on device close.
- Using preallocated memory should help to improve performance of job
submission.
- memset for dma and kernel memory done from queue common code, so
removing memset for task descriptor memory.
- Fix releasing queue refcnt and release it after free task memory.
DLA-271
Change-Id: I711b3181e742c05e934f1c621b3dc6e5cf94b67c
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1285892
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
Falcon requires IOVA to be 256 byte aligned.
task descriptor and command memory assigned from pre allocated pool,
which may not be correctly aligned.
Roundup task descriptor size to 256 to get correctly aligned address.
Keep max command size as 256.
Check alignment of IOVA after reserving from pool.
memset reserved memory to avoid corruption in case of re-use of pool
mem.
ALIGNED_DMA macro moved to include file and used for task submit
command.
Jira DLA-266
Change-Id: Id8a63ddad357a9ba905a975b565afca04e5d6806
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1282878
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
Add following details to dla debugfs:
1. To check firmware version
- /d/nvdla*/firmware/version
2. To enable/disbale the dla firmware traces.
- /d/nvdla*/firmware/trace/enable
3. To dump the data in readable format
- /d/nvdla*/firmware/trace/text_trace
4. To dump the data in binary format
- /d/nvdla*/firmware/trace/bin_trace
5. To set the categories of events
- /d/nvdla*/firmware/trace/events/category
6. To get the help menu for setting the trace categories:
- /d/nvdla*/firmware/trace/events/help
Rename API debug_dla_dump_show -> debug_dla_tracedump_show, and
move /d/nvdla0/fw_version -> /d/nvdla*/firmware/version.
DLA-254
DLA-199
Change-Id: Ia39c3af6a8d007504e28cd382ded886c4c713105
Signed-off-by: Amit Sharma (SW-Tegra) <amisharma@nvidia.com>
Reviewed-on: http://git-master/r/1277525
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
GVS: Gerrit_Virtual_Submit
Removing the kmalloc calls from the ioctl calls.
The kernel memory needed for task is allocated in
nvhost_queue_task_pool_alloc() call and on
pva_submit_ioctl() call, the
preallocated memory is assigned for tasks
based on availability and clear them on task
completion for reusing for other tasks.
JIRA PVA-189
Change-Id: Id5834e341da01cbc3af7ecdb318b707d0651f2ba
Signed-off-by: Vinod G <vinodg@nvidia.com>
Reviewed-on: http://git-master/r/1275270
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
To avoid possible buffer overflow, add check for max number of buffers
count per task. Min buffer check count was already present.
Bug 1806862
CID 38902
Change-Id: I48ef974ed8cbc0972a758b79fc3c525aed2b8478
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1281988
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
- define and add ioctl to set queue operations like, suspend and resume.
- on validating user argument, pass command to engine to suspend and
resume.
- on receiving this command, firmware just update queue status as sent
and doesn't interrupt ongoing task or queue work.
Jira DLA-218
Change-Id: I13f5d8822d920961277884c64534daaf64d812be
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1278192
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
- fill input task status notifier after filling prefence actions
- use function over macro for action updates as supporting different
types GoS, status, semaphore through single macro would be difficult
- correct max action size calculation to include task status size
Jira DLA-62
Change-Id: Ia0a57e0325667e3b36d9b6d0fb8b76d8c8a6c35d
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1275942
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
- rework postaction fill to support multiple action types
- output task status notifier used to send task status to downstream
clients in CV pipeline usecases.
- this adds support for it : copy out task status user data and
pass to engine after pinning
- unpin user memory on task free
Jira DLA-62
Change-Id: I0c7be5d0652896ad5d0279c898efb4dd555b2afe
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1275540
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
- input task status notifier added as preactions and if task status
of preaction matches with task status then task can proceed for
execution
- this adds support adding input status notifier: alloc memory for
task and task descriptor, copy and pin user memory, send IOVA of
status notifier user memory to engine
Jira DLA-62
Change-Id: Ibfa3ea0a15dd173fc279ac58b1ab85d2c2e77d82
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1275539
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
- this adds TIMESTAMP semaphore for postactions
- TIMESTAMP semaphore is similar to default SEMAPHORE with added field
to update timestamp
Jira DLA-197
Change-Id: I2e663c7bfcf5e75727c9ac3a1c41ce333e45cf15
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1274611
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
- this adds semaphore/memsignal support in postfences
- while updating task descriptor, does pinning of UMD semaphore
handle and received dma_addr added as postaction
Jira DLA-161
Change-Id: I37a9cc38c30ce70cb817fb9dc682b36dc9962834
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1274328
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit
- this adds semaphore/memsignal support in prefences
- while updating task descriptor, does pinning of UMD semaphore
handle and received dma_addr added as preaction
Jira DLA-161
Change-Id: If3695b0cca29d485c04b93a83848d50ad81dd9fd
Signed-off-by: Shridhar Rasal <srasal@nvidia.com>
Reviewed-on: http://git-master/r/1274302
Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com>
GVS: Gerrit_Virtual_Submit