summaryrefslogtreecommitdiffstats
path: root/tools/lguest
Commit message (Collapse)AuthorAgeFilesLines
* lguest: support emerg_wr in console device in example launcher.Rusty Russell2015-02-111-3/+14
| | | | | | | This is a magic register which causes a character to be outputted: it can be used even before the device is configured. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: remove support for lguest bus in demonstration launcher.Rusty Russell2015-02-111-333/+22
| | | | Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: define VIRTIO_CONFIG_NO_LEGACY in example launcher.Rusty Russell2015-02-111-0/+1
| | | | | | We only support virtio 1.0 now Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: Convert console device to virtio 1.0 PCI.Rusty Russell2015-02-111-7/+7
| | | | Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: Convert entropy device to virtio 1.0 PCI.Rusty Russell2015-02-111-5/+7
| | | | Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: Convert net device to virtio 1.0 PCI.Rusty Russell2015-02-111-20/+28
| | | | | | | | | The only real change here (other than using the PCI bus) is that we didn't negotiate VIRTIO_NET_F_MRG_RXBUF before, so the format of the packet header changed with virtio 1.0; we need TUNSETVNETHDRSZ on the tun fd to tell it about the extra two bytes. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: Convert block device to virtio 1.0 PCI.Rusty Russell2015-02-111-21/+9
| | | | | | | | | We remove SCSI support (which was removed for 1.0) and VIRTIO_BLK_F_FLUSH feature flag (removed too, since it's compulsory for 1.0). The rest is mainly mechanical. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: add a dummy PCI host bridge.Rusty Russell2015-02-111-0/+14
| | | | | | Otherwise Linux fails to find the bus. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: fix failure to find linux/virtio_types.hRusty Russell2015-02-111-1/+7
| | | | | | | | | | | | We want to use the local kernel headers, but -I../../include/uapi leads us into a world of hurt. Instead we create a dummy include/ dir with symlinks. If we just use #include "../../include/uapi/linux/virtio_blk.h" we get: ../../include/uapi/linux/virtio_blk.h:31:32: fatal error: linux/virtio_types.h: No such file or directory #include <linux/virtio_types.h> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: implement virtio-PCI MMIO accesses.Rusty Russell2015-02-111-2/+490
| | | | | | | | | | For each device, We need to include the vendor capabilities to demark where virtio common, notification and ISR regions are (we put them all in BAR0). We need to handle the switching of the virtqueues using the accessors. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: add PCI config space emulation to example launcher.Rusty Russell2015-02-111-5/+211
| | | | | | | This handles ioport 0xCF8 and 0xCFC accesses, which are used to read/write PCI device config space. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: decode mmio accesses for PCI in example launcher.Rusty Russell2015-02-111-0/+167
| | | | | | | | We don't do anything with them yet (emulate_mmio_write and emulate_mmio_read are stubs), but we decode the instructions and search for the device they're hitting. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: add MMIO region allocator in example launcher.Rusty Russell2015-02-111-5/+23
| | | | | | | | This is where we point our PCI BARs, so that we can intercept MMIO accesses. We tell the kernel about it so any faults in this area are directed to us. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: add iomem region, where guest page faults get sent to userspace.Rusty Russell2015-02-111-1/+2
| | | | | | This lets us implement PCI. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: suppress PS/2 keyboard polling.Rusty Russell2015-02-111-0/+4
| | | | | | | | | While hacking on getting I/O out to the lguest launcher, I noticed that returning 0xFF for the PS/2 keyboard status made it spin for a while thinking there was a key pending. Fix this by returning 1 instead of 0xFF. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: send trap 13 through to userspace.Rusty Russell2015-02-111-0/+149
| | | | | | | | | | | We copy 7 bytes at eip for userspace's instruction decode; we have to carefully handle the case where eip is at the end of a page. We can't leave this to userspace since kernel has all the page table decode logic. The decode logic moves to userspace, basically unchanged. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: write more information to userspace about pending traps.Rusty Russell2015-02-111-6/+10
| | | | | | This is preparation for userspace handling MMIO and ioport accesses. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: have --rng read from /dev/urandom not /dev/random.Rusty Russell2015-02-111-5/+5
| | | | | | Theoretical debates aside, now it boots. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tools/lguest: offer VIRTIO_F_ANY_LAYOUT for net device.Rusty Russell2013-07-151-0/+6
| | | | | | We don't care about layout, so advertise that fact. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: fix example launcher compilation for broken glibc headers.Rusty Russell2013-07-042-9/+9
| | | | | | | | | | | | | Somehow a naked u16 slipped into the glibc headers on my Ubuntu machine (i386 2.17-0ubuntu5), breaking compile: In file included from lguest.c:46:0: /usr/include/linux/virtio_net.h:188:2: error: unknown type name ‘u16’ We use the kernel-style types anyway, just define them before the includes. Also remove the advice on adding missing headers: that no longer works. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tools/lguest: real barriers.Rusty Russell2013-07-021-2/+2
| | | | | | | Lguest guests are UP, but the host is probably SMP, so real barriers are required in case the device thread and the guest are on different CPUs. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tools/lguest: fix missing rmb().Rusty Russell2013-07-021-0/+13
| | | | | | | The virtio spec was missing a barrier in example code, so I went back to look at the lguest code. Indeed, we need one. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: fix paths in commentsWanlong Gao2013-03-071-1/+1
| | | | | | | | After commit 07fe997, lguest tool has already moved from Documentation/virtual/lguest/ to tools/lguest/. Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* tools/lguest: remove depends on CONFIG_EXPERIMENTALKees Cook2013-01-111-6/+2
| | | | | | | | | | | The CONFIG_EXPERIMENTAL config item has not carried much meaning for a while now and is almost always enabled by default. As agreed during the Linux kernel summit, remove it from any "depends on" lines in Kconfigs. CC: Rusty Russell <rusty@rustcorp.com.au> CC: Davidlohr Bueso <dave@gnu.org> Signed-off-by: Kees Cook <keescook@chromium.org> Acked-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: fix block request handling in example launcher.Rusty Russell2012-10-221-49/+35
| | | | | | | | | | | | | virtio requests are scatter-gather-style descriptors, but no assumptions should be made about the layout. lguest was lazy here, but saved by the fact that the network device hands all requests to tun (which does it correctly) and console and random devices simply use readv and writev. Block devices, however, are broken: we convert to iovecs internally, just make sure we handle the correctly. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* lguest: fix occasional crash in example launcher.Rusty Russell2012-10-041-0/+1
| | | | | | | | We usually got away with ->next on the final entry being NULL, but it finally bit me. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Cc: stable@kernel.org
* lguest: move the lguest tool to the tools directoryDavidlohr Bueso2012-01-125-0/+2261
This is a better location instead of having it in Documentation. Signed-off-by: Davidlohr Bueso <dave@gnu.org> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (fixed compile)
OpenPOWER on IntegriCloud