Change create network UAPI to take a user buffer

To not allow the buffer for a network instance to be changed after
creation, the create network UAPI will now take the network model data
as a user buffer. The content of the user buffer is copied into an
internally allocated DMA buffer that cannot be accessed by the user.

This breaks the current API so the Linux kernel NPU driver version and
the driver library version have been given major version bumps. All the
tests, documentation and other applications affected by the changes have
been updated accordingly.

Change-Id: I25c785d75a24794c3db632e4abe5cfbb1c7ac190
Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
diff --git a/docs/driver_library_component.svg b/docs/driver_library_component.svg
index bcb43f9..715da50 100644
--- a/docs/driver_library_component.svg
+++ b/docs/driver_library_component.svg
@@ -1,4 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="168px" preserveAspectRatio="none" style="width:322px;height:168px;background:#FEFEFE;" version="1.1" viewBox="0 0 322 168" width="322px" zoomAndPan="magnify"><defs><filter height="300%" id="f1cgoct9zpmo59" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--entity inf--><rect fill="#FEFECE" filter="url(#f1cgoct9zpmo59)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="6" y="8"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="13"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="34.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="16" y="30.9951">Inference</text><!--entity net--><rect fill="#FEFECE" filter="url(#f1cgoct9zpmo59)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="129" y="8"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="124" y="13"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="124" y="34.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="139" y="30.9951">Network</text><!--entity buf--><rect fill="#FEFECE" filter="url(#f1cgoct9zpmo59)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="137" y="121"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="132" y="126"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="132" y="147.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="147" y="143.9951">Buffer</text><!--entity dev--><rect fill="#FEFECE" filter="url(#f1cgoct9zpmo59)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="67" x="244" y="121"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="239" y="126"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="239" y="147.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="254" y="143.9951">Device</text><!--link inf to net--><path d="M91.2656,26 C102.014,26 112.7624,26 123.5108,26 " fill="none" id="inf-net" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="128.7872,26,119.7872,22,123.7872,26,119.7872,30,128.7872,26" style="stroke: #A80036; stroke-width: 1.0;"/><!--link inf to buf--><path d="M51.77,44.1326 C55.1308,58.3191 61.6089,77.7906 73.5,91 C89.0965,108.3256 112.4057,120.2854 131.9103,127.9336 " fill="none" id="inf-buf" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="136.7801,129.7858,129.7901,122.8475,132.1067,128.0083,126.946,130.3249,136.7801,129.7858" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="74.5" y="87.0669">IFM and OFM</text><!--link net to dev--><path d="M206.4926,35.4978 C227.4666,42.6282 251.9451,54.5931 266.5,74 C275.351,85.8015 278.0778,102.1963 278.6036,115.5676 " fill="none" id="net-dev" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="278.7058,120.7148,282.5263,111.6371,278.6065,115.7158,274.5279,111.796,278.7058,120.7148" style="stroke: #A80036; stroke-width: 1.0;"/><!--link net to buf--><path d="M166.0926,44.2219 C165.4689,53.1847 164.8074,64.1523 164.5,74 C164.0682,87.8318 164.7366,103.3096 165.5511,115.691 " fill="none" id="net-buf" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="165.9063,120.794,169.2715,111.5379,165.559,115.8061,161.2909,112.0936,165.9063,120.794" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="96" x="165.5" y="87.0669">Network model</text><!--link buf to dev--><path d="M198.0078,139 C211.6511,139 225.2944,139 238.9377,139 " fill="none" id="buf-dev" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="243.9642,139,234.9642,135,238.9642,139,234.9642,143,243.9642,139" style="stroke: #A80036; stroke-width: 1.0;"/><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="187px" preserveAspectRatio="none" style="width:214px;height:187px;background:#FEFEFE;" version="1.1" viewBox="0 0 214 187" width="214px" zoomAndPan="magnify"><defs><filter height="300%" id="fpjgrf9isy925" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[e700746e0efa2c4773b8fec71443b5b6]
+entity inf--><rect fill="#FEFECE" filter="url(#fpjgrf9isy925)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="85" x="6" y="8"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="13"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="34.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="65" x="16" y="30.9951">Inference</text><!--MD5=[27d8026e1e607fa992f9f5b0cd222a86]
+entity net--><rect fill="#FEFECE" filter="url(#fpjgrf9isy925)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="126" y="8"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="121" y="13"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="121" y="34.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="57" x="136" y="30.9951">Network</text><!--MD5=[0026c2bef77b3322991a49ea733d1063]
+entity buf--><rect fill="#FEFECE" filter="url(#fpjgrf9isy925)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="61" x="49" y="74"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="44" y="79"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="44" y="100.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="41" x="59" y="96.9951">Buffer</text><!--MD5=[3d99d59a27ec55cd9b0b1490801f78bc]
+entity dev--><rect fill="#FEFECE" filter="url(#fpjgrf9isy925)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="67" x="73" y="140"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="68" y="145"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="68" y="166.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="47" x="83" y="162.9951">Device</text><!--MD5=[2ff72c400cccaeb19456038b10d7a192]
+link inf to net--><path d="M91.09,26 C100.94,26 110.79,26 120.64,26 " fill="none" id="inf-&gt;net" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="125.79,26,116.79,22,120.79,26,116.79,30,125.79,26" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[683c956fb43f11bd9ac76d5bc8360245]
+link inf to buf--><path d="M56.81,44.15 C60.49,51.76 64.87,60.8 68.8,68.9 " fill="none" id="inf-&gt;buf" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="71.17,73.8,70.8612,63.956,68.9971,69.2969,63.6562,67.4327,71.17,73.8" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[c137ea9796ba7150be1b84493d485127]
+link net to dev--><path d="M156.8,44.26 C146.35,67.67 127.7,109.49 116.28,135.08 " fill="none" id="net-&gt;dev" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="114.23,139.67,121.5367,133.066,116.258,135.0998,114.2243,129.8211,114.23,139.67" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f081c634ca37a6c48a522a149df97049]
+link buf to dev--><path d="M86.74,110.15 C89.94,117.76 93.76,126.8 97.18,134.9 " fill="none" id="buf-&gt;dev" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="99.24,139.8,99.3972,129.9524,97.2825,135.1991,92.0358,133.0844,99.24,139.8" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[8c816b15a51d6b9c34284e9b0bbcc4d9]
 @startuml

 

 skinparam backgroundColor #FEFEFE

@@ -12,19 +20,17 @@
 inf -> buf: IFM and OFM

 

 net - -> dev

-net - -> buf: Network model

 

 buf -> dev

 

 @enduml

 
-PlantUML version 1.2017.15(Mon Jul 03 18:45:34 CEST 2017)
+PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
 (GPL source distribution)
 Java Runtime: OpenJDK Runtime Environment
 JVM: OpenJDK 64-Bit Server VM
-Java Version: 11.0.11+9-Ubuntu-0ubuntu2.18.04
+Java Version: 11.0.20.1+1-post-Ubuntu-0ubuntu122.04
 Operating System: Linux
-OS Version: 5.4.0-73-generic
 Default Encoding: UTF-8
 Language: en
 Country: US