Is there any way to create emulator for Linux KVM - linux

I want to test Linux KVM functionality. So to test, Instead of creating the Linux KVM (Hypervisor), I want to setup the emulator for that, which reduces the cost of hardware/resources.
Please let me know if is there any way to create emulator for Linux KVM ?

As you are looking for the emulation then BOCHS is your choice. One of the KVM's requirements is the Virtualization support by the host CPU.
According to the chip support list it emulates AMD Phenom X3 8650 among other AMD and Intel models. The real AMD Phenom X3 8650 does support AMD-V technology. However, I can't tell you to what extent the implementation is complete. Anyway, you could try all emulated AMD models that supports AMD-V and Intel models that supports VT-x and see what happens.
However, do not expect it to be sufficiently fast as you are going to run KVM guest inside KVM host running inside BOCHS emulator.

Related

Linux + Windows booting options

What I've done in the past is simply Dual boot, but I would like to not have to reboot my computer in order to switch OS's. Specifically, what I'd like is:
Computer would mainly run Linux,
When I want to play a Windows only game I can switch over to Windows, for that period of time then return to Linux.
Both Linux and Windows need to run up to native in speed.
I'm looking for suggestions in setting this up.
I've looked into Xen, however, I hear that Xen doesn't support 3D graphics? is this accurate. I've also looked into WineD3D and VMGL. However, Wine won't play every game, so I'd still need the Windows VM, and VMGL doesn't seem to work universally either.
I'm running two different machines that I plan to put this setup on:
Laptop:
Intel i7 4720HQ
16GB Ram
NVIDIA GeForce GTX 965M
Desktop:
AMD FX-8350
16GB Ram
EVGA GeForce GTX 960
I just joined and the "Tour" said, don't ask questions that could lead to a discussion than an answer. Anyway, If gaming is your primary goal, have windows as primary boot & dive into linux as VM. Otherwise you need to find a hyper-visor that provides 3D services or pass-through to your actual GPU.
There is a discussion here

What is a Kernel-based Virtual Machine?

According to linux-kvm.org:
KVM for (Kernel-based Virtual Machine) is a full virtualization
solution for Linux on x86 hardware.
However, I have no clue about the meaning of virtualization in this context or its benefits. I am a beginner and these buzzword-filled definitions are not helping.
KVM is a virtualization infrastructure for the Linux kernel that turns it into a hypervisor. It was merged into the Linux kernel mainline in kernel version 2.6.20, which was released on February 5, 2007. KVM requires a processor with hardware virtualization extension.
you can find more information here
KVM is a virtualization technology which can run Another OS onto your current linux.
Much like VMWare and other virtualization technologies out there.

Linux porting for RISCV multicore processor

We are developing a multi-core processor with RISCV architecture.
We had already ported Linux for single-core RISCV processor and it is working on our own FPGA based board with busybox rootfs.
I want to port Linux for multi-core RISCV processor now.
My doubts are:
Whether the gnu-riscv-gcc toolchain available now supports multi-core?
Whether spike available now supports multi-core?
Should I make any change to the bbl bootloader (Berkely bootloader) to support multi-core?
What are the changes I should make for my single-core Linux kernel to support multi-core?
The current RISC-V ecosystem already supports SMP Linux.
No changes to the compiler are required for multicore.
Spike can simulate multicore when using the '-p' flag.
BBL supports multicore.
Before building linux, configure it to support SMP.
Any hiccups, are probably due to the toolchain out of sync with the newest privileged spec changes. Last Fall, users successfully built and ran multicore Linux on RISC-V.
This is all expected to work out of the box. My standard testing flow for Linux and QEMU pull requests is to boot a Fedora root filesystem on QEMU via Linux+BBL. Instructions can be found on the QEMU Wiki Article about RISC-V. This will boot in our "virt" board, which uses VirtIO based devices. These devices have standard upstream Linux drivers that are very well supported, so there isn't really any platform-level work to be done.
In addition to the standard VirtIO-based devices, SiFive has devices that are part of the Freedom SOC platform. If you platform differs significantly from SiFive's Freedom platform then you'll need some additional drivers in both Linux and BBL.
We maintain an out-of-tree version of the drivers we haven't cleaned up for upstream yet in freedom-u-sdk, which should give you a rough idea of how much work it is. Running make qemu in that repository will boot Linux on QEMU via BBL, and running make will show you how to flash an SD card image for the HiFive Unleashed board.

It is possible to combine Linux (one core) and bare-bone firmware (second core) on one dual core computer?

I was checking project Embedded ECG data acquisition system from instructables and there is mension a TODO:
Combining the OS and bare-bone firmware
UNDER CONSTRUCTION
** Since the bootloader only loads one firmware to the Core,
I need to modify the ELF file, to have Linux and bare-bone Core at the same time **
It seems to me as interresting approach how to make full featured Linux and critical realtime OS on one board (for example Raspberry PI). It is really possible? I have heard, that Linux can be setup to not use some cores. But I suppose that Linux use virtual memory and bare-bone firmware does usually not. Can the memory be shared between these OS. What about interruptions? Can these two OS handle interruptions separately? Can boot loader load these two systems to both core at once? I can imagine that one thread in boot loader will skip to address of bare-bone OS. It is correct approach?
Yes, it is possible, even if the full setup is not straightforward.
A couple of examples:
Xilinx released a white paper explaining how to run Linux + FreeRTOS on a dual-core Zynq ARM
Evidence explained how to run Linux + Erika Enterprise RTOS on a dual-core Freescale imx6 ARM
Those examples are based on system partitioning by hard-coding the assignment of the different cores to different OSs.
If your system is capable of hardware-assisted virtualization, you can use an hypervisor for making (and enforcing) such partitioning. You can for example use Siemen's Jailhouse, KVM or Xen.
Kind of. This is what people already do to some extent with network stack / driver. For example IsoStack idea works in a similar way. There's a project which actually implements this on linux by dedicating cores to network cards, but my google-fu is failing me.

Can I run CUDA on Intel's integrated graphics processor?

I have a very simple Toshiba Laptop with i3 processor. Also, I do not have any expensive graphics card. In the display settings, I see Intel(HD) Graphics as display adapter. I am planning to learn some cuda programming. But, I am not sure, if I can do that on my laptop as it does not have any nvidia's cuda enabled GPU.
In fact, I doubt, if I even have a GPU o_o
So, I would appreciate if someone can tell me if I can do CUDA programming with the current configuration and if possible also let me know what does Intel(HD) Graphics mean?
At the present time, Intel graphics chips do not support CUDA. It is possible that, in the nearest future, these chips will support OpenCL (which is a standard that is very similar to CUDA), but this is not guaranteed and their current drivers do not support OpenCL either. (There is an Intel OpenCL SDK available, but, at the present time, it does not give you access to the GPU.)
Newest Intel processors (Sandy Bridge) have a GPU integrated into the CPU core. Your processor may be a previous-generation version, in which case "Intel(HD) graphics" is an independent chip.
Portland group have a commercial product called CUDA x86, it is hybrid compiler which creates CUDA C/ C++ code which can either run on GPU or use SIMD on CPU, this is done fully automated without any intervention for the developer. Hope this helps.
Link: http://www.pgroup.com/products/pgiworkstation.htm
If you're interested in learning a language which supports massive parallelism better go for OpenCL since you don't have an NVIDIA GPU. You can run OpenCL on Intel CPUs, but at best you can learn to program SIMDs.
Optimization on CPU and GPU are different. I really don't think you can use Intel card for GPGPU.
Intel HD Graphics is usually the on-CPU graphics chip in newer Core i3/i5/i7 processors.
As far as I know it doesn't support CUDA (which is a proprietary NVidia technology), but OpenCL is supported by NVidia, ATi and Intel.
in 2020 ZLUDA was created which provides CUDA API for Intel GPUs. It is not production ready yet though.

Resources