lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5fc083d4-1dbd-f2f9-3059-0e3e8dda9b25@oracle.com>
Date:   Tue, 11 Dec 2018 11:29:21 -0800
From:   Maran Wilson <maran.wilson@...cle.com>
To:     Borislav Petkov <bp@...en8.de>
Cc:     x86@...nel.org, xen-devel@...ts.xenproject.org,
        linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
        pbonzini@...hat.com, jgross@...e.com, boris.ostrovsky@...cle.com,
        bp@...e.de, dave.hansen@...ux.intel.com, davem@...emloft.net,
        gregkh@...uxfoundation.org, hpa@...or.com, jpoimboe@...hat.com,
        kirill.shutemov@...ux.intel.com, luto@...nel.org,
        mchehab@...nel.org, mingo@...hat.com, rdunlap@...radead.org,
        tglx@...utronix.de, thomas.lendacky@....com, hch@...radead.org,
        roger.pau@...rix.com, rkrcmar@...hat.com
Subject: Re: [PATCH v9 0/7] KVM: x86: Allow Qemu/KVM to use PVH entry point

On 12/11/2018 5:18 AM, Borislav Petkov wrote:
> On Mon, Dec 10, 2018 at 11:05:34AM -0800, Maran Wilson wrote:
>> For certain applications it is desirable to rapidly boot a KVM virtual
>> machine. In cases where legacy hardware and software support within the
>> guest is not needed, Qemu should be able to boot directly into the
>> uncompressed Linux kernel binary without the need to run firmware.
>>
>> There already exists an ABI to allow this for Xen PVH guests and the ABI
>> is supported by Linux and FreeBSD:
>>
>>     https://xenbits.xen.org/docs/unstable/misc/pvh.html
>>
>> This patch series would enable Qemu to use that same entry point for
>> booting KVM guests.
> How would I do that, practically?
>
> Looking at those here:
>
>>   * Qemu and qboot RFC patches have been posted to show one example of how
>>     this functionality can be used. Some preliminary numbers are available
>>     in those cover letters showing the KVM guest boot time improvement.
>>        Qemu:
>>        http://lists.nongnu.org/archive/html/qemu-devel/2018-12/msg00957.html
>>        qboot:
>>        http://lists.nongnu.org/archive/html/qemu-devel/2018-12/msg00953.html
> I might still need to do some dancing to get stuff going.

Is your question about what options you need to provide to Qemu? Or is 
your question about the SW implementation choices?

Assuming the former... once you have compiled all 3 new binaries 
(kernel, Qemu, and qboot) then you simply invoke qemu the same way you 
normally invoke qemu with qboot + kernel binary, except you provide the 
vmlinux (uncompressed) kernel binary when specifying the "-kernel" 
parameter. Qemu/qboot will automatically detect that you have provided 
an ELF binary, find the PVH ELF note to locate the entry point, and 
proceed to boot the kernel via that method. On the other hand, if you 
leave all the Qemu options as-is, but simply provide the bzImage 
(compressed) kernel binary from the same build, Qemu/qboot will boot the 
way it has always done and not look for PVH.

To make it more concrete, here's an example of how I had been invoking 
PVH boot recently:

    x86_64-softmmu/qemu-system-x86_64 \
      -name testvm01 \
      -machine q35,accel=kvm,nvdimm \
      -cpu host \
      -m 1024,maxmem=20G,slots=2 \
      -smp 1 \
      -nodefaults \
      -kernel binaries/vmlinux \
      -object 
memory-backend-file,id=mem0,share,mem-path=binaries/containers.img,size=235929600 
\
      -device nvdimm,memdev=mem0,id=nv0 \
      -append 'console=ttyS0,115200,8n1 root=/dev/pmem0p1 panic=1 rw 
init=/usr/lib/systemd/systemd rootfstype=ext4' \
      -bios binaries/bios.bin \
      -serial mon:stdio

Thanks,
-Maran



> Thx.
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ