Age | Commit message (Collapse) | Author |
|
When IOCTL calls are handled and when sending messages to the mailbox,
the device mutex is locked. However, when received mailbox messages are
handled, the mutex is not locked so there are possible concurrent access
races in shared states e.g. an inference's status may be updated while
another IOCTL caller is reading it.
To avoid these races, the mutex is now locked while messages received
from the mailbox are handled.
Change-Id: I4d51da542410ab02fb0f890c939269c642176b2c
|
|
The kernel driver will now verify the magic value in an incoming
message's header before any further processing of the message is
performed to avoid trying to handle an invalid message.
Change-Id: I7ae1cac19a6fe4b78316decff4ca2147175ee07a
|
|
When the kernel driver creates the Ethos-U device, it doesn't setup the
coherent DMA mask. This causes the kernel to generate a warning the
first time any of the coherent DMA functions are used and the kernel
will end up using a default DMA mask.
To ensure that the device uses the correct DMA mask and to no longer get
the warning, the kernel driver will now setup the DMA mask for the
device.
Change-Id: I92c67c85be1754970412da92161dbf1ec993bca3
|
|
Change-Id: I64151321ac4a020045de5802beb29fe0013a5c3f
|
|
The Ethos-U kernel driver has been converted into a rpmsg driver and
the ethosu_core_interface.h has been replaced by ethsou_core_rpmsg.h.
Change-Id: If6db8c20cd88e950545eed561ed95c067157d061
|
|
When the Ethos-U kernel driver is probed it creates a /dev/ethosu<nr>
device node, which user space use ioctl to communicate with. When
the driver is removed the Ethos-U resources must live on until all
open file handles have been closed.
The rpmsg device can be removed for a number of reasons, for example
if the firmware is stopped or the remoteproc driver is removed. To
allow the remove to complete without waiting for all file handles to
close, a new 'struct device' is created by the kernel driver. This
device will be used to memory allocations and will live on until the
last file handle has been closed.
Change-Id: I790d8219960f25fe64f58c11a865eb65c7b08974
|
|
The 'struct ethosu_device' has been passed as argument to classes.
This creates a circular dependency dependency and it gives all
classes full visibility to all resources in the device struct. This
patch removes the circular dependency.
Using device_lock() and device_unlock() to for synchronization.
Change-Id: I8322e6530c72d7bd67f48f411b4f14b612be2706
|
|
The Ethos-U kernel driver has been converted from a
platform driver with a custom firmware interface into a
rpmsg driver.
Change-Id: I9ae449f5e79eb02924e6630611d0893e5fec86be
|
|
Removing watchdog and firmware reset as a preparations for the
migrations to rpmsg.
Change-Id: Ic1053e3f4301ecadbde8c59dbaed437625a0a5ea
|
|
Change-Id: If27999db4f18355b571b67e5e5d663a703c3f6a3
|
|
Change-Id: Id70e249448cea13cb9273d68c91080342d5c5973
|
|
Change-Id: I303f1424eb46576847312672f7ed5ac03c05aee1
|
|
Add logging class for driver library. Log severity can be configured
using an environment variable.
Add information to prints in kernel space.
Change-Id: I19a1078869733746726515a6cafb79110314066d
|
|
Once the inference file descriptor has been created the inference
release must be handled by the file descriptor release callback.
Change-Id: Ic514983e85821ea3893e11c5c682610f67d1ae31
|
|
Reduce queue capacity by one byte, else it will not be possible to
distinguish between an empty and full queue.
Change-Id: Ia243a7175833826dc816d536cc79ac5a252f3e3a
|
|
The error code from the core side was not correctly propagated to
user space.
Change-Id: I40e502f8dc3a77de064f441beeb62603d013e318
|
|
The padding is important to separate the read- and write indices by
at least one cache line, to prevent cache clean and invalidation to
corrupt data for the remote CPU.
Change-Id: I1d50ac6c63ef4cb3e11b0c293aefaac34ac8eb1f
|
|
ETHOSU_IOCTL_CAPABILITIES_REQ is a read ioctl with a parameter.
Change-Id: Ife20d4de86351053600e6c6ba174dc40896f0aef
|
|
Avoid to use pointers to kernel memory as identify messages, prior this
change, if memory is reused that can lead to unexpected conflicts.
Remove ref counting from capabilities and network_info since memory is
freed in only one place.
Finally, extract the capabilities code in its own files.
Change-Id: I9ab7257f3ab85fa3347be65b3739e0daf9b5a441
|
|
Avoid undefined behaviour from calling dma_alloc_coherent with
requested size=0 as reported by UBSAN.
Change-Id: I1732759464f1d88259edeea099b1729f4ae6b86f
|
|
strscpy copies max destination size -1 chars and ensures NULL
termination. It also return an error if the destination buffer is too
small.
Change-Id: I88e9e5020b2b26ca50c12ae845dad070855a8bde
|
|
If an inference fails to be cancelled and it is still in a pending
state, reset the whole firmware. Indeed the assumption is that
something is at fault on the firmware side and it is not progressing.
Change-Id: I2f568b2167d86cda3cb96a5e83551b018f5fc55d
|
|
Send cancel inference messages to the ethosu subsystem to abort
inference execution there. Also mark inference as aborted in the
linux driver stack itself, so pending inference messages are not
resent when resetting the firmware.
Change-Id: I244c2b119fd7995d14e3859815abf2a00c7f0583
|
|
Change-Id: I62e13df69c712ed4cf70766429b4cb13fc9c9dcb
|
|
Reset the firmware if it becomes unresponsive. Use ping to send
keep alive requests.
Only monitor ping and inference request messages. The other messages
pass no resources to the firmware and can be cancelled without
resetting the firmware.
Change-Id: Ifbcc370f02d79a64f25598f11376a1dc84a7a066
|
|
Implement kernel watchdog that detects when firmware becomes
unresponsive.
Change-Id: I5c5b58a56a2ce629e1fd7cabae83b61823239ea6
|
|
Add UAPI and core message that allows user space space to fetch
information about network models built into the firmware.
Change-Id: Ic92529bce3edd0a5499e691a566bd065da2a72ad
|
|
Support referencing a network model by index that has been built into
the firmware binary.
Change-Id: Idd5294376ea82503dfeafe1203dcc0694d296dfe
|
|
Change-Id: Ia470d230b4bce152f88ab735e0a2ad2cdba80226
|
|
JIRA: MLBEDSW-5531
Change-Id: Ib4b6b6b0ee3995bb01029d561c4cf7eed981a303
|
|
Change-Id: I1ad92264eb5dae672faf3f5b08a6f987148f629e
|
|
Bump the hardcoded timeout value to allow for userspaces process to
be scheduled and receive the response from the capabilities request.
Change-Id: Ia2c8a0554870cf8470a2bb40bf8ed450c10f8446
|
|
Allocate a range of minor numbers and use the minor number as index
when creating the /dev/ethosu<nr> device node.
Change-Id: I76c2a3995ff5087e42a4e95945eb884a4bfb58f6
|
|
Change-Id: I2a5e5ca78bc80117938b706fc31767a8d668b931
|
|
Change-Id: Ia90e2d74c3e071c6e3de381cfada9a5a155d7529
|
|
Also add a call to send a ping message in the inference_runner example
app.
Change-Id: Ia2b4abf5fec8285c320ec0f28df167ff2ea13d82
|
|
Change-Id: Id5aa197312c88b0c448dc085d8477ed67da24724
|
|
Change-Id: I2866d2e7b25af49c3f8e4ed75dc60177e9b38143
|
|
Introduce a 32b magic for each message. Verify the magic for
all incoming messages.
Add reset function - in case of protocol error, effectively
reset/empty the incoming queue.
Add an error message type and message
Add version request/response
Verify payload length of responses (when applicable)
Change-Id: I8aadd4012024492533d52e2cdb38630fce5c36e2
|
|
Change-Id: Iaf6f26e12fdd4a6d8e975a304a7836b26222f270
|
|
Add PMU configuration information to inference creation.
Change-Id: Id8a69517a5d3e4822dbaf46f76cadb2700b3d981
|
|
Change-Id: I2ebac7df9c4716be7fee10ce4cba350e40860ca2
|
|
Build flatbuffers library.
Update network class to extract IFM and OFM dimensions from the tflite
file.
Update the uapi and core apis to support up to 16 IFM and OFM buffers
per inference.
Change-Id: I2f2f177aa4c2d5f9f50f23eb33c44e01ec2cbe09
|
|
Change-Id: I14b6becc908a0ac215769c32ee9c43db192ae6c8
|