From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: "He, Qing" <qing.he-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [PATCH 2/2] Add MSR Bitmap support in VMX
Date: Thu, 02 Aug 2007 15:39:46 +0300 [thread overview]
Message-ID: <46B1D092.7070609@qumranet.com> (raw)
In-Reply-To: <37E52D09333DE2469A03574C88DBF40F048ED2-wq7ZOvIWXbM/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1136 bytes --]
He, Qing wrote:
>>
>> hmm. While there's nothing wrong with the patch, there is a simpler way
>> to do this:
>>
>> static unsigned long vmx_msr_bitmap[PAGE_SIZE / sizeof(unsigned
>> long)] __aligned(PAGE_SIZE);
>>
>> now there's no need to allocate, error-check, free, or kmap the memory.
>> The io bitmaps can receive similar treatment.
>>
>
> Well, though not so important, kmapping do have a tiny advantage, it uses less virtual space if HIGHMEM is used. This makes sense when 1G limited kernel space is used, although it's highly unlikely to be a real problem.
>
>
Starting a virtual machine consumes about 4MB of low memory for the
shadow mmu (more for the memory map and for various slabs), so 4K is not
an issue.
However, I do see an issue with my proposal. To get the physical address
of the page, we need to use vmalloc_to_page(). But that won't work if
kvm is built into the kernel (and thus uses large pages for data).
Rusty, what say you to a 'struct page *module_to_page(void *kaddr)'
which does the right thing? Attached an implementation.
--
error compiling committee.c: too many arguments to function
[-- Attachment #2: module_to_page.patch --]
[-- Type: text/x-patch, Size: 1590 bytes --]
diff --git a/include/linux/module.h b/include/linux/module.h
index b6a646c..c520a3a 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -16,6 +16,7 @@
#include <linux/kobject.h>
#include <linux/moduleparam.h>
#include <asm/local.h>
+#include <asm/page.h>
#include <asm/module.h>
@@ -371,6 +372,7 @@ static inline int module_is_live(struct module *mod)
struct module *module_text_address(unsigned long addr);
struct module *__module_text_address(unsigned long addr);
int is_module_address(unsigned long addr);
+struct page *module_to_page(void *kaddr);
/* Returns 0 and fills in value, defined and namebuf, or -ERANGE if
symnum out of range. */
@@ -498,6 +500,11 @@ static inline int is_module_address(unsigned long addr)
return 0;
}
+static inline struct page *module_to_page(void *kaddr)
+{
+ return virt_to_page(kaddr);
+}
+
/* Get/put a kernel symbol (calls should be symmetric) */
#define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); })
#define symbol_put(x) do { } while(0)
diff --git a/kernel/module.c b/kernel/module.c
index 33c04ad..4618792 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2347,6 +2347,16 @@ int is_module_address(unsigned long addr)
return 0;
}
+/*
+ * Convert a virtual address, possibly in a module, to a struct page.
+ */
+struct page *module_to_page(void *kaddr)
+{
+ if (is_module_address((unsigned long)kaddr))
+ return vmalloc_to_page(kaddr);
+ else
+ return virt_to_page(kaddr);
+}
/* Is this a valid kernel address? */
struct module *__module_text_address(unsigned long addr)
[-- Attachment #3: Type: text/plain, Size: 315 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
[-- Attachment #4: Type: text/plain, Size: 186 bytes --]
_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel
next prev parent reply other threads:[~2007-08-02 12:39 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-01 9:10 [PATCH 2/2] Add MSR Bitmap support in VMX Yang, Sheng
[not found] ` <DB3BD37E3533EE46BED2FBA80995557F62F4C6-wq7ZOvIWXbM/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-08-02 10:59 ` Avi Kivity
[not found] ` <46B1B925.1080808-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-02 12:03 ` He, Qing
[not found] ` <37E52D09333DE2469A03574C88DBF40F048ED2-wq7ZOvIWXbM/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-08-02 12:39 ` Avi Kivity [this message]
[not found] ` <46B1D092.7070609-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-02 14:23 ` Avi Kivity
[not found] ` <46B1E8D6.6010106-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-02 14:41 ` Li, Xin B
[not found] ` <B30DA1341B0CFA4893EF8A36B40B5C5D0178DAEF-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-08-02 14:50 ` Avi Kivity
[not found] ` <46B1EF29.9000200-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-02 15:07 ` Li, Xin B
2007-08-02 15:30 ` ron minnich
[not found] ` <13426df10708020830r5e716fb3p179f6937fb1f9412-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-02 15:50 ` Avi Kivity
[not found] ` <46B1FD30.9040708-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-02 17:54 ` Nakajima, Jun
[not found] ` <97D612E30E1F88419025B06CB4CF1BE10318605D-1a9uaKK1+wJcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-08-02 18:23 ` Ulrich Drepper
[not found] ` <46B22134.7080807-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2007-08-03 1:26 ` Li, Xin B
[not found] ` <B30DA1341B0CFA4893EF8A36B40B5C5D0178DC43-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-08-03 16:10 ` Avi Kivity
2007-08-02 21:55 ` Rusty Russell
[not found] ` <1186091736.6131.149.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-08-03 14:54 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46B1D092.7070609@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=qing.he-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.