[dpdk-dev] [PATCH 2/3] doc: add guide to use virtio_user as exceptional path

Jianfeng Tan jianfeng.tan at intel.com
Tue Jan 24 08:34:07 CET 2017


Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
---
 .../howto/img/virtio_user_as_exceptional_path.svg  | 1260 ++++++++++++++++++++
 doc/guides/howto/index.rst                         |    1 +
 .../howto/virtio_user_as_exceptional_path.rst      |  142 +++
 3 files changed, 1403 insertions(+)
 create mode 100644 doc/guides/howto/img/virtio_user_as_exceptional_path.svg
 create mode 100644 doc/guides/howto/virtio_user_as_exceptional_path.rst

diff --git a/doc/guides/howto/img/virtio_user_as_exceptional_path.svg b/doc/guides/howto/img/virtio_user_as_exceptional_path.svg
new file mode 100644
index 0000000..09ae9ac
--- /dev/null
+++ b/doc/guides/howto/img/virtio_user_as_exceptional_path.svg
@@ -0,0 +1,1260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 960 720"
+   height="720"
+   width="960"
+   xml:space="preserve"
+   id="svg2"
+   version="1.1"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+     id="defs6"><clipPath
+       id="clipPath18"
+       clipPathUnits="userSpaceOnUse"><path
+         style="clip-rule:evenodd"
+         id="path16"
+         d="M 0,1.2207e-4 H 720 V 540.00012 H 0 Z" /></clipPath><clipPath
+       id="clipPath56"
+       clipPathUnits="userSpaceOnUse"><path
+         style="clip-rule:evenodd"
+         id="path54"
+         d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+       id="mask60"
+       height="1"
+       width="1"
+       y="0"
+       x="0"
+       maskUnits="userSpaceOnUse"><image
+         id="image62"
+         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADxCAAAAAB6hPR+AAAAAXNCSVQI5gpbmQAAA8hJREFUeJzt2NGu2joQQNGxHUD9/68tiWfuQwiHtidttR8up9JeSCjAi7U1xoEI6f/UTq71mfq4bK8Xlvu9ej49W7XHQ79Tj0fEEa5F271zWV9e7fZyS0REi9Zb7703t+upiqrMzEe5JSIiWu9jjNG72/VUVeWcc859qy6xb9SxXJbLGG7WU1U5122Niow6tmrr43K9Xi+jW+5M5dzu96h8TlyL1vpYrt9u18WRO5W5raNVZrZqdWzVPpbr7dvtMjxZT1TN9R65jd6z1cvhsFyut9t1MdyJqm20uS3j0ed5O9LHcrleF7/kTlT2lpdl9Eehx8RF672PsRjuTGXk0ns7btj2cNH2dL0b7kTFo87rVo2IaO343fWupX1xR6DHy+XHjwx36qc0/W0L+ccZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOGg5Zd36g2r+Ac9J64O71zNF/ZznuV4O6oyM6O1dy3ta6vMzKo40u3hKiorc87ohvtc5TbnzKzHd9kSEVFRlXNbR1ua4T5XOdftpdxj4irnut5bDifuROVc7/d1y/yYuGqVc1u/t1yH3c5kbvfv923mfkLsW7VybveW6xgtLPep+hi5iIhYIqpF5Vwjt6V3w52oqjm3dZ1ZFfXYqhE5o3LrvRnuREVlzm1uWT8cDrMye7PbuYqszDyO1b1Ti9Z6229FLPepevnx8BEuWrRw3P6goqKOG+AjlbP2Nyqef4K8xLLbn/kXiN7lP02eH7rylorJAAAAAElFTkSuQmCC"
+         preserveAspectRatio="none"
+         style="image-rendering:optimizeSpeed"
+         height="1"
+         width="1" /></mask><clipPath
+       id="clipPath72"
+       clipPathUnits="userSpaceOnUse"><path
+         style="clip-rule:evenodd"
+         id="path70"
+         d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+       id="mask76"
+       height="1"
+       width="1"
+       y="0"
+       x="0"
+       maskUnits="userSpaceOnUse"><image
+         id="image78"
+         xlink:href="data:image/png;base64,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"
+         preserveAspectRatio="none"
+         style="image-rendering:optimizeSpeed"
+         height="1"
+         width="1" /></mask><clipPath
+       id="clipPath150"
+       clipPathUnits="userSpaceOnUse"><path
+         style="clip-rule:evenodd"
+         id="path148"
+         d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+       id="mask154"
+       height="1"
+       width="1"
+       y="0"
+       x="0"
+       maskUnits="userSpaceOnUse"><image
+         id="image156"
+         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAA1CAAAAABUja+7AAAAAXNCSVQI5gpbmQAABBlJREFUeJztm1F3nDoMhGck27n//98WW9J9gG2TNLAk0EJz9D3snpxlvRM0yLIwQJIkSZIkSZIkSZIkSZIkSZIkSXIXeLWA5CIIIPYfuvuwnWMmt4cAGMC+mO4xCfHTd2mTbwHBOfKB2BHT5ybhY8xA7BkxuT0ESRKIiD02KU/HWwYkIhzBdMk3gBQRMiI8Ip7OENsmmS0iFJIRTvd0yT8PQYqqCuHu7v7UJlsmWbKIiqgQ4WbAQZfkYup6CIqWUlTgbmbmHo4tm2yYZJ65RFVVlXAbAOCHJSbXQlK11FYUYWMMM3NuVhKrJvllkVJKUYZ3zm47Ot+kTTb4CyeHEC21vdTC8NH76DaMvjHnrJmEc3GjpZRaSxXGECBgPGqSm3nkZnL+iktEa20vrQpsjKmXLjbMfTWyKyZ5FDe11NpqLULvRATF42hNcq+w3EvNkxN0yqKBFC2ttZemcOt1mop2cqzXm6uZhKJaa22ttVoKYYJwUNb9tksgfp6Dy1dJfLy+C8qFwrjlknj3/uUfoWiprbVWGFZ7KT+EQKxXJes1yTxxtZfWalHGoJuDFkcyye8RuZiHoIeqswLxRS1Pz9A5qUS0tFprLYSriBAR7k6u2ORjkxAkpdTW/ntptarQEdU8aH5IJ++TSICHnDdR2X1D4+/IecspN0YI0aKqKiLz7RY3G2ri+Nx0Q1BE5pVNLUowTFQ1IAcyySObnrFGOge+S++Bc1ZwX1WzbZIg4vDCYe6gc169Pv4gt/LXk47r8u1fyhiHJozXHrneJsu/9er6maVdpSzAWLua58/POG8k6XNH3uHuZvaz7/oxKyYJRkS4mQ0VYdA93N3djheuuIlFZvjqdZlqLpX2pCI5YTYkJSBazCDho0/TNPVh/tk+STDC3YYIgQhVxBg2+jLWcW7jkt9ick4gvgbfvb/lrARMijpEBQVhY+o/Fpf42vWxOt2EG7kUNUUlbJqmPg071Cd5VbTewyMfcLV/t7skJ0gjVB0ijAEfY+rT1PvYiuyaSQJhCHcbo7dSBN6naZrOySS3NsmNlZ2jjTANCGNI+Oi99z5suK/vFlqvSRwR4TZG7aUofSxJ6Qyh3z0Of44zMgk9AMKVYWP0MYb5lkfWMwnDCXez0WspImF96mP4WZnkztxd3zEIATj30G3YMDNftqitsF6TMGAMcbGhRQRm2xPXp/jeYbg3QQcQPogw86cW2eqTBABYuLhoVyLMzObtKadIPWmc5LMw4ABcGOHu8Xxn2nZnjCAofLT3zeOUkiS5FpJcuhu79rg+a59y3jUwr4YjDt3eS24CMW9tRwSeW2TfIxXE3Nnf4bnkn2B5TGZvm3/nw1mPtnVa5Jvwfm/EroNPHDJJkiRJkiRJkiRJkiRJkiRJkiRJkj/F/w4AXPMpJ5LPAAAAAElFTkSuQmCC"
+         preserveAspectRatio="none"
+         style="image-rendering:optimizeSpeed"
+         height="1"
+         width="1" /></mask><linearGradient
+       id="linearGradient206"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.91"
+       x2="561.70001"
+       y1="191.32001"
+       x1="561.70001"><stop
+         id="stop192"
+         offset="0"
+         style="stop-opacity:1;stop-color:#8cc640" /><stop
+         id="stop194"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#8cc640" /><stop
+         id="stop196"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#d6df27" /><stop
+         id="stop198"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#d6df27" /><stop
+         id="stop200"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#d6df27" /><stop
+         id="stop202"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#8cc640" /><stop
+         id="stop204"
+         offset="1"
+         style="stop-opacity:1;stop-color:#8cc640" /></linearGradient><linearGradient
+       id="linearGradient228"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="570.53003"
+       y1="118.12"
+       x1="570.53003"><stop
+         id="stop214"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop216"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop218"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop220"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop222"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop224"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop226"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient248"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="570.53003"
+       y1="118.12"
+       x1="570.53003"><stop
+         id="stop234"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop236"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop238"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop240"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop242"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop244"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop246"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient268"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="572.66998"
+       y1="118.12"
+       x1="572.66998"><stop
+         id="stop254"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop256"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop258"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop260"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop262"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop264"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop266"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient288"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="572.66998"
+       y1="118.12"
+       x1="572.66998"><stop
+         id="stop274"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop276"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop278"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop280"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop282"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop284"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop286"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient308"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="566.17999"
+       y1="118.12"
+       x1="566.17999"><stop
+         id="stop294"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop296"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop298"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop300"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop302"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop304"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop306"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient328"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="566.17999"
+       y1="118.12"
+       x1="566.17999"><stop
+         id="stop314"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop316"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop318"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop320"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop322"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop324"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop326"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient348"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="568.34003"
+       y1="118.12"
+       x1="568.34003"><stop
+         id="stop334"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop336"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop338"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop340"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop342"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop344"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop346"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient368"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="568.34003"
+       y1="118.12"
+       x1="568.34003"><stop
+         id="stop354"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop356"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop358"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop360"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop362"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop364"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop366"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient388"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="574.87"
+       y1="118.12"
+       x1="574.87"><stop
+         id="stop374"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop376"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop378"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop380"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop382"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop384"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop386"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient408"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="574.87"
+       y1="118.12"
+       x1="574.87"><stop
+         id="stop394"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop396"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop398"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop400"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop402"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop404"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop406"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient428"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="577.07001"
+       y1="118.12"
+       x1="577.07001"><stop
+         id="stop414"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop416"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop418"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop420"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop422"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop424"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop426"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient448"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="577.07001"
+       y1="118.12"
+       x1="577.07001"><stop
+         id="stop434"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop436"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop438"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop440"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop442"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop444"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop446"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient468"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="579.21997"
+       y1="118.12"
+       x1="579.21997"><stop
+         id="stop454"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop456"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop458"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop460"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop462"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop464"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop466"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient488"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="111.97"
+       x2="579.21997"
+       y1="118.12"
+       x1="579.21997"><stop
+         id="stop474"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop476"
+         offset="0.025"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop478"
+         offset="0.475"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop480"
+         offset="0.5"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop482"
+         offset="0.525"
+         style="stop-opacity:1;stop-color:#f27422" /><stop
+         id="stop484"
+         offset="0.975"
+         style="stop-opacity:1;stop-color:#fdd900" /><stop
+         id="stop486"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+       id="linearGradient498"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="145.06"
+       x2="569.13"
+       y1="149.61"
+       x1="569.13"><stop
+         id="stop494"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop496"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient508"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="145.06"
+       x2="571.33002"
+       y1="149.61"
+       x1="571.33002"><stop
+         id="stop504"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop506"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient518"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="145.06"
+       x2="573.46997"
+       y1="149.61"
+       x1="573.46997"><stop
+         id="stop514"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop516"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient528"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="145.06"
+       x2="575.66998"
+       y1="149.61"
+       x1="575.66998"><stop
+         id="stop524"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop526"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient538"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="145.06"
+       x2="577.82001"
+       y1="149.61"
+       x1="577.82001"><stop
+         id="stop534"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop536"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient548"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="122.7"
+       x2="569.13"
+       y1="127.31"
+       x1="569.13"><stop
+         id="stop544"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop546"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient558"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="122.7"
+       x2="571.33002"
+       y1="127.31"
+       x1="571.33002"><stop
+         id="stop554"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop556"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient568"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="122.7"
+       x2="573.46997"
+       y1="127.31"
+       x1="573.46997"><stop
+         id="stop564"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop566"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient578"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="122.7"
+       x2="575.66998"
+       y1="127.31"
+       x1="575.66998"><stop
+         id="stop574"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop576"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient588"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="122.7"
+       x2="577.82001"
+       y1="127.31"
+       x1="577.82001"><stop
+         id="stop584"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop586"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient598"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="127.21"
+       x2="580.46997"
+       y1="130.82001"
+       x1="580.46997"><stop
+         id="stop594"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop596"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient608"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="130.69"
+       x2="580.46997"
+       y1="134.3"
+       x1="580.46997"><stop
+         id="stop604"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop606"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient618"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="134.10001"
+       x2="580.46997"
+       y1="137.71001"
+       x1="580.46997"><stop
+         id="stop614"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop616"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient628"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="137.57001"
+       x2="580.46997"
+       y1="141.17999"
+       x1="580.46997"><stop
+         id="stop624"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop626"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient638"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="140.95"
+       x2="580.46997"
+       y1="144.56"
+       x1="580.46997"><stop
+         id="stop634"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop636"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient648"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="127.21"
+       x2="566.35999"
+       y1="130.82001"
+       x1="566.35999"><stop
+         id="stop644"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop646"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient658"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="130.69"
+       x2="566.35999"
+       y1="134.3"
+       x1="566.35999"><stop
+         id="stop654"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop656"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient668"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="134.10001"
+       x2="566.35999"
+       y1="137.71001"
+       x1="566.35999"><stop
+         id="stop664"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop666"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient678"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="137.57001"
+       x2="566.35999"
+       y1="141.17999"
+       x1="566.35999"><stop
+         id="stop674"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop676"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient688"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="140.95"
+       x2="566.35999"
+       y1="144.56"
+       x1="566.35999"><stop
+         id="stop684"
+         offset="0"
+         style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+         id="stop686"
+         offset="1"
+         style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+       id="linearGradient720"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="139.67999"
+       x2="539.79999"
+       y1="149.31"
+       x1="539.79999"><stop
+         id="stop716"
+         offset="0"
+         style="stop-opacity:1;stop-color:#4f81bd" /><stop
+         id="stop718"
+         offset="1"
+         style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><linearGradient
+       id="linearGradient730"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="132.83"
+       x2="539.79999"
+       y1="142.59"
+       x1="539.79999"><stop
+         id="stop726"
+         offset="0"
+         style="stop-opacity:1;stop-color:#4f81bd" /><stop
+         id="stop728"
+         offset="1"
+         style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><linearGradient
+       id="linearGradient740"
+       spreadMethod="pad"
+       gradientUnits="userSpaceOnUse"
+       y2="126.34"
+       x2="539.79999"
+       y1="136.17"
+       x1="539.79999"><stop
+         id="stop736"
+         offset="0"
+         style="stop-opacity:1;stop-color:#4f81bd" /><stop
+         id="stop738"
+         offset="1"
+         style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><clipPath
+       id="clipPath750"
+       clipPathUnits="userSpaceOnUse"><path
+         style="clip-rule:evenodd"
+         id="path748"
+         d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+       id="mask754"
+       height="1"
+       width="1"
+       y="0"
+       x="0"
+       maskUnits="userSpaceOnUse"><image
+         id="image756"
+         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAGlCAAAAABloAHVAAAAAXNCSVQI5gpbmQAABOVJREFUeJztnGtzrSoMht8EcP3/n6uQ5HxA195VLi5n3LU9ZKbXmadJaIgQIcCQIUOG/FSh5u/tY5Lyh7XYIkkgEACD1dESSSAiIpiZ1dECSSBiZoKpmlZRVyCJ2HnnHXPNUgDwJZXsvHcME0h9lI4kiNj5EBw0AWZyWieI2Idp8hCGmWlF6YHMXobXy0MYqsoVpQU/2Xk/vV6ehExEtaJ0TxIROR+m6eVJoCIiFaUFa53zYZomT2KSUhI1LSn1e46YnZ/CFALYJKWYRMnoiB6tZedDCCF4sEmKIYmWwB1JBGbngw/OOZD3PnifRPvk6qbzzjER2HnvnWMCHT39Epo51p1zzAQA7x9KM+prUK/zi8jMTM0MYM5TrmstAJiJJDJYEjWzIlcgzVRTimSOVGJMomqn4tZMJTJBgyOVOC8xaTZ7L19mNmHNIzAzS2lZlmWOSYpav+aE7FFOPyYpzvOyJDlFAmQwAwymKS5LXFUe0V0eyjoBIoJJjI0h2mcwWq0mJtOUUqpO0MPYkkHJzFRJ1Uy1ljcPidHMsOZoYP2+BB5JvDmz7Q+cJs/JDaSh/nCtk9nNDvooPwd5G2kGEKGSMe/ROcjnkVvGI6rnhWoMXdR5Rgb5DaTlp8PnOcGQwQs6uzLIf042dslNMq+/sD5WKmH0ID8HeQ+5LcGtvcR4iLWDvJV8b6uuPh3qj6Me2ZRB/nvyvdj8bIVhOLHYfJKfg+yQlysRdgJ9kJ+DPEdSa/vQ26/UY+Fxfg7yDnKr2zaKGA+ydpC3krmyeWHXMVYYv4hsvupv6zxRxHiOn4PskO+9w6drzQwaDGgUMR7j5yDvJNciRmPj+iRrB3kbae9XZqOu+X8nt0rExznhXcT4XGdfBvkd5LsS8fk6oVPEeJafg7yL7BcxnmTtIO8krVPEeJa1g7yJXC8dbNcX+uepdziAKvgkPwfZJv86T4HLFW6qLk4e4+cgPyE/P6W3FTGu6xzkbyBPFDEeZO0g7yS7RYx69aNXxHiUn4Psk1sl4sLJ3faRnIf5Ochz5Od7h/cNulHN+i1k/U5kh8zbz2oR42l+DvIeMl9dbp2neJK1g7yL3BUxrtWkrrxf6cggv4W09qmcxgrj4n6lL4P8TvLC7eO/Ly9f0lmTQf4ocl1i1JPCo6wd5K1ku4jR1NksYjzNz0G2yV5ni14MXdHZkzvIP4F+svvVRtEKU/509LpIUu5qxrR+YRgOfckKfe1AuTFY8ME7slqhqNQRL4M+TCE4pj/HpahDZtCHaZqm4Jm4MkTFvnbE3k/TNIXAJo6ZCUi2691WGiFi58L0ek3Bs2lyuQmg4usYlcc2W/sKniGOYSqJaDe45f8nciO+4BnKZOIK7dcqJIjYOe8Zarr2cNv9P4vk2jCLmRlg2n7uW2tmmhv35ZZoqpLbi3VGyABTEUki4shURZKI6qm4NVWJKQYRQFKMMYocGn6V4vbd344ZmuI8z3NMstdZiXgiZmYmaJrneV6SHKwt6sSGkskflSdm2dpxgZhhEpeyyprOtRsfTOI8x5j02OSwTG6VHdO0xGWJBZVVnblRnUlKS4xSUFkfIeTwkRSTlFTWIt4ABUwJJiLFjni1uQLbSNVj5K3uVOwFERMAKzfha7w/oeysoQy27rasebL2rq7ZRq7fqHXIkCFDfqT8B3SvgewCV1AkAAAAAElFTkSuQmCC"
+         preserveAspectRatio="none"
+         style="image-rendering:optimizeSpeed"
+         height="1"
+         width="1" /></mask></defs><g
+     transform="matrix(1.3333333,0,0,-1.3333333,0,720)"
+     id="g10"><g
+       id="g12"><g
+         clip-path="url(#clipPath18)"
+         id="g14"><path
+           id="path20"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></g></g><path
+       id="path22"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 367.71,188.53 h 262.2 v 207.72 h -262.2 z" /><path
+       id="path24"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 367.71,188.53 h 262.2 v 207.72 h -262.2 z" /><text
+       id="text28"
+       style="font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,446.62,377.76)"><tspan
+         id="tspan26"
+         y="0"
+         x="0 11.07 20.285999 31.356001 40.716 44.981998 53.604 63.054001">DPDK app</tspan></text>
+<path
+       id="path30"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="M 382.72,289.31 H 488.4 v 33.512 H 382.72 Z" /><path
+       id="path32"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="M 382.72,289.31 H 488.4 v 33.512 H 382.72 Z" /><text
+       id="text36"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,405.12,301.34)"><tspan
+         id="tspan34"
+         y="0"
+         x="0">v</tspan></text>
+<text
+       id="text40"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,411.48,301.34)"><tspan
+         id="tspan38"
+         y="0"
+         x="0 3.2291999 8.1291599 12.83256 16.06176 23.50296 26.619841 33.822361 45.826561">irtio PMD</tspan></text>
+<path
+       id="path42"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 382.72,329.23 h 226.19 v 35.725 H 382.72 Z" /><path
+       id="path44"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 382.72,329.23 h 226.19 v 35.725 H 382.72 Z" /><text
+       id="text48"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,472.94,342.38)"><tspan
+         id="tspan46"
+         y="0"
+         x="0 6.8515201 13.689 22.435921 31.07052 37.922039">ETHDEV</tspan></text>
+<g
+       id="g50"><g
+         clip-path="url(#clipPath56)"
+         id="g52"><g
+           transform="matrix(112.44,0,0,86.76,379.32,196.92)"
+           id="g58"><image
+             id="image64"
+             mask="url(#mask60)"
+             xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADxCAYAAABf76uiAAAABHNCSVQICAgIfAhkiAAAAy5JREFUeJzt1EENACAQwLAD/55BBSFZWgV7bc3MGYCg/TsA4BWDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IOsCPooC4e92qzkAAAAASUVORK5CYII="
+             transform="matrix(1,0,0,-1,0,1)"
+             preserveAspectRatio="none"
+             style="image-rendering:optimizeSpeed"
+             height="1"
+             width="1" /></g></g></g><g
+       id="g66"><g
+         clip-path="url(#clipPath72)"
+         id="g68"><g
+           transform="matrix(103.44,0,0,52.44,387.48,212.76)"
+           id="g74"><image
+             id="image80"
+             mask="url(#mask76)"
+             xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAR8AAACSCAYAAAB8Ds7/AAAABHNCSVQICAgIfAhkiAAAAeZJREFUeJzt1DEBACAMwLCBf8/ggh4kCnp1zcwZgMd2HQD8yXyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5A4gI6gwIjTtkfJQAAAABJRU5ErkJggg=="
+             transform="matrix(1,0,0,-1,0,1)"
+             preserveAspectRatio="none"
+             style="image-rendering:optimizeSpeed"
+             height="1"
+             width="1" /></g></g></g><path
+       id="path82"
+       style="fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="M 382.72,201.86 H 488.4 v 79.973 H 382.72 Z" /><text
+       id="text86"
+       style="font-variant:normal;font-weight:normal;font-size:15.98400021px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,400.56,243.58)"><tspan
+         id="tspan84"
+         y="0"
+         x="0 7.2247682 10.901088 16.479504 21.834145 25.542433 33.966 41.862095 50.253696 56.503441 64.46347">virtio_user</tspan></text>
+<path
+       id="path88"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 388.2,205.78 h 94.2 v 29.411 h -94.2 z" /><text
+       id="text92"
+       style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,404.38,216.7)"><tspan
+         id="tspan90"
+         y="0"
+         x="0">v</tspan></text>
+<text
+       id="text96"
+       style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,409.42,216.7)"><tspan
+         id="tspan94"
+         y="0"
+         x="0 5.7628798 11.63616 15.9528">host</tspan></text>
+<text
+       id="text100"
+       style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,431.26,216.7)"><tspan
+         id="tspan98"
+         y="0"
+         x="0 5.2881598 11.04 16.328159 22.08 25.7784 31.309441">adapter</tspan></text>
+<g
+       id="g102"><path
+         id="path104"
+         style="fill:none;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:9, 6.75;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 303,450 V 115.49" /></g><text
+       id="text108"
+       style="font-style:italic;font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,322.37,422.09)"><tspan
+         id="tspan106"
+         y="0"
+         x="0 11.556 18.486 27.09 33.264 37.332001 44.334 53.532001 62.784 70.092003">User space</tspan></text>
+<text
+       id="text112"
+       style="font-style:italic;font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,192.82,422.09)"><tspan
+         id="tspan110"
+         y="0"
+         x="0 9 17.604 23.778 33.029999 41.633999 45.720001 49.896 56.897999 66.096001 75.348 82.655998">Kernel space</tspan></text>
+<path
+       id="path114"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 108,136.61 h 96.243 v 35.725 H 108 Z" /><path
+       id="path116"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 108,136.61 h 96.243 v 35.725 H 108 Z" /><text
+       id="text120"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,128.95,149.71)"><tspan
+         id="tspan118"
+         y="0"
+         x="0">v</tspan></text>
+<text
+       id="text124"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,135.31,149.71)"><tspan
+         id="tspan122"
+         y="0"
+         x="0 7.3148398 14.71392 20.16144">host</tspan></text>
+<text
+       id="text128"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,160.15,149.71)"><tspan
+         id="tspan126"
+         y="0"
+         x="0">-</tspan></text>
+<text
+       id="text132"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,164.47,149.71)"><tspan
+         id="tspan130"
+         y="0"
+         x="0 7.3148398 14.15232">net</tspan></text>
+<path
+       id="path134"
+       style="fill:none;stroke:#4a7ebb;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 204.24,154.47 h 231.32 v 47.39" /><text
+       id="text138"
+       style="font-variant:normal;font-weight:normal;font-size:12.02400017px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#31859c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,201.72,345.29)"><tspan
+         id="tspan136"
+         y="0"
+         x="0 6.8176079 13.190328 19.526976 24.10812">Vhost</tspan></text>
+<text
+       id="text142"
+       style="font-variant:normal;font-weight:normal;font-size:12.02400017px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#31859c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,232.44,345.29)"><tspan
+         id="tspan140"
+         y="0"
+         x="0 5.3987761 9.4628878 15.81156 19.887695 25.875648 31.635143">kthread</tspan></text>
+<g
+       id="g144"><g
+         clip-path="url(#clipPath150)"
+         id="g146"><g
+           transform="matrix(197.28,0,0,19.08,194.88,294.6)"
+           id="g152"><image
+             id="image158"
+             mask="url(#mask154)"
+             xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAA1CAYAAABx5vBnAAAABHNCSVQICAgIfAhkiAAAAPxJREFUeJzt1jEBACAAw7CBf88go0+ioGfPtjcAgNCtAwAADAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAuQ8gKQFpLMZ6HgAAAABJRU5ErkJggg=="
+             transform="matrix(1,0,0,-1,0,1)"
+             preserveAspectRatio="none"
+             style="image-rendering:optimizeSpeed"
+             height="1"
+             width="1" /></g></g></g><path
+       id="path160"
+       style="fill:#404040;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 209.24,305.28 168.48,0.28 v 1 l -168.48,-0.28 z m 1,3.5 -6,-3.01 6.01,-2.99 z m 166.49,-5.72 5.99,3.01 -6,2.99 z" /><path
+       id="path162"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 108,287.91 h 96.243 v 35.725 H 108 Z" /><path
+       id="path164"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 108,287.91 h 96.243 v 35.725 H 108 Z" /><text
+       id="text168"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,146.83,301.03)"><tspan
+         id="tspan166"
+         y="0"
+         x="0 4.5630002 11.28816">tap</tspan></text>
+<text
+       id="text172"
+       style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,333.86,163.13)"><tspan
+         id="tspan170"
+         y="0"
+         x="0">c</tspan></text>
+<text
+       id="text176"
+       style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,338.66,163.13)"><tspan
+         id="tspan174"
+         y="0"
+         x="0 6.348 12.588 16.752001 20.976 27.336 30.323999 33.192001 39.528 45.900002 50.063999">ontrol path</tspan></text>
+<text
+       id="text180"
+       style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,226.66,324.41)"><tspan
+         id="tspan178"
+         y="0"
+         x="0 6.336 12.708 16.788 23.124001 25.788 32.124001 38.495998 42.66">data path</tspan></text>
+<path
+       id="path182"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 503.23,289.11 h 105.68 v 33.512 H 503.23 Z" /><path
+       id="path184"
+       style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 503.23,289.11 h 105.68 v 33.512 H 503.23 Z" /><text
+       id="text188"
+       style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       transform="matrix(1,0,0,-1,522.17,301.13)"><tspan
+         id="tspan186"
+         y="0"
+         x="0 7.3990798 12.10248 19.47348 26.395201 31.29516 34.468201 41.628601 53.632801 62.267399">other PMDs</tspan></text>
+<g
+       id="g190"><path
+         id="path208"
+         style="fill:url(#linearGradient206);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 533.57,151.61 v -32.52 h 30.9 v -7.18 h 16.72 v 7.18 h 8.64 v 32.52 z" /></g><path
+       id="path210"
+       style="fill:none;stroke:#4bacc6;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+       d="m 533.57,151.61 v -32.52 h 30.9 v -7.18 h 16.72 v 7.18 h 8.64 v 32.52 z" /><g
+       id="g212"><path
+         id="path230"
+         style="fill:url(#linearGradient228);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 569.96,111.97 h 1.1414 v 3.0749 H 569.96 Z" /></g><g
+       id="g232"><path
+         id="path250"
+         style="fill:url(#linearGradient248);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 571.11,115.05 v -3.08 h -1.15 v 3.08" /></g><g
+       id="g252"><path
+         id="path270"
+         style="fill:url(#linearGradient268);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 572.1,111.97 h 1.1414 v 3.0749 H 572.1 Z" /></g><g
+       id="g272"><path
+         id="path290"
+         style="fill:url(#linearGradient288);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 573.24,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g292"><path
+         id="path310"
+         style="fill:url(#linearGradient308);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,111.97 h 1.1414 v 3.0749 H 565.61 Z" /></g><g
+       id="g312"><path
+         id="path330"
+         style="fill:url(#linearGradient328);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 566.75,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g332"><path
+         id="path350"
+         style="fill:url(#linearGradient348);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 567.77,111.97 h 1.1414 v 3.0749 H 567.77 Z" /></g><g
+       id="g352"><path
+         id="path370"
+         style="fill:url(#linearGradient368);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 568.91,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g372"><path
+         id="path390"
+         style="fill:url(#linearGradient388);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 574.3,111.97 h 1.1414 v 3.0749 H 574.3 Z" /></g><g
+       id="g392"><path
+         id="path410"
+         style="fill:url(#linearGradient408);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 575.44,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g412"><path
+         id="path430"
+         style="fill:url(#linearGradient428);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 576.5,111.97 h 1.1414 v 3.0749 H 576.5 Z" /></g><g
+       id="g432"><path
+         id="path450"
+         style="fill:url(#linearGradient448);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 577.64,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g452"><path
+         id="path470"
+         style="fill:url(#linearGradient468);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 578.65,111.97 h 1.1414 v 3.0749 H 578.65 Z" /></g><g
+       id="g472"><path
+         id="path490"
+         style="fill:url(#linearGradient488);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.79,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+       id="g492"><path
+         id="path500"
+         style="fill:url(#linearGradient498);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 568.55,145.06 h 1.1625 v 2.2728 H 568.55 Z" /></g><g
+       id="g502"><path
+         id="path510"
+         style="fill:url(#linearGradient508);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 570.75,145.06 h 1.1625 v 2.2728 H 570.75 Z" /></g><g
+       id="g512"><path
+         id="path520"
+         style="fill:url(#linearGradient518);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 572.9,145.06 h 1.1414 v 2.2728 H 572.9 Z" /></g><g
+       id="g522"><path
+         id="path530"
+         style="fill:url(#linearGradient528);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 575.1,145.06 h 1.1414 v 2.2728 H 575.1 Z" /></g><g
+       id="g532"><path
+         id="path540"
+         style="fill:url(#linearGradient538);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 577.24,145.06 h 1.1625 v 2.2728 H 577.24 Z" /></g><g
+       id="g542"><path
+         id="path550"
+         style="fill:url(#linearGradient548);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 568.55,122.7 h 1.1625 v 2.3062 H 568.55 Z" /></g><g
+       id="g552"><path
+         id="path560"
+         style="fill:url(#linearGradient558);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 570.75,122.7 h 1.1625 v 2.3062 H 570.75 Z" /></g><g
+       id="g562"><path
+         id="path570"
+         style="fill:url(#linearGradient568);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 572.9,122.7 h 1.1414 v 2.3062 H 572.9 Z" /></g><g
+       id="g572"><path
+         id="path580"
+         style="fill:url(#linearGradient578);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 575.1,122.7 h 1.1414 v 2.3062 H 575.1 Z" /></g><g
+       id="g582"><path
+         id="path590"
+         style="fill:url(#linearGradient588);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 577.24,122.7 h 1.1625 v 2.3062 H 577.24 Z" /></g><g
+       id="g592"><path
+         id="path600"
+         style="fill:url(#linearGradient598);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.75,127.21 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+       id="g602"><path
+         id="path610"
+         style="fill:url(#linearGradient608);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.75,130.69 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+       id="g612"><path
+         id="path620"
+         style="fill:url(#linearGradient618);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.75,134.1 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+       id="g622"><path
+         id="path630"
+         style="fill:url(#linearGradient628);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.75,137.57 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+       id="g632"><path
+         id="path640"
+         style="fill:url(#linearGradient638);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 579.75,140.95 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+       id="g642"><path
+         id="path650"
+         style="fill:url(#linearGradient648);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,127.21 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+       id="g652"><path
+         id="path660"
+         style="fill:url(#linearGradient658);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,130.69 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+       id="g662"><path
+         id="path670"
+         style="fill:url(#linearGradient668);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,134.1 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+       id="g672"><path
+         id="path680"
+         style="fill:url(#linearGradient678);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,137.57 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+       id="g682"><path
+         id="path690"
+         style="fill:url(#linearGradient688);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 565.61,140.95 h 1.5007 v 1.8048 H 565.61 Z" /></g><path
+       id="path692"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 567.07,125.01 h 12.682 v 20.054 H 567.07 Z" /><path
+       id="path694"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 553.84,139.68 h 8.0742 v 4.8129 H 553.84 Z" /><path
+       id="path696"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 553.84,132.83 h 8.0742 v 4.8798 H 553.84 Z" /><path
+       id="path698"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 553.84,126.34 h 8.0742 v 4.9131 H 553.84 Z" /><path
+       id="path700"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 585.33,141.89 h 3.2551 v 4.8463 H 585.33 Z" /><path
+       id="path702"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 585.33,135.84 h 3.2551 v 4.8129 H 585.33 Z" /><path
+       id="path704"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 585.33,129.75 h 3.2551 v 4.8129 H 585.33 Z" /><path
+       id="path706"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 585.37,123.67 h 3.2128 v 4.8129 H 585.37 Z" /><path
+       id="path708"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 544.83,139.68 h 8.0953 v 4.8129 H 544.83 Z" /><path
+       id="path710"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 544.83,132.83 h 8.0953 v 4.8798 H 544.83 Z" /><path
+       id="path712"
+       style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       d="m 544.83,126.34 h 8.0953 v 4.9131 H 544.83 Z" /><g
+       id="g714"><path
+         id="path722"
+         style="fill:url(#linearGradient720);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 535.76,139.68 h 8.0742 v 4.8129 H 535.76 Z" /></g><g
+       id="g724"><path
+         id="path732"
+         style="fill:url(#linearGradient730);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 535.76,132.83 h 8.0742 v 4.8798 H 535.76 Z" /></g><g
+       id="g734"><path
+         id="path742"
+         style="fill:url(#linearGradient740);fill-opacity:1;fill-rule:evenodd;stroke:none"
+         d="m 535.76,126.34 h 8.0742 v 4.9131 H 535.76 Z" /></g><g
+       id="g744"><g
+         clip-path="url(#clipPath750)"
+         id="g746"><g
+           transform="matrix(20.52,0,0,151.56,546.72,145.08)"
+           id="g752"><image
+             id="image758"
+             mask="url(#mask754)"
+             xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAGlCAYAAABAy14JAAAABHNCSVQICAgIfAhkiAAAAeFJREFUeJztzwENACEQwLDj/XsGF3xSVgXbmpk9uO/vgBuaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ8MXkAIv0ESS94HpcAAAAASUVORK5CYII="
+             transform="matrix(1,0,0,-1,0,1)"
+             preserveAspectRatio="none"
+             style="image-rendering:optimizeSpeed"
+             height="1"
+             width="1" /></g></g></g><path
+       id="path760"
+       style="fill:#404040;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 557.31,161.27 -1.67,122.83 1,0.02 1.67,-122.84 z m 3.48,1.05 -2.92,-6.04 -3.08,5.95 z m -7.64,120.75 2.92,6.04 3.08,-5.96 z" /></g></svg>
\ No newline at end of file
diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst
index db4016a..737d0f9 100644
--- a/doc/guides/howto/index.rst
+++ b/doc/guides/howto/index.rst
@@ -40,3 +40,4 @@ HowTo Guides
     flow_bifurcation
     pvp_reference_benchmark
     virtio_user_for_container_networking
+    virtio_user_as_exceptional_path
diff --git a/doc/guides/howto/virtio_user_as_exceptional_path.rst b/doc/guides/howto/virtio_user_as_exceptional_path.rst
new file mode 100644
index 0000000..9c1ca89
--- /dev/null
+++ b/doc/guides/howto/virtio_user_as_exceptional_path.rst
@@ -0,0 +1,142 @@
+..  BSD LICENSE
+    Copyright(c) 2016 Intel Corporation. All rights reserved.
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _virtio_user_as_excpetional_path:
+
+Virtio_user as Exceptional Path
+===============================
+
+The virtual device, virtio_user, was originally introduced with vhost-user
+backend, as a high performance solution for IPC (Inter-Process Communication)
+and user space container networking.
+
+Virtio_user with vhost-kernel backend is a solution for exceptional path,
+such as KNI which exchanges packets with kernel networking stack. This
+solution is very promising in:
+
+*   Maintenance
+
+    All kernel modules needed by this solution, vhost and vhost-net (kernel),
+    are upstreamed and extensively used kernel module.
+
+*   Features
+
+    vhost-net is born to be a networking solution, which has lots of networking
+    related featuers, like multi queue, tso, multi-seg mbuf, etc.
+
+*   Performance
+
+    similar to KNI, this solution would use one or more kthreads to
+    send/receive packets from user space DPDK applications, which has little
+    impact on user space polling thread (except that it might enter into kernel
+    space to wake up those kthreads if necessary).
+
+The overview of an application using virtio_user as exceptional path is shown
+in :numref:`figure_virtio_user_as_exceptional_path`.
+
+.. _figure_virtio_user_as_exceptional_path:
+
+.. figure:: img/virtio_user_as_exceptional_path.*
+
+   Overview of a DPDK app using virtio_user as excpetional path
+
+
+Sample Usage
+------------
+
+As a prerequisite, the vhost/vhost-net kernel CONFIG should be chosen before
+compiling the kernel and those kernel modules should be inserted.
+
+#.  Compile DPDK and bind a physical NIC to igb_uio/uio_pci_generic/vfio-pci.
+
+    This physical NIC is for communicating with outside.
+
+#.  Run testpmd.
+
+    .. code-block:: console
+
+        $(testpmd) -c 0xc -n 4 \
+		--vdev=virtio_user0,path=/dev/vhost-net,queue_size=1024 \
+		-- -i --txqflags=0x0 --disable-hw-vlan --enable-lro --crc-strip
+		--enable-rx-cksum --rxd=1024 --txd=1024
+
+    This command runs testpmd with two ports, one physical NIC to communicate
+    with outside, and one virtio_user to communicate with kernel.
+
+* ``--enable-lro``
+
+    This is used to negotiate VIRTIO_NET_F_GUEST_TSO4 and
+    VIRTIO_NET_F_GUEST_TSO6 feature so that large packets from kernel can be
+    transmitted DPDK application and further TSOed by physical NIC.
+
+* ``--enable-rx-cksum``
+
+    This is used to negotiate VIRTIO_NET_F_GUEST_CSUM so that packets from
+    kernel can be deemed as valid Rx checksumed.
+
+* ``queue_size``
+
+    256 by default. To avoid shortage of descriptors, we can increase it to 1024.
+
+* ``queues``
+
+    Number of multi-queues. Each qeueue will be served by a kthread. For example:
+
+    .. code-block:: console
+
+        $(testpmd) -c 0xc -n 4 \
+		--vdev=virtio_user0,path=/dev/vhost-net,queues=2,queue_size=1024 \
+		-- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+		--crc-strip --enable-rx-cksum --txq=2 --rxq=2 --rxd=1024 \
+		--txd=1024
+
+#. Start testpmd:
+
+    .. code-block:: console
+
+        (testpmd) start
+
+#.  Configure IP address and start tap:
+
+    .. code-block:: console
+
+        ifconfig tap0 1.1.1.1/24 up
+
+.. note::
+
+    The tap device will be named tap0, tap1, etc, by kernel.
+
+Then, all traffic from physical NIC can be forwarded into kernel stack, and all
+traffic on the tap0 can be sent out from physical NIC.
+
+Limitations
+-----------
+
+This solution is only available on Linux systems.
-- 
2.7.4



More information about the dev mailing list