Ingo Molnar wrote:
* Marcelo Tosatti <[EMAIL PROTECTED]> wrote:
The first fix is not even specific for PARAVIRT, and it's actually
preventing the whole tree from booting.
And the following allows PARAVIRT kernels to boot on x86_64.
Fill in missing pagetable manipulation
Ingo Molnar wrote:
* Marcelo Tosatti [EMAIL PROTECTED] wrote:
The first fix is not even specific for PARAVIRT, and it's actually
preventing the whole tree from booting.
And the following allows PARAVIRT kernels to boot on x86_64.
Fill in missing pagetable manipulation
export __supported_pte_mask variable as GPL symbol.
lguest is a user of it.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/setup64.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/setup64.c b/arch/x86/kernel/set
Exporrt check_tsc_unstable function as GPL symbol. lguest is
a user of it.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/tsc_64.c |4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/tsc_64.c b/arch/x86/kernel/ts
x86_64 don't expose the intermediate representation with one underline,
_PAGE_KERNEL, just the double-underlined one.
Use it, to get a common ground between 32 and 64-bit
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/page_tables.c |4 ++--
1 files c
This patch adds the sched.h header explicitly to lguest_user file,
and avoid depending on it being included somewhere else.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/lguest_user.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff
This patch adds the hrtimer.h header explicitly to lg.h file,
and avoid depending on it being included somewhere else.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/lg.h |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/lgues
This patch adds the ktime.h header explicitly to hypercalls file,
and avoid depending on it being included somewhere else.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/hypercalls.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/d
Right now, I have lguest in-tree module compiling on x86_64.
It's not yet on a sendable state, since the module itself isn't loading.
However, this subset of the series is pretty straightforward, and I'm sending it
now aiming at reducing the delta size in the future ;-)
Have fun,
--
To
x86.git tree).
>
> Ingo
>
Other than this, it seems to build and boot fine.
Do you want me to resend ?
--
Glauber de Oliveira Costa.
"Free as in Freedom"
http://glommer.net
"The less confident you are, the more serious you have to act."
--
To unsubscribe from t
This patch adds the __parainstructions section to vmlinux.lds.S.
It's needed for the patching system.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/vmlinux_64.lds.S |8
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/x86/
__pmd, pmd_val and set_pud are used before they are defined (as static)
We move them a little up in the file, so it doesn't happen.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
include/asm-x86/paravirt.h | 84 ++--
1 files chang
Since the cr8 manipulation functions ended up staying in the tree,
they can't be defined just when PARAVIRT is off: In this patch,
those functions are defined for the PARAVIRT case too.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
include/asm-x86/system.h
This patch fills in the read and write cr8 fields with their
native version
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/paravirt.c |4
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/
This patch adds the constant PARAVIRT needs in asm_offsets_64.c
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/asm-offsets_64.c | 14 ++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/asm-offsets_64.c b/ar
This patch adds room for read and write_cr8 functions back in
pv_cpu_ops struct
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
include/asm-x86/paravirt.h | 15 +++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/include/asm-x86/paravirt.h b/i
lookup_address() receives two parameters, but efi_64.c call
is passing only one. It's actually preventing the tree from compiling
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/efi_64.c |3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff
With PARAVIRT, we actually have arch_{dup,exit}_mmap functions,
so we can't include the generic header
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
include/asm-x86/mmu_context_64.h |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/include/a
x86_64 lacks a native_init_IRQ() function, so we turn the arch's
init_IRQ() function into a native construct
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/i8259_64.c |4 +++-
include/asm-x86/hw_irq_64.h |1 +
2 files changed, 4 insertions
Hi,
This small series provides some more fixes towards the goal
to have the PARAVIRT selectable for x86_64. After that, just
some more small steps are needed.
The first fix is not even specific for PARAVIRT, and it's actually
preventing the whole tree from booting.
--
To unsubscribe from this
We use a __stringify construction at paravirt_patch_64.c.
It's better practice to include the stringify header directly
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/paravirt_patch_64.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff
export __supported_pte_mask variable as GPL symbol.
lguest is a user of it.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/setup64.c |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/setup64.c b/arch/x86/kernel/setup64.c
Exporrt check_tsc_unstable function as GPL symbol. lguest is
a user of it.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/tsc_64.c |4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/tsc_64.c b/arch/x86/kernel/tsc_64.c
index
x86_64 don't expose the intermediate representation with one underline,
_PAGE_KERNEL, just the double-underlined one.
Use it, to get a common ground between 32 and 64-bit
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/page_tables.c |4 ++--
1 files changed, 2
This patch adds the hrtimer.h header explicitly to lg.h file,
and avoid depending on it being included somewhere else.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/lg.h |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/lguest/lg.h b
This patch adds the ktime.h header explicitly to hypercalls file,
and avoid depending on it being included somewhere else.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/hypercalls.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers
if it breaks something. The bug
was found before i pushed out the x86.git devel tree (and the fix is
below - but this shouldnt matter to you because the bug never hit a
public x86.git tree).
Ingo
Other than this, it seems to build and boot fine.
Do you want me to resend ?
--
Glauber de
This patch adds the __parainstructions section to vmlinux.lds.S.
It's needed for the patching system.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/vmlinux_64.lds.S |8
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel
__pmd, pmd_val and set_pud are used before they are defined (as static)
We move them a little up in the file, so it doesn't happen.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
include/asm-x86/paravirt.h | 84 ++--
1 files changed, 42
This patch adds the constant PARAVIRT needs in asm_offsets_64.c
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/asm-offsets_64.c | 14 ++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/asm-offsets_64.c b/arch/x86
This patch adds room for read and write_cr8 functions back in
pv_cpu_ops struct
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
include/asm-x86/paravirt.h | 15 +++
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/include/asm-x86/paravirt.h b/include
Right now, I have lguest in-tree module compiling on x86_64.
It's not yet on a sendable state, since the module itself isn't loading.
However, this subset of the series is pretty straightforward, and I'm sending it
now aiming at reducing the delta size in the future ;-)
Have fun,
--
To
Since the cr8 manipulation functions ended up staying in the tree,
they can't be defined just when PARAVIRT is off: In this patch,
those functions are defined for the PARAVIRT case too.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
include/asm-x86/system.h | 30
With PARAVIRT, we actually have arch_{dup,exit}_mmap functions,
so we can't include the generic header
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
include/asm-x86/mmu_context_64.h |2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/include/asm-x86
We use a __stringify construction at paravirt_patch_64.c.
It's better practice to include the stringify header directly
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/paravirt_patch_64.c |1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/arch
Hi,
This small series provides some more fixes towards the goal
to have the PARAVIRT selectable for x86_64. After that, just
some more small steps are needed.
The first fix is not even specific for PARAVIRT, and it's actually
preventing the whole tree from booting.
--
To unsubscribe from this
x86_64 lacks a native_init_IRQ() function, so we turn the arch's
init_IRQ() function into a native construct
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/i8259_64.c |4 +++-
include/asm-x86/hw_irq_64.h |1 +
2 files changed, 4 insertions(+), 1 deletions
lookup_address() receives two parameters, but efi_64.c call
is passing only one. It's actually preventing the tree from compiling
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/efi_64.c |3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git
This patch fills in the read and write cr8 fields with their
native version
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
arch/x86/kernel/paravirt.c |4
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel
It should depend on CONFIG_LGUEST, not CONFIG_LGUEST_GUEST
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/Makefile |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/Makefile b/drivers/Makefile
index ee1b6a5..58a17e9 100644
--- a/d
-lguest.tar.gz
On Jan 17, 2008 10:35 PM, Glauber de Oliveira Costa <[EMAIL PROTECTED]> wrote:
> urrently, 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
> paravirtoverride. Reason for that i
Wecan save some lines of code by getting rid of
*lg= cpu... lines of code spread everywhere by now.
he new macro lg_data(cpu) is used anywhere we'd otherwise use the
cpu->lg->lguest_dataconstruction, to prevent lines getting to big.
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
urrently, 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
paravirtoverride. Reason for that is the reference to pv_info structure
ininitial loading tests.
his patch removes it in favour of a more generic
eventsrepresented in the 'changed' bitmap are per-cpu, not per-guest.
moveit to the lg_cpu structure
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/interrupts_and_traps.c |2 +-
drivers/lguest/lg.h |6 +++---
drivers/lguest/segments.c
spte_addrdoes not depend on any guest information, so we
wipeout the lg parameter completely.
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/page_tables.c |8
1 files changed, 4 insertions(+), 4 deletions(-)
diff--git a/drivers/lguest/page_tables.c
inour new model, pages are assigned to a virtual cpu, not to a guest.
Wemove it to the lg_cpu structure.
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/lg.h |3 ++-
drivers/lguest/lguest_user.c |8
drivers/lguest/x86/core.c|4 ++--
3
gpte_addr()does not depend on any guest information. So we wipe out
thelg parameter from it completely.
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/page_tables.c |7 +++
1 files changed, 3 insertions(+), 4 deletions(-)
diff--git
This series takes one more step towards cpu-ification of lguest.
As for rusty's last suggestion, I get rid of the whole bunch
of "struct lguest *lg = cpu->lg" statements around by using
lg_cpu as our base structure wherever it matters. (this saves us
11 lines)
--
To unsubscribe from this list:
inour model, a guest does not run in a cpu anymore: a virtual cpu
does.So we change last_guest to last_cpu
Signed-off-by:Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/x86/core.c |6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff--git
This series takes one more step towards cpu-ification of lguest.
As for rusty's last suggestion, I get rid of the whole bunch
of struct lguest *lg = cpu-lg statements around by using
lg_cpu as our base structure wherever it matters. (this saves us
11 lines)
--
To unsubscribe from this list: send
inour model, a guest does not run in a cpu anymore: a virtual cpu
does.So we change last_guest to last_cpu
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/x86/core.c |6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff--git a/drivers/lguest/x86/core.c
spte_addrdoes not depend on any guest information, so we
wipeout the lg parameter completely.
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/page_tables.c |8
1 files changed, 4 insertions(+), 4 deletions(-)
diff--git a/drivers/lguest/page_tables.c
inour new model, pages are assigned to a virtual cpu, not to a guest.
Wemove it to the lg_cpu structure.
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/lg.h |3 ++-
drivers/lguest/lguest_user.c |8
drivers/lguest/x86/core.c|4 ++--
3
gpte_addr()does not depend on any guest information. So we wipe out
thelg parameter from it completely.
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/page_tables.c |7 +++
1 files changed, 3 insertions(+), 4 deletions(-)
diff--git
eventsrepresented in the 'changed' bitmap are per-cpu, not per-guest.
moveit to the lg_cpu structure
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/interrupts_and_traps.c |2 +-
drivers/lguest/lg.h |6 +++---
drivers/lguest/segments.c
Wecan save some lines of code by getting rid of
*lg= cpu... lines of code spread everywhere by now.
he new macro lg_data(cpu) is used anywhere we'd otherwise use the
cpu-lg-lguest_dataconstruction, to prevent lines getting to big.
Signed-off-by:Glauber de Oliveira Costa [EMAIL PROTECTED]
---
urrently, 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
paravirtoverride. Reason for that is the reference to pv_info structure
ininitial loading tests.
his patch removes it in favour of a more generic
-lguest.tar.gz
On Jan 17, 2008 10:35 PM, Glauber de Oliveira Costa [EMAIL PROTECTED] wrote:
urrently, 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
paravirtoverride. Reason for that is the reference to pv_info
It should depend on CONFIG_LGUEST, not CONFIG_LGUEST_GUEST
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/Makefile |2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/Makefile b/drivers/Makefile
index ee1b6a5..58a17e9 100644
--- a/drivers
this patch makes the pgdir management per-vcpu. The pgdirs pool
is still guest-wide (although it'll probably need to grow when we
are really executing more vcpus), but the pgdidx index is gone,
since it makes no sense anymore. Instead, we use a per-vcpu
index.
Signed-off-by: Glauber de Oliveira
lguest struct have room for some fields, namely, cr2, ts, esp1
and ss1, that are not really guest-wide, but rather, vcpu-wide.
This patch puts it in the vcpu struct
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/hypercalls.c | 10 +-
d
this patch makes the pending_notify field, used to control
pending notifications, per-vcpu, instead of per-guest
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/core.c|6 +++---
drivers/lguest/hypercalls.c |6 +++---
drivers/lgues
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 possible
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTEC
This is the most obvious per-vcpu field: registers.
So this patch moves it from struct lguest to struct vcpu,
and patch the places in which they are used, accordingly
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/interrupts_and_traps.c
emulate_insn() needs to know about current eip, which will be,
in the future, a per-vcpu thing. So in this patch, the function
prototype is modified to receive a vcpu struct
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/x86/core.c |5 +++--
1 files c
The fields found in lguest_arch are not really per-guest,
but per-cpu (gdt, idt, etc). So this patch turns lguest_arch
into lg_vcpu_arch.
It makes sense to have a per-guest per-arch struct, but this
can be addressed later, when the need arrives.
Signed-off-by: Glauber de Oliveira Costa <[EM
This patch adapts interrupt processing for using the vcpu struct.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/core.c |2 +-
drivers/lguest/interrupts_and_traps.c | 25 ++---
drivers/lguest/lg.h
The switcher needs to be mapped per-vcpu, because different vcpus
will potentially have different page tables (they don't have to,
because threads will share the same).
So our first step is the make the function receive a vcpu struct
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTEC
Here, I introduce per-vcpu timers. With this, we can have
local expiries, needed for accounting time in smp guests
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/hypercalls.c |2 +-
drivers/lguest/interrupts_and_traps.c
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
guest
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/core.c |6 +++---
drivers/
This patch makes uses of pread() and pwrite() in lguest launcher
to communicate the vcpu id to the lguest driver. The id is kept in
a thread variable, which means we'll span in the future, vcpus as
threads. But right now, only the infrastructure is out there.
Signed-off-by: Glauber de Oliveira
This patch makes the write() file operation smp aware. Which means, receiving
the vcpu_id value through the offset parameter, and being well aware to which
vcpu we're talking to.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/lguest_user.c | 11
this patch initializes the first vcpu in the initialize() routing,
which is responsible for starting the process of putting the guest up.
right now, as much of the fields are still not per-vcpu, it does not
do much.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/
This patch makes the run_guest() routine use the vcpu 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 <[EMAIL PROTECTED]>
Folks,
This new series is not at all fundamentally different from the old one
I sent. Only difference is that I address the comments received, mainly
from Rusty.
enjoy!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More
this patch introduces a vcpu struct for lguest. In upcoming patches,
more and more fields will be moved from the lguest struct to the vcpu
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
drivers/lguest/lg.h | 10 ++
1 files changed, 10 insertions(+), 0 del
Folks,
This new series is not at all fundamentally different from the old one
I sent. Only difference is that I address the comments received, mainly
from Rusty.
enjoy!
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More
this patch introduces a vcpu struct for lguest. In upcoming patches,
more and more fields will be moved from the lguest struct to the vcpu
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/lg.h | 10 ++
1 files changed, 10 insertions(+), 0 deletions(-)
diff
this patch initializes the first vcpu in the initialize() routing,
which is responsible for starting the process of putting the guest up.
right now, as much of the fields are still not per-vcpu, it does not
do much.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest
This patch makes the run_guest() routine use the vcpu 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 [EMAIL PROTECTED]
---
drivers/lguest/core.c|6
This patch makes uses of pread() and pwrite() in lguest launcher
to communicate the vcpu id to the lguest driver. The id is kept in
a thread variable, which means we'll span in the future, vcpus as
threads. But right now, only the infrastructure is out there.
Signed-off-by: Glauber de Oliveira
This patch makes the write() file operation smp aware. Which means, receiving
the vcpu_id value through the offset parameter, and being well aware to which
vcpu we're talking to.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/lguest_user.c | 11 +--
1
Here, I introduce per-vcpu timers. With this, we can have
local expiries, needed for accounting time in smp guests
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/hypercalls.c |2 +-
drivers/lguest/interrupts_and_traps.c | 20
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
guest
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/core.c |6 +++---
drivers/lguest
This patch adapts interrupt processing for using the vcpu struct.
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/core.c |2 +-
drivers/lguest/interrupts_and_traps.c | 25 ++---
drivers/lguest/lg.h | 10
The switcher needs to be mapped per-vcpu, because different vcpus
will potentially have different page tables (they don't have to,
because threads will share the same).
So our first step is the make the function receive a vcpu struct
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED
emulate_insn() needs to know about current eip, which will be,
in the future, a per-vcpu thing. So in this patch, the function
prototype is modified to receive a vcpu struct
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/x86/core.c |5 +++--
1 files changed, 3
The fields found in lguest_arch are not really per-guest,
but per-cpu (gdt, idt, etc). So this patch turns lguest_arch
into lg_vcpu_arch.
It makes sense to have a per-guest per-arch struct, but this
can be addressed later, when the need arrives.
Signed-off-by: Glauber de Oliveira Costa [EMAIL
This is the most obvious per-vcpu field: registers.
So this patch moves it from struct lguest to struct vcpu,
and patch the places in which they are used, accordingly
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/interrupts_and_traps.c | 29
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 possible
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED
lguest struct have room for some fields, namely, cr2, ts, esp1
and ss1, that are not really guest-wide, but rather, vcpu-wide.
This patch puts it in the vcpu struct
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/hypercalls.c | 10 +-
drivers
this patch makes the pending_notify field, used to control
pending notifications, per-vcpu, instead of per-guest
Signed-off-by: Glauber de Oliveira Costa [EMAIL PROTECTED]
---
drivers/lguest/core.c|6 +++---
drivers/lguest/hypercalls.c |6 +++---
drivers/lguest/lg.h
this patch makes the pgdir management per-vcpu. The pgdirs pool
is still guest-wide (although it'll probably need to grow when we
are really executing more vcpus), but the pgdidx index is gone,
since it makes no sense anymore. Instead, we use a per-vcpu
index.
Signed-off-by: Glauber de Oliveira
On Dec 25, 2007 9:54 PM, Rusty Russell <[EMAIL PROTECTED]> wrote:
> On Friday 21 December 2007 00:33:40 Glauber de Oliveira Costa wrote:
> > this patch makes room for the vcpu structure in lguest, already used in
> > this very same way at lguest64. It's the first part of
On Dec 25, 2007 9:54 PM, Rusty Russell [EMAIL PROTECTED] wrote:
On Friday 21 December 2007 00:33:40 Glauber de Oliveira Costa wrote:
this patch makes room for the vcpu structure in lguest, already used in
this very same way at lguest64. It's the first part of our plan to
have lguest
change
> > will rebuild the world. And dealing with patch conflicts caused by
> > changing early patches in the series is never fun.
>
> that's true. The 'rej' tool helps alot though. ( Plus a distcc cluster
> that builds a distro kernel in 45-50 seconds from scratch ;)
So that
fine, because I clearly have the file locally ;-)
I'm attaching a new patch that replaces just this one.
--
Glauber de Oliveira Costa.
"Free as in Freedom"
http://glommer.net
"The less confident you are, the more serious you have to act."
From 9a9307e976391776c0d63e3640d907
x86_read_per_cpu() and its writeish sister are not present in x86_64. So in
this patch, we replace them with __get_cpu_var(), which is present in both
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/paravirt.c | 10 +-
1 files changed, 5 inse
The core patching code for paravirt is sufficiently different
among i386 and x86_64, and we move them to specific files.
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/kernel/Makefile_32 |2 +-
arch/x86/kernel/paravirt.c
Like i386, x86_64 also need to include its own patching function.
(Well, if you're not in a hurry, and don't care about speed, you don't
really _need_ ;-))
So here they are. Not much different in essence from i386
Signed-off-by: Glauber de Oliveira Costa <[EMAIL PROTECTED]>
---
arch/x86/
1 - 100 of 1034 matches
Mail list logo