You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(135) |
Nov
(123) |
Dec
(83) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(244) |
Feb
(72) |
Mar
(221) |
Apr
(91) |
May
(104) |
Jun
(93) |
Jul
(78) |
Aug
(1) |
Sep
(1) |
Oct
(29) |
Nov
(98) |
Dec
(20) |
| 2003 |
Jan
|
Feb
(21) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(18) |
Sep
(18) |
Oct
(23) |
Nov
(12) |
Dec
(6) |
| 2004 |
Jan
(2) |
Feb
(32) |
Mar
|
Apr
(12) |
May
(11) |
Jun
(11) |
Jul
|
Aug
(9) |
Sep
|
Oct
(15) |
Nov
|
Dec
|
| 2005 |
Jan
|
Feb
(2) |
Mar
(11) |
Apr
(6) |
May
(1) |
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2006 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2007 |
Jan
|
Feb
(2) |
Mar
|
Apr
(25) |
May
(2) |
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(13) |
Oct
|
Nov
(2) |
Dec
(2) |
| 2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(10) |
May
(1) |
Jun
(6) |
Jul
|
Aug
(2) |
Sep
(5) |
Oct
|
Nov
|
Dec
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:56
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/ia64 In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/arch/ia64 Modified Files: config.in Log Message: Synced against 2.5.11 Index: config.in =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/ia64/config.in,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- config.in 24 Apr 2002 18:56:50 -0000 1.22 +++ config.in 1 May 2002 18:07:49 -0000 1.23 @@ -83,7 +83,7 @@ define_bool CONFIG_KCORE_ELF y # On IA-64, we always want an ELF /proc/kcore. bool 'SMP support' CONFIG_SMP -tristate 'Support running of Linux/x86 binaries' CONFIG_IA32_SUPPORT +bool 'Support running of Linux/x86 binaries' CONFIG_IA32_SUPPORT bool 'Performance monitor support' CONFIG_PERFMON tristate '/proc/pal support' CONFIG_IA64_PALINFO tristate '/proc/efi/vars support' CONFIG_EFI_VARS @@ -123,6 +123,7 @@ source drivers/ieee1394/Config.in source drivers/message/i2o/Config.in source drivers/md/Config.in +source drivers/message/fusion/Config.in mainmenu_option next_comment comment 'ATA/IDE/MFM/RLL support' |
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:56
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/i386/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/arch/i386/kernel
Modified Files:
apm.c setup.c
Log Message:
Synced against 2.5.11
Index: apm.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/i386/kernel/apm.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- apm.c 22 Mar 2002 20:13:57 -0000 1.3
+++ apm.c 1 May 2002 18:07:49 -0000 1.4
@@ -578,7 +578,7 @@
__asm__ __volatile__(APM_DO_ZERO_SEGS
"pushl %%edi\n\t"
"pushl %%ebp\n\t"
- "lcall *%%cs:" SYMBOL_NAME_STR(apm_bios_entry) "\n\t"
+ "lcall *%%cs:apm_bios_entry\n\t"
"setc %%al\n\t"
"popl %%ebp\n\t"
"popl %%edi\n\t"
@@ -625,7 +625,7 @@
__asm__ __volatile__(APM_DO_ZERO_SEGS
"pushl %%edi\n\t"
"pushl %%ebp\n\t"
- "lcall *%%cs:" SYMBOL_NAME_STR(apm_bios_entry) "\n\t"
+ "lcall *%%cs:apm_bios_entry\n\t"
"setc %%bl\n\t"
"popl %%ebp\n\t"
"popl %%edi\n\t"
Index: setup.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/i386/kernel/setup.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- setup.c 24 Apr 2002 18:56:50 -0000 1.40
+++ setup.c 1 May 2002 18:07:49 -0000 1.41
@@ -2863,7 +2863,7 @@
set_tss_desc(nr,t);
gdt_table[__TSS(nr)].b &= 0xfffffdff;
load_TR(nr);
- load_LDT(&init_mm);
+ load_LDT(&init_mm.context);
/* Clear %fs and %gs. */
asm volatile ("xorl %eax, %eax; movl %eax, %fs; movl %eax, %gs");
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:55
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/ia64/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/arch/ia64/kernel
Modified Files:
setup.c traps.c
Log Message:
Synced against 2.5.11
Index: setup.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/ia64/kernel/setup.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- setup.c 24 Apr 2002 18:56:50 -0000 1.5
+++ setup.c 1 May 2002 18:07:49 -0000 1.6
@@ -377,7 +377,7 @@
switch (c->family) {
case 0x07: memcpy(family, "Itanium", 8); break;
- case 0x1f: memcpy(family, "McKinley", 9); break;
+ case 0x1f: memcpy(family, "Itanium 2", 9); break;
default: sprintf(family, "%u", c->family); break;
}
Index: traps.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/ia64/kernel/traps.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- traps.c 24 Apr 2002 18:56:50 -0000 1.3
+++ traps.c 1 May 2002 18:07:49 -0000 1.4
@@ -183,6 +183,10 @@
sig = SIGSEGV; code = __SEGV_PSTKOVF;
break;
+ case 0x3f000 ... 0x3ffff: /* bundle-update in progress */
+ sig = SIGILL; code = __ILL_BNDMOD;
+ break;
+
default:
if (break_num < 0x40000 || break_num > 0x100000)
die_if_kernel("Bad break", regs, break_num);
@@ -440,30 +444,14 @@
"Unknown fault 13", "Unknown fault 14", "Unknown fault 15"
};
-#if 0
- /* this is for minimal trust debugging; yeah this kind of stuff is useful at times... */
-
- if (vector != 25) {
- static unsigned long last_time;
- static char count;
- unsigned long n = vector;
- char buf[32], *cp;
-
- if (jiffies - last_time > 5*HZ)
- count = 0;
-
- if (count++ < 5) {
- last_time = jiffies;
- cp = buf + sizeof(buf);
- *--cp = '\0';
- while (n) {
- *--cp = "0123456789abcdef"[n & 0xf];
- n >>= 4;
- }
- printk("<0x%s>", cp);
- }
+ if ((isr & IA64_ISR_NA) && ((isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH)) {
+ /*
+ * This fault was due to lfetch.fault, set "ed" bit in the psr to cancel
+ * the lfetch.
+ */
+ ia64_psr(regs)->ed = 1;
+ return;
}
-#endif
switch (vector) {
case 24: /* General Exception */
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:55
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/usb/input
In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/drivers/usb/input
Modified Files:
hiddev.c
Log Message:
Synced against 2.5.11
Index: hiddev.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/hiddev.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- hiddev.c 26 Apr 2002 17:23:40 -0000 1.2
+++ hiddev.c 1 May 2002 18:07:50 -0000 1.3
@@ -25,10 +25,7 @@
* e-mail - mail your message to Paul Stewart <st...@we...>
*/
-#define HIDDEV_MINOR_BASE 96
-#define HIDDEV_MINORS 16
-#define HIDDEV_BUFFER_SIZE 64
-
+#include <linux/config.h>
#include <linux/poll.h>
#include <linux/slab.h>
#include <linux/module.h>
@@ -39,6 +36,15 @@
#include "hid.h"
#include <linux/hiddev.h>
+#ifdef CONFIG_USB_DYNAMIC_MINORS
+#define HIDDEV_MINOR_BASE 0
+#define HIDDEV_MINORS 256
+#else
+#define HIDDEV_MINOR_BASE 96
+#define HIDDEV_MINORS 16
+#endif
+#define HIDDEV_BUFFER_SIZE 64
+
struct hiddev {
int exist;
int open;
@@ -62,6 +68,9 @@
static struct hiddev *hiddev_table[HIDDEV_MINORS];
static devfs_handle_t hiddev_devfs_handle;
+/* forward reference to make our lives easier */
+extern struct usb_driver hiddev_driver;
+
/*
* Find a report, given the report's type and ID. The ID can be specified
* indirectly by REPORT_ID_FIRST (which returns the first report of the given
@@ -184,6 +193,7 @@
static void hiddev_cleanup(struct hiddev *hiddev)
{
devfs_unregister(hiddev->devfs);
+ usb_deregister_dev(&hiddev_driver, 1, hiddev->minor);
hiddev_table[hiddev->minor] = NULL;
kfree(hiddev);
}
@@ -627,10 +637,12 @@
if (i == hid->maxapplication)
return -1;
- for (minor = 0; minor < HIDDEV_MINORS && hiddev_table[minor]; minor++);
- if (minor == HIDDEV_MINORS) {
- printk(KERN_ERR "hiddev: no more free hiddev devices\n");
- return -1;
+ if (usb_register_dev (&hiddev_driver, 1, &minor)) {
+ for (minor = 0; minor < HIDDEV_MINORS && hiddev_table[minor]; minor++);
+ if (minor == HIDDEV_MINORS) {
+ printk(KERN_ERR "hiddev: no more free hiddev devices\n");
+ return -1;
+ }
}
if (!(hiddev = kmalloc(sizeof(struct hiddev), GFP_KERNEL)))
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:55
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/char
In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/drivers/char
Modified Files:
Config.in Makefile
Log Message:
Synced against 2.5.11
Index: Config.in
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/Config.in,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -d -r1.37 -r1.38
--- Config.in 14 Mar 2002 20:02:06 -0000 1.37
+++ Config.in 1 May 2002 18:07:50 -0000 1.38
@@ -54,6 +54,7 @@
dep_tristate ' Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
fi
tristate ' Microgate SyncLink card support' CONFIG_SYNCLINK
+ tristate ' SyncLink Multiport support' CONFIG_SYNCLINKMP
tristate ' HDLC line discipline support' CONFIG_N_HDLC
tristate ' SDL RISCom/8 card support' CONFIG_RISCOM8
tristate ' Specialix IO8+ card support' CONFIG_SPECIALIX
Index: Makefile
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/Makefile,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- Makefile 24 Apr 2002 18:56:51 -0000 1.36
+++ Makefile 1 May 2002 18:07:50 -0000 1.37
@@ -50,6 +50,7 @@
obj-$(CONFIG_ISI) += isicom.o
obj-$(CONFIG_ESPSERIAL) += esp.o
obj-$(CONFIG_SYNCLINK) += synclink.o
+obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
obj-$(CONFIG_N_HDLC) += n_hdlc.o
obj-$(CONFIG_SPECIALIX) += specialix.o
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:55
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/ppc/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/arch/ppc/kernel
Modified Files:
ppc4xx_setup.c
Log Message:
Synced against 2.5.11
Index: ppc4xx_setup.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/ppc/kernel/ppc4xx_setup.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- ppc4xx_setup.c 14 Mar 2002 22:32:22 -0000 1.1
+++ ppc4xx_setup.c 1 May 2002 18:07:49 -0000 1.2
@@ -256,29 +256,6 @@
* IDE stuff.
* should be generic for every IDE PCI chipset
*/
-#if defined(CONFIG_BLK_DEV_IDE)
-static int
-ppc4xx_ide_check_region(ide_ioreg_t from, unsigned int extent)
-{
- return check_region(from, extent);
-}
-
-static void
-ppc4xx_ide_request_region(ide_ioreg_t from, unsigned int extent,
- const char *name)
-{
- request_region(from, extent, name);
- return;
-}
-
-static void
-ppc4xx_ide_release_region(ide_ioreg_t from, unsigned int extent)
-{
- release_region(from, extent);
- return;
-}
-#endif
-
#if defined(CONFIG_BLK_DEV_IDEPCI)
static void
ppc4xx_ide_init_hwif_ports(hw_regs_t * hw, ide_ioreg_t data_port,
@@ -398,16 +375,13 @@
** m8xx_setup.c, prep_setup.c use
** defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
*/
-#if defined (CONFIG_IDE)
- ppc_ide_md.ide_request_region = ppc4xx_ide_request_region;
- ppc_ide_md.ide_release_region = ppc4xx_ide_release_region;
- ppc_ide_md.ide_check_region = ppc4xx_ide_check_region;
-#if defined(CONFIG_BLK_DEV_IDEPCI)
+#ifdef CONFIG_IDE
+# if defined(CONFIG_BLK_DEV_IDEPCI)
ppc_ide_md.ide_init_hwif = ppc4xx_ide_init_hwif_ports;
-#elif defined (CONFIG_DMA_NONPCI) /* ON board IDE */
+# elif defined (CONFIG_DMA_NONPCI) /* ON board IDE */
ppc_ide_md.default_irq = nonpci_ide_default_irq;
ppc_ide_md.ide_init_hwif = nonpci_ide_init_hwif_ports;
-#endif
+# endif
#endif
board_init();
|
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:53
|
Update of /cvsroot/linuxconsole/ruby/linux/Documentation/DocBook In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/Documentation/DocBook Modified Files: Makefile Log Message: Synced against 2.5.11 Index: Makefile =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/Documentation/DocBook/Makefile,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- Makefile 16 Apr 2002 17:41:46 -0000 1.10 +++ Makefile 1 May 2002 18:07:49 -0000 1.11 @@ -2,7 +2,7 @@ kernel-api.sgml parportbook.sgml kernel-hacking.sgml \ kernel-locking.sgml via-audio.sgml mousedrivers.sgml sis900.sgml \ deviceiobook.sgml procfs-guide.sgml tulip-user.sgml \ - writing_usb_driver.sgml + writing_usb_driver.sgml scsidrivers.sgml PS := $(patsubst %.sgml, %.ps, $(BOOKS)) PDF := $(patsubst %.sgml, %.pdf, $(BOOKS)) @@ -67,6 +67,9 @@ $(TOPDIR)/scripts/docgen <$< >$@ writing_usb_driver.sgml: writing_usb_driver.tmpl + $(TOPDIR)/scripts/docgen <$< >$@ + +scsidrivers.sgml : scsidrivers.tmpl $(TOPDIR)/scripts/docgen <$< >$@ sis900.sgml: sis900.tmpl $(TOPDIR)/drivers/net/sis900.c |
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:53
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/i386 In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux/arch/i386 Modified Files: config.in Log Message: Synced against 2.5.11 Index: config.in =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/i386/config.in,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- config.in 24 Apr 2002 18:56:50 -0000 1.39 +++ config.in 1 May 2002 18:07:49 -0000 1.40 @@ -154,7 +154,9 @@ fi bool 'Machine Check Exception' CONFIG_X86_MCE -dep_bool 'Check for non-fatal errors' CONFIG_X86_MCE_NONFATAL $CONFIG_X86_MCE +dep_bool 'Check for non-fatal errors on Athlon/Duron' CONFIG_X86_MCE_NONFATAL $CONFIG_X86_MCE +dep_bool 'check for P4 thermal throttling interrupt.' CONFIG_X86_MCE_P4THERMAL $CONFIG_X86_MCE $CONFIG_X86_LOCAL_APIC + tristate 'Toshiba Laptop support' CONFIG_TOSHIBA tristate 'Dell laptop support' CONFIG_I8K |
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:53
|
Update of /cvsroot/linuxconsole/ruby/linux In directory usw-pr-cvs1:/tmp/cvs-serv3020/linux Modified Files: Makefile Log Message: Synced against 2.5.11 Index: Makefile =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/Makefile,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -r1.53 -r1.54 --- Makefile 26 Apr 2002 17:23:39 -0000 1.53 +++ Makefile 1 May 2002 18:07:49 -0000 1.54 @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 5 -SUBLEVEL = 10 +SUBLEVEL = 11 EXTRAVERSION = -ruby KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) |
|
From: James S. <jsi...@us...> - 2002-05-01 18:07:53
|
Update of /cvsroot/linuxconsole/ruby In directory usw-pr-cvs1:/tmp/cvs-serv3020 Added Files: AGAINST-2.5.11 Removed Files: AGAINST-2.5.10 Log Message: Synced against 2.5.11 --- NEW FILE: AGAINST-2.5.11 --- --- AGAINST-2.5.10 DELETED --- |
|
From: James S. <jsi...@us...> - 2002-04-26 17:23:43
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/usb/input
In directory usw-pr-cvs1:/tmp/cvs-serv22497/linux/drivers/usb/input
Modified Files:
Config.in Makefile hiddev.c
Log Message:
Synced to 2.5.10
Index: Config.in
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/Config.in,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Config.in 23 Apr 2002 00:50:39 -0000 1.3
+++ Config.in 26 Apr 2002 17:23:40 -0000 1.4
@@ -20,13 +20,4 @@
dep_mbool ' PID Devices' CONFIG_HID_PID $CONFIG_USB_HID $CONFIG_HID_FF
dep_tristate ' Wacom Intuos/Graphire tablet support' CONFIG_USB_WACOM $CONFIG_USB $CONFIG_INPUT
-
-# Turn on CONFIG_USB_INPUT if any of the drivers are compiled into the kernel
-# to make our Makefile logic a bit simpler.
-if [ "$CONFIG_USB_HID" = "y" -o "$CONFIG_USB_KBD" = "y" -o "$CONFIG_USB_MOUSE" = "y" ]; then
- define_bool CONFIG_USB_INPUT y
-fi
-if [ "$CONFIG_USB_WACOM" = "y" ]; then
- define_bool CONFIG_USB_INPUT y
-fi
Index: Makefile
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Makefile 18 Apr 2002 22:02:47 -0000 1.2
+++ Makefile 26 Apr 2002 17:23:40 -0000 1.3
@@ -2,7 +2,7 @@
# Makefile for the USB input drivers
#
-O_TARGET := usb-input.o
+O_TARGET := input.o
# Multipart objects.
hid-objs := hid-core.o
Index: hiddev.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/hiddev.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- hiddev.c 16 Apr 2002 17:41:51 -0000 1.1
+++ hiddev.c 26 Apr 2002 17:23:40 -0000 1.2
@@ -700,10 +700,11 @@
static /* const */ struct usb_driver hiddev_driver = {
- name: "hiddev",
- probe: hiddev_usbd_probe,
- fops: &hiddev_fops,
- minor: HIDDEV_MINOR_BASE
+ name: "hiddev",
+ probe: hiddev_usbd_probe,
+ fops: &hiddev_fops,
+ minor: HIDDEV_MINOR_BASE,
+ num_minors: HIDDEV_MINORS,
};
int __init hiddev_init(void)
|
|
From: James S. <jsi...@us...> - 2002-04-26 17:23:43
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/x86_64/ia32 In directory usw-pr-cvs1:/tmp/cvs-serv22497/linux/arch/x86_64/ia32 Modified Files: ia32_ioctl.c Log Message: Synced to 2.5.10 Index: ia32_ioctl.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/x86_64/ia32/ia32_ioctl.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ia32_ioctl.c 24 Apr 2002 18:56:51 -0000 1.4 +++ ia32_ioctl.c 26 Apr 2002 17:23:40 -0000 1.5 @@ -3187,7 +3187,6 @@ */ COMPATIBLE_IOCTL(HDIO_GET_IDENTITY) COMPATIBLE_IOCTL(HDIO_SET_DMA) -COMPATIBLE_IOCTL(HDIO_SET_KEEPSETTINGS) COMPATIBLE_IOCTL(HDIO_SET_UNMASKINTR) COMPATIBLE_IOCTL(HDIO_SET_NOWERR) COMPATIBLE_IOCTL(HDIO_SET_32BIT) @@ -3747,7 +3746,6 @@ HANDLE_IOCTL(BLKPG, blkpg_ioctl_trans) HANDLE_IOCTL(FBIOGETCMAP, fb_ioctl_trans) HANDLE_IOCTL(FBIOPUTCMAP, fb_ioctl_trans) -HANDLE_IOCTL(HDIO_GET_KEEPSETTINGS, hdio_ioctl_trans) HANDLE_IOCTL(HDIO_GET_UNMASKINTR, hdio_ioctl_trans) HANDLE_IOCTL(HDIO_GET_DMA, hdio_ioctl_trans) HANDLE_IOCTL(HDIO_GET_32BIT, hdio_ioctl_trans) |
|
From: James S. <jsi...@us...> - 2002-04-26 17:23:43
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/x86_64/mm In directory usw-pr-cvs1:/tmp/cvs-serv22497/linux/arch/x86_64/mm Modified Files: fault.c Log Message: Synced to 2.5.10 Index: fault.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/arch/x86_64/mm/fault.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- fault.c 24 Apr 2002 18:56:51 -0000 1.3 +++ fault.c 26 Apr 2002 17:23:40 -0000 1.4 @@ -82,7 +82,7 @@ } int page_fault_trace; -int exception_trace = 1; +int exception_trace; /* * This routine handles page faults. It determines the address, |
|
From: James S. <jsi...@us...> - 2002-04-26 17:23:42
|
Update of /cvsroot/linuxconsole/ruby In directory usw-pr-cvs1:/tmp/cvs-serv22497 Added Files: AGAINST-2.5.10 Removed Files: AGAINST-2.5.9 Log Message: Synced to 2.5.10 --- NEW FILE: AGAINST-2.5.10 --- --- AGAINST-2.5.9 DELETED --- |
|
From: James S. <jsi...@us...> - 2002-04-26 17:23:42
|
Update of /cvsroot/linuxconsole/ruby/linux In directory usw-pr-cvs1:/tmp/cvs-serv22497/linux Modified Files: Makefile Log Message: Synced to 2.5.10 Index: Makefile =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/Makefile,v retrieving revision 1.52 retrieving revision 1.53 diff -u -d -r1.52 -r1.53 --- Makefile 24 Apr 2002 18:56:49 -0000 1.52 +++ Makefile 26 Apr 2002 17:23:39 -0000 1.53 @@ -1,6 +1,6 @@ VERSION = 2 PATCHLEVEL = 5 -SUBLEVEL = 9 +SUBLEVEL = 10 EXTRAVERSION = -ruby KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) |
|
From: johann d. <jd...@us...> - 2002-04-26 16:37:47
|
Update of /cvsroot/linuxconsole/ruby/web/htdocs/input In directory usw-pr-cvs1:/tmp/cvs-serv19102/input Modified Files: hardware.html Log Message: Updated I-Force support status (force feedback has been supported for quite some time now). Index: hardware.html =================================================================== RCS file: /cvsroot/linuxconsole/ruby/web/htdocs/input/hardware.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- hardware.html 3 Nov 2001 19:42:21 -0000 1.2 +++ hardware.html 26 Apr 2002 16:37:44 -0000 1.3 @@ -116,7 +116,7 @@ <li>LabTec SpaceBall 4000 FLX 6dof controller <li>Gunze AHL-51S touchscreen <li>Gravis Stinger - <li>I-Force based joysticks and wheels (without force feedback) + <li>I-Force based joysticks and wheels (with force feedback) <ul> <li>Logitech WingMan Force <li>Logitech WingMan Force Wheel @@ -247,7 +247,7 @@ <li>HIDBP Keyboards <li>HIDBP Mice </ul> - <li>I-Force based joysticks and wheels (without force feedback) + <li>I-Force based joysticks and wheels (with force feedback) <ul> <li>Logitech WingMan Force <li>Logitech WingMan Force Wheel @@ -291,7 +291,6 @@ <li>Colorado Spectrum Notebook Gameport <li>Colorado Spectrum Workstation Gameport <li>Gravis GrIP MultiPort -<li>I-Force force feedback <li>Immersion Impulse Engine 2000 <li>Immersion Interface Box <li>Logitech 3D Mouse |
|
From: johann d. <jd...@us...> - 2002-04-26 16:36:37
|
Update of /cvsroot/linuxconsole/ruby/web/htdocs
In directory usw-pr-cvs1:/tmp/cvs-serv18377
Modified Files:
index.html
Log Message:
Removed duplicate entry for Dominik Kubla in the "People" section.
Index: index.html
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/web/htdocs/index.html,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- index.html 24 Apr 2002 05:18:39 -0000 1.6
+++ index.html 26 Apr 2002 16:36:33 -0000 1.7
@@ -115,10 +115,6 @@
Developing the new fbdev API, multihead support, and the
core console code.<p>
-<dt><a href="mailto:dom...@un...">Dominik Kubla</a>
-<dd> Wrote the ANSI/ECMA-48 terminal emulation code and designed
- the terminal emulation modular design.<p>
-
<dt><a href="vo...@su...">Vojtech Pavlik</a>
<dd> Co-Maintainer of this project. Developing the input API and
writing most of the core input drivers.<p>
|
|
From: johann d. <jd...@us...> - 2002-04-26 16:26:03
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/usb/input
In directory usw-pr-cvs1:/tmp/cvs-serv7903/linux/drivers/usb/input
Modified Files:
hid-core.c hid-lg3dff.c hid-lgff.c
Log Message:
hid-core.c: Do not abort init when there is no support for force-feedback.
hid-lg*ff.c: Cleaned-up a few confusing lines.
Index: hid-core.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/hid-core.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- hid-core.c 16 Apr 2002 17:41:51 -0000 1.1
+++ hid-core.c 26 Apr 2002 16:26:00 -0000 1.2
@@ -1415,7 +1415,16 @@
hid_dump_device(hid);
#ifdef CONFIG_HID_FF
- if (hid_ff_init(hid)) {
+ switch (hid_ff_init(hid)) {
+ case 0:
+ break;
+
+ case -ENOSYS:
+ info("No force feedback support for this hid device");
+ break;
+
+ default:
+ err("hid_ff_init failed");
hid_free_device(hid);
return NULL;
}
Index: hid-lg3dff.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/hid-lg3dff.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- hid-lg3dff.c 18 Apr 2002 22:02:47 -0000 1.1
+++ hid-lg3dff.c 26 Apr 2002 16:26:00 -0000 1.2
@@ -98,8 +98,7 @@
struct lg3d_device *private;
/* Private data */
- hid->ff_private = kmalloc(sizeof(struct lg3d_device), GFP_KERNEL);
- private = hid->ff_private;
+ private = kmalloc(sizeof(struct lg3d_device), GFP_KERNEL);
if (!private) return -1;
memset(private, 0, sizeof(struct lg3d_device));
Index: hid-lgff.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/usb/input/hid-lgff.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- hid-lgff.c 18 Apr 2002 22:02:47 -0000 1.2
+++ hid-lgff.c 26 Apr 2002 16:26:00 -0000 1.3
@@ -121,8 +121,7 @@
int i;
/* Private data */
- hid->ff_private = kmalloc(sizeof(struct hid_ff_logitech), GFP_KERNEL);
- private = hid->ff_private;
+ private = kmalloc(sizeof(struct hid_ff_logitech), GFP_KERNEL);
if (!private) return -1;
memset(private, 0, sizeof(struct hid_ff_logitech));
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:57:23
|
Update of /cvsroot/linuxconsole/ruby/linux
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux
Modified Files:
Makefile
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: Makefile
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/Makefile,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -d -r1.51 -r1.52
--- Makefile 16 Apr 2002 17:41:46 -0000 1.51
+++ Makefile 24 Apr 2002 18:56:49 -0000 1.52
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 5
-SUBLEVEL = 8
+SUBLEVEL = 9
EXTRAVERSION = -ruby
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
@@ -348,9 +348,9 @@
$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)" $(subst $@, _dir_$@, $@)
TAGS: dummy
- etags `find include/asm-$(ARCH) -name '*.h'`
- find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print | xargs etags -a
- find $(SUBDIRS) init -name '*.[ch]' | xargs etags -a
+ { find include/asm-${ARCH} -name '*.h' -print ; \
+ find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print ; \
+ find $(SUBDIRS) init -name '*.[ch]' ; } | grep -v SCCS | etags -
# Exuberant ctags works better with -I
tags: dummy
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:59
|
Update of /cvsroot/linuxconsole/ruby/linux/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/kernel
Modified Files:
printk.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: printk.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/kernel/printk.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- printk.c 22 Mar 2002 20:13:58 -0000 1.28
+++ printk.c 24 Apr 2002 18:56:51 -0000 1.29
@@ -40,6 +40,10 @@
#define LOG_BUF_MASK (LOG_BUF_LEN-1)
+#ifndef arch_consoles_callable
+#define arch_consoles_callable() (1)
+#endif
+
/* printk's without a loglevel use this.. */
#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
@@ -446,6 +450,12 @@
}
spin_unlock_irqrestore(&logbuf_lock, flags);
+ /*
+ * On some architectures, the consoles are not usable
+ * on secondary CPUs early in the boot process.
+ */
+ if (!arch_consoles_callable()) goto out;
+
spin_lock(&console_lock);
for (con = console_drivers; con; con = con->next) {
/*
@@ -462,6 +472,7 @@
}
con_start = log_end; /* Flush all consoles */
spin_unlock(&console_lock);
+out:
return printed_len;
}
EXPORT_SYMBOL(printk);
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:59
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/x86_64/kernel
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/arch/x86_64/kernel
Modified Files:
setup.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: setup.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/x86_64/kernel/setup.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- setup.c 18 Mar 2002 17:37:26 -0000 1.1
+++ setup.c 24 Apr 2002 18:56:51 -0000 1.2
@@ -49,14 +49,15 @@
#include <asm/mpspec.h>
#include <asm/mmu_context.h>
#include <asm/bootsetup.h>
+#include <asm/smp.h>
/*
* Machine setup..
*/
extern void mcheck_init(struct cpuinfo_x86 *c);
+extern void init_memory_mapping(void);
-char ignore_irq13; /* set if exception 16 works */
struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
unsigned long mmu_cr4_features;
@@ -69,7 +70,6 @@
*/
struct drive_info_struct { char dummy[32]; } drive_info;
struct screen_info screen_info;
-struct apm_info apm_info;
struct sys_desc_table_struct {
unsigned short length;
unsigned char table[0];
@@ -79,7 +79,6 @@
extern int root_mountflags;
extern char _text, _etext, _edata, _end;
-extern unsigned long cpu_khz;
static int disable_x86_fxsr __initdata = 0;
@@ -199,8 +198,8 @@
for (i = 0; i < e820.nr_map; i++) {
printk(" %s: %016Lx - %016Lx ", who,
- (unsigned long long)e820.map[i].addr,
- (unsigned long long)(e820.map[i].addr + e820.map[i].size));
+ (unsigned long long) e820.map[i].addr,
+ (unsigned long long) (e820.map[i].addr + e820.map[i].size));
switch (e820.map[i].type) {
case E820_RAM: printk("(usable)\n");
break;
@@ -213,7 +212,7 @@
case E820_NVS:
printk("(ACPI NVS)\n");
break;
- default: printk("type %lu\n", (unsigned long)e820.map[i].type);
+ default: printk("type %u\n", e820.map[i].type);
break;
}
}
@@ -542,16 +541,16 @@
}
}
+unsigned long start_pfn, end_pfn;
+
void __init setup_arch(char **cmdline_p)
{
unsigned long bootmap_size, low_mem_size;
- unsigned long start_pfn, max_pfn, max_low_pfn;
int i;
ROOT_DEV = to_kdev_t(ORIG_ROOT_DEV);
drive_info = DRIVE_INFO;
screen_info = SCREEN_INFO;
- apm_info.bios = APM_BIOS_INFO;
#ifdef CONFIG_BLK_DEV_RAM
rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK;
@@ -578,20 +577,20 @@
#define PFN_DOWN(x) ((x) >> PAGE_SHIFT)
#define PFN_PHYS(x) ((x) << PAGE_SHIFT)
-#define VMALLOC_RESERVE (unsigned long)(4096 << 20)
-#define MAXMEM (unsigned long)(-PAGE_OFFSET-VMALLOC_RESERVE)
+#define MAXMEM (120UL * 1024 * 1024 * 1024 * 1024) /* 120TB */
#define MAXMEM_PFN PFN_DOWN(MAXMEM)
+#define MAX_NONPAE_PFN (1 << 20)
/*
* partially used pages are not usable - thus
* we are rounding upwards:
*/
- start_pfn = PFN_UP(__pa(&_end));
+ start_pfn = PFN_UP(__pa_symbol(&_end));
/*
* Find the highest page frame number we have available
*/
- max_pfn = 0;
+ end_pfn = 0;
for (i = 0; i < e820.nr_map; i++) {
unsigned long start, end;
/* RAM? */
@@ -601,23 +600,20 @@
end = PFN_DOWN(e820.map[i].addr + e820.map[i].size);
if (start >= end)
continue;
- if (end > max_pfn)
- max_pfn = end;
+ if (end > end_pfn)
+ end_pfn = end;
}
- /*
- * Determine low and high memory ranges:
- */
- max_low_pfn = max_pfn;
- if (max_low_pfn > MAXMEM_PFN) {
- max_low_pfn = MAXMEM_PFN;
+ if (end_pfn > MAXMEM_PFN) {
+ end_pfn = MAXMEM_PFN;
}
+ init_memory_mapping();
/*
* Initialize the boot-time allocator (with low memory only):
*/
- bootmap_size = init_bootmem(start_pfn, max_low_pfn);
+ bootmap_size = init_bootmem(start_pfn, end_pfn);
/*
* Register fully available low RAM pages with the bootmem allocator.
@@ -633,15 +629,15 @@
* We are rounding up the start address of usable memory:
*/
curr_pfn = PFN_UP(e820.map[i].addr);
- if (curr_pfn >= max_low_pfn)
+ if (curr_pfn >= end_pfn)
continue;
/*
* ... and at the end of the usable range downwards:
*/
last_pfn = PFN_DOWN(e820.map[i].addr + e820.map[i].size);
- if (last_pfn > max_low_pfn)
- last_pfn = max_low_pfn;
+ if (last_pfn > end_pfn)
+ last_pfn = end_pfn;
/*
* .. finally, did all the rounding and playing
@@ -676,7 +672,12 @@
*/
reserve_bootmem(PAGE_SIZE, PAGE_SIZE);
#endif
-
+#ifdef CONFIG_ACPI_SLEEP
+ /*
+ * Reserve low memory region for sleep support.
+ */
+ acpi_reserve_bootmem();
+#endif
#ifdef CONFIG_X86_LOCAL_APIC
/*
* Find and reserve possible boot-time SMP configuration:
@@ -710,6 +711,15 @@
smp_alloc_memory(); /* AP processor realmode stacks in low memory*/
#endif
paging_init();
+#ifdef CONFIG_ACPI_BOOT
+ /*
+ * Initialize the ACPI boot-time table parser (gets the RSDP and SDT).
+ * Must do this after paging_init (due to reliance on fixmap, and thus
+ * the bootmem allocator) but before get_smp_config (to allow parsing
+ * of MADT).
+ */
+ acpi_boot_init(*cmdline_p);
+#endif
#ifdef CONFIG_X86_LOCAL_APIC
/*
* get boot-time SMP configuration:
@@ -757,6 +767,7 @@
request_resource(&ioport_resource, standard_io_resources+i);
/* Tell the PCI layer not to allocate too close to the RAM area.. */
+ /* ??? move this up on x86-64 */
low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff;
if (low_mem_size > pci_mem_start)
pci_mem_start = low_mem_size;
@@ -823,6 +834,15 @@
clear_bit(0*32+31, &c->x86_capability);
r = get_model_name(c);
+ if (!r) {
+ switch (c->x86) {
+ case 15:
+ /* Should distingush Models here, but this is only
+ a fallback anyways. */
+ strcpy(c->x86_model_id, "Hammer");
+ break;
+ }
+ }
display_cacheinfo(c);
return r;
}
@@ -1005,7 +1025,6 @@
static int show_cpuinfo(struct seq_file *m, void *v)
{
struct cpuinfo_x86 *c = v;
- int index = c - cpu_data;
/*
* These flag bits must match the definitions in <asm/cpufeature.h>.
@@ -1025,7 +1044,7 @@
/* AMD-defined */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, "mmxext", NULL,
+ NULL, NULL, NULL, NULL, "nx", NULL, "mmxext", NULL,
NULL, NULL, NULL, NULL, NULL, "lm", "3dnowext", "3dnow",
/* Transmeta-defined */
@@ -1046,15 +1065,15 @@
return 0;
#endif
- seq_printf(m,"processor\t: %d\n"
+ seq_printf(m,"processor\t: %u\n"
"vendor_id\t: %s\n"
"cpu family\t: %d\n"
"model\t\t: %d\n"
"model name\t: %s\n",
- index,
+ (unsigned)(c-cpu_data),
c->x86_vendor_id[0] ? c->x86_vendor_id : "unknown",
c->x86,
- c->x86_model,
+ (int)c->x86_model,
c->x86_model_id[0] ? c->x86_model_id : "unknown");
if (c->x86_mask || c->cpuid_level >= 0)
@@ -1063,7 +1082,7 @@
seq_printf(m, "stepping\t: unknown\n");
if ( test_bit(X86_FEATURE_TSC, &c->x86_capability) ) {
- seq_printf(m, "cpu MHz\t\t: %lu.%03lu\n",
+ seq_printf(m, "cpu MHz\t\t: %u.%03u\n",
cpu_khz / 1000, (cpu_khz % 1000));
}
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:59
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/video
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/drivers/video
Modified Files:
anakinfb.c neofb.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: anakinfb.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/video/anakinfb.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- anakinfb.c 16 Apr 2002 17:51:55 -0000 1.1
+++ anakinfb.c 24 Apr 2002 18:56:51 -0000 1.2
@@ -78,10 +78,18 @@
fb_info.fbops = &anakinfb_ops;
fb_info.var = anakinfb_var;
fb_info.fix = anakinfb_fix;
- fb_info.screen_base = ioremap(VGA_START, VGA_SIZE);
- if (register_framebuffer(&fb_info) < 0)
+ if (!(request_mem_region(VGA_START, VGA_SIZE, "vga")))
+ return -ENOMEM;
+ if (!(fb_info.screen_base = ioremap(VGA_START, VGA_SIZE))) {
+ release_mem_region(VGA_START, VGA_SIZE);
+ return -EIO;
+ }
+ if (register_framebuffer(&fb_info) < 0) {
+ iounmap(fb_info.screen_base);
+ release_mem_region(VGA_START, VGA_SIZE);
return -EINVAL;
+ }
MOD_INC_USE_COUNT;
return 0;
Index: neofb.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/video/neofb.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- neofb.c 24 Mar 2002 14:48:54 -0000 1.2
+++ neofb.c 24 Apr 2002 18:56:51 -0000 1.3
@@ -75,10 +75,10 @@
/* --------------------------------------------------------------------- */
-static int disabled = 0;
-static int internal = 0;
-static int external = 0;
-static int nostretch = 0;
+static int disabled = 0;
+static int internal = 0;
+static int external = 0;
+static int nostretch = 0;
[...3422 lines suppressed...]
+ DBG("init_module");
- if (disabled)
- return -ENXIO;
+ if (disabled)
+ return -ENXIO;
- neo_init();
+ neo_init();
- /* never return failure; user can hotplug card later... */
- return 0;
+ /* never return failure; user can hotplug card later... */
+ return 0;
}
-#endif /* MODULE */
+#endif /* MODULE */
module_exit(neo_done);
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:59
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/x86_64/mm
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/arch/x86_64/mm
Modified Files:
fault.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: fault.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/x86_64/mm/fault.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- fault.c 18 Mar 2002 19:29:09 -0000 1.2
+++ fault.c 24 Apr 2002 18:56:51 -0000 1.3
@@ -2,8 +2,10 @@
* linux/arch/x86-64/mm/fault.c
*
* Copyright (C) 1995 Linus Torvalds
+ * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs.
*/
+#include <linux/config.h>
#include <linux/signal.h>
#include <linux/sched.h>
#include <linux/kernel.h>
@@ -18,17 +20,17 @@
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/tty.h>
+#include <linux/compiler.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/pgalloc.h>
#include <asm/hardirq.h>
+#include <asm/smp.h>
+#include <asm/tlbflush.h>
extern void die(const char *,struct pt_regs *,long);
-asmlinkage void do_invalid_op(struct pt_regs *, unsigned long);
-extern unsigned long idt;
-
extern spinlock_t console_lock, timerlist_lock;
void bust_spinlocks(int yes)
@@ -40,7 +42,8 @@
global_irq_lock = 0; /* Many serial drivers do __global_cli() */
#endif
} else {
- int loglevel_save = console_loglevel;
+ int loglevel_save = console_loglevel;
+
oops_in_progress = 0;
/*
* OK, the message is on the console. Now we call printk()
@@ -53,33 +56,34 @@
}
}
-void do_BUG(const char *file, int line)
-{
- bust_spinlocks(1);
- printk("kernel BUG at %s:%d!\n", file, line);
-}
-
-
void dump_pagetable(unsigned long address)
{
static char *name[] = { "PML4", "PGD", "PDE", "PTE" };
int i, shift;
unsigned long page;
- asm("movq %%cr3,%0":"=r" (page));
shift = 9+9+9+12;
address &= ~0xFFFF000000000000UL;
+ asm("movq %%cr3,%0" : "=r" (page));
for (i = 0; i < 4; i++) {
- page = ((unsigned long *) __va(page))[(address >> shift) & 0x1FFU];
+ unsigned long *padr = (unsigned long *) __va(page);
+ padr += (address >> shift) & 0x1FFU;
+ if (__get_user(page, padr)) {
+ printk("%s: bad %p\n", name[i], padr);
+ break;
+ }
printk("%s: %016lx ", name[i], page);
if ((page & (1 | (1<<7))) != 1) /* Not present or 2MB page */
break;
page &= ~0xFFFUL;
- shift -= 9;
+ shift -= (i == 0) ? 12 : 9;
}
printk("\n");
}
+int page_fault_trace;
+int exception_trace = 1;
+
/*
* This routine handles page faults. It determines the address,
* and the problem, and then passes it off to one of the appropriate
@@ -89,6 +93,7 @@
* bit 0 == 0 means no page found, 1 means protection fault
* bit 1 == 0 means read, 1 means write
* bit 2 == 0 means kernel, 1 means user-mode
+ * bit 3 == 1 means fault was an instruction fetch
*/
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code)
{
@@ -103,15 +108,20 @@
/* get the address */
__asm__("movq %%cr2,%0":"=r" (address));
+ if (page_fault_trace)
+ printk("pagefault rip:%lx rsp:%lx cs:%lu ss:%lu address %lx error %lx\n",
+ regs->rip,regs->rsp,regs->cs,regs->ss,address,error_code);
tsk = current;
mm = tsk->mm;
info.si_code = SEGV_MAPERR;
- if (address >= TASK_SIZE && !(error_code & 5))
+ /* 5 => page not present and from supervisor mode */
+ if (unlikely(!(error_code & 5) &&
+ ((address >= VMALLOC_START && address <= VMALLOC_END) ||
+ (address >= MODULES_VADDR && address <= MODULES_END))))
goto vmalloc_fault;
-
/*
* If we're in an interrupt or have no user
* context, we must not take the fault..
@@ -119,19 +129,10 @@
if (in_interrupt() || !mm)
goto no_context;
+ again:
down_read(&mm->mmap_sem);
vma = find_vma(mm, address);
-
-#if 0
- printk("fault at %lx rip:%lx rsp:%lx err:%lx thr:%x ", address,regs->rip,regs->rsp,error_code,tsk->thread.flags);
- if (vma)
- printk("vma %lx-%lx prot:%lx flags:%lx",vma->vm_start,vma->vm_end,
- vma->vm_page_prot,vma->vm_flags);
- printk("\n");
-#endif
-
-
if (!vma)
goto bad_area;
if (vma->vm_start <= address)
@@ -167,7 +168,6 @@
goto bad_area;
}
-survive:
/*
* If for any reason at all we couldn't handle the fault,
* make sure we exit gracefully rather than endlessly redo
@@ -200,10 +200,9 @@
/* User mode accesses just cause a SIGSEGV */
if (error_code & 4) {
-
- printk(KERN_ERR "%.20s[%d] segfaulted rip:%lx rsp:%lx adr:%lx err:%lx\n",
- tsk->comm, tsk->pid,
- regs->rip, regs->rsp, address, error_code);
+ printk("%s[%d] segfault at rip:%lx rsp:%lx adr:%lx err:%lx\n",
+ tsk->comm, tsk->pid, regs->rip, regs->rsp, address,
+ error_code);
tsk->thread.cr2 = address;
tsk->thread.error_code = error_code;
@@ -221,6 +220,10 @@
/* Are we prepared to handle this kernel fault? */
if ((fixup = search_exception_table(regs->rip)) != 0) {
regs->rip = fixup;
+ if (exception_trace)
+ printk(KERN_ERR
+ "%s: fixed kernel exception at %lx address %lx err:%ld\n",
+ current->comm, regs->rip, address, error_code);
return;
}
@@ -251,8 +254,7 @@
up_read(&mm->mmap_sem);
if (current->pid == 1) {
yield();
- down_read(&mm->mmap_sem);
- goto survive;
+ goto again;
}
printk("VM: killing process %s\n", tsk->comm);
if (error_code & 4)
@@ -278,43 +280,39 @@
/* Kernel mode? Handle exceptions or die */
if (!(error_code & 4))
goto no_context;
+ return;
vmalloc_fault:
{
+ pgd_t *pgd;
+ pmd_t *pmd;
+ pte_t *pte;
+
/*
- * Synchronize the kernel space top level page-table
- * with the 'reference' page table.
- * Currently it only works for first and last 512 GB of
- * kernel memory FIXME
- *
+ * x86-64 has the same kernel 3rd level pages for all CPUs.
+ * But for vmalloc/modules the TLB synchronization works lazily,
+ * so it can happen that we get a page fault for something
+ * that is really already in the page table. Just check if it
+ * is really there and when yes flush the local TLB.
*/
- level4_t *l4pd = level4_offset_k(address);
- int offset = __pgd_offset(address);
- pgd_t *pgd, *pgd_k;
- pmd_t *pmd, *pmd_k;
-
- if (! level4_val(*l4pd)) {
- printk(KERN_ERR "fatal - no entry in level4_page for %lx\n",
- address);
- goto bad_area_nosemaphore;
- }
- pgd = level3_offset_k(l4pd, address);
- pgd_k = init_mm.pgd + offset;
-
- if (!pgd_present(*pgd)) {
- if (!pgd_present(*pgd_k))
+ pgd = pgd_offset_k(address);
+ if (pgd != current_pgd_offset_k(address))
+ BUG();
+ if (!pgd_present(*pgd))
goto bad_area_nosemaphore;
- set_pgd(pgd, *pgd_k);
- return;
- }
-
pmd = pmd_offset(pgd, address);
- pmd_k = pmd_offset(pgd_k, address);
-
- if (pmd_present(*pmd) || !pmd_present(*pmd_k))
+ if (!pmd_present(*pmd))
goto bad_area_nosemaphore;
- set_pmd(pmd, *pmd_k);
+ pte = pte_offset_kernel(pmd, address);
+ if (!pte_present(*pte))
+ goto bad_area_nosemaphore;
+
+ /* Strictly a flush_tlb_all because vmalloc is global,
+ but this only applies to new global pages so it should
+ not be needed. vmalloc will likely touch multiple ptes,
+ so do a full flush instead of a partial one. */
+ __flush_tlb();
return;
}
}
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:58
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/char
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/drivers/char
Modified Files:
Makefile tty_io.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: Makefile
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/Makefile,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- Makefile 18 Mar 2002 19:29:10 -0000 1.35
+++ Makefile 24 Apr 2002 18:56:51 -0000 1.36
@@ -1,13 +1,6 @@
#
# Makefile for the kernel character device drivers.
#
-# Note! Dependencies are done automagically by 'make dep', which also
-# removes any old dependencies. DON'T put your own dependencies here
-# unless it's something special (ie not a .c file).
-#
-# Note 2! The CFLAGS definitions are now inherited from the
-# parent makes..
-#
#
# This file contains the font map for the default (hardware) font
@@ -26,8 +19,6 @@
sonypi.o tty_io.o tty_ioctl.o generic_serial.o rtc.o
mod-subdirs := ftape drm pcmcia
-
-list-multi :=
SERIAL = serial.o
Index: tty_io.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/tty_io.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- tty_io.c 16 Apr 2002 17:41:49 -0000 1.47
+++ tty_io.c 24 Apr 2002 18:56:51 -0000 1.48
@@ -1830,6 +1830,9 @@
for_each_task(p) {
if ((p->tty == tty) ||
((session > 0) && (p->session == session))) {
+ printk(KERN_NOTICE "SAK: killed process %d"
+ " (%s): p->session==tty->session\n",
+ p->pid, p->comm);
send_sig(SIGKILL, p, 1);
continue;
}
@@ -1840,6 +1843,9 @@
filp = fcheck_files(p->files, i);
if (filp && (filp->f_op == &tty_fops) &&
(filp->private_data == tty)) {
+ printk(KERN_NOTICE "SAK: killed process %d"
+ " (%s): fd#%d opened to the tty\n",
+ p->pid, p->comm, i);
send_sig(SIGKILL, p, 1);
break;
}
|
|
From: James S. <jsi...@us...> - 2002-04-24 18:56:58
|
Update of /cvsroot/linuxconsole/ruby/linux/arch/x86_64/ia32
In directory usw-pr-cvs1:/tmp/cvs-serv8328/linux/arch/x86_64/ia32
Modified Files:
ia32_ioctl.c
Log Message:
Synced to 2.5.9. Note some of the fb changes went into 2.5.9. Yeah :-)
Index: ia32_ioctl.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/arch/x86_64/ia32/ia32_ioctl.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- ia32_ioctl.c 22 Mar 2002 20:13:58 -0000 1.3
+++ ia32_ioctl.c 24 Apr 2002 18:56:51 -0000 1.4
@@ -3,7 +3,7 @@
*
* Copyright (C) 1997-2000 Jakub Jelinek (ja...@re...)
* Copyright (C) 1998 Eddie C. Dost (ec...@sk...)
- * Copyright (C) 2001 Andi Kleen, SuSE Labs
+ * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs
*
* These routines maintain argument size conversion between 32bit and 64bit
* ioctls.
@@ -51,6 +51,10 @@
#include <linux/elevator.h>
#include <linux/rtc.h>
#include <linux/pci.h>
+#include <linux/rtc.h>
+#include <linux/module.h>
+#include <linux/serial.h>
+#include <linux/reiserfs_fs.h>
#if defined(CONFIG_BLK_DEV_LVM) || defined(CONFIG_BLK_DEV_LVM_MODULE)
/* Ugh. This header really is not clean */
#define min min
@@ -1661,7 +1665,7 @@
static int do_fontx_ioctl(unsigned int fd, int cmd, struct consolefontdesc32 *user_cfd, struct file *file)
{
struct tty_struct *tty = (struct tty_struct *)file->private_data;
- struct vc_data *vc = (struct vc_data *) tty->driver_data;
+ struct vc_data *vc = (struct vc_data *) tty->driver_data;
struct consolefontdesc cfdarg;
struct console_font_op op;
int i, perm;
@@ -1718,7 +1722,7 @@
static int do_kdfontop_ioctl(unsigned int fd, unsigned int cmd, struct console_font_op32 *fontop, struct file *file)
{
struct tty_struct *tty = (struct tty_struct *)file->private_data;
- struct vc_data *vc = (struct vc_data *) tty->driver_data;
+ struct vc_data *vc = (struct vc_data *) tty->driver_data;
struct console_font_op op;
int perm = vt_check(file), i;
@@ -1746,7 +1750,7 @@
static int do_unimap_ioctl(unsigned int fd, unsigned int cmd, struct unimapdesc32 *user_ud, struct file *file)
{
struct tty_struct *tty = (struct tty_struct *)file->private_data;
- struct vc_data *vc = (struct vc_data *) tty->driver_data;
+ struct vc_data *vc = (struct vc_data *) tty->driver_data;
struct unimapdesc32 tmp;
int perm = vt_check(file);
@@ -1762,7 +1766,6 @@
}
return 0;
}
-#endif /* CONFIG_VT */
static int do_smb_getmountuid(unsigned int fd, unsigned int cmd, unsigned long arg)
{
@@ -2978,12 +2981,139 @@
return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, arg);
}
+/* SuSE extension */
+#ifndef TIOCGDEV
+#define TIOCGDEV _IOR('T',0x32, unsigned int)
+#endif
+static int tiocgdev(unsigned fd, unsigned cmd, unsigned int *ptr)
+{
+
+ struct file *file = fget(fd);
+ struct tty_struct *real_tty;
+
+ if (!fd)
+ return -EBADF;
+ if (file->f_op->ioctl != tty_ioctl)
+ return -EINVAL;
+ real_tty = (struct tty_struct *)file->private_data;
+ if (!real_tty)
+ return -EINVAL;
+ return put_user(kdev_t_to_nr(real_tty->device), ptr);
+}
+
+
+struct raw32_config_request
+{
+ int raw_minor;
+ __u64 block_major;
+ __u64 block_minor;
+} __attribute__((packed));
+
+static int raw_ioctl(unsigned fd, unsigned cmd, void *ptr)
+{
+ int ret;
+ switch (cmd) {
+ case RAW_SETBIND:
+ case RAW_GETBIND: {
+ struct raw_config_request req;
+ struct raw32_config_request *user_req = ptr;
+ mm_segment_t oldfs = get_fs();
+
+ if (get_user(req.raw_minor, &user_req->raw_minor) ||
+ get_user(req.block_major, &user_req->block_major) ||
+ get_user(req.block_minor, &user_req->block_minor))
+ return -EFAULT;
+ set_fs(KERNEL_DS);
+ ret = sys_ioctl(fd,cmd,(unsigned long)&req);
+ set_fs(oldfs);
+ break;
+ }
+ default:
+ ret = sys_ioctl(fd,cmd,(unsigned long)ptr);
+ break;
+ }
+ return ret;
+}
+
+struct serial_struct32 {
+ int type;
+ int line;
+ unsigned int port;
+ int irq;
+ int flags;
+ int xmit_fifo_size;
+ int custom_divisor;
+ int baud_base;
+ unsigned short close_delay;
+ char io_type;
+ char reserved_char[1];
+ int hub6;
+ unsigned short closing_wait; /* time to wait before closing */
+ unsigned short closing_wait2; /* no longer used... */
+ __u32 iomem_base;
+ unsigned short iomem_reg_shift;
+ unsigned int port_high;
+ int reserved[1];
+};
+
+static int serial_struct_ioctl(unsigned fd, unsigned cmd, void *ptr)
+{
+ typedef struct serial_struct SS;
+ struct serial_struct32 *ss32 = ptr;
+ int err = 0;
+ struct serial_struct ss;
+ mm_segment_t oldseg = get_fs();
+ set_fs(KERNEL_DS);
+ if (cmd == TIOCSSERIAL) {
+ err = -EFAULT;
+ if (copy_from_user(&ss, ss32, sizeof(struct serial_struct32)))
+ goto out;
+ memmove(&ss.iomem_reg_shift, ((char*)&ss.iomem_base)+4,
+ sizeof(SS)-offsetof(SS,iomem_reg_shift));
+ ss.iomem_base = (void *)((unsigned long)ss.iomem_base & 0xffffffff);
+ }
+ if (!err)
+ err = sys_ioctl(fd,cmd,(unsigned long)(&ss));
+ if (cmd == TIOCGSERIAL && err >= 0) {
+ __u32 base;
+ if (__copy_to_user(ss32,&ss,offsetof(SS,iomem_base)) ||
+ __copy_to_user(&ss32->iomem_reg_shift,
+ &ss.iomem_reg_shift,
+ sizeof(SS) - offsetof(SS, iomem_reg_shift)))
+ err = -EFAULT;
+ if (ss.iomem_base > (unsigned char *)0xffffffff)
+ base = -1;
+ else
+ base = (unsigned long)ss.iomem_base;
+ err |= __put_user(base, &ss32->iomem_base);
+ }
+ out:
+ set_fs(oldseg);
+ return err;
+}
+
struct ioctl_trans {
unsigned long cmd;
- unsigned long handler;
+ int (*handler)(unsigned int, unsigned int, unsigned long, struct file * filp);
struct ioctl_trans *next;
};
+/* generic function to change a single long put_user to arg to 32bit */
+static int arg2long(unsigned int fd, unsigned int cmd, unsigned long arg)
+{
+ int ret;
+ unsigned long val = 0;
+ mm_segment_t oldseg = get_fs();
+ set_fs(KERNEL_DS);
+ ret = sys_ioctl(fd, cmd, (unsigned long)&val);
+ set_fs(oldseg);
+ if (!ret || val) {
+ if (put_user((int)val, (unsigned int *)arg))
+ return -EFAULT;
+ }
+ return ret;
+}
+
#define REF_SYMBOL(handler) if (0) (void)handler;
#define HANDLE_IOCTL2(cmd,handler) REF_SYMBOL(handler); asm volatile(".quad %c0, " #handler ",0"::"i" (cmd));
#define HANDLE_IOCTL(cmd,handler) HANDLE_IOCTL2(cmd,handler)
@@ -2992,7 +3122,7 @@
#define IOCTL_TABLE_END asm volatile("\nioctl_end:"); }
IOCTL_TABLE_START
-/* List here exlicitly which ioctl's are known to have
+/* List here explicitly which ioctl's are known to have
* compatable types passed or none at all...
*/
/* Big T */
@@ -3008,6 +3138,7 @@
COMPATIBLE_IOCTL(TCSETSW)
COMPATIBLE_IOCTL(TCSETSF)
COMPATIBLE_IOCTL(TIOCLINUX)
+HANDLE_IOCTL(TIOCGDEV, tiocgdev)
/* Little t */
COMPATIBLE_IOCTL(TIOCGETD)
COMPATIBLE_IOCTL(TIOCSETD)
@@ -3031,8 +3162,6 @@
COMPATIBLE_IOCTL(TIOCSCTTY)
COMPATIBLE_IOCTL(TIOCGPTN)
COMPATIBLE_IOCTL(TIOCSPTLCK)
-COMPATIBLE_IOCTL(TIOCGSERIAL)
-COMPATIBLE_IOCTL(TIOCSSERIAL)
COMPATIBLE_IOCTL(TIOCSERGETLSR)
COMPATIBLE_IOCTL(FBIOGET_VSCREENINFO)
COMPATIBLE_IOCTL(FBIOPUT_VSCREENINFO)
@@ -3088,6 +3217,8 @@
COMPATIBLE_IOCTL(BLKROGET)
COMPATIBLE_IOCTL(BLKRRPART)
COMPATIBLE_IOCTL(BLKFLSBUF)
+COMPATIBLE_IOCTL(BLKRASET)
+COMPATIBLE_IOCTL(BLKFRASET)
COMPATIBLE_IOCTL(BLKSECTSET)
COMPATIBLE_IOCTL(BLKSSZGET)
@@ -3209,7 +3340,7 @@
COMPATIBLE_IOCTL(RTC_SET_TIME)
COMPATIBLE_IOCTL(RTC_WKALM_SET)
COMPATIBLE_IOCTL(RTC_WKALM_RD)
-COMPATIBLE_IOCTL(RTC_IRQP_READ)
+HANDLE_IOCTL(RTC_IRQP_READ,arg2long)
COMPATIBLE_IOCTL(RTC_IRQP_SET)
COMPATIBLE_IOCTL(RTC_EPOCH_READ)
COMPATIBLE_IOCTL(RTC_EPOCH_SET)
@@ -3485,9 +3616,6 @@
COMPATIBLE_IOCTL(DEVFSDIOC_SET_EVENT_MASK)
COMPATIBLE_IOCTL(DEVFSDIOC_RELEASE_EVENT_QUEUE)
COMPATIBLE_IOCTL(DEVFSDIOC_SET_DEBUG_MASK)
-/* Raw devices */
-COMPATIBLE_IOCTL(RAW_SETBIND)
-COMPATIBLE_IOCTL(RAW_GETBIND)
/* SMB ioctls which do not need any translations */
COMPATIBLE_IOCTL(SMB_IOC_NEWCONN)
/* Little a */
@@ -3549,6 +3677,18 @@
COMPATIBLE_IOCTL(DRM_IOCTL_UNLOCK)
COMPATIBLE_IOCTL(DRM_IOCTL_FINISH)
#endif /* DRM */
+#ifdef CONFIG_AUTOFS_FS
+COMPATIBLE_IOCTL(AUTOFS_IOC_READY);
+COMPATIBLE_IOCTL(AUTOFS_IOC_FAIL);
+COMPATIBLE_IOCTL(AUTOFS_IOC_CATATONIC);
+COMPATIBLE_IOCTL(AUTOFS_IOC_PROTOVER);
+COMPATIBLE_IOCTL(AUTOFS_IOC_SETTIMEOUT);
+COMPATIBLE_IOCTL(AUTOFS_IOC_EXPIRE);
+#endif
+COMPATIBLE_IOCTL(REISERFS_IOC_UNPACK);
+/* serial driver */
+HANDLE_IOCTL(TIOCGSERIAL, serial_struct_ioctl);
+HANDLE_IOCTL(TIOCSSERIAL, serial_struct_ioctl);
/* elevator */
COMPATIBLE_IOCTL(BLKELVGET)
COMPATIBLE_IOCTL(BLKELVSET)
@@ -3595,6 +3735,8 @@
HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)
HANDLE_IOCTL(SIOCADDRT, routing_ioctl)
HANDLE_IOCTL(SIOCDELRT, routing_ioctl)
+/* Raw devices */
+HANDLE_IOCTL(RAW_SETBIND, raw_ioctl)
/* Note SIOCRTMSG is no longer, so this is safe and * the user would have seen just an -EINVAL anyways. */
HANDLE_IOCTL(SIOCRTMSG, ret_einval)
HANDLE_IOCTL(SIOCGSTAMP, do_siocgstamp)
@@ -3757,14 +3899,14 @@
/* Always call these with kernel lock held! */
+
int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file *))
{
int i;
if (!additional_ioctls) {
- additional_ioctls = module_map(PAGE_SIZE);
+ additional_ioctls = (struct ioctl_trans *)get_zeroed_page(GFP_KERNEL);
if (!additional_ioctls)
return -ENOMEM;
- memset(additional_ioctls, 0, PAGE_SIZE);
}
for (i = 0; i < PAGE_SIZE/sizeof(struct ioctl_trans); i++)
if (!additional_ioctls[i].cmd)
@@ -3773,13 +3915,15 @@
return -ENOMEM;
additional_ioctls[i].cmd = cmd;
if (!handler)
- additional_ioctls[i].handler = (u32)(long)sys_ioctl;
+ additional_ioctls[i].handler =
+ (int (*)(unsigned,unsigned,unsigned long, struct file *))sys_ioctl;
else
- additional_ioctls[i].handler = (u32)(long)handler;
+ additional_ioctls[i].handler = handler;
ioctl32_insert_translation(&additional_ioctls[i]);
return 0;
}
+
int unregister_ioctl32_conversion(unsigned int cmd)
{
unsigned long hash = ioctl32_hash(cmd);
@@ -3805,6 +3949,9 @@
return -EINVAL;
}
+EXPORT_SYMBOL(register_ioctl32_conversion);
+EXPORT_SYMBOL(unregister_ioctl32_conversion);
+
asmlinkage int sys32_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg)
{
struct file * filp;
@@ -3826,7 +3973,7 @@
while (t && t->cmd != cmd)
t = (struct ioctl_trans *)(long)t->next;
if (t) {
- handler = (void *)(long)t->handler;
+ handler = t->handler;
error = handler(fd, cmd, arg, filp);
} else {
static int count = 0;
|