Magellan Linux

Contents of /trunk/kernel26-xen/patches-2.6.25-r1/1038-2.6.25-xen-configurable-console.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 609 - (show annotations) (download)
Fri May 23 17:35:37 2008 UTC (15 years, 11 months ago) by niro
File size: 9239 byte(s)
-using opensuse xen patchset, updated kernel configs

1 From: jbeulich@novell.com
2 Subject: Allow Xen console to be independently configured
3 Patch-mainline: obsolete
4
5 Index: head-2008-02-26/drivers/xen/Kconfig
6 ===================================================================
7 --- head-2008-02-26.orig/drivers/xen/Kconfig 2008-02-26 17:30:23.000000000 +0100
8 +++ head-2008-02-26/drivers/xen/Kconfig 2008-03-03 14:45:27.000000000 +0100
9 @@ -221,6 +221,12 @@ config XEN_KEYBOARD
10 domain. If you've said Y to CONFIG_XEN_FRAMEBUFFER, you probably
11 want to say Y here.
12
13 +config XEN_CONSOLE
14 + bool "Xen virtual console"
15 + default y
16 + help
17 + The Xen virtual console is ...
18 +
19 config XEN_SCRUB_PAGES
20 bool "Scrub memory before freeing it to Xen"
21 default y
22 Index: head-2008-02-26/drivers/xen/console/Makefile
23 ===================================================================
24 --- head-2008-02-26.orig/drivers/xen/console/Makefile 2007-06-12 13:13:44.000000000 +0200
25 +++ head-2008-02-26/drivers/xen/console/Makefile 2008-03-03 14:45:27.000000000 +0100
26 @@ -1,2 +1,3 @@
27
28 -obj-y := console.o xencons_ring.o
29 +obj-$(CONFIG_XEN_CONSOLE) := console.o xencons_ring.o
30 +obj-$(CONFIG_XEN_PRIVILEGED_GUEST) += dom0.o
31 Index: head-2008-02-26/drivers/xen/console/console.c
32 ===================================================================
33 --- head-2008-02-26.orig/drivers/xen/console/console.c 2008-02-26 17:38:18.000000000 +0100
34 +++ head-2008-02-26/drivers/xen/console/console.c 2008-03-03 14:45:27.000000000 +0100
35 @@ -271,63 +271,6 @@ void xencons_force_flush(void)
36 }
37
38
39 -void __init dom0_init_screen_info(const struct dom0_vga_console_info *info, size_t size)
40 -{
41 - /* This is drawn from a dump from vgacon:startup in
42 - * standard Linux. */
43 - screen_info.orig_video_mode = 3;
44 - screen_info.orig_video_isVGA = 1;
45 - screen_info.orig_video_lines = 25;
46 - screen_info.orig_video_cols = 80;
47 - screen_info.orig_video_ega_bx = 3;
48 - screen_info.orig_video_points = 16;
49 - screen_info.orig_y = screen_info.orig_video_lines - 1;
50 -
51 - switch (info->video_type) {
52 - case XEN_VGATYPE_TEXT_MODE_3:
53 - if (size < offsetof(struct dom0_vga_console_info, u.text_mode_3)
54 - + sizeof(info->u.text_mode_3))
55 - break;
56 - screen_info.orig_video_lines = info->u.text_mode_3.rows;
57 - screen_info.orig_video_cols = info->u.text_mode_3.columns;
58 - screen_info.orig_x = info->u.text_mode_3.cursor_x;
59 - screen_info.orig_y = info->u.text_mode_3.cursor_y;
60 - screen_info.orig_video_points =
61 - info->u.text_mode_3.font_height;
62 - break;
63 -
64 - case XEN_VGATYPE_VESA_LFB:
65 - if (size < offsetof(struct dom0_vga_console_info,
66 - u.vesa_lfb.gbl_caps))
67 - break;
68 - screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB;
69 - screen_info.lfb_width = info->u.vesa_lfb.width;
70 - screen_info.lfb_height = info->u.vesa_lfb.height;
71 - screen_info.lfb_depth = info->u.vesa_lfb.bits_per_pixel;
72 - screen_info.lfb_base = info->u.vesa_lfb.lfb_base;
73 - screen_info.lfb_size = info->u.vesa_lfb.lfb_size;
74 - screen_info.lfb_linelength = info->u.vesa_lfb.bytes_per_line;
75 - screen_info.red_size = info->u.vesa_lfb.red_size;
76 - screen_info.red_pos = info->u.vesa_lfb.red_pos;
77 - screen_info.green_size = info->u.vesa_lfb.green_size;
78 - screen_info.green_pos = info->u.vesa_lfb.green_pos;
79 - screen_info.blue_size = info->u.vesa_lfb.blue_size;
80 - screen_info.blue_pos = info->u.vesa_lfb.blue_pos;
81 - screen_info.rsvd_size = info->u.vesa_lfb.rsvd_size;
82 - screen_info.rsvd_pos = info->u.vesa_lfb.rsvd_pos;
83 - if (size >= offsetof(struct dom0_vga_console_info,
84 - u.vesa_lfb.gbl_caps)
85 - + sizeof(info->u.vesa_lfb.gbl_caps))
86 - screen_info.capabilities = info->u.vesa_lfb.gbl_caps;
87 - if (size >= offsetof(struct dom0_vga_console_info,
88 - u.vesa_lfb.mode_attrs)
89 - + sizeof(info->u.vesa_lfb.mode_attrs))
90 - screen_info.vesa_attributes = info->u.vesa_lfb.mode_attrs;
91 - break;
92 - }
93 -}
94 -
95 -
96 /******************** User-space console driver (/dev/console) ************/
97
98 #define DRV(_d) (_d)
99 Index: head-2008-02-26/drivers/xen/console/dom0.c
100 ===================================================================
101 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
102 +++ head-2008-02-26/drivers/xen/console/dom0.c 2008-03-03 14:45:27.000000000 +0100
103 @@ -0,0 +1,93 @@
104 +/******************************************************************************
105 + * dom0.c
106 + *
107 + * Dom0 console parameter initialization.
108 + *
109 + * Copyright (c) 2002-2004, K A Fraser.
110 + *
111 + * This program is free software; you can redistribute it and/or
112 + * modify it under the terms of the GNU General Public License version 2
113 + * as published by the Free Software Foundation; or, when distributed
114 + * separately from the Linux kernel or incorporated into other
115 + * software packages, subject to the following license:
116 + *
117 + * Permission is hereby granted, free of charge, to any person obtaining a copy
118 + * of this source file (the "Software"), to deal in the Software without
119 + * restriction, including without limitation the rights to use, copy, modify,
120 + * merge, publish, distribute, sublicense, and/or sell copies of the Software,
121 + * and to permit persons to whom the Software is furnished to do so, subject to
122 + * the following conditions:
123 + *
124 + * The above copyright notice and this permission notice shall be included in
125 + * all copies or substantial portions of the Software.
126 + *
127 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
128 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
129 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
130 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
131 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
132 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
133 + * IN THE SOFTWARE.
134 + */
135 +
136 +#include <linux/types.h>
137 +#include <linux/screen_info.h>
138 +#include <linux/init.h>
139 +#include <xen/interface/xen.h>
140 +#include <xen/xencons.h>
141 +
142 +void __init dom0_init_screen_info(const struct dom0_vga_console_info *info, size_t size)
143 +{
144 + /* This is drawn from a dump from vgacon:startup in
145 + * standard Linux. */
146 + screen_info.orig_video_mode = 3;
147 + screen_info.orig_video_isVGA = 1;
148 + screen_info.orig_video_lines = 25;
149 + screen_info.orig_video_cols = 80;
150 + screen_info.orig_video_ega_bx = 3;
151 + screen_info.orig_video_points = 16;
152 + screen_info.orig_y = screen_info.orig_video_lines - 1;
153 +
154 + switch (info->video_type) {
155 + case XEN_VGATYPE_TEXT_MODE_3:
156 + if (size < offsetof(struct dom0_vga_console_info, u.text_mode_3)
157 + + sizeof(info->u.text_mode_3))
158 + break;
159 + screen_info.orig_video_lines = info->u.text_mode_3.rows;
160 + screen_info.orig_video_cols = info->u.text_mode_3.columns;
161 + screen_info.orig_x = info->u.text_mode_3.cursor_x;
162 + screen_info.orig_y = info->u.text_mode_3.cursor_y;
163 + screen_info.orig_video_points =
164 + info->u.text_mode_3.font_height;
165 + break;
166 +
167 + case XEN_VGATYPE_VESA_LFB:
168 + if (size < offsetof(struct dom0_vga_console_info,
169 + u.vesa_lfb.gbl_caps))
170 + break;
171 + screen_info.orig_video_isVGA = VIDEO_TYPE_VLFB;
172 + screen_info.lfb_width = info->u.vesa_lfb.width;
173 + screen_info.lfb_height = info->u.vesa_lfb.height;
174 + screen_info.lfb_depth = info->u.vesa_lfb.bits_per_pixel;
175 + screen_info.lfb_base = info->u.vesa_lfb.lfb_base;
176 + screen_info.lfb_size = info->u.vesa_lfb.lfb_size;
177 + screen_info.lfb_linelength = info->u.vesa_lfb.bytes_per_line;
178 + screen_info.red_size = info->u.vesa_lfb.red_size;
179 + screen_info.red_pos = info->u.vesa_lfb.red_pos;
180 + screen_info.green_size = info->u.vesa_lfb.green_size;
181 + screen_info.green_pos = info->u.vesa_lfb.green_pos;
182 + screen_info.blue_size = info->u.vesa_lfb.blue_size;
183 + screen_info.blue_pos = info->u.vesa_lfb.blue_pos;
184 + screen_info.rsvd_size = info->u.vesa_lfb.rsvd_size;
185 + screen_info.rsvd_pos = info->u.vesa_lfb.rsvd_pos;
186 + if (size >= offsetof(struct dom0_vga_console_info,
187 + u.vesa_lfb.gbl_caps)
188 + + sizeof(info->u.vesa_lfb.gbl_caps))
189 + screen_info.capabilities = info->u.vesa_lfb.gbl_caps;
190 + if (size >= offsetof(struct dom0_vga_console_info,
191 + u.vesa_lfb.mode_attrs)
192 + + sizeof(info->u.vesa_lfb.mode_attrs))
193 + screen_info.vesa_attributes = info->u.vesa_lfb.mode_attrs;
194 + break;
195 + }
196 +}
197 Index: head-2008-02-26/include/xen/xencons.h
198 ===================================================================
199 --- head-2008-02-26.orig/include/xen/xencons.h 2008-02-26 17:30:23.000000000 +0100
200 +++ head-2008-02-26/include/xen/xencons.h 2008-03-03 14:45:27.000000000 +0100
201 @@ -1,9 +1,14 @@
202 #ifndef __ASM_XENCONS_H__
203 #define __ASM_XENCONS_H__
204
205 +#ifdef CONFIG_XEN_PRIVILEGED_GUEST
206 struct dom0_vga_console_info;
207 void dom0_init_screen_info(const struct dom0_vga_console_info *, size_t);
208 +#else
209 +#define dom0_init_screen_info(info) ((void)(info))
210 +#endif
211
212 +#ifdef CONFIG_XEN_CONSOLE
213 void xencons_force_flush(void);
214 void xencons_resume(void);
215
216 @@ -13,5 +18,9 @@ void xencons_tx(void);
217
218 int xencons_ring_init(void);
219 int xencons_ring_send(const char *data, unsigned len);
220 +#else
221 +static inline void xencons_force_flush(void) {}
222 +static inline void xencons_resume(void) {}
223 +#endif
224
225 #endif /* __ASM_XENCONS_H__ */