diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-08-08 18:02:00 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-08-08 18:02:00 +0000 |
commit | 02f8110d6a247d53b489b29eec8a35c85e713c6b (patch) | |
tree | 9cb65032a35c2d1af581deaac73dfa2540b2fbdd /drivers/char | |
parent | b62a3d8e8a9d02ff6f9103358b7a9c2c3d56c653 (diff) |
Merge with Linux 2.4.0-test6-pre2.
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/drm/Config.in | 2 | ||||
-rw-r--r-- | drivers/char/drm/Makefile | 99 | ||||
-rw-r--r-- | drivers/char/drm/drmP.h | 6 | ||||
-rw-r--r-- | drivers/char/drm/gamma_drv.c | 16 | ||||
-rw-r--r-- | drivers/char/drm/i810_context.c | 2 | ||||
-rw-r--r-- | drivers/char/drm/i810_dma.c | 15 | ||||
-rw-r--r-- | drivers/char/drm/i810_drv.c | 19 | ||||
-rw-r--r-- | drivers/char/drm/mga_context.c | 2 | ||||
-rw-r--r-- | drivers/char/drm/mga_drv.c | 19 | ||||
-rw-r--r-- | drivers/char/drm/r128_context.c | 6 | ||||
-rw-r--r-- | drivers/char/drm/r128_drv.c | 23 | ||||
-rw-r--r-- | drivers/char/drm/tdfx_context.c | 2 | ||||
-rw-r--r-- | drivers/char/drm/tdfx_drv.c | 12 | ||||
-rw-r--r-- | drivers/char/drm/vm.c | 10 | ||||
-rw-r--r-- | drivers/char/keyboard.c | 3 | ||||
-rw-r--r-- | drivers/char/sysrq.c | 6 |
16 files changed, 136 insertions, 106 deletions
diff --git a/drivers/char/drm/Config.in b/drivers/char/drm/Config.in index c2e91ef83..d24d65970 100644 --- a/drivers/char/drm/Config.in +++ b/drivers/char/drm/Config.in @@ -6,7 +6,7 @@ # tristate 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM -if [ "$CONFIG_DRM" = "y" ]; then +if [ "$CONFIG_DRM" != "n" ]; then tristate ' 3dfx Banshee/Voodoo3+' CONFIG_DRM_TDFX tristate ' 3dlabs GMX 2000' CONFIG_DRM_GAMMA tristate ' ATI Rage 128' CONFIG_DRM_R128 diff --git a/drivers/char/drm/Makefile b/drivers/char/drm/Makefile index 5ae783f3e..b1b8d9768 100644 --- a/drivers/char/drm/Makefile +++ b/drivers/char/drm/Makefile @@ -3,58 +3,69 @@ # the Direct Rendering Infrastructure (DRI) in XFree86 4.x. # -O_TARGET = drm.o - -export-objs = drm_syms.o -list-multi = drm.o gamma.o tdfx.o r128.o ffb.o mga.o i810.o -drm-objs = init.o memory.o proc.o auth.o context.o \ - drawable.o bufs.o lists.o lock.o ioctl.o \ - fops.o vm.o dma.o ctxbitmap.o drm_syms.o -gamma-objs = gamma_drv.o gamma_dma.o -tdfx-objs = tdfx_drv.o tdfx_context.o -r128-objs = r128_drv.o r128_context.o r128_dma.o r128_bufs.o -ffb-objs = ffb_drv.o ffb_context.o -mga-objs = mga_drv.o mga_context.o mga_dma.o mga_bufs.o mga_state.o -i810-objs = i810_drv.o i810_context.o i810_dma.o i810_bufs.o - -ifeq ($(CONFIG_AGP), y) - drm-objs += agpsupport.o +# drm.o is a fake target -- it is never built +# The real targets are in the module-list +O_TARGET := drm.o +module-list := gamma.o tdfx.o r128.o ffb.o mga.o i810.o +export-objs := $(patsubst %.o,%_drv.o,$(module-list)) + +# libs-objs are included in every module so that radical changes to the +# architecture of the DRM support library can be made at a later time. +# +# The downside is that each module is larger, and a system that uses +# more than one module (i.e., a dual-head system) will use more memory +# (but a system that uses exactly one module will use the same amount of +# memory). +# +# The upside is that if the DRM support library ever becomes insufficient +# for new families of cards, a new library can be implemented for those new +# cards without impacting the drivers for the old cards. This is significant, +# because testing architectural changes to old cards may be impossible, and +# may delay the implementation of a better architecture. We've traded slight +# memory waste (in the dual-head case) for greatly improved long-term +# maintainability. +# +lib-objs := init.o memory.o proc.o auth.o context.o drawable.o bufs.o +lib-objs += lists.o lock.o ioctl.o fops.o vm.o dma.o ctxbitmap.o + +ifeq ($(CONFIG_AGP),y) + lib-objs += agpsupport.o else - ifeq ($(CONFIG_AGP), m) - drm-objs += agpsupport.o + ifeq ($(CONFIG_AGP),m) + lib-objs += agpsupport.o endif endif -obj-$(CONFIG_DRM) += drm.o -obj-$(CONFIG_DRM_GAMMA) += gamma.o -obj-$(CONFIG_DRM_TDFX) += tdfx.o -obj-$(CONFIG_DRM_R128) += r128.o -obj-$(CONFIG_DRM_FFB) += ffb.o -obj-$(CONFIG_DRM_MGA) += mga.o -obj-$(CONFIG_DRM_I810) += i810.o - - -# Extract lists of the multi-part drivers. -# The 'int-*' lists are the intermediate files used to build the multi's. -multi-y := $(filter $(list-multi), $(obj-y)) -multi-m := $(filter $(list-multi), $(obj-m)) -int-y := $(sort $(foreach m, $(multi-y), $($(basename $(m))-objs))) -int-m := $(sort $(foreach m, $(multi-m), $($(basename $(m))-objs))) +gamma-objs := $(lib-objs) gamma_drv.o gamma_dma.o +tdfx-objs := $(lib-objs) tdfx_drv.o tdfx_context.o +r128-objs := $(lib-objs) r128_drv.o r128_dma.o r128_context.o r128_bufs.o +ffb-objs := $(lib-objs) ffb_drv.o ffb_context.o +mga-objs := $(lib-objs) mga_drv.o mga_dma.o mga_context.o mga_bufs.o \ + mga_state.o +i810-objs := $(lib-objs) i810_drv.o i810_dma.o i810_context.o i810_bufs.o + +obj-$(CONFIG_DRM_GAMMA) += gamma.o $(gamma-objs) +obj-$(CONFIG_DRM_TDFX) += tdfx.o $(tdfx-objs) +obj-$(CONFIG_DRM_R128) += r128.o $(r128-objs) +obj-$(CONFIG_DRM_FFB) += ffb.o $(ffb-objs) + +ifneq ($CONFIG_AGP),) +obj-$(CONFIG_DRM_MGA) += mga.o $(mga-objs) +obj-$(CONFIG_DRM_I810) += i810.o $(i810-objs) +endif -# Files that are both resident and modular: remove from modular. -obj-m := $(filter-out $(obj-y), $(obj-m)) -int-m := $(filter-out $(int-y), $(int-m)) +# Take module names out of obj-y and int-m -# Take multi-part drivers out of obj-y and put components in. -obj-y := $(filter-out $(list-multi), $(obj-y)) $(int-y) +obj-y := $(filter-out $(module-list), $(obj-y)) +int-m := $(filter-out $(module-list), $(obj-m)) # Translate to Rules.make lists. -O_OBJS := $(filter-out $(export-objs), $(obj-y)) -OX_OBJS := $(filter $(export-objs), $(obj-y)) -M_OBJS := $(sort $(filter-out $(export-objs), $(obj-m))) -MX_OBJS := $(sort $(filter $(export-objs), $(obj-m))) -MI_OBJS := $(sort $(filter-out $(export-objs), $(int-m))) -MIX_OBJS := $(sort $(filter $(export-objs), $(int-m))) + +O_OBJS := $(filter-out $(export-objs), $(obj-y)) +OX_OBJS := $(filter $(export-objs), $(obj-y)) +M_OBJS := $(sort $(filter $(module-list), $(obj-m))) +MI_OBJS := $(sort $(filter-out $(export-objs), $(int-m))) +MIX_OBJS := $(sort $(filter $(export-objs), $(int-m))) include $(TOPDIR)/Rules.make diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h index afc4fd43e..3e5149c91 100644 --- a/drivers/char/drm/drmP.h +++ b/drivers/char/drm/drmP.h @@ -44,6 +44,8 @@ #include <linux/pci.h> #include <linux/wrapper.h> #include <linux/version.h> +#include <linux/sched.h> +#include <linux/smp_lock.h> /* For (un)lock_kernel */ #include <asm/io.h> #include <asm/mman.h> #include <asm/uaccess.h> @@ -497,8 +499,8 @@ typedef struct drm_device { /* Context support */ int irq; /* Interrupt used by board */ __volatile__ long context_flag; /* Context swapping flag */ - __volatile__ long interrupt_flag; /* Interruption handler flag */ - __volatile__ long dma_flag; /* DMA dispatch flag */ + __volatile__ long interrupt_flag; /* Interruption handler flag */ + __volatile__ long dma_flag; /* DMA dispatch flag */ struct timer_list timer; /* Timer for delaying ctx switch */ wait_queue_head_t context_wait; /* Processes waiting on ctx switch */ int last_checked; /* Last context checked for DMA */ diff --git a/drivers/char/drm/gamma_drv.c b/drivers/char/drm/gamma_drv.c index 850cc5118..32b2ba2b9 100644 --- a/drivers/char/drm/gamma_drv.c +++ b/drivers/char/drm/gamma_drv.c @@ -30,9 +30,6 @@ */ #include <linux/config.h> -#include <linux/sched.h> -#include <linux/pci.h> -#include <linux/smp_lock.h> /* For (un)lock_kernel */ #include "drmP.h" #include "gamma_drv.h" @@ -342,7 +339,7 @@ int gamma_find_devices(void) /* gamma_init is called via init_module at module load time, or via * linux/init/main.c (this is not currently supported). */ -int gamma_init(void) +static int gamma_init(void) { int retcode; drm_device_t *dev = &gamma_device; @@ -383,7 +380,7 @@ int gamma_init(void) /* gamma_cleanup is called via cleanup_module at module unload time. */ -void gamma_cleanup(void) +static void gamma_cleanup(void) { drm_device_t *dev = &gamma_device; @@ -443,6 +440,9 @@ int gamma_open(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_open_helper(inode, filp, dev))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_open); spin_lock(&dev->count_lock); if (!dev->open_count++) { @@ -465,6 +465,9 @@ int gamma_release(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_release(inode, filp))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_close); spin_lock(&dev->count_lock); if (!--dev->open_count) { @@ -477,9 +480,8 @@ int gamma_release(struct inode *inode, struct file *filp) return -EBUSY; } spin_unlock(&dev->count_lock); - retcode = gamma_takedown(dev); unlock_kernel(); - return retcode; + return gamma_takedown(dev); } spin_unlock(&dev->count_lock); } diff --git a/drivers/char/drm/i810_context.c b/drivers/char/drm/i810_context.c index 689814db5..85c0877b6 100644 --- a/drivers/char/drm/i810_context.c +++ b/drivers/char/drm/i810_context.c @@ -29,8 +29,6 @@ * */ -#include <linux/sched.h> - #define __NO_VERSION__ #include "drmP.h" #include "i810_drv.h" diff --git a/drivers/char/drm/i810_dma.c b/drivers/char/drm/i810_dma.c index 2882ca09c..f3d9db43e 100644 --- a/drivers/char/drm/i810_dma.c +++ b/drivers/char/drm/i810_dma.c @@ -33,10 +33,7 @@ #define __NO_VERSION__ #include "drmP.h" #include "i810_drv.h" - #include <linux/interrupt.h> /* For task queue support */ -#include <linux/sched.h> -#include <linux/smp_lock.h> /* in case we don't have a 2.3.99-pre6 kernel or later: */ #ifndef VM_DONTCOPY @@ -158,16 +155,16 @@ static struct file_operations i810_buffer_fops = { int i810_mmap_buffers(struct file *filp, struct vm_area_struct *vma) { - drm_file_t *priv = filp->private_data; - drm_device_t *dev; - drm_i810_private_t *dev_priv; - drm_buf_t *buf; + drm_file_t *priv = filp->private_data; + drm_device_t *dev; + drm_i810_private_t *dev_priv; + drm_buf_t *buf; drm_i810_buf_priv_t *buf_priv; lock_kernel(); - dev = priv->dev; + dev = priv->dev; dev_priv = dev->dev_private; - buf = dev_priv->mmap_buffer; + buf = dev_priv->mmap_buffer; buf_priv = buf->dev_private; vma->vm_flags |= (VM_IO | VM_DONTCOPY); diff --git a/drivers/char/drm/i810_drv.c b/drivers/char/drm/i810_drv.c index eaa71a66b..5cab071e4 100644 --- a/drivers/char/drm/i810_drv.c +++ b/drivers/char/drm/i810_drv.c @@ -32,8 +32,6 @@ #include <linux/config.h> #include "drmP.h" #include "i810_drv.h" -#include <linux/sched.h> -#include <linux/smp_lock.h> #define I810_NAME "i810" #define I810_DESC "Intel I810" @@ -340,7 +338,7 @@ static int i810_takedown(drm_device_t *dev) /* i810_init is called via init_module at module load time, or via * linux/init/main.c (this is not currently supported). */ -int i810_init(void) +static int i810_init(void) { int retcode; drm_device_t *dev = &i810_device; @@ -399,7 +397,7 @@ int i810_init(void) /* i810_cleanup is called via cleanup_module at module unload time. */ -void i810_cleanup(void) +static void i810_cleanup(void) { drm_device_t *dev = &i810_device; @@ -465,6 +463,9 @@ int i810_open(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_open_helper(inode, filp, dev))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_open); spin_lock(&dev->count_lock); if (!dev->open_count++) { @@ -545,6 +546,9 @@ int i810_release(struct inode *inode, struct file *filp) up(&dev->struct_sem); drm_free(priv, sizeof(*priv), DRM_MEM_FILES); +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_close); spin_lock(&dev->count_lock); if (!--dev->open_count) { @@ -557,9 +561,10 @@ int i810_release(struct inode *inode, struct file *filp) return -EBUSY; } spin_unlock(&dev->count_lock); - retcode = i810_takedown(dev); - } else - spin_unlock(&dev->count_lock); + unlock_kernel(); + return i810_takedown(dev); + } + spin_unlock(&dev->count_lock); unlock_kernel(); return retcode; } diff --git a/drivers/char/drm/mga_context.c b/drivers/char/drm/mga_context.c index d02592740..9a73e6c14 100644 --- a/drivers/char/drm/mga_context.c +++ b/drivers/char/drm/mga_context.c @@ -29,8 +29,6 @@ * */ -#include <linux/sched.h> - #define __NO_VERSION__ #include "drmP.h" #include "mga_drv.h" diff --git a/drivers/char/drm/mga_drv.c b/drivers/char/drm/mga_drv.c index 45653aa56..7aae6f3e9 100644 --- a/drivers/char/drm/mga_drv.c +++ b/drivers/char/drm/mga_drv.c @@ -33,8 +33,6 @@ #include <linux/config.h> #include "drmP.h" #include "mga_drv.h" -#include <linux/sched.h> -#include <linux/smp_lock.h> #define MGA_NAME "mga" #define MGA_DESC "Matrox g200/g400" @@ -339,7 +337,7 @@ static int mga_takedown(drm_device_t *dev) /* mga_init is called via init_module at module load time, or via * linux/init/main.c (this is not currently supported). */ -int mga_init(void) +static int mga_init(void) { int retcode; drm_device_t *dev = &mga_device; @@ -404,7 +402,7 @@ int mga_init(void) /* mga_cleanup is called via cleanup_module at module unload time. */ -void mga_cleanup(void) +static void mga_cleanup(void) { drm_device_t *dev = &mga_device; @@ -481,6 +479,9 @@ int mga_open(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_open_helper(inode, filp, dev))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_open); spin_lock(&dev->count_lock); if (!dev->open_count++) { @@ -561,6 +562,9 @@ int mga_release(struct inode *inode, struct file *filp) up(&dev->struct_sem); drm_free(priv, sizeof(*priv), DRM_MEM_FILES); +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_close); spin_lock(&dev->count_lock); if (!--dev->open_count) { @@ -573,9 +577,10 @@ int mga_release(struct inode *inode, struct file *filp) return -EBUSY; } spin_unlock(&dev->count_lock); - retcode = mga_takedown(dev); - } else - spin_unlock(&dev->count_lock); + unlock_kernel(); + return mga_takedown(dev); + } + spin_unlock(&dev->count_lock); unlock_kernel(); return retcode; } diff --git a/drivers/char/drm/r128_context.c b/drivers/char/drm/r128_context.c index f11453ba1..2dd716d4b 100644 --- a/drivers/char/drm/r128_context.c +++ b/drivers/char/drm/r128_context.c @@ -28,8 +28,6 @@ * */ -#include <linux/sched.h> - #define __NO_VERSION__ #include "drmP.h" #include "r128_drv.h" @@ -38,10 +36,6 @@ extern drm_ctx_t r128_res_ctx; static int r128_alloc_queue(drm_device_t *dev) { -#if 0 - static int context = 0; -#endif - return drm_ctxbitmap_next(dev); } diff --git a/drivers/char/drm/r128_drv.c b/drivers/char/drm/r128_drv.c index b382a13c5..6b1b19d5e 100644 --- a/drivers/char/drm/r128_drv.c +++ b/drivers/char/drm/r128_drv.c @@ -32,8 +32,6 @@ #include <linux/config.h> #include "drmP.h" #include "r128_drv.h" -#include <linux/sched.h> -#include <linux/smp_lock.h> #define R128_NAME "r128" #define R128_DESC "ATI Rage 128" @@ -325,7 +323,7 @@ static int r128_takedown(drm_device_t *dev) /* r128_init is called via init_module at module load time, or via * linux/init/main.c (this is not currently supported). */ -int r128_init(void) +static int r128_init(void) { int retcode; drm_device_t *dev = &r128_device; @@ -389,7 +387,7 @@ int r128_init(void) /* r128_cleanup is called via cleanup_module at module unload time. */ -void r128_cleanup(void) +static void r128_cleanup(void) { drm_device_t *dev = &r128_device; @@ -457,6 +455,9 @@ int r128_open(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_open_helper(inode, filp, dev))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_open); spin_lock(&dev->count_lock); if (!dev->open_count++) { @@ -476,10 +477,12 @@ int r128_release(struct inode *inode, struct file *filp) int retcode = 0; lock_kernel(); - dev = priv->dev; + dev = priv->dev; DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_release(inode, filp))) { - MOD_DEC_USE_COUNT; +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_close); spin_lock(&dev->count_lock); if (!--dev->open_count) { @@ -492,10 +495,12 @@ int r128_release(struct inode *inode, struct file *filp) return -EBUSY; } spin_unlock(&dev->count_lock); - retcode = r128_takedown(dev); - } else - spin_unlock(&dev->count_lock); + unlock_kernel(); + return r128_takedown(dev); + } + spin_unlock(&dev->count_lock); } + unlock_kernel(); return retcode; } diff --git a/drivers/char/drm/tdfx_context.c b/drivers/char/drm/tdfx_context.c index c8d6e50ea..d6903c0ae 100644 --- a/drivers/char/drm/tdfx_context.c +++ b/drivers/char/drm/tdfx_context.c @@ -30,8 +30,6 @@ * */ -#include <linux/sched.h> - #define __NO_VERSION__ #include "drmP.h" #include "tdfx_drv.h" diff --git a/drivers/char/drm/tdfx_drv.c b/drivers/char/drm/tdfx_drv.c index 896705e97..ba8c40ceb 100644 --- a/drivers/char/drm/tdfx_drv.c +++ b/drivers/char/drm/tdfx_drv.c @@ -31,8 +31,6 @@ */ #include <linux/config.h> -#include <linux/sched.h> -#include <linux/smp_lock.h> #include "drmP.h" #include "tdfx_drv.h" @@ -300,7 +298,7 @@ static int tdfx_takedown(drm_device_t *dev) /* tdfx_init is called via init_module at module load time, or via * linux/init/main.c (this is not currently supported). */ -int tdfx_init(void) +static int tdfx_init(void) { int retcode; drm_device_t *dev = &tdfx_device; @@ -348,7 +346,7 @@ int tdfx_init(void) /* tdfx_cleanup is called via cleanup_module at module unload time. */ -void tdfx_cleanup(void) +static void tdfx_cleanup(void) { drm_device_t *dev = &tdfx_device; @@ -416,6 +414,9 @@ int tdfx_open(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_open_helper(inode, filp, dev))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_open); spin_lock(&dev->count_lock); if (!dev->open_count++) { @@ -438,6 +439,9 @@ int tdfx_release(struct inode *inode, struct file *filp) DRM_DEBUG("open_count = %d\n", dev->open_count); if (!(retcode = drm_release(inode, filp))) { +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_inc(&dev->total_close); spin_lock(&dev->count_lock); if (!--dev->open_count) { diff --git a/drivers/char/drm/vm.c b/drivers/char/drm/vm.c index 01487f965..5ee9e3242 100644 --- a/drivers/char/drm/vm.c +++ b/drivers/char/drm/vm.c @@ -31,8 +31,6 @@ #define __NO_VERSION__ #include "drmP.h" -#include <linux/sched.h> -#include <linux/smp_lock.h> struct vm_operations_struct drm_vm_ops = { nopage: drm_vm_nopage, @@ -147,6 +145,11 @@ void drm_vm_open(struct vm_area_struct *vma) DRM_DEBUG("0x%08lx,0x%08lx\n", vma->vm_start, vma->vm_end - vma->vm_start); atomic_inc(&dev->vma_count); +#if LINUX_VERSION_CODE < 0x020333 + /* The map can exist after the fd is closed. */ + MOD_INC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif + #if DRM_DEBUG_CODE vma_entry = drm_alloc(sizeof(*vma_entry), DRM_MEM_VMAS); @@ -171,6 +174,9 @@ void drm_vm_close(struct vm_area_struct *vma) DRM_DEBUG("0x%08lx,0x%08lx\n", vma->vm_start, vma->vm_end - vma->vm_start); +#if LINUX_VERSION_CODE < 0x020333 + MOD_DEC_USE_COUNT; /* Needed before Linux 2.3.51 */ +#endif atomic_dec(&dev->vma_count); #if DRM_DEBUG_CODE diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c index 7e5a654c2..f889378a3 100644 --- a/drivers/char/keyboard.c +++ b/drivers/char/keyboard.c @@ -158,7 +158,6 @@ struct pt_regs * kbd_pt_regs; #ifdef CONFIG_MAGIC_SYSRQ static int sysrq_pressed; -int sysrq_enabled = 1; #endif static struct pm_dev *pm_kbd = NULL; @@ -255,7 +254,7 @@ void handle_scancode(unsigned char scancode, int down) sysrq_pressed = !up_flag; return; } else if (sysrq_pressed) { - if (!up_flag && sysrq_enabled) { + if (!up_flag) { handle_sysrq(kbd_sysrq_xlate[keycode], kbd_pt_regs, kbd, tty); return; } diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index 67deb7f27..9650457c0 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c @@ -30,6 +30,9 @@ extern void reset_vc(unsigned int); extern int console_loglevel; extern struct list_head super_blocks; +/* Whether we react on sysrq keys or just ignore them */ +int sysrq_enabled = 1; + /* Machine specific power off function */ void (*sysrq_power_off)(void) = NULL; @@ -60,6 +63,9 @@ void handle_sysrq(int key, struct pt_regs *pt_regs, { int orig_log_level = console_loglevel; + if (!sysrq_enabled) + return; + if (!key) return; |