Daniel Baluta
db91e2370e
tools/lguest: Don't bork the terminal in case of wrong args
...
Running lguest without arguments or with a wrong argument name
borks the terminal, because the cleanup handler is set up too late
in the initialization process.
Signed-off-by: Daniel Baluta <daniel.baluta@intel.com >
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Cc: Andy Lutomirski <luto@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Brian Gerst <brgerst@gmail.com >
Cc: Denys Vlasenko <dvlasenk@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Josh Poimboeuf <jpoimboe@redhat.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2016-09-08 08:05:24 +02:00
Luis R. Rodriguez
4650459032
tools/lguest: Force disable tboot and APM
...
The paravirt_enabled() check is going away, the area tossed to
the kernel on lguest is not zeroed out, so ensure lguest force
disables tboot and APM just in case the kernel file being read
might have this set for whatever reason.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org >
Acked-by: Rusty Russell <rusty@rustcorp.com.au >
Cc: Andy Lutomirski <luto@amacapital.net >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Brian Gerst <brgerst@gmail.com >
Cc: Denys Vlasenko <dvlasenk@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: andrew.cooper3@citrix.com
Cc: andriy.shevchenko@linux.intel.com
Cc: bigeasy@linutronix.de
Cc: boris.ostrovsky@oracle.com
Cc: david.vrabel@citrix.com
Cc: ffainelli@freebox.fr
Cc: george.dunlap@citrix.com
Cc: glin@suse.com
Cc: jgross@suse.com
Cc: jlee@suse.com
Cc: josh@joshtriplett.org
Cc: julien.grall@linaro.org
Cc: konrad.wilk@oracle.com
Cc: kozerkov@parallels.com
Cc: lenb@kernel.org
Cc: lguest@lists.ozlabs.org
Cc: linux-acpi@vger.kernel.org
Cc: lv.zheng@intel.com
Cc: matt@codeblueprint.co.uk
Cc: mbizon@freebox.fr
Cc: rjw@rjwysocki.net
Cc: robert.moore@intel.com
Cc: tiwai@suse.de
Cc: toshi.kani@hp.com
Cc: xen-devel@lists.xensource.com
Link: http://lkml.kernel.org/r/1460592286-300-8-git-send-email-mcgrof@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2016-04-22 10:29:03 +02:00
Luis R. Rodriguez
907bb65579
tools/lguest: Make lguest launcher use X86_SUBARCH_LGUEST explicitly
...
Be explicit and make use of X86_SUBARCH_LGUEST directly.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org >
Acked-by: Rusty Russell <rusty@rustcorp.com.au >
Cc: Andy Lutomirski <luto@amacapital.net >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Brian Gerst <brgerst@gmail.com >
Cc: Denys Vlasenko <dvlasenk@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: andrew.cooper3@citrix.com
Cc: andriy.shevchenko@linux.intel.com
Cc: bigeasy@linutronix.de
Cc: boris.ostrovsky@oracle.com
Cc: david.vrabel@citrix.com
Cc: ffainelli@freebox.fr
Cc: george.dunlap@citrix.com
Cc: glin@suse.com
Cc: jgross@suse.com
Cc: jlee@suse.com
Cc: josh@joshtriplett.org
Cc: julien.grall@linaro.org
Cc: konrad.wilk@oracle.com
Cc: kozerkov@parallels.com
Cc: lenb@kernel.org
Cc: lguest@lists.ozlabs.org
Cc: linux-acpi@vger.kernel.org
Cc: lv.zheng@intel.com
Cc: matt@codeblueprint.co.uk
Cc: mbizon@freebox.fr
Cc: rjw@rjwysocki.net
Cc: robert.moore@intel.com
Cc: tiwai@suse.de
Cc: toshi.kani@hp.com
Cc: xen-devel@lists.xensource.com
Link: http://lkml.kernel.org/r/1460592286-300-4-git-send-email-mcgrof@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2016-04-22 10:29:00 +02:00
Rusty Russell
b51aa1cc78
tools/lguest: Clean up include dir
...
It contains a symlinked header we use; ignore it and clean it up
on 'make clean'.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2015-08-26 06:12:35 +02:00
Rusty Russell
e523caa601
tools/lguest: Fix redefinition of struct virtio_pci_cfg_cap
...
Ours uses a u32 for the data, since we ensure it's always
aligned and it's x86 so it doesn't matter anyway.
lguest.c:128:8: error: redefinition of ‘struct virtio_pci_cfg_cap’
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Michael S. Tsirkin <mst@redhat.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: linux-kernel@vger.kernel.org
Fixes: 3121bb023e ("virtio: define virtio_pci_cfg_cap in header.")
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2015-08-26 06:12:35 +02:00
Rusty Russell
206ad06b2e
tools/lguest: don't use legacy definitions for net device in example launcher.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:55 +10:30
Rusty Russell
1e1c17a7a2
tools/lguest: use common error macros in the example launcher.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:53 +10:30
Rusty Russell
17c56d6de8
tools/lguest: give virtqueues names for better error messages
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:53 +10:30
Rusty Russell
d39a6785f4
tools/lguest: more documentation and checking of virtio 1.0 compliance.
...
This is from all the non-PCI parts of the spec.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:52 +10:30
Rusty Russell
d761b03291
tools/lguest: don't start devices until DRIVER_OK status set.
...
We were activating them with the virtqueues, and that's not allowed.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:51 +10:30
Rusty Russell
3afe3e0f8d
tools/lguest: handle indirect partway through chain.
...
Linux doesn't generate these, but it's perfectly valid according to
a close reading of the spec. I opened virtio spec bug VIRTIO-134 to
make this clearer there, too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:50 +10:30
Rusty Russell
c97eb679ef
tools/lguest: insert driver references from the 1.0 spec (4.1 Virtio Over PCI)
...
As a demonstration, the lguest launcher is pretty strict, trying to
catch badly behaved drivers. Document this precisely.
A good implementation would *NOT* crash the guest when these happened!
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:49 +10:30
Rusty Russell
8dc425ffdd
tools/lguest: insert device references from the 1.0 spec (4.1 Virtio Over PCI)
...
There are some (optional) parts we don't implement, but this quotes all
the device requirements from the spec (csd 03, but it should be the same
across all released versions).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:47 +10:30
Rusty Russell
b2ce1ea442
tools/lguest: rename virtio_pci_cfg_cap field to match spec.
...
The next patch will insert many quotes from the virtio 1.0 spec; they
make most sense if we copy the spec.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:47 +10:30
Rusty Russell
53aceb49f9
tools/lguest: fix features_accepted logic in example launcher.
...
We were clearing the lower bits when setting the upper bits.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:46 +10:30
Rusty Russell
d2dbdac336
tools/lguest: handle device reset correctly in example launcher.
...
The example launcher doesn't reset the queue_enable like the spec says
we have to. Plus, we should reset the size in case they negotiated
a different (smaller) one.
This is easy to test by unloading and reloading a virtio module.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-13 17:15:45 +10:30
Rusty Russell
00f8d54651
lguest: remove NOTIFY facility from demonstration launcher.
...
This was only used for early console, now we can get rid of it altogether.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:45 +10:30
Rusty Russell
713e3f7224
lguest: always put console in PCI slot #1 .
...
This simplifies the early probe.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:44 +10:30
Rusty Russell
59eba788db
lguest: support backdoor window.
...
The VIRTIO_PCI_CAP_PCI_CFG in the PCI virtio 1.0 spec allows access to
the BAR registers without mapping them. This is a compulsory feature,
and we implement it here.
There are some subtleties involving access widths which we should
note:
4.1.4.7.1 Device Requirements: PCI configuration access capability
...
Upon detecting driver write access to pci_cfg_data, the device MUST
execute a write access at offset cap.offset at BAR selected by
cap.bar using the first cap.length bytes from pci_cfg_data.
Upon detecting driver read access to pci_cfg_data, the device MUST
execute a read access of length cap.length at offset cap.offset at
BAR selected by cap.bar and store the first cap.length bytes in
pci_cfg_data.
So, for a write, we copy into the pci_cfg_data window, then write from
there out to the BAR. This works correctly if cap.length != width of
write. Similarly, for a read, we read into window from the BAR then
read the value from there.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:43 +10:30
Rusty Russell
e8330d9bc1
lguest: support emerg_wr in console device in example launcher.
...
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 >
2015-02-11 16:47:43 +10:30
Rusty Russell
d9028eda7b
lguest: remove support for lguest bus in demonstration launcher.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:42 +10:30
Rusty Russell
eb39f83372
lguest: define VIRTIO_CONFIG_NO_LEGACY in example launcher.
...
We only support virtio 1.0 now
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:40 +10:30
Rusty Russell
ebff01137a
lguest: Convert console device to virtio 1.0 PCI.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:40 +10:30
Rusty Russell
0d5b5d399f
lguest: Convert entropy device to virtio 1.0 PCI.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2015-02-11 16:47:39 +10:30
Rusty Russell
bf6d40344d
lguest: Convert net device to virtio 1.0 PCI.
...
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 >
2015-02-11 16:47:39 +10:30