Tips for Linux in HVM domain

How to fix bootup kernel error

This concerns the following:

BUG: soft lockup - CPU#0 stuck for 23s! [systemd-udevd:244]

This has been tested with Qubes R3.2-RC3. Note that the issue may be related to the bochs_drm video driver. To fix this:

  1. Edit the file /etc/default/grub.

  2. Find the line which starts:

    GRUB_CMDLINE_LINUX=
    
  3. Remove this text from that line:

    rhgb
    
  4. Add this text to that line:

    modprobe.blacklist=bochs_drm
    
  5. Run this command:

    grub2-mkconfig --output=/boot/grub2/grub.cfg
    

The HVM should no longer display the error if it’s related to the bochs_drm kernel driver.

Screen resolution

Some kernel/Xorg combination use only 640x480 in HVM, which is quite small. To enable maximum resolution, some changes in Xorg configuration are needed:

  1. Force “vesa” video driver
  2. Provide wide horizontal synchronization range

To achieve it (all commands run as root):

  1. Generate XOrg configuration (if you don’t have it):

    X -configure :1 && mv ~/xorg.conf.new /etc/X11/xorg.conf
    
  2. Add HorizSync line to Monitor section, it should look something like:

    Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
            HorizSync    30.0 - 60.0
    EndSection
    
  3. Change driver to “vesa” in Device section:

    Section "Device"
            # (...)
            Identifier  "Card0"
            Driver      "vesa"
            VendorName  "Technical Corp."
            BoardName   "Unknown Board"
            BusID       "PCI:0:2:0"
    EndSection
    

Now you should get at least 1280x1024 and be able to choose other modes.

Qubes agents

Linux Qubes agents are written with PV domain in mind, but it looks to be possible to run them also in HVM domain. However some work is required to achieve it. Check this thread.