29 Jul, 2008
1 commit
-
map_switcher allocates the array, unmap_switcher has to free it
accordingly.Signed-off-by: Johannes Weiner
Signed-off-by: Rusty Russell
28 Mar, 2008
1 commit
-
Took some cycles to re-read the Lguest Journey end-to-end, fix some
rot and tighten some phrases.Only comments change. No new jokes, but a couple of recycled old jokes.
Signed-off-by: Rusty Russell
11 Mar, 2008
1 commit
-
Robert Bragg's 5dc331852848a38ca00a2817e5b98a1d0561b116 tightened
(ie. fixed) the checking in __get_vm_area, and it broke lguest.lguest should pass the exact "end" it wants, not some random constant
(it was possible previously that it would actually get an address
different from SWITCHER_ADDR).Also, Fabio Checconi pointed out that we should make sure we're not
hitting the fixmap area.Signed-off-by: Rusty Russell
Cc: Robert Bragg
30 Jan, 2008
8 commits
-
We can save some lines of code by getting rid of
*lg = cpu... lines of code spread everywhere by now.Signed-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
this patch makes the pending_notify field, used to control
pending notifications, per-vcpu, instead of per-guestSigned-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
lguest uses tasks to control its running behaviour (like sending
breaks, controlling halted state, etc). In a per-vcpu environment,
each vcpu will have its own underlying task. So this patch
makes the infrastructure for that possibleSigned-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
This patch adapts interrupt processing for using the vcpu struct.
Signed-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
this patch changes do_hcall() and do_async_hcall() interfaces (and obviously their
callers) to get a vcpu struct. Again, a vcpu services the hypercall, not the whole
guestSigned-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
This patch makes the run_guest() routine use the lg_cpu struct.
This is required since in a smp guest environment, there's no
more the notion of "running the guest", but rather, it is "running the vcpu"Signed-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell -
Reboot Implemented
(Prevent fd leak, fix style and fix documentation --RR)
Signed-off-by: Balaji Rao
Signed-off-by: Rusty Russell -
Currently, lguest module can't be compiled without the PARAVIRT flag being
on. This is a fake dependency, since the module itself shouldn't need any
paravirt override. Reason for that is the reference to pv_info structure
in initial loading tests.This patch removes it in favour of a more generic error message.
Signed-off-by: Glauber de Oliveira Costa
Signed-off-by: Rusty Russell
25 Oct, 2007
1 commit
-
Went through the documentation doing typo and content fixes. This
patch contains only comment and whitespace changes.Signed-off-by: Rusty Russell
23 Oct, 2007
7 commits
-
Jes complains that page table code still uses lgread_u32 even though
it now uses general kernel pte types. The best thing to do is to
generalize lgread_u32 and lgwrite_u32.This means we lose the efficiency of getuser(). We could potentially
regain it if we used __copy_from_user instead of copy_from_user, but
I'm not certain that our range check is equivalent to access_ok() on
all platforms.Signed-off-by: Rusty Russell
Acked-by: Jes Sorensen -
This patch gets rid of the old lguest host I/O infrastructure and
replaces it with a single hypercall "LHCALL_NOTIFY" which takes an
address.The main change is the removal of io.c: that mainly did inter-guest
I/O, which virtio doesn't yet support.Signed-off-by: Rusty Russell
-
(Based on Ron Minnich's LGUEST_PLAN9_SYSCALL patch).
This patch allows Guests to specify what system call vector they want,
and we try to reserve it. We only allow one non-Linux system call
vector, to try to avoid DoS on the Host.Signed-off-by: Rusty Russell
-
Currently we look at the "trapnum" to see if the Guest wants a
hypercall. But once the hypercall is done we have to reset trapnum to
a bogus value, otherwise if we exit to userspace and return, we'd run
the same hypercall twice (that was a nasty bug to find!).This has two main effects:
1) When Jes's patch changes the hypercall args to be a generic "struct
hcall_args" we simply change the type of "lg->hcall". It's set by
arch code, so if it has to copy args or something it can do so, and
point "hcall" into lg->arch somewhere.2) Async hypercalls only get run when an actual hypercall is pending.
This simplfies the code a little and is a more logical semantic.Signed-off-by: Rusty Russell
-
Separate i386 architecture specific from core.c and move it to
x86/core.c and add x86/lguest.h header file to match.Signed-off-by: Jes Sorensen
Signed-off-by: Rusty Russell -
Back when we had all the Guest state in the switcher, we had a fixed
array of them. This is no longer necessary.If we switch the network code to using random_ether_addr (46 bits is
enough to avoid clashes), we can get rid of the concept of "guest id"
altogether.Signed-off-by: Rusty Russell
-
In order to avoid problematic special linking of the Launcher, we give
the Host an offset: this means we can use any memory region in the
Launcher as Guest memory rather than insisting on mmap() at 0.The result is quite pleasing: a number of casts are replaced with
simple additions.Signed-off-by: Rusty Russell
17 Oct, 2007
1 commit
-
This patch refactors the paravirt_ops structure into groups of
functionally related ops:pv_info - random info, rather than function entrypoints
pv_init_ops - functions used at boot time (some for module_init too)
pv_misc_ops - lazy mode, which didn't fit well anywhere else
pv_time_ops - time-related functions
pv_cpu_ops - various privileged instruction ops
pv_irq_ops - operations for managing interrupt state
pv_apic_ops - APIC operations
pv_mmu_ops - operations for managing pagetablesThere are several motivations for this:
1. Some of these ops will be general to all x86, and some will be
i386/x86-64 specific. This makes it easier to share common stuff
while allowing separate implementations where needed.2. At the moment we must export all of paravirt_ops, but modules only
need selected parts of it. This allows us to export on a case by case
basis (and also choose which export license we want to apply).3. Functional groupings make things a bit more readable.
Struct paravirt_ops is now only used as a template to generate
patch-site identifiers, and to extract function pointers for inserting
into jmp/calls when patching. It is only instantiated when needed.Signed-off-by: Jeremy Fitzhardinge
Signed-off-by: Rusty Russell
Cc: Andi Kleen
Cc: Zach Amsden
Cc: Avi Kivity
Cc: Anthony Liguory
Cc: "Glauber de Oliveira Costa"
Cc: Jun Nakajima
09 Aug, 2007
1 commit
-
If a Guest makes hypercall which sets a GDT entry to not present, we
currently set any segment registers using that GDT entry to 0.
Unfortunately, this is not sufficient: there are other ways of
altering GDT entries which will cause a fault.The correct solution to do what Linux does: let them set any GDT value
they want and handle the #GP when popping causes a fault. This has
the added benefit of making our Switcher slightly more robust in the
case of any other bugs which cause it to fault.We kill the Guest if it causes a fault in the Switcher: it's the
Guest's responsibility to make sure it's not using segments when it
changes them.Signed-off-by: Rusty Russell
Signed-off-by: Linus Torvalds
27 Jul, 2007
4 commits
-
Documentation: The Switcher
Signed-off-by: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Documentation: The Host
Signed-off-by: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Documentation: The Launcher
Signed-off-by: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The netfilter code had very good documentation: the Netfilter Hacking HOWTO.
Noone ever read it.So this time I'm trying something different, using a bit of Knuthiness.
Signed-off-by: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
20 Jul, 2007
1 commit
-
This is the code for the "lg.ko" module, which allows lguest guests to
be launched.[akpm@linux-foundation.org: update for futex-new-private-futexes]
[akpm@linux-foundation.org: build fix]
[jmorris@namei.org: lguest: use hrtimers]
[akpm@linux-foundation.org: x86_64 build fix]
Signed-off-by: Rusty Russell
Cc: Andi Kleen
Cc: Eric Dumazet
Cc: Thomas Gleixner
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds