From abfe3e40233450cfa13fb037697fee1f9902a181 Mon Sep 17 00:00:00 2001 From: Gao Junhao Date: Wed, 23 Oct 2019 03:30:01 +0000 Subject: [PATCH] doc: add UART emulation in hypervisor doc add UART emulation in hypervisor doc Signed-off-by: Gao Junhao --- .../hld/hld-emulated-devices.rst | 1 + .../hld/images/uart-virt-hld-1.png | Bin 0 -> 29893 bytes .../hld/images/uart-virt-hld-2.png | Bin 0 -> 34001 bytes .../hld/images/uart-virt-hld-3.png | Bin 0 -> 34220 bytes doc/developer-guides/hld/vuart-virt-hld.rst | 136 ++++++++++++++++++ 5 files changed, 137 insertions(+) create mode 100755 doc/developer-guides/hld/images/uart-virt-hld-1.png create mode 100755 doc/developer-guides/hld/images/uart-virt-hld-2.png create mode 100755 doc/developer-guides/hld/images/uart-virt-hld-3.png create mode 100644 doc/developer-guides/hld/vuart-virt-hld.rst diff --git a/doc/developer-guides/hld/hld-emulated-devices.rst b/doc/developer-guides/hld/hld-emulated-devices.rst index ed4fb7353..7f14152aa 100644 --- a/doc/developer-guides/hld/hld-emulated-devices.rst +++ b/doc/developer-guides/hld/hld-emulated-devices.rst @@ -16,3 +16,4 @@ documented in this section. Watchdoc virtualization AHCI virtualization GVT-g GPU Virtualization + UART emulation in hypervisor diff --git a/doc/developer-guides/hld/images/uart-virt-hld-1.png b/doc/developer-guides/hld/images/uart-virt-hld-1.png new file mode 100755 index 0000000000000000000000000000000000000000..4137c1631a03185d2ddbc620a075654876b53081 GIT binary patch literal 29893 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
@n-6-wo&+F_K}lUxz% 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 kO8tDD=EM@ae8|Y*P|L*}@emU18Gj z>vntKn!+1q5=T*|(9_%2Na8kO^g=_-{-Gc$1P+(oe*Hm?0w86;`P9S3rUM!BA;Q9& z`N3u^{X97!P(|)E8ow6u`3%1@(M!t5N+aWQ|BrVSjw6C-9sO+2r6D`a*sA0JD8ts7 zVne{do6p|3o=B-}lBqniiN`x^#PW9VB$w16lQ{gzWJ~A;iS4R@9P}PS zHuAeyq7!9&zXQ zRPBmaYK?}+-4gT0Vt%4>W;k&`+V0y+y3lbAf6CP-1u`)&Wj`Gji9L^&QBn%Q)Yg4u zgS`!sfXu2%8REXA`mO)uifwWtpGN{8z)K4pkM}6Y(Jly&<^%TlMEX$x~Jd=(S$N z7E0LTBRiQ*1!X6*)of{<$R-Q$Gsez82q5HOMrHVbNq1X?KjUQuJ0}7TmdtI`ptj^} zzKlD7_(8>-lpO0JYm#KsRi3&lcY={s?5N(XgSIPbE%-vd<2`+-aat`(w{d3P1cIc_P^FN0Hz5Cvc03DrHHiFLDGT za}AlV&Px*>OJ8vCgI&rp3%{7qs_iL;9fIAs}B z0Lur`DIKX8YWO00RM)yf$XvvH{8N-=?+GV1gN8=}&5r<(tm2_%X&qFvuA*0(JdA3H$|5ZNmV^_ zOgRF9r-516X!YtNZ|e$=X1?6q;#$2Nvz=jF+pVX=^8G=(S{b#i+D;PU>D@ETwGys! z90j5;f(Z2@Ms*#Trg~dZyT7uQd)!+UMLq$D|2VE^6TrdR``=*sPL-Wy{i=EkU2XR% z+dNNua*(6R^-vyYOF>PEBhE_$nmX{-u2MV>@zgD^FwY=GJ-ZhOJyyt9v~{fkF8o^e zWZTl8hDPHo)bG9}ST@=p@o1c>ovfH5M}b&D@5)*Zsq+h9sA{#QR4IIg?|!M`j0pmx z`ero+&!xw=s7?Iv%L?1GKc2OmA_aXJ*RfYReVHzHV6Rxb@xu^F1O10yi7bX~O5O?-mYqTaar z+r1^I@yidpj<;Y=K##-H)}0o|oL+j?nJm>lt#$5wyZ6$0 z$@dVy<`39YF(k6GrQ&->(S?Lrh@|$luOoa2j1}v>dyJK89RHV znUSq{wGyy*%oQG^!?HmAlWIN-Q2otEJ}E%lV*MT$X_@W9fD#pQdTje&jTOA*FK>}gIUBs ze>fho>$me#`|!QsMIgAZQ#GY=xXJd@@IxhHw!(||nkU6s2ECrhdji_RbWwY6{)Xq4 z?hBz;$9JFpk>MoML{I^sa)KaJ`B9>(pF_Yby*Aa%sWQl8;EfM6kM5^;S0Rp<3>wDh z`v(S8?8%i=?Kc6sLu|h+a8r)-U4OFz* zdVw-9BOk7#LF$6$V41xFuiQha4M&@yQg@tkUX$f?MQ^ly%lG^9ZV4;-iR}fF7V=^E%vs$ukr+@i<*BNwV^Z6E44KJ-0I7EN&R9 zRZ)VQ87+qZ$<}LXiAojcX7!x!zzjdoter+zsVq8gpBt z6XOvFveA>IDYq;~EIj#n=pC@X?qqMZtsL1Iz%YXq(G8YLofP(S&1y;(uUbf{n((q3 zwG*Z+D~}OisMms?hpZH6J{irNHn_www?B9N79TmA$7hzj9X1Ah*b1nKKTSpLX>j&J z*kSA(N{iv*8Mr207b(S}A`kNS`cogvYaAP#m`DCtA%HAt7xOf;4{;3R>X|_#a$z~a z!1G|&lPE&Zbm5-|J2XYaE*qx0P*S+y75&Gassc3A|9$=b3H=C>aK&gh$T8rjtf29@SPuO1{{e0C;S>M> literal 0 HcmV?d00001 diff --git a/doc/developer-guides/hld/images/uart-virt-hld-3.png b/doc/developer-guides/hld/images/uart-virt-hld-3.png new file mode 100755 index 0000000000000000000000000000000000000000..36e95262e80368263c60e889a8602c4aeded2b71 GIT binary patch literal 34220 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 ZP+hrjXU;JtGf=?K!v~6zMdEPZ{{t6+IMV`` command in hypervisor console. From :numref:`console-uart-arch`, there is only one physical uart, but four console vuarts (green color blocks). A hypervisor console is implemented above the physical uart, and it works in polling mode. There is a timer in hv console, the timer handler dispatches the input from physical uart to the vuart or the hypervisor shell process and get data from vuart’s Tx FIFO and send to physical uart. The data in vuart’s FIFOs will be overwritten when it is not taken out intime. + +.. figure:: images/uart-virt-hld-2.png + :align: center + :name: console-uart-arch + + console vUART architecture + +Communication vUART +******************* + +The communication vuart is used to transfer data between two VMs in low speed. For kernel driver, it is a general uart, can be detected and probed by 8250 serial driver. But in hypervisor, it has special process. + +From :numref:`communication-uart-arch`, the vuart in two VMs is connected according to the configuration in hypervisor. When user write a byte to the communication uart in VM0: + +Operations in VM0 + +- VM0 uart driver put the data to THR. + +- VM trap to hypervisor, and the vuart PIO handler is called. + +- Put the data to its target vuart’s Rx FIFO. + +- Inject a Data Ready interrupt to VM1. + +- If the target vuart’s FIFO is not full, inject a THRE interrupt to VM0. + +- Return. + +Operations in VM1 + +- Receive an interrupt, dispatch to uart driver. + +- Read LSR register, find a Data Ready interrupt. + +- Read data from Rx FIFO. + +- If Rx FIFO is not full, inject THRE interrupt to VM0. + +.. figure:: images/uart-virt-hld-3.png + :align: center + :name: communication-uart-arch + + communication vUART architecture + +Usage +***** + +- For console vUART + + To enable the console port for a VM, only need to change the port_base and irq in ``acrn-hypervi sor/hypervisor/scenarios//vm_configurations.c``. If the irq number has been used in your system ( ``cat /proc/interrupt``), you can choose other IRQ number. Set the .irq =0, the vuart will work in polling mode. + + - COM1_BASE (0x3F8) + COM1_IRQ(4) + + - COM2_BASE (0x2F8) + COM2_IRQ(3) + + - COM3_BASE (0x3E8) + COM3_IRQ(6) + + - COM4_BASE (0x2E8) + COM4_IRQ(7) + + Example:: + + .vuart[0] = { + .type = VUART_LEGACY_PIO, + .addr.port_base = COM1_BASE, + .irq = COM1_IRQ, + } + + The kernel bootargs ``console=ttySx`` should be the same with vuart[0], otherwise, the kernel co nsole log can not captured by hypervisor.Then, after bringup the system, you can switch the cons ole to the target VM by: + + .. code-block:: console + + ACRN:\>vm_console 0 + ----- Entering VM 0 Shell ----- + +- For communication vUART + + To enable the communication port, you should configure vuart[1] in the two VMs which want to com municate. The port_base and irq should not repeat with the vuart[0] in the same VM. t_vuart.vm_i d is the target VM's vm_id, start from 0 (0 means VM0). t_vuart.vuart_id is the target vuart ind ex in the target VM, start from 1 (1 means vuart[1]). + + Example:: + + /* VM0 */ + ... + /* VM1 */ + .vuart[1] = { + .type = VUART_LEGACY_PIO, + .addr.port_base = COM2_BASE, + .irq = COM2_IRQ, + .t_vuart.vm_id = 2U, + .t_vuart.vuart_id = 1U, + }, + ... + /* VM2 */ + .vuart[1] = { + .type = VUART_LEGACY_PIO, + .addr.port_base = COM2_BASE, + .irq = COM2_IRQ, + .t_vuart.vm_id = 1U, + .t_vuart.vuart_id = 1U, + }, + +.. note:: As the device mode also has virtual uart, and also use 0x3F8 and 0x2F8 as port base. If y ou add ``-s , lpc`` in launch script, the device model will create COM0 and COM1 for the p ost launched VM. It will also add the port info to ACPI table. This is useful for windows, vxwor ksas they probe driver according to ACPI table. + + If user enable both the device model uart and hypervisor vuart in the same port address, the ac cess to the port address will be response by hypervisor vuart directly and will not pass to devi ce model. +