Commit:     9653c4aff94e43de5f4ef918d47e00018beb4105
Parent:     141341cdae5f1745e3903a6b9732672230b1dd64
Author:     Rusty Russell <[EMAIL PROTECTED]>
AuthorDate: Mon Oct 22 10:56:23 2007 +1000
Committer:  Rusty Russell <[EMAIL PROTECTED]>
CommitDate: Tue Oct 23 15:49:48 2007 +1000

    lguest.txt update
    o Describe the new split configurations
    o Highlight code documentation in drivers/lguest/README
    o Point out necessity of having a getty on /dev/hvc0
    o Remove gratuitous "m" in example
    o Don't discuss I/O model here, stick to user documentation.
    Signed-off-by: Rusty Russell <[EMAIL PROTECTED]>
 Documentation/lguest/lguest.txt |   68 ++++++++++++++++----------------------
 1 files changed, 29 insertions(+), 39 deletions(-)

diff --git a/Documentation/lguest/lguest.txt b/Documentation/lguest/lguest.txt
index 821617b..b60f0ab 100644
--- a/Documentation/lguest/lguest.txt
+++ b/Documentation/lguest/lguest.txt
@@ -6,7 +6,7 @@ Lguest is designed to be a minimal hypervisor for the Linux 
kernel, for
 Linux developers and users to experiment with virtualization with the
 minimum of complexity.  Nonetheless, it should have sufficient
 features to make it useful for specific tasks, and, of course, you are
-encouraged to fork and enhance it.
+encouraged to fork and enhance it (see drivers/lguest/README).
@@ -23,19 +23,30 @@ Developer features:
 Running Lguest:
-- Lguest runs the same kernel as guest and host.  You can configure
-  them differently, but usually it's easiest not to.
+- The easiest way to run lguest is to use same kernel as guest and host.
+  You can configure them differently, but usually it's easiest not to.
   You will need to configure your kernel with the following options:
-  CONFIG_HIGHMEM64G=n ("High Memory Support" "64GB")[1]
-  CONFIG_TUN=y/m ("Universal TUN/TAP device driver support")
-  CONFIG_EXPERIMENTAL=y ("Prompt for development and/or incomplete 
-  CONFIG_PARAVIRT=y ("Paravirtualization support (EXPERIMENTAL)")
-  CONFIG_LGUEST=y/m ("Linux hypervisor example code")
-  and I recommend:
-  CONFIG_HZ=100 ("Timer frequency")[2]
+  "General setup":
+     "Prompt for development and/or incomplete code/drivers" = Y
+  "Processor type and features":
+     "Paravirtualized guest support" = Y
+        "Lguest guest support" = Y
+     "High Memory Support" = off/4GB
+     "Alignment value to which kernel should be aligned" = 0x100000
+         CONFIG_PHYSICAL_ALIGN=0x100000)
+  "Device Drivers":
+     "Network device support"
+        "Universal TUN/TAP device driver support" = M/Y
+           (CONFIG_TUN=m)
+     "Virtualization"
+        "Linux hypervisor example code" = M/Y
+           (CONFIG_LGUEST=m)
 - A tool called "lguest" is available in this directory: type "make"
   to build it.  If you didn't build your kernel in-tree, use "make
@@ -51,14 +62,17 @@ Running Lguest:
          dd if=/dev/zero of=rootfile bs=1M count=2048
          qemu -cdrom image.iso -hda rootfile -net user -net nic -boot d
+  Make sure that you install a getty on /dev/hvc0 if you want to log in on the
+  console!
 - "modprobe lg" if you built it as a module.
 - Run an lguest as root:
-      Documentation/lguest/lguest 64m vmlinux --tunnet= 
--block=rootfile root=/dev/lgba
+      Documentation/lguest/lguest 64 vmlinux --tunnet= 
--block=rootfile root=/dev/lgba
-    64m: the amount of memory to use.
+    64: the amount of memory to use, in MB.
     vmlinux: the kernel image found in the top of your build directory.  You
        can also use a standard bzImage.
@@ -99,31 +113,7 @@ Running Lguest:
   "--sharenet=<filename>": any two guests using the same file are on
   the same network.  This file is created if it does not exist.
-Lguest I/O model:
-Lguest uses a simplified DMA model plus shared memory for I/O.  Guests
-can communicate with each other if they share underlying memory
-(usually by the lguest program mmaping the same file), but they can
-use any non-shared memory to communicate with the lguest process.
-Guests can register DMA buffers at any key (must be a valid physical
-address) using the LHCALL_BIND_DMA(key, dmabufs, num<<8|irq)
-hypercall.  "dmabufs" is the physical address of an array of "num"
-"struct lguest_dma": each contains a used_len, and an array of
-physical addresses and lengths.  When a transfer occurs, the
-"used_len" field of one of the buffers which has used_len 0 will be
-set to the length transferred and the irq will fire.
+There is a helpful mailing list at
-Using an irq value of 0 unbinds the dma buffers.
-To send DMA, the LHCALL_SEND_DMA(key, dma_physaddr) hypercall is used,
-and the bytes used is written to the used_len field.  This can be 0 if
-noone else has bound a DMA buffer to that key or some other error.
-DMA buffers bound by the same guest are ignored.
+Good luck!
 Rusty Russell [EMAIL PROTECTED]
-[1] These are on various places on the TODO list, waiting for you to
-    get annoyed enough at the limitation to fix it.
-[2] Lguest is not yet tickless when idle.  See [1].
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to