Commit d0d4e162 authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.80

parent 26265657
VERSION = 1 VERSION = 1
PATCHLEVEL = 3 PATCHLEVEL = 3
SUBLEVEL = 79 SUBLEVEL = 80
ARCH = i386 ARCH = i386
...@@ -68,16 +68,6 @@ endif ...@@ -68,16 +68,6 @@ endif
ROOT_DEV = CURRENT ROOT_DEV = CURRENT
#
# NFS_ROOT_NAME specifies the default name of the directory to mount
# as root via NFS, if the kernel does not get the "root=" option from
# the boot loader. The "%s" will be replaced by the IP-number of the
# local system. Use empty string for default root path provided by BOOTP.
#
#NFS_ROOT = -DNFS_ROOT="\"/tftpboot/%s\""
NFS_ROOT = -DNFS_ROOT="\"\""
# #
# INSTALL_PATH specifies where to place the updated kernel and system map # INSTALL_PATH specifies where to place the updated kernel and system map
# images. Uncomment if you want to place them anywhere other than root. # images. Uncomment if you want to place them anywhere other than root.
...@@ -242,7 +232,7 @@ init/version.o: init/version.c include/linux/compile.h ...@@ -242,7 +232,7 @@ init/version.o: init/version.c include/linux/compile.h
$(CC) $(CFLAGS) -DUTS_MACHINE='"$(ARCH)"' -c -o init/version.o init/version.c $(CC) $(CFLAGS) -DUTS_MACHINE='"$(ARCH)"' -c -o init/version.o init/version.c
init/main.o: init/main.c init/main.o: init/main.c
$(CC) $(CFLAGS) $(PROFILING) $(NFS_ROOT) -c -o $*.o $< $(CC) $(CFLAGS) $(PROFILING) -c -o $*.o $<
fs: dummy fs: dummy
$(MAKE) linuxsubdirs SUBDIRS=fs $(MAKE) linuxsubdirs SUBDIRS=fs
......
...@@ -114,6 +114,11 @@ start_of_setup: ...@@ -114,6 +114,11 @@ start_of_setup:
mov dl,#0x81 mov dl,#0x81
int 0x13 int 0x13
! Reset the disk controller.
mov ax,#0x0000
mov dl,#0x80
int 0x13
! set DS=CS, we know that SETUPSEG == CS at this point ! set DS=CS, we know that SETUPSEG == CS at this point
mov ax,cs ! aka #SETUPSEG mov ax,cs ! aka #SETUPSEG
mov ds,ax mov ds,ax
......
...@@ -270,11 +270,8 @@ ENTRY(lcall7) ...@@ -270,11 +270,8 @@ ENTRY(lcall7)
ALIGN ALIGN
handle_bottom_half: handle_bottom_half:
pushfl
incl SYMBOL_NAME(intr_count) incl SYMBOL_NAME(intr_count)
sti
call SYMBOL_NAME(do_bottom_half) call SYMBOL_NAME(do_bottom_half)
popfl
decl SYMBOL_NAME(intr_count) decl SYMBOL_NAME(intr_count)
jmp 9f jmp 9f
ALIGN ALIGN
......
...@@ -237,7 +237,7 @@ Summary of ide driver parameters for kernel "command line": ...@@ -237,7 +237,7 @@ Summary of ide driver parameters for kernel "command line":
except the cmd640. except the cmd640.
"idex=serialize" : do not overlap operations on idex and ide(x^1) "idex=serialize" : do not overlap operations on idex and ide(x^1)
The following two are valid ONLY on ide0, The following are valid ONLY on ide0,
and the defaults for the base,ctl ports must not be altered. and the defaults for the base,ctl ports must not be altered.
"ide0=dtc2278" : probe/support DTC2278 interface "ide0=dtc2278" : probe/support DTC2278 interface
......
/* /*
* linux/drivers/block/cmd640.c Version 0.08 Mar 15, 1996 * linux/drivers/block/cmd640.c Version 0.09 Mar 19, 1996
* *
* Copyright (C) 1995-1996 Linus Torvalds & authors (see below) * Copyright (C) 1995-1996 Linus Torvalds & authors (see below)
*/ */
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
* Version 0.08 Added autotune/noautotune support. -ml * Version 0.08 Added autotune/noautotune support. -ml
* *
* Version 0.09 Try to be smarter about 2nd port enabling. -ml * Version 0.09 Try to be smarter about 2nd port enabling. -ml
* Version 0.10 Be nice and don't reset 2nd port. -ml
* *
*/ */
...@@ -149,7 +150,7 @@ static byte get_cmd640_reg_pci1(int reg_no) ...@@ -149,7 +150,7 @@ static byte get_cmd640_reg_pci1(int reg_no)
} }
/* PCI method 2 access (from CMD datasheet) */ /* PCI method 2 access (from CMD datasheet) */
static void put_cmd640_reg_pci2(int reg_no, int val) static void put_cmd640_reg_pci2(int reg_no, int val)
{ {
unsigned long flags; unsigned long flags;
...@@ -272,12 +273,12 @@ static int probe_for_cmd640_vlb(void) { ...@@ -272,12 +273,12 @@ static int probe_for_cmd640_vlb(void) {
return 1; return 1;
} }
#if 0
/* /*
* Low level reset for controller, actually it has nothing specific for * Low level reset for controller, actually it has nothing specific for
* CMD640, but I don't know how to use standard reset routine before * CMD640, but I don't know how to use standard reset routine before
* we recognized any drives. * we recognized any drives.
*/ */
static void cmd640_reset_controller(int iface_no) static void cmd640_reset_controller(int iface_no)
{ {
int retry_count = 600; int retry_count = 600;
...@@ -294,12 +295,8 @@ static void cmd640_reset_controller(int iface_no) ...@@ -294,12 +295,8 @@ static void cmd640_reset_controller(int iface_no)
if (retry_count == 0) if (retry_count == 0)
printk("cmd640: failed to reset controller %d\n", iface_no); printk("cmd640: failed to reset controller %d\n", iface_no);
#if 0
else
printk("cmd640: controller %d reset [%d]\n",
iface_no, retry_count);
#endif
} }
#endif /* 0 */
/* /*
* Returns 1 if an IDE interface/drive exists at 0x170, * Returns 1 if an IDE interface/drive exists at 0x170,
...@@ -344,14 +341,13 @@ int ide_probe_for_cmd640x(void) ...@@ -344,14 +341,13 @@ int ide_probe_for_cmd640x(void)
ide_hwifs[0].serialized = 1; /* ensure this *always* gets set */ ide_hwifs[0].serialized = 1; /* ensure this *always* gets set */
ide_hwifs[1].serialized = 1; /* ensure this *always* gets set */ ide_hwifs[1].serialized = 1; /* ensure this *always* gets set */
#if 0 #if 0
/* Dump initial state of chip registers */ /* Dump initial state of chip registers */
for (b = 0; b != 0xff; b++) { for (b = 0; b != 0xff; b++) {
printk(" %2x%c", get_cmd640_reg(b), printk(" %2x%c", get_cmd640_reg(b),
((b&0xf) == 0xf) ? '\n' : ','); ((b&0xf) == 0xf) ? '\n' : ',');
} }
#endif #endif
/* /*
...@@ -394,7 +390,6 @@ int ide_probe_for_cmd640x(void) ...@@ -394,7 +390,6 @@ int ide_probe_for_cmd640x(void)
*/ */
b = get_cmd640_reg(CNTRL); b = get_cmd640_reg(CNTRL);
if (!secondary_port_responding()) { if (!secondary_port_responding()) {
b ^= CNTRL_ENA_2ND; /* toggle the bit */ b ^= CNTRL_ENA_2ND; /* toggle the bit */
second_port_toggled = 1; second_port_toggled = 1;
...@@ -428,38 +423,46 @@ int ide_probe_for_cmd640x(void) ...@@ -428,38 +423,46 @@ int ide_probe_for_cmd640x(void)
ide_hwifs[1].drives[0].autotune = 1; ide_hwifs[1].drives[0].autotune = 1;
if (ide_hwifs[1].drives[1].autotune == 0) if (ide_hwifs[1].drives[1].autotune == 0)
ide_hwifs[1].drives[1].autotune = 1; ide_hwifs[1].drives[1].autotune = 1;
/* We reset timings, and disable read-ahead */ /* disable read-ahead for drives 2 & 3 */
put_cmd640_reg(ARTTIM23, (DIS_RA2 | DIS_RA3)); put_cmd640_reg(ARTTIM23, (DIS_RA2 | DIS_RA3));
put_cmd640_reg(DRWTIM23, 0);
if (second_port_toggled) {
/* reset PIO timings for drives 2 & 3 */
put_cmd640_reg(DRWTIM23, 0);
}
#if 0
/* reset the secondary interface */
cmd640_reset_controller(1); cmd640_reset_controller(1);
#endif
} }
printk("ide: buggy CMD640%c interface at ", printk("ide: buggy CMD640%c interface on ",
'A' - 1 + cmd640_chip_version); 'A' - 1 + cmd640_chip_version);
switch (bus_type) { switch (bus_type) {
case vlb : case vlb :
printk("local bus, port 0x%x", cmd640_key); printk("vlb (0x%x)", cmd640_key);
break; break;
case pci1: case pci1:
printk("pci, (0x%x)", cmd640_key); printk("pci (0x%x)", cmd640_key);
break; break;
case pci2: case pci2:
printk("pci,(access method 2) (0x%x)", cmd640_key); printk("pci (access method 2) (0x%x)", cmd640_key);
break; break;
} }
/* #if 0
* Reset interface timings /* reset PIO timings for drives 1 & 2 */
*/
put_cmd640_reg(CMDTIM, 0); put_cmd640_reg(CMDTIM, 0);
#endif /* 0 */
/* /*
* Tell everyone what we did to their system * Tell everyone what we did to their system
*/ */
printk("\n ... serialized, secondary port %s\n", second_port_toggled ? "toggled" : "untouched"); printk("; serialized, secondary port %s\n", second_port_toggled ? "toggled" : "untouched");
return 1; return 1;
} }
#if 0 /* not used anywhere */
int cmd640_off(void) { int cmd640_off(void) {
static int a = 0; static int a = 0;
byte b; byte b;
...@@ -472,6 +475,7 @@ int cmd640_off(void) { ...@@ -472,6 +475,7 @@ int cmd640_off(void) {
put_cmd640_reg(CNTRL, b); put_cmd640_reg(CNTRL, b);
return 1; return 1;
} }
#endif /* 0 */
/* /*
* Sets readahead mode for specific drive * Sets readahead mode for specific drive
......
/* /*
* linux/drivers/block/ht6580.c Version 0.03 Feb 09, 1996 * linux/drivers/block/ht6580.c Version 0.04 Mar 19, 1996
* *
* Copyright (C) 1995-1996 Linus Torvalds & author (see below) * Copyright (C) 1995-1996 Linus Torvalds & author (see below)
*/ */
...@@ -44,9 +44,6 @@ ...@@ -44,9 +44,6 @@
* If I have booted to dos sometime after power on, I can get smaller * If I have booted to dos sometime after power on, I can get smaller
* timing values working. Perhaps I could soft-ice the initialization. * timing values working. Perhaps I could soft-ice the initialization.
* *
* OS/2 driver seems to use some kind of DMA. But that code is really
* messy to me to found out how.
*
* -=- malafoss@snakemail.hut.fi -=- searching the marvels of universe -=- * -=- malafoss@snakemail.hut.fi -=- searching the marvels of universe -=-
*/ */
...@@ -71,6 +68,7 @@ ...@@ -71,6 +68,7 @@
* silly sequence (below) whenever we switch between primary and secondary. * silly sequence (below) whenever we switch between primary and secondary.
* *
* This stuff is courtesy of malafoss@snakemail.hut.fi * This stuff is courtesy of malafoss@snakemail.hut.fi
* (or maf@nemesis.tky.hut.fi)
* *
* At least one user has reported that this code can confuse the floppy * At least one user has reported that this code can confuse the floppy
* controller and/or driver -- perhaps this should be changed to use * controller and/or driver -- perhaps this should be changed to use
...@@ -152,9 +150,12 @@ static void ht6560b_selectproc (ide_drive_t *drive) ...@@ -152,9 +150,12 @@ static void ht6560b_selectproc (ide_drive_t *drive)
*/ */
outb (timing, IDE_SELECT_REG); outb (timing, IDE_SELECT_REG);
(void) inb (IDE_STATUS_REG); (void) inb (IDE_STATUS_REG);
OUT_BYTE(drive->select.all,IDE_SELECT_REG);
restore_flags (flags); restore_flags (flags);
#ifdef DEBUG
printk("ht6560b: %s: select=%#x timing=%#x\n", drive->name, t, timing);
#endif
} }
OUT_BYTE(drive->select.all,IDE_SELECT_REG);
} }
/* /*
...@@ -229,6 +230,6 @@ void init_ht6560b (void) ...@@ -229,6 +230,6 @@ void init_ht6560b (void)
ide_hwifs[0].serialized = 1; ide_hwifs[0].serialized = 1;
ide_hwifs[1].serialized = 1; ide_hwifs[1].serialized = 1;
} else } else
printk("ht6560b: not found\n"); printk("\nht6560b: not found\n");
} }
} }
/* /*
* linux/drivers/block/ide.c Version 5.34 Mar 16, 1996 * linux/drivers/block/ide.c Version 5.35 Mar 23, 1996
* *
* Copyright (C) 1994-1996 Linus Torvalds & authors (see below) * Copyright (C) 1994-1996 Linus Torvalds & authors (see below)
*/ */
...@@ -221,6 +221,8 @@ ...@@ -221,6 +221,8 @@
* Version 5.33 improve handling of HDIO_DRIVE_CMDs that read data * Version 5.33 improve handling of HDIO_DRIVE_CMDs that read data
* Version 5.34 fix irq-sharing problem from 5.33 * Version 5.34 fix irq-sharing problem from 5.33
* fix cdrom ioctl problem from 5.33 * fix cdrom ioctl problem from 5.33
* Version 5.35 cosmetic changes
* fix cli() problem in try_to_identify()
* *
* Some additional driver compile-time options are in ide.h * Some additional driver compile-time options are in ide.h
* *
...@@ -1573,7 +1575,7 @@ static void timer_expiry (unsigned long data) ...@@ -1573,7 +1575,7 @@ static void timer_expiry (unsigned long data)
* This routine assumes cli() is in effect when called. * This routine assumes cli() is in effect when called.
* *
* If an unexpected interrupt happens on irq15 while we are handling irq14 * If an unexpected interrupt happens on irq15 while we are handling irq14
* and if the two interfaces are "serialized" (CMD640B), then it looks like * and if the two interfaces are "serialized" (CMD640), then it looks like
* we could screw up by interfering with a new request being set up for irq15. * we could screw up by interfering with a new request being set up for irq15.
* *
* In reality, this is a non-issue. The new command is not sent unless the * In reality, this is a non-issue. The new command is not sent unless the
...@@ -2371,6 +2373,8 @@ static int try_to_identify (ide_drive_t *drive, byte cmd) ...@@ -2371,6 +2373,8 @@ static int try_to_identify (ide_drive_t *drive, byte cmd)
delay_10ms(); /* wait for IRQ and DRQ_STAT */ delay_10ms(); /* wait for IRQ and DRQ_STAT */
if (OK_STAT(GET_STAT(),DRQ_STAT,BAD_R_STAT)) { if (OK_STAT(GET_STAT(),DRQ_STAT,BAD_R_STAT)) {
unsigned long flags;
save_flags(flags);
cli(); /* some systems need this */ cli(); /* some systems need this */
do_identify(drive, cmd); /* drive returned ID */ do_identify(drive, cmd); /* drive returned ID */
if (drive->present && drive->media != ide_tape) { if (drive->present && drive->media != ide_tape) {
...@@ -2379,6 +2383,8 @@ static int try_to_identify (ide_drive_t *drive, byte cmd) ...@@ -2379,6 +2383,8 @@ static int try_to_identify (ide_drive_t *drive, byte cmd)
tuneproc(drive, 255); /* auto-tune PIO mode */ tuneproc(drive, 255); /* auto-tune PIO mode */
} }
rc = 0; /* drive responded with ID */ rc = 0; /* drive responded with ID */
(void) GET_STAT(); /* clear drive IRQ */
restore_flags(flags);
} else } else
rc = 2; /* drive refused ID */ rc = 2; /* drive refused ID */
if (!HWIF(drive)->irq) { if (!HWIF(drive)->irq) {
...@@ -2638,7 +2644,7 @@ static int match_parm (char *s, const char *keywords[], int vals[], int max_vals ...@@ -2638,7 +2644,7 @@ static int match_parm (char *s, const char *keywords[], int vals[], int max_vals
* except the cmd640. * except the cmd640.
* "idex=serialize" : do not overlap operations on idex and ide(x^1) * "idex=serialize" : do not overlap operations on idex and ide(x^1)
* *
* The following two are valid ONLY on ide0, * The following are valid ONLY on ide0,
* and the defaults for the base,ctl ports must not be altered. * and the defaults for the base,ctl ports must not be altered.
* *
* "ide0=dtc2278" : probe/support DTC2278 interface * "ide0=dtc2278" : probe/support DTC2278 interface
......
...@@ -41,7 +41,7 @@ static struct ide_pio_info { ...@@ -41,7 +41,7 @@ static struct ide_pio_info {
{ "WDC AC2120", 0 }, { "WDC AC2120", 0 },
{ "WDC AC2850", 3 }, { "WDC AC2850", 3 },
{ "WDC AC1270", 3 }, { "WDC AC1270", 3 },
{ "WDC AC1170", 3 }, { "WDC AC1170", 1 },
{ "WDC AC1210", 1 }, { "WDC AC1210", 1 },
{ "WDC AC280", 0 }, { "WDC AC280", 0 },
/* { "WDC AC21000", 4 }, */ /* { "WDC AC21000", 4 }, */
......
...@@ -96,20 +96,12 @@ static void unplug_device(void * data) ...@@ -96,20 +96,12 @@ static void unplug_device(void * data)
* force the transfer to start only after we have put all the requests * force the transfer to start only after we have put all the requests
* on the list. * on the list.
* *
* Note! We can do the check without interrupts off, because interrupts * This is called with interrupts off and no requests on the queue.
* will never add a new request to the queue, only take requests off..
*/ */
static inline void plug_device(struct blk_dev_struct * dev) static inline void plug_device(struct blk_dev_struct * dev)
{ {
if (!dev->current_request) { dev->current_request = &dev->plug;
unsigned long flags; queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
save_flags(flags);
cli();
dev->current_request = &dev->plug;
queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
restore_flags(flags);
}
} }
/* /*
...@@ -340,63 +332,67 @@ static void make_request(int major,int rw, struct buffer_head * bh) ...@@ -340,63 +332,67 @@ static void make_request(int major,int rw, struct buffer_head * bh)
/* look for a free request. */ /* look for a free request. */
down (&request_lock); down (&request_lock);
cli();
/* The scsi disk and cdrom drivers completely remove the request /*
* from the queue when they start processing an entry. For this reason * Try to coalesce the new request with old requests
* it is safe to continue to add links to the top entry for those devices. */
*/ cli();
if (( major == IDE0_MAJOR /* same as HD_MAJOR */ req = blk_dev[major].current_request;
|| major == IDE1_MAJOR if (!req) {
|| major == MD_MAJOR plug_device(blk_dev + major);
|| major == FLOPPY_MAJOR } else switch (major) {
|| major == SCSI_DISK_MAJOR case IDE0_MAJOR: /* same as HD_MAJOR */
|| major == SCSI_CDROM_MAJOR case IDE1_MAJOR:
|| major == IDE2_MAJOR case FLOPPY_MAJOR:
|| major == IDE3_MAJOR) case IDE2_MAJOR:
&& (req = blk_dev[major].current_request)) case IDE3_MAJOR:
{ /*
if (major != SCSI_DISK_MAJOR && * The scsi disk and cdrom drivers completely remove the request
major != SCSI_CDROM_MAJOR && * from the queue when they start processing an entry. For this
major != MD_MAJOR) * reason it is safe to continue to add links to the top entry for
req = req->next; * those devices.
*
while (req) { * All other drivers need to jump over the first entry, as that
if (req->rq_dev == bh->b_dev && * entry may be busy being processed and we thus can't change it.
!req->sem && */
req->cmd == rw && req = req->next;
req->sector + req->nr_sectors == sector && if (!req)
req->nr_sectors < 244) break;
{ /* fall through */
case SCSI_DISK_MAJOR:
case SCSI_CDROM_MAJOR:
case MD_MAJOR:
do {
if (req->sem)
continue;
if (req->cmd != rw)
continue;
if (req->nr_sectors >= 244)
continue;
if (req->rq_dev != bh->b_dev)
continue;
/* Can we add it to the end of this request? */
if (req->sector + req->nr_sectors == sector) {
req->bhtail->b_reqnext = bh; req->bhtail->b_reqnext = bh;
req->bhtail = bh; req->bhtail = bh;
req->nr_sectors += count; /* or to the beginning? */
mark_buffer_clean(bh); } else if (req->sector - count == sector) {
up (&request_lock);
sti();
return;
}
if (req->rq_dev == bh->b_dev &&
!req->sem &&
req->cmd == rw &&
req->sector - count == sector &&
req->nr_sectors < 244)
{
req->nr_sectors += count;
bh->b_reqnext = req->bh; bh->b_reqnext = req->bh;
req->bh = bh;
req->buffer = bh->b_data; req->buffer = bh->b_data;
req->current_nr_sectors = count; req->current_nr_sectors = count;
req->sector = sector; req->sector = sector;
mark_buffer_clean(bh); } else
req->bh = bh; continue;
up (&request_lock);
sti(); req->nr_sectors += count;
return; mark_buffer_clean(bh);
} up (&request_lock);
sti();
req = req->next; return;
} } while ((req = req->next) != NULL);
} }
up (&request_lock); up (&request_lock);
...@@ -524,12 +520,6 @@ void ll_rw_block(int rw, int nr, struct buffer_head * bh[]) ...@@ -524,12 +520,6 @@ void ll_rw_block(int rw, int nr, struct buffer_head * bh[])
goto sorry; goto sorry;
} }
/* If there are no pending requests for this device, then we insert
a dummy request for that device. This will prevent the request
from starting until we have shoved all of the blocks into the
queue, and then we let it rip. */
plug_device(dev);
for (i = 0; i < nr; i++) { for (i = 0; i < nr; i++) {
if (bh[i]) { if (bh[i]) {
set_bit(BH_Req, &bh[i]->b_state); set_bit(BH_Req, &bh[i]->b_state);
......
/* /*
* linux/drivers/block/rz1000.c Version 0.02 Feb 08, 1996 * linux/drivers/block/rz1000.c Version 0.03 Mar 20, 1996
* *
* Copyright (C) 1995-1996 Linus Torvalds & author (see below) * Copyright (C) 1995-1996 Linus Torvalds & author (see below)
*/ */
...@@ -36,7 +36,7 @@ void init_rz1000 (byte bus, byte fn) ...@@ -36,7 +36,7 @@ void init_rz1000 (byte bus, byte fn)
int rc; int rc;
unsigned short reg; unsigned short reg;
printk("ide: buggy RZ1000 interface: "); printk("ide0: buggy RZ1000 interface: ");
if ((rc = pcibios_read_config_word (bus, fn, PCI_COMMAND, &reg))) { if ((rc = pcibios_read_config_word (bus, fn, PCI_COMMAND, &reg))) {
ide_pci_access_error (rc); ide_pci_access_error (rc);
} else if (!(reg & 1)) { } else if (!(reg & 1)) {
......
...@@ -196,8 +196,8 @@ static const char *version = ...@@ -196,8 +196,8 @@ static const char *version =
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/if_arp.h>
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/skbuff.h> #include <linux/skbuff.h>
......
...@@ -154,6 +154,8 @@ struct pci_dev_info dev_info[] = { ...@@ -154,6 +154,8 @@ struct pci_dev_info dev_info[] = {
DEVICE( AL, AL_M1513, "M1513"), DEVICE( AL, AL_M1513, "M1513"),
DEVICE( AL, AL_M4803, "M4803"), DEVICE( AL, AL_M4803, "M4803"),
DEVICE( ASP, ASP_ABP940, "ABP940"), DEVICE( ASP, ASP_ABP940, "ABP940"),
DEVICE( CERN, CERN_SPSB_PMC, "STAR/RD24 SCI-PCI (PMC)"),
DEVICE( CERN, CERN_SPSB_PCI, "STAR/RD24 SCI-PCI (PMC)"),
DEVICE( IMS, IMS_8849, "8849"), DEVICE( IMS, IMS_8849, "8849"),
DEVICE( TEKRAM2, TEKRAM2_690c, "DC690c"), DEVICE( TEKRAM2, TEKRAM2_690c, "DC690c"),
DEVICE( AMCC, AMCC_MYRINET, "Myrinet PCI (M2-PCI-32)"), DEVICE( AMCC, AMCC_MYRINET, "Myrinet PCI (M2-PCI-32)"),
...@@ -475,6 +477,7 @@ const char *pci_strvendor(unsigned int vendor) ...@@ -475,6 +477,7 @@ const char *pci_strvendor(unsigned int vendor)
case PCI_VENDOR_ID_3COM: return "3Com"; case PCI_VENDOR_ID_3COM: return "3Com";
case PCI_VENDOR_ID_AL: return "Acer Labs"; case PCI_VENDOR_ID_AL: return "Acer Labs";
case PCI_VENDOR_ID_ASP: return "Advanced System Products"; case PCI_VENDOR_ID_ASP: return "Advanced System Products";
case PCI_VENDOR_ID_CERN: return "CERN";
case PCI_VENDOR_ID_IMS: return "IMS"; case PCI_VENDOR_ID_IMS: return "IMS";
case PCI_VENDOR_ID_TEKRAM2: return "Tekram"; case PCI_VENDOR_ID_TEKRAM2: return "Tekram";
case PCI_VENDOR_ID_AMCC: return "AMCC"; case PCI_VENDOR_ID_AMCC: return "AMCC";
......
This diff is collapsed.
...@@ -128,6 +128,7 @@ extern int nfs_mmap(struct inode * inode, struct file * file, struct vm_area_str ...@@ -128,6 +128,7 @@ extern int nfs_mmap(struct inode * inode, struct file * file, struct vm_area_str
/* NFS root */ /* NFS root */
#define NFS_ROOT "/tftpboot/%s"
#define NFS_ROOT_NAME_LEN 256 #define NFS_ROOT_NAME_LEN 256
#define NFS_ROOT_ADDRS_LEN 128 #define NFS_ROOT_ADDRS_LEN 128
......
...@@ -422,6 +422,10 @@ ...@@ -422,6 +422,10 @@
#define PCI_VENDOR_ID_ASP 0x10cd #define PCI_VENDOR_ID_ASP 0x10cd
#define PCI_DEVICE_ID_ASP_ABP940 0x1200 #define PCI_DEVICE_ID_ASP_ABP940 0x1200
#define PCI_VENDOR_ID_CERN 0x10dc
#define PCI_DEVICE_ID_CERN_SPSB_PMC 0x0001
#define PCI_DEVICE_ID_CERN_SPSB_PCI 0x0002
#define PCI_VENDOR_ID_IMS 0x10e0 #define PCI_VENDOR_ID_IMS 0x10e0
#define PCI_DEVICE_ID_IMS_8849 0x8849 #define PCI_DEVICE_ID_IMS_8849 0x8849
......
...@@ -165,7 +165,7 @@ int root_mountflags = MS_RDONLY; ...@@ -165,7 +165,7 @@ int root_mountflags = MS_RDONLY;
char *execute_command = 0; char *execute_command = 0;
#ifdef CONFIG_ROOT_NFS #ifdef CONFIG_ROOT_NFS
char nfs_root_name[NFS_ROOT_NAME_LEN] = { NFS_ROOT }; char nfs_root_name[NFS_ROOT_NAME_LEN] = { "default" };
char nfs_root_addrs[NFS_ROOT_ADDRS_LEN] = { "" }; char nfs_root_addrs[NFS_ROOT_ADDRS_LEN] = { "" };
#endif #endif
......
...@@ -923,9 +923,8 @@ static void update_process_times(unsigned long ticks, unsigned long system) ...@@ -923,9 +923,8 @@ static void update_process_times(unsigned long ticks, unsigned long system)
p->counter = 0; p->counter = 0;
need_resched = 1; need_resched = 1;
} }
update_one_process(p, ticks, ticks-system, system);
} }
update_one_process(p, ticks, ticks-system, system);
#else #else
int cpu,j; int cpu,j;
cpu = smp_processor_id(); cpu = smp_processor_id();
......
...@@ -39,6 +39,7 @@ asmlinkage void do_bottom_half(void) ...@@ -39,6 +39,7 @@ asmlinkage void do_bottom_half(void)
unsigned long mask, left; unsigned long mask, left;
void (**bh)(void); void (**bh)(void);
sti();
bh = bh_base; bh = bh_base;
active = bh_active & bh_mask; active = bh_active & bh_mask;
for (mask = 1, left = ~0 ; left & active ; bh++,mask += mask,left += left) { for (mask = 1, left = ~0 ; left & active ; bh++,mask += mask,left += left) {
......
...@@ -295,7 +295,7 @@ void __wait_on_page(struct page *page) ...@@ -295,7 +295,7 @@ void __wait_on_page(struct page *page)
* This is really ugly. But the goto's actually try to clarify some * This is really ugly. But the goto's actually try to clarify some
* of the logic when it comes to error handling etc. * of the logic when it comes to error handling etc.
*/ */
#define MAX_READAHEAD (PAGE_SIZE*4) #define MAX_READAHEAD (PAGE_SIZE*8)
int generic_file_read(struct inode * inode, struct file * filp, char * buf, int count) int generic_file_read(struct inode * inode, struct file * filp, char * buf, int count)
{ {
int error, read; int error, read;
......
...@@ -96,6 +96,8 @@ static struct symbol_table net_syms = { ...@@ -96,6 +96,8 @@ static struct symbol_table net_syms = {
X(ip_options_compile), X(ip_options_compile),
X(ip_rt_put), X(ip_rt_put),
X(arp_send), X(arp_send),
X(ip_id_count),
X(ip_send_check),
#ifdef CONFIG_IP_FORWARD #ifdef CONFIG_IP_FORWARD
X(ip_forward), X(ip_forward),
#endif #endif
...@@ -166,6 +168,8 @@ static struct symbol_table net_syms = { ...@@ -166,6 +168,8 @@ static struct symbol_table net_syms = {
X(kill_fasync), X(kill_fasync),
#ifdef CONFIG_FIREWALL #ifdef CONFIG_FIREWALL
X(call_in_firewall), X(call_in_firewall),
X(call_out_firewall),
X(call_fw_firewall),
#endif #endif
#endif /* CONFIG_INET */ #endif /* CONFIG_INET */
......
...@@ -1097,7 +1097,7 @@ then ...@@ -1097,7 +1097,7 @@ then
# Activate the Linux compatible sound configuration. # Activate the Linux compatible sound configuration.
# This may not work for all sound cards. (See sound docs) # This may not work for all sound cards. (See sound docs)
# #
make -C drivers/sound mkscript >>.menuconfig.log 2>&1 make -C drivers/sound mkscript kernelconfig >>.menuconfig.log 2>&1
echo "# $kernel_version" >.menuconfig echo "# $kernel_version" >.menuconfig
fi fi
......
...@@ -205,7 +205,7 @@ proc write_tristate { file1 file2 varname variable dep } { ...@@ -205,7 +205,7 @@ proc write_tristate { file1 file2 varname variable dep } {
elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \ elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \
then { puts $file1 "$varname=m"; \ then { puts $file1 "$varname=m"; \
puts $file2 "#undef $varname"; \ puts $file2 "#undef $varname"; \
puts $file2 "#define $varname_MODULE 1" } \ puts $file2 "#define ${varname}_MODULE 1" } \
elseif { $variable == 1 && $dep != 2 } \ elseif { $variable == 1 && $dep != 2 } \
then { puts $file1 "$varname=y"; \ then { puts $file1 "$varname=y"; \
puts $file2 "#define $varname 1" } \ puts $file2 "#define $varname 1" } \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment