Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6857121imu; Wed, 14 Nov 2018 08:01:09 -0800 (PST) X-Google-Smtp-Source: AJdET5cByFzyARuUVTsnwELYUlrjJhXDsxv3HnYD0X5WoL6qRpAOt/TgrvAn5yBijpIonVMI/nwU X-Received: by 2002:a17:902:bd46:: with SMTP id b6mr2441419plx.231.1542211269859; Wed, 14 Nov 2018 08:01:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542211269; cv=none; d=google.com; s=arc-20160816; b=Tca/+Hdusb6quQE1pU6F7otTOJIpDcCWU++ubEwGCVdLINNnCNyjXUO75jnQQp3H+P aqkJqshgcBjZJgXQ/xAoxNH0QUjm8yHQdzv5CeOZrwl4Fb/LJgl6bv/Lud90p2vHx0G0 0mHTv3CfP++KOPgZC7B1ylp3VhfQR4pEKeleavuDxZHvFAkhKVhcGNr13YsSxzCf8x91 JX0W4CYrUWVipl4wmNPj6M6mqDydvKIlT0b2bPeZ9b/4W6mQSrqysIeLR+le1+rIDGCj jIV4zWSYIZYOsiPnhbMnoWJpR+DMsYOxexTQMR4i58eOiIvqntYhN4+/ea+Nw5eI4/3H QFFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=3f7tm4h32UEKodAg9HOwmds9TTeXi7xqkzfqqdzdtBo=; b=SinmyKpbnhIkJ0qdtY7U3Suk3C8D2jQag3V4kPuRe3D2RFbImtYUm3MOjLoZyqFIXw LAHLLvICE6JzkVANxTXl5vI6tL8eQpTQkrDtrZbE+xFQgfYCzXswtT7zqjkGKcCvlUe/ 2Qp2xpIZTM+PPkgoW5s1K8TQbtIwg1Ze8be4B9FdGD0laaH9n3ztxgbRn0RSTRjTJvgg Jn6iBsmFc4aDgp2iHjbeK2zDhRx1SJ3vDpHrujjILqv1EBopMm3chD6STBpIiHQKlqTP P1advBJoUeZkfM5SMSlCi3igvBUBPoMA1Xounai9FOfhT1YlgBzqlMvc0sdatvceOW8S kmpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CRuZgNVl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y22-v6si5417557pfa.169.2018.11.14.08.00.52; Wed, 14 Nov 2018 08:01:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=CRuZgNVl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732965AbeKOCEL (ORCPT + 99 others); Wed, 14 Nov 2018 21:04:11 -0500 Received: from mail.kernel.org ([198.145.29.99]:59186 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727951AbeKOCEL (ORCPT ); Wed, 14 Nov 2018 21:04:11 -0500 Received: from localhost (unknown [64.114.255.114]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1FE18208E7; Wed, 14 Nov 2018 16:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542211218; bh=ccPPURPsHCRuR9p/LZa0yX/rgP88sIvmRUAfy8a21nI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=CRuZgNVlFJkSy1jELZujIph6rydpg5IEhKVeMiR/NpcrtEA03DPZYFAjRQoeskDgC RC+wgBY0GYJ5RIZtEnjpgddNwfGPfhd/QUJyQXYedrugojMf+N5QVPlW/4/izgbWQ/ p3EsX5Ueo7SRF1CDAV9EcakukOcBMdXy+JQ3f1mw= Date: Wed, 14 Nov 2018 18:00:17 +0200 From: Leon Romanovsky To: Kenneth Lee Cc: Alexander Shishkin , Tim Sell , Sanyog Kale , Randy Dunlap , Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= , Vinod Koul , David Kershner , Sagar Dharia , Gavin Schenk , Jens Axboe , Philippe Ombredanne , Cyrille Pitchen , Johan Hovold , Zhou Wang , Hao Fang , Jonathan Cameron , Zaibo Xu , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org, linux-accelerators@lists.ozlabs.org, linuxarm@huawei.com, guodong.xu@linaro.org, zhangfei.gao@foxmail.com, haojian.zhuang@linaro.org, Kenneth Lee , Doug Ledford , Jason Gunthorpe , "David S. Miller" , RDMA mailing list , linux-netdev , Christoph Lameter Subject: Re: [RFCv3 PATCH 1/6] uacce: Add documents for WarpDrive/uacce Message-ID: <20181114160017.GI3759@mtr-leonro.mtl.com> References: <20181112075807.9291-1-nek.in.cn@gmail.com> <20181112075807.9291-2-nek.in.cn@gmail.com> <20181113002354.GO3695@mtr-leonro.mtl.com> <95310df4-b32c-42f0-c750-3ad5eb89b3dd@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="UBnjLfzoMQYIXCvq" Content-Disposition: inline In-Reply-To: <95310df4-b32c-42f0-c750-3ad5eb89b3dd@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --UBnjLfzoMQYIXCvq Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 14, 2018 at 10:58:09AM +0800, Kenneth Lee wrote: > > =E5=9C=A8 2018/11/13 =E4=B8=8A=E5=8D=888:23, Leon Romanovsky =E5=86=99=E9= =81=93: > > On Mon, Nov 12, 2018 at 03:58:02PM +0800, Kenneth Lee wrote: > > > From: Kenneth Lee > > > > > > WarpDrive is a general accelerator framework for the user application= to > > > access the hardware without going through the kernel in data path. > > > > > > The kernel component to provide kernel facility to driver for expose = the > > > user interface is called uacce. It a short name for > > > "Unified/User-space-access-intended Accelerator Framework". > > > > > > This patch add document to explain how it works. > > + RDMA and netdev folks > > > > Sorry, to be late in the game, I don't see other patches, but from > > the description below it seems like you are reinventing RDMA verbs > > model. I have hard time to see the differences in the proposed > > framework to already implemented in drivers/infiniband/* for the kernel > > space and for the https://github.com/linux-rdma/rdma-core/ for the user > > space parts. > > Thanks Leon, > > Yes, we tried to solve similar problem in RDMA. We also learned a lot from > the exist code of RDMA. But we we have to make a new one because we cannot > register accelerators such as AI operation, encryption or compression to = the > RDMA framework:) Assuming that you did everything right and still failed to use RDMA framework, you was supposed to fix it and not to reinvent new exactly same one. It is how we develop kernel, by reusing existing code. > > Another problem we tried to address is the way to pin the memory for dma > operation. The RDMA way to pin the memory cannot avoid the page lost due = to > copy-on-write operation during the memory is used by the device. This may > not be important to RDMA library. But it is important to accelerator. Such support exists in drivers/infiniband/ from late 2014 and it is called ODP (on demand paging). > > Hope this can help the understanding. Yes, it helped me a lot. Now, I'm more than before convinced that this whole patchset shouldn't exist in the first place. To be clear, NAK. Thanks > > Cheers > > > > > Hard NAK from RDMA side. > > > > Thanks > > > > > Signed-off-by: Kenneth Lee > > > --- > > > Documentation/warpdrive/warpdrive.rst | 260 +++++++ > > > Documentation/warpdrive/wd-arch.svg | 764 +++++++++++++++++= +++ > > > Documentation/warpdrive/wd.svg | 526 ++++++++++++++ > > > Documentation/warpdrive/wd_q_addr_space.svg | 359 +++++++++ > > > 4 files changed, 1909 insertions(+) > > > create mode 100644 Documentation/warpdrive/warpdrive.rst > > > create mode 100644 Documentation/warpdrive/wd-arch.svg > > > create mode 100644 Documentation/warpdrive/wd.svg > > > create mode 100644 Documentation/warpdrive/wd_q_addr_space.svg > > > > > > diff --git a/Documentation/warpdrive/warpdrive.rst b/Documentation/wa= rpdrive/warpdrive.rst > > > new file mode 100644 > > > index 000000000000..ef84d3a2d462 > > > --- /dev/null > > > +++ b/Documentation/warpdrive/warpdrive.rst > > > @@ -0,0 +1,260 @@ > > > +Introduction of WarpDrive > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > > > + > > > +*WarpDrive* is a general accelerator framework for the user applicat= ion to > > > +access the hardware without going through the kernel in data path. > > > + > > > +It can be used as the quick channel for accelerators, network adapto= rs or > > > +other hardware for application in user space. > > > + > > > +This may make some implementation simpler. E.g. you can reuse most= of the > > > +*netdev* driver in kernel and just share some ring buffer to the use= r space > > > +driver for *DPDK* [4] or *ODP* [5]. Or you can combine the RSA accel= erator with > > > +the *netdev* in the user space as a https reversed proxy, etc. > > > + > > > +*WarpDrive* takes the hardware accelerator as a heterogeneous proces= sor which > > > +can share particular load from the CPU: > > > + > > > +.. image:: wd.svg > > > + :alt: WarpDrive Concept > > > + > > > +The virtual concept, queue, is used to manage the requests sent to t= he > > > +accelerator. The application send requests to the queue by writing t= o some > > > +particular address, while the hardware takes the requests directly f= rom the > > > +address and send feedback accordingly. > > > + > > > +The format of the queue may differ from hardware to hardware. But the > > > +application need not to make any system call for the communication. > > > + > > > +*WarpDrive* tries to create a shared virtual address space for all i= nvolved > > > +accelerators. Within this space, the requests sent to queue can refe= r to any > > > +virtual address, which will be valid to the application and all invo= lved > > > +accelerators. > > > + > > > +The name *WarpDrive* is simply a cool and general name meaning the f= ramework > > > +makes the application faster. It includes general user library, kern= el > > > +management module and drivers for the hardware. In kernel, the manag= ement > > > +module is called *uacce*, meaning "Unified/User-space-access-intended > > > +Accelerator Framework". > > > + > > > + > > > +How does it work > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > + > > > +*WarpDrive* uses *mmap* and *IOMMU* to play the trick. > > > + > > > +*Uacce* creates a chrdev for the device registered to it. A "queue" = will be > > > +created when the chrdev is opened. The application access the queue = by mmap > > > +different address region of the queue file. > > > + > > > +The following figure demonstrated the queue file address space: > > > + > > > +.. image:: wd_q_addr_space.svg > > > + :alt: WarpDrive Queue Address Space > > > + > > > +The first region of the space, device region, is used for the applic= ation to > > > +write request or read answer to or from the hardware. > > > + > > > +Normally, there can be three types of device regions mmio and memory= regions. > > > +It is recommended to use common memory for request/answer descriptor= s and use > > > +the mmio space for device notification, such as doorbell. But of cou= rse, this > > > +is all up to the interface designer. > > > + > > > +There can be two types of device memory regions, kernel-only and use= r-shared. > > > +This will be explained in the "kernel APIs" section. > > > + > > > +The Static Share Virtual Memory region is necessary only when the de= vice IOMMU > > > +does not support "Share Virtual Memory". This will be explained afte= r the > > > +*IOMMU* idea. > > > + > > > + > > > +Architecture > > > +------------ > > > + > > > +The full *WarpDrive* architecture is represented in the following cl= ass > > > +diagram: > > > + > > > +.. image:: wd-arch.svg > > > + :alt: WarpDrive Architecture > > > + > > > + > > > +The user API > > > +------------ > > > + > > > +We adopt a polling style interface in the user space: :: > > > + > > > + int wd_request_queue(struct wd_queue *q); > > > + void wd_release_queue(struct wd_queue *q); > > > + > > > + int wd_send(struct wd_queue *q, void *req); > > > + int wd_recv(struct wd_queue *q, void **req); > > > + int wd_recv_sync(struct wd_queue *q, void **req); > > > + void wd_flush(struct wd_queue *q); > > > + > > > +wd_recv_sync() is a wrapper to its non-sync version. It will trapped= into > > > +kernel and waits until the queue become available. > > > + > > > +If the queue do not support SVA/SVM. The following helper function > > > +can be used to create Static Virtual Share Memory: :: > > > + > > > + void *wd_preserve_share_memory(struct wd_queue *q, size_t si= ze); > > > + > > > +The user API is not mandatory. It is simply a suggestion and hint wh= at the > > > +kernel interface is supposed to support. > > > + > > > + > > > +The user driver > > > +--------------- > > > + > > > +The queue file mmap space will need a user driver to wrap the commun= ication > > > +protocol. *UACCE* provides some attributes in sysfs for the user dri= ver to > > > +match the right accelerator accordingly. > > > + > > > +The *UACCE* device attribute is under the following directory: > > > + > > > +/sys/class/uacce//params > > > + > > > +The following attributes is supported: > > > + > > > +nr_queue_remained (ro) > > > + number of queue remained > > > + > > > +api_version (ro) > > > + a string to identify the queue mmap space format and its ver= sion > > > + > > > +device_attr (ro) > > > + attributes of the device, see UACCE_DEV_xxx flag defined in = uacce.h > > > + > > > +numa_node (ro) > > > + id of numa node > > > + > > > +priority (rw) > > > + Priority or the device, bigger is higher > > > + > > > +(This is not yet implemented in RFC version) > > > + > > > + > > > +The kernel API > > > +-------------- > > > + > > > +The *uacce* kernel API is defined in uacce.h. If the hardware suppor= t SVM/SVA, > > > +The driver need only the following API functions: :: > > > + > > > + int uacce_register(uacce); > > > + void uacce_unregister(uacce); > > > + void uacce_wake_up(q); > > > + > > > +*uacce_wake_up* is used to notify the process who epoll() on the que= ue file. > > > + > > > +According to the IOMMU capability, *uacce* categories the devices as= follow: > > > + > > > +UACCE_DEV_NOIOMMU > > > + The device has no IOMMU. The user process cannot use VA on t= he hardware > > > + This mode is not recommended. > > > + > > > +UACCE_DEV_SVA (UACCE_DEV_PASID | UACCE_DEV_FAULT_FROM_DEV) > > > + The device has IOMMU which can share the same page table wit= h user > > > + process > > > + > > > +UACCE_DEV_SHARE_DOMAIN > > > + The device has IOMMU which has no multiple page table and de= vice page > > > + fault support > > > + > > > +If the device works in mode other than UACCE_DEV_NOIOMMU, *uacce* wi= ll set its > > > +IOMMU to IOMMU_DOMAIN_UNMANAGED. So the driver must not use any kern= el > > > +DMA API but the following ones from *uacce* instead: :: > > > + > > > + uacce_dma_map(q, va, size, prot); > > > + uacce_dma_unmap(q, va, size, prot); > > > + > > > +*uacce_dma_map/unmap* is valid only for UACCE_DEV_SVA device. It cre= ates a > > > +particular PASID and page table for the kernel in the IOMMU (Not yet > > > +implemented in the RFC) > > > + > > > +For the UACCE_DEV_SHARE_DOMAIN device, uacce_dma_map/unmap is not va= lid. > > > +*Uacce* call back start_queue only when the DUS and DKO region is mm= apped. The > > > +accelerator driver must use those dma buffer, via uacce_queue->qfrs[= ], on > > > +start_queue call back. The size of the queue file region is defined = by > > > +uacce->ops->qf_pg_start[]. > > > + > > > +We have to do it this way because most of current IOMMU cannot suppo= rt the > > > +kernel and user virtual address at the same time. So we have to let = them both > > > +share the same user virtual address space. > > > + > > > +If the device have to support kernel and user at the same time, both= kernel > > > +and the user should use these DMA API. This is not convenient. A bet= ter > > > +solution is to change the future DMA/IOMMU design to let them separa= te the > > > +address space between the user and kernel space. But it is not going= to be in > > > +a short time. > > > + > > > + > > > +Multiple processes support > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > > > + > > > +In the latest mainline kernel (4.19) when this document is written, = the IOMMU > > > +subsystem do not support multiple process page tables yet. > > > + > > > +Most IOMMU hardware implementation support multi-process with the co= ncept > > > +of PASID. But they may use different name, e.g. it is call sub-strea= m-id in > > > +SMMU of ARM. With PASID or similar design, multi page table can be a= dded to > > > +the IOMMU and referred by its PASID. > > > + > > > +*JPB* has a patchset to enable this[1]_. We have tested it with our = hardware > > > +(which is known as *D06*). It works well. *WarpDrive* rely on them t= o support > > > +UACCE_DEV_SVA. If it is not enabled, *WarpDrive* can still work. But= it > > > +support only one process, the device will be set to UACCE_DEV_SHARE_= DOMAIN > > > +even it is set to UACCE_DEV_SVA initially. > > > + > > > +Static Share Virtual Memory is mainly used by UACCE_DEV_SHARE_DOMAIN= device. > > > + > > > + > > > +Legacy Mode Support > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > +For the hardware without IOMMU, WarpDrive can still work, the only p= roblem is > > > +VA cannot be used in the device. The driver should adopt another str= ategy for > > > +the shared memory. It is only for testing, and not recommended. > > > + > > > + > > > +The Folk Scenario > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > +For a process with allocated queues and shared memory, what happen i= f it forks > > > +a child? > > > + > > > +The fd of the queue will be duplicated on folk, so the child can sen= d request > > > +to the same queue as its parent. But the requests which is sent from= processes > > > +except for the one who open the queue will be blocked. > > > + > > > +It is recommended to add O_CLOEXEC to the queue file. > > > + > > > +The queue mmap space has a VM_DONTCOPY in its VMA. So the child will= lost all > > > +those VMAs. > > > + > > > +This is why *WarpDrive* does not adopt the mode used in *VFIO* and *= InfiniBand*. > > > +Both solutions can set any user pointer for hardware sharing. But th= ey cannot > > > +support fork when the dma is in process. Or the "Copy-On-Write" proc= edure will > > > +make the parent process lost its physical pages. > > > + > > > + > > > +The Sample Code > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > +There is a sample user land implementation with a simple driver for = Hisilicon > > > +Hi1620 ZIP Accelerator. > > > + > > > +To test, do the following in samples/warpdrive (for the case of PC h= ost): :: > > > + ./autogen.sh > > > + ./conf.sh # or simply ./configure if you build on targ= et system > > > + make > > > + > > > +Then you can get test_hisi_zip in the test subdirectory. Copy it to = the target > > > +system and make sure the hisi_zip driver is enabled (the major and m= inor of > > > +the uacce chrdev can be gotten from the dmesg or sysfs), and run: :: > > > + mknod /dev/ua1 c > > > + test/test_hisi_zip -z < data > data.zip > > > + test/test_hisi_zip -g < data > data.gzip > > > + > > > + > > > +References > > > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > > +.. [1] https://patchwork.kernel.org/patch/10394851/ > > > + > > > +.. vim: tw=3D78 > > > diff --git a/Documentation/warpdrive/wd-arch.svg b/Documentation/warp= drive/wd-arch.svg > > > new file mode 100644 > > > index 000000000000..e59934188443 > > > --- /dev/null > > > +++ b/Documentation/warpdrive/wd-arch.svg > > > @@ -0,0 +1,764 @@ > > > + > > > + > > > + > > > + > > + xmlns:dc=3D"http://purl.org/dc/elements/1.1/" > > > + xmlns:cc=3D"http://creativecommons.org/ns#" > > > + xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#" > > > + xmlns:svg=3D"http://www.w3.org/2000/svg" > > > + xmlns=3D"http://www.w3.org/2000/svg" > > > + xmlns:xlink=3D"http://www.w3.org/1999/xlink" > > > + xmlns:sodipodi=3D"http://sodipodi.sourceforge.net/DTD/sodipodi-0.= dtd" > > > + xmlns:inkscape=3D"http://www.inkscape.org/namespaces/inkscape" > > > + width=3D"210mm" > > > + height=3D"193mm" > > > + viewBox=3D"0 0 744.09449 683.85823" > > > + id=3D"svg2" > > > + version=3D"1.1" > > > + inkscape:version=3D"0.92.3 (2405546, 2018-03-11)" > > > + sodipodi:docname=3D"wd-arch.svg"> > > > + > > + id=3D"defs4"> > > > + > > + inkscape:collect=3D"always" > > > + id=3D"linearGradient6830"> > > > + > > + style=3D"stop-color:#000000;stop-opacity:1;" > > > + offset=3D"0" > > > + id=3D"stop6832" /> > > > + > > + style=3D"stop-color:#000000;stop-opacity:0;" > > > + offset=3D"1" > > > + id=3D"stop6834" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"translate(-89.949614,405.94594)" /> > > > + > > + inkscape:collect=3D"always" > > > + id=3D"linearGradient5026"> > > > + > > + style=3D"stop-color:#f2f2f2;stop-opacity:1;" > > > + offset=3D"0" > > > + id=3D"stop5028" /> > > > + > > + style=3D"stop-color:#f2f2f2;stop-opacity:0;" > > > + offset=3D"1" > > > + id=3D"stop5030" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-1" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"translate(175.77842,400.29111)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-0" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-9" /> > > > + > > > + > > + markerWidth=3D"18.960653" > > > + markerHeight=3D"11.194658" > > > + refX=3D"9.4803267" > > > + refY=3D"5.5973287" > > > + orient=3D"auto" > > > + id=3D"marker4613"> > > > + > > + y=3D"-5.1589785" > > > + x=3D"5.8504119" > > > + height=3D"10.317957" > > > + width=3D"10.317957" > > > + id=3D"rect4212" > > > + style=3D"fill:#ffffff;stroke:#000000;stroke-width:0.6914336= 7;stroke-miterlimit:4;stroke-dasharray:none" > > > + transform=3D"matrix(0.86111274,0.50841405,-0.86111274,0.508= 41405,0,0)"> > > > + > > + id=3D"title4262">generation > > > + > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-9" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.2452511,0,0,0.98513016,-190.956= 32,540.33156)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-9-7" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.3742742,0,0,0.97786398,-234.526= 17,654.63367)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8-5" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9-0" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-6"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-1" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-9-4" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.3742912,0,0,2.0035845,-468.3442= 8,342.56603)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8-54" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9-7" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1-8"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9-6" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1-8-8"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9-6-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-0"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-93" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-0-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-93-6" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter5382" > > > + x=3D"-0.089695387" > > > + width=3D"1.1793908" > > > + y=3D"-0.10052069" > > > + height=3D"1.2010413"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"0.86758925" > > > + id=3D"feGaussianBlur5384" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient6830" > > > + id=3D"linearGradient6836" > > > + x1=3D"362.73923" > > > + y1=3D"700.04059" > > > + x2=3D"340.4751" > > > + y2=3D"678.25488" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"translate(-23.771026,-135.76835)" /> > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-6-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-1-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-9-7-3" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.3742742,0,0,0.97786395,-57.3571= 86,649.55786)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8-5-0" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9-0-2" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1-1"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9-0" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > > + > > + id=3D"base" > > > + pagecolor=3D"#ffffff" > > > + bordercolor=3D"#666666" > > > + borderopacity=3D"1.0" > > > + inkscape:pageopacity=3D"0.0" > > > + inkscape:pageshadow=3D"2" > > > + inkscape:zoom=3D"0.98994949" > > > + inkscape:cx=3D"222.32868" > > > + inkscape:cy=3D"370.44492" > > > + inkscape:document-units=3D"px" > > > + inkscape:current-layer=3D"layer1" > > > + showgrid=3D"false" > > > + inkscape:window-width=3D"1916" > > > + inkscape:window-height=3D"1033" > > > + inkscape:window-x=3D"0" > > > + inkscape:window-y=3D"22" > > > + inkscape:window-maximized=3D"0" > > > + fit-margin-right=3D"0.3" > > > + inkscape:snap-global=3D"false" /> > > > + > > + id=3D"metadata7"> > > > + > > > + > > + rdf:about=3D""> > > > + image/svg+xml > > > + > > + rdf:resource=3D"http://purl.org/dc/dcmitype/StillImage" /> > > > + > > > + > > > + > > > + > > > + > > + inkscape:label=3D"Layer 1" > > > + inkscape:groupmode=3D"layer" > > > + id=3D"layer1" > > > + transform=3D"translate(0,-368.50374)"> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3)" > > > + id=3D"rect4136-3-6" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"283.01144" > > > + y=3D"588.80896" /> > > > + > > + style=3D"fill:url(#linearGradient5032);fill-opacity:1;stroke:= #000000;stroke-width:0.6465112" > > > + id=3D"rect4136-2" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"281.63498" > > > + y=3D"586.75739" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"294.21747" > > > + y=3D"612.50073" > > > + id=3D"text4138-6"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1" > > > + x=3D"294.21747" > > > + y=3D"612.50073" > > > + style=3D"font-size:15px;line-height:1.25">WarpDrive= > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-0)" > > > + id=3D"rect4136-3-6-3" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"548.7395" > > > + y=3D"583.15417" /> > > > + > > + style=3D"fill:url(#linearGradient5032-1);fill-opacity:1;strok= e:#000000;stroke-width:0.6465112" > > > + id=3D"rect4136-2-60" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"547.36304" > > > + y=3D"581.1026" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"557.83484" > > > + y=3D"602.32745" > > > + id=3D"text4138-6-6"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-2" > > > + x=3D"557.83484" > > > + y=3D"602.32745" > > > + style=3D"font-size:15px;line-height:1.25">user_driver > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4613)" > > > + d=3D"m 547.36304,600.78954 -156.58203,0.0691" > > > + id=3D"path4855" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8)" > > > + id=3D"rect4136-3-6-5-7" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.2452511,0,0,0.98513016,113.15182,641.02= 594)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-9);fill-opacity:1;str= oke:#000000;stroke-width:0.71606314" > > > + id=3D"rect4136-2-6-3" > > > + width=3D"125.86729" > > > + height=3D"31.522341" > > > + x=3D"271.75983" > > > + y=3D"718.45435" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"309.13705" > > > + y=3D"745.55371" > > > + id=3D"text4138-6-2-6"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1" > > > + x=3D"309.13705" > > > + y=3D"745.55371" > > > + style=3D"font-size:15px;line-height:1.25">uacce > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2)" > > > + d=3D"m 329.57309,619.72453 5.0373,97.14447" > > > + id=3D"path4661-3" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2-1)" > > > + d=3D"m 342.57219,830.63108 -5.67699,-79.2841" > > > + id=3D"path4661-3-4" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8-5)" > > > + id=3D"rect4136-3-6-5-7-3" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.3742742,0,0,0.97786398,101.09126,754.58= 534)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-9-7);fill-opacity:1;s= troke:#000000;stroke-width:0.74946606" > > > + id=3D"rect4136-2-6-3-6" > > > + width=3D"138.90866" > > > + height=3D"31.289837" > > > + x=3D"276.13297" > > > + y=3D"831.44263" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"295.67819" > > > + y=3D"852.98224" > > > + id=3D"text4138-6-2-6-1"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-0" > > > + x=3D"295.67819" > > > + y=3D"852.98224" > > > + style=3D"font-size:15px;line-height:1.25">Device Driver > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2-6)" > > > + d=3D"m 623.05084,615.00104 0.51369,333.80219" > > > + id=3D"path4661-3-5" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0p= x;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1= px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"392.63568" > > > + y=3D"660.83667" > > > + id=3D"text4138-6-2-6-1-6-2-5"> > > + sodipodi:role=3D"line" > > > + x=3D"392.63568" > > > + y=3D"660.83667" > > > + id=3D"tspan4305" > > > + style=3D"font-size:15px;line-height:1.25"><<anom_file= >> > > + sodipodi:role=3D"line" > > > + x=3D"392.63568" > > > + y=3D"679.58667" > > > + style=3D"font-size:15px;line-height:1.25" > > > + id=3D"tspan1139">Queue FD > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"389.92969" > > > + y=3D"587.44836" > > > + id=3D"text4138-6-2-6-1-6-2-56"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-0-3-0-9" > > > + x=3D"389.92969" > > > + y=3D"587.44836" > > > + style=3D"font-size:15px;line-height:1.25">1 > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"528.64813" > > > + y=3D"600.08429" > > > + id=3D"text4138-6-2-6-1-6-3"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-0-3-7" > > > + x=3D"528.64813" > > > + y=3D"600.08429" > > > + style=3D"font-size:15px;line-height:1.25">* > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8-54)" > > > + id=3D"rect4136-3-6-5-7-4" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.3745874,0,0,1.8929066,-132.7754,556.045= 05)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-9-4);fill-opacity:1;s= troke:#000000;stroke-width:1.07280123" > > > + id=3D"rect4136-2-6-3-4" > > > + width=3D"138.91039" > > > + height=3D"64.111" > > > + x=3D"42.321312" > > > + y=3D"704.8371" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"110.30745" > > > + y=3D"722.94025" > > > + id=3D"text4138-6-2-6-3"> > > + sodipodi:role=3D"line" > > > + x=3D"111.99202" > > > + y=3D"722.94025" > > > + id=3D"tspan4366" > > > + style=3D"font-size:15px;line-height:1.25;text-align:center;= text-anchor:middle">other standard > > + sodipodi:role=3D"line" > > > + x=3D"110.30745" > > > + y=3D"741.69025" > > > + id=3D"tspan4368" > > > + style=3D"font-size:15px;line-height:1.25;text-align:center;= text-anchor:middle">framework > > + sodipodi:role=3D"line" > > > + x=3D"110.30745" > > > + y=3D"760.44025" > > > + style=3D"font-size:15px;line-height:1.25;text-align:center;= text-anchor:middle" > > > + id=3D"tspan6840">(crypto/nic/others) > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2-1-8)" > > > + d=3D"M 276.29661,849.04109 134.04449,771.90853" > > > + id=3D"path4661-3-4-8" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"313.70813" > > > + y=3D"730.06366" > > > + id=3D"text4138-6-2-6-36"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-7" > > > + x=3D"313.70813" > > > + y=3D"730.06366" > > > + style=3D"font-size:10px;line-height:1.25"><<lkm>&g= t; > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px= ;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px= ;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"259.53165" > > > + y=3D"797.8056" > > > + id=3D"text4138-6-2-6-1-6-2-5-7-5"> > > + sodipodi:role=3D"line" > > > + x=3D"259.53165" > > > + y=3D"797.8056" > > > + style=3D"font-size:15px;line-height:1.25;text-align:start;t= ext-anchor:start" > > > + id=3D"tspan2357">uacce register api > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"29.145819" > > > + y=3D"833.44244" > > > + id=3D"text4138-6-2-6-1-6-2-5-7-5-2"> > > + sodipodi:role=3D"line" > > > + x=3D"29.145819" > > > + y=3D"833.44244" > > > + id=3D"tspan4301" > > > + style=3D"font-size:15px;line-height:1.25">register to other= subsystem > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"301.20813" > > > + y=3D"597.29437" > > > + id=3D"text4138-6-2-6-36-1"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-7-2" > > > + x=3D"301.20813" > > > + y=3D"597.29437" > > > + style=3D"font-size:10px;line-height:1.25"><<user_lib&= gt;> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0p= x;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1= px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"615.9505" > > > + y=3D"739.44012" > > > + id=3D"text4138-6-2-6-1-6-2-5-3"> > > + sodipodi:role=3D"line" > > > + x=3D"615.9505" > > > + y=3D"739.44012" > > > + id=3D"tspan4274-7" > > > + style=3D"font-size:15px;line-height:1.25">mmapped memory r/= w interface > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0p= x;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1= px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"371.01291" > > > + y=3D"529.23682" > > > + id=3D"text4138-6-2-6-1-6-2-5-36"> > > + sodipodi:role=3D"line" > > > + x=3D"371.01291" > > > + y=3D"529.23682" > > > + id=3D"tspan4305-3" > > > + style=3D"font-size:15px;line-height:1.25">wd user api > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"m 328.19325,585.87943 0,-23.57142" > > > + id=3D"path4348" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:even= odd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none= ;stroke-dashoffset:0" > > > + id=3D"path4350" > > > + cx=3D"328.01468" > > > + cy=3D"551.95081" > > > + rx=3D"11.607142" > > > + ry=3D"10.357142" /> > > > + > > + style=3D"opacity:0.444;fill:url(#linearGradient6836);fill-opa= city:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-miterlimit:4;str= oke-dasharray:none;stroke-dashoffset:0;filter:url(#filter5382)" > > > + id=3D"path4350-2" > > > + sodipodi:type=3D"arc" > > > + sodipodi:cx=3D"329.44327" > > > + sodipodi:cy=3D"553.37933" > > > + sodipodi:rx=3D"11.607142" > > > + sodipodi:ry=3D"10.357142" > > > + sodipodi:start=3D"0" > > > + sodipodi:end=3D"6.2509098" > > > + d=3D"m 341.05041,553.37933 a 11.607142,10.357142 0 0 1 -11.51= 349,10.35681 11.607142,10.357142 0 0 1 -11.69928,-10.18967 11.607142,10.357= 142 0 0 1 11.32469,-10.52124 11.607142,10.357142 0 0 1 11.88204,10.01988" > > > + sodipodi:open=3D"true" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0p= x;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1= px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"619.67596" > > > + y=3D"978.22363" > > > + id=3D"text4138-6-2-6-1-6-2-5-36-3"> > > + sodipodi:role=3D"line" > > > + x=3D"619.67596" > > > + y=3D"978.22363" > > > + id=3D"tspan4305-3-67" > > > + style=3D"font-size:15px;line-height:1.25">Device(Hardware)<= /tspan> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2-6-2)" > > > + d=3D"m 347.51164,865.4527 193.91929,99.10053" > > > + id=3D"path4661-3-5-1" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8-5-0)" > > > + id=3D"rect4136-3-6-5-7-3-1" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.3742742,0,0,0.97786395,278.26025,749.50= 952)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-9-7-3);fill-opacity:1= ;stroke:#000000;stroke-width:0.74946606" > > > + id=3D"rect4136-2-6-3-6-0" > > > + width=3D"138.90868" > > > + height=3D"31.289839" > > > + x=3D"453.30197" > > > + y=3D"826.36682" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;f= ill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt= ;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"493.68158" > > > + y=3D"847.90643" > > > + id=3D"text4138-6-2-6-1-5"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-1-0-1" > > > + x=3D"493.68158" > > > + y=3D"847.90643" > > > + style=3D"font-size:15px;line-height:1.25;stroke-width:1px">= IOMMU > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-2-1-1)" > > > + d=3D"m 389.49372,755.46667 111.75324,68.4507" > > > + id=3D"path4661-3-4-85" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;w= ord-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;s= troke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"427.70282" > > > + y=3D"776.91418" > > > + id=3D"text4138-6-2-6-1-6-2-5-7-5-0"> > > + sodipodi:role=3D"line" > > > + x=3D"427.70282" > > > + y=3D"776.91418" > > > + style=3D"font-size:15px;line-height:1.25;text-align:start;t= ext-anchor:start;stroke-width:1px" > > > + id=3D"tspan2357-6">manage the driver iommu state > > > + > > > + > > > diff --git a/Documentation/warpdrive/wd.svg b/Documentation/warpdrive= /wd.svg > > > new file mode 100644 > > > index 000000000000..87ab92ebfbc6 > > > --- /dev/null > > > +++ b/Documentation/warpdrive/wd.svg > > > @@ -0,0 +1,526 @@ > > > + > > > + > > > + > > > + > > + xmlns:dc=3D"http://purl.org/dc/elements/1.1/" > > > + xmlns:cc=3D"http://creativecommons.org/ns#" > > > + xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#" > > > + xmlns:svg=3D"http://www.w3.org/2000/svg" > > > + xmlns=3D"http://www.w3.org/2000/svg" > > > + xmlns:xlink=3D"http://www.w3.org/1999/xlink" > > > + xmlns:sodipodi=3D"http://sodipodi.sourceforge.net/DTD/sodipodi-0.= dtd" > > > + xmlns:inkscape=3D"http://www.inkscape.org/namespaces/inkscape" > > > + width=3D"210mm" > > > + height=3D"116mm" > > > + viewBox=3D"0 0 744.09449 411.02338" > > > + id=3D"svg2" > > > + version=3D"1.1" > > > + inkscape:version=3D"0.92.3 (2405546, 2018-03-11)" > > > + sodipodi:docname=3D"wd.svg"> > > > + > > + id=3D"defs4"> > > > + > > + inkscape:collect=3D"always" > > > + id=3D"linearGradient5026"> > > > + > > + style=3D"stop-color:#f2f2f2;stop-opacity:1;" > > > + offset=3D"0" > > > + id=3D"stop5028" /> > > > + > > + style=3D"stop-color:#f2f2f2;stop-opacity:0;" > > > + offset=3D"1" > > > + id=3D"stop5030" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(2.7384117,0,0,0.91666329,-952.828= 3,571.10143)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3" /> > > > + > > > + > > + markerWidth=3D"18.960653" > > > + markerHeight=3D"11.194658" > > > + refX=3D"9.4803267" > > > + refY=3D"5.5973287" > > > + orient=3D"auto" > > > + id=3D"marker4613"> > > > + > > + y=3D"-5.1589785" > > > + x=3D"5.8504119" > > > + height=3D"10.317957" > > > + width=3D"10.317957" > > > + id=3D"rect4212" > > > + style=3D"fill:#ffffff;stroke:#000000;stroke-width:0.6914336= 7;stroke-miterlimit:4;stroke-dasharray:none" > > > + transform=3D"matrix(0.86111274,0.50841405,-0.86111274,0.508= 41405,0,0)"> > > > + > > + id=3D"title4262">generation > > > + > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-9" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.2452511,0,0,0.98513016,-190.956= 32,540.33156)" /> > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-6"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-1" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1-8"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9-6" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-1-8-8"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-9-6-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-0"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-93" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-0-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-93-6" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-2-6-2"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-9-1-9" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-8" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.0104674,0,0,1.0052679,-218.642,= 661.15448)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-8-2" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(2.1450559,0,0,1.0052679,-521.9770= 4,740.76422)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8-5" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9-1" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-8-0" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.0104674,0,0,1.0052679,83.456748= ,660.20747)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-8-6" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-9-2" /> > > > + > > > + > > + inkscape:collect=3D"always" > > > + xlink:href=3D"#linearGradient5026" > > > + id=3D"linearGradient5032-3-84" > > > + x1=3D"353" > > > + y1=3D"211.3622" > > > + x2=3D"565.5" > > > + y2=3D"174.8622" > > > + gradientUnits=3D"userSpaceOnUse" > > > + gradientTransform=3D"matrix(1.9884948,0,0,0.94903536,-318.426= 65,564.37696)" /> > > > + > > + inkscape:collect=3D"always" > > > + style=3D"color-interpolation-filters:sRGB" > > > + id=3D"filter4169-3-5-4" > > > + x=3D"-0.031597666" > > > + width=3D"1.0631953" > > > + y=3D"-0.099812768" > > > + height=3D"1.1996255"> > > > + > > + inkscape:collect=3D"always" > > > + stdDeviation=3D"1.3307599" > > > + id=3D"feGaussianBlur4171-6-3-0" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-0-0"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-93-8" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > + markerWidth=3D"11.227358" > > > + markerHeight=3D"12.355258" > > > + refX=3D"10" > > > + refY=3D"6.177629" > > > + orient=3D"auto" > > > + id=3D"marker4825-6-3"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path4757-1-1" > > > + d=3D"M 0.42024733,0.42806444 10.231357,6.3500844 0.24347733= ,11.918544" > > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-= width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> > > > + > > > + > > > + > > + id=3D"base" > > > + pagecolor=3D"#ffffff" > > > + bordercolor=3D"#666666" > > > + borderopacity=3D"1.0" > > > + inkscape:pageopacity=3D"0.0" > > > + inkscape:pageshadow=3D"2" > > > + inkscape:zoom=3D"0.98994949" > > > + inkscape:cx=3D"457.47339" > > > + inkscape:cy=3D"250.14781" > > > + inkscape:document-units=3D"px" > > > + inkscape:current-layer=3D"layer1" > > > + showgrid=3D"false" > > > + inkscape:window-width=3D"1916" > > > + inkscape:window-height=3D"1033" > > > + inkscape:window-x=3D"0" > > > + inkscape:window-y=3D"22" > > > + inkscape:window-maximized=3D"0" > > > + fit-margin-right=3D"0.3" /> > > > + > > + id=3D"metadata7"> > > > + > > > + > > + rdf:about=3D""> > > > + image/svg+xml > > > + > > + rdf:resource=3D"http://purl.org/dc/dcmitype/StillImage" /> > > > + > > > + > > > + > > > + > > > + > > + inkscape:label=3D"Layer 1" > > > + inkscape:groupmode=3D"layer" > > > + id=3D"layer1" > > > + transform=3D"translate(0,-641.33861)"> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5)" > > > + id=3D"rect4136-3-6-5" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(2.7384116,0,0,0.91666328,-284.06895,664.7= 9751)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3);fill-opacity:1;strok= e:#000000;stroke-width:1.02430749" > > > + id=3D"rect4136-2-6" > > > + width=3D"276.79272" > > > + height=3D"29.331528" > > > + x=3D"64.723419" > > > + y=3D"736.84473" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;line-height:0%;= font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fil= l-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoi= n:miter;stroke-opacity:1" > > > + x=3D"78.223282" > > > + y=3D"756.79803" > > > + id=3D"text4138-6-2"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9" > > > + x=3D"78.223282" > > > + y=3D"756.79803" > > > + style=3D"font-size:15px;line-height:1.25">user application = (running by the CPU > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6)" > > > + d=3D"m 217.67507,876.6738 113.40331,45.0758" > > > + id=3D"path4661" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-0)" > > > + d=3D"m 208.10197,767.69811 0.29362,76.03656" > > > + id=3D"path4661-6" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8)" > > > + id=3D"rect4136-3-6-5-3" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.0104673,0,0,1.0052679,28.128628,763.907= 22)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-8);fill-opacity:1;str= oke:#000000;stroke-width:0.65159565" > > > + id=3D"rect4136-2-6-6" > > > + width=3D"102.13586" > > > + height=3D"32.16671" > > > + x=3D"156.83217" > > > + y=3D"842.91852" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;f= ill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt= ;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"188.58519" > > > + y=3D"864.47125" > > > + id=3D"text4138-6-2-8"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-0" > > > + x=3D"188.58519" > > > + y=3D"864.47125" > > > + style=3D"font-size:15px;line-height:1.25;stroke-width:1px">= MMU > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8-5)" > > > + id=3D"rect4136-3-6-5-3-1" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(2.1450556,0,0,1.0052679,1.87637,843.51696= )" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-8-2);fill-opacity:1;s= troke:#000000;stroke-width:0.94937181" > > > + id=3D"rect4136-2-6-6-0" > > > + width=3D"216.8176" > > > + height=3D"32.16671" > > > + x=3D"275.09283" > > > + y=3D"922.5282" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;f= ill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt= ;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"347.81482" > > > + y=3D"943.23291" > > > + id=3D"text4138-6-2-8-8"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-0-5" > > > + x=3D"347.81482" > > > + y=3D"943.23291" > > > + style=3D"font-size:15px;line-height:1.25;stroke-width:1px">= Memory > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-8-6)" > > > + id=3D"rect4136-3-6-5-3-5" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.0104673,0,0,1.0052679,330.22737,762.960= 2)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-8-0);fill-opacity:1;s= troke:#000000;stroke-width:0.65159565" > > > + id=3D"rect4136-2-6-6-8" > > > + width=3D"102.13586" > > > + height=3D"32.16671" > > > + x=3D"458.93091" > > > + y=3D"841.9715" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;f= ill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt= ;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"490.68393" > > > + y=3D"863.52423" > > > + id=3D"text4138-6-2-8-6"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-0-2" > > > + x=3D"490.68393" > > > + y=3D"863.52423" > > > + style=3D"font-size:15px;line-height:1.25;stroke-width:1px">= IOMMU > > > + > > + style=3D"fill:#000000;stroke:#000000;stroke-width:0.6465112;f= ilter:url(#filter4169-3-5-4)" > > > + id=3D"rect4136-3-6-5-6" > > > + width=3D"101.07784" > > > + height=3D"31.998148" > > > + x=3D"128.74678" > > > + y=3D"80.648842" > > > + transform=3D"matrix(1.9884947,0,0,0.94903537,167.19229,661.38= 193)" /> > > > + > > + style=3D"fill:url(#linearGradient5032-3-84);fill-opacity:1;st= roke:#000000;stroke-width:0.88813609" > > > + id=3D"rect4136-2-6-2" > > > + width=3D"200.99274" > > > + height=3D"30.367374" > > > + x=3D"420.4675" > > > + y=3D"735.97351" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:12px;= line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;f= ill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt= ;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"441.95297" > > > + y=3D"755.9068" > > > + id=3D"text4138-6-2-9"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan4140-1-9-9" > > > + x=3D"441.95297" > > > + y=3D"755.9068" > > > + style=3D"font-size:15px;line-height:1.25;stroke-width:1px">= Hardware Accelerator > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-0-0)" > > > + d=3D"m 508.2914,766.55885 0.29362,76.03656" > > > + id=3D"path4661-6-1" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-e= nd:url(#marker4825-6-3)" > > > + d=3D"M 499.70201,876.47297 361.38296,920.80258" > > > + id=3D"path4661-1" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > > + > > > diff --git a/Documentation/warpdrive/wd_q_addr_space.svg b/Documentat= ion/warpdrive/wd_q_addr_space.svg > > > new file mode 100644 > > > index 000000000000..5e6cf8e89908 > > > --- /dev/null > > > +++ b/Documentation/warpdrive/wd_q_addr_space.svg > > > @@ -0,0 +1,359 @@ > > > + > > > + > > > + > > > + > > + xmlns:dc=3D"http://purl.org/dc/elements/1.1/" > > > + xmlns:cc=3D"http://creativecommons.org/ns#" > > > + xmlns:rdf=3D"http://www.w3.org/1999/02/22-rdf-syntax-ns#" > > > + xmlns:svg=3D"http://www.w3.org/2000/svg" > > > + xmlns=3D"http://www.w3.org/2000/svg" > > > + xmlns:sodipodi=3D"http://sodipodi.sourceforge.net/DTD/sodipodi-0.= dtd" > > > + xmlns:inkscape=3D"http://www.inkscape.org/namespaces/inkscape" > > > + width=3D"210mm" > > > + height=3D"124mm" > > > + viewBox=3D"0 0 210 124" > > > + version=3D"1.1" > > > + id=3D"svg8" > > > + inkscape:version=3D"0.92.3 (2405546, 2018-03-11)" > > > + sodipodi:docname=3D"wd_q_addr_space.svg"> > > > + > > + id=3D"defs2"> > > > + > > + inkscape:stockid=3D"Arrow1Mend" > > > + orient=3D"auto" > > > + refY=3D"0" > > > + refX=3D"0" > > > + id=3D"marker5428" > > > + style=3D"overflow:visible" > > > + inkscape:isstock=3D"true"> > > > + > > + id=3D"path5426" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:isstock=3D"true" > > > + style=3D"overflow:visible" > > > + id=3D"marker2922" > > > + refX=3D"0" > > > + refY=3D"0" > > > + orient=3D"auto" > > > + inkscape:stockid=3D"Arrow1Mend" > > > + inkscape:collect=3D"always"> > > > + > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + id=3D"path2920" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:stockid=3D"Arrow1Mstart" > > > + orient=3D"auto" > > > + refY=3D"0" > > > + refX=3D"0" > > > + id=3D"Arrow1Mstart" > > > + style=3D"overflow:visible" > > > + inkscape:isstock=3D"true"> > > > + > > + id=3D"path840" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + transform=3D"matrix(0.4,0,0,0.4,4,0)" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:stockid=3D"Arrow1Mend" > > > + orient=3D"auto" > > > + refY=3D"0" > > > + refX=3D"0" > > > + id=3D"Arrow1Mend" > > > + style=3D"overflow:visible" > > > + inkscape:isstock=3D"true" > > > + inkscape:collect=3D"always"> > > > + > > + id=3D"path843" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:stockid=3D"Arrow1Mstart" > > > + orient=3D"auto" > > > + refY=3D"0" > > > + refX=3D"0" > > > + id=3D"Arrow1Mstart-5" > > > + style=3D"overflow:visible" > > > + inkscape:isstock=3D"true"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path840-1" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + transform=3D"matrix(0.4,0,0,0.4,4,0)" /> > > > + > > > + > > + inkscape:stockid=3D"Arrow1Mend" > > > + orient=3D"auto" > > > + refY=3D"0" > > > + refX=3D"0" > > > + id=3D"Arrow1Mend-1" > > > + style=3D"overflow:visible" > > > + inkscape:isstock=3D"true"> > > > + > > + inkscape:connector-curvature=3D"0" > > > + id=3D"path843-0" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" /> > > > + > > > + > > + inkscape:isstock=3D"true" > > > + style=3D"overflow:visible" > > > + id=3D"marker2922-2" > > > + refX=3D"0" > > > + refY=3D"0" > > > + orient=3D"auto" > > > + inkscape:stockid=3D"Arrow1Mend" > > > + inkscape:collect=3D"always"> > > > + > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + id=3D"path2920-9" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:isstock=3D"true" > > > + style=3D"overflow:visible" > > > + id=3D"marker2922-27" > > > + refX=3D"0" > > > + refY=3D"0" > > > + orient=3D"auto" > > > + inkscape:stockid=3D"Arrow1Mend" > > > + inkscape:collect=3D"always"> > > > + > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + id=3D"path2920-0" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > + inkscape:isstock=3D"true" > > > + style=3D"overflow:visible" > > > + id=3D"marker2922-27-8" > > > + refX=3D"0" > > > + refY=3D"0" > > > + orient=3D"auto" > > > + inkscape:stockid=3D"Arrow1Mend" > > > + inkscape:collect=3D"always"> > > > + > > + transform=3D"matrix(-0.4,0,0,-0.4,-4,0)" > > > + style=3D"fill:#000000;fill-opacity:1;fill-rule:evenodd;stro= ke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" > > > + d=3D"M 0,0 5,-5 -12.5,0 5,5 Z" > > > + id=3D"path2920-0-0" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > > + > > > + > > + id=3D"base" > > > + pagecolor=3D"#ffffff" > > > + bordercolor=3D"#666666" > > > + borderopacity=3D"1.0" > > > + inkscape:pageopacity=3D"0.0" > > > + inkscape:pageshadow=3D"2" > > > + inkscape:zoom=3D"1.4" > > > + inkscape:cx=3D"401.66654" > > > + inkscape:cy=3D"218.12255" > > > + inkscape:document-units=3D"mm" > > > + inkscape:current-layer=3D"layer1" > > > + showgrid=3D"false" > > > + inkscape:window-width=3D"1916" > > > + inkscape:window-height=3D"1033" > > > + inkscape:window-x=3D"0" > > > + inkscape:window-y=3D"22" > > > + inkscape:window-maximized=3D"0" /> > > > + > > + id=3D"metadata5"> > > > + > > > + > > + rdf:about=3D""> > > > + image/svg+xml > > > + > > + rdf:resource=3D"http://purl.org/dc/dcmitype/StillImage" /> > > > + > > > + > > > + > > > + > > > + > > + inkscape:label=3D"Layer 1" > > > + inkscape:groupmode=3D"layer" > > > + id=3D"layer1" > > > + transform=3D"translate(0,-173)"> > > > + > > + style=3D"opacity:0.82999998;fill:none;fill-opacity:1;fill-rul= e:evenodd;stroke:#000000;stroke-width:0.4;stroke-miterlimit:4;stroke-dashar= ray:none;stroke-dashoffset:0;stroke-opacity:0.82745098" > > > + id=3D"rect815" > > > + width=3D"21.262758" > > > + height=3D"40.350552" > > > + x=3D"55.509361" > > > + y=3D"195.00098" > > > + ry=3D"0" /> > > > + > > + style=3D"opacity:0.82999998;fill:none;fill-opacity:1;fill-rul= e:evenodd;stroke:#000000;stroke-width:0.4;stroke-miterlimit:4;stroke-dashar= ray:none;stroke-dashoffset:0;stroke-opacity:0.82745098" > > > + id=3D"rect815-1" > > > + width=3D"21.24276" > > > + height=3D"43.732346" > > > + x=3D"55.519352" > > > + y=3D"235.26543" > > > + ry=3D"0" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"50.549229" > > > + y=3D"190.6078" > > > + id=3D"text1118"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116" > > > + x=3D"50.549229" > > > + y=3D"190.6078" > > > + style=3D"stroke-width:0.26458332px">queue file address spac= e > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"M 76.818568,194.95453 H 97.229281" > > > + id=3D"path1126" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"M 76.818568,235.20899 H 96.095361" > > > + id=3D"path1126-8" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"m 76.762111,278.99778 h 19.27678" > > > + id=3D"path1126-0" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"m 55.519355,265.20165 v 19.27678" > > > + id=3D"path1126-2" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + d=3D"m 76.762111,265.20165 v 19.27678" > > > + id=3D"path1126-2-1" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-start:url(#Arrow1Mstart);marker-end:url(#Arrow1Mend)" > > > + d=3D"m 87.590896,194.76554 0,39.87648" > > > + id=3D"path1126-2-1-0" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-start:url(#Arrow1Mstart-5);marker-end:url(#Arrow1Mend-1)" > > > + d=3D"m 82.48822,235.77596 v 42.90029" > > > + id=3D"path1126-2-1-0-8" > > > + inkscape:connector-curvature=3D"0" > > > + sodipodi:nodetypes=3D"cc" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-end:url(#marker2922)" > > > + d=3D"M 44.123633,195.3325 H 55.651907" > > > + id=3D"path2912" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"32.217381" > > > + y=3D"196.27745" > > > + id=3D"text2968"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan2966" > > > + x=3D"32.217381" > > > + y=3D"196.27745" > > > + style=3D"stroke-width:0.26458332px">offset 0 > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"91.199554" > > > + y=3D"216.03946" > > > + id=3D"text1118-5"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116-0" > > > + x=3D"91.199554" > > > + y=3D"216.03946" > > > + style=3D"stroke-width:0.26458332px">device region (mapped t= o device mmio or shared kernel driver memory) > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"86.188072" > > > + y=3D"244.50081" > > > + id=3D"text1118-5-6"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116-0-4" > > > + x=3D"86.188072" > > > + y=3D"244.50081" > > > + style=3D"stroke-width:0.26458332px">static share virtual me= mory region (for device without share virtual memory) > > > + > > + xml:space=3D"preserve" > > > + id=3D"flowRoot5699" > > > + style=3D"font-style:normal;font-weight:normal;font-size:11.25= px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:= 0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap= :butt;stroke-linejoin:miter;stroke-opacity:1"> > > + id=3D"flowRegion5701"> > > + id=3D"rect5703" > > > + width=3D"5182.8569" > > > + height=3D"385.71429" > > > + x=3D"34.285713" > > > + y=3D"71.09111" /> > > + id=3D"flowPara5705" /> > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-end:url(#marker2922-2)" > > > + d=3D"M 43.679028,206.85268 H 55.207302" > > > + id=3D"path2912-1" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-end:url(#marker2922-27)" > > > + d=3D"M 44.057004,224.23959 H 55.585278" > > > + id=3D"path2912-9" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"24.139778" > > > + y=3D"202.40636" > > > + id=3D"text1118-5-3"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116-0-6" > > > + x=3D"24.139778" > > > + y=3D"202.40636" > > > + style=3D"stroke-width:0.26458332px">device mmio region > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"17.010948" > > > + y=3D"216.73672" > > > + id=3D"text1118-5-3-3"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116-0-6-6" > > > + x=3D"17.010948" > > > + y=3D"216.73672" > > > + style=3D"stroke-width:0.26458332px">device kernel only reg= ion > > > + > > + style=3D"fill:none;fill-rule:evenodd;stroke:#000000;stroke-wi= dth:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1= ;marker-end:url(#marker2922-27-8)" > > > + d=3D"M 43.981087,235.35153 H 55.509361" > > > + id=3D"path2912-9-2" > > > + inkscape:connector-curvature=3D"0" /> > > > + > > + xml:space=3D"preserve" > > > + style=3D"font-style:normal;font-weight:normal;font-size:2.976= 5625px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spac= ing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;s= troke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > > > + x=3D"17.575975" > > > + y=3D"230.53285" > > > + id=3D"text1118-5-3-3-0"> > > + sodipodi:role=3D"line" > > > + id=3D"tspan1116-0-6-6-5" > > > + x=3D"17.575975" > > > + y=3D"230.53285" > > > + style=3D"stroke-width:0.26458332px">device user share regi= on > > > + > > > + > > > -- > > > 2.17.1 > > > --UBnjLfzoMQYIXCvq Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBAgAGBQJb7EaRAAoJEORje4g2clinNI8P/jUPtAcIb4SOHMe5ABK/2+XT t9pa8Pbk3b2W7r676oXl+OQdJ5U4F88m7qX8e0+JFsCRJNivYP7KhrPof3w5Mkc6 5XR1jCOqxEbg4K6nPd7rVtL7lMhRgcJ/e5jBhnllvYhaxPIVCOgN2QmYadbvqjOP 9lxPC9i0kisnMVX7cmNRJ8D7zjJngSQeeVKXQwFC3SjZpinbZfA2AX//pVXh2SCH HuEgHOXXO/xBdPORqHCiRJGARwNPrkulB5PJSo3LHbjVp3qJZm7H+bQ/JPkdczJt BkVP39ldEaJWlGhl+3F32bGNPiEVX1k4HWr3cW9Zm4/LHqMZ47F0KBFkLJbC0Pho b2/GjQx7o/zuXMsbrTJ2Rj+my+Q8+uh8EW4+D+MSolRNIObHY7c0DG0D3jD9ZsO2 ZEdk3SqMJXi0l5Uqul2pJEttKJUeNJjsYIxKYuwRGFhEbtuG7gIST3XjeeW3rBAy By/b+4a/UKmRr/auPyd9Wc47ftj/J0LeDdhnK/GYdybcMWQcZpkO4du3WIs/oL/X eUKLBm6NnpCRdYq5WR6FGrgG0wj+RFq1paNO4kUbCRFqer7KgkFg6m07puPj3m8s 0vIaKYp70UVVb/p9J2O4SxGXB21TrUD6LmEszY3EF/wxpphAqQ16299VJ1r9ZPnG x6u4g7ZllMk4wNj4Fcss =P052 -----END PGP SIGNATURE----- --UBnjLfzoMQYIXCvq--