From e2d3653976c90262828ebd03b39c6d937a47df96 Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Thu, 1 Aug 2019 13:48:08 -0700 Subject: [PATCH] doc: continue doc restructuring Changing the folder structure will cause too many broken links for external references (from other sites). So, let's put the content back where it was before the reorg, and instead use the new persona-based navigation to point to documents in the original locations. Also, introduce redirects for some documents that no longer exits. Signed-off-by: David B. Kinder --- doc/.known-issues/doc/redirect.conf | 4 + doc/conf.py | 17 +++- doc/contribute/images/ACRN-favicon-32x32.png | Bin 1607 -> 0 bytes doc/contribute/images/ACRN_Logo_200w.png | Bin 16396 -> 0 bytes doc/contribute/images/ACRN_Logo_300w.png | Bin 23801 -> 0 bytes doc/contribute/images/ACRN_Logo_56h.png | Bin 13024 -> 0 bytes doc/contribute/images/ACRNlogo.png | Bin 6665 -> 0 bytes doc/contribute/index.rst | 22 +++--- doc/develop/index.rst | 9 +-- .../GVT-g-porting.rst | 0 .../VBSK-analysis.rst | 0 .../asm_coding_guidelines.rst | 0 .../c_coding_guidelines.rst | 0 .../coding_guidelines.rst | 0 .../contribute_guidelines.rst | 0 .../doc_guidelines.rst | 0 .../graphviz.rst | 0 .../hld/hld-APL_GVT-g.rst | 0 .../hld/hld-devicemodel.rst | 0 .../hld/hld-emulated-devices.rst | 0 .../hld/hld-hypervisor.rst | 0 .../hld/hld-overview.rst | 0 .../hld/hld-power-management.rst | 0 .../hld/hld-security.rst | 0 .../hld/hld-trace-log.rst | 0 .../hld/hld-virtio-devices.rst | 0 .../hld/hld-vm-management.rst | 0 .../hld/hld-vsbl.rst | 0 .../hld/hv-config.rst | 0 .../hld/hv-console.rst | 0 .../hld/hv-cpu-virt.rst | 0 .../hld/hv-dev-passthrough.rst | 0 .../hld/hv-hypercall.rst | 0 .../hld/hv-interrupt.rst | 0 .../hld/hv-io-emulation.rst | 0 .../hld/hv-ioc-virt.rst | 0 .../hld/hv-memmgt.rst | 0 .../hld/hv-partitionmode.rst | 0 .../hld/hv-pm.rst | 0 .../hld/hv-startup.rst | 0 .../hld/hv-timer.rst | 0 .../hld/hv-virt-interrupt.rst | 0 .../hld/hv-vt-d.rst | 0 .../hld/images/APL_GVT-g-DM.png | Bin .../hld/images/APL_GVT-g-access-patterns.png | Bin .../hld/images/APL_GVT-g-api-forwarding.png | Bin .../hld/images/APL_GVT-g-arch.png | Bin .../hld/images/APL_GVT-g-direct-display.png | Bin .../hld/images/APL_GVT-g-display-virt.png | Bin .../hld/images/APL_GVT-g-full-pic.png | Bin .../hld/images/APL_GVT-g-graphics-arch.png | Bin .../hld/images/APL_GVT-g-hyper-dma.png | Bin .../hld/images/APL_GVT-g-indirect-display.png | Bin .../hld/images/APL_GVT-g-interrupt-virt.png | Bin .../hld/images/APL_GVT-g-ive-use-case.png | Bin .../APL_GVT-g-mediated-pass-through.png | Bin .../hld/images/APL_GVT-g-mem-part.png | Bin .../hld/images/APL_GVT-g-pass-through.png | Bin .../hld/images/APL_GVT-g-per-vm-shadow.png | Bin .../hld/images/APL_GVT-g-perf-critical.png | Bin .../hld/images/APL_GVT-g-plane-based.png | Bin .../images/APL_GVT-g-scheduling-policy.png | Bin .../hld/images/APL_GVT-g-scheduling.png | Bin .../hld/images/APL_GVT-g-shared-shadow.png | Bin .../hld/images/APL_GVT-g-workload.png | Bin .../hld/images/config-image103.png | Bin .../hld/images/console-image41.png | Bin .../hld/images/console-image93.png | Bin .../hld/images/dm-image108.png | Bin .../hld/images/dm-image26.png | Bin .../hld/images/dm-image33.png | Bin .../hld/images/dm-image36.png | Bin .../hld/images/dm-image43.png | Bin .../hld/images/dm-image52.png | Bin .../hld/images/dm-image74.png | Bin .../hld/images/dm-image75.png | Bin .../hld/images/dm-image80.png | Bin .../hld/images/dm-image83.png | Bin .../hld/images/dm-image94.png | Bin .../hld/images/dm-image96.png | Bin .../hld/images/dm-image97.png | Bin .../hld/images/dm-image99.png | Bin .../hld/images/hld-image104.png | Bin .../hld/images/hld-image107.png | Bin .../hld/images/hld-image17.png | Bin .../hld/images/hld-image35.png | Bin .../hld/images/hld-image38.png | Bin .../hld/images/hld-image47.png | Bin .../hld/images/hld-image68.png | Bin .../hld/images/hld-image7.png | Bin .../hld/images/hld-image82.png | Bin .../hld/images/hld-pm-image28.png | Bin .../hld/images/hld-pm-image62.png | Bin .../hld/images/interrupt-image2.png | Bin .../hld/images/interrupt-image3.png | Bin .../hld/images/interrupt-image39.png | Bin .../hld/images/interrupt-image46.png | Bin .../hld/images/interrupt-image48.png | Bin .../hld/images/interrupt-image66.png | Bin .../hld/images/interrupt-image76.png | Bin .../hld/images/interrupt-image89.png | Bin .../hld/images/ioc-image1.png | Bin .../hld/images/ioc-image10.png | Bin .../hld/images/ioc-image12.png | Bin .../hld/images/ioc-image13.png | Bin .../hld/images/ioc-image14.png | Bin .../hld/images/ioc-image15.png | Bin .../hld/images/ioc-image16.png | Bin .../hld/images/ioc-image17.png | Bin .../hld/images/ioc-image18.png | Bin .../hld/images/ioc-image19.png | Bin .../hld/images/ioc-image2.png | Bin .../hld/images/ioc-image20.png | Bin .../hld/images/ioc-image21.png | Bin .../hld/images/ioc-image22.png | Bin .../hld/images/ioc-image24.png | Bin .../hld/images/ioc-image3.png | Bin .../hld/images/ioc-image4.png | Bin .../hld/images/ioc-image49.png | Bin .../hld/images/ioc-image5.png | Bin .../hld/images/ioc-image6.png | Bin .../hld/images/ioc-image65.png | Bin .../hld/images/ioc-image7.png | Bin .../hld/images/ioc-image8.png | Bin .../hld/images/ioc-image9.png | Bin .../hld/images/ioem-image100.png | Bin .../hld/images/ioem-image101.png | Bin .../hld/images/ioem-image106.png | Bin .../hld/images/ioem-image92.png | Bin .../hld/images/log-image50.png | Bin .../hld/images/log-image59.png | Bin .../hld/images/log-image73.png | Bin .../hld/images/mem-image1.png | Bin .../hld/images/mem-image18.png | Bin .../hld/images/mem-image2.png | Bin .../hld/images/mem-image3.png | Bin .../hld/images/mem-image45.png | Bin .../hld/images/mem-image5.png | Bin .../hld/images/mem-image6.png | Bin .../hld/images/mem-image69.png | Bin .../hld/images/mem-image7.png | Bin .../hld/images/mem-image8.png | Bin .../hld/images/mem-image84.png | Bin .../hld/images/network-virt-arch.png | Bin .../images/network-virt-sos-infrastruct.png | Bin .../hld/images/over-image11.png | Bin .../hld/images/over-image110.png | Bin .../hld/images/over-image13.png | Bin .../hld/images/over-image15.png | Bin .../hld/images/over-image21.png | Bin .../hld/images/over-image29.png | Bin .../hld/images/over-image34.png | Bin .../hld/images/over-image4.png | Bin .../hld/images/over-image85.png | Bin .../hld/images/partition-image1.png | Bin .../hld/images/partition-image13.png | Bin .../hld/images/partition-image14.png | Bin .../hld/images/partition-image16.png | Bin .../hld/images/partition-image18.png | Bin .../hld/images/partition-image20.png | Bin .../hld/images/partition-image3.png | Bin .../hld/images/partition-image7.png | Bin .../hld/images/passthru-image102.png | Bin .../hld/images/passthru-image22.png | Bin .../hld/images/passthru-image30.png | Bin .../hld/images/passthru-image42.png | Bin .../hld/images/passthru-image72.png | Bin .../hld/images/passthru-image77.png | Bin .../hld/images/passthru-image86.png | Bin .../hld/images/passthru-image91.png | Bin .../hld/images/passthru-image98.png | Bin .../hld/images/pm-image24-105.png | Bin .../hld/images/rand-virt.png | Bin .../hld/images/security-image1.png | Bin .../hld/images/security-image10.png | Bin .../hld/images/security-image11.png | Bin .../hld/images/security-image12.png | Bin .../hld/images/security-image13.png | Bin .../hld/images/security-image14.png | Bin .../hld/images/security-image2.png | Bin .../hld/images/security-image3.png | Bin .../hld/images/security-image4.png | Bin .../hld/images/security-image5.png | Bin .../hld/images/security-image6.png | Bin .../hld/images/security-image7.png | Bin .../hld/images/security-image8.png | Bin .../hld/images/security-image9.png | Bin .../hld/images/static-core-image1.png | Bin .../hld/images/static-core-image2.png | Bin .../hld/images/uart-image1.png | Bin .../hld/images/usb-image10.png | Bin .../hld/images/usb-image31.png | Bin .../hld/images/usb-image51.png | Bin .../hld/images/virtint-image64.png | Bin .../hld/images/virtio-blk-image01.png | Bin .../hld/images/virtio-blk-image02.png | Bin .../hld/images/virtio-console-arch.png | Bin .../hld/images/virtio-hld-image0.png | Bin .../hld/images/virtio-hld-image1.png | Bin .../hld/images/virtio-hld-image2.png | Bin .../hld/images/virtio-hld-image3.png | Bin .../hld/images/virtio-hld-image4.png | Bin .../hld/images/virtio-hld-image5.png | Bin .../hld/images/virtio-hld-image53.png | Bin .../hld/images/virtio-hld-image54.png | Bin .../hld/images/virtio-hld-image58.png | Bin .../hld/images/virtio-hld-image6.png | Bin .../hld/images/virtio-hld-image60.png | Bin .../hld/images/virtio-hld-image61.png | Bin .../hld/images/virtio-hld-image7.png | Bin .../hld/images/virtio-hld-image71.png | Bin .../hld/images/virtio-hld-image8.png | Bin .../hld/images/vt-d-image19.png | Bin .../hld/images/vt-d-image40.png | Bin .../hld/images/vt-d-image44.png | Bin .../hld/images/vt-d-image90.png | Bin .../hld/images/watchdog-image1.png | Bin .../hld/images/watchdog-image2.png | Bin .../hld/index.rst | 0 .../hld/random-virt-hld.rst | 0 .../hld/uart-virt-hld.rst | 0 .../hld/usb-virt-hld.rst | 0 .../hld/virtio-blk.rst | 0 .../hld/virtio-console.rst | 0 .../hld/virtio-input.rst | 0 .../hld/virtio-net.rst | 0 .../hld/virtio-rnd.rst | 0 .../hld/watchdog-hld.rst | 0 .../images/GVT-g-porting-image1.png | Bin .../images/boot-flow.dot | 0 .../boot_information_parsing_module.png | Bin .../images/circle-square.dot | 0 .../images/ept-hierarchy.png | Bin .../images/gaspump.dot | 0 .../images/modularity-architecture.png | Bin .../images/node-shape-edges.dot | 0 .../images/record.dot | 0 .../images/trusty-arch.png | Bin .../images/trusty-boot-flow.dot | 0 .../images/vbsk-image1.png | Bin .../images/vbsk-image2.png | Bin .../images/vbsk-image3.png | Bin ..._of_error_detection_and_error_handling.png | Bin doc/{contribute => developer-guides}/l1tf.rst | 0 .../modularity.rst | 0 .../sw_design_guidelines.rst | 0 .../trusty.rst | 0 doc/extensions/html_redirects.py | 74 ++++++++++++++++++ .../acrn_quick_setup.sh | 0 doc/{try => getting-started}/apl-nuc.rst | 0 .../building-from-source.rst | 0 .../KBL-serial-port-header-to-RS232-cable.jpg | Bin .../images/KBL-serial-port-header.png | Bin .../images/USB-to-TTL-serial-cable.png | Bin .../images/gsg-successful-boot.png | Bin .../images/the-bottom-side-of-UP2-board.png | Bin .../images/the-connection-of-serial-port.png | Bin .../images/up2-gui.png | Bin doc/{try => getting-started}/up2.rst | 0 doc/glossary.rst | 53 +++++++++++-- .../images/IVI-block.png | Bin .../images/VMX-brief.png | Bin .../images/architecture.png | Bin .../images/boot-flow.dot | 0 .../images/boot-flow.png | Bin .../images/device-model.png | Bin .../images/device-passthrough.png | Bin .../images/io-emulation-path.png | Bin .../images/virtio-architecture.png | Bin .../images/virtio-framework-kernel.png | Bin .../images/virtio-framework-userland.png | Bin .../intro.rst => introduction/index.rst} | 0 doc/learn/index.rst | 2 +- doc/static/acrn-custom.css | 4 +- doc/substitutions.txt | 2 + doc/try/index.rst | 5 +- .../acrn-dm-parameters.rst | 0 doc/{develop => user-guides}/acrn-shell.rst | 0 .../images/i915-image1.png | Bin .../images/i915-image2.png | Bin .../images/i915-image3.png | Bin .../images/i915-image4.png | Bin .../images/i915-image5.png | Bin .../images/shell_image10.png | Bin .../images/shell_image11.png | Bin .../images/shell_image12.png | Bin .../images/shell_image13.png | Bin .../images/shell_image14.png | Bin .../images/shell_image15.png | Bin .../images/shell_image16.png | Bin .../images/shell_image17.png | Bin .../images/shell_image18.png | Bin .../images/shell_image6.png | Bin .../images/shell_image7.png | Bin .../images/shell_image8.png | Bin .../images/shell_image9.png | Bin .../kernel-parameters.rst | 0 doc/{develop => user-guides}/tools.rst | 0 298 files changed, 164 insertions(+), 28 deletions(-) create mode 100644 doc/.known-issues/doc/redirect.conf delete mode 100644 doc/contribute/images/ACRN-favicon-32x32.png delete mode 100644 doc/contribute/images/ACRN_Logo_200w.png delete mode 100644 doc/contribute/images/ACRN_Logo_300w.png delete mode 100644 doc/contribute/images/ACRN_Logo_56h.png delete mode 100644 doc/contribute/images/ACRNlogo.png rename doc/{contribute => developer-guides}/GVT-g-porting.rst (100%) rename doc/{contribute => developer-guides}/VBSK-analysis.rst (100%) rename doc/{contribute => developer-guides}/asm_coding_guidelines.rst (100%) rename doc/{contribute => developer-guides}/c_coding_guidelines.rst (100%) rename doc/{contribute => developer-guides}/coding_guidelines.rst (100%) rename doc/{contribute => developer-guides}/contribute_guidelines.rst (100%) rename doc/{contribute => developer-guides}/doc_guidelines.rst (100%) rename doc/{contribute => developer-guides}/graphviz.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-APL_GVT-g.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-devicemodel.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-emulated-devices.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-hypervisor.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-overview.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-power-management.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-security.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-trace-log.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-virtio-devices.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-vm-management.rst (100%) rename doc/{contribute => developer-guides}/hld/hld-vsbl.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-config.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-console.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-cpu-virt.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-dev-passthrough.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-hypercall.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-interrupt.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-io-emulation.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-ioc-virt.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-memmgt.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-partitionmode.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-pm.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-startup.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-timer.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-virt-interrupt.rst (100%) rename doc/{contribute => developer-guides}/hld/hv-vt-d.rst (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-DM.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-access-patterns.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-api-forwarding.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-arch.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-direct-display.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-display-virt.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-full-pic.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-graphics-arch.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-hyper-dma.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-indirect-display.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-interrupt-virt.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-ive-use-case.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-mediated-pass-through.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-mem-part.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-pass-through.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-per-vm-shadow.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-perf-critical.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-plane-based.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-scheduling-policy.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-scheduling.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-shared-shadow.png (100%) rename doc/{contribute => developer-guides}/hld/images/APL_GVT-g-workload.png (100%) rename doc/{contribute => developer-guides}/hld/images/config-image103.png (100%) rename doc/{contribute => developer-guides}/hld/images/console-image41.png (100%) rename doc/{contribute => developer-guides}/hld/images/console-image93.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image108.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image26.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image33.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image36.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image43.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image52.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image74.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image75.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image80.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image83.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image94.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image96.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image97.png (100%) rename doc/{contribute => developer-guides}/hld/images/dm-image99.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image104.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image107.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image17.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image35.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image38.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image47.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image68.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-image82.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-pm-image28.png (100%) rename doc/{contribute => developer-guides}/hld/images/hld-pm-image62.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image39.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image46.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image48.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image66.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image76.png (100%) rename doc/{contribute => developer-guides}/hld/images/interrupt-image89.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image10.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image12.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image13.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image14.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image15.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image16.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image17.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image18.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image19.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image20.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image21.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image22.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image24.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image4.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image49.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image5.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image6.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image65.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image8.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioc-image9.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioem-image100.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioem-image101.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioem-image106.png (100%) rename doc/{contribute => developer-guides}/hld/images/ioem-image92.png (100%) rename doc/{contribute => developer-guides}/hld/images/log-image50.png (100%) rename doc/{contribute => developer-guides}/hld/images/log-image59.png (100%) rename doc/{contribute => developer-guides}/hld/images/log-image73.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image18.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image45.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image5.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image6.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image69.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image8.png (100%) rename doc/{contribute => developer-guides}/hld/images/mem-image84.png (100%) rename doc/{contribute => developer-guides}/hld/images/network-virt-arch.png (100%) rename doc/{contribute => developer-guides}/hld/images/network-virt-sos-infrastruct.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image11.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image110.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image13.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image15.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image21.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image29.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image34.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image4.png (100%) rename doc/{contribute => developer-guides}/hld/images/over-image85.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image13.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image14.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image16.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image18.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image20.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/partition-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image102.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image22.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image30.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image42.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image72.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image77.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image86.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image91.png (100%) rename doc/{contribute => developer-guides}/hld/images/passthru-image98.png (100%) rename doc/{contribute => developer-guides}/hld/images/pm-image24-105.png (100%) rename doc/{contribute => developer-guides}/hld/images/rand-virt.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image10.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image11.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image12.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image13.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image14.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image4.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image5.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image6.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image8.png (100%) rename doc/{contribute => developer-guides}/hld/images/security-image9.png (100%) rename doc/{contribute => developer-guides}/hld/images/static-core-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/static-core-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/uart-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/usb-image10.png (100%) rename doc/{contribute => developer-guides}/hld/images/usb-image31.png (100%) rename doc/{contribute => developer-guides}/hld/images/usb-image51.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtint-image64.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-blk-image01.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-blk-image02.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-console-arch.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image0.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image2.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image3.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image4.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image5.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image53.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image54.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image58.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image6.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image60.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image61.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image7.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image71.png (100%) rename doc/{contribute => developer-guides}/hld/images/virtio-hld-image8.png (100%) rename doc/{contribute => developer-guides}/hld/images/vt-d-image19.png (100%) rename doc/{contribute => developer-guides}/hld/images/vt-d-image40.png (100%) rename doc/{contribute => developer-guides}/hld/images/vt-d-image44.png (100%) rename doc/{contribute => developer-guides}/hld/images/vt-d-image90.png (100%) rename doc/{contribute => developer-guides}/hld/images/watchdog-image1.png (100%) rename doc/{contribute => developer-guides}/hld/images/watchdog-image2.png (100%) rename doc/{contribute => developer-guides}/hld/index.rst (100%) rename doc/{contribute => developer-guides}/hld/random-virt-hld.rst (100%) rename doc/{contribute => developer-guides}/hld/uart-virt-hld.rst (100%) rename doc/{contribute => developer-guides}/hld/usb-virt-hld.rst (100%) rename doc/{contribute => developer-guides}/hld/virtio-blk.rst (100%) rename doc/{contribute => developer-guides}/hld/virtio-console.rst (100%) rename doc/{contribute => developer-guides}/hld/virtio-input.rst (100%) rename doc/{contribute => developer-guides}/hld/virtio-net.rst (100%) rename doc/{contribute => developer-guides}/hld/virtio-rnd.rst (100%) rename doc/{contribute => developer-guides}/hld/watchdog-hld.rst (100%) rename doc/{contribute => developer-guides}/images/GVT-g-porting-image1.png (100%) rename doc/{contribute => developer-guides}/images/boot-flow.dot (100%) rename doc/{contribute => developer-guides}/images/boot_information_parsing_module.png (100%) rename doc/{contribute => developer-guides}/images/circle-square.dot (100%) rename doc/{contribute => developer-guides}/images/ept-hierarchy.png (100%) rename doc/{contribute => developer-guides}/images/gaspump.dot (100%) rename doc/{contribute => developer-guides}/images/modularity-architecture.png (100%) rename doc/{contribute => developer-guides}/images/node-shape-edges.dot (100%) rename doc/{contribute => developer-guides}/images/record.dot (100%) rename doc/{contribute => developer-guides}/images/trusty-arch.png (100%) rename doc/{contribute => developer-guides}/images/trusty-boot-flow.dot (100%) rename doc/{contribute => developer-guides}/images/vbsk-image1.png (100%) rename doc/{contribute => developer-guides}/images/vbsk-image2.png (100%) rename doc/{contribute => developer-guides}/images/vbsk-image3.png (100%) rename doc/{contribute => developer-guides}/images/work_flow_of_error_detection_and_error_handling.png (100%) rename doc/{contribute => developer-guides}/l1tf.rst (100%) rename doc/{contribute => developer-guides}/modularity.rst (100%) rename doc/{contribute => developer-guides}/sw_design_guidelines.rst (100%) rename doc/{contribute => developer-guides}/trusty.rst (100%) create mode 100644 doc/extensions/html_redirects.py rename doc/{try => getting-started}/acrn_quick_setup.sh (100%) rename doc/{try => getting-started}/apl-nuc.rst (100%) rename doc/{develop => getting-started}/building-from-source.rst (100%) rename doc/{try => getting-started}/images/KBL-serial-port-header-to-RS232-cable.jpg (100%) rename doc/{try => getting-started}/images/KBL-serial-port-header.png (100%) rename doc/{try => getting-started}/images/USB-to-TTL-serial-cable.png (100%) rename doc/{try => getting-started}/images/gsg-successful-boot.png (100%) rename doc/{try => getting-started}/images/the-bottom-side-of-UP2-board.png (100%) rename doc/{try => getting-started}/images/the-connection-of-serial-port.png (100%) rename doc/{try => getting-started}/images/up2-gui.png (100%) rename doc/{try => getting-started}/up2.rst (100%) rename doc/{learn => introduction}/images/IVI-block.png (100%) rename doc/{learn => introduction}/images/VMX-brief.png (100%) rename doc/{learn => introduction}/images/architecture.png (100%) rename doc/{learn => introduction}/images/boot-flow.dot (100%) rename doc/{learn => introduction}/images/boot-flow.png (100%) rename doc/{learn => introduction}/images/device-model.png (100%) rename doc/{learn => introduction}/images/device-passthrough.png (100%) rename doc/{learn => introduction}/images/io-emulation-path.png (100%) rename doc/{learn => introduction}/images/virtio-architecture.png (100%) rename doc/{learn => introduction}/images/virtio-framework-kernel.png (100%) rename doc/{learn => introduction}/images/virtio-framework-userland.png (100%) rename doc/{learn/intro.rst => introduction/index.rst} (100%) rename doc/{develop => user-guides}/acrn-dm-parameters.rst (100%) rename doc/{develop => user-guides}/acrn-shell.rst (100%) rename doc/{develop => user-guides}/images/i915-image1.png (100%) rename doc/{develop => user-guides}/images/i915-image2.png (100%) rename doc/{develop => user-guides}/images/i915-image3.png (100%) rename doc/{develop => user-guides}/images/i915-image4.png (100%) rename doc/{develop => user-guides}/images/i915-image5.png (100%) rename doc/{develop => user-guides}/images/shell_image10.png (100%) rename doc/{develop => user-guides}/images/shell_image11.png (100%) rename doc/{develop => user-guides}/images/shell_image12.png (100%) rename doc/{develop => user-guides}/images/shell_image13.png (100%) rename doc/{develop => user-guides}/images/shell_image14.png (100%) rename doc/{develop => user-guides}/images/shell_image15.png (100%) rename doc/{develop => user-guides}/images/shell_image16.png (100%) rename doc/{develop => user-guides}/images/shell_image17.png (100%) rename doc/{develop => user-guides}/images/shell_image18.png (100%) rename doc/{develop => user-guides}/images/shell_image6.png (100%) rename doc/{develop => user-guides}/images/shell_image7.png (100%) rename doc/{develop => user-guides}/images/shell_image8.png (100%) rename doc/{develop => user-guides}/images/shell_image9.png (100%) rename doc/{develop => user-guides}/kernel-parameters.rst (100%) rename doc/{develop => user-guides}/tools.rst (100%) diff --git a/doc/.known-issues/doc/redirect.conf b/doc/.known-issues/doc/redirect.conf new file mode 100644 index 000000000..540b576f7 --- /dev/null +++ b/doc/.known-issues/doc/redirect.conf @@ -0,0 +1,4 @@ +# +# Redirect messages +# +^Creating redirect:.* diff --git a/doc/conf.py b/doc/conf.py index d21a1e40a..19a51c315 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -36,7 +36,7 @@ if "RELEASE" in os.environ: sys.path.insert(0, os.path.join(os.path.abspath('.'), 'extensions')) extensions = ['breathe', 'sphinx.ext.graphviz', 'sphinx.ext.extlinks', - 'kerneldoc', 'eager_only'] + 'kerneldoc', 'eager_only', 'html_redirects'] # extlinks provides a macro template @@ -301,3 +301,18 @@ breathe_projects = { } breathe_default_project = "Project ACRN" breathe_default_members = ('members', 'undoc-members', 'content-only') + + +# Custom added feature to allow redirecting old URLs (caused by +# reorganizing doc directories) +# +# list of tuples (old_url, new_url) for pages to redirect +# +# URLs must be relative to document root (with NO leading slash), +# and without the html extension) +html_redirect_pages = [ + ('developer-guides/index', 'contribute/index'), + ('getting-started/index', 'try/index'), + ('user-guides/index', 'develop/index'), + ('release_notes', 'release_notes/index') + ] diff --git a/doc/contribute/images/ACRN-favicon-32x32.png b/doc/contribute/images/ACRN-favicon-32x32.png deleted file mode 100644 index eb4798442d67b0805b9ae5969098a152bc11ddc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1607 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 diff --git a/doc/contribute/images/ACRNlogo.png b/doc/contribute/images/ACRNlogo.png deleted file mode 100644 index fa9a4195943cd1aac27f827e86f6512b41129cd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6665 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 + + + + + +

Page has moved here.

+ + +""" + + +def setup(app): + app.add_config_value('html_redirect_pages', [], 'html') + app.connect('build-finished', create_redirect_pages) + + # Since we're just setting up a build-finished hook, which runs + # after both reading and writing, this extension is safe for both. + return { + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } + + +def create_redirect_pages(app, docname): + if not isinstance(app.builder, StandaloneHTMLBuilder): + return # only relevant for standalone HTML output + + for (old_url, new_url) in app.config.html_redirect_pages: + if old_url.startswith('/'): + old_url = old_url[1:] + print("Creating redirect: %s.html to %s.html" % (old_url, new_url)) + + new_url = app.builder.get_relative_uri(old_url, new_url) + out_file = app.builder.get_outfilename(old_url) + + out_dir = os.path.dirname(out_file) + if not os.path.exists(out_dir): + os.makedirs(out_dir) + + content = REDIRECT_TEMPLATE.replace("$NEWURL", new_url) + + if not os.path.exists(out_file): + with open(out_file, "w") as rp: + rp.write(content) diff --git a/doc/try/acrn_quick_setup.sh b/doc/getting-started/acrn_quick_setup.sh similarity index 100% rename from doc/try/acrn_quick_setup.sh rename to doc/getting-started/acrn_quick_setup.sh diff --git a/doc/try/apl-nuc.rst b/doc/getting-started/apl-nuc.rst similarity index 100% rename from doc/try/apl-nuc.rst rename to doc/getting-started/apl-nuc.rst diff --git a/doc/develop/building-from-source.rst b/doc/getting-started/building-from-source.rst similarity index 100% rename from doc/develop/building-from-source.rst rename to doc/getting-started/building-from-source.rst diff --git a/doc/try/images/KBL-serial-port-header-to-RS232-cable.jpg b/doc/getting-started/images/KBL-serial-port-header-to-RS232-cable.jpg similarity index 100% rename from doc/try/images/KBL-serial-port-header-to-RS232-cable.jpg rename to doc/getting-started/images/KBL-serial-port-header-to-RS232-cable.jpg diff --git a/doc/try/images/KBL-serial-port-header.png b/doc/getting-started/images/KBL-serial-port-header.png similarity index 100% rename from doc/try/images/KBL-serial-port-header.png rename to doc/getting-started/images/KBL-serial-port-header.png diff --git a/doc/try/images/USB-to-TTL-serial-cable.png b/doc/getting-started/images/USB-to-TTL-serial-cable.png similarity index 100% rename from doc/try/images/USB-to-TTL-serial-cable.png rename to doc/getting-started/images/USB-to-TTL-serial-cable.png diff --git a/doc/try/images/gsg-successful-boot.png b/doc/getting-started/images/gsg-successful-boot.png similarity index 100% rename from doc/try/images/gsg-successful-boot.png rename to doc/getting-started/images/gsg-successful-boot.png diff --git a/doc/try/images/the-bottom-side-of-UP2-board.png b/doc/getting-started/images/the-bottom-side-of-UP2-board.png similarity index 100% rename from doc/try/images/the-bottom-side-of-UP2-board.png rename to doc/getting-started/images/the-bottom-side-of-UP2-board.png diff --git a/doc/try/images/the-connection-of-serial-port.png b/doc/getting-started/images/the-connection-of-serial-port.png similarity index 100% rename from doc/try/images/the-connection-of-serial-port.png rename to doc/getting-started/images/the-connection-of-serial-port.png diff --git a/doc/try/images/up2-gui.png b/doc/getting-started/images/up2-gui.png similarity index 100% rename from doc/try/images/up2-gui.png rename to doc/getting-started/images/up2-gui.png diff --git a/doc/try/up2.rst b/doc/getting-started/up2.rst similarity index 100% rename from doc/try/up2.rst rename to doc/getting-started/up2.rst diff --git a/doc/glossary.rst b/doc/glossary.rst index b8747ae42..83a239b62 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -23,9 +23,12 @@ Glossary of Terms A user mode device model application running in Service OS to provide device emulations in ACRN hypervisor. - aperture, Low GM + aperture CPU-visible graphics memory + low GM + see :term:`aperture` + API Application Program Interface: A defined set of routines and protocols for building application software. @@ -77,9 +80,12 @@ Glossary of Terms GVT-s Virtual shared graphics acceleration (multiple VMs to one physical GPU) - Hidden GM, High GM + Hidden GM Hidden or High graphics memory, not visible to the CPU. + High GM + See :term:`Hidden GM` + I2C Inter-Integrated Circuit @@ -113,7 +119,7 @@ Glossary of Terms OSPM Operating System Power Management - Pass-Through Devices + Pass-Through Device Physical devices (typically PCI) exclusively assigned to a guest. In the Project ACRN architecture, pass-through devices are owned by the foreground OS. @@ -127,6 +133,14 @@ Glossary of Terms PM Power Management + Pre-launched VM + Pre-launched VMs are started by the ACRN hypervisor before the + Service VM is launched. (See :term:`Post-launched VM`) + + Post-Launched VM + Post-Launched VMs are launched and configured by the Service VM. + (See :term:`Pre-launched VM`) + PTE Page Table Entry @@ -144,11 +158,33 @@ Glossary of Terms RSE Rear Seat Entertainment + RTVM + Real-time VM. A specially designed VM to run hard real-time or + soft real-time workloads (or application) much more efficiently + than the typical User VM through the use of pass-through interrupt + controller, polling-mode Virtio, Intel Cache Allocation Technology (CAT) + and I/O prioritization. RTVMs are typically a :term:`pre-launched VM`. + A non-:term:`safety VM` with real-time requirements can a + :term:`post-launched VM`. + + Safety VM + A special VM with dedicated hardware resources, running in + partition mode, and providing overall system health-monitoring + functionality. Currently, a Safety VM is always a pre-launched User VM. + SDC Software Defined Cockpit + Service VM + The Service VM is generally the first VM launched by ACRN and can + access hardware resources directly by running native drivers and + provides device sharing services to User VMs via the Device Model. + SOS - Service OS, the privileged guest for ACRN hypervisor + Obsolete, see :term:`Service VM` + + Service OS + Obsolete, see :term:`Service VM` UEFI Unified Extensible Firmare Interface. UEFI replaces the @@ -157,9 +193,14 @@ Glossary of Terms important, support Secure Boot, checking the OS validity to ensure no malware has tampered with the boot process. + User VM + User Virtual Machine. + UOS - User OS (also known as Guest OS), the unprivileged guest for ACRN - hypervisor + Obsolete, see :term:`User VM` + + User OS + Obsolete, see :term:`User VM` vGPU Virtual GPU Instance, created by GVT-g and used by a VM diff --git a/doc/learn/images/IVI-block.png b/doc/introduction/images/IVI-block.png similarity index 100% rename from doc/learn/images/IVI-block.png rename to doc/introduction/images/IVI-block.png diff --git a/doc/learn/images/VMX-brief.png b/doc/introduction/images/VMX-brief.png similarity index 100% rename from doc/learn/images/VMX-brief.png rename to doc/introduction/images/VMX-brief.png diff --git a/doc/learn/images/architecture.png b/doc/introduction/images/architecture.png similarity index 100% rename from doc/learn/images/architecture.png rename to doc/introduction/images/architecture.png diff --git a/doc/learn/images/boot-flow.dot b/doc/introduction/images/boot-flow.dot similarity index 100% rename from doc/learn/images/boot-flow.dot rename to doc/introduction/images/boot-flow.dot diff --git a/doc/learn/images/boot-flow.png b/doc/introduction/images/boot-flow.png similarity index 100% rename from doc/learn/images/boot-flow.png rename to doc/introduction/images/boot-flow.png diff --git a/doc/learn/images/device-model.png b/doc/introduction/images/device-model.png similarity index 100% rename from doc/learn/images/device-model.png rename to doc/introduction/images/device-model.png diff --git a/doc/learn/images/device-passthrough.png b/doc/introduction/images/device-passthrough.png similarity index 100% rename from doc/learn/images/device-passthrough.png rename to doc/introduction/images/device-passthrough.png diff --git a/doc/learn/images/io-emulation-path.png b/doc/introduction/images/io-emulation-path.png similarity index 100% rename from doc/learn/images/io-emulation-path.png rename to doc/introduction/images/io-emulation-path.png diff --git a/doc/learn/images/virtio-architecture.png b/doc/introduction/images/virtio-architecture.png similarity index 100% rename from doc/learn/images/virtio-architecture.png rename to doc/introduction/images/virtio-architecture.png diff --git a/doc/learn/images/virtio-framework-kernel.png b/doc/introduction/images/virtio-framework-kernel.png similarity index 100% rename from doc/learn/images/virtio-framework-kernel.png rename to doc/introduction/images/virtio-framework-kernel.png diff --git a/doc/learn/images/virtio-framework-userland.png b/doc/introduction/images/virtio-framework-userland.png similarity index 100% rename from doc/learn/images/virtio-framework-userland.png rename to doc/introduction/images/virtio-framework-userland.png diff --git a/doc/learn/intro.rst b/doc/introduction/index.rst similarity index 100% rename from doc/learn/intro.rst rename to doc/introduction/index.rst diff --git a/doc/learn/index.rst b/doc/learn/index.rst index 569303794..d76198479 100644 --- a/doc/learn/index.rst +++ b/doc/learn/index.rst @@ -6,5 +6,5 @@ Learn about ACRN .. toctree:: :maxdepth: 1 - intro.rst + ../introduction/index diff --git a/doc/static/acrn-custom.css b/doc/static/acrn-custom.css index d209e5c4c..e1dd083d2 100644 --- a/doc/static/acrn-custom.css +++ b/doc/static/acrn-custom.css @@ -231,8 +231,8 @@ kbd } .grid-item img { - margin-bottom: 1.1rem; - max-width: 75%; + max-width: 50%; + margin-bottom: 0.7rem; } diff --git a/doc/substitutions.txt b/doc/substitutions.txt index 531005937..7540de0d4 100644 --- a/doc/substitutions.txt +++ b/doc/substitutions.txt @@ -17,4 +17,6 @@ :rtrim: .. |micro| unicode:: U+000B5 .. MICRO SIGN :rtrim: +.. |check| unicode:: U+02714 .. HEAVY CHECK MARK + :rtrim: .. |oplus| unicode:: U+02295 .. CIRCLED PLUS SIGN diff --git a/doc/try/index.rst b/doc/try/index.rst index f23f9f26e..ae9671d16 100644 --- a/doc/try/index.rst +++ b/doc/try/index.rst @@ -17,5 +17,6 @@ described in :ref:`hardware`. Follow the setup guides listed here: .. toctree:: :maxdepth: 1 - apl-nuc.rst - up2.rst + ../getting-started/apl-nuc.rst + ../getting-started/up2.rst + ../getting-started/building-from-source.rst diff --git a/doc/develop/acrn-dm-parameters.rst b/doc/user-guides/acrn-dm-parameters.rst similarity index 100% rename from doc/develop/acrn-dm-parameters.rst rename to doc/user-guides/acrn-dm-parameters.rst diff --git a/doc/develop/acrn-shell.rst b/doc/user-guides/acrn-shell.rst similarity index 100% rename from doc/develop/acrn-shell.rst rename to doc/user-guides/acrn-shell.rst diff --git a/doc/develop/images/i915-image1.png b/doc/user-guides/images/i915-image1.png similarity index 100% rename from doc/develop/images/i915-image1.png rename to doc/user-guides/images/i915-image1.png diff --git a/doc/develop/images/i915-image2.png b/doc/user-guides/images/i915-image2.png similarity index 100% rename from doc/develop/images/i915-image2.png rename to doc/user-guides/images/i915-image2.png diff --git a/doc/develop/images/i915-image3.png b/doc/user-guides/images/i915-image3.png similarity index 100% rename from doc/develop/images/i915-image3.png rename to doc/user-guides/images/i915-image3.png diff --git a/doc/develop/images/i915-image4.png b/doc/user-guides/images/i915-image4.png similarity index 100% rename from doc/develop/images/i915-image4.png rename to doc/user-guides/images/i915-image4.png diff --git a/doc/develop/images/i915-image5.png b/doc/user-guides/images/i915-image5.png similarity index 100% rename from doc/develop/images/i915-image5.png rename to doc/user-guides/images/i915-image5.png diff --git a/doc/develop/images/shell_image10.png b/doc/user-guides/images/shell_image10.png similarity index 100% rename from doc/develop/images/shell_image10.png rename to doc/user-guides/images/shell_image10.png diff --git a/doc/develop/images/shell_image11.png b/doc/user-guides/images/shell_image11.png similarity index 100% rename from doc/develop/images/shell_image11.png rename to doc/user-guides/images/shell_image11.png diff --git a/doc/develop/images/shell_image12.png b/doc/user-guides/images/shell_image12.png similarity index 100% rename from doc/develop/images/shell_image12.png rename to doc/user-guides/images/shell_image12.png diff --git a/doc/develop/images/shell_image13.png b/doc/user-guides/images/shell_image13.png similarity index 100% rename from doc/develop/images/shell_image13.png rename to doc/user-guides/images/shell_image13.png diff --git a/doc/develop/images/shell_image14.png b/doc/user-guides/images/shell_image14.png similarity index 100% rename from doc/develop/images/shell_image14.png rename to doc/user-guides/images/shell_image14.png diff --git a/doc/develop/images/shell_image15.png b/doc/user-guides/images/shell_image15.png similarity index 100% rename from doc/develop/images/shell_image15.png rename to doc/user-guides/images/shell_image15.png diff --git a/doc/develop/images/shell_image16.png b/doc/user-guides/images/shell_image16.png similarity index 100% rename from doc/develop/images/shell_image16.png rename to doc/user-guides/images/shell_image16.png diff --git a/doc/develop/images/shell_image17.png b/doc/user-guides/images/shell_image17.png similarity index 100% rename from doc/develop/images/shell_image17.png rename to doc/user-guides/images/shell_image17.png diff --git a/doc/develop/images/shell_image18.png b/doc/user-guides/images/shell_image18.png similarity index 100% rename from doc/develop/images/shell_image18.png rename to doc/user-guides/images/shell_image18.png diff --git a/doc/develop/images/shell_image6.png b/doc/user-guides/images/shell_image6.png similarity index 100% rename from doc/develop/images/shell_image6.png rename to doc/user-guides/images/shell_image6.png diff --git a/doc/develop/images/shell_image7.png b/doc/user-guides/images/shell_image7.png similarity index 100% rename from doc/develop/images/shell_image7.png rename to doc/user-guides/images/shell_image7.png diff --git a/doc/develop/images/shell_image8.png b/doc/user-guides/images/shell_image8.png similarity index 100% rename from doc/develop/images/shell_image8.png rename to doc/user-guides/images/shell_image8.png diff --git a/doc/develop/images/shell_image9.png b/doc/user-guides/images/shell_image9.png similarity index 100% rename from doc/develop/images/shell_image9.png rename to doc/user-guides/images/shell_image9.png diff --git a/doc/develop/kernel-parameters.rst b/doc/user-guides/kernel-parameters.rst similarity index 100% rename from doc/develop/kernel-parameters.rst rename to doc/user-guides/kernel-parameters.rst diff --git a/doc/develop/tools.rst b/doc/user-guides/tools.rst similarity index 100% rename from doc/develop/tools.rst rename to doc/user-guides/tools.rst