mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
lguest: update comments
Also removes a long-unused #define and an extraneous semicolon. Signed-off-by: Rusty Russell <[email protected]>
This commit is contained in:
parent
3c3ed482dc
commit
9f54288def
9 changed files with 50 additions and 39 deletions
|
|
@ -117,7 +117,7 @@ static __init int map_switcher(void)
|
|||
|
||||
/*
|
||||
* Now the Switcher is mapped at the right address, we can't fail!
|
||||
* Copy in the compiled-in Switcher code (from <arch>_switcher.S).
|
||||
* Copy in the compiled-in Switcher code (from x86/switcher_32.S).
|
||||
*/
|
||||
memcpy(switcher_vma->addr, start_switcher_text,
|
||||
end_switcher_text - start_switcher_text);
|
||||
|
|
|
|||
|
|
@ -427,8 +427,8 @@ void pin_stack_pages(struct lg_cpu *cpu)
|
|||
|
||||
/*
|
||||
* Direct traps also mean that we need to know whenever the Guest wants to use
|
||||
* a different kernel stack, so we can change the IDT entries to use that
|
||||
* stack. The IDT entries expect a virtual address, so unlike most addresses
|
||||
* a different kernel stack, so we can change the guest TSS to use that
|
||||
* stack. The TSS entries expect a virtual address, so unlike most addresses
|
||||
* the Guest gives us, the "esp" (stack pointer) value here is virtual, not
|
||||
* physical.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
/*P:200 This contains all the /dev/lguest code, whereby the userspace launcher
|
||||
* controls and communicates with the Guest. For example, the first write will
|
||||
* tell us the Guest's memory layout and entry point. A read will run the
|
||||
* Guest until something happens, such as a signal or the Guest doing a NOTIFY
|
||||
* out to the Launcher.
|
||||
/*P:200 This contains all the /dev/lguest code, whereby the userspace
|
||||
* launcher controls and communicates with the Guest. For example,
|
||||
* the first write will tell us the Guest's memory layout and entry
|
||||
* point. A read will run the Guest until something happens, such as
|
||||
* a signal or the Guest doing a NOTIFY out to the Launcher. There is
|
||||
* also a way for the Launcher to attach eventfds to particular NOTIFY
|
||||
* values instead of returning from the read() call.
|
||||
:*/
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/miscdevice.h>
|
||||
|
|
@ -357,8 +359,8 @@ static int initialize(struct file *file, const unsigned long __user *input)
|
|||
goto free_eventfds;
|
||||
|
||||
/*
|
||||
* Initialize the Guest's shadow page tables, using the toplevel
|
||||
* address the Launcher gave us. This allocates memory, so can fail.
|
||||
* Initialize the Guest's shadow page tables. This allocates
|
||||
* memory, so can fail.
|
||||
*/
|
||||
err = init_guest_pagetable(lg);
|
||||
if (err)
|
||||
|
|
@ -516,6 +518,7 @@ static const struct file_operations lguest_fops = {
|
|||
.read = read,
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
/*:*/
|
||||
|
||||
/*
|
||||
* This is a textbook example of a "misc" character device. Populate a "struct
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ static pte_t *spte_addr(struct lg_cpu *cpu, pgd_t spgd, unsigned long vaddr)
|
|||
}
|
||||
|
||||
/*
|
||||
* These functions are just like the above two, except they access the Guest
|
||||
* These functions are just like the above, except they access the Guest
|
||||
* page tables. Hence they return a Guest address.
|
||||
*/
|
||||
static unsigned long gpgd_addr(struct lg_cpu *cpu, unsigned long vaddr)
|
||||
|
|
@ -195,7 +195,7 @@ static unsigned long gpte_addr(struct lg_cpu *cpu,
|
|||
#endif
|
||||
/*:*/
|
||||
|
||||
/*M:014
|
||||
/*M:007
|
||||
* get_pfn is slow: we could probably try to grab batches of pages here as
|
||||
* an optimization (ie. pre-faulting).
|
||||
:*/
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ static int emulate_insn(struct lg_cpu *cpu)
|
|||
unsigned int insnlen = 0, in = 0, shift = 0;
|
||||
/*
|
||||
* The eip contains the *virtual* address of the Guest's instruction:
|
||||
* guest_pa just subtracts the Guest's page_offset.
|
||||
* walk the Guest's page tables to find the "physical" address.
|
||||
*/
|
||||
unsigned long physaddr = guest_pa(cpu, cpu->regs->eip);
|
||||
|
||||
|
|
@ -409,7 +409,7 @@ void lguest_arch_handle_trap(struct lg_cpu *cpu)
|
|||
* These values mean a real interrupt occurred, in which case
|
||||
* the Host handler has already been run. We just do a
|
||||
* friendly check if another process should now be run, then
|
||||
* return to run the Guest again
|
||||
* return to run the Guest again.
|
||||
*/
|
||||
cond_resched();
|
||||
return;
|
||||
|
|
@ -459,7 +459,7 @@ void __init lguest_arch_host_init(void)
|
|||
int i;
|
||||
|
||||
/*
|
||||
* Most of the i386/switcher.S doesn't care that it's been moved; on
|
||||
* Most of the x86/switcher_32.S doesn't care that it's been moved; on
|
||||
* Intel, jumps are relative, and it doesn't access any references to
|
||||
* external code or data.
|
||||
*
|
||||
|
|
@ -587,7 +587,7 @@ void __init lguest_arch_host_init(void)
|
|||
clear_cpu_cap(&boot_cpu_data, X86_FEATURE_PGE);
|
||||
}
|
||||
put_online_cpus();
|
||||
};
|
||||
}
|
||||
/*:*/
|
||||
|
||||
void __exit lguest_arch_host_fini(void)
|
||||
|
|
@ -670,8 +670,6 @@ int lguest_arch_init_hypercalls(struct lg_cpu *cpu)
|
|||
/*:*/
|
||||
|
||||
/*L:030
|
||||
* lguest_arch_setup_regs()
|
||||
*
|
||||
* Most of the Guest's registers are left alone: we used get_zeroed_page() to
|
||||
* allocate the structure, so they will be 0.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue