ia64/xen-unstable

changeset 397:b42c882f9076

bitkeeper revision 1.188 (3ead27718TdgjbqnWkDXICxGwmRyPg)

Merge boulderdash.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk
into boulderdash.cl.cam.ac.uk:/auto/anfs/scratch/boulderdash/ach61/xeno/xeno.bk
author ach61@boulderdash.cl.cam.ac.uk
date Mon Apr 28 13:06:57 2003 +0000 (2003-04-28)
parents d7ae20d6346a d1688684d94d
children 5b76fd9dd30c
files .rootkeys BitKeeper/etc/logging_ok xen/arch/i386/entry.S xen/common/schedule.c xen/drivers/char/xen_kbd.c xen/include/hypervisor-ifs/hypervisor-if.h xen/include/hypervisor-ifs/kbd.h xen/include/xeno/sched.h xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in xenolinux-2.4.21-pre4-sparse/arch/xeno/defconfig xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.h xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_ide.c xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_segment.c xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h xenolinux-2.4.21-pre4-sparse/include/linux/major.h xenolinux-2.4.21-pre4-sparse/init/do_mounts.c xenolinux-2.4.21-pre4-sparse/mkbuildtree
line diff
     1.1 --- a/.rootkeys	Mon Apr 28 12:58:45 2003 +0000
     1.2 +++ b/.rootkeys	Mon Apr 28 13:06:57 2003 +0000
     1.3 @@ -275,6 +275,7 @@ 3ddb79c3M2n1ROZH6xk3HbyN4CPDqg xen/inclu
     1.4  3ddb79c3uPGcP_l_2xyGgBSWd5aC-Q xen/include/asm-i386/unaligned.h
     1.5  3ddb79c2YTaZwOqWin9-QNgHge5RVw xen/include/hypervisor-ifs/block.h
     1.6  3ddb79c25UE59iu4JJcbRalx95mvcg xen/include/hypervisor-ifs/hypervisor-if.h
     1.7 +3ead095dE_VF-QA88rl_5cWYRWtRVQ xen/include/hypervisor-ifs/kbd.h
     1.8  3ddb79c2oRPrzClk3zbTkRHlpumzKA xen/include/hypervisor-ifs/network.h
     1.9  3ddb79c4qbCoOFHrv9sCGshbWzBVlQ xen/include/scsi/scsi.h
    1.10  3ddb79c4R4iVwqIIeychVQYmIH4FUg xen/include/scsi/scsi_ioctl.h
    1.11 @@ -413,6 +414,9 @@ 3e5a4e66qRlSTcjafidMB6ulECADvg xenolinux
    1.12  3e5a4e668yELUdtr3HiJZBIqxqUyuA xenolinux-2.4.21-pre4-sparse/drivers/block/Config.in
    1.13  3ea53c6em6uzVHSiGqrbbAVofyRY_g xenolinux-2.4.21-pre4-sparse/drivers/block/genhd.c
    1.14  3e5a4e66mrtlmV75L1tjKDg8RaM5gA xenolinux-2.4.21-pre4-sparse/drivers/block/ll_rw_blk.c
    1.15 +3ead095dEkj9JJWYYBnbvW3OYbKFxg xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
    1.16 +3ead095d00j61GCBaYdu_SwmY-vdSQ xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
    1.17 +3ead095dPseRoFELVf_xcnVXjq02hw xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
    1.18  3e5a4e66rw65CxyolW9PKz4GG42RcA xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
    1.19  3e5a4e669uzIE54VwucPYtGwXLAbzA xenolinux-2.4.21-pre4-sparse/fs/exec.c
    1.20  3e5a4e66wbeCpsJgVf_U8Jde-CNcsA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/bugs.h
    1.21 @@ -423,6 +427,7 @@ 3e5a4e67YtcyDLQsShhCfQwPSELfvA xenolinux
    1.22  3e5a4e677VBavzM1UZIEcH1B-RlXMA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
    1.23  3e5a4e67Ulv-Ll8Zp4j2GwMwQ8aAXQ xenolinux-2.4.21-pre4-sparse/include/asm-xeno/io.h
    1.24  3e5a4e673p7PEOyHFm3nHkYX6HQYBg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/irq.h
    1.25 +3ead095db_LRUXnxaqs0dA1DWhPoQQ xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h
    1.26  3e5a4e67zoNch27qYhEBpr2k6SABOg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/mmu.h
    1.27  3e5a4e678ddsQOpbSiRdy1GRcDc9WA xenolinux-2.4.21-pre4-sparse/include/asm-xeno/mmu_context.h
    1.28  3e7270deQqtGPSnFxcW4AvJZuTUWfg xenolinux-2.4.21-pre4-sparse/include/asm-xeno/multicall.h
     2.1 --- a/BitKeeper/etc/logging_ok	Mon Apr 28 12:58:45 2003 +0000
     2.2 +++ b/BitKeeper/etc/logging_ok	Mon Apr 28 13:06:57 2003 +0000
     2.3 @@ -1,3 +1,4 @@
     2.4 +ach61@boulderdash.cl.cam.ac.uk
     2.5  ach61@labyrinth.cl.cam.ac.uk
     2.6  akw27@boulderdash.cl.cam.ac.uk
     2.7  akw27@labyrinth.cl.cam.ac.uk
     3.1 --- a/xen/arch/i386/entry.S	Mon Apr 28 12:58:45 2003 +0000
     3.2 +++ b/xen/arch/i386/entry.S	Mon Apr 28 13:06:57 2003 +0000
     3.3 @@ -646,6 +646,7 @@ ENTRY(hypervisor_call_table)
     3.4          .long SYMBOL_NAME(do_set_fast_trap)
     3.5          .long SYMBOL_NAME(do_dom_mem_op)
     3.6          .long SYMBOL_NAME(do_multicall)
     3.7 +        .long SYMBOL_NAME(do_kbd_op)
     3.8          .rept NR_syscalls-((.-hypervisor_call_table)/4)
     3.9          .long SYMBOL_NAME(sys_ni_syscall)
    3.10  	.endr
     4.1 --- a/xen/common/schedule.c	Mon Apr 28 12:58:45 2003 +0000
     4.2 +++ b/xen/common/schedule.c	Mon Apr 28 13:06:57 2003 +0000
     4.3 @@ -46,6 +46,7 @@
     4.4  
     4.5  
     4.6  #define MCU          (s32)MICROSECS(100)    /* Minimum unit */
     4.7 +#define MCU_ADVANCE  10                     /* default weight */
     4.8  #define TIME_SLOP    (s32)MICROSECS(50)     /* allow time to slip a bit */
     4.9  static s32 ctx_allow=(s32)MILLISECS(5);     /* context switch allowance */
    4.10  
    4.11 @@ -102,13 +103,34 @@ static inline int __task_on_runqueue(str
    4.12  #define next_domain(p) \\
    4.13          list_entry((p)->run_list.next, struct task_struct, run_list)
    4.14  
    4.15 +/* calculate evt  */
    4.16 +static void __calc_evt(struct task_struct *p)
    4.17 +{
    4.18 +    s_time_t now = NOW();
    4.19 +    if (p->warpback) {
    4.20 +        if (((now - p->warped) < p->warpl) &&
    4.21 +            ((now - p->uwarped) > p->warpu)) {
    4.22 +            /* allowed to warp */
    4.23 +            p->evt = p->avt - p->warp;
    4.24 +        } else {
    4.25 +            /* warped for too long -> unwarp */
    4.26 +            p->evt      = p->avt;
    4.27 +            p->uwarped  = now;
    4.28 +            p->warpback = 0;
    4.29 +        }
    4.30 +    } else {
    4.31 +        p->evt = p->avt;
    4.32 +    }
    4.33 +}
    4.34 +
    4.35 +
    4.36  /******************************************************************************
    4.37  * Add and remove a domain
    4.38  ******************************************************************************/
    4.39  void sched_add_domain(struct task_struct *p) 
    4.40  {
    4.41      p->state       = TASK_SUSPENDED;
    4.42 -    p->mcu_advance = 10;
    4.43 +    p->mcu_advance = MCU_ADVANCE;
    4.44  
    4.45      if (p->domain == IDLE_DOMAIN_ID) {
    4.46          p->avt = 0xffffffff;
    4.47 @@ -118,7 +140,11 @@ void sched_add_domain(struct task_struct
    4.48          /* set avt end evt to system virtual time */
    4.49          p->avt         = schedule_data[p->processor].svt;
    4.50          p->evt         = schedule_data[p->processor].svt;
    4.51 -        /* RN: XXX BVT fill in other bits */
    4.52 +        /* set some default values here */
    4.53 +        p->warpback    = 0;
    4.54 +        p->warp        = 0;
    4.55 +        p->warpl       = 0;
    4.56 +        p->warpu       = 0;
    4.57      }
    4.58  }
    4.59  
    4.60 @@ -138,16 +164,23 @@ int wake_up(struct task_struct *p)
    4.61  
    4.62      spin_lock_irqsave(&schedule_data[p->processor].lock, flags);
    4.63  
    4.64 +    /* XXX RN: should we warp here? Might be a good idea to also boost a 
    4.65 +     * domain which currently is unwarped and on run queue and 
    4.66 +     * the receives an event. */
    4.67      if ( __task_on_runqueue(p) ) goto out;
    4.68  
    4.69      p->state = TASK_RUNNING;
    4.70      __add_to_runqueue_head(p);
    4.71 +    //__add_to_runqueue_tail(p);
    4.72  
    4.73      /* set the BVT parameters */
    4.74      if (p->avt < schedule_data[p->processor].svt)
    4.75          p->avt = schedule_data[p->processor].svt;
    4.76  
    4.77 -    p->evt = p->avt; /* RN: XXX BVT deal with warping here */
    4.78 +    /* deal with warping here */
    4.79 +    p->warpback  = 1;
    4.80 +    p->warped    = NOW();
    4.81 +    __calc_evt(p);
    4.82  
    4.83  #ifdef SCHED_HISTO
    4.84      p->wokenup = NOW();
    4.85 @@ -165,6 +198,7 @@ int wake_up(struct task_struct *p)
    4.86  long do_yield(void)
    4.87  {
    4.88      current->state = TASK_INTERRUPTIBLE;
    4.89 +    current->warpback = 0; /* XXX should only do this when blocking */
    4.90      schedule();
    4.91      return 0;
    4.92  }
    4.93 @@ -281,7 +315,6 @@ asmlinkage void schedule(void)
    4.94      now = NOW();
    4.95  
    4.96      /* remove timer, if till on list  */
    4.97 -    //if (active_ac_timer(&schedule_data[this_cpu].s_timer))
    4.98      rem_ac_timer(&schedule_data[this_cpu].s_timer);
    4.99  
   4.100      /* deschedule the current domain */
   4.101 @@ -301,7 +334,9 @@ asmlinkage void schedule(void)
   4.102      mcus = ranfor/MCU;
   4.103      if (ranfor % MCU) mcus ++;  /* always round up */
   4.104      prev->avt += mcus * prev->mcu_advance;
   4.105 -    prev->evt = prev->avt; /* RN: XXX BVT deal with warping here */
   4.106 +
   4.107 +    /* recalculate evt */
   4.108 +    __calc_evt(prev);
   4.109  
   4.110      /* dequeue */
   4.111      __del_from_runqueue(prev);
     5.1 --- a/xen/drivers/char/xen_kbd.c	Mon Apr 28 12:58:45 2003 +0000
     5.2 +++ b/xen/drivers/char/xen_kbd.c	Mon Apr 28 13:06:57 2003 +0000
     5.3 @@ -2,8 +2,10 @@
     5.4  #include <asm-i386/irq.h>
     5.5  #include <xeno/sched.h>    /* this has request_irq() proto for some reason */
     5.6  #include <xeno/keyhandler.h>  
     5.7 +#include <hypervisor-ifs/kbd.h>
     5.8 +#include <xeno/event.h>
     5.9  
    5.10 -#define KEYBOARD_IRQ 1
    5.11 +/* Hash-defines torn from <linux/pc_keyb.h> and <asm/keyboard.h> */
    5.12  
    5.13  #define KBD_STATUS_REG	     0x64 /* Status register (R) */
    5.14  #define KBD_CNTL_REG	     0x64 /* Controller command register (W) */
    5.15 @@ -23,27 +25,30 @@
    5.16  #define kbd_read_input() inb(KBD_DATA_REG)
    5.17  #define kbd_read_status() inb(KBD_STATUS_REG)
    5.18  
    5.19 +#define KEYBOARD_IRQ 1
    5.20 +#define kbd_write_output(val) outb(val, KBD_DATA_REG)
    5.21 +#define kbd_write_command(val) outb(val, KBD_CNTL_REG)
    5.22  
    5.23 -static int keyboard_shift = 0;
    5.24 -static int keyboard_control = 0;
    5.25 -static int keyboard_echo = 0;
    5.26 +#define AUX_IRQ 12
    5.27  
    5.28 -/* the following is pretty gross... 
    5.29 - * stop reading if you don't want to throw up!
    5.30 - */
    5.31 +
    5.32 +/* THIS SECTION DEALS WITH CONFIG_XEN_ATTENTION_KEY */
    5.33 +
    5.34 +// always set for now.  potentially moved to config.in later.
    5.35 +#define CONFIG_XEN_ATTENTION_KEY
    5.36 +
    5.37 +#ifdef CONFIG_XEN_ATTENTION_KEY
    5.38 +
    5.39 +static int xen_attention_key_down = 0;
    5.40 +#define XEN_ATTENTION_KEY 0x46 // scroll lock
    5.41 +#define KBD_SCANCODE_KEYUP_MASK 0x80
    5.42 +
    5.43 +#undef KBD_DEBUG
    5.44 +
    5.45 +/* naive scancode -> key mappings for internal xen use */
    5.46  
    5.47  static unsigned char keymap_normal[] =
    5.48  {
    5.49 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.50 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.51 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.52 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.53 -
    5.54 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.55 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.56 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.57 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.58 -
    5.59     0 , 0 ,'1','2', '3','4','5','6',    '7','8','9','0', '-','=','\b','\t',
    5.60    'q','w','e','r', 't','y','u','i',    'o','p','[',']','\r', 0 ,'a','s',
    5.61    'd','f','g','h', 'j','k','l',';',   '\'','`', 0 ,'#', 'z','x','c','v',
    5.62 @@ -57,16 +62,6 @@ static unsigned char keymap_normal[] =
    5.63  
    5.64  static unsigned char keymap_shift[] =
    5.65  {
    5.66 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.67 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.68 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.69 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.70 -
    5.71 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.72 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.73 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.74 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.75 -
    5.76     0 , 0 ,'!','"', '#','$','%','^',    '&','*','(',')', '_','+','\b','\t',
    5.77    'Q','W','E','R', 'T','Y','U','I',    'O','P','{','}','\r', 0 ,'A','S',
    5.78    'D','F','G','H', 'J','K','L',':',    '@', 0 , 0 ,'~', 'Z','X','C','V',
    5.79 @@ -81,16 +76,6 @@ static unsigned char keymap_shift[] =
    5.80  
    5.81  static unsigned char keymap_control[] =
    5.82  { /* same as normal, except for a-z -> 1 to 26 */
    5.83 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.84 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.85 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.86 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.87 -
    5.88 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.89 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.90 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.91 -   0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,     0 , 0 , 0 , 0 ,  0 , 0 , 0 , 0 ,
    5.92 -
    5.93     0 , 0 ,'1','2', '3','4','5','6',    '7','8','9','0', '-','=','\b','\t',
    5.94     17, 23, 5 , 18,  20, 25, 21, 9 ,     15, 16,'[',']','\r', 0 , 1 , 19,
    5.95     4 , 6 , 7 , 8 ,  10, 11, 12,';',   '\'','`', 0 ,'#', 26, 24, 3 , 22,
    5.96 @@ -103,6 +88,10 @@ static unsigned char keymap_control[] =
    5.97  };
    5.98  
    5.99  
   5.100 +static int keyboard_shift = 0;
   5.101 +static int keyboard_control = 0;
   5.102 +static int keyboard_echo = 0;
   5.103 +
   5.104  static unsigned char convert_scancode (unsigned char scancode)
   5.105  {
   5.106      unsigned char value = 0;
   5.107 @@ -134,6 +123,10 @@ static unsigned char convert_scancode (u
   5.108  	break;
   5.109  
   5.110      default:   /* normal keys */
   5.111 +        // dont process key-down events
   5.112 +        if(!(scancode & KBD_SCANCODE_KEYUP_MASK)) break; 
   5.113 +
   5.114 +	scancode = scancode & (~KBD_SCANCODE_KEYUP_MASK); 
   5.115  	if (keyboard_control)
   5.116  	    value = keymap_control[scancode];
   5.117  	else if (keyboard_shift)
   5.118 @@ -148,45 +141,151 @@ static unsigned char convert_scancode (u
   5.119      return value;
   5.120  }
   5.121  
   5.122 +#endif /* CONFIG_XEN_ATTENTION_KEY */
   5.123 +
   5.124 +
   5.125 +/* THIS SECTION DEALS WITH STORING A RING OF PENDING EVENTS */
   5.126 +
   5.127 +// store kbd events waiting to be processed by guest os
   5.128 +#define KBD_RING_SIZE        64 
   5.129 +static int kbd_ring[KBD_RING_SIZE]; 
   5.130 +static int kbd_ring_prod = 0;
   5.131 +static int kbd_ring_cons = 0;
   5.132 +
   5.133 +#define KBD_RING_INC(_i)     (((_i)+1) & (KBD_RING_SIZE-1))
   5.134 +#define KBD_RING_FULL (KBD_RING_INC(kbd_ring_prod)  == kbd_ring_cons)
   5.135 +#define KBD_RING_EMPTY (kbd_ring_prod == kbd_ring_cons)
   5.136 +
   5.137 +// these assume locking has already been taken care of
   5.138 +static void kbd_ring_push(unsigned char status, unsigned char scancode) {
   5.139 +  if(KBD_RING_FULL) return;
   5.140 +  kbd_ring[kbd_ring_prod] = KBD_CODE(scancode, status);
   5.141 +  kbd_ring_prod = KBD_RING_INC(kbd_ring_prod);
   5.142 +}
   5.143 +
   5.144 +static int kbd_ring_pop() {
   5.145 +  int ret;
   5.146 +  if(KBD_RING_EMPTY) {
   5.147 +    // read directly from controller - no events waiting in ring
   5.148 +    unsigned char status = kbd_read_status();
   5.149 +    unsigned char scancode = kbd_read_input(); 
   5.150 +    return KBD_CODE(scancode, status);
   5.151 +  }
   5.152 +  ret = kbd_ring[kbd_ring_cons];
   5.153 +  kbd_ring_cons = KBD_RING_INC(kbd_ring_cons);
   5.154 +  return ret;
   5.155 +}
   5.156 +
   5.157 +
   5.158 +/* THIS SECTION DEALS WITH COMMUNICATING PS2 EVENTS/CMDS WITH GUEST OS */
   5.159 +
   5.160 +// ownership of keyboard - current defaulting to dom0
   5.161 +#define KBD_ISOWNER(p) (p->domain == 0) 
   5.162 +#define KBD_OWNER find_domain_by_id(0) 
   5.163 +
   5.164 +// need lock as there may be _two_ interrupts at play, keyboard and mouse, as well as guest os actions
   5.165 +static spinlock_t kbd_lock;
   5.166 +
   5.167 +
   5.168 +long do_kbd_op(unsigned char op, unsigned char val)
   5.169 +{
   5.170 +  // check for domain 0
   5.171 +#ifdef KBD_DEBUG
   5.172 +  printk("do_kbd_op: op %2x, val %2x, prod %d, cons %d\n", op, val, kbd_ring_prod, kbd_ring_cons); 
   5.173 +#endif
   5.174 +
   5.175 +  if ( !KBD_ISOWNER(current) ) return -EPERM;  
   5.176 +
   5.177 +  switch(op) {
   5.178 +  case KBD_OP_WRITEOUTPUT:
   5.179 +    kbd_write_output(val);
   5.180 +    return 0L;
   5.181 +  case KBD_OP_WRITECOMMAND:
   5.182 +    kbd_write_command(val);
   5.183 +    return 0L;
   5.184 +  case KBD_OP_READ: {
   5.185 +    unsigned long flags;
   5.186 +    unsigned long ret;
   5.187 +    spin_lock_irqsave(&kbd_lock, flags);
   5.188 +    ret = kbd_ring_pop();
   5.189 +    spin_unlock_irqrestore(&kbd_lock, flags);
   5.190 +    return ret;
   5.191 +  }
   5.192 +  }
   5.193 +
   5.194 +  return -EINVAL;
   5.195 +}
   5.196 +
   5.197 +
   5.198  static void keyboard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
   5.199  {
   5.200 -    unsigned char status = kbd_read_status();
   5.201 -    unsigned int work = 10000;
   5.202 +  unsigned char status;
   5.203 +  unsigned int work = 1000;
   5.204 +  unsigned long cpu_mask;
   5.205 +  unsigned long flags;
   5.206 +  spin_lock_irqsave(&kbd_lock, flags);
   5.207 +  status = kbd_read_status();
   5.208 +#ifdef KBD_DEBUG
   5.209 +    printk("keyboard_interrupt irq %d, status 0x%2x\n", irq, status);
   5.210 +#endif
   5.211 +    while ((--work > 0) && (status & KBD_STAT_OBF))
   5.212 +    {      
   5.213 +      unsigned char scancode;
   5.214 +      scancode = kbd_read_input();
   5.215 +      //printk("scancode 0x%2x\n", scancode);
   5.216 +      
   5.217 +#ifdef CONFIG_XEN_ATTENTION_KEY
   5.218 +      if(!(status & (KBD_STAT_GTO | KBD_STAT_PERR | KBD_STAT_MOUSE_OBF))) {
   5.219 +	if ((scancode & (~KBD_SCANCODE_KEYUP_MASK)) == XEN_ATTENTION_KEY) {
   5.220 +	  xen_attention_key_down = !(scancode & KBD_SCANCODE_KEYUP_MASK);
   5.221 +	  //printk("xen_attention_key_down %d\n", xen_attention_key_down);
   5.222 +	} else if (xen_attention_key_down) {
   5.223 +	  key_handler *handler; 
   5.224 +	  unsigned char key = convert_scancode(scancode); 
   5.225 +	  if(key && (handler = get_key_handler(key))) 
   5.226 +	    (*handler)(key, dev_id, regs); 
   5.227 +	  
   5.228 +	  status = kbd_read_status();
   5.229 +	  continue; // do not send key to guest os
   5.230 +	}
   5.231 +      }
   5.232 +#endif
   5.233 +      
   5.234 +      if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR))) {
   5.235 +	kbd_ring_push(status, scancode);
   5.236  
   5.237 -    while ((--work > 0) && (status & KBD_STAT_OBF))
   5.238 -    {
   5.239 -	unsigned char scancode;
   5.240 +	cpu_mask = mark_guest_event(KBD_OWNER, _EVENT_KBD);
   5.241 +        guest_event_notify(cpu_mask);
   5.242 +
   5.243 +	status = kbd_read_status();
   5.244  	scancode = kbd_read_input();
   5.245 -	
   5.246 -	if (!(status & (KBD_STAT_GTO | KBD_STAT_PERR)))
   5.247 -	{
   5.248 -	    if (status & KBD_STAT_MOUSE_OBF)
   5.249 -		/* mouse event, ignore */;
   5.250 -	    else {
   5.251 -		unsigned char key; 
   5.252 -		key_handler *handler; 
   5.253 -		
   5.254 -		if((key = convert_scancode (scancode)) && 
   5.255 -		   (handler = get_key_handler(key))) 
   5.256 -		    (*handler)(key, dev_id, regs); 
   5.257 -		
   5.258 -	    }
   5.259 -	}
   5.260 -	status = kbd_read_status();
   5.261 +      }
   5.262      }
   5.263      
   5.264      if (!work)
   5.265 -	printk(KERN_ERR "pc_keyb: controller jammed (0x%02X).\n", status);
   5.266 +      printk(KERN_ERR "xen_keyb: controller jammed (0x%02X).\n", status);
   5.267 +
   5.268 +    spin_unlock_irqrestore(&kbd_lock, flags);
   5.269 +}
   5.270      
   5.271 -    return;
   5.272 -}
   5.273 -
   5.274 +    
   5.275  
   5.276  void initialize_keyboard()
   5.277  {
   5.278 -    if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, SA_NOPROFILE, "keyboard", NULL))
   5.279 -	printk("initialize_keyboard: failed to alloc IRQ %d\n", KEYBOARD_IRQ); 
   5.280 +  spin_lock_init(&kbd_lock);
   5.281  
   5.282 -    return; 
   5.283 +  if(request_irq(KEYBOARD_IRQ, keyboard_interrupt, SA_NOPROFILE, "keyboard", NULL)) {
   5.284 +    printk("initialize_keyboard: failed to alloc IRQ %d\n", KEYBOARD_IRQ); 
   5.285 +    return;
   5.286 +  }
   5.287 +
   5.288 +  if(request_irq(AUX_IRQ, keyboard_interrupt, SA_NOPROFILE, "PS/2 Mouse", NULL)) {
   5.289 +    printk("initialize_keyboard: failed to alloc IRQ %d\n", AUX_IRQ); 
   5.290 +    return;
   5.291 +  }
   5.292 +
   5.293 +#ifdef KBD_DEBUG
   5.294 +  printk("PS/2 keyboard and mouse interface ok");
   5.295 +#endif
   5.296  }
   5.297  
     6.1 --- a/xen/include/hypervisor-ifs/hypervisor-if.h	Mon Apr 28 12:58:45 2003 +0000
     6.2 +++ b/xen/include/hypervisor-ifs/hypervisor-if.h	Mon Apr 28 13:06:57 2003 +0000
     6.3 @@ -47,6 +47,7 @@
     6.4  #define __HYPERVISOR_set_fast_trap	  16
     6.5  #define __HYPERVISOR_dom_mem_op		  17
     6.6  #define __HYPERVISOR_multicall		  18
     6.7 +#define __HYPERVISOR_kbd_op               19
     6.8  
     6.9  /* And the trap vector is... */
    6.10  #define TRAP_INSTR "int $0x82"
    6.11 @@ -77,6 +78,7 @@
    6.12  #define EVENT_DEBUG    0x08 /* Request guest to dump debug info (gross!) */
    6.13  #define EVENT_NET_TX   0x10 /* There are packets for transmission. */
    6.14  #define EVENT_NET_RX   0x20 /* There are empty buffers for receive. */
    6.15 +#define EVENT_KBD      0x40 /* PS/2 keyboard or mouse event(s) */
    6.16  
    6.17  /* Bit offsets, as opposed to the above masks. */
    6.18  #define _EVENT_BLK_RESP 0
    6.19 @@ -85,7 +87,7 @@
    6.20  #define _EVENT_NET_TX	3
    6.21  #define _EVENT_NET_RX	4
    6.22  #define _EVENT_DEBUG	5
    6.23 -
    6.24 +#define _EVENT_KBD      6
    6.25  
    6.26  /*
    6.27   * Virtual addresses beyond this are not modifiable by guest OSes.
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/xen/include/hypervisor-ifs/kbd.h	Mon Apr 28 13:06:57 2003 +0000
     7.3 @@ -0,0 +1,20 @@
     7.4 +/******************************************************************************
     7.5 + * kbd.h
     7.6 + *
     7.7 + * PS/2 interface definitions
     7.8 + * Copyright (c) 2003 James Scott, Intel Research Cambridge
     7.9 + */
    7.10 +
    7.11 +#ifndef __HYPERVISOR_KBD_H__
    7.12 +#define __HYPERVISOR_KBD_H__
    7.13 +
    7.14 +			 
    7.15 +#define KBD_OP_WRITEOUTPUT   0
    7.16 +#define KBD_OP_WRITECOMMAND  1
    7.17 +#define KBD_OP_READ          2
    7.18 +
    7.19 +#define KBD_CODE_SCANCODE(_r) ((unsigned char)((_r) & 0xff))
    7.20 +#define KBD_CODE_STATUS(_r) ((unsigned char)(((_r) >> 8) & 0xff))
    7.21 +#define KBD_CODE(_c, _s) ((int)(((_c) & 0xff)  | (((_s) & 0xff) << 8)))
    7.22 +
    7.23 +#endif
     8.1 --- a/xen/include/xeno/sched.h	Mon Apr 28 12:58:45 2003 +0000
     8.2 +++ b/xen/include/xeno/sched.h	Mon Apr 28 13:06:57 2003 +0000
     8.3 @@ -72,6 +72,10 @@ struct task_struct {
     8.4      int hyp_events;              /* 08: pending intra-Xen events */
     8.5      unsigned int domain;         /* 12: domain id */
     8.6  
     8.7 +    // SMH: replace below when have explicit 'priv' flag or bitmask
     8.8 +#define IS_PRIV(_p) ((_p)->domain == 0) 
     8.9 +
    8.10 +
    8.11      /* An unsafe pointer into a shared data area. */
    8.12      shared_info_t *shared_info;  /* 16: shared data area */
    8.13  
    8.14 @@ -110,11 +114,12 @@ struct task_struct {
    8.15      unsigned long mcu_advance;      /* inverse of weight */
    8.16      s32  avt;                       /* actual virtual time */
    8.17      s32  evt;                       /* effective virtual time */
    8.18 +    int  warpback;                  /* warp?  */
    8.19      long warp;                      /* virtual time warp */
    8.20      long warpl;                     /* warp limit */
    8.21      long warpu;                     /* unwarp time requirement */
    8.22 -    long warped;                    /* time it ran warped last time */
    8.23 -    long uwarped;                   /* time it ran unwarped last time */
    8.24 +    s_time_t warped;                /* time it ran warped last time */
    8.25 +    s_time_t uwarped;               /* time it ran unwarped last time */
    8.26  
    8.27      /* Network I/O */
    8.28      net_vif_t *net_vif_list[MAX_DOMAIN_VIFS];
     9.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in	Mon Apr 28 12:58:45 2003 +0000
     9.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in	Mon Apr 28 13:06:57 2003 +0000
     9.3 @@ -107,6 +107,8 @@ source drivers/block/Config.in
     9.4  define_bool CONFIG_BLK_DEV_IDE_MODES n
     9.5  define_bool CONFIG_BLK_DEV_HD n
     9.6  
     9.7 +source drivers/char/Config.in
     9.8 +
     9.9  source fs/Config.in
    9.10  
    9.11  mainmenu_option next_comment
    9.12 @@ -126,4 +128,4 @@ fi
    9.13  
    9.14  endmenu
    9.15  
    9.16 -source lib/Config.in
    9.17 \ No newline at end of file
    9.18 +source lib/Config.in
    10.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/defconfig	Mon Apr 28 12:58:45 2003 +0000
    10.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/defconfig	Mon Apr 28 13:06:57 2003 +0000
    10.3 @@ -1,6 +1,7 @@
    10.4  #
    10.5  # Automatically generated make config: don't edit
    10.6  #
    10.7 +CONFIG_XENO=y
    10.8  CONFIG_X86=y
    10.9  CONFIG_ISA=y
   10.10  # CONFIG_SBUS is not set
   10.11 @@ -21,21 +22,10 @@ CONFIG_KMOD=y
   10.12  #
   10.13  # Processor type and features
   10.14  #
   10.15 -# CONFIG_M386 is not set
   10.16 -# CONFIG_M486 is not set
   10.17 -# CONFIG_M586 is not set
   10.18 -# CONFIG_M586TSC is not set
   10.19 -# CONFIG_M586MMX is not set
   10.20  CONFIG_M686=y
   10.21  # CONFIG_MPENTIUMIII is not set
   10.22  # CONFIG_MPENTIUM4 is not set
   10.23 -# CONFIG_MK6 is not set
   10.24  # CONFIG_MK7 is not set
   10.25 -# CONFIG_MCRUSOE is not set
   10.26 -# CONFIG_MWINCHIPC6 is not set
   10.27 -# CONFIG_MWINCHIP2 is not set
   10.28 -# CONFIG_MWINCHIP3D is not set
   10.29 -# CONFIG_MCYRIXIII is not set
   10.30  CONFIG_X86_WP_WORKS_OK=y
   10.31  CONFIG_X86_INVLPG=y
   10.32  CONFIG_X86_CMPXCHG=y
   10.33 @@ -44,34 +34,19 @@ CONFIG_X86_BSWAP=y
   10.34  CONFIG_X86_POPAD_OK=y
   10.35  # CONFIG_RWSEM_GENERIC_SPINLOCK is not set
   10.36  CONFIG_RWSEM_XCHGADD_ALGORITHM=y
   10.37 -CONFIG_X86_L1_CACHE_SHIFT=5
   10.38 -CONFIG_X86_TSC=y
   10.39  CONFIG_X86_GOOD_APIC=y
   10.40  CONFIG_X86_PGE=y
   10.41  CONFIG_X86_USE_PPRO_CHECKSUM=y
   10.42 -# CONFIG_TOSHIBA is not set
   10.43 -# CONFIG_I8K is not set
   10.44 -# CONFIG_MICROCODE is not set
   10.45 -# CONFIG_X86_MSR is not set
   10.46 -# CONFIG_X86_CPUID is not set
   10.47 +CONFIG_X86_TSC=y
   10.48 +CONFIG_X86_L1_CACHE_SHIFT=5
   10.49  CONFIG_NOHIGHMEM=y
   10.50  # CONFIG_HIGHMEM4G is not set
   10.51  # CONFIG_HIGHMEM64G is not set
   10.52 -# CONFIG_MATH_EMULATION is not set
   10.53 -# CONFIG_MTRR is not set
   10.54 -# CONFIG_SMP is not set
   10.55 -# CONFIG_X86_UP_APIC is not set
   10.56  
   10.57  #
   10.58  # General setup
   10.59  #
   10.60  CONFIG_NET=y
   10.61 -# CONFIG_PCI is not set
   10.62 -# CONFIG_EISA is not set
   10.63 -# CONFIG_MCA is not set
   10.64 -# CONFIG_HOTPLUG is not set
   10.65 -# CONFIG_PCMCIA is not set
   10.66 -# CONFIG_HOTPLUG_PCI is not set
   10.67  CONFIG_SYSVIPC=y
   10.68  # CONFIG_BSD_PROCESS_ACCT is not set
   10.69  CONFIG_SYSCTL=y
   10.70 @@ -80,54 +55,12 @@ CONFIG_KCORE_ELF=y
   10.71  CONFIG_BINFMT_AOUT=y
   10.72  CONFIG_BINFMT_ELF=y
   10.73  # CONFIG_BINFMT_MISC is not set
   10.74 -# CONFIG_PM is not set
   10.75 -# CONFIG_APM_IGNORE_USER_SUSPEND is not set
   10.76 -# CONFIG_APM_DO_ENABLE is not set
   10.77 -# CONFIG_APM_CPU_IDLE is not set
   10.78 -# CONFIG_APM_DISPLAY_BLANK is not set
   10.79 -# CONFIG_APM_RTC_IS_GMT is not set
   10.80 -# CONFIG_APM_ALLOW_INTS is not set
   10.81 -# CONFIG_APM_REAL_MODE_POWER_OFF is not set
   10.82 -
   10.83 -#
   10.84 -# Memory Technology Devices (MTD)
   10.85 -#
   10.86 -# CONFIG_MTD is not set
   10.87 -
   10.88 -#
   10.89 -# Parallel port support
   10.90 -#
   10.91 -# CONFIG_PARPORT is not set
   10.92 -
   10.93 -#
   10.94 -# Plug and Play configuration
   10.95 -#
   10.96 -# CONFIG_PNP is not set
   10.97 -
   10.98 -#
   10.99 -# Block devices
  10.100 -#
  10.101 -# CONFIG_BLK_DEV_FD is not set
  10.102 -# CONFIG_BLK_DEV_XD is not set
  10.103 -CONFIG_BLK_DEV_LOOP=y
  10.104 -CONFIG_BLK_DEV_NBD=y
  10.105 -CONFIG_BLK_DEV_RAM=y
  10.106 -CONFIG_BLK_DEV_RAM_SIZE=4096
  10.107 -CONFIG_BLK_DEV_INITRD=y
  10.108 -CONFIG_XENOLINUX_BLOCK=y
  10.109 -
  10.110 -#
  10.111 -# Multi-device support (RAID and LVM)
  10.112 -#
  10.113 -# CONFIG_MD is not set
  10.114  
  10.115  #
  10.116  # Networking options
  10.117  #
  10.118  CONFIG_PACKET=y
  10.119  CONFIG_PACKET_MMAP=y
  10.120 -CONFIG_NETLINK=y
  10.121 -CONFIG_RTNETLINK=y
  10.122  # CONFIG_NETLINK_DEV is not set
  10.123  # CONFIG_NETFILTER is not set
  10.124  CONFIG_FILTER=y
  10.125 @@ -143,12 +76,18 @@ CONFIG_IP_PNP=y
  10.126  # CONFIG_NET_IPGRE is not set
  10.127  # CONFIG_INET_ECN is not set
  10.128  # CONFIG_SYN_COOKIES is not set
  10.129 +# CONFIG_VLAN_8021Q is not set
  10.130  
  10.131  #
  10.132  #  
  10.133  #
  10.134  # CONFIG_IPX is not set
  10.135  # CONFIG_ATALK is not set
  10.136 +
  10.137 +#
  10.138 +# Appletalk devices
  10.139 +#
  10.140 +# CONFIG_DEV_APPLETALK is not set
  10.141  # CONFIG_DECNET is not set
  10.142  # CONFIG_BRIDGE is not set
  10.143  
  10.144 @@ -158,207 +97,119 @@ CONFIG_IP_PNP=y
  10.145  # CONFIG_NET_SCHED is not set
  10.146  
  10.147  #
  10.148 -# Telephony Support
  10.149 -#
  10.150 -# CONFIG_PHONE is not set
  10.151 -
  10.152 -#
  10.153 -# ATA/IDE/MFM/RLL support
  10.154 -#
  10.155 -# CONFIG_IDE is not set
  10.156 -# CONFIG_BLK_DEV_IDE_MODES is not set
  10.157 -# CONFIG_BLK_DEV_HD is not set
  10.158 -
  10.159 -#
  10.160 -# SCSI support
  10.161 +# Network testing
  10.162  #
  10.163 -# CONFIG_SCSI is not set
  10.164 -
  10.165 -#
  10.166 -# Fusion MPT device support
  10.167 -#
  10.168 -# CONFIG_FUSION_BOOT is not set
  10.169 -# CONFIG_FUSION_ISENSE is not set
  10.170 -# CONFIG_FUSION_CTL is not set
  10.171 -# CONFIG_FUSION_LAN is not set
  10.172 -
  10.173 -#
  10.174 -# I2O device support
  10.175 -#
  10.176 -# CONFIG_I2O is not set
  10.177 +# CONFIG_NET_PKTGEN is not set
  10.178  
  10.179  #
  10.180 -# Network device support
  10.181 -#
  10.182 -# CONFIG_NETDEVICES is not set
  10.183 -
  10.184 -#
  10.185 -# Amateur Radio support
  10.186 -#
  10.187 -# CONFIG_HAMRADIO is not set
  10.188 -
  10.189 -#
  10.190 -# IrDA (infrared) support
  10.191 -#
  10.192 -# CONFIG_IRDA is not set
  10.193 -
  10.194 +# Block devices
  10.195  #
  10.196 -# ISDN subsystem
  10.197 -#
  10.198 -# CONFIG_ISDN is not set
  10.199 -
  10.200 -#
  10.201 -# Old CD-ROM drivers (not SCSI, not IDE)
  10.202 -#
  10.203 -# CONFIG_CD_NO_IDESCSI is not set
  10.204 -
  10.205 -#
  10.206 -# Input core support
  10.207 -#
  10.208 -# CONFIG_INPUT is not set
  10.209 -CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
  10.210 -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
  10.211 +# CONFIG_BLK_DEV_FD is not set
  10.212 +# CONFIG_BLK_DEV_XD is not set
  10.213 +# CONFIG_PARIDE is not set
  10.214 +# CONFIG_BLK_CPQ_DA is not set
  10.215 +# CONFIG_BLK_CPQ_CISS_DA is not set
  10.216 +# CONFIG_CISS_SCSI_TAPE is not set
  10.217 +# CONFIG_BLK_DEV_DAC960 is not set
  10.218 +# CONFIG_BLK_DEV_UMEM is not set
  10.219 +CONFIG_BLK_DEV_LOOP=y
  10.220 +CONFIG_BLK_DEV_NBD=y
  10.221 +CONFIG_BLK_DEV_RAM=y
  10.222 +CONFIG_BLK_DEV_RAM_SIZE=4096
  10.223 +CONFIG_BLK_DEV_INITRD=y
  10.224 +# CONFIG_BLK_STATS is not set
  10.225 +CONFIG_XENOLINUX_BLOCK=y
  10.226 +# CONFIG_BLK_DEV_IDE_MODES is not set
  10.227 +# CONFIG_BLK_DEV_HD is not set
  10.228  
  10.229  #
  10.230  # Character devices
  10.231  #
  10.232  # CONFIG_VT is not set
  10.233 -# CONFIG_SERIAL is not set
  10.234 -# CONFIG_SERIAL_NONSTANDARD is not set
  10.235 +# CONFIG_DUMMY_CONSOLE is not set
  10.236 +CONFIG_PSMOUSE=y
  10.237  # CONFIG_UNIX98_PTYS is not set
  10.238  
  10.239  #
  10.240 -# I2C support
  10.241 -#
  10.242 -# CONFIG_I2C is not set
  10.243 -
  10.244 -#
  10.245 -# Mice
  10.246 -#
  10.247 -# CONFIG_BUSMOUSE is not set
  10.248 -# CONFIG_MOUSE is not set
  10.249 -
  10.250 -#
  10.251 -# Joysticks
  10.252 -#
  10.253 -# CONFIG_INPUT_GAMEPORT is not set
  10.254 -
  10.255 -#
  10.256 -# Input core support is needed for gameports
  10.257 -#
  10.258 -
  10.259 -#
  10.260 -# Input core support is needed for joysticks
  10.261 -#
  10.262 -# CONFIG_QIC02_TAPE is not set
  10.263 -
  10.264 -#
  10.265 -# Watchdog Cards
  10.266 -#
  10.267 -# CONFIG_WATCHDOG is not set
  10.268 -# CONFIG_NVRAM is not set
  10.269 -# CONFIG_RTC is not set
  10.270 -# CONFIG_DTLK is not set
  10.271 -# CONFIG_R3964 is not set
  10.272 -# CONFIG_APPLICOM is not set
  10.273 -
  10.274 -#
  10.275 -# Ftape, the floppy tape device driver
  10.276 -#
  10.277 -# CONFIG_FTAPE is not set
  10.278 -# CONFIG_AGP is not set
  10.279 -# CONFIG_DRM is not set
  10.280 -# CONFIG_MWAVE is not set
  10.281 -
  10.282 -#
  10.283 -# Multimedia devices
  10.284 -#
  10.285 -# CONFIG_VIDEO_DEV is not set
  10.286 -
  10.287 -#
  10.288  # File systems
  10.289  #
  10.290  # CONFIG_QUOTA is not set
  10.291  CONFIG_AUTOFS_FS=y
  10.292  CONFIG_AUTOFS4_FS=y
  10.293 +# CONFIG_REISERFS_FS is not set
  10.294 +# CONFIG_REISERFS_CHECK is not set
  10.295 +# CONFIG_REISERFS_PROC_INFO is not set
  10.296 +# CONFIG_ADFS_FS is not set
  10.297 +# CONFIG_ADFS_FS_RW is not set
  10.298 +# CONFIG_AFFS_FS is not set
  10.299 +# CONFIG_HFS_FS is not set
  10.300 +# CONFIG_BEFS_FS is not set
  10.301 +# CONFIG_BEFS_DEBUG is not set
  10.302 +# CONFIG_BFS_FS is not set
  10.303  CONFIG_EXT3_FS=y
  10.304  CONFIG_JBD=y
  10.305 +# CONFIG_JBD_DEBUG is not set
  10.306  # CONFIG_FAT_FS is not set
  10.307 +# CONFIG_MSDOS_FS is not set
  10.308 +# CONFIG_UMSDOS_FS is not set
  10.309 +# CONFIG_VFAT_FS is not set
  10.310 +# CONFIG_EFS_FS is not set
  10.311 +# CONFIG_JFFS_FS is not set
  10.312 +# CONFIG_JFFS2_FS is not set
  10.313  # CONFIG_CRAMFS is not set
  10.314  # CONFIG_TMPFS is not set
  10.315  CONFIG_RAMFS=y
  10.316  CONFIG_ISO9660_FS=y
  10.317  CONFIG_JOLIET=y
  10.318  CONFIG_ZISOFS=y
  10.319 -CONFIG_ZISOFS_FS=y
  10.320 +# CONFIG_JFS_FS is not set
  10.321 +# CONFIG_JFS_DEBUG is not set
  10.322 +# CONFIG_JFS_STATISTICS is not set
  10.323  # CONFIG_MINIX_FS is not set
  10.324  # CONFIG_VXFS_FS is not set
  10.325  # CONFIG_NTFS_FS is not set
  10.326 +# CONFIG_NTFS_RW is not set
  10.327  # CONFIG_HPFS_FS is not set
  10.328  CONFIG_PROC_FS=y
  10.329 +# CONFIG_DEVFS_FS is not set
  10.330 +# CONFIG_DEVFS_MOUNT is not set
  10.331 +# CONFIG_DEVFS_DEBUG is not set
  10.332 +# CONFIG_DEVPTS_FS is not set
  10.333 +# CONFIG_QNX4FS_FS is not set
  10.334 +# CONFIG_QNX4FS_RW is not set
  10.335  # CONFIG_ROMFS_FS is not set
  10.336  CONFIG_EXT2_FS=y
  10.337  # CONFIG_SYSV_FS is not set
  10.338  # CONFIG_UDF_FS is not set
  10.339 +# CONFIG_UDF_RW is not set
  10.340  # CONFIG_UFS_FS is not set
  10.341 -
  10.342 -# Skanky NLS stuff
  10.343 -CONFIG_NLS_DEFAULT="iso8559-1"
  10.344 -CONFIG_NLS_CODEPAGE_437=n
  10.345 -CONFIG_NLS_CODEPAGE_737=n
  10.346 -CONFIG_NLS_CODEPAGE_775=n
  10.347 -CONFIG_NLS_CODEPAGE_850=n
  10.348 -CONFIG_NLS_CODEPAGE_852=n
  10.349 -CONFIG_NLS_CODEPAGE_855=n
  10.350 -CONFIG_NLS_CODEPAGE_857=n
  10.351 -CONFIG_NLS_CODEPAGE_860=n
  10.352 -CONFIG_NLS_CODEPAGE_861=n
  10.353 -CONFIG_NLS_CODEPAGE_862=n
  10.354 -CONFIG_NLS_CODEPAGE_863=n
  10.355 -CONFIG_NLS_CODEPAGE_864=n
  10.356 -CONFIG_NLS_CODEPAGE_865=n
  10.357 -CONFIG_NLS_CODEPAGE_866=n
  10.358 -CONFIG_NLS_CODEPAGE_869=n
  10.359 -CONFIG_NLS_CODEPAGE_936=n
  10.360 -CONFIG_NLS_CODEPAGE_950=n
  10.361 -CONFIG_NLS_CODEPAGE_932=n
  10.362 -CONFIG_NLS_CODEPAGE_949=n
  10.363 -CONFIG_NLS_CODEPAGE_874=n
  10.364 -CONFIG_NLS_ISO8859_8=n
  10.365 -CONFIG_NLS_CODEPAGE_1250=n
  10.366 -CONFIG_NLS_CODEPAGE_1251=n
  10.367 -CONFIG_NLS_ISO8859_1=n
  10.368 -CONFIG_NLS_ISO8859_2=n
  10.369 -CONFIG_NLS_ISO8859_3=n
  10.370 -CONFIG_NLS_ISO8859_4=n
  10.371 -CONFIG_NLS_ISO8859_5=n
  10.372 -CONFIG_NLS_ISO8859_6=n
  10.373 -CONFIG_NLS_ISO8859_7=n
  10.374 -CONFIG_NLS_ISO8859_9=n
  10.375 -CONFIG_NLS_ISO8859_13=n
  10.376 -CONFIG_NLS_ISO8859_14=n
  10.377 -CONFIG_NLS_ISO8859_15=n
  10.378 -CONFIG_NLS_KOI8_R=n
  10.379 -CONFIG_NLS_KOI8_U=n
  10.380 -CONFIG_NLS_UTF8=n
  10.381 -
  10.382 +# CONFIG_UFS_FS_WRITE is not set
  10.383  
  10.384  #
  10.385  # Network File Systems
  10.386  #
  10.387  # CONFIG_CODA_FS is not set
  10.388 +# CONFIG_INTERMEZZO_FS is not set
  10.389  CONFIG_NFS_FS=y
  10.390  CONFIG_NFS_V3=y
  10.391  CONFIG_ROOT_NFS=y
  10.392  CONFIG_NFSD=y
  10.393  CONFIG_NFSD_V3=y
  10.394 +# CONFIG_NFSD_TCP is not set
  10.395  CONFIG_SUNRPC=y
  10.396  CONFIG_LOCKD=y
  10.397  CONFIG_LOCKD_V4=y
  10.398  # CONFIG_SMB_FS is not set
  10.399  # CONFIG_NCP_FS is not set
  10.400 -# CONFIG_ZISOFS_FS is not set
  10.401 -# CONFIG_ZLIB_FS_INFLATE is not set
  10.402 +# CONFIG_NCPFS_PACKET_SIGNING is not set
  10.403 +# CONFIG_NCPFS_IOCTL_LOCKING is not set
  10.404 +# CONFIG_NCPFS_STRONG is not set
  10.405 +# CONFIG_NCPFS_NFS_NS is not set
  10.406 +# CONFIG_NCPFS_OS2_NS is not set
  10.407 +# CONFIG_NCPFS_SMALLDOS is not set
  10.408 +# CONFIG_NCPFS_NLS is not set
  10.409 +# CONFIG_NCPFS_EXTRAS is not set
  10.410 +CONFIG_ZISOFS_FS=y
  10.411  
  10.412  #
  10.413  # Partition Types
  10.414 @@ -366,60 +217,49 @@ CONFIG_LOCKD_V4=y
  10.415  # CONFIG_PARTITION_ADVANCED is not set
  10.416  CONFIG_MSDOS_PARTITION=y
  10.417  # CONFIG_SMB_NLS is not set
  10.418 -# CONFIG_NLS is not set
  10.419 -
  10.420 -#
  10.421 -# Sound
  10.422 -#
  10.423 -# CONFIG_SOUND is not set
  10.424 -
  10.425 -#
  10.426 -# USB support
  10.427 -#
  10.428 -
  10.429 -#
  10.430 -# USB Controllers
  10.431 -#
  10.432 -
  10.433 -#
  10.434 -# USB Device Class drivers
  10.435 -#
  10.436 -
  10.437 -#
  10.438 -# USB Human Interface Devices (HID)
  10.439 -#
  10.440 +CONFIG_NLS=y
  10.441  
  10.442  #
  10.443 -#   Input core support is needed for USB HID
  10.444 -#
  10.445 -
  10.446 -#
  10.447 -# USB Imaging devices
  10.448 -#
  10.449 -
  10.450 -#
  10.451 -# USB Multimedia devices
  10.452 -#
  10.453 -
  10.454 -#
  10.455 -#   Video4Linux support is needed for USB Multimedia device support
  10.456 +# Native Language Support
  10.457  #
  10.458 -
  10.459 -#
  10.460 -# USB Network adaptors
  10.461 -#
  10.462 -
  10.463 -#
  10.464 -# USB port drivers
  10.465 -#
  10.466 -
  10.467 -#
  10.468 -# USB Serial Converter support
  10.469 -#
  10.470 -
  10.471 -#
  10.472 -# USB Miscellaneous drivers
  10.473 -#
  10.474 +CONFIG_NLS_DEFAULT="iso8559-1"
  10.475 +# CONFIG_NLS_CODEPAGE_437 is not set
  10.476 +# CONFIG_NLS_CODEPAGE_737 is not set
  10.477 +# CONFIG_NLS_CODEPAGE_775 is not set
  10.478 +# CONFIG_NLS_CODEPAGE_850 is not set
  10.479 +# CONFIG_NLS_CODEPAGE_852 is not set
  10.480 +# CONFIG_NLS_CODEPAGE_855 is not set
  10.481 +# CONFIG_NLS_CODEPAGE_857 is not set
  10.482 +# CONFIG_NLS_CODEPAGE_860 is not set
  10.483 +# CONFIG_NLS_CODEPAGE_861 is not set
  10.484 +# CONFIG_NLS_CODEPAGE_862 is not set
  10.485 +# CONFIG_NLS_CODEPAGE_863 is not set
  10.486 +# CONFIG_NLS_CODEPAGE_864 is not set
  10.487 +# CONFIG_NLS_CODEPAGE_865 is not set
  10.488 +# CONFIG_NLS_CODEPAGE_866 is not set
  10.489 +# CONFIG_NLS_CODEPAGE_869 is not set
  10.490 +# CONFIG_NLS_CODEPAGE_936 is not set
  10.491 +# CONFIG_NLS_CODEPAGE_950 is not set
  10.492 +# CONFIG_NLS_CODEPAGE_932 is not set
  10.493 +# CONFIG_NLS_CODEPAGE_949 is not set
  10.494 +# CONFIG_NLS_CODEPAGE_874 is not set
  10.495 +# CONFIG_NLS_ISO8859_8 is not set
  10.496 +# CONFIG_NLS_CODEPAGE_1250 is not set
  10.497 +# CONFIG_NLS_CODEPAGE_1251 is not set
  10.498 +# CONFIG_NLS_ISO8859_1 is not set
  10.499 +# CONFIG_NLS_ISO8859_2 is not set
  10.500 +# CONFIG_NLS_ISO8859_3 is not set
  10.501 +# CONFIG_NLS_ISO8859_4 is not set
  10.502 +# CONFIG_NLS_ISO8859_5 is not set
  10.503 +# CONFIG_NLS_ISO8859_6 is not set
  10.504 +# CONFIG_NLS_ISO8859_7 is not set
  10.505 +# CONFIG_NLS_ISO8859_9 is not set
  10.506 +# CONFIG_NLS_ISO8859_13 is not set
  10.507 +# CONFIG_NLS_ISO8859_14 is not set
  10.508 +# CONFIG_NLS_ISO8859_15 is not set
  10.509 +# CONFIG_NLS_KOI8_R is not set
  10.510 +# CONFIG_NLS_KOI8_U is not set
  10.511 +# CONFIG_NLS_UTF8 is not set
  10.512  
  10.513  #
  10.514  # Kernel hacking
  10.515 @@ -434,18 +274,8 @@ CONFIG_DEBUG_KERNEL=y
  10.516  CONFIG_KALLSYMS=y
  10.517  # CONFIG_FRAME_POINTER is not set
  10.518  
  10.519 -# Grim cruft
  10.520  #
  10.521 -# CONFIG_VLAN_8021Q is not set
  10.522 -# CONFIG_NET_PKTGEN is not set
  10.523 -# CONFIG_BLK_STATS is not set
  10.524 -# CONFIG_REISERFS_FS is not set
  10.525 -# CONFIG_JBD_DEBUG is not set
  10.526 -# CONFIG_JFS_FS is not set
  10.527 -# CONFIG_QNX4FS_FS is not set
  10.528 -
  10.529 -# 
  10.530  # Library routines
  10.531  #
  10.532  CONFIG_ZLIB_INFLATE=y
  10.533 -CONFIG_ZLIB_DEFLATE=n
  10.534 +# CONFIG_ZLIB_DEFLATE is not set
    11.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c	Mon Apr 28 12:58:45 2003 +0000
    11.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.c	Mon Apr 28 13:06:57 2003 +0000
    11.3 @@ -10,8 +10,6 @@
    11.4  
    11.5  typedef unsigned char byte; /* from linux/ide.h */
    11.6  
    11.7 -#define XLBLK_MAX 32
    11.8 -
    11.9  #define XLBLK_RESPONSE_IRQ _EVENT_BLK_RESP
   11.10  #define DEBUG_IRQ          _EVENT_DEBUG 
   11.11  
    12.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.h	Mon Apr 28 12:58:45 2003 +0000
    12.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_block.h	Mon Apr 28 13:06:57 2003 +0000
    12.3 @@ -39,12 +39,20 @@
    12.4  #define DPRINTK_IOCTL(_f, _a...) ((void)0)
    12.5  #endif
    12.6  
    12.7 -/* IDE/SCSI have <= 32 partitions per device. VIRT has <= 16. */
    12.8 -#define PARTN_SHIFT(_dev) ((MAJOR(_dev)==XLVIRT_MAJOR) ? 4 : 5)
    12.9 -#define XLIDE_PARTN_SHIFT  5
   12.10 -#define XLSCSI_PARTN_SHIFT 5
   12.11 +/* XL IDE and SCSI use same major/minor numbers as normal Linux devices. */
   12.12 +#define XLIDE_MAJOR IDE0_MAJOR
   12.13 +#define XLSCSI_MAJOR SCSI_DISK0_MAJOR
   12.14 +
   12.15 +/* IDE has < 64 partitions per device. VIRT and SCSI have < 16. */
   12.16 +#define PARTN_SHIFT(_dev) ((MAJOR(_dev)==IDE0_MAJOR) ? 6 : 4)
   12.17 +#define XLIDE_PARTN_SHIFT  6
   12.18 +#define XLSCSI_PARTN_SHIFT 4
   12.19  #define XLVIRT_PARTN_SHIFT 4
   12.20  
   12.21 +#define XLIDE_DEVS_PER_MAJOR  (256 >> XLIDE_PARTN_SHIFT)
   12.22 +#define XLSCSI_DEVS_PER_MAJOR (256 >> XLSCSI_PARTN_SHIFT)
   12.23 +#define XLVIRT_DEVS_PER_MAJOR (256 >> XLVIRT_PARTN_SHIFT)
   12.24 +
   12.25  /*
   12.26   * We have one of these per XL-IDE, XL-SCSI, and XL-VIRT device.
   12.27   * They hang in an array off the gendisk structure. We may end up putting
    13.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_ide.c	Mon Apr 28 12:58:45 2003 +0000
    13.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_ide.c	Mon Apr 28 13:06:57 2003 +0000
    13.3 @@ -2,7 +2,6 @@
    13.4   * xl_ide.c
    13.5   * 
    13.6   * Xenolinux virtual IDE block-device driver.
    13.7 - * 
    13.8   */
    13.9  
   13.10  #include "xl_block.h"
   13.11 @@ -10,9 +9,8 @@
   13.12  #define MAJOR_NR XLIDE_MAJOR 
   13.13  #include <linux/blk.h>
   13.14  
   13.15 -/* We support up to 16 devices of up to 16 partitions each. */
   13.16  #define XLIDE_MAX         256
   13.17 -#define XLIDE_MAJOR_NAME "xhd"
   13.18 +#define XLIDE_MAJOR_NAME "hd"
   13.19  static int xlide_blksize_size[XLIDE_MAX];
   13.20  static int xlide_hardsect_size[XLIDE_MAX];
   13.21  static int xlide_max_sectors[XLIDE_MAX];
   13.22 @@ -45,7 +43,9 @@ int xlide_init(xen_disk_info_t *xdi)
   13.23      units = 0;
   13.24      for ( i = 0; i < xdi->count; i++ )
   13.25          if ( IS_IDE_XENDEV(xdi->disks[i].device) &&
   13.26 -             ((xdi->disks[i].device & XENDEV_IDX_MASK) < 16) ) units++;
   13.27 +             ((xdi->disks[i].device & XENDEV_IDX_MASK) <
   13.28 +              XLIDE_DEVS_PER_MAJOR) ) 
   13.29 +            units++;
   13.30      if ( units == 0 ) return 0;
   13.31  
   13.32      SET_MODULE_OWNER(&xlide_block_fops);
   13.33 @@ -112,8 +112,9 @@ int xlide_init(xen_disk_info_t *xdi)
   13.34  	minor = disk << XLIDE_PARTN_SHIFT; 
   13.35  
   13.36  
   13.37 -        /* We can use the first 16 IDE devices. */
   13.38 -        if ( !IS_IDE_XENDEV(xdi->disks[i].device) || (disk >= 16) ) continue;
   13.39 +        if ( !IS_IDE_XENDEV(xdi->disks[i].device) || 
   13.40 +             (disk >= XLIDE_DEVS_PER_MAJOR) ) 
   13.41 +            continue;
   13.42  
   13.43          ((xl_disk_t *)gd->real_devices)[disk].capacity =
   13.44              xdi->disks[i].capacity;
    14.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c	Mon Apr 28 12:58:45 2003 +0000
    14.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_scsi.c	Mon Apr 28 13:06:57 2003 +0000
    14.3 @@ -2,7 +2,6 @@
    14.4   * xl_scsi.c
    14.5   * 
    14.6   * Xenolinux virtual SCSI block-device driver.
    14.7 - * 
    14.8   */
    14.9  
   14.10  #include "xl_block.h"
   14.11 @@ -10,9 +9,8 @@
   14.12  #define MAJOR_NR XLSCSI_MAJOR
   14.13  #include <linux/blk.h>
   14.14  
   14.15 -/* We support up to 16 devices of up to 16 partitions each. */
   14.16  #define XLSCSI_MAX        256
   14.17 -#define XLSCSI_MAJOR_NAME "xsd"
   14.18 +#define XLSCSI_MAJOR_NAME "sd"
   14.19  static int xlscsi_blksize_size[XLSCSI_MAX];
   14.20  static int xlscsi_hardsect_size[XLSCSI_MAX];
   14.21  static int xlscsi_max_sectors[XLSCSI_MAX];
   14.22 @@ -45,7 +43,9 @@ int xlscsi_init(xen_disk_info_t *xdi)
   14.23      units = 0;
   14.24      for ( i = 0; i < xdi->count; i++ )
   14.25          if ( IS_SCSI_XENDEV(xdi->disks[i].device) &&
   14.26 -             ((xdi->disks[i].device & XENDEV_IDX_MASK) < 16) ) units++;
   14.27 +             ((xdi->disks[i].device & XENDEV_IDX_MASK) <
   14.28 +              XLSCSI_DEVS_PER_MAJOR) ) 
   14.29 +            units++;
   14.30      if ( units == 0 ) return 0;
   14.31  
   14.32      SET_MODULE_OWNER(&xlscsi_block_fops);
   14.33 @@ -110,8 +110,9 @@ int xlscsi_init(xen_disk_info_t *xdi)
   14.34      {
   14.35          disk = xdi->disks[i].device & XENDEV_IDX_MASK;
   14.36  
   14.37 -        /* We can use the first 16 IDE devices. */
   14.38 -        if ( !IS_SCSI_XENDEV(xdi->disks[i].device) || (disk >= 16) ) continue;
   14.39 +        if ( !IS_SCSI_XENDEV(xdi->disks[i].device) || 
   14.40 +             (disk >= XLSCSI_DEVS_PER_MAJOR) )
   14.41 +            continue;
   14.42  
   14.43          ((xl_disk_t *)gd->real_devices)[disk].capacity =
   14.44              xdi->disks[i].capacity;
    15.1 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_segment.c	Mon Apr 28 12:58:45 2003 +0000
    15.2 +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/drivers/block/xl_segment.c	Mon Apr 28 13:06:57 2003 +0000
    15.3 @@ -13,7 +13,6 @@
    15.4  /* Copied from linux/ide.h */
    15.5  typedef unsigned char byte; 
    15.6  
    15.7 -/* We support up to 16 devices of up to 16 partitions each. */
    15.8  #define XLVIRT_MAX        256
    15.9  #define XLVIRT_MAJOR_NAME "xvd"
   15.10  static int xlseg_blksize_size[XLVIRT_MAX];
   15.11 @@ -119,8 +118,8 @@ int __init xlseg_init(void)
   15.12      {
   15.13          disk = xdi->disks[i].device & XENDEV_IDX_MASK;
   15.14  
   15.15 -        /* We can use the first 16 IDE devices. */
   15.16 -        if ( !IS_VIRTUAL_XENDEV(xdi->disks[i].device) || (disk >= 16) )
   15.17 +        if ( !IS_VIRTUAL_XENDEV(xdi->disks[i].device) || 
   15.18 +             (disk >= XLVIRT_DEVS_PER_MAJOR) )
   15.19              continue;
   15.20  
   15.21          ((xl_disk_t *)gd->real_devices)[disk].capacity =
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in	Mon Apr 28 13:06:57 2003 +0000
    16.3 @@ -0,0 +1,357 @@
    16.4 +#
    16.5 +# Character device configuration
    16.6 +#
    16.7 +mainmenu_option next_comment
    16.8 +comment 'Character devices'
    16.9 +
   16.10 +bool 'Virtual terminal' CONFIG_VT
   16.11 +if [ "$CONFIG_VT" = "n" ]; then
   16.12 +   bool 'Dummy Console (to allow kbd/mouse testing without VTs)' CONFIG_DUMMY_CONSOLE
   16.13 +fi   
   16.14 +
   16.15 +bool 'PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
   16.16 +
   16.17 +bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
   16.18 +if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
   16.19 +   int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
   16.20 +fi
   16.21 +
   16.22 +endmenu
   16.23 +
   16.24 +# KEPT IN CASE WE WANT TO BRING SOME BACK...
   16.25 +#
   16.26 +#if [ "$CONFIG_VT" = "y" ]; then
   16.27 +#   bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
   16.28 +#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
   16.29 +#      bool '    Support for Lasi/Dino PS2 port' CONFIG_GSC_PS2
   16.30 +#   fi
   16.31 +#fi
   16.32 +#
   16.33 +#tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL
   16.34 +#if [ "$CONFIG_SERIAL" = "y" ]; then
   16.35 +#   bool '  Support for console on serial port' CONFIG_SERIAL_CONSOLE
   16.36 +#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
   16.37 +#      bool '   serial port on GSC support' CONFIG_SERIAL_GSC
   16.38 +#   fi
   16.39 +#   if [ "$CONFIG_IA64" = "y" ]; then
   16.40 +#      bool 'Support for serial console port described by EFI HCDP table' CONFIG_SERIAL_HCDP
   16.41 +#   fi
   16.42 +#   if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
   16.43 +#      tristate '   Atomwide serial port support' CONFIG_ATOMWIDE_SERIAL
   16.44 +#      tristate '   Dual serial port support' CONFIG_DUALSP_SERIAL
   16.45 +#   fi
   16.46 +#fi
   16.47 +#dep_mbool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED $CONFIG_SERIAL
   16.48 +#if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
   16.49 +#   bool '  Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
   16.50 +#   bool '  Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ
   16.51 +#   bool '  Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ
   16.52 +#   bool '  Support special multiport boards' CONFIG_SERIAL_MULTIPORT
   16.53 +#   bool '  Support the Bell Technologies HUB6 card' CONFIG_HUB6
   16.54 +#fi
   16.55 +#bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD
   16.56 +#if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then
   16.57 +#   tristate '  Computone IntelliPort Plus serial support' CONFIG_COMPUTONE
   16.58 +#   tristate '  Comtrol Rocketport support' CONFIG_ROCKETPORT
   16.59 +#   tristate '  Cyclades async mux support' CONFIG_CYCLADES
   16.60 +#   if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_CYCLADES" != "n" ]; then
   16.61 +#      bool '    Cyclades-Z interrupt mode operation (EXPERIMENTAL)' CONFIG_CYZ_INTR
   16.62 +#   fi
   16.63 +#   if [ "$CONFIG_X86_64" != "y" ]; then
   16.64 +#      tristate '  Digiboard Intelligent Async Support' CONFIG_DIGIEPCA
   16.65 +#      if [ "$CONFIG_DIGIEPCA" = "n" ]; then
   16.66 +#         tristate '  Digiboard PC/Xx Support' CONFIG_DIGI
   16.67 +#      fi
   16.68 +#   fi
   16.69 +#   dep_tristate '  Hayes ESP serial port support' CONFIG_ESPSERIAL $CONFIG_ISA
   16.70 +#   tristate '  Moxa Intellio support' CONFIG_MOXA_INTELLIO
   16.71 +#   tristate '  Moxa SmartIO support' CONFIG_MOXA_SMARTIO
   16.72 +#   if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
   16.73 +#      dep_tristate '  Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
   16.74 +#   fi
   16.75 +#   tristate '  Microgate SyncLink card support' CONFIG_SYNCLINK
   16.76 +#   tristate '  SyncLink Multiport support' CONFIG_SYNCLINKMP
   16.77 +#   tristate '  HDLC line discipline support' CONFIG_N_HDLC
   16.78 +#   tristate '  SDL RISCom/8 card support' CONFIG_RISCOM8
   16.79 +#   if [ "$CONFIG_X86_64" != "y" ]; then
   16.80 +#      tristate '  Specialix IO8+ card support' CONFIG_SPECIALIX
   16.81 +#      if [ "$CONFIG_SPECIALIX" != "n" ]; then
   16.82 +#         bool '  Specialix DTR/RTS pin is RTS' CONFIG_SPECIALIX_RTSCTS
   16.83 +#      fi 
   16.84 +#      tristate '  Specialix SX (and SI) card support' CONFIG_SX
   16.85 +#      tristate '  Specialix RIO system support' CONFIG_RIO
   16.86 +#      if [ "$CONFIG_RIO" != "n" ]; then
   16.87 +#        bool '    Support really old RIO/PCI cards' CONFIG_RIO_OLDPCI
   16.88 +#      fi
   16.89 +#   fi
   16.90 +#   bool '  Stallion multiport serial support' CONFIG_STALDRV
   16.91 +#   if [ "$CONFIG_STALDRV" = "y" ]; then
   16.92 +#     tristate '    Stallion EasyIO or EC8/32 support' CONFIG_STALLION
   16.93 +#     tristate '    Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION
   16.94 +#   fi
   16.95 +#   if [ "$CONFIG_PARISC" = "y" ]; then
   16.96 +#     if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then
   16.97 +#       bool '  Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD
   16.98 +#     fi
   16.99 +#     if [ "$CONFIG_SERIAL_MUX" != "y" ]; then
  16.100 +#       bool '  PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD
  16.101 +#     fi
  16.102 +#   fi
  16.103 +#   if [ "$CONFIG_MIPS" = "y" ]; then
  16.104 +#     bool '  TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
  16.105 +#     dep_bool '     Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
  16.106 +#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
  16.107 +#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
  16.108 +#        bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
  16.109 +#     fi
  16.110 +#     bool 'TXx927 SIO support' CONFIG_TXX927_SERIAL 
  16.111 +#     if [ "$CONFIG_TXX927_SERIAL" = "y" ]; then
  16.112 +#        bool 'TXx927 SIO Console support' CONFIG_TXX927_SERIAL_CONSOLE  
  16.113 +#     fi                             
  16.114 +#     if [ "$CONFIG_SIBYTE_SB1250" = "y" ]; then
  16.115 +#        bool '  Support for sb1250 onchip DUART' CONFIG_SIBYTE_SB1250_DUART
  16.116 +#        if [ "$CONFIG_SIBYTE_SB1250_DUART" = "y" ]; then
  16.117 +#           bool '  Console on SB1250 DUART' CONFIG_SIBYTE_SB1250_DUART_CONSOLE
  16.118 +#	   if [ "$CONFIG_SIBYTE_SB1250_DUART_CONSOLE" = "y" ]; then
  16.119 +#	      define_bool CONFIG_SERIAL_CONSOLE y
  16.120 +#	   fi
  16.121 +#	   int  '  Output buffers size (in bytes)' CONFIG_SB1250_DUART_OUTPUT_BUF_SIZE 1024
  16.122 +#	   bool '  Leave port 1 alone (for kgdb or audio)' CONFIG_SIBYTE_SB1250_DUART_NO_PORT_1
  16.123 +#       fi
  16.124 +#     fi
  16.125 +#  fi
  16.126 +#fi
  16.127 +#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
  16.128 +#   tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
  16.129 +#fi
  16.130 +#if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
  16.131 +#   bool 'DC21285 serial port support' CONFIG_SERIAL_21285
  16.132 +#   if [ "$CONFIG_SERIAL_21285" = "y" ]; then
  16.133 +#      if [ "$CONFIG_OBSOLETE" = "y" ]; then
  16.134 +#         bool '  Use /dev/ttyS0 device (OBSOLETE)' CONFIG_SERIAL_21285_OLD
  16.135 +#      fi
  16.136 +#      bool '  Console on DC21285 serial port' CONFIG_SERIAL_21285_CONSOLE
  16.137 +#   fi
  16.138 +#   if [ "$CONFIG_MIPS" = "y" ]; then
  16.139 +#     bool '  TMPTX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
  16.140 +#     dep_bool '     Console on TMPTX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
  16.141 +#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
  16.142 +#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
  16.143 +#         bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
  16.144 +#     fi
  16.145 +#   fi
  16.146 +#   if [ "$CONFIG_PARISC" = "y" ]; then
  16.147 +#     bool '  PDC software console support' CONFIG_PDC_CONSOLE
  16.148 +#   fi
  16.149 +#fi
  16.150 +#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
  16.151 +#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
  16.152 +#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
  16.153 +#     define_bool CONFIG_IT8172_CIR y
  16.154 +#   else
  16.155 +#     bool '    Enable PS2 Keyboard Support' CONFIG_PC_KEYB
  16.156 +#   fi
  16.157 +#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
  16.158 +#   bool 'Enable Smart Card Reader 1 Support ' CONFIG_IT8172_SCR1
  16.159 +#fi
  16.160 +#if [ "$CONFIG_MIPS_IVR" = "y" ]; then
  16.161 +#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
  16.162 +#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
  16.163 +#     define_bool CONFIG_IT8172_CIR y
  16.164 +#   fi
  16.165 +#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
  16.166 +#fi
  16.167 +##PTYS WERE HERE
  16.168 +#if [ "$CONFIG_PARPORT" != "n" ]; then
  16.169 +#   dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT
  16.170 +#   if [ "$CONFIG_PRINTER" != "n" ]; then
  16.171 +#      bool '  Support for console on line printer' CONFIG_LP_CONSOLE
  16.172 +#   fi
  16.173 +#   dep_tristate 'Support for user-space parallel port device drivers' CONFIG_PPDEV $CONFIG_PARPORT
  16.174 +#   dep_tristate 'Texas Instruments parallel link cable support' CONFIG_TIPAR $CONFIG_PARPORT
  16.175 +#fi
  16.176 +#
  16.177 +#if [ "$CONFIG_PPC64" ] ; then 
  16.178 +#   bool 'pSeries Hypervisor Virtual Console support' CONFIG_HVC_CONSOLE
  16.179 +#fi
  16.180 +#
  16.181 +#source drivers/i2c/Config.in
  16.182 +#
  16.183 +#mainmenu_option next_comment
  16.184 +#comment 'Mice'
  16.185 +#tristate 'Bus Mouse Support' CONFIG_BUSMOUSE
  16.186 +#if [ "$CONFIG_BUSMOUSE" != "n" ]; then
  16.187 +#   dep_tristate '  ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE $CONFIG_BUSMOUSE
  16.188 +#   dep_tristate '  Logitech busmouse support' CONFIG_LOGIBUSMOUSE $CONFIG_BUSMOUSE
  16.189 +#   dep_tristate '  Microsoft busmouse support' CONFIG_MS_BUSMOUSE $CONFIG_BUSMOUSE
  16.190 +#   if [ "$CONFIG_ADB" = "y" -a "$CONFIG_ADB_KEYBOARD" = "y" ]; then
  16.191 +#      dep_tristate '  Apple Desktop Bus mouse support (old driver)' CONFIG_ADBMOUSE $CONFIG_BUSMOUSE
  16.192 +#   fi
  16.193 +#fi
  16.194 +#
  16.195 +#tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE
  16.196 +#if [ "$CONFIG_MOUSE" != "n" ]; then
  16.197 +#   bool '  PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
  16.198 +#   tristate '  C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE
  16.199 +#   tristate '  PC110 digitizer pad support' CONFIG_PC110_PAD
  16.200 +#   tristate '  MK712 touch screen support' CONFIG_MK712_MOUSE
  16.201 +#fi
  16.202 +#endmenu
  16.203 +#
  16.204 +#source drivers/char/joystick/Config.in
  16.205 +#
  16.206 +#tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
  16.207 +#if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
  16.208 +#   bool '  Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF
  16.209 +#   if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then
  16.210 +#      comment '  Edit configuration parameters in ./include/linux/tpqic02.h!'
  16.211 +#   else
  16.212 +#      comment '  Setting runtime QIC-02 configuration is done with qic02conf'
  16.213 +#      comment '  from the tpqic02-support package.  It is available at'
  16.214 +#      comment '  metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/'
  16.215 +#   fi
  16.216 +#fi
  16.217 +#
  16.218 +#tristate 'IPMI top-level message handler' CONFIG_IPMI_HANDLER
  16.219 +#dep_mbool '  Generate a panic event to all BMCs on a panic' CONFIG_IPMI_PANIC_EVENT $CONFIG_IPMI_HANDLER
  16.220 +#dep_tristate '  Device interface for IPMI' CONFIG_IPMI_DEVICE_INTERFACE $CONFIG_IPMI_HANDLER
  16.221 +#dep_tristate '  IPMI KCS handler' CONFIG_IPMI_KCS $CONFIG_IPMI_HANDLER
  16.222 +#dep_tristate '  IPMI Watchdog Timer' CONFIG_IPMI_WATCHDOG $CONFIG_IPMI_HANDLER
  16.223 +#
  16.224 +#mainmenu_option next_comment
  16.225 +#comment 'Watchdog Cards'
  16.226 +#bool 'Watchdog Timer Support'	CONFIG_WATCHDOG
  16.227 +#if [ "$CONFIG_WATCHDOG" != "n" ]; then
  16.228 +#   bool '  Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
  16.229 +#   tristate '  Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
  16.230 +#   tristate '  Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
  16.231 +#   tristate '  ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
  16.232 +#   tristate '  AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
  16.233 +#   tristate '  Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
  16.234 +#   if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
  16.235 +#      tristate '  DC21285 watchdog' CONFIG_21285_WATCHDOG
  16.236 +#      if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
  16.237 +#         tristate '  NetWinder WB83C977 watchdog' CONFIG_977_WATCHDOG
  16.238 +#      fi
  16.239 +#   fi
  16.240 +#   tristate '  Eurotech CPU-1220/1410 Watchdog Timer' CONFIG_EUROTECH_WDT
  16.241 +#   tristate '  IB700 SBC Watchdog Timer' CONFIG_IB700_WDT
  16.242 +#   tristate '  ICP ELectronics Wafer 5823 Watchdog' CONFIG_WAFER_WDT
  16.243 +#   if [ "$CONFIG_SGI_IP22" = "y" ]; then
  16.244 +#      dep_tristate '  Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
  16.245 +#   fi
  16.246 +#   tristate '  Intel i810 TCO timer / Watchdog' CONFIG_I810_TCO
  16.247 +#   tristate '  Mixcom Watchdog' CONFIG_MIXCOMWD 
  16.248 +#   tristate '  SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
  16.249 +#   dep_tristate '  SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
  16.250 +#   tristate '  NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
  16.251 +#   tristate '  Software Watchdog' CONFIG_SOFT_WATCHDOG
  16.252 +#   tristate '  W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
  16.253 +#   tristate '  WDT Watchdog timer' CONFIG_WDT
  16.254 +#   tristate '  WDT PCI Watchdog timer' CONFIG_WDTPCI
  16.255 +#   if [ "$CONFIG_WDT" != "n" ]; then
  16.256 +#      bool '    WDT501 features' CONFIG_WDT_501
  16.257 +#      if [ "$CONFIG_WDT_501" = "y" ]; then
  16.258 +#         bool '      Fan Tachometer' CONFIG_WDT_501_FAN
  16.259 +#      fi
  16.260 +#   fi
  16.261 +#   tristate '  ZF MachZ Watchdog' CONFIG_MACHZ_WDT
  16.262 +#   dep_tristate '  AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
  16.263 +#fi
  16.264 +#endmenu
  16.265 +#
  16.266 +#if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
  16.267 +#   tristate 'NetWinder thermometer support' CONFIG_DS1620
  16.268 +#   tristate 'NetWinder Button' CONFIG_NWBUTTON
  16.269 +#   if [ "$CONFIG_NWBUTTON" != "n" ]; then
  16.270 +#      bool '  Reboot Using Button' CONFIG_NWBUTTON_REBOOT
  16.271 +#   fi
  16.272 +#   tristate 'NetWinder flash support' CONFIG_NWFLASH
  16.273 +#fi
  16.274 +#dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
  16.275 +#
  16.276 +#if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then
  16.277 +#   dep_tristate 'AMD 768 Random Number Generator support' CONFIG_AMD_RNG $CONFIG_PCI
  16.278 +#fi
  16.279 +#if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" ]; then
  16.280 +#   dep_tristate 'Intel i8x0 Random Number Generator support' CONFIG_INTEL_RNG $CONFIG_PCI
  16.281 +#fi
  16.282 +#dep_tristate 'AMD 76x native power management (Experimental)' CONFIG_AMD_PM768 $CONFIG_PCI
  16.283 +#tristate '/dev/nvram support' CONFIG_NVRAM
  16.284 +#tristate 'Enhanced Real Time Clock Support' CONFIG_RTC
  16.285 +#if [ "$CONFIG_IA64" = "y" ]; then
  16.286 +#   bool 'EFI Real Time Clock Services' CONFIG_EFI_RTC
  16.287 +#fi
  16.288 +#if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
  16.289 +#   bool 'Tadpole ANA H8 Support (OBSOLETE)'  CONFIG_H8
  16.290 +#fi
  16.291 +#
  16.292 +#tristate 'Double Talk PC internal speech card support' CONFIG_DTLK
  16.293 +#tristate 'Siemens R3964 line discipline' CONFIG_R3964
  16.294 +#tristate 'Applicom intelligent fieldbus card support' CONFIG_APPLICOM
  16.295 +#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_X86" = "y" -a "$CONFIG_X86_64" != "y" ]; then
  16.296 +#   dep_tristate 'Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)' CONFIG_SONYPI $CONFIG_PCI
  16.297 +#fi
  16.298 +#
  16.299 +#mainmenu_option next_comment
  16.300 +#comment 'Ftape, the floppy tape device driver'
  16.301 +#tristate 'Ftape (QIC-80/Travan) support' CONFIG_FTAPE
  16.302 +#if [ "$CONFIG_FTAPE" != "n" ]; then
  16.303 +#   source drivers/char/ftape/Config.in
  16.304 +#fi
  16.305 +#endmenu
  16.306 +#
  16.307 +#if [ "$CONFIG_GART_IOMMU" = "y" ]; then
  16.308 +#	bool '/dev/agpgart (AGP Support)' CONFIG_AGP
  16.309 +#	define_bool CONFIG_AGP_AMD_8151 y
  16.310 +#else
  16.311 +#	tristate '/dev/agpgart (AGP Support)' CONFIG_AGP
  16.312 +#fi      
  16.313 +#if [ "$CONFIG_AGP" != "n" ]; then
  16.314 +#   bool '  Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support' CONFIG_AGP_INTEL
  16.315 +#   bool '  Intel I810/I815/I830M (on-board) support' CONFIG_AGP_I810
  16.316 +#   bool '  VIA chipset support' CONFIG_AGP_VIA
  16.317 +#   bool '  AMD Irongate, 761, and 762 support' CONFIG_AGP_AMD
  16.318 +#   if [ "$CONFIG_GART_IOMMU" != "y" ]; then
  16.319 +#      bool '  AMD 8151 support' CONFIG_AGP_AMD_8151
  16.320 +#   fi   
  16.321 +#   bool '  Generic SiS support' CONFIG_AGP_SIS
  16.322 +#   bool '  ALI chipset support' CONFIG_AGP_ALI
  16.323 +#   bool '  Serverworks LE/HE support' CONFIG_AGP_SWORKS
  16.324 +#   if [ "$CONFIG_IA64" = "y" ]; then
  16.325 +#      bool '  HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
  16.326 +#   fi
  16.327 +#fi
  16.328 +#
  16.329 +#bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM
  16.330 +#if [ "$CONFIG_DRM" = "y" ]; then
  16.331 +#   bool '  Build drivers for old (XFree 4.0) DRM' CONFIG_DRM_OLD
  16.332 +#   if [ "$CONFIG_DRM_OLD" = "y" ]; then
  16.333 +#      comment 'DRM 4.0 drivers'
  16.334 +#      source drivers/char/drm-4.0/Config.in
  16.335 +#   else
  16.336 +#      comment 'DRM 4.1 drivers'
  16.337 +#      define_bool CONFIG_DRM_NEW y
  16.338 +#      source drivers/char/drm/Config.in
  16.339 +#   fi
  16.340 +#fi
  16.341 +#
  16.342 +#if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
  16.343 +#   source drivers/char/pcmcia/Config.in
  16.344 +#fi
  16.345 +#if [ "$CONFIG_MIPS_AU1000" = "y" ]; then
  16.346 +#   tristate ' Alchemy Au1000 GPIO device support' CONFIG_AU1000_GPIO
  16.347 +#   tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1000_ADS7846
  16.348 +#fi
  16.349 +#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
  16.350 +#  tristate ' ITE GPIO' CONFIG_ITE_GPIO
  16.351 +#fi
  16.352 +#
  16.353 +#if [ "$CONFIG_X86" = "y" ]; then
  16.354 +#   tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
  16.355 +#fi
  16.356 +
  16.357 +
  16.358 +
  16.359 +
  16.360 +
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile	Mon Apr 28 13:06:57 2003 +0000
    17.3 @@ -0,0 +1,339 @@
    17.4 +#
    17.5 +# Makefile for the kernel character device drivers.
    17.6 +#
    17.7 +# Note! Dependencies are done automagically by 'make dep', which also
    17.8 +# removes any old dependencies. DON'T put your own dependencies here
    17.9 +# unless it's something special (ie not a .c file).
   17.10 +#
   17.11 +# XENO INFO - this is just copied from the linux one
   17.12 +# and most is irrelevant for xenolinux and can go.
   17.13 +# (see Config.in for the relevant bits)
   17.14 +# JWS - added dummy_console to test ps2 functionality
   17.15 +
   17.16 +
   17.17 +#
   17.18 +# This file contains the font map for the default (hardware) font
   17.19 +#
   17.20 +FONTMAPFILE = cp437.uni
   17.21 +
   17.22 +O_TARGET := char.o
   17.23 +
   17.24 +obj-y	 += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
   17.25 +
   17.26 +# All of the (potential) objects that export symbols.
   17.27 +# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
   17.28 +
   17.29 +export-objs     :=	busmouse.o console.o keyboard.o sysrq.o \
   17.30 +			misc.o pty.o random.o selection.o serial.o \
   17.31 +			sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
   17.32 +			au1000_gpio.o hp_psaux.o nvram.o dummy_console.o
   17.33 +
   17.34 +mod-subdirs	:=	joystick ftape drm drm-4.0 pcmcia
   17.35 +
   17.36 +list-multi	:=	
   17.37 +
   17.38 +KEYMAP   =defkeymap.o
   17.39 +KEYBD    =pc_keyb.o
   17.40 +CONSOLE  =console.o
   17.41 +SERIAL   =serial.o
   17.42 +
   17.43 +ifeq ($(ARCH),s390)
   17.44 +  KEYMAP   =
   17.45 +  KEYBD    =
   17.46 +  CONSOLE  =
   17.47 +  SERIAL   =
   17.48 +endif
   17.49 +
   17.50 +ifeq ($(ARCH),mips)
   17.51 +  ifneq ($(CONFIG_PC_KEYB),y)
   17.52 +    KEYBD    =
   17.53 +  endif
   17.54 +endif
   17.55 +
   17.56 +ifeq ($(ARCH),s390x)
   17.57 +  KEYMAP   =
   17.58 +  KEYBD    =
   17.59 +  CONSOLE  =
   17.60 +  SERIAL   =
   17.61 +endif
   17.62 +
   17.63 +ifeq ($(ARCH),m68k)
   17.64 +   ifdef CONFIG_AMIGA
   17.65 +      KEYBD = amikeyb.o
   17.66 +   else
   17.67 +      ifndef CONFIG_MAC
   17.68 +	 KEYBD =
   17.69 +      endif
   17.70 +   endif
   17.71 +   SERIAL   =
   17.72 +endif
   17.73 +
   17.74 +ifeq ($(ARCH),parisc)
   17.75 +   ifdef CONFIG_GSC_PS2
   17.76 +      KEYBD   = hp_psaux.o hp_keyb.o
   17.77 +   else
   17.78 +      KEYBD   =
   17.79 +   endif
   17.80 +   ifdef CONFIG_SERIAL_MUX
   17.81 +      CONSOLE += mux.o
   17.82 +   endif
   17.83 +   ifdef CONFIG_PDC_CONSOLE
   17.84 +      CONSOLE += pdc_console.o
   17.85 +   endif
   17.86 +endif
   17.87 +
   17.88 +ifdef CONFIG_Q40
   17.89 +  KEYBD += q40_keyb.o
   17.90 +  SERIAL = serial.o
   17.91 +endif
   17.92 +
   17.93 +ifdef CONFIG_APOLLO
   17.94 +  KEYBD += dn_keyb.o
   17.95 +endif
   17.96 +
   17.97 +ifeq ($(ARCH),parisc)
   17.98 +   ifdef CONFIG_GSC_PS2
   17.99 +      KEYBD   = hp_psaux.o hp_keyb.o
  17.100 +   else
  17.101 +      KEYBD   =
  17.102 +   endif
  17.103 +   ifdef CONFIG_PDC_CONSOLE
  17.104 +      CONSOLE += pdc_console.o
  17.105 +   endif
  17.106 +endif
  17.107 +
  17.108 +ifeq ($(ARCH),arm)
  17.109 +  ifneq ($(CONFIG_PC_KEYMAP),y)
  17.110 +    KEYMAP   =
  17.111 +  endif
  17.112 +  ifneq ($(CONFIG_PC_KEYB),y)
  17.113 +    KEYBD    =
  17.114 +  endif
  17.115 +endif
  17.116 +
  17.117 +ifeq ($(ARCH),sh)
  17.118 +  KEYMAP   =
  17.119 +  KEYBD    =
  17.120 +  CONSOLE  =
  17.121 +  ifeq ($(CONFIG_SH_HP600),y)
  17.122 +  KEYMAP   = defkeymap.o
  17.123 +  KEYBD    = scan_keyb.o hp600_keyb.o
  17.124 +  CONSOLE  = console.o
  17.125 +  endif
  17.126 +  ifeq ($(CONFIG_SH_DMIDA),y)
  17.127 +  # DMIDA does not connect the HD64465 PS/2 keyboard port
  17.128 +  # but we allow for USB keyboards to be plugged in.
  17.129 +  KEYMAP   = defkeymap.o
  17.130 +  KEYBD    = # hd64465_keyb.o pc_keyb.o
  17.131 +  CONSOLE  = console.o
  17.132 +  endif
  17.133 +  ifeq ($(CONFIG_SH_EC3104),y)
  17.134 +  KEYMAP   = defkeymap.o
  17.135 +  KEYBD    = ec3104_keyb.o
  17.136 +  CONSOLE  = console.o
  17.137 +  endif
  17.138 +  ifeq ($(CONFIG_SH_DREAMCAST),y)
  17.139 +  KEYMAP   = defkeymap.o
  17.140 +  KEYBD    =
  17.141 +  CONSOLE  = console.o
  17.142 +  endif
  17.143 +endif
  17.144 +
  17.145 +ifeq ($(CONFIG_DECSTATION),y)
  17.146 +  KEYMAP   =
  17.147 +  KEYBD    =
  17.148 +  SERIAL   = decserial.o
  17.149 +endif
  17.150 +
  17.151 +ifeq ($(CONFIG_BAGET_MIPS),y)
  17.152 +  KEYBD    =
  17.153 +  SERIAL   =
  17.154 +endif
  17.155 +
  17.156 +ifeq ($(CONFIG_NINO),y)
  17.157 +  SERIAL   =
  17.158 +endif
  17.159 +
  17.160 +ifneq ($(CONFIG_SUN_SERIAL),)
  17.161 +  SERIAL   =
  17.162 +endif
  17.163 +
  17.164 +ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
  17.165 +  KEYBD    = qtronix.o
  17.166 +  KEYMAP   = qtronixmap.o
  17.167 +endif
  17.168 +
  17.169 +ifeq ($(CONFIG_DUMMY_KEYB),y)
  17.170 +  KEYBD = dummy_keyb.o
  17.171 +endif
  17.172 +
  17.173 +obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
  17.174 +
  17.175 +ifeq ($(CONFIG_VT),)
  17.176 +  obj-$(CONFIG_DUMMY_CONSOLE) += $(KEYBD) dummy_console.o
  17.177 +endif
  17.178 +
  17.179 +obj-$(CONFIG_SERIAL) += $(SERIAL)
  17.180 +obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
  17.181 +obj-$(CONFIG_SERIAL_21285) += serial_21285.o
  17.182 +obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
  17.183 +obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
  17.184 +obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o
  17.185 +
  17.186 +ifndef CONFIG_SUN_KEYBOARD
  17.187 +  obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
  17.188 +else
  17.189 +  obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
  17.190 +endif
  17.191 +
  17.192 +obj-$(CONFIG_HIL) += hp_keyb.o
  17.193 +obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
  17.194 +obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
  17.195 +obj-$(CONFIG_ROCKETPORT) += rocket.o
  17.196 +obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
  17.197 +obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
  17.198 +obj-$(CONFIG_DIGI) += pcxx.o
  17.199 +obj-$(CONFIG_DIGIEPCA) += epca.o
  17.200 +obj-$(CONFIG_CYCLADES) += cyclades.o
  17.201 +obj-$(CONFIG_STALLION) += stallion.o
  17.202 +obj-$(CONFIG_ISTALLION) += istallion.o
  17.203 +obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
  17.204 +obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
  17.205 +obj-$(CONFIG_RISCOM8) += riscom8.o
  17.206 +obj-$(CONFIG_ISI) += isicom.o
  17.207 +obj-$(CONFIG_ESPSERIAL) += esp.o
  17.208 +obj-$(CONFIG_SYNCLINK) += synclink.o
  17.209 +obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
  17.210 +obj-$(CONFIG_N_HDLC) += n_hdlc.o
  17.211 +obj-$(CONFIG_SPECIALIX) += specialix.o
  17.212 +obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
  17.213 +obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
  17.214 +obj-$(CONFIG_SX) += sx.o generic_serial.o
  17.215 +obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
  17.216 +obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
  17.217 +obj-$(CONFIG_SERIAL167) += serial167.o
  17.218 +obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
  17.219 +obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
  17.220 +obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
  17.221 +obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
  17.222 +obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
  17.223 +obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
  17.224 +
  17.225 +subdir-$(CONFIG_RIO) += rio
  17.226 +subdir-$(CONFIG_INPUT) += joystick
  17.227 +
  17.228 +obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
  17.229 +obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
  17.230 +obj-$(CONFIG_PRINTER) += lp.o
  17.231 +obj-$(CONFIG_TIPAR) += tipar.o
  17.232 +
  17.233 +ifeq ($(CONFIG_INPUT),y)
  17.234 +obj-y += joystick/js.o
  17.235 +endif
  17.236 +
  17.237 +obj-$(CONFIG_BUSMOUSE) += busmouse.o
  17.238 +obj-$(CONFIG_DTLK) += dtlk.o
  17.239 +obj-$(CONFIG_R3964) += n_r3964.o
  17.240 +obj-$(CONFIG_APPLICOM) += applicom.o
  17.241 +obj-$(CONFIG_SONYPI) += sonypi.o
  17.242 +obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
  17.243 +obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
  17.244 +obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
  17.245 +obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
  17.246 +obj-$(CONFIG_ADBMOUSE) += adbmouse.o
  17.247 +obj-$(CONFIG_PC110_PAD) += pc110pad.o
  17.248 +obj-$(CONFIG_MK712_MOUSE) += mk712.o
  17.249 +obj-$(CONFIG_RTC) += rtc.o
  17.250 +obj-$(CONFIG_EFI_RTC) += efirtc.o
  17.251 +ifeq ($(CONFIG_PPC),)
  17.252 +  obj-$(CONFIG_NVRAM) += nvram.o
  17.253 +endif
  17.254 +obj-$(CONFIG_TOSHIBA) += toshiba.o
  17.255 +obj-$(CONFIG_I8K) += i8k.o
  17.256 +obj-$(CONFIG_DS1620) += ds1620.o
  17.257 +obj-$(CONFIG_INTEL_RNG) += i810_rng.o
  17.258 +obj-$(CONFIG_AMD_RNG) += amd768_rng.o
  17.259 +obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
  17.260 +
  17.261 +obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
  17.262 +obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
  17.263 +obj-$(CONFIG_COBALT_LCD) += lcd.o
  17.264 +
  17.265 +obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
  17.266 +
  17.267 +subdir-$(CONFIG_FTAPE) += ftape
  17.268 +subdir-$(CONFIG_DRM_OLD) += drm-4.0
  17.269 +subdir-$(CONFIG_DRM_NEW) += drm
  17.270 +subdir-$(CONFIG_PCMCIA) += pcmcia
  17.271 +subdir-$(CONFIG_AGP) += agp
  17.272 +
  17.273 +ifeq ($(CONFIG_FTAPE),y)
  17.274 +obj-y       += ftape/ftape.o
  17.275 +endif
  17.276 +
  17.277 +obj-$(CONFIG_H8) += h8.o
  17.278 +obj-$(CONFIG_PPDEV) += ppdev.o
  17.279 +obj-$(CONFIG_DZ) += dz.o
  17.280 +obj-$(CONFIG_NWBUTTON) += nwbutton.o
  17.281 +obj-$(CONFIG_NWFLASH) += nwflash.o
  17.282 +obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
  17.283 +
  17.284 +# Only one watchdog can succeed. We probe the hardware watchdog
  17.285 +# drivers first, then the softdog driver.  This means if your hardware
  17.286 +# watchdog dies or is 'borrowed' for some reason the software watchdog
  17.287 +# still gives you some cover.
  17.288 +
  17.289 +obj-$(CONFIG_PCWATCHDOG) += pcwd.o
  17.290 +obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
  17.291 +obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
  17.292 +obj-$(CONFIG_IB700_WDT) += ib700wdt.o
  17.293 +obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
  17.294 +obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
  17.295 +obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
  17.296 +obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
  17.297 +obj-$(CONFIG_WDT) += wdt.o
  17.298 +obj-$(CONFIG_WDTPCI) += wdt_pci.o
  17.299 +obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
  17.300 +obj-$(CONFIG_977_WATCHDOG) += wdt977.o
  17.301 +obj-$(CONFIG_I810_TCO) += i810-tco.o
  17.302 +obj-$(CONFIG_MACHZ_WDT) += machzwd.o
  17.303 +obj-$(CONFIG_SH_WDT) += shwdt.o
  17.304 +obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
  17.305 +obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
  17.306 +#obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
  17.307 +obj-$(CONFIG_INDYDOG) += indydog.o
  17.308 +obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
  17.309 +obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
  17.310 +obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
  17.311 +obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
  17.312 +obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
  17.313 +
  17.314 +subdir-$(CONFIG_MWAVE) += mwave
  17.315 +ifeq ($(CONFIG_MWAVE),y)
  17.316 +  obj-y += mwave/mwave.o
  17.317 +endif
  17.318 +
  17.319 +subdir-$(CONFIG_IPMI_HANDLER) += ipmi
  17.320 +ifeq ($(CONFIG_IPMI_HANDLER),y)
  17.321 +  obj-y += ipmi/ipmi.o
  17.322 +endif
  17.323 +
  17.324 +include $(TOPDIR)/Rules.make
  17.325 +
  17.326 +fastdep:
  17.327 +
  17.328 +conmakehash: conmakehash.c
  17.329 +	$(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
  17.330 +
  17.331 +consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
  17.332 +	./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
  17.333 +
  17.334 +consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
  17.335 +
  17.336 +.DELETE_ON_ERROR:
  17.337 +
  17.338 +defkeymap.c: defkeymap.map
  17.339 +	set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
  17.340 +
  17.341 +qtronixmap.c: qtronixmap.map
  17.342 +	set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c	Mon Apr 28 13:06:57 2003 +0000
    18.3 @@ -0,0 +1,37 @@
    18.4 +// This file is unashamed hackery to allow keyboard support without console/vt support.  
    18.5 +// It could be made more useful by linking sysrq in somehow..
    18.6 +// But right now its just for testing keyboard functionality in Xen while console functionality is not yet implemented.
    18.7 +
    18.8 +#include <linux/config.h>
    18.9 +#include <linux/module.h>
   18.10 +#include <linux/sched.h>
   18.11 +#include <linux/tty.h>
   18.12 +#include <linux/tty_flip.h>
   18.13 +#include <linux/mm.h>
   18.14 +#include <linux/string.h>
   18.15 +#include <linux/random.h>
   18.16 +#include <linux/init.h>
   18.17 +
   18.18 +#include <asm/keyboard.h>
   18.19 +#include <asm/bitops.h>
   18.20 +
   18.21 +#include <linux/kbd_kern.h>
   18.22 +#include <linux/kbd_diacr.h>
   18.23 +#include <linux/vt_kern.h>
   18.24 +#include <linux/kbd_ll.h>
   18.25 +#include <linux/sysrq.h>
   18.26 +#include <linux/pm.h>
   18.27 +
   18.28 +
   18.29 +static void kbd_bh(unsigned long dummy)
   18.30 +{
   18.31 +}
   18.32 +
   18.33 +EXPORT_SYMBOL(keyboard_tasklet);
   18.34 +DECLARE_TASKLET_DISABLED(keyboard_tasklet, kbd_bh, 0);
   18.35 +
   18.36 +int (*kbd_rate)(struct kbd_repeat *rep);
   18.37 +
   18.38 +int __init kbd_init(void) {
   18.39 +  kbd_init_hw();
   18.40 +}
    19.1 --- a/xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c	Mon Apr 28 12:58:45 2003 +0000
    19.2 +++ b/xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c	Mon Apr 28 13:06:57 2003 +0000
    19.3 @@ -2358,6 +2358,11 @@ void __init tty_init(void)
    19.4  		panic("Couldn't register /dev/tty0 driver\n");
    19.5  
    19.6  	kbd_init();
    19.7 +#else
    19.8 +	// the below is a dodgy hack to allow keyboard/mouse support without the console support, along with the file "dummy_console.c"
    19.9 +#ifdef CONFIG_DUMMY_CONSOLE
   19.10 +	kbd_init();
   19.11 +#endif
   19.12  #endif
   19.13  
   19.14  #ifdef CONFIG_ESPSERIAL  /* init ESP before rs, so rs doesn't see the port */
    20.1 --- a/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h	Mon Apr 28 12:58:45 2003 +0000
    20.2 +++ b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h	Mon Apr 28 13:06:57 2003 +0000
    20.3 @@ -353,4 +353,16 @@ static inline int HYPERVISOR_multicall(v
    20.4      return ret;
    20.5  }
    20.6  
    20.7 +
    20.8 +static inline long HYPERVISOR_kbd_op(unsigned char op, unsigned char val)
    20.9 +{
   20.10 +    int ret;
   20.11 +    __asm__ __volatile__ (
   20.12 +        TRAP_INSTR
   20.13 +        : "=a" (ret) : "0" (__HYPERVISOR_kbd_op),
   20.14 +        "b" (op), "c" (val) );
   20.15 +
   20.16 +    return ret;
   20.17 +}
   20.18 +
   20.19  #endif /* __HYPERVISOR_H__ */
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/xenolinux-2.4.21-pre4-sparse/include/asm-xeno/keyboard.h	Mon Apr 28 13:06:57 2003 +0000
    21.3 @@ -0,0 +1,95 @@
    21.4 +/* xenolinux/include/asm-xeno/keyboard.h */
    21.5 +/* Portions copyright (c) 2003 James Scott, Intel Research Cambridge */
    21.6 +/* Talks to hypervisor to get PS/2 keyboard and mouse events, and send keyboard and mouse commands */
    21.7 +
    21.8 +/*  Based on:
    21.9 + *  linux/include/asm-i386/keyboard.h
   21.10 + *
   21.11 + *  Created 3 Nov 1996 by Geert Uytterhoeven
   21.12 + */
   21.13 +
   21.14 +#ifndef _XENO_KEYBOARD_H
   21.15 +#define _XENO_KEYBOARD_H
   21.16 +
   21.17 +#ifdef __KERNEL__
   21.18 +
   21.19 +#include <linux/kernel.h>
   21.20 +#include <linux/ioport.h>
   21.21 +#include <linux/kd.h>
   21.22 +#include <linux/pm.h>
   21.23 +#include <asm/io.h>
   21.24 +
   21.25 +
   21.26 +#define KEYBOARD_IRQ _EVENT_KBD
   21.27 +#define AUX_IRQ _EVENT_KBD
   21.28 +
   21.29 +/* THIS SECTION RELATIVELY UNTOUCHED */
   21.30 +
   21.31 +extern int pckbd_setkeycode(unsigned int scancode, unsigned int keycode);
   21.32 +extern int pckbd_getkeycode(unsigned int scancode);
   21.33 +extern int pckbd_translate(unsigned char scancode, unsigned char *keycode,
   21.34 +			   char raw_mode);
   21.35 +extern char pckbd_unexpected_up(unsigned char keycode);
   21.36 +extern void pckbd_leds(unsigned char leds);
   21.37 +extern void pckbd_init_hw(void);
   21.38 +extern int pckbd_pm_resume(struct pm_dev *, pm_request_t, void *);
   21.39 +
   21.40 +extern pm_callback pm_kbd_request_override;
   21.41 +extern unsigned char pckbd_sysrq_xlate[128];
   21.42 +
   21.43 +#define kbd_setkeycode		pckbd_setkeycode
   21.44 +#define kbd_getkeycode		pckbd_getkeycode
   21.45 +#define kbd_translate		pckbd_translate
   21.46 +#define kbd_unexpected_up	pckbd_unexpected_up
   21.47 +#define kbd_leds		pckbd_leds
   21.48 +#define kbd_init_hw		pckbd_init_hw
   21.49 +#define kbd_sysrq_xlate		pckbd_sysrq_xlate
   21.50 +
   21.51 +#define SYSRQ_KEY 0x54
   21.52 +
   21.53 +
   21.54 +/* THIS SECTION TALKS TO XEN TO DO PS2 SUPPORT */
   21.55 +#include <asm/hypervisor-ifs/kbd.h>
   21.56 +#include <asm/hypervisor-ifs/hypervisor-if.h>
   21.57 +
   21.58 +/* resource allocation */
   21.59 +#define kbd_request_region() do { } while (0)
   21.60 +#define kbd_request_irq(handler) request_irq(_EVENT_KBD, handler, 0, "PS/2 kbd", NULL)
   21.61 +
   21.62 +// could implement these with command to xen to filter mouse stuff...
   21.63 +#define aux_request_irq(hand, dev_id) 0
   21.64 +#define aux_free_irq(dev_id) do { } while(0)
   21.65 +
   21.66 +/* Some stoneage hardware needs delays after some operations.  */
   21.67 +#define kbd_pause() do { } while(0)
   21.68 +
   21.69 +
   21.70 +static unsigned char kbd_current_scancode = 0;
   21.71 +
   21.72 +static unsigned char kbd_read_input(void) 
   21.73 +{
   21.74 +  //printk("kbd_read_input: returning scancode 0x%2x\n", kbd_current_scancode);
   21.75 +  return kbd_current_scancode;
   21.76 +}
   21.77 +
   21.78 +static unsigned char kbd_read_status(void) 
   21.79 +{
   21.80 +  long res;
   21.81 +  res = HYPERVISOR_kbd_op(KBD_OP_READ,0);
   21.82 +  if(res<0) {
   21.83 +    //printk("kbd_read_status: error from hypervisor: %d", res);
   21.84 +    kbd_current_scancode = 0;
   21.85 +    return 0; // error with our request - wrong domain?
   21.86 +  }
   21.87 +  kbd_current_scancode = KBD_CODE_SCANCODE(res);
   21.88 +  //printk("kbd_read_status: returning status 0x%2x\n", KBD_CODE_STATUS(res));
   21.89 +  return KBD_CODE_STATUS(res);
   21.90 +}
   21.91 +
   21.92 +
   21.93 +#define kbd_write_output(val)  HYPERVISOR_kbd_op(KBD_OP_WRITEOUTPUT, val);
   21.94 +#define kbd_write_command(val) HYPERVISOR_kbd_op(KBD_OP_WRITECOMMAND, val);
   21.95 +
   21.96 +
   21.97 +#endif /* __KERNEL__ */
   21.98 +#endif /* _XENO_KEYBOARD_H */
    22.1 --- a/xenolinux-2.4.21-pre4-sparse/include/linux/major.h	Mon Apr 28 12:58:45 2003 +0000
    22.2 +++ b/xenolinux-2.4.21-pre4-sparse/include/linux/major.h	Mon Apr 28 13:06:57 2003 +0000
    22.3 @@ -146,15 +146,10 @@
    22.4  #define	UMEM_MAJOR	116	/* http://www.umem.com/ Battery Backed RAM */
    22.5  
    22.6  /*
    22.7 - * XLIDE/XLSCSI each support up to 8 devices of <= 32 partitions each.
    22.8   * XLVIRT supports 16 devices of <= 16 partitions each.
    22.9 - * eg. xhda == (123, 0), xhdb == (123, 32), ...
   22.10 - *     xsda == (124, 0), xsdb == (124, 32), ...
   22.11 - *     xvda == (125, 0), xvdb == (125, 16), ...
   22.12 + * eg. xvda == (125, 0), xvdb == (125, 16), ...
   22.13   */
   22.14 -#define XLIDE_MAJOR	123	/* XenoLinux IDE Device */
   22.15 -#define XLSCSI_MAJOR	124	/* XenoLinux SCSI Device */
   22.16 -#define XLVIRT_MAJOR    125     /* XenoLinux Virtual Device */
   22.17 +#define XLVIRT_MAJOR    125
   22.18  
   22.19  #define RTF_MAJOR	150
   22.20  #define RAW_MAJOR	162
    23.1 --- a/xenolinux-2.4.21-pre4-sparse/init/do_mounts.c	Mon Apr 28 12:58:45 2003 +0000
    23.2 +++ b/xenolinux-2.4.21-pre4-sparse/init/do_mounts.c	Mon Apr 28 13:06:57 2003 +0000
    23.3 @@ -231,17 +231,6 @@ static struct dev_name_struct {
    23.4  	{ "ataraid/d14p",0x72E0 },
    23.5  	{ "ataraid/d15p",0x72F0 },
    23.6  #if defined(CONFIG_XENOLINUX_BLOCK)
    23.7 -        /* XenoLinux IDE Devices */
    23.8 -        { "xhda", 0x7B00 }, { "xhdb", 0x7B20 },
    23.9 -        { "xhdc", 0x7B40 }, { "xhdd", 0x7B60 },
   23.10 -        { "xhde", 0x7B80 }, { "xhdf", 0x7BA0 },
   23.11 -        { "xhdg", 0x7BC0 }, { "xhdh", 0x7BE0 },
   23.12 -        /* Xenolinux SCSI Devices */
   23.13 -        { "xsda", 0x7C00 }, { "xsdb", 0x7C20 },
   23.14 -        { "xsdc", 0x7C40 }, { "xsdd", 0x7C60 },
   23.15 -        { "xsde", 0x7C80 }, { "xsdf", 0x7CA0 },
   23.16 -        { "xsdg", 0x7CC0 }, { "xsdh", 0x7CE0 },
   23.17 -        /* XenoLinux Virtual Devices */
   23.18          { "xvda", 0x7D00 }, { "xvdb", 0x7D10 },
   23.19          { "xvdc", 0x7D20 }, { "xvdd", 0x7D30 },
   23.20          { "xvde", 0x7D40 }, { "xvdf", 0x7D50 },
    24.1 --- a/xenolinux-2.4.21-pre4-sparse/mkbuildtree	Mon Apr 28 12:58:45 2003 +0000
    24.2 +++ b/xenolinux-2.4.21-pre4-sparse/mkbuildtree	Mon Apr 28 13:06:57 2003 +0000
    24.3 @@ -56,7 +56,6 @@ ln -sf ../asm-i386/ioctl.h
    24.4  ln -sf ../asm-i386/ioctls.h
    24.5  ln -sf ../asm-i386/ipcbuf.h
    24.6  ln -sf ../asm-i386/ipc.h 
    24.7 -ln -sf ../asm-i386/keyboard.h
    24.8  ln -sf ../asm-i386/kmap_types.h
    24.9  ln -sf ../asm-i386/ldt.h 
   24.10  ln -sf ../asm-i386/linux_logo.h