aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2003-05-06 14:54:13 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2003-05-06 14:54:13 +0000
commitbeb01bce683c8ee2ca2b5105e5274f2fe56e6cb0 (patch)
tree5d86e454c69ef015d034807f061a68cf72406d64
parent8f6aca9a6b125d8f592ac793f93fcecfbb9f4802 (diff)
downloadxen-beb01bce683c8ee2ca2b5105e5274f2fe56e6cb0.tar.gz
xen-beb01bce683c8ee2ca2b5105e5274f2fe56e6cb0.tar.bz2
xen-beb01bce683c8ee2ca2b5105e5274f2fe56e6cb0.zip
bitkeeper revision 1.208 (3eb7cc95biENxNPLM1gD4B9rpj7H_w)
Makefile: new file Many files: Allow hypercalls from ring 3 (if permitted by ring 1). .del-Config.in~31701845a0b06ec3: Delete: xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
-rw-r--r--.rootkeys2
-rw-r--r--xen/arch/i386/entry.S8
-rw-r--r--xen/arch/i386/process.c15
-rw-r--r--xen/arch/i386/traps.c17
-rw-r--r--xen/include/asm-i386/processor.h1
-rw-r--r--xen/include/hypervisor-ifs/hypervisor-if.h2
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in20
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c32
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c8
-rw-r--r--xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c22
-rw-r--r--xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in361
-rw-r--r--xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile334
-rw-r--r--xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h7
-rw-r--r--xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h3
14 files changed, 432 insertions, 400 deletions
diff --git a/.rootkeys b/.rootkeys
index ab6d2dfe6e..c450c67df2 100644
--- a/.rootkeys
+++ b/.rootkeys
@@ -449,7 +449,7 @@
3e5a4e668yELUdtr3HiJZBIqxqUyuA xenolinux-2.4.21-pre4-sparse/drivers/block/Config.in
3ea53c6em6uzVHSiGqrbbAVofyRY_g xenolinux-2.4.21-pre4-sparse/drivers/block/genhd.c
3e5a4e66mrtlmV75L1tjKDg8RaM5gA xenolinux-2.4.21-pre4-sparse/drivers/block/ll_rw_blk.c
-3ead095dEkj9JJWYYBnbvW3OYbKFxg xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
+3eb7cc90LCRDzdNiLIt20dkBbAwVKQ xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
3ead095dPseRoFELVf_xcnVXjq02hw xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
3e5a4e66rw65CxyolW9PKz4GG42RcA xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
3e5a4e669uzIE54VwucPYtGwXLAbzA xenolinux-2.4.21-pre4-sparse/fs/exec.c
diff --git a/xen/arch/i386/entry.S b/xen/arch/i386/entry.S
index f14f594ee5..33d533a283 100644
--- a/xen/arch/i386/entry.S
+++ b/xen/arch/i386/entry.S
@@ -210,8 +210,8 @@ ENTRY(ret_from_newdomain)
*/
do_multicall:
popl %eax
- cmpl $SYMBOL_NAME(ret_from_hypervisor_call),%eax
- jne multicall_exit /* bail if called recursively */
+ cmpl $SYMBOL_NAME(multicall_return_from_call),%eax
+ je multicall_return_from_call
pushl %ebx
movl 4(%esp),%ebx /* EBX == call_list */
movl 8(%esp),%ecx /* ECX == nr_calls */
@@ -231,12 +231,12 @@ multicall_fault6:
movl (%ebx),%eax
andl $255,%eax
call *SYMBOL_NAME(hypervisor_call_table)(,%eax,4)
+multicall_return_from_call:
addl $20,%esp
popl %ecx
addl $BYTES_PER_MULTICALL_ENTRY,%ebx
loop multicall_loop
popl %ebx
-multicall_exit:
xorl %eax,%eax
jmp ret_from_hypervisor_call
@@ -647,7 +647,7 @@ ENTRY(hypervisor_call_table)
.long SYMBOL_NAME(do_dom_mem_op)
.long SYMBOL_NAME(do_multicall)
.long SYMBOL_NAME(do_kbd_op)
- .long SYMBOL_NAME(do_iopl)
+ .long SYMBOL_NAME(do_set_priv_levels)
.rept NR_syscalls-((.-hypervisor_call_table)/4)
.long SYMBOL_NAME(sys_ni_syscall)
.endr
diff --git a/xen/arch/i386/process.c b/xen/arch/i386/process.c
index 2cac1a9d4e..695b581507 100644
--- a/xen/arch/i386/process.c
+++ b/xen/arch/i386/process.c
@@ -348,10 +348,19 @@ void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
}
-long do_iopl(unsigned int new_iopl)
+long do_set_priv_levels(unsigned int new_io_pl, unsigned int new_hypercall_pl)
{
struct pt_regs *regs = GET_SYSCALL_REGS(current);
- if ( !IS_PRIV(current) ) return -EPERM;
- regs->eflags = (regs->eflags & 0xffffcfff) | ((new_iopl&3) << 12);
+
+ /*
+ * Any domain can reduce privilege required for hypercall access.
+ * Note that access from ring 1 cannot be relinquished.
+ */
+ current->thread.hypercall_pl = new_hypercall_pl & 3;
+
+ /* Only privileged domains can acquire access to I/O ports. */
+ if ( IS_PRIV(current) )
+ regs->eflags = (regs->eflags & 0xffffcfff) | ((new_io_pl&3) << 12);
+
return 0;
}
diff --git a/xen/arch/i386/traps.c b/xen/arch/i386/traps.c
index 8ca6b90ccf..e4af21065b 100644
--- a/xen/arch/i386/traps.c
+++ b/xen/arch/i386/traps.c
@@ -401,6 +401,23 @@ asmlinkage void do_general_protection(struct pt_regs *regs, long error_code)
*/
if ( (error_code & 3) == 2 )
{
+ /*
+ * Hypercalls from rings 2 or 3 fall through to here. If permitted, we
+ * will transfer control to the requested hypercall.
+ */
+ if ( ((error_code>>3) == HYPERVISOR_CALL_VECTOR) &&
+ (current->thread.hypercall_pl >= (regs->xcs & 3)) )
+ {
+ __asm__ __volatile__ (
+ "movl %0,%%esp \n"
+ "sti \n"
+ "andl $255,%%eax \n"
+ "call *hypervisor_call_table(,%%eax,4) \n"
+ "movl %%eax,0x18(%%esp) \n"
+ "jmp ret_from_intr \n"
+ : : "r" (regs) );
+ }
+
/* This fault must be due to <INT n> instruction. */
ti = current->thread.traps + (error_code>>3);
if ( ti->dpl >= (regs->xcs & 3) )
diff --git a/xen/include/asm-i386/processor.h b/xen/include/asm-i386/processor.h
index c0de1bd9b9..7a1afac68a 100644
--- a/xen/include/asm-i386/processor.h
+++ b/xen/include/asm-i386/processor.h
@@ -356,6 +356,7 @@ struct thread_struct {
int fast_trap_idx;
struct desc_struct fast_trap_desc;
trap_info_t traps[256];
+ int hypercall_pl;
};
#define IDT_ENTRIES 256
diff --git a/xen/include/hypervisor-ifs/hypervisor-if.h b/xen/include/hypervisor-ifs/hypervisor-if.h
index f72e8783d5..2516f84554 100644
--- a/xen/include/hypervisor-ifs/hypervisor-if.h
+++ b/xen/include/hypervisor-ifs/hypervisor-if.h
@@ -48,7 +48,7 @@
#define __HYPERVISOR_dom_mem_op 17
#define __HYPERVISOR_multicall 18
#define __HYPERVISOR_kbd_op 19
-#define __HYPERVISOR_iopl 20
+#define __HYPERVISOR_set_priv_levels 20
/* And the trap vector is... */
#define TRAP_INSTR "int $0x82"
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in b/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in
index 2bf874d69e..717ae0c605 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in
@@ -107,7 +107,25 @@ source drivers/block/Config.in
define_bool CONFIG_BLK_DEV_IDE_MODES n
define_bool CONFIG_BLK_DEV_HD n
-source drivers/char/Config.in
+mainmenu_option next_comment
+comment 'Character devices'
+
+bool 'Xen console support' CONFIG_XEN_CONSOLE
+comment 'The options below are alpha-stage and will probably not work'
+bool 'Virtual terminal' CONFIG_VT
+if [ "$CONFIG_VT" = "y" ]; then
+ bool ' Support for console on virtual terminal' CONFIG_VT_CONSOLE
+ bool ' Support for VGA Video' CONFIG_VGA_CONSOLE
+ bool ' Support for Dummy Video (for testing)' CONFIG_DUMMY_CONSOLE
+ bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
+fi
+
+bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
+if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
+ int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
+fi
+
+endmenu
source fs/Config.in
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c
index c43daee3fd..b86f8ee4d5 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c
@@ -15,22 +15,32 @@ asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int turn_on)
asmlinkage int sys_iopl(unsigned long unused)
{
struct pt_regs *regs = (struct pt_regs *)&unused;
- unsigned int level = regs->ebx;
- unsigned int old = (regs->eflags >> 12) & 3;
-
- if ( !(start_info.flags & SIF_PRIVILEGED) )
+ unsigned int new_io_pl = regs->ebx & 3;
+ unsigned int old_io_pl = (regs->eflags >> 12) & 3;
+ unsigned int new_hypercall_pl = (regs->ebx >> 2) & 3;
+ unsigned int old_hypercall_pl = current->thread.hypercall_pl;
+
+ /* Need "raw I/O" privileges for direct port access. */
+ if ( (new_io_pl > old_io_pl) &&
+ (!capable(CAP_SYS_RAWIO) || !(start_info.flags & SIF_PRIVILEGED)) )
return -EPERM;
- if ( level > 3 )
- return -EINVAL;
- if ( (level > old) && !capable(CAP_SYS_RAWIO) )
+ /* Just need generic root/admin privileges for direct hypercall access. */
+ if ( (new_hypercall_pl > old_hypercall_pl) && !capable(CAP_SYS_ADMIN) )
return -EPERM;
-
- /* Change the one on our stack for sanity's sake. */
- regs->eflags = (regs->eflags & 0xffffcfff) | (level << 12);
+
+ /* Maintain OS privileges even if user attempts to relinquish them. */
+ if ( new_hypercall_pl == 0 )
+ new_hypercall_pl = 1;
+ if ( (new_io_pl == 0) && !(start_info.flags & SIF_PRIVILEGED) )
+ new_io_pl = 1;
+
+ /* Change our version of the privilege levels. */
+ regs->eflags = (regs->eflags & 0xffffcfff) | (old_io_pl << 12);
+ current->thread.hypercall_pl = new_hypercall_pl;
/* Force the change at ring 0. */
- HYPERVISOR_iopl(level);
+ HYPERVISOR_set_priv_levels(new_io_pl, new_hypercall_pl);
return 0;
}
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c
index a7c0755d38..c1764fce50 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c
@@ -269,6 +269,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
unlazy_fpu(current);
struct_cpy(&p->thread.i387, &current->thread.i387);
+ /* We're careful with hypercall privileges. Don't allow inheritance. */
+ p->thread.hypercall_pl = 1;
+
return 0;
}
@@ -366,8 +369,9 @@ void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
{
queue_multicall2(__HYPERVISOR_stack_switch, __KERNEL_DS, next->esp0);
/* Next call will silently fail if we are a non-privileged guest OS. */
- queue_multicall1(__HYPERVISOR_iopl,
- ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3);
+ queue_multicall2(__HYPERVISOR_set_priv_levels,
+ ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3,
+ next->hypercall_pl);
}
/* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c
index 832a7a2087..cc53983f34 100644
--- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c
+++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c
@@ -301,23 +301,21 @@ void __init setup_arch(char **cmdline_p)
paging_init();
- if(start_info.flags & SIF_PRIVILEGED) {
- // we are privileged guest os - should be able to set IOPL
- if(HYPERVISOR_iopl(1)) {
- panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
- }
+ if ( start_info.flags & SIF_PRIVILEGED )
+ /* We are privileged guest os - should have IO privileges. */
+ if( HYPERVISOR_set_priv_levels(1, 1) )
+ panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
- }
+ if(start_info.flags & SIF_CONSOLE)
+ {
+ if( !(start_info.flags & SIF_PRIVILEGED) )
+ panic("Xen granted us console access but not privileged status");
- if(start_info.flags & SIF_CONSOLE) {
- if(!(start_info.flags & SIF_PRIVILEGED)) {
- panic("Xen granted us console access but not privileged status");
- }
#ifdef CONFIG_VT
#if defined(CONFIG_VGA_CONSOLE)
- conswitchp = &vga_con;
+ conswitchp = &vga_con;
#elif defined(CONFIG_DUMMY_CONSOLE)
- conswitchp = &dummy_con;
+ conswitchp = &dummy_con;
#endif
#endif
}
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in b/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
deleted file mode 100644
index 217398d6e2..0000000000
--- a/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
+++ /dev/null
@@ -1,361 +0,0 @@
-#
-# Character device configuration
-#
-mainmenu_option next_comment
-comment 'Character devices'
-
-bool 'Xen console support' CONFIG_XEN_CONSOLE
-comment 'The options below are alpha-stage and will probably not work'
-bool 'Virtual terminal' CONFIG_VT
-if [ "$CONFIG_VT" = "y" ]; then
- bool ' Support for console on virtual terminal' CONFIG_VT_CONSOLE
- bool ' Support for VGA Video' CONFIG_VGA_CONSOLE
- bool ' Support for Dummy Video (for testing)' CONFIG_DUMMY_CONSOLE
- bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
-fi
-
-bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
-if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
- int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
-fi
-
-
-endmenu
-
-# KEPT IN CASE WE WANT TO BRING SOME BACK...
-#
-#if [ "$CONFIG_VT" = "y" ]; then
-# bool ' Support for console on virtual terminal' CONFIG_VT_CONSOLE
-# if [ "$CONFIG_GSC_LASI" = "y" ]; then
-# bool ' Support for Lasi/Dino PS2 port' CONFIG_GSC_PS2
-# fi
-#fi
-#
-#tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL
-#if [ "$CONFIG_SERIAL" = "y" ]; then
-# bool ' Support for console on serial port' CONFIG_SERIAL_CONSOLE
-# if [ "$CONFIG_GSC_LASI" = "y" ]; then
-# bool ' serial port on GSC support' CONFIG_SERIAL_GSC
-# fi
-# if [ "$CONFIG_IA64" = "y" ]; then
-# bool 'Support for serial console port described by EFI HCDP table' CONFIG_SERIAL_HCDP
-# fi
-# if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
-# tristate ' Atomwide serial port support' CONFIG_ATOMWIDE_SERIAL
-# tristate ' Dual serial port support' CONFIG_DUALSP_SERIAL
-# fi
-#fi
-#dep_mbool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED $CONFIG_SERIAL
-#if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
-# bool ' Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
-# bool ' Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ
-# bool ' Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ
-# bool ' Support special multiport boards' CONFIG_SERIAL_MULTIPORT
-# bool ' Support the Bell Technologies HUB6 card' CONFIG_HUB6
-#fi
-#bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD
-#if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then
-# tristate ' Computone IntelliPort Plus serial support' CONFIG_COMPUTONE
-# tristate ' Comtrol Rocketport support' CONFIG_ROCKETPORT
-# tristate ' Cyclades async mux support' CONFIG_CYCLADES
-# if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_CYCLADES" != "n" ]; then
-# bool ' Cyclades-Z interrupt mode operation (EXPERIMENTAL)' CONFIG_CYZ_INTR
-# fi
-# if [ "$CONFIG_X86_64" != "y" ]; then
-# tristate ' Digiboard Intelligent Async Support' CONFIG_DIGIEPCA
-# if [ "$CONFIG_DIGIEPCA" = "n" ]; then
-# tristate ' Digiboard PC/Xx Support' CONFIG_DIGI
-# fi
-# fi
-# dep_tristate ' Hayes ESP serial port support' CONFIG_ESPSERIAL $CONFIG_ISA
-# tristate ' Moxa Intellio support' CONFIG_MOXA_INTELLIO
-# tristate ' Moxa SmartIO support' CONFIG_MOXA_SMARTIO
-# if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-# dep_tristate ' Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
-# fi
-# tristate ' Microgate SyncLink card support' CONFIG_SYNCLINK
-# tristate ' SyncLink Multiport support' CONFIG_SYNCLINKMP
-# tristate ' HDLC line discipline support' CONFIG_N_HDLC
-# tristate ' SDL RISCom/8 card support' CONFIG_RISCOM8
-# if [ "$CONFIG_X86_64" != "y" ]; then
-# tristate ' Specialix IO8+ card support' CONFIG_SPECIALIX
-# if [ "$CONFIG_SPECIALIX" != "n" ]; then
-# bool ' Specialix DTR/RTS pin is RTS' CONFIG_SPECIALIX_RTSCTS
-# fi
-# tristate ' Specialix SX (and SI) card support' CONFIG_SX
-# tristate ' Specialix RIO system support' CONFIG_RIO
-# if [ "$CONFIG_RIO" != "n" ]; then
-# bool ' Support really old RIO/PCI cards' CONFIG_RIO_OLDPCI
-# fi
-# fi
-# bool ' Stallion multiport serial support' CONFIG_STALDRV
-# if [ "$CONFIG_STALDRV" = "y" ]; then
-# tristate ' Stallion EasyIO or EC8/32 support' CONFIG_STALLION
-# tristate ' Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION
-# fi
-# if [ "$CONFIG_PARISC" = "y" ]; then
-# if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then
-# bool ' Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD
-# fi
-# if [ "$CONFIG_SERIAL_MUX" != "y" ]; then
-# bool ' PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD
-# fi
-# fi
-# if [ "$CONFIG_MIPS" = "y" ]; then
-# bool ' TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
-# dep_bool ' Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
-# bool ' Enable Au1000 UART Support' CONFIG_AU1000_UART
-# if [ "$CONFIG_AU1000_UART" = "y" ]; then
-# bool ' Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
-# fi
-# bool 'TXx927 SIO support' CONFIG_TXX927_SERIAL
-# if [ "$CONFIG_TXX927_SERIAL" = "y" ]; then
-# bool 'TXx927 SIO Console support' CONFIG_TXX927_SERIAL_CONSOLE
-# fi
-# if [ "$CONFIG_SIBYTE_SB1250" = "y" ]; then
-# bool ' Support for sb1250 onchip DUART' CONFIG_SIBYTE_SB1250_DUART
-# if [ "$CONFIG_SIBYTE_SB1250_DUART" = "y" ]; then
-# bool ' Console on SB1250 DUART' CONFIG_SIBYTE_SB1250_DUART_CONSOLE
-# if [ "$CONFIG_SIBYTE_SB1250_DUART_CONSOLE" = "y" ]; then
-# define_bool CONFIG_SERIAL_CONSOLE y
-# fi
-# int ' Output buffers size (in bytes)' CONFIG_SB1250_DUART_OUTPUT_BUF_SIZE 1024
-# bool ' Leave port 1 alone (for kgdb or audio)' CONFIG_SIBYTE_SB1250_DUART_NO_PORT_1
-# fi
-# fi
-# fi
-#fi
-#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
-# tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
-#fi
-#if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-# bool 'DC21285 serial port support' CONFIG_SERIAL_21285
-# if [ "$CONFIG_SERIAL_21285" = "y" ]; then
-# if [ "$CONFIG_OBSOLETE" = "y" ]; then
-# bool ' Use /dev/ttyS0 device (OBSOLETE)' CONFIG_SERIAL_21285_OLD
-# fi
-# bool ' Console on DC21285 serial port' CONFIG_SERIAL_21285_CONSOLE
-# fi
-# if [ "$CONFIG_MIPS" = "y" ]; then
-# bool ' TMPTX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
-# dep_bool ' Console on TMPTX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
-# bool ' Enable Au1000 UART Support' CONFIG_AU1000_UART
-# if [ "$CONFIG_AU1000_UART" = "y" ]; then
-# bool ' Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
-# fi
-# fi
-# if [ "$CONFIG_PARISC" = "y" ]; then
-# bool ' PDC software console support' CONFIG_PDC_CONSOLE
-# fi
-#fi
-#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-# bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-# if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-# define_bool CONFIG_IT8172_CIR y
-# else
-# bool ' Enable PS2 Keyboard Support' CONFIG_PC_KEYB
-# fi
-# bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-# bool 'Enable Smart Card Reader 1 Support ' CONFIG_IT8172_SCR1
-#fi
-#if [ "$CONFIG_MIPS_IVR" = "y" ]; then
-# bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-# if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-# define_bool CONFIG_IT8172_CIR y
-# fi
-# bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-#fi
-##PTYS WERE HERE
-#if [ "$CONFIG_PARPORT" != "n" ]; then
-# dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT
-# if [ "$CONFIG_PRINTER" != "n" ]; then
-# bool ' Support for console on line printer' CONFIG_LP_CONSOLE
-# fi
-# dep_tristate 'Support for user-space parallel port device drivers' CONFIG_PPDEV $CONFIG_PARPORT
-# dep_tristate 'Texas Instruments parallel link cable support' CONFIG_TIPAR $CONFIG_PARPORT
-#fi
-#
-#if [ "$CONFIG_PPC64" ] ; then
-# bool 'pSeries Hypervisor Virtual Console support' CONFIG_HVC_CONSOLE
-#fi
-#
-#source drivers/i2c/Config.in
-#
-#mainmenu_option next_comment
-#comment 'Mice'
-#tristate 'Bus Mouse Support' CONFIG_BUSMOUSE
-#if [ "$CONFIG_BUSMOUSE" != "n" ]; then
-# dep_tristate ' ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE $CONFIG_BUSMOUSE
-# dep_tristate ' Logitech busmouse support' CONFIG_LOGIBUSMOUSE $CONFIG_BUSMOUSE
-# dep_tristate ' Microsoft busmouse support' CONFIG_MS_BUSMOUSE $CONFIG_BUSMOUSE
-# if [ "$CONFIG_ADB" = "y" -a "$CONFIG_ADB_KEYBOARD" = "y" ]; then
-# dep_tristate ' Apple Desktop Bus mouse support (old driver)' CONFIG_ADBMOUSE $CONFIG_BUSMOUSE
-# fi
-#fi
-#
-#tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE
-#if [ "$CONFIG_MOUSE" != "n" ]; then
-# bool ' PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
-# tristate ' C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE
-# tristate ' PC110 digitizer pad support' CONFIG_PC110_PAD
-# tristate ' MK712 touch screen support' CONFIG_MK712_MOUSE
-#fi
-#endmenu
-#
-#source drivers/char/joystick/Config.in
-#
-#tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
-#if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
-# bool ' Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF
-# if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then
-# comment ' Edit configuration parameters in ./include/linux/tpqic02.h!'
-# else
-# comment ' Setting runtime QIC-02 configuration is done with qic02conf'
-# comment ' from the tpqic02-support package. It is available at'
-# comment ' metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/'
-# fi
-#fi
-#
-#tristate 'IPMI top-level message handler' CONFIG_IPMI_HANDLER
-#dep_mbool ' Generate a panic event to all BMCs on a panic' CONFIG_IPMI_PANIC_EVENT $CONFIG_IPMI_HANDLER
-#dep_tristate ' Device interface for IPMI' CONFIG_IPMI_DEVICE_INTERFACE $CONFIG_IPMI_HANDLER
-#dep_tristate ' IPMI KCS handler' CONFIG_IPMI_KCS $CONFIG_IPMI_HANDLER
-#dep_tristate ' IPMI Watchdog Timer' CONFIG_IPMI_WATCHDOG $CONFIG_IPMI_HANDLER
-#
-#mainmenu_option next_comment
-#comment 'Watchdog Cards'
-#bool 'Watchdog Timer Support' CONFIG_WATCHDOG
-#if [ "$CONFIG_WATCHDOG" != "n" ]; then
-# bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
-# tristate ' Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
-# tristate ' Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
-# tristate ' ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
-# tristate ' AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
-# tristate ' Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
-# if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-# tristate ' DC21285 watchdog' CONFIG_21285_WATCHDOG
-# if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-# tristate ' NetWinder WB83C977 watchdog' CONFIG_977_WATCHDOG
-# fi
-# fi
-# tristate ' Eurotech CPU-1220/1410 Watchdog Timer' CONFIG_EUROTECH_WDT
-# tristate ' IB700 SBC Watchdog Timer' CONFIG_IB700_WDT
-# tristate ' ICP ELectronics Wafer 5823 Watchdog' CONFIG_WAFER_WDT
-# if [ "$CONFIG_SGI_IP22" = "y" ]; then
-# dep_tristate ' Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
-# fi
-# tristate ' Intel i810 TCO timer / Watchdog' CONFIG_I810_TCO
-# tristate ' Mixcom Watchdog' CONFIG_MIXCOMWD
-# tristate ' SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
-# dep_tristate ' SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
-# tristate ' NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
-# tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG
-# tristate ' W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
-# tristate ' WDT Watchdog timer' CONFIG_WDT
-# tristate ' WDT PCI Watchdog timer' CONFIG_WDTPCI
-# if [ "$CONFIG_WDT" != "n" ]; then
-# bool ' WDT501 features' CONFIG_WDT_501
-# if [ "$CONFIG_WDT_501" = "y" ]; then
-# bool ' Fan Tachometer' CONFIG_WDT_501_FAN
-# fi
-# fi
-# tristate ' ZF MachZ Watchdog' CONFIG_MACHZ_WDT
-# dep_tristate ' AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
-#fi
-#endmenu
-#
-#if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-# tristate 'NetWinder thermometer support' CONFIG_DS1620
-# tristate 'NetWinder Button' CONFIG_NWBUTTON
-# if [ "$CONFIG_NWBUTTON" != "n" ]; then
-# bool ' Reboot Using Button' CONFIG_NWBUTTON_REBOOT
-# fi
-# tristate 'NetWinder flash support' CONFIG_NWFLASH
-#fi
-#dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
-#
-#if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then
-# dep_tristate 'AMD 768 Random Number Generator support' CONFIG_AMD_RNG $CONFIG_PCI
-#fi
-#if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" ]; then
-# dep_tristate 'Intel i8x0 Random Number Generator support' CONFIG_INTEL_RNG $CONFIG_PCI
-#fi
-#dep_tristate 'AMD 76x native power management (Experimental)' CONFIG_AMD_PM768 $CONFIG_PCI
-#tristate '/dev/nvram support' CONFIG_NVRAM
-#tristate 'Enhanced Real Time Clock Support' CONFIG_RTC
-#if [ "$CONFIG_IA64" = "y" ]; then
-# bool 'EFI Real Time Clock Services' CONFIG_EFI_RTC
-#fi
-#if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
-# bool 'Tadpole ANA H8 Support (OBSOLETE)' CONFIG_H8
-#fi
-#
-#tristate 'Double Talk PC internal speech card support' CONFIG_DTLK
-#tristate 'Siemens R3964 line discipline' CONFIG_R3964
-#tristate 'Applicom intelligent fieldbus card support' CONFIG_APPLICOM
-#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_X86" = "y" -a "$CONFIG_X86_64" != "y" ]; then
-# dep_tristate 'Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)' CONFIG_SONYPI $CONFIG_PCI
-#fi
-#
-#mainmenu_option next_comment
-#comment 'Ftape, the floppy tape device driver'
-#tristate 'Ftape (QIC-80/Travan) support' CONFIG_FTAPE
-#if [ "$CONFIG_FTAPE" != "n" ]; then
-# source drivers/char/ftape/Config.in
-#fi
-#endmenu
-#
-#if [ "$CONFIG_GART_IOMMU" = "y" ]; then
-# bool '/dev/agpgart (AGP Support)' CONFIG_AGP
-# define_bool CONFIG_AGP_AMD_8151 y
-#else
-# tristate '/dev/agpgart (AGP Support)' CONFIG_AGP
-#fi
-#if [ "$CONFIG_AGP" != "n" ]; then
-# bool ' Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support' CONFIG_AGP_INTEL
-# bool ' Intel I810/I815/I830M (on-board) support' CONFIG_AGP_I810
-# bool ' VIA chipset support' CONFIG_AGP_VIA
-# bool ' AMD Irongate, 761, and 762 support' CONFIG_AGP_AMD
-# if [ "$CONFIG_GART_IOMMU" != "y" ]; then
-# bool ' AMD 8151 support' CONFIG_AGP_AMD_8151
-# fi
-# bool ' Generic SiS support' CONFIG_AGP_SIS
-# bool ' ALI chipset support' CONFIG_AGP_ALI
-# bool ' Serverworks LE/HE support' CONFIG_AGP_SWORKS
-# if [ "$CONFIG_IA64" = "y" ]; then
-# bool ' HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
-# fi
-#fi
-#
-#bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM
-#if [ "$CONFIG_DRM" = "y" ]; then
-# bool ' Build drivers for old (XFree 4.0) DRM' CONFIG_DRM_OLD
-# if [ "$CONFIG_DRM_OLD" = "y" ]; then
-# comment 'DRM 4.0 drivers'
-# source drivers/char/drm-4.0/Config.in
-# else
-# comment 'DRM 4.1 drivers'
-# define_bool CONFIG_DRM_NEW y
-# source drivers/char/drm/Config.in
-# fi
-#fi
-#
-#if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
-# source drivers/char/pcmcia/Config.in
-#fi
-#if [ "$CONFIG_MIPS_AU1000" = "y" ]; then
-# tristate ' Alchemy Au1000 GPIO device support' CONFIG_AU1000_GPIO
-# tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1000_ADS7846
-#fi
-#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-# tristate ' ITE GPIO' CONFIG_ITE_GPIO
-#fi
-#
-#if [ "$CONFIG_X86" = "y" ]; then
-# tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-#fi
-
-
-
-
-
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile b/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
new file mode 100644
index 0000000000..492c63dfba
--- /dev/null
+++ b/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
@@ -0,0 +1,334 @@
+#
+# Makefile for the kernel character device drivers.
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+# Note 2! The CFLAGS definitions are now inherited from the
+# parent makes..
+#
+
+#
+# This file contains the font map for the default (hardware) font
+#
+FONTMAPFILE = cp437.uni
+
+O_TARGET := char.o
+
+obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
+
+# All of the (potential) objects that export symbols.
+# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
+
+export-objs := busmouse.o console.o keyboard.o sysrq.o \
+ misc.o pty.o random.o selection.o serial.o \
+ sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
+ au1000_gpio.o hp_psaux.o nvram.o
+
+mod-subdirs := joystick ftape drm drm-4.0 pcmcia
+
+list-multi :=
+
+KEYMAP =defkeymap.o
+KEYBD =pc_keyb.o
+CONSOLE =console.o
+SERIAL =serial.o
+
+ifeq ($(ARCH),s390)
+ KEYMAP =
+ KEYBD =
+ CONSOLE =
+ SERIAL =
+endif
+
+ifeq ($(ARCH),mips)
+ ifneq ($(CONFIG_PC_KEYB),y)
+ KEYBD =
+ endif
+endif
+
+ifeq ($(ARCH),s390x)
+ KEYMAP =
+ KEYBD =
+ CONSOLE =
+ SERIAL =
+endif
+
+ifeq ($(ARCH),m68k)
+ ifdef CONFIG_AMIGA
+ KEYBD = amikeyb.o
+ else
+ ifndef CONFIG_MAC
+ KEYBD =
+ endif
+ endif
+ SERIAL =
+endif
+
+ifeq ($(ARCH),parisc)
+ ifdef CONFIG_GSC_PS2
+ KEYBD = hp_psaux.o hp_keyb.o
+ else
+ KEYBD =
+ endif
+ ifdef CONFIG_SERIAL_MUX
+ CONSOLE += mux.o
+ endif
+ ifdef CONFIG_PDC_CONSOLE
+ CONSOLE += pdc_console.o
+ endif
+endif
+
+ifdef CONFIG_Q40
+ KEYBD += q40_keyb.o
+ SERIAL = serial.o
+endif
+
+ifdef CONFIG_APOLLO
+ KEYBD += dn_keyb.o
+endif
+
+ifeq ($(ARCH),parisc)
+ ifdef CONFIG_GSC_PS2
+ KEYBD = hp_psaux.o hp_keyb.o
+ else
+ KEYBD =
+ endif
+ ifdef CONFIG_PDC_CONSOLE
+ CONSOLE += pdc_console.o
+ endif
+endif
+
+ifeq ($(ARCH),arm)
+ ifneq ($(CONFIG_PC_KEYMAP),y)
+ KEYMAP =
+ endif
+ ifneq ($(CONFIG_PC_KEYB),y)
+ KEYBD =
+ endif
+endif
+
+ifeq ($(ARCH),sh)
+ KEYMAP =
+ KEYBD =
+ CONSOLE =
+ ifeq ($(CONFIG_SH_HP600),y)
+ KEYMAP = defkeymap.o
+ KEYBD = scan_keyb.o hp600_keyb.o
+ CONSOLE = console.o
+ endif
+ ifeq ($(CONFIG_SH_DMIDA),y)
+ # DMIDA does not connect the HD64465 PS/2 keyboard port
+ # but we allow for USB keyboards to be plugged in.
+ KEYMAP = defkeymap.o
+ KEYBD = # hd64465_keyb.o pc_keyb.o
+ CONSOLE = console.o
+ endif
+ ifeq ($(CONFIG_SH_EC3104),y)
+ KEYMAP = defkeymap.o
+ KEYBD = ec3104_keyb.o
+ CONSOLE = console.o
+ endif
+ ifeq ($(CONFIG_SH_DREAMCAST),y)
+ KEYMAP = defkeymap.o
+ KEYBD =
+ CONSOLE = console.o
+ endif
+endif
+
+ifeq ($(CONFIG_DECSTATION),y)
+ KEYMAP =
+ KEYBD =
+ SERIAL = decserial.o
+endif
+
+ifeq ($(CONFIG_BAGET_MIPS),y)
+ KEYBD =
+ SERIAL =
+endif
+
+ifeq ($(CONFIG_NINO),y)
+ SERIAL =
+endif
+
+ifneq ($(CONFIG_SUN_SERIAL),)
+ SERIAL =
+endif
+
+ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
+ KEYBD = qtronix.o
+ KEYMAP = qtronixmap.o
+endif
+
+ifeq ($(CONFIG_DUMMY_KEYB),y)
+ KEYBD = dummy_keyb.o
+endif
+
+obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
+obj-$(CONFIG_SERIAL) += $(SERIAL)
+obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
+obj-$(CONFIG_SERIAL_21285) += serial_21285.o
+obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
+obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
+obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o
+
+obj-$(CONFIG_DUMMY_CONSOLE) += dummy_console.o
+
+ifndef CONFIG_SUN_KEYBOARD
+ obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
+else
+ obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
+endif
+
+obj-$(CONFIG_HIL) += hp_keyb.o
+obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
+obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
+obj-$(CONFIG_ROCKETPORT) += rocket.o
+obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
+obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
+obj-$(CONFIG_DIGI) += pcxx.o
+obj-$(CONFIG_DIGIEPCA) += epca.o
+obj-$(CONFIG_CYCLADES) += cyclades.o
+obj-$(CONFIG_STALLION) += stallion.o
+obj-$(CONFIG_ISTALLION) += istallion.o
+obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
+obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
+obj-$(CONFIG_RISCOM8) += riscom8.o
+obj-$(CONFIG_ISI) += isicom.o
+obj-$(CONFIG_ESPSERIAL) += esp.o
+obj-$(CONFIG_SYNCLINK) += synclink.o
+obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
+obj-$(CONFIG_N_HDLC) += n_hdlc.o
+obj-$(CONFIG_SPECIALIX) += specialix.o
+obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
+obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
+obj-$(CONFIG_SX) += sx.o generic_serial.o
+obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
+obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
+obj-$(CONFIG_SERIAL167) += serial167.o
+obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
+obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
+obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
+
+subdir-$(CONFIG_RIO) += rio
+subdir-$(CONFIG_INPUT) += joystick
+
+obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
+obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
+obj-$(CONFIG_PRINTER) += lp.o
+obj-$(CONFIG_TIPAR) += tipar.o
+
+ifeq ($(CONFIG_INPUT),y)
+obj-y += joystick/js.o
+endif
+
+obj-$(CONFIG_BUSMOUSE) += busmouse.o
+obj-$(CONFIG_DTLK) += dtlk.o
+obj-$(CONFIG_R3964) += n_r3964.o
+obj-$(CONFIG_APPLICOM) += applicom.o
+obj-$(CONFIG_SONYPI) += sonypi.o
+obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
+obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
+obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
+obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
+obj-$(CONFIG_ADBMOUSE) += adbmouse.o
+obj-$(CONFIG_PC110_PAD) += pc110pad.o
+obj-$(CONFIG_MK712_MOUSE) += mk712.o
+obj-$(CONFIG_RTC) += rtc.o
+obj-$(CONFIG_EFI_RTC) += efirtc.o
+ifeq ($(CONFIG_PPC),)
+ obj-$(CONFIG_NVRAM) += nvram.o
+endif
+obj-$(CONFIG_TOSHIBA) += toshiba.o
+obj-$(CONFIG_I8K) += i8k.o
+obj-$(CONFIG_DS1620) += ds1620.o
+obj-$(CONFIG_INTEL_RNG) += i810_rng.o
+obj-$(CONFIG_AMD_RNG) += amd768_rng.o
+obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
+
+obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
+obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
+obj-$(CONFIG_COBALT_LCD) += lcd.o
+
+obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
+
+subdir-$(CONFIG_FTAPE) += ftape
+subdir-$(CONFIG_DRM_OLD) += drm-4.0
+subdir-$(CONFIG_DRM_NEW) += drm
+subdir-$(CONFIG_PCMCIA) += pcmcia
+subdir-$(CONFIG_AGP) += agp
+
+ifeq ($(CONFIG_FTAPE),y)
+obj-y += ftape/ftape.o
+endif
+
+obj-$(CONFIG_H8) += h8.o
+obj-$(CONFIG_PPDEV) += ppdev.o
+obj-$(CONFIG_DZ) += dz.o
+obj-$(CONFIG_NWBUTTON) += nwbutton.o
+obj-$(CONFIG_NWFLASH) += nwflash.o
+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
+
+# Only one watchdog can succeed. We probe the hardware watchdog
+# drivers first, then the softdog driver. This means if your hardware
+# watchdog dies or is 'borrowed' for some reason the software watchdog
+# still gives you some cover.
+
+obj-$(CONFIG_PCWATCHDOG) += pcwd.o
+obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
+obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
+obj-$(CONFIG_IB700_WDT) += ib700wdt.o
+obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
+obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
+obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
+obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
+obj-$(CONFIG_WDT) += wdt.o
+obj-$(CONFIG_WDTPCI) += wdt_pci.o
+obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
+obj-$(CONFIG_977_WATCHDOG) += wdt977.o
+obj-$(CONFIG_I810_TCO) += i810-tco.o
+obj-$(CONFIG_MACHZ_WDT) += machzwd.o
+obj-$(CONFIG_SH_WDT) += shwdt.o
+obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
+obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
+#obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
+obj-$(CONFIG_INDYDOG) += indydog.o
+obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
+obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
+obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
+obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
+obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
+
+subdir-$(CONFIG_MWAVE) += mwave
+ifeq ($(CONFIG_MWAVE),y)
+ obj-y += mwave/mwave.o
+endif
+
+subdir-$(CONFIG_IPMI_HANDLER) += ipmi
+ifeq ($(CONFIG_IPMI_HANDLER),y)
+ obj-y += ipmi/ipmi.o
+endif
+
+include $(TOPDIR)/Rules.make
+
+fastdep:
+
+conmakehash: conmakehash.c
+ $(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
+
+consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
+ ./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
+
+consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
+
+.DELETE_ON_ERROR:
+
+defkeymap.c: defkeymap.map
+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
+
+qtronixmap.c: qtronixmap.map
+ set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
diff --git a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
index 887a01b231..da0e1a19e0 100644
--- a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
+++ b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
@@ -364,13 +364,14 @@ static inline long HYPERVISOR_kbd_op(unsigned char op, unsigned char val)
return ret;
}
-static inline long HYPERVISOR_iopl(unsigned int new_iopl)
+static inline long HYPERVISOR_set_priv_levels(unsigned int new_io_pl,
+ unsigned int new_hypercall_pl)
{
int ret;
__asm__ __volatile__ (
TRAP_INSTR
- : "=a" (ret) : "0" (__HYPERVISOR_iopl),
- "b" (new_iopl) );
+ : "=a" (ret) : "0" (__HYPERVISOR_set_priv_levels),
+ "b" (new_io_pl), "c" (new_hypercall_pl) );
return ret;
}
diff --git a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h
index 86b0020c23..d3547ea2bc 100644
--- a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h
+++ b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h
@@ -356,6 +356,7 @@ struct thread_struct {
unsigned long esp;
unsigned long fs;
unsigned long gs;
+ unsigned int hypercall_pl;
/* Hardware debugging registers */
unsigned long debugreg[8]; /* %%db0-7 debug registers */
/* fault info */
@@ -368,7 +369,7 @@ struct thread_struct {
unsigned long v86flags, v86mask, saved_esp0;
};
-#define INIT_THREAD { 0 }
+#define INIT_THREAD { 0, 0, 0, 0, 0, 1, {0}, 0, 0, 0, {0}, 0, 0, 0, 0, 0 }
#define INIT_TSS { \
0,0, /* back_link, __blh */ \