Changeset 5

Show
Ignore:
Timestamp:
09/17/05 18:16:38 (6 years ago)
Author:
dkaplan1
Message:

Added flag parameter to vmalloc for allocating for ring 1/2. Note that
anything that calls
vmalloc needs to be rewritten or it won't compile. But
rarely anything does/should.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • arch/i386/kernel/head.S

    r1 r5  
    489489        .quad 0x0040920000000000        /* 0xc8 APM DS    data */ 
    490490 
    491         .quad 0x0000000000000000       /* 0xd0 - unused */ 
    492         .quad 0x0000000000000000       /* 0xd8 - unused */ 
    493         .quad 0x0000000000000000       /* 0xe0 - unused */ 
    494         .quad 0x0000000000000000       /* 0xe8 - unused */ 
     491        .quad 0x00ccba0000000000       /* 0xd0 - Ring 1 CS */ 
     492        .quad 0x00ccb20000000000       /* 0xd8 - Ring 1 DS */ 
     493        .quad 0x00cada0000000000       /* 0xe0 - Ring 2 CS */ 
     494        .quad 0x00cad20000000000       /* 0xe8 - Ring 2 DS */ 
    495495        .quad 0x0000000000000000        /* 0xf0 - unused */ 
    496496        .quad 0x0000000000000000        /* 0xf8 - GDT entry 31: double-fault TSS */ 
  • .config

    r4 r5  
    4242# 
    4343CONFIG_MODULES=y 
    44 # CONFIG_MODULE_UNLOAD is not set 
     44CONFIG_MODULE_UNLOAD=y 
     45# CONFIG_MODULE_FORCE_UNLOAD is not set 
    4546CONFIG_OBSOLETE_MODPARM=y 
    4647# CONFIG_MODVERSIONS is not set 
  • crypto/deflate.c

    r1 r5  
    7777        stream->workspace = __vmalloc(zlib_deflate_workspacesize(), 
    7878                                      deflate_gfp()|__GFP_HIGHMEM, 
    79                                       PAGE_KERNEL); 
     79                                      PAGE_KERNEL,0); 
    8080        if (!stream->workspace ) { 
    8181                ret = -ENOMEM; 
  • fs/xfs/linux-2.6/kmem.h

    r1 r5  
    114114        if (unlikely(MAX_SLAB_SIZE < size)) 
    115115                /* Avoid doing filesystem sensitive stuff to get this */ 
    116                 return __vmalloc(size, kmem_flags_convert(flags), PAGE_KERNEL); 
     116                return __vmalloc(size, kmem_flags_convert(flags), PAGE_KERNEL, 0); 
    117117        return kmalloc(size, kmem_flags_convert(flags)); 
    118118} 
  • include/asm-i386/pgtable.h

    r1 r5  
    8686#define VMALLOC_START   (((unsigned long) high_memory + 2*VMALLOC_OFFSET-1) & \ 
    8787                                                ~(VMALLOC_OFFSET-1)) 
     88 
     89#define VMALLOC_START_RING1 0xA0000000 
     90#define VMALLOC_END_RING1   0xC0000000 
     91 
     92#define VMALLOC_START_RING2 0x80000000 
     93#define VMALLOC_END_RING2   0xA0000000 
     94 
     95 
    8896#ifdef CONFIG_HIGHMEM 
    8997# define VMALLOC_END    (PKMAP_BASE-2*PAGE_SIZE) 
  • include/asm-i386/segment.h

    r1 r5  
    3939 *  25 - APM BIOS support  
    4040 * 
    41  *  26 - unused 
    42  *  27 - unused 
    43  *  28 - unused 
    44  *  29 - unused 
     41 *  26 - *NEW* ring 1 driver code segment 
     42 *  27 - *NEW* ring 1 driver data segment 
     43 *  28 - *NEW* ring 2 driver code segment 
     44 *  29 - *NEW* ring 2 driver data segment 
    4545 *  30 - unused 
    4646 *  31 - TSS for double fault handler 
     
    6565#define GDT_ENTRY_KERNEL_DS             (GDT_ENTRY_KERNEL_BASE + 1) 
    6666#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8) 
     67 
     68#define GDT_ENTRY_DRIVER_BASE 26 
     69 
     70#define GDT_ENTRY_RING1_CS (GDT_ENTRY_DRIVER_BASE + 0) 
     71#define __RING1_CS (GDT_ENTRY_RING1_CS * 8) 
     72 
     73#define GDT_ENTRY_RING1_DS (GDT_ENTRY_DRIVER_BASE + 1) 
     74#define __RING1_DS (GDT_ENTRY_RING1_DS * 8) 
     75 
     76#define GDT_ENTRY_RING2_CS (GDT_ENTRY_DRIVER_BASE + 2) 
     77#define __RING2_CS (GDT_ENTRY_RING2_CS * 8) 
     78 
     79#define GDT_ENTRY_RING2_DS (GDT_ENTRY_DRIVER_BASE + 3) 
     80#define __RING2_DS (GDT_ENTRY_RING2_DS * 8) 
    6781 
    6882#define GDT_ENTRY_TSS                   (GDT_ENTRY_KERNEL_BASE + 4) 
  • include/config/module/unload.h

    r1 r5  
    1 #undef CONFIG_MODULE_UNLOAD 
     1#define CONFIG_MODULE_UNLOAD 1 
  • include/linux/autoconf.h

    r4 r5  
    4343 */ 
    4444#define CONFIG_MODULES 1 
    45 #undef CONFIG_MODULE_UNLOAD 
     45#define CONFIG_MODULE_UNLOAD 1 
     46#undef CONFIG_MODULE_FORCE_UNLOAD 
    4647#define CONFIG_OBSOLETE_MODPARM 1 
    4748#undef CONFIG_MODVERSIONS 
  • include/linux/mm.h

    r1 r5  
    136136#define VM_NONLINEAR    0x00800000      /* Is non-linear (remap_file_pages) */ 
    137137 
     138// NEW FLAGS FOR vmalloc() 
     139#define VMALLOC_RING1  0x01000000    //request va between 2.5GB-3GB 
     140#define VMALLOC_RING2  0x02000000    //request va between 2GB-2.5GB 
     141 
    138142#ifndef VM_STACK_DEFAULT_FLAGS          /* arch can override this */ 
    139143#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS 
     
    151155#define VM_SequentialReadHint(v)        ((v)->vm_flags & VM_SEQ_READ) 
    152156#define VM_RandomReadHint(v)            ((v)->vm_flags & VM_RAND_READ) 
     157 
    153158 
    154159/* 
  • include/linux/vmalloc.h

    r1 r5  
    2525extern void *vmalloc(unsigned long size); 
    2626extern void *vmalloc_32(unsigned long size); 
    27 extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot); 
     27extern void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot, unsigned long flags); 
    2828extern void vfree(void *addr); 
    2929 
  • mm/vmalloc.c

    r1 r5  
    245245struct vm_struct *get_vm_area(unsigned long size, unsigned long flags) 
    246246{ 
    247         return __get_vm_area(size, flags, VMALLOC_START, VMALLOC_END); 
     247    if (flags & VMALLOC_RING1) 
     248        return __get_vm_area(size, flags, VMALLOC_START_RING1, VMALLOC_END_RING1); 
     249    else if (flags & VMALLOC_RING2) 
     250        return __get_vm_area(size, flags, VMALLOC_START_RING2, VMALLOC_END_RING2); 
     251    else 
     252        return __get_vm_area(size, flags, VMALLOC_START, VMALLOC_END); 
    248253} 
    249254 
     
    380385 
    381386EXPORT_SYMBOL(vmap); 
    382  
    383 /** 
     387/* 
    384388 *      __vmalloc  -  allocate virtually contiguous memory 
    385389 * 
     
    392396 *      kernel virtual space, using a pagetable protection of @prot. 
    393397 */ 
    394 void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot
     398void *__vmalloc(unsigned long size, int gfp_mask, pgprot_t prot, unsigned long flags
    395399{ 
    396400        struct vm_struct *area; 
     
    402406                return NULL; 
    403407 
    404         area = get_vm_area(size, VM_ALLOC); 
     408        area = get_vm_area(size, VM_ALLOC | flags); 
    405409        if (!area) 
    406410                return NULL; 
     
    451455void *vmalloc(unsigned long size) 
    452456{ 
    453        return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL); 
    454 
     457       return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL, 0); 
     458
     459 
    455460 
    456461EXPORT_SYMBOL(vmalloc); 
     
    466471void *vmalloc_32(unsigned long size) 
    467472{ 
    468         return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); 
     473        return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL, 0); 
    469474} 
    470475 
  • Module.symvers

    r4 r5  
    1711710x00000000      elv_remove_request      vmlinux 
    1721720x00000000      rpc_unlink      net/sunrpc/sunrpc 
     1730x00000000      module_refcount vmlinux 
    1731740x00000000      console_unblank vmlinux 
    1741750x00000000      SELECT_DRIVE    vmlinux 
     
    162816290x00000000      xprt_udp_slot_table_entries     net/sunrpc/sunrpc 
    162916300x00000000      tcp_protocol    vmlinux 
     16310x00000000      symbol_put_addr vmlinux 
    163016320x00000000      i2c_smbus_read_word_data        drivers/i2c/i2c-core 
    163116330x00000000      usb_buffer_unmap        vmlinux 
     
    186518670x00000000      log_wait_commit vmlinux 
    186618680x00000000      blkdev_open     vmlinux 
     18690x00000000      __symbol_put    vmlinux 
    186718700x00000000      get_zeroed_page vmlinux 
    186818710x00000000      input_close_device      vmlinux 
  • .version

    r4 r5  
    1 10 
     112