summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--designs/mctp-standards.svg536
-rw-r--r--designs/mctp.md216
2 files changed, 752 insertions, 0 deletions
diff --git a/designs/mctp-standards.svg b/designs/mctp-standards.svg
new file mode 100644
index 0000000..cf5f339
--- /dev/null
+++ b/designs/mctp-standards.svg
@@ -0,0 +1,536 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1495.6182"
+ height="1069.0875"
+ viewBox="0 0 395.71564 282.86274"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.60692406"
+ inkscape:cx="823.7656"
+ inkscape:cy="600.24404"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1916"
+ inkscape:window-height="1161"
+ inkscape:window-x="0"
+ inkscape:window-y="18"
+ inkscape:window-maximized="0"
+ fit-margin-top="20"
+ fit-margin-left="20"
+ fit-margin-right="20"
+ fit-margin-bottom="20"
+ units="px" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-16.904944,296.36879)">
+ <rect
+ style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect836"
+ width="73.32737"
+ height="37.797626"
+ x="126.62202"
+ y="-77.423241"
+ rx="4.4125886"
+ ry="4.4125886" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="163.04317"
+ y="-54.415119"
+ id="text840"><tspan
+ sodipodi:role="line"
+ id="tspan838"
+ x="163.04317"
+ y="-54.415119"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">LPC</tspan></text>
+ <text
+ id="text4744"
+ y="-274.17047"
+ x="277.3479"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-274.17047"
+ x="277.3479"
+ id="tspan4742"
+ sodipodi:role="line">PLDM profiles</tspan></text>
+ <rect
+ ry="4.4125886"
+ rx="4.4125886"
+ y="-76.289314"
+ x="222.62798"
+ height="37.797626"
+ width="73.32737"
+ id="rect847"
+ style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text851"
+ y="-53.281193"
+ x="259.04913"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-53.281193"
+ x="259.04913"
+ id="tspan849"
+ sodipodi:role="line">PCIe VDM</tspan></text>
+ <rect
+ ry="4.4125886"
+ rx="4.4125886"
+ y="-131.47383"
+ x="126.62202"
+ height="41.577389"
+ width="168.95535"
+ id="rect855"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text859"
+ y="-108.46571"
+ x="210.74141"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-108.46571"
+ x="210.74141"
+ id="tspan857"
+ sodipodi:role="line">MCTP Base</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-94.354599"
+ x="210.74141"
+ sodipodi:role="line"
+ id="tspan878">DSP0236</tspan></text>
+ <rect
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect870"
+ width="168.95535"
+ height="41.577389"
+ x="126.62202"
+ y="-184.3905"
+ rx="4.4125886"
+ ry="4.4125886" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="210.74141"
+ y="-161.38239"
+ id="text874"><tspan
+ sodipodi:role="line"
+ id="tspan872"
+ x="210.74141"
+ y="-161.38239"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.28888893px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">PLDM Base</tspan><tspan
+ sodipodi:role="line"
+ x="210.74141"
+ y="-147.27127"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan880">DSP0240</tspan></text>
+ <rect
+ ry="4.4125886"
+ rx="4.4125886"
+ y="-267.3941"
+ x="71.059532"
+ height="66.901794"
+ width="56.318439"
+ id="rect882"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text886"
+ y="-254.44016"
+ x="98.670265"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan890"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-254.44016"
+ x="98.670265"
+ sodipodi:role="line">Redfish</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-247.3846"
+ x="98.670265"
+ sodipodi:role="line"
+ id="tspan4623">(PLDM variant)</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-240.32904"
+ x="98.670265"
+ sodipodi:role="line"
+ id="tspan4629" /><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-233.27348"
+ x="98.670265"
+ sodipodi:role="line"
+ id="tspan4637">DSP0218</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-226.21793"
+ x="98.670265"
+ sodipodi:role="line"
+ id="tspan4678">[WIP]</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="178.04527"
+ y="-254.44016"
+ id="text904"><tspan
+ sodipodi:role="line"
+ x="178.04527"
+ y="-254.44016"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan902">BIOS</tspan><tspan
+ sodipodi:role="line"
+ x="178.04527"
+ y="-245.62071"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan908">configuration</tspan><tspan
+ sodipodi:role="line"
+ x="178.04527"
+ y="-236.80127"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan910">&amp; control</tspan><tspan
+ sodipodi:role="line"
+ x="178.04527"
+ y="-227.98183"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4666" /><tspan
+ sodipodi:role="line"
+ x="178.04527"
+ y="-219.16237"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4670">DSP0247</tspan></text>
+ <rect
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#729fcf;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect914"
+ width="56.318439"
+ height="66.901794"
+ x="213.93448"
+ y="-267.3941"
+ rx="4.4125886"
+ ry="4.4125886" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="241.54523"
+ y="-254.44016"
+ id="text920"><tspan
+ sodipodi:role="line"
+ x="241.54523"
+ y="-254.44016"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan918">Platform</tspan><tspan
+ sodipodi:role="line"
+ x="241.54523"
+ y="-245.62071"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan924">monitoring</tspan><tspan
+ sodipodi:role="line"
+ x="241.54523"
+ y="-236.80127"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan926">&amp; control</tspan><tspan
+ sodipodi:role="line"
+ x="241.54523"
+ y="-227.98183"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4674" /><tspan
+ sodipodi:role="line"
+ x="241.54523"
+ y="-219.16237"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4676">DSP0248</tspan></text>
+ <rect
+ ry="4.4125886"
+ rx="4.4125886"
+ y="-267.3941"
+ x="277.43451"
+ height="66.901794"
+ width="56.318439"
+ id="rect4641"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#729fcf;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <text
+ id="text4649"
+ y="-254.44016"
+ x="305.04526"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan4647"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-254.44016"
+ x="305.04526"
+ sodipodi:role="line">FRU Data</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-245.62071"
+ x="305.04526"
+ sodipodi:role="line"
+ id="tspan4658" /><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-236.80127"
+ x="305.04526"
+ sodipodi:role="line"
+ id="tspan4662">DSP0257</tspan></text>
+ <rect
+ ry="4.4125886"
+ rx="4.4125886"
+ y="-267.3941"
+ x="150.43451"
+ height="66.901794"
+ width="56.318439"
+ id="rect4732"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#729fcf;stroke-width:2.765;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#3465a4;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4740"
+ width="263.82742"
+ height="96.384308"
+ x="142.11903"
+ y="-289.69467"
+ rx="4.4125886"
+ ry="4.4125886" />
+ <rect
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#729fcf;stroke-width:2.76489568;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4751"
+ width="56.318439"
+ height="66.901794"
+ x="340.93439"
+ y="-267.3941"
+ rx="4.4125886"
+ ry="4.4125886" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="368.54514"
+ y="-254.44016"
+ id="text4759"><tspan
+ sodipodi:role="line"
+ x="368.54514"
+ y="-254.44016"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4753">FW Update</tspan><tspan
+ id="tspan4755"
+ sodipodi:role="line"
+ x="368.54514"
+ y="-245.62071"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px" /><tspan
+ id="tspan4757"
+ sodipodi:role="line"
+ x="368.54514"
+ y="-236.80127"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">DSP0267</tspan></text>
+ <g
+ id="g4812">
+ <path
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0"
+ d="m 271.88098,-127.31634 h -3.9915 l 9.5353,7.45461 9.53531,-7.45461 h -3.9915 v -19.86002 h 3.9915 l -9.53531,-7.45461 -9.5353,7.45461 h 3.9915 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4787" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="350.14923"
+ y="-148.795"
+ id="text4796"><tspan
+ sodipodi:role="line"
+ x="350.14923"
+ y="-148.795"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4790">PLDM over MCTP</tspan><tspan
+ id="tspan4798"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-139.97556"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">binding</tspan><tspan
+ id="tspan4792"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-131.15611"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px" /><tspan
+ id="tspan4794"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-122.33666"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">DSP0241</tspan></text>
+ <ellipse
+ ry="25.754292"
+ rx="47.829399"
+ cy="-139.24619"
+ cx="350.57373"
+ id="path4800"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.56500006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4802"
+ d="m 282.77611,-137.93333 19.80129,-1.21586"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <path
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0"
+ d="m 271.88098,-72.283006 h -3.9915 l 9.5353,7.45461 9.53531,-7.45461 h -3.9915 v -19.86002 h 3.9915 l -9.53531,-7.45461 -9.5353,7.45461 h 3.9915 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4814" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="350.14923"
+ y="-93.761665"
+ id="text4824"><tspan
+ sodipodi:role="line"
+ x="350.14923"
+ y="-93.761665"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4816">MCTP PCIe VDM</tspan><tspan
+ id="tspan4818"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-84.942223"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">transport binding</tspan><tspan
+ id="tspan4820"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-76.122772"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px" /><tspan
+ id="tspan4822"
+ sodipodi:role="line"
+ x="350.14923"
+ y="-67.303329"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">DSP0238</tspan></text>
+ <ellipse
+ ry="25.754292"
+ rx="47.829399"
+ cy="-84.212852"
+ cx="350.57373"
+ id="ellipse4826"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.56500006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4828"
+ d="m 282.77611,-82.899996 19.80129,-1.21586"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4888"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#959595;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 182.69325,-72.76478 h 3.9915 l -9.5353,7.45461 -9.53531,-7.45461 h 3.9915 V -92.6248 h -3.9915 l 9.53531,-7.45461 9.5353,7.45461 h -3.9915 z"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#959595;stroke-width:1.56500006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="ellipse4890"
+ cx="-71.345757"
+ cy="-45.334488"
+ rx="47.829399"
+ ry="25.754292"
+ transform="scale(-1,1)" />
+ <path
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#959595;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 171.79812,-83.38177 -52.45603,37.681652"
+ id="path4892"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ id="text4858"
+ y="-117.57417"
+ x="70.168396"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ id="tspan4850"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-117.57417"
+ x="70.168396"
+ sodipodi:role="line">MCTP Serial</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-108.75473"
+ x="70.168396"
+ sodipodi:role="line"
+ id="tspan4852">transport binding</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-99.93528"
+ x="70.168396"
+ sodipodi:role="line"
+ id="tspan4854" /><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ y="-91.115837"
+ x="70.168396"
+ sodipodi:role="line"
+ id="tspan4856">DSP0253</tspan></text>
+ <path
+ sodipodi:nodetypes="ccccccccccc"
+ inkscape:connector-curvature="0"
+ d="m 149.50126,-73.470764 h 3.9915 l -9.5353,7.45461 -9.53531,-7.45461 h 3.9915 v -19.86002 h -3.9915 l 9.53531,-7.454606 9.5353,7.454606 h -3.9915 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4832" />
+ <ellipse
+ ry="25.754292"
+ rx="47.829399"
+ cy="-106.56726"
+ cx="-70.80851"
+ id="ellipse4844"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.56500006;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ transform="scale(-1,1)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4846"
+ d="M 138.60613,-84.087754 118.49658,-106.11097"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.56500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="70.515785"
+ y="-57.249187"
+ id="text4920"><tspan
+ sodipodi:role="line"
+ x="70.515785"
+ y="-57.249187"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
+ id="tspan4912">MCTP LPC</tspan><tspan
+ id="tspan4914"
+ sodipodi:role="line"
+ x="70.515785"
+ y="-48.429741"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">transport binding?</tspan><tspan
+ id="tspan4916"
+ sodipodi:role="line"
+ x="70.515785"
+ y="-39.610298"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px" /><tspan
+ id="tspan4918"
+ sodipodi:role="line"
+ x="70.515785"
+ y="-30.790852"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05555534px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px">unspec</tspan></text>
+ </g>
+</svg>
diff --git a/designs/mctp.md b/designs/mctp.md
new file mode 100644
index 0000000..6985cef
--- /dev/null
+++ b/designs/mctp.md
@@ -0,0 +1,216 @@
+# OpenBMC platform communication channel: MCTP & PLDM
+
+Author: Jeremy Kerr <jk@ozlabs.org> <jk>
+
+## Problem Description
+
+Currently, we have a few different methods of communication between host
+and BMC. This is primarily IPMI-based, but also includes a few
+hardware-specific side-channels, like hiomap. On OpenPOWER hardware at
+least, we've definitely started to hit some of the limitations of IPMI
+(for example, we have need for >255 sensors), as well as the hardware
+channels that IPMI typically uses.
+
+This design aims to use the Management Component Transport Protocol
+(MCTP) to provide a common transport layer over the multiple channels
+that OpenBMC platforms provide. Then, on top of MCTP, we have the
+opportunity to move to newer host/BMC messaging protocols to overcome
+some of the limitations we've encountered with IPMI.
+
+## Background and References
+
+Separating the "transport" and "messaging protocol" parts of the current
+stack allows us to design these parts separately. Currently, IPMI
+defines both of these; we currently have BT and KCS (both defined as
+part of the IPMI 2.0 standard) as the transports, and IPMI itself as the
+messaging protocol.
+
+Some efforts of improving the hardware transport mechanism of IPMI have
+been attempted, but not in a cross-implementation manner so far. This
+does not address some of the limitations of the IPMI data model.
+
+MCTP defines a standard transport protocol, plus a number of separate
+physical layer bindings for the actual transport of MCTP packets. These
+are defined by the DMTF's Platform Management Working group; standards
+are available at:
+
+ https://www.dmtf.org/standards/pmci
+
+The following diagram shows how these standards map to the areas of
+functionality that we may want to implement for OpenBMC. The DSP numbers
+provided are references to DMTF standard documents.
+
+![](mctp-standards.svg)
+
+One of the key concepts here is that separation of transport protocol
+from the physical layer bindings; this means that an MCTP "stack" may be
+using either a I2C, PCI, Serial or custom hardware channel, without the
+higher layers of that stack needing to be aware of the hardware
+implementation. These higher levels only need to be aware that they are
+communicating with a certain entity, defined by an Entity ID (MCTP EID).
+These entities may be any element of the platform that communicates
+over MCTP - for example, the host device, the BMC, or any other
+system peripheral - static or hot-pluggable.
+
+This document is focussed on the "transport" part of the platform design.
+While this does enable new messaging protocols (mainly PLDM), those
+components are not covered in detail much; we will propose those parts
+in separate design efforts. For example, the PLDM design at
+[pldm-stack.md].
+
+As part of the design, the references to MCTP "messages" and "packets"
+are intentional, to match the definitions in the MCTP standard. MCTP
+messages are the higher-level data transferred between MCTP endpoints,
+which packets are typically smaller, and are what is sent over the
+hardware. Messages that are larger than the hardware Maximum Transmit
+Unit (MTU) are split into individual packets by the transmit
+implementation, and reassembled at the receive implementation.
+
+## Requirements
+
+Any channel between host and BMC should:
+
+ - Have a simple serialisation and deserialisation format, to enable
+ implementations in host firmware, which have widely varying runtime
+ capabilities
+
+ - Allow different hardware channels, as we have a wide variety of
+ target platforms for OpenBMC
+
+ - Be usable over simple hardware implementations, but have a facility
+ for higher bandwidth messaging on platforms that require it.
+
+ - Ideally, integrate with newer messaging protocols
+
+## Proposed Design
+
+The MCTP core specification just provides the packetisation, routing and
+addressing mechanisms. The actual transmit/receive of those packets is
+up to the hardware binding of the MCTP transport.
+
+For OpenBMC, we would introduce a "MCTP+applications" daemon, which
+implements the transport over a configurable hardware channel (eg.,
+Serial UART, I2C or PCI), and provides handlers for any incoming MCTP
+application requests. This daemon is responsible for the packetisation
+and routing of MCTP messages from external endpoints, and handling the
+application layer requests.
+
+This daemon has a few components:
+
+ 1) the core MCTP stack
+
+ 2) one or more binding implementations (eg, MCTP-over-serial), which
+ interact with the hardware channel(s).
+
+ 3) one or more MCTP message handlers (eg PLDM or NVME-MI), to handle incoming
+ MCTP messages of specific types
+
+ 4) the core application, consisting of main loop, handler management and
+ MCTP binding management
+
+The proposed implementation here is to produce an MCTP "library" which
+provides the packetisation and routing functions, between:
+
+ - an "upper" messaging transmit/receive interface, for tx/rx of a full
+ message to a specific endpoint (ie, (1) above)
+
+ - a "lower" hardware binding for transmit/receive of individual
+ packets, providing a method for the core to tx/rx each packet to
+ hardware, and defines the parameters of the common packetisation
+ code (ie. (2) above).
+
+The lower interface would be plugged in to one of a number of
+hardware-specific binding implementations. Most of these would be
+included in the library source tree, but others can be plugged-in too,
+perhaps where the physical layer implementation does not make sense to
+include in the platform-agnostic library.
+
+The reason for a library is to allow the same MCTP implementation to be
+used in both OpenBMC and host firmware; the library should be
+bidirectional. To allow this, the library would be written in portable C
+(structured in a way that can be compiled as "extern C" in C++
+codebases), and be able to be configured to suit those runtime
+environments (for example, POSIX IO may not be available on all
+platforms; we should be able to compile the library to suit). The
+licence for the library should also allow this re-use; a dual Apache &
+GPLv2+ licence may be best.
+
+These "lower" binding implementations may have very different methods of
+transferring packets to the physical layer. For example, a serial
+binding implementation for running on a Linux environment may be
+implemented through read()/write() syscalls to a PTY device. An I2C
+binding for use in low-level host firmware environments may interact
+directly with hardware registers to perform packet transfers.
+
+The application-specific handlers (listed as (3) above) implement the
+actual functionality provided over the MCTP channel. Each of these would
+register with the MCTP core library to receive MCTP messages of a
+certain type, and would transmit MCTP messages of that same type. While
+the handlers themselves are out of scope for this design, there are a
+few elements that are important here:
+
+ - Handlers are likely to perform IO to other components of the BMC
+ (such as sending and receiving dbus messages). To allow multiple
+ handlers to co-exist, this IO should be implemented using
+ non-blocking interfaces (eg, using poll()).
+
+ - Handlers should be implemented as separate components from the main
+ daemon, so as not to require completely separate functionality (such
+ as PLDM and NVME-MI) existing in the same codebase. Having the core
+ daemon load handlers as shared objects would allow this.
+
+MCTP is intended to be an optional component of OpenBMC. Platforms using
+OpenBMC are free to adopt it as they see fit.
+
+## Alternatives Considered
+
+There have been two main alternatives to this approach:
+
+Continue using IPMI, but start making more use of OEM extensions to
+suit the requirements of new platforms. However, given that the IPMI
+standard is no longer under active development, we would likely end up
+with a large amount of platform-specific customisations. This also does
+not solve the hardware channel issues in a standard manner.
+
+Redfish between host and BMC. This would mean that host firmware needs a
+HTTP client, a TCP/IP stack, a JSON (de)serialiser, and support for
+Redfish schema. While this may be present in some environments (for
+example, UEFI-based firmware), this is may not be feasible for all host
+firmware implementations (for example, OpenPOWER). It's possible that we
+could run a simplified Redfish stack - indeed, MCTP has a proposal for a
+Redfish-over-MCTP channel (DSP0218), which uses simplified serialisation
+format and no requirement on HTTP. However, this may involve a large
+amount of complexity in host firmware.
+
+In terms of an MCTP daemon implementation, an alternative is to have the
+core MCTP stack exist in a different process from the application
+handlers. For example, the MCTP core could be only responsible for
+proxying MCTP messages to and from a dbus interface, as is currently
+done for IPMI messages. However, the complexity, messaging overheads and
+state management involved here has indicated that the added separation
+has not been a clear advantage.
+
+## Impacts
+
+Development would be required to implement the MCTP transport, plus any
+new users of the MCTP messaging (eg, a PLDM implementation). These would
+somewhat duplicate the work we have in IPMI handlers.
+
+We'd want to keep IPMI running in parallel, so the "upgrade" path should
+be fairly straightforward.
+
+Design and development needs to involve potential host, management
+controllers and managed device implementations.
+
+## Testing
+
+For the core MCTP library, we are able to run tests there in complete
+isolation (I have already been able to run a prototype MCTP stack
+through the afl fuzzer) to ensure that the core transport protocol
+works.
+
+For MCTP hardware bindings, we would develop channel-specific tests that
+would be run in CI on both host and BMC.
+
+For the OpenBMC MCTP daemon implementation, testing models would depend
+on the structure we adopt in the design section.
OpenPOWER on IntegriCloud