mirror of
				https://github.com/projectacrn/acrn-hypervisor.git
				synced 2025-11-04 03:28:59 +00:00 
			
		
		
		
	doc: edit agl-vms.rst adjust to v1.3
This commit is contained in:
		@@ -24,9 +24,9 @@ meter, the In-Vehicle Infotainment (IVI) system, and the rear seat
 | 
				
			|||||||
entertainment (RSE).  For the software, there are three VMs running on
 | 
					entertainment (RSE).  For the software, there are three VMs running on
 | 
				
			||||||
top of ACRN:
 | 
					top of ACRN:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Clear Linux OS runs as the service OS (SOS) to control the cluster meter,
 | 
					* Clear Linux OS runs as the service OS (Service VM) to control the cluster meter,
 | 
				
			||||||
* an AGL instance runs as a user OS (UOS) controlling the IVI display, and
 | 
					* an AGL instance runs as a user OS (User VM) controlling the IVI display, and
 | 
				
			||||||
* a second AGL UOS controls the RSE display.
 | 
					* a second AGL User VM controls the RSE display.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:numref:`agl-demo-setup` shows the hardware and display images of a
 | 
					:numref:`agl-demo-setup` shows the hardware and display images of a
 | 
				
			||||||
running demo:
 | 
					running demo:
 | 
				
			||||||
@@ -58,7 +58,7 @@ Here is the hardware used for the demo development:
 | 
				
			|||||||
       * `Tested components and peripherals
 | 
					       * `Tested components and peripherals
 | 
				
			||||||
         <http://compatibleproducts.intel.com/ProductDetails?prodSearch=True&searchTerm=NUC7i7DNHE#>`_,
 | 
					         <http://compatibleproducts.intel.com/ProductDetails?prodSearch=True&searchTerm=NUC7i7DNHE#>`_,
 | 
				
			||||||
       * 16GB RAM, and
 | 
					       * 16GB RAM, and
 | 
				
			||||||
       * 250GB SSD
 | 
					       * 120GB SATA SSD
 | 
				
			||||||
   * - eDP display
 | 
					   * - eDP display
 | 
				
			||||||
     - `Sharp LQ125T1JX05
 | 
					     - `Sharp LQ125T1JX05
 | 
				
			||||||
       <http://www.panelook.com/LQ125T1JX05-E_SHARP_12.5_LCM_overview_35649.html>`_
 | 
					       <http://www.panelook.com/LQ125T1JX05-E_SHARP_12.5_LCM_overview_35649.html>`_
 | 
				
			||||||
@@ -109,25 +109,25 @@ The demo setup uses these software components and versions:
 | 
				
			|||||||
     - Version
 | 
					     - Version
 | 
				
			||||||
     - Link
 | 
					     - Link
 | 
				
			||||||
   * - ACRN hypervisor
 | 
					   * - ACRN hypervisor
 | 
				
			||||||
     - 0.3
 | 
					     - 1.3
 | 
				
			||||||
     - `ACRN project <https://github.com/projectacrn/acrn-hypervisor>`_
 | 
					     - `ACRN project <https://github.com/projectacrn/acrn-hypervisor>`_
 | 
				
			||||||
   * - Clear Linux OS
 | 
					   * - Clear Linux OS
 | 
				
			||||||
     - 26200
 | 
					     - 31080
 | 
				
			||||||
     - `Clear Linux OS installer image
 | 
					     - `Clear Linux OS installer image
 | 
				
			||||||
       <https://download.clearlinux.org/releases/26200/clear/clear-26200-installer.img.xz>`_
 | 
					       <https://download.clearlinux.org/releases/31080/clear/clear-31080-kvm.img.xz>`_
 | 
				
			||||||
   * - AGL
 | 
					   * - AGL
 | 
				
			||||||
     - Funky Flounder (6.02)
 | 
					     - Funky Flounder (6.02)
 | 
				
			||||||
     - `intel-corei7-x64 image
 | 
					     - `intel-corei7-x64 image
 | 
				
			||||||
       <https://download.automotivelinux.org/AGL/release/flounder/6.0.2/intel-corei7-64/deploy/images/intel-corei7-64/agl-demo-platform-crosssdk-intel-corei7-64-20181112133144.rootfs.wic.xz>`_
 | 
					       <https://download.automotivelinux.org/AGL/release/flounder/6.0.2/intel-corei7-64/deploy/images/intel-corei7-64/agl-demo-platform-crosssdk-intel-corei7-64-20181112133144.rootfs.wic.xz>`_
 | 
				
			||||||
   * - acrn-kernel
 | 
					   * - acrn-kernel
 | 
				
			||||||
     - revision acrn-2018w49.3-140000p
 | 
					     - revision acrn-2019w39.1-140000p
 | 
				
			||||||
     - `acrn-kernel <https://github.com/projectacrn/acrn-kernel>`_
 | 
					     - `acrn-kernel <https://github.com/projectacrn/acrn-kernel>`_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Service OS
 | 
					Service OS
 | 
				
			||||||
==========
 | 
					==========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Download the compressed Clear Linux OS installer image from
 | 
					#. Download the compressed Clear Linux OS installer image from
 | 
				
			||||||
   https://download.clearlinux.org/releases/26200/clear/clear-26200-installer.img.xz
 | 
					   https://download.clearlinux.org/releases/31080/clear/clear-31080-live-server.img.xz
 | 
				
			||||||
   and follow the `Clear Linux OS installation guide
 | 
					   and follow the `Clear Linux OS installation guide
 | 
				
			||||||
   <https://clearlinux.org/documentation/clear-linux/get-started/bare-metal-install-server>`_
 | 
					   <https://clearlinux.org/documentation/clear-linux/get-started/bare-metal-install-server>`_
 | 
				
			||||||
   as a starting point for installing Clear Linux OS onto your platform.
 | 
					   as a starting point for installing Clear Linux OS onto your platform.
 | 
				
			||||||
@@ -145,19 +145,24 @@ Service OS
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      # swupd autoupdate --disable
 | 
					      # swupd autoupdate --disable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. This demo setup uses a specific release version (26200) of Clear
 | 
					#. This demo setup uses a specific release version (31080) of Clear
 | 
				
			||||||
   Linux OS which has been verified to work with ACRN. In case you
 | 
					   Linux OS which has been verified to work with ACRN. In case you
 | 
				
			||||||
   unintentionally update or change the Clear Linux OS version, you can
 | 
					   unintentionally update or change the Clear Linux OS version, you can
 | 
				
			||||||
   fix it again using::
 | 
					   fix it again using::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # swupd verify --fix --picky -m 26200
 | 
					      # swupd verify --fix --picky -m 31080
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Use the ``swupd bundle-add`` command and add needed Clear Linux
 | 
					#. Use `acrn_quick_setup.sh <https://github.com/projectacrn/acrn-hypervisor/blob/84c2b8819f479c5e6f4641490ff4bf6004f112d1/doc/getting-started/acrn_quick_setup.sh>`_ 
 | 
				
			||||||
   OS bundles::
 | 
					   to automatically install ACRN::
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      # sh acrn_quick_setup.sh -s 31080 -i 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#. After installation, the system will automatically start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#. Reboot the system, choose "ACRN Hypervisor" and launch Clear Linux OS
 | 
				
			||||||
 | 
					   Service VM. If the EFI boot order is not right, use :kbd:`F10`
 | 
				
			||||||
 | 
					   on boot up to enter the EFI menu and choose "ACRN Hypervisor".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      # swupd bundle-add openssh-server sudo network-basic \
 | 
					 | 
				
			||||||
          kernel-iot-lts2018 os-clr-on-clr os-core-dev \
 | 
					 | 
				
			||||||
          python3-basic dfu-util dtc
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Install the graphics UI if necessary. Use only one of the two
 | 
					#. Install the graphics UI if necessary. Use only one of the two
 | 
				
			||||||
   options listed below (this guide uses the first GNOME on Wayland option)::
 | 
					   options listed below (this guide uses the first GNOME on Wayland option)::
 | 
				
			||||||
@@ -184,56 +189,7 @@ Service OS
 | 
				
			|||||||
   screen, click on the setting button and choose "GNOME on Wayland". Then
 | 
					   screen, click on the setting button and choose "GNOME on Wayland". Then
 | 
				
			||||||
   chose the <username> and enter the password to login.
 | 
					   chose the <username> and enter the password to login.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Building ACRN kernel for AGL (User VM)
 | 
				
			||||||
#. Build ACRN. In this demo we use the ACRN v0.3 release.
 | 
					 | 
				
			||||||
   Open a terminal window in Clear Linux OS desktop, create a workspace,
 | 
					 | 
				
			||||||
   install needed tools, clone the ACRN Hypervisor repo source, and build ACRN::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $ mkdir workspace
 | 
					 | 
				
			||||||
      $ cd workspace
 | 
					 | 
				
			||||||
      $ pip3 install kconfiglib
 | 
					 | 
				
			||||||
      $ git clone https://github.com/projectacrn/acrn-hypervisor
 | 
					 | 
				
			||||||
      $ git checkout tags/v0.3
 | 
					 | 
				
			||||||
      $ make PLATFORM=uefi
 | 
					 | 
				
			||||||
      $ sudo make install
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Install and enable ACRN::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $ sudo mount /dev/sda1 /mnt
 | 
					 | 
				
			||||||
      $ sudo mkdir /mnt/EFI/acrn
 | 
					 | 
				
			||||||
      $ sudo cp /usr/lib/acrn/acrn.efi /mnt/EFI/acrn/
 | 
					 | 
				
			||||||
      $ efibootmgr -c -l "\EFI\acrn\acrn.efi" -d /dev/sda -p 1 \
 | 
					 | 
				
			||||||
          -L "ACRN Hypervisor" \
 | 
					 | 
				
			||||||
          -u "bootloader=\EFI\org.clearlinux\bootloaderx64.efi uart=port@0x3f8"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $ sudo cp /usr/share/acrn/samples/nuc/acrn.conf /mnt/loader/entries/
 | 
					 | 
				
			||||||
      $ sudo vi /mnt/loader/entries/acrn.conf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   Modify the acrn.conf file as shown below and save it::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      title The ACRN Service OS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      linux
 | 
					 | 
				
			||||||
      /EFI/org.clearlinux/kernel-org.clearlinux.iot-lts2018-sos.4.19.0-19
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      options pci_devices_ignore=(0:18:1) console=tty0 console=ttyS0
 | 
					 | 
				
			||||||
      root=/dev/sda3 rw rootwait ignore_loglevel no_timer_check consoleblank=0
 | 
					 | 
				
			||||||
      i915.nuclear_pageflip=1 i915.avail_planes_per_pipe=0x00000F i915.domain_plane_owners=0x022211110000
 | 
					 | 
				
			||||||
      i915.enable_gvt=1 i915.enable_guc=0 hvlog=2M@0x1FE00000
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Set a longer timeout::
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      $ sudo clr-boot-manager set-timeout 20
 | 
					 | 
				
			||||||
      $ sudo clr-boot-manager update
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#. Reboot the system, choose "ACRN Hypervisor" and launch Clear Linux OS
 | 
					 | 
				
			||||||
   SOS. If the EFI boot order is not right, use :kbd:`F10`
 | 
					 | 
				
			||||||
   on boot up to enter the EFI menu and choose "ACRN Hypervisor".
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Building ACRN kernel for AGL (UOS)
 | 
					 | 
				
			||||||
==================================
 | 
					==================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
In this demo, we use acrn-kernel as the baseline for development for AGL.
 | 
					In this demo, we use acrn-kernel as the baseline for development for AGL.
 | 
				
			||||||
@@ -243,25 +199,26 @@ In this demo, we use acrn-kernel as the baseline for development for AGL.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      $ cd workspace
 | 
					      $ cd workspace
 | 
				
			||||||
      $ git clone https://github.com/projectacrn/acrn-kernel
 | 
					      $ git clone https://github.com/projectacrn/acrn-kernel
 | 
				
			||||||
      $ git checkout tags/acrn-2018w49.3-140000p
 | 
					      $ git checkout tags/acrn-2019w39.1-140000p
 | 
				
			||||||
      $ make menuconfig
 | 
					      $ cp kernel_config_uos .config
 | 
				
			||||||
 | 
					      $ vi .config
 | 
				
			||||||
 | 
					      $ make olddefconfig   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Load the **kernel_uos_config** for the UOS kernel build, and verify
 | 
					   Load the **.config** for the User VM kernel build, and verify
 | 
				
			||||||
   the following configs options are on::
 | 
					   the following configs options are on::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      CONFIG_LOCAL_VERSION="-uos"
 | 
					      CONFIG_LOCALVERSION="-uos"
 | 
				
			||||||
      CONFIG_SECURITY_SMACK=y
 | 
					      CONFIG_SECURITY_SMACK=y
 | 
				
			||||||
      CONFIG_SECURITY_SMACK_BRINGUP=y
 | 
					      CONFIG_SECURITY_SMACK_BRINGUP=y
 | 
				
			||||||
      CONFIG_DEFAULT_SECURITY_SMACK=y
 | 
					      CONFIG_DEFAULT_SECURITY_SMACK=y
 | 
				
			||||||
      CONFIG_EXT4_FS=y
 | 
					      CONFIG_EXT4_FS=y
 | 
				
			||||||
      CONFIG_EXT4_USE_FOR_EXT23=y
 | 
					      CONFIG_EXT4_USE_FOR_EXT2=y
 | 
				
			||||||
      CONFIG_EXT4_FS_POSIX_ACL=y
 | 
					      CONFIG_EXT4_FS_POSIX_ACL=y
 | 
				
			||||||
      CONFIG_EXT4_FS_SECURITY=y
 | 
					      CONFIG_EXT4_FS_SECURITY=y
 | 
				
			||||||
      # CONFIG_MODULES is not set
 | 
					      CONFIG_CAN=y
 | 
				
			||||||
      CONFIG_CAN
 | 
					      CONFIG_CAN_VCAN=y
 | 
				
			||||||
      CONFIG_CAN_VCAN
 | 
					      CONFIG_CAN_SLCAN=y
 | 
				
			||||||
      CONFIG_CAN_SLCAN
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Build the kernel::
 | 
					#. Build the kernel::
 | 
				
			||||||
@@ -302,46 +259,44 @@ Setting up AGLs
 | 
				
			|||||||
   the following content::
 | 
					   the following content::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #!/bin/bash
 | 
					      #!/bin/bash
 | 
				
			||||||
      function launch_agl()
 | 
					      set -x
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      offline_path="/sys/class/vhm/acrn_vhm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Check the device file of /dev/acrn_hsm to determine the offline_path
 | 
				
			||||||
 | 
					      if [ -e "/dev/acrn_hsm" ]; then
 | 
				
			||||||
 | 
					      offline_path="/sys/class/acrn/acrn_hsm"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      function launch_clear()
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
					      mac=$(cat /sys/class/net/e*/address)
 | 
				
			||||||
      vm_name=vm$1
 | 
					      vm_name=vm$1
 | 
				
			||||||
 | 
					      mac_seed=${mac:9:8}-${vm_name}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #check if the vm is running or not
 | 
					      #check if the vm is running or not
 | 
				
			||||||
      vm_ps=$(pgrep -a -f acrn-dm)
 | 
					      vm_ps=$(pgrep -a -f acrn-dm)
 | 
				
			||||||
        result=$(echo $vm_ps | grep "${vm_name}")
 | 
					      result=$(echo $vm_ps | grep -w "${vm_name}")
 | 
				
			||||||
      if [[ "$result" != "" ]]; then
 | 
					      if [[ "$result" != "" ]]; then
 | 
				
			||||||
        echo "$vm_name is running, can't create twice!"
 | 
					        echo "$vm_name is running, can't create twice!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # create a unique tap device for each VM
 | 
					      #logger_setting, format: logger_name,level; like following
 | 
				
			||||||
        tap=tap2
 | 
					      logger_setting="--logger_setting console,level=4;kmsg,level=3"
 | 
				
			||||||
        tap_exist=$(ip a | grep "$tap" | awk '{print $1}')
 | 
					 | 
				
			||||||
        if [ "$tap_exist"x != "x" ]; then
 | 
					 | 
				
			||||||
          echo "tap device existed, reuse $tap"
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
          ip tuntap add dev $tap mode tap
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # if acrn-br0 exists, add VM's unique tap device under it
 | 
					 | 
				
			||||||
        br_exist=$(ip a | grep acrn-br0 | awk '{print $1}')
 | 
					 | 
				
			||||||
        if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then
 | 
					 | 
				
			||||||
          echo "acrn-br0 bridge aleady exists, adding new tap device to it..."
 | 
					 | 
				
			||||||
          ip link set "$tap" master acrn-br0
 | 
					 | 
				
			||||||
          ip link set dev "$tap" down
 | 
					 | 
				
			||||||
          ip link set dev "$tap" up
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #for memsize setting
 | 
					      #for memsize setting
 | 
				
			||||||
      mem_size=2048M
 | 
					      mem_size=2048M
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        acrn-dm -A -m $mem_size -c $2 -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio \
 | 
					      acrn-dm -A -m $mem_size -c $2 -s 0:0,hostbridge \
 | 
				
			||||||
        -s 2,pci-gvt -G "$3" \
 | 
					        -s 2,pci-gvt -G "$3" \
 | 
				
			||||||
          -s 5,virtio-console,@pty:pty_port \
 | 
					        -s 3,virtio-blk,/root/agl-ivi.wic \
 | 
				
			||||||
 | 
					        -s 4,virtio-net,tap0 \
 | 
				
			||||||
 | 
					        -s 5,virtio-console,@stdio:stdio_port \
 | 
				
			||||||
        -s 6,virtio-hyper_dmabuf \
 | 
					        -s 6,virtio-hyper_dmabuf \
 | 
				
			||||||
          -s 3,virtio-blk,/root/agl_ivi.wic \
 | 
					 | 
				
			||||||
          -s 4,virtio-net,$tap \
 | 
					 | 
				
			||||||
        -s 7,xhci,1-4 \
 | 
					        -s 7,xhci,1-4 \
 | 
				
			||||||
 | 
					        $logger_setting \
 | 
				
			||||||
 | 
					        --mac_seed $mac_seed \
 | 
				
			||||||
        -k /root/bzImage-4.19.0-uos \
 | 
					        -k /root/bzImage-4.19.0-uos \
 | 
				
			||||||
        -B "root=/dev/vda2 rw rootwait maxcpus=$2 nohpet console=tty0 console=hvc0 \
 | 
					        -B "root=/dev/vda2 rw rootwait maxcpus=$2 nohpet console=tty0 console=hvc0 \
 | 
				
			||||||
        console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \
 | 
					        console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \
 | 
				
			||||||
@@ -350,70 +305,67 @@ Setting up AGLs
 | 
				
			|||||||
        i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name
 | 
					        i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # offline Service VM CPUs except BSP before launch User VM
 | 
				
			||||||
      # offline SOS CPUs except BSP before launch UOS
 | 
					      for i in `ls -d /sys/devices/system/cpu/cpu[1-99]`; do
 | 
				
			||||||
      for i in `ls -d /sys/devices/system/cpu/cpu[2-99]`; do
 | 
					 | 
				
			||||||
              online=`cat $i/online`
 | 
					              online=`cat $i/online`
 | 
				
			||||||
        idx=`echo $i | tr -cd "[2-99]"`
 | 
					              idx=`echo $i | tr -cd "[1-99]"`
 | 
				
			||||||
              echo cpu$idx online=$online
 | 
					              echo cpu$idx online=$online
 | 
				
			||||||
              if [ "$online" = "1" ]; then
 | 
					              if [ "$online" = "1" ]; then
 | 
				
			||||||
                      echo 0 > $i/online
 | 
					                      echo 0 > $i/online
 | 
				
			||||||
          echo $idx > /sys/class/vhm/acrn_vhm/offline_cpu
 | 
					                      # during boot time, cpu hotplug may be disabled by pci_device_probe during a pci module insmod
 | 
				
			||||||
 | 
					                      while [ "$online" = "1" ]; do
 | 
				
			||||||
 | 
					                        sleep 1
 | 
				
			||||||
 | 
					                        echo 0 > $i/online
 | 
				
			||||||
 | 
					                        online=`cat $i/online`
 | 
				
			||||||
 | 
					                      done
 | 
				
			||||||
 | 
					                      echo $idx > ${offline_path}/offline_cpu
 | 
				
			||||||
              fi
 | 
					              fi
 | 
				
			||||||
      done
 | 
					      done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      launch_agl 1 1 "64 448 8" 0x000F00 agl
 | 
					      launch_clear 1 1 "64 448 8" 0x000F00 agl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Create the ``launch_rse.sh`` script for the AGL RSE VM with this
 | 
					#. Create the ``launch_rse.sh`` script for the AGL RSE VM with this content::
 | 
				
			||||||
   content::
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #!/bin/bash
 | 
					      #!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      function launch_agl()
 | 
					      set -x 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      offline_path="/sys/class/vhm/acrn_vhm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Check the device file of /dev/acrn_hsm to determine the offline_path
 | 
				
			||||||
 | 
					      if [ -e "/dev/acrn_hsm" ]; then
 | 
				
			||||||
 | 
					      offline_path="/sys/class/acrn/acrn_hsm"
 | 
				
			||||||
 | 
					      fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      function launch_clear()
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
					      mac=$(cat /sys/class/net/e*/address)
 | 
				
			||||||
      vm_name=vm$1
 | 
					      vm_name=vm$1
 | 
				
			||||||
 | 
					      mac_seed=${mac:9:8}-${vm_name}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #check if the vm is running or not
 | 
					      #check if the vm is running or not
 | 
				
			||||||
      vm_ps=$(pgrep -a -f acrn-dm)
 | 
					      vm_ps=$(pgrep -a -f acrn-dm)
 | 
				
			||||||
        result=$(echo $vm_ps | grep "${vm_name}")
 | 
					      result=$(echo $vm_ps | grep -w "${vm_name}")
 | 
				
			||||||
      if [[ "$result" != "" ]]; then
 | 
					      if [[ "$result" != "" ]]; then
 | 
				
			||||||
        echo "$vm_name is running, can't create twice!"
 | 
					        echo "$vm_name is running, can't create twice!"
 | 
				
			||||||
        exit
 | 
					        exit
 | 
				
			||||||
      fi
 | 
					      fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      #logger_setting, format: logger_name,level; like following
 | 
				
			||||||
        # create a unique tap device for each VM
 | 
					      logger_setting="--logger_setting console,level=4;kmsg,level=3"
 | 
				
			||||||
        tap=tap1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        tap_exist=$(ip a | grep "$tap" | awk '{print $1}')
 | 
					 | 
				
			||||||
        if [ "$tap_exist"x != "x" ]; then
 | 
					 | 
				
			||||||
          echo "tap device existed, reuse $tap"
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
          ip tuntap add dev $tap mode tap
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        # if acrn-br0 exists, add VM's unique tap device under it
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        br_exist=$(ip a | grep acrn-br0 | awk '{print $1}')
 | 
					 | 
				
			||||||
        if [ "$br_exist"x != "x" -a "$tap_exist"x = "x" ]; then
 | 
					 | 
				
			||||||
          echo "acrn-br0 bridge aleady exists, adding new tap device to it..."
 | 
					 | 
				
			||||||
          ip link set "$tap" master acrn-br0
 | 
					 | 
				
			||||||
          ip link set dev "$tap" down
 | 
					 | 
				
			||||||
          ip link set dev "$tap" up
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      #for memsize setting
 | 
					      #for memsize setting
 | 
				
			||||||
      mem_size=2048M
 | 
					      mem_size=2048M
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      acrn-dm -A -m $mem_size -c $2 -s 0:0,hostbridge -U 495ae2e5-2603-4d64-af76-d4bc5a8ec0e5 \
 | 
				
			||||||
        acrn-dm -A -m $mem_size -c $2 -s 0:0,hostbridge -s 1:0,lpc -l com1,stdio \
 | 
					 | 
				
			||||||
        -s 2,pci-gvt -G "$3" \
 | 
					        -s 2,pci-gvt -G "$3" \
 | 
				
			||||||
        -s 5,virtio-console,@pty:pty_port \
 | 
					        -s 5,virtio-console,@stdio:stdio_port \
 | 
				
			||||||
        -s 6,virtio-hyper_dmabuf \
 | 
					        -s 6,virtio-hyper_dmabuf \
 | 
				
			||||||
        -s 3,virtio-blk,/root/agl_rse.wic \
 | 
					        -s 3,virtio-blk,/root/agl-rse.wic \
 | 
				
			||||||
        -s 4,virtio-net,tap1 \
 | 
					        -s 4,virtio-net,tap0 \
 | 
				
			||||||
        -s 7,xhci,1-5 \
 | 
					        -s 7,xhci,1-5 \
 | 
				
			||||||
 | 
					        $logger_setting \
 | 
				
			||||||
 | 
					        --mac_seed $mac_seed \
 | 
				
			||||||
        -k /root/bzImage-4.19.0-uos \
 | 
					        -k /root/bzImage-4.19.0-uos \
 | 
				
			||||||
        -B "root=/dev/vda2 rw rootwait maxcpus=$2 nohpet console=tty0 console=hvc0 \
 | 
					        -B "root=/dev/vda2 rw rootwait maxcpus=$2 nohpet console=tty0 console=hvc0 \
 | 
				
			||||||
        console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \
 | 
					        console=ttyS0 no_timer_check ignore_loglevel log_buf_len=16M \
 | 
				
			||||||
@@ -422,19 +374,24 @@ Setting up AGLs
 | 
				
			|||||||
        i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name
 | 
					        i915.enable_guc_submission=0 i915.enable_guc=0" $vm_name
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # offline Service VM CPUs except BSP before launch User VM
 | 
				
			||||||
      # offline SOS CPUs except BSP before launch UOS
 | 
					      for i in `ls -d /sys/devices/system/cpu/cpu[1-99]`; do
 | 
				
			||||||
      for i in `ls -d /sys/devices/system/cpu/cpu[2-99]`; do
 | 
					 | 
				
			||||||
              online=`cat $i/online`
 | 
					              online=`cat $i/online`
 | 
				
			||||||
        idx=`echo $i | tr -cd "[2-99]"`
 | 
					              idx=`echo $i | tr -cd "[1-99]"`
 | 
				
			||||||
              echo cpu$idx online=$online
 | 
					              echo cpu$idx online=$online
 | 
				
			||||||
              if [ "$online" = "1" ]; then
 | 
					              if [ "$online" = "1" ]; then
 | 
				
			||||||
                      echo 0 > $i/online
 | 
					                      echo 0 > $i/online
 | 
				
			||||||
          echo $idx > /sys/class/vhm/acrn_vhm/offline_cpu
 | 
					                      # during boot time, cpu hotplug may be disabled by pci_device_probe during a pci module insmod
 | 
				
			||||||
 | 
					                      while [ "$online" = "1" ]; do
 | 
				
			||||||
 | 
					                        sleep 1
 | 
				
			||||||
 | 
					                        echo 0 > $i/online
 | 
				
			||||||
 | 
					                        online=`cat $i/online`
 | 
				
			||||||
 | 
					                      done
 | 
				
			||||||
 | 
					                      echo $idx > ${offline_path}/offline_cpu
 | 
				
			||||||
              fi
 | 
					              fi
 | 
				
			||||||
      done
 | 
					      done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      launch_agl 2 1 "64 448 8" 0x070000 agl
 | 
					      launch_clear 2 1 "64 448 8" 0x070000 agl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#. Launch the AGL IVI VM::
 | 
					#. Launch the AGL IVI VM::
 | 
				
			||||||
@@ -528,4 +485,4 @@ Setting up AGLs
 | 
				
			|||||||
Congratulations! You've successfully launch the demo system. It should
 | 
					Congratulations! You've successfully launch the demo system. It should
 | 
				
			||||||
look similar to :numref:`agl-demo-setup` at the beginning of this
 | 
					look similar to :numref:`agl-demo-setup` at the beginning of this
 | 
				
			||||||
document. AGL as IVI and RSE work independently on top
 | 
					document. AGL as IVI and RSE work independently on top
 | 
				
			||||||
of ACRN and you can interact with them via the touch screen.
 | 
					of ACRN and you can interact with them via the mouse.
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user