## Automatically generated incremental diff ## From: linux-2.0.31-pre7 ## To: linux-2.0.31-pre8 ## Robot: $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $ diff -urN linux-2.0.31-pre7/Documentation/Changes linux-2.0.31-pre8/Documentation/Changes --- linux-2.0.31-pre7/Documentation/Changes 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/Documentation/Changes 2003-08-15 15:04:07.000000000 -0700 @@ -142,7 +142,7 @@ rlogin. Libc-5.3.12 fixes this, so if you're going to run an experimental libc, be sure to upgrade to 5.3.12. Libc-5.4.33 is currently available as well, but it may have problems, so caveat -emptor. It fixes lots of problems, but make break even more programs +emptor. It fixes lots of problems, but may break even more programs than 5.3.12. If you're getting an error message that is something to the effect of diff -urN linux-2.0.31-pre7/Documentation/memory-tuning.txt linux-2.0.31-pre8/Documentation/memory-tuning.txt --- linux-2.0.31-pre7/Documentation/memory-tuning.txt 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/Documentation/memory-tuning.txt 2003-08-15 15:04:07.000000000 -0700 @@ -12,7 +12,7 @@ You can adjust these with a command such as: -# echo 128 256 512 > /proc/sys/vm/freepages +# echo "128 256 512" > /proc/sys/vm/freepages Free memory never goes down below min_free_pages except for atomic allocation. Background swapping is started if the number of free @@ -38,7 +38,7 @@ I've found that -# echo 128 256 1024 > /proc/sys/vm/freepages +# echo "128 256 1024" > /proc/sys/vm/freepages gives good performance for a 32 Meg system used as a small server and personal workstation. diff -urN linux-2.0.31-pre7/drivers/char/pcwd.c linux-2.0.31-pre8/drivers/char/pcwd.c --- linux-2.0.31-pre7/drivers/char/pcwd.c 1996-08-29 09:15:14.000000000 -0700 +++ linux-2.0.31-pre8/drivers/char/pcwd.c 2003-08-15 15:04:07.000000000 -0700 @@ -15,6 +15,9 @@ * check_region command due to Alan's suggestion. * 960821 Made changes to compile in newer 2.0.x kernels. Added * "cold reboot sense" entry. + * 970819 Fixed use of is_open flag so pcwd_write does not always return + * -EIO; this prevented tickling. Enabled board on open and + * disabled on close. */ #include @@ -46,7 +49,11 @@ #define WD_TIMERRESET_PORT2 0x370 /* Reset port - second choice */ #define WD_CTLSTAT_PORT1 0x271 /* Control port - first choice */ #define WD_CTLSTAT_PORT2 0x371 /* Control port - second choice */ -#define WD_PORT_EXTENT 2 /* Takes up two addresses */ +#define WD_CTLSTAT2_PORT1 0x272 /* Control port#2 - first choice */ +#define WD_CTLSTAT2_PORT2 0x372 /* Control port#2 - second choice */ +#define WD_DISABLE_PORT1 0x273 /* Disable port - first choice */ +#define WD_DISABLE_PORT2 0x373 /* Disable port - second choice */ +#define WD_PORT_EXTENT 4 /* Takes up four addresses */ #define WD_WDRST 0x01 /* Previously reset state */ #define WD_T110 0x02 /* Temperature overheat sense */ @@ -54,7 +61,9 @@ #define WD_RLY2 0x08 /* External relay triggered */ #define WD_SRLY2 0x80 /* Software external relay triggered */ + static int current_ctlport, current_readport; +static int current_ctlport2, current_disport; static int is_open, is_eof; int pcwd_checkcard(void) @@ -193,7 +202,7 @@ outb_p(wdrst_stat, current_ctlport); - return(1); + return(len); } static int pcwd_ioctl(struct inode *inode, struct file *file, @@ -235,10 +244,22 @@ static int pcwd_open(struct inode *ino, struct file *filep) { #ifdef DEBUG - printk("pcwd: open request\n"); + int before, after; + + before = inb_p (current_ctlport2); +#endif + if (is_open) + return -EIO; + + /* Enable the port */ + outb_p (0, current_disport); +#ifdef DEBUG + after = inb_p (current_ctlport2); + printk ("pcwd: open: control status #2 (b,a): %x, %x\n", before,after); #endif MOD_INC_USE_COUNT; + is_open = 1; is_eof = 0; return(0); } @@ -249,6 +270,10 @@ printk("pcwd: close request\n"); #endif + is_open = 0; + /* Disable the board */ + outb_p (0xa5, current_disport); + outb_p (0xa5, current_disport); MOD_DEC_USE_COUNT; } @@ -290,6 +315,8 @@ current_ctlport = WD_TIMERRESET_PORT1; current_readport = WD_CTLSTAT_PORT1; + current_ctlport2 = WD_CTLSTAT2_PORT1; + current_disport = WD_DISABLE_PORT1; if (!pcwd_checkcard()) { #ifdef DEBUG @@ -298,6 +325,8 @@ current_ctlport = WD_TIMERRESET_PORT2; current_readport = WD_CTLSTAT_PORT2; + current_ctlport2 = WD_CTLSTAT2_PORT2; + current_disport = WD_DISABLE_PORT2; if (!pcwd_checkcard()) { printk("pcwd: No card detected, or wrong port assigned.\n"); @@ -327,8 +356,11 @@ #ifdef MODULE void cleanup_module(void) { + /* Disable the board */ + outb_p (0xa5, current_disport); + outb_p (0xa5, current_disport); misc_deregister(&pcwd_miscdev); - release_region(current_ctlport, 2); + release_region(current_ctlport, WD_PORT_EXTENT); #ifdef DEBUG printk("pcwd: Cleanup successful.\n"); #endif diff -urN linux-2.0.31-pre7/drivers/isdn/avmb1/b1capi.c linux-2.0.31-pre8/drivers/isdn/avmb1/b1capi.c --- linux-2.0.31-pre7/drivers/isdn/avmb1/b1capi.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/isdn/avmb1/b1capi.c 2003-08-15 15:04:07.000000000 -0700 @@ -1,11 +1,15 @@ /* - * $Id: b1capi.c,v 1.4 1997/05/27 15:17:45 fritz Exp $ + * $Id: b1capi.c,v 1.4.2.1 1997/07/12 08:18:59 calle Exp $ * * CAPI 2.0 Module for AVM B1-card. * * (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) * * $Log: b1capi.c,v $ + * Revision 1.4.2.1 1997/07/12 08:18:59 calle + * Correct bug in CARD_NR macro, so now more than one card will work. + * Allow card reset, even if card is in running state. + * * Revision 1.4 1997/05/27 15:17:45 fritz * Added changes for recent 2.1.x kernels: * changed return type of isdn_close @@ -48,7 +52,7 @@ #include "capicmd.h" #include "capiutil.h" -static char *revision = "$Revision: 1.4 $"; +static char *revision = "$Revision: 1.4.2.1 $"; /* ------------------------------------------------------------- */ @@ -109,7 +113,7 @@ #define VALID_CARD(c) ((c) > 0 && (c) <= ncards) #define CARD(c) (&cards[(c)-1]) -#define CARDNR(cp) ((cards-(cp))+1) +#define CARDNR(cp) (((cp)-cards)+1) static avmb1_appl applications[CAPI_MAXAPPL]; static avmb1_card cards[CAPI_MAXCONTR]; @@ -285,6 +289,8 @@ return 0; } + + /* -------- Receiver ------------------------------------------ */ @@ -365,6 +371,7 @@ { struct capi_interface_user *p; + printk(KERN_NOTICE "b1capi: notify up contr %d\n", contr); for (p = capi_users; p; p = p->next) { if (p->callback) (*p->callback) (KCI_CONTRUP, contr, @@ -376,6 +383,7 @@ static void notify_down(__u16 contr) { struct capi_interface_user *p; + printk(KERN_NOTICE "b1capi: notify down contr %d\n", contr); for (p = capi_users; p; p = p->next) { if (p->callback) (*p->callback) (KCI_CONTRDOWN, contr, 0); @@ -422,6 +430,32 @@ set_bit(CARDNR(card), ¬ify_up_set); queue_task(&tq_state_notify, &tq_scheduler); + printk(KERN_NOTICE "b1capi: card %d ready.\n", CARDNR(card)); +} + +static void avmb1_card_down(avmb1_card * card) +{ + __u16 appl; + + card->cardstate = CARD_DETECTED; + + for (appl = 1; appl <= CAPI_MAXAPPL; appl++) { + avmb1_ncci **pp, **nextpp; + for (pp = &APPL(appl)->nccilist; *pp; pp = nextpp) { + if (NCCI2CTRL((*pp)->ncci) == card->cnr) { + avmb1_ncci *np = *pp; + *pp = np->next; + printk(KERN_INFO "b1capi: appl %d ncci 0x%x forced down!\n", appl, np->ncci); + kfree(np); + nextpp = pp; + } else { + nextpp = &(*pp)->next; + } + } + } + set_bit(CARDNR(card), ¬ify_down_set); + queue_task(&tq_state_notify, &tq_scheduler); + printk(KERN_NOTICE "b1capi: card %d down.\n", CARDNR(card)); } /* ------------------------------------------------------------- */ @@ -537,8 +571,9 @@ while ((skb = skb_dequeue(&APPL(applid)->recv_queue)) != 0) kfree_skb(skb, FREE_READ); for (i = 0; i < ncards; i++) { - if (cards[i].cardstate != CARD_RUNNING) + if (cards[i].cardstate != CARD_RUNNING) { continue; + } APPL(applid)->releasing++; B1_send_release(cards[i].port, applid); } @@ -775,12 +810,13 @@ card = CARD(rdef.contr); if (card->cardstate == CARD_RUNNING) - return -EBUSY; + avmb1_card_down(card); + + card->cardstate = CARD_DETECTED; B1_reset(card->port); B1_reset(card->port); - card->cardstate = CARD_DETECTED; return 0; } return -EINVAL; diff -urN linux-2.0.31-pre7/drivers/isdn/avmb1/b1lli.c linux-2.0.31-pre8/drivers/isdn/avmb1/b1lli.c --- linux-2.0.31-pre7/drivers/isdn/avmb1/b1lli.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/isdn/avmb1/b1lli.c 2003-08-15 15:04:07.000000000 -0700 @@ -1,11 +1,14 @@ /* - * $Id: b1lli.c,v 1.1 1997/03/04 21:50:28 calle Exp $ + * $Id: b1lli.c,v 1.1.2.1 1997/07/13 12:16:46 calle Exp $ * * ISDN lowlevel-module for AVM B1-card. * * (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) * * $Log: b1lli.c,v $ + * Revision 1.1.2.1 1997/07/13 12:16:46 calle + * bug fix for more than one controller in connect_req. + * * Revision 1.1 1997/03/04 21:50:28 calle * Frirst version in isdn4linux * @@ -428,7 +431,9 @@ CAPIMSG_APPID(skb->data), capi_cmd2str(cmd, subcmd), len); } else { - printk(KERN_DEBUG "b1lli: Put %s\n", capi_message2str(skb->data)); + printk(KERN_DEBUG "b1lli: Put [0x%lx] %s\n", + (unsigned long) contr, + capi_message2str(skb->data)); } } @@ -447,7 +452,7 @@ CAPIMSG_APPID(skb->data), capi_cmd2str(cmd, subcmd), len); } else { - printk(KERN_DEBUG "b1lli: Put %s\n", capi_message2str(skb->data)); + printk(KERN_DEBUG "b1lli: Put [0x%lx] %s\n", (unsigned long)contr, capi_message2str(skb->data)); } } save_flags(flags); @@ -499,7 +504,7 @@ capi_cmd2str(cmd, subcmd), MsgLen, DataB3Len); } else { - printk(KERN_DEBUG "b1lli: Got %s\n", capi_message2str(card->msgbuf)); + printk(KERN_DEBUG "b1lli: Got [0x%lx] %s\n", (unsigned long)contr, capi_message2str(card->msgbuf)); } } if (!(skb = dev_alloc_skb(DataB3Len + MsgLen))) { @@ -528,7 +533,9 @@ capi_cmd2str(cmd, subcmd), MsgLen); } else { - printk(KERN_DEBUG "b1lli: Got %s\n", capi_message2str(card->msgbuf)); + printk(KERN_DEBUG "b1lli: Got [0x%lx] %s\n", + (unsigned long) contr, + capi_message2str(card->msgbuf)); } } diff -urN linux-2.0.31-pre7/drivers/isdn/avmb1/capidrv.c linux-2.0.31-pre8/drivers/isdn/avmb1/capidrv.c --- linux-2.0.31-pre7/drivers/isdn/avmb1/capidrv.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/isdn/avmb1/capidrv.c 2003-08-15 15:04:07.000000000 -0700 @@ -1,11 +1,14 @@ /* - * $Id: capidrv.c,v 1.3 1997/05/18 09:24:15 calle Exp $ + * $Id: capidrv.c,v 1.3.2.1 1997/07/13 12:16:48 calle Exp $ * * ISDN4Linux Driver, using capi20 interface (kernelcapi) * * Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) * * $Log: capidrv.c,v $ + * Revision 1.3.2.1 1997/07/13 12:16:48 calle + * bug fix for more than one controller in connect_req. + * * Revision 1.3 1997/05/18 09:24:15 calle * added verbose disconnect reason reporting to avmb1. * some fixes in capi20 interface. @@ -48,7 +51,7 @@ #include "capicmd.h" #include "capidrv.h" -static char *revision = "$Revision: 1.3 $"; +static char *revision = "$Revision: 1.3.2.1 $"; int debugmode = 0; #ifdef HAS_NEW_SYMTAB @@ -1270,7 +1273,7 @@ capi_fill_CONNECT_REQ(&cmdcmsg, global.appid, card->msgid++, - 1, /* adr */ + card->contrnr, /* adr */ si2cip(bchan->si1, bchan->si2), /* cipvalue */ called, /* CalledPartyNumber */ calling, /* CallingPartyNumber */ diff -urN linux-2.0.31-pre7/drivers/pci/pci.c linux-2.0.31-pre8/drivers/pci/pci.c --- linux-2.0.31-pre7/drivers/pci/pci.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/pci/pci.c 2003-08-15 15:04:07.000000000 -0700 @@ -42,6 +42,9 @@ */ struct pci_dev_info dev_info[] = { DEVICE( COMPAQ, COMPAQ_1280, "QVision 1280/p"), + DEVICE( COMPAQ, COMPAQ_NETELL100,"Netelligent 10/100"), + DEVICE( COMPAQ, COMPAQ_NETELL10,"Netelligent 10"), + DEVICE( COMPAQ, COMPAQ_NETFLEX3,"NetFlex 3"), DEVICE( COMPAQ, COMPAQ_THUNDER, "ThunderLAN"), DEVICE( NCR, NCR_53C810, "53c810"), DEVICE( NCR, NCR_53C820, "53c820"), @@ -57,10 +60,12 @@ DEVICE( ATI, ATI_210888CX, "210888CX"), DEVICE( ATI, ATI_215GT, "Mach64 GT (Rage II)"), DEVICE( ATI, ATI_210888GX, "210888GX"), + DEVICE( ATI, ATI_264VT, "Mach64 VT"), DEVICE( VLSI, VLSI_82C592, "82C592-FC1"), DEVICE( VLSI, VLSI_82C593, "82C593-FC1"), DEVICE( VLSI, VLSI_82C594, "82C594-AFC2"), DEVICE( VLSI, VLSI_82C597, "82C597-AFC2"), + DEVICE( VLSI, VLSI_VAS96011, "VAS96011 PowerPC"), DEVICE( ADL, ADL_2301, "2301"), DEVICE( NS, NS_87410, "87410"), DEVICE( TSENG, TSENG_W32P_2, "ET4000W32P"), @@ -85,10 +90,15 @@ DEVICE( CIRRUS, CIRRUS_5434_8, "GD 5434"), DEVICE( CIRRUS, CIRRUS_5436, "GD 5436"), DEVICE( CIRRUS, CIRRUS_5446, "GD 5446"), + DEVICE( CIRRUS, CIRRUS_5480, "GD 5480"), + DEVICE( CIRRUS, CIRRUS_5464, "GD 5464"), + DEVICE( CIRRUS, CIRRUS_5465, "GD 5465"), DEVICE( CIRRUS, CIRRUS_6729, "CL 6729"), + DEVICE( CIRRUS, CIRRUS_6832, "PD 6832"), DEVICE( CIRRUS, CIRRUS_7542, "CL 7542"), DEVICE( CIRRUS, CIRRUS_7543, "CL 7543"), DEVICE( CIRRUS, CIRRUS_7541, "CL 7541"), + DEVICE( IBM, IBM_FIRE_CORAL, "Fire Coral"), DEVICE( IBM, IBM_82G2675, "82G2675"), DEVICE( IBM, IBM_82351, "82351"), DEVICE( WD, WD_7197, "WD 7197"), @@ -101,6 +111,7 @@ DEVICE( MATROX, MATROX_MGA_2, "Atlas PX2085"), DEVICE( MATROX, MATROX_MIL, "Millennium"), DEVICE( MATROX, MATROX_MYS, "Mystique"), + DEVICE( MATROX, MATROX_MIL_2, "Millennium II"), DEVICE( MATROX, MATROX_MGA_IMP, "MGA Impression"), DEVICE( CT, CT_65545, "65545"), DEVICE( CT, CT_65548, "65548"), @@ -115,6 +126,7 @@ DEVICE( SI, SI_501, "85C501"), DEVICE( SI, SI_496, "85C496"), DEVICE( SI, SI_601, "85C601"), + DEVICE( SI, SI_5107, "5107"), DEVICE( SI, SI_5511, "85C5511"), DEVICE( SI, SI_5513, "85C5513"), DEVICE( SI, SI_5571, "5571"), @@ -134,6 +146,8 @@ DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER_NC, "MultiMaster NC"), DEVICE( BUSLOGIC, BUSLOGIC_MULTIMASTER, "MultiMaster"), DEVICE( BUSLOGIC, BUSLOGIC_FLASHPOINT, "FlashPoint"), + DEVICE( TI, TI_PCI1130, "PCI1130"), + DEVICE( TI, TI_PCI1131, "PCI1131"), DEVICE( OAK, OAK_OTI107, "OTI107"), DEVICE( WINBOND2, WINBOND2_89C940,"NE2000-PCI"), DEVICE( MOTOROLA, MOTOROLA_MPC105,"MPC105 Eagle"), @@ -152,13 +166,24 @@ DEVICE( UMC, UMC_UM8886N, "UM8886N"), DEVICE( UMC, UMC_UM8891N, "UM8891N"), DEVICE( X, X_AGX016, "ITT AGX016"), + DEVICE( APPLE, APPLE_BANDIT, "Bandit"), + DEVICE( APPLE, APPLE_GC, "Grand Central"), + DEVICE( APPLE, APPLE_HYDRA, "Hydra"), DEVICE( NEXGEN, NEXGEN_82C501, "82C501"), DEVICE( QLOGIC, QLOGIC_ISP1020, "ISP1020"), DEVICE( QLOGIC, QLOGIC_ISP1022, "ISP1022"), DEVICE( LEADTEK, LEADTEK_805, "S3 805"), DEVICE( CONTAQ, CONTAQ_82C599, "82C599"), + DEVICE( OLICOM, OLICOM_OC3136, "OC-3136/3137"), + DEVICE( OLICOM, OLICOM_OC2315, "OC-2315"), + DEVICE( OLICOM, OLICOM_OC2325, "OC-2325"), + DEVICE( OLICOM, OLICOM_OC2183, "OC-2183/2185"), + DEVICE( OLICOM, OLICOM_OC2326, "OC-2326"), + DEVICE( OLICOM, OLICOM_OC6151, "OC-6151/6152"), DEVICE( CMD, CMD_640, "640 (buggy)"), + DEVICE( CMD, CMD_643, "643"), DEVICE( CMD, CMD_646, "646"), + DEVICE( CMD, CMD_670, "670"), DEVICE( VISION, VISION_QD8500, "QD-8500"), DEVICE( VISION, VISION_QD8580, "QD-8580"), DEVICE( BROOKTREE, BROOKTREE_848, "Bt848"), @@ -167,6 +192,7 @@ DEVICE( WINBOND, WINBOND_83769, "W83769F"), DEVICE( WINBOND, WINBOND_82C105, "SL82C105"), DEVICE( WINBOND, WINBOND_83C553, "W83C553"), + DEVICE( DATABOOK, DATABOOK_87144, "DB87144"), DEVICE( 3COM, 3COM_3C590, "3C590 10bT"), DEVICE( 3COM, 3COM_3C595TX, "3C595 100bTX"), DEVICE( 3COM, 3COM_3C595T4, "3C595 100bT4"), @@ -183,6 +209,7 @@ DEVICE( AL, AL_M1513, "M1513"), DEVICE( AL, AL_M4803, "M4803"), DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_NM2070, "Magicgraph NM2070"), + DEVICE( NEOMAGIC, NEOMAGIC_MAGICGRAPH_128V, "MagicGraph 128V"), DEVICE( ASP, ASP_ABP940, "ABP940"), DEVICE( ASP, ASP_ABP940U, "ABP940U"), DEVICE( CERN, CERN_SPSB_PMC, "STAR/RD24 SCI-PCI (PMC)"), @@ -195,6 +222,8 @@ DEVICE( INTERG, INTERG_1680, "IGA-1680"), DEVICE( INTERG, INTERG_1682, "IGA-1682"), DEVICE( REALTEK, REALTEK_8029, "8029"), + DEVICE( REALTEK, REALTEK_8129, "8129"), + DEVICE( TRUEVISION, TRUEVISION_T1000,"TARGA 1000"), DEVICE( INIT, INIT_320P, "320 P"), DEVICE( VIA, VIA_82C505, "VT 82C505"), DEVICE( VIA, VIA_82C561, "VT 82C561"), @@ -203,6 +232,7 @@ DEVICE( VIA, VIA_82C585, "VT 82C585VP Apollo VP-1"), DEVICE( VIA, VIA_82C586_0, "VT 82C586 Apollo VP-1"), DEVICE( VIA, VIA_82C416, "VT 82C416MV"), + DEVICE( VIA, VIA_82C926, "VT 82C926 Amazon"), DEVICE( VORTEX, VORTEX_GDT60x0, "GDT 60x0"), DEVICE( VORTEX, VORTEX_GDT6000B,"GDT 6000b"), DEVICE( VORTEX, VORTEX_GDT6x10, "GDT 6110/6510"), @@ -219,22 +249,28 @@ DEVICE( VORTEX, VORTEX_GDT6555, "GDT 6555"), DEVICE( EF, EF_ATM_FPGA, "155P-MF1 (FPGA)"), DEVICE( EF, EF_ATM_ASIC, "155P-MF1 (ASIC)"), - DEVICE( IMAGINGTECH, IMAGINGTECH_ICPCI, "MVC IC-PCI"), DEVICE( FORE, FORE_PCA200PC, "PCA-200PC"), DEVICE( FORE, FORE_PCA200E, "PCA-200E"), DEVICE( IMAGINGTECH, IMAGINGTECH_ICPCI, "MVC IC-PCI"), + DEVICE( PHILIPS, PHILIPS_SAA7146,"SAA7146"), DEVICE( PLX, PLX_9060, "PCI9060 i960 bridge"), DEVICE( ALLIANCE, ALLIANCE_PROMOTIO, "Promotion-6410"), DEVICE( ALLIANCE, ALLIANCE_PROVIDEO, "Provideo"), DEVICE( VMIC, VMIC_VME, "VMIVME-7587"), DEVICE( DIGI, DIGI_RIGHTSWITCH, "RightSwitch SE-6"), DEVICE( MUTECH, MUTECH_MV1000, "MV-1000"), + DEVICE( RENDITION, RENDITION_VERITE,"Verite 1000"), DEVICE( TOSHIBA, TOSHIBA_601, "Laptop"), + DEVICE( RICOH, RICOH_RL5C466, "RL5C466"), DEVICE( ZEITNET, ZEITNET_1221, "1221"), DEVICE( ZEITNET, ZEITNET_1225, "1225"), - DEVICE( OMEGA, OMEGA_PCMCIA, "PCMCIA"), + DEVICE( OMEGA, OMEGA_82C092G, "82C092G"), + DEVICE( NP, NP_PCI_FDDI, "NP-PCI"), DEVICE( SPECIALIX, SPECIALIX_XIO, "XIO/SIO host"), DEVICE( SPECIALIX, SPECIALIX_RIO, "RIO host"), + DEVICE( IKON, IKON_10115, "10115 Greensheet"), + DEVICE( IKON, IKON_10117, "10117 Greensheet"), + DEVICE( ZORAN, ZORAN_36057, "ZR36057"), DEVICE( ZORAN, ZORAN_36120, "ZR36120"), DEVICE( COMPEX, COMPEX_ENET100VG4, "Readylink ENET100-VG4"), DEVICE( COMPEX, COMPEX_RL2000, "ReadyLink 2000"), @@ -247,7 +283,7 @@ DEVICE( CYCLADES, CYCLOM_Z_Lo, "Cyclom-Z below 1Mbyte"), DEVICE( CYCLADES, CYCLOM_Z_Hi, "Cyclom-Z above 1Mbyte"), DEVICE( 3DFX, 3DFX_VOODOO, "Voodoo"), - DEVICE( SIGMA_DESIGNS, SD_REALMAGIC64GX, "REALmagic64/GX (SD 6425)"), + DEVICE( SIGMADES, SIGMADES_6425, "REALmagic64/GX"), DEVICE( OPTIBASE, OPTIBASE_FORGE, "MPEG Forge"), DEVICE( OPTIBASE, OPTIBASE_FUSION,"MPEG Fusion"), DEVICE( OPTIBASE, OPTIBASE_VPLEX, "VideoPlex"), @@ -256,9 +292,12 @@ DEVICE( SYMPHONY, SYMPHONY_101, "82C101"), DEVICE( TEKRAM, TEKRAM_DC290, "DC-290"), DEVICE( 3DLABS, 3DLABS_300SX, "GLINT 300SX"), - DEVICE( 3DLABS, 3DLABS_DELTA, "GLINT Delta"), - DEVICE( 3DLABS, 3DLABS_PERMEDIA,"PERMEDIA"), + DEVICE( 3DLABS, 3DLABS_500TX, "GLINT 500TX"), + DEVICE( 3DLABS, 3DLABS_DELTA, "GLINT Delta"), + DEVICE( 3DLABS, 3DLABS_PERMEDIA,"PERMEDIA"), + DEVICE( AVANCE, AVANCE_ALG2064, "ALG2064i"), DEVICE( AVANCE, AVANCE_2302, "ALG-2302"), + DEVICE( NETVIN, NETVIN_NV5000SC,"NV5000"), DEVICE( S3, S3_PLATO_PXS, "PLATO/PX (system)"), DEVICE( S3, S3_ViRGE, "ViRGE"), DEVICE( S3, S3_TRIO, "Trio32/Trio64"), @@ -289,8 +328,8 @@ DEVICE( INTEL, INTEL_82437, "82437"), DEVICE( INTEL, INTEL_82371_0, "82371 Triton PIIX"), DEVICE( INTEL, INTEL_82371_1, "82371 Triton PIIX"), - DEVICE( INTEL, INTEL_82371MX, "82371MX Mobile PCI I/O IDE Xcelerator (MPIIX)"), - DEVICE( INTEL, INTEL_82430MX, "82430MX Mobile PCIset"), + DEVICE( INTEL, INTEL_82371MX, "430MX - 82371MX MPIIX"), + DEVICE( INTEL, INTEL_82437MX, "430MX - 82437MX MTSC"), DEVICE( INTEL, INTEL_82441, "82441FX Natoma"), DEVICE( INTEL, INTEL_82439, "82439HX Triton II"), DEVICE( INTEL, INTEL_82371SB_0,"82371SB Natoma/Triton II PIIX3"), @@ -299,11 +338,11 @@ DEVICE( INTEL, INTEL_82437VX, "82437VX Triton II"), DEVICE( INTEL, INTEL_82439TX, "82439TX"), DEVICE( INTEL, INTEL_82371AB_0,"82371AB PIIX4"), - DEVICE( INTEL, INTEL_82371AB, "82371AB PIIX4"), + DEVICE( INTEL, INTEL_82371AB, "82371AB 430TX PIIX4"), DEVICE( INTEL, INTEL_82371AB_2,"82371AB PIIX4"), DEVICE( INTEL, INTEL_82371AB_3,"82371AB PIIX4 Power Management"), DEVICE( INTEL, INTEL_P6, "Orion P6"), - DEVICE( INTEL, INTEL_82450GX, "82450GX Orion"), + DEVICE( INTEL, INTEL_82450GX, "82450GX Orion P6"), DEVICE( KTI, KTI_ET32P2, "ET32P2"), DEVICE( ADAPTEC, ADAPTEC_7850, "AIC-7850"), DEVICE( ADAPTEC, ADAPTEC_7855, "AIC-7855"), @@ -541,13 +580,15 @@ case PCI_VENDOR_ID_HP: return "Hewlett Packard"; case PCI_VENDOR_ID_PCTECH: return "PCTECH"; case PCI_VENDOR_ID_DPT: return "DPT"; - case PCI_VENDOR_ID_OPTI: return "OPTI"; + case PCI_VENDOR_ID_OPTI: return "OPTi"; case PCI_VENDOR_ID_SGS: return "SGS Thomson"; case PCI_VENDOR_ID_BUSLOGIC: return "BusLogic"; + case PCI_VENDOR_ID_TI: return "Texas Instruments"; case PCI_VENDOR_ID_OAK: return "OAK"; case PCI_VENDOR_ID_WINBOND2: return "Winbond"; case PCI_VENDOR_ID_MOTOROLA: return "Motorola"; case PCI_VENDOR_ID_PROMISE: return "Promise Technology"; + case PCI_VENDOR_ID_APPLE: return "Apple"; case PCI_VENDOR_ID_N9: return "Number Nine"; case PCI_VENDOR_ID_UMC: return "UMC"; case PCI_VENDOR_ID_X: return "X TECHNOLOGY"; @@ -563,8 +604,11 @@ case PCI_VENDOR_ID_SIERRA: return "Sierra"; case PCI_VENDOR_ID_ACC: return "ACC MICROELECTRONICS"; case PCI_VENDOR_ID_WINBOND: return "Winbond"; + case PCI_VENDOR_ID_DATABOOK: return "Databook"; case PCI_VENDOR_ID_3COM: return "3Com"; + case PCI_VENDOR_ID_SMC: return "SMC"; case PCI_VENDOR_ID_AL: return "Acer Labs"; + case PCI_VENDOR_ID_MITSUBISHI: return "Mitsubishi"; case PCI_VENDOR_ID_NEOMAGIC: return "Neomagic"; case PCI_VENDOR_ID_ASP: return "Advanced System Products"; case PCI_VENDOR_ID_CERN: return "CERN"; @@ -574,37 +618,45 @@ case PCI_VENDOR_ID_AMCC: return "AMCC"; case PCI_VENDOR_ID_INTERG: return "Intergraphics"; case PCI_VENDOR_ID_REALTEK: return "Realtek"; + case PCI_VENDOR_ID_TRUEVISION: return "Truevision"; case PCI_VENDOR_ID_INIT: return "Initio Corp"; case PCI_VENDOR_ID_VIA: return "VIA Technologies"; case PCI_VENDOR_ID_VORTEX: return "VORTEX"; case PCI_VENDOR_ID_EF: return "Efficient Networks"; case PCI_VENDOR_ID_FORE: return "Fore Systems"; case PCI_VENDOR_ID_IMAGINGTECH: return "Imaging Technology"; + case PCI_VENDOR_ID_PHILIPS: return "Philips"; case PCI_VENDOR_ID_PLX: return "PLX"; case PCI_VENDOR_ID_ALLIANCE: return "Alliance"; case PCI_VENDOR_ID_VMIC: return "VMIC"; case PCI_VENDOR_ID_DIGI: return "Digi Intl."; case PCI_VENDOR_ID_MUTECH: return "Mutech"; + case PCI_VENDOR_ID_RENDITION: return "Rendition"; case PCI_VENDOR_ID_TOSHIBA: return "Toshiba"; + case PCI_VENDOR_ID_RICOH: return "Ricoh"; case PCI_VENDOR_ID_ZEITNET: return "ZeitNet"; + case PCI_VENDOR_ID_OMEGA: return "Omega Micro"; + case PCI_VENDOR_ID_NP: return "Network Peripherals"; case PCI_VENDOR_ID_SPECIALIX: return "Specialix"; + case PCI_VENDOR_ID_IKON: return "Ikon"; + case PCI_VENDOR_ID_ZORAN: return "Zoran"; case PCI_VENDOR_ID_COMPEX: return "Compex"; case PCI_VENDOR_ID_RP: return "Comtrol"; case PCI_VENDOR_ID_CYCLADES: return "Cyclades"; - case PCI_VENDOR_ID_3DFX: return "3DFX"; - case PCI_VENDOR_ID_SIGMA_DESIGNS: return "Sigma Designs"; - case PCI_VENDOR_ID_OPTIBASE: return "Optibase Inc."; + case PCI_VENDOR_ID_3DFX: return "3Dfx"; + case PCI_VENDOR_ID_SIGMADES: return "Sigma Designs"; + case PCI_VENDOR_ID_OPTIBASE: return "Optibase"; case PCI_VENDOR_ID_SYMPHONY: return "Symphony"; case PCI_VENDOR_ID_TEKRAM: return "Tekram"; case PCI_VENDOR_ID_3DLABS: return "3Dlabs"; case PCI_VENDOR_ID_AVANCE: return "Avance"; + case PCI_VENDOR_ID_NETVIN: return "NetVin"; case PCI_VENDOR_ID_S3: return "S3 Inc."; case PCI_VENDOR_ID_INTEL: return "Intel"; + case PCI_VENDOR_ID_KTI: return "KTI"; case PCI_VENDOR_ID_ADAPTEC: return "Adaptec"; case PCI_VENDOR_ID_ATRONICS: return "Atronics"; -#if 0 - case PCI_VENDOR_ID_HER: return "Hercules"; -#endif + case PCI_VENDOR_ID_ARK: return "ARK Logic"; default: return "Unknown vendor"; } } diff -urN linux-2.0.31-pre7/drivers/scsi/ncr53c8xx.c linux-2.0.31-pre8/drivers/scsi/ncr53c8xx.c --- linux-2.0.31-pre7/drivers/scsi/ncr53c8xx.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/scsi/ncr53c8xx.c 2003-08-15 15:04:07.000000000 -0700 @@ -64,7 +64,7 @@ */ /* -** 26 July 1997, version 2.4 +** 21 August 1997, version 2.4a ** ** Supported SCSI-II features: ** Synchronous negotiation @@ -8801,7 +8801,7 @@ else if (!strncmp(cur, "safe:", 5) && val) memcpy(&driver_setup, &driver_safe_setup, sizeof(driver_setup)); else - printf("ncr53c8xx_setup: unexpected boot option '%.*s' ignored\n", pc-cur+1, cur); + printf("ncr53c8xx_setup: unexpected boot option '%.*s' ignored\n", (int)(pc-cur+1), cur); if ((cur = strchr(cur, ',')) != NULL) ++cur; @@ -9293,7 +9293,7 @@ */ #ifdef NCR_IOMAPPED request_region(io_port, 128, "ncr53c8xx"); - device->slot.port = ioport; + device->slot.port = io_port; #else device->slot.reg = (struct ncr_reg *) remap_pci_mem((ulong) base, 128); if (!device->slot.reg) diff -urN linux-2.0.31-pre7/drivers/scsi/ncr53c8xx.h linux-2.0.31-pre8/drivers/scsi/ncr53c8xx.h --- linux-2.0.31-pre7/drivers/scsi/ncr53c8xx.h 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/scsi/ncr53c8xx.h 2003-08-15 15:04:07.000000000 -0700 @@ -45,7 +45,7 @@ /* ** Name and revision of the driver */ -#define SCSI_NCR_DRIVER_NAME "ncr53c8xx - revision 2.4" +#define SCSI_NCR_DRIVER_NAME "ncr53c8xx - revision 2.4a" /* ** Check supported Linux versions @@ -416,7 +416,7 @@ FE_WIDE|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM} \ , \ {PCI_DEVICE_ID_NCR_53C860, 0xff, "860", 4, 8, 5, \ - FE_WIDE|FE_ULTRA|FE_CLK80|FE_CACHE_SET|FE_BOF|FE_LDSTR|FE_PFEN|FE_RAM} \ + FE_ULTRA|FE_CLK80|FE_CACHE_SET|FE_BOF|FE_LDSTR|FE_PFEN} \ , \ {PCI_DEVICE_ID_NCR_53C875, 0x01, "875", 7, 16, 5, \ FE_WIDE|FE_ULTRA|FE_CLK80|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ diff -urN linux-2.0.31-pre7/drivers/scsi/scsi_ioctl.c linux-2.0.31-pre8/drivers/scsi/scsi_ioctl.c --- linux-2.0.31-pre7/drivers/scsi/scsi_ioctl.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/scsi/scsi_ioctl.c 2003-08-15 15:04:07.000000000 -0700 @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -28,7 +29,7 @@ #define MOVE_MEDIUM_TIMEOUT (5 * 60 * HZ) #define READ_ELEMENT_STATUS_TIMEOUT (5 * 60 * HZ) -#define MAX_BUF 4096 +#define MAX_BUF PAGE_SIZE #define max(a,b) (((a) > (b)) ? (a) : (b)) @@ -78,12 +79,9 @@ * * *(char *) ((int *) arg)[2] the actual command byte. * - * Note that no more than MAX_BUF data bytes will be transfered. Since - * SCSI block device size is 512 bytes, I figured 1K was good. - * but (WDE) changed it to 8192 to handle large bad track buffers. - * ERY: I changed this to a dynamic allocation using scsi_malloc - we were - * getting a kernel stack overflow which was crashing the system when we - * were using 8192 bytes. + * Note that if more than MAX_BUF bytes are requested to be transfered, + * the ioctl will fail with error EINVAL. MAX_BUF can be increased in + * the future by increasing the size that scsi_malloc will accept. * * This size *does not* include the initial lengths that were passed. * @@ -205,8 +203,8 @@ * If the user needs to transfer more data than this, they * should use scsi_generics instead. */ - if( inlen > MAX_BUF ) inlen = MAX_BUF; - if( outlen > MAX_BUF ) outlen = MAX_BUF; + if( inlen > MAX_BUF ) return -EINVAL; + if( outlen > MAX_BUF ) return -EINVAL; cmd_in = (char *) ( ((int *)buffer) + 2); opcode = get_user(cmd_in); diff -urN linux-2.0.31-pre7/drivers/scsi/sr_ioctl.c linux-2.0.31-pre8/drivers/scsi/sr_ioctl.c --- linux-2.0.31-pre7/drivers/scsi/sr_ioctl.c 1996-05-18 12:19:19.000000000 -0700 +++ linux-2.0.31-pre8/drivers/scsi/sr_ioctl.c 2003-08-15 15:04:07.000000000 -0700 @@ -66,7 +66,9 @@ printk("CDROM not ready. Make sure there is a disc in the drive.\n"); break; case ILLEGAL_REQUEST: - printk("CDROM (ioctl) reports ILLEGAL REQUEST.\n"); + /* CDROMCLOSETRAY should not print an error for caddy drives. */ + if (!(sr_cmd[0] == START_STOP && sr_cmd[4] == 0x03)) + printk("CDROM (ioctl) reports ILLEGAL REQUEST.\n"); break; default: printk("SCSI CD error: host %d id %d lun %d return code = %03x\n", diff -urN linux-2.0.31-pre7/drivers/sound/.blurb linux-2.0.31-pre8/drivers/sound/.blurb --- linux-2.0.31-pre7/drivers/sound/.blurb 1996-06-30 01:43:44.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/.blurb 2003-08-15 15:04:07.000000000 -0700 @@ -1,9 +1,8 @@ ********************************************************* * Readme.cards (this directory) contains some card * * specific instructions. * -* See http://www.4front-tech.com/usslite for most up * +* See http://www.4front-tech.com/ossfree for most up * * to date info. * -* (European mirror http://personal.eunet.fi/pp/voxware) * * * * DON'T USE PROGRAMS FROM SND_UTIL PACKAGE EARLIER THAN * * snd-util-3.5 WITH THIS SOUND DRIVER VERSION. * diff -urN linux-2.0.31-pre7/drivers/sound/Readme linux-2.0.31-pre8/drivers/sound/Readme --- linux-2.0.31-pre7/drivers/sound/Readme 1996-07-06 01:31:43.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/Readme 2003-08-15 15:04:07.000000000 -0700 @@ -2,8 +2,7 @@ ------------------------------------ Most up to date information about this driver is available from -http://www.4front-tech.com/usslite or http://personal.eunet.fi/pp/voxware -(European mirror). +http://www.4front-tech.com/ossfree. @@ -24,7 +23,7 @@ Packages "snd-util-3.5.tar.gz" and "snd-data-0.1.tar.Z" contain useful utilities to be used with this driver. -See http://www.4front-tech.com/usslite/getting.html for +See http://www.4front-tech.com/ossfree/getting.html for download instructions. If you are looking for the installation instructions, please @@ -35,7 +34,7 @@ See Readme.cards. -Please check http://www.4front-tech.com/usslite if you don't find +Please check http://www.4front-tech.com/ossfree if you don't find your soundcard there. Contributors @@ -113,7 +112,7 @@ ========================= Read the sound HOWTO (sunsite.unc.edu:/pub/Linux/docs/...?). -Also look at the home page (http://www.4front-tech.com/usslite). It may +Also look at the home page (http://www.4front-tech.com/ossfree). It may contain info about some recent bug fixes. It's likely that you have some problems when trying to use the sound driver @@ -167,8 +166,8 @@ Hannu Hannu Savolainen -hannu@voxware.pp.fi, hannu@4front-tech.com -(Please check http://www.4front-tech.com/usslite before mailing me). +hannu@4front-tech.com +(Please check http://www.4front-tech.com/ossfree before mailing me). Snail mail: Hannu Savolainen Hiekkalaiturintie 3 A 8 diff -urN linux-2.0.31-pre7/drivers/sound/Readme.cards linux-2.0.31-pre8/drivers/sound/Readme.cards --- linux-2.0.31-pre7/drivers/sound/Readme.cards 1996-09-20 07:00:35.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/Readme.cards 2003-08-15 15:04:07.000000000 -0700 @@ -3,7 +3,7 @@ IMPORTANT! This document covers only cards that were "known" when this driver version was released. Please look at - http://www.4front-tech.com/usslite for info about + http://www.4front-tech.com/ossfree for info about cards introduced recently. The following covers mainly the "old" configuration @@ -25,18 +25,18 @@ There are many soundcards which don't work with this driver version (v3.5). Support for some of them is expected to be available during/after summer 1996 (in version 3.6). Please check -http://www.4front-tech.com/usslite for latest news. Please don't +http://www.4front-tech.com/ossfree for latest news. Please don't mail me and ask about these cards. The unsupported cards are: - All PnP soundcards (SB PnP, GUS PnP, Soundscape PnP etc.) Schedule for availability of PnP soundcard support in - USS/Lite depends on progress made by kernel PnP team + OSS/Free depends on progress made by kernel PnP team (probably in Linux 2.1.xx versions). With Linux 2.0.x versions there are two ways to get PnP soundcards to work: - Use isapnptools, DOS, Win95 or PnP aware BIOS to wake up the card before starting the sound driver. See "Configuring PnP soundcards" below for some hints. - - Support for SB PnP and GUS PnP is present in USS/Linux (the + - Support for SB PnP and GUS PnP is present in OSS/Linux (the commercial version of this driver). - Mwave soundcards and motherboards (Version 3.6 or 3.7. Depends on how fast I get @@ -49,7 +49,7 @@ - Compaq Deskpro (Version 3.5.4-beta6 (already released)) - Sound Galaxy Washington/Waverider - (Audio features already in USS/Linux (USS/Lite soon). + (Audio features already in OSS/Linux (OSS/Free soon). Can't promise the waverider synth since availability of chip specs is uncertain). - Yamaha OPL4 (on cards having _RAM_ for samples) @@ -77,7 +77,7 @@ PnP soundcards (as well as most other PnP ISA cards) are not supported by version 3.5 of this driver (Linux 1.3.xx and Linux 2.0.x). Proper support for them should be released during spring 96 -(see http://www.4front-tech.com/usslite for latest info). +(see http://www.4front-tech.com/ossfree for latest info). There is a method to get most of the PnP cards to work. The basic method is the following: @@ -719,7 +719,7 @@ !!!!! purposes. It WAS required to change /dev/dsp (a symlink) to !!!! !!!!! point to /dev/dsp1. !!!! !!!!! !!!! -!!!!! This is not required with USS versions 3.5-beta6 and later !!!! +!!!!! This is not required with OSS versions 3.5-beta6 and later !!!! !!!!! since there is now just one audio device file. Please !!!! !!!!! change /dev/dsp to point back to /dev/dsp0 if you are !!!! !!!!! upgrading from an earlier driver version using !!!! @@ -999,7 +999,7 @@ Writing a driver for a new card is not possible if there are no programming information available about the card. If you don't find your new card from this file, look from the home page -(http://www.4front-tech.com/usslite). Then please contact +(http://www.4front-tech.com/ossfree). Then please contact manufacturer of the card and ask if they have (or are willing to) released technical details of the card. Do this before contacting me. I can only answer 'no' if there are no programming information available. @@ -1020,7 +1020,7 @@ There are some common audio chipsets that are not supported yet. For example Sierra Aria and IBM Mwave. It's possible that these architectures get some support in future but I can't make any promises. Just look -at the home page (http://www.4front-tech.com/usslite/new_cards.html) +at the home page (http://www.4front-tech.com/ossfree/new_cards.html) for latest info. Information about unsupported soundcards and chipsets is welcome as well @@ -1029,12 +1029,11 @@ If you have any corrections and/or comments, please contact me. Hannu Savolainen -hannu@voxware.pp.fi +hannu@4front-tech.com -Personal home page: http://personal.eunet.fi/pp/voxware/hannu.html -www home page of USS/Lite: http://www.4front-tech.com/usslite - European/Finnish mirror: http://personal.eunet.fi/pp/voxware +Personal home page: http://www.4front-tech.com/hannu.html +www home page of OSS/Free: http://www.4front-tech.com/ossfree www home page of commercial -Open Sound System drivers: http://www.4front-tech.com/uss.html +Open Sound System drivers: http://www.4front-tech.com/oss.html diff -urN linux-2.0.31-pre7/drivers/sound/Readme.linux linux-2.0.31-pre8/drivers/sound/Readme.linux --- linux-2.0.31-pre7/drivers/sound/Readme.linux 1996-07-06 01:31:43.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/Readme.linux 2003-08-15 15:04:07.000000000 -0700 @@ -67,13 +67,18 @@ check for possible boot (insmod) time error messages in /var/adm/messages. - Other messages or problems -Please check http://www.4front-tech.com/usslite for more info. +Please check http://www.4front-tech.com/ossfree for more info. Hannu Savolainen -hannu@voxware.pp.fi +hannu@4front-tech.com ----------------- cut here ------------------------------ #!/bin/sh +echo Error: Read the notice in the beginning of this script before executing. +exit -1 +Notice! Remove this notice and the above two lines before trying to execute. + Trying to run this script is normally useless. The device files are + almost certainly already set up correctly. # ***************************************** # * NOTICE! # * diff -urN linux-2.0.31-pre7/drivers/sound/Readme.v30 linux-2.0.31-pre8/drivers/sound/Readme.v30 --- linux-2.0.31-pre7/drivers/sound/Readme.v30 1996-07-06 01:31:43.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/Readme.v30 2003-08-15 15:04:07.000000000 -0700 @@ -137,4 +137,4 @@ Don't hesitate to contact me in case you have questions or comments. Hannu Savolainen -hannu@voxware.pp.fi +hannu@4front-tech.com diff -urN linux-2.0.31-pre7/drivers/sound/sequencer.c linux-2.0.31-pre8/drivers/sound/sequencer.c --- linux-2.0.31-pre7/drivers/sound/sequencer.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/drivers/sound/sequencer.c 2003-08-15 15:04:07.000000000 -0700 @@ -1592,7 +1592,7 @@ return -(EIO); midi_dev = get_user ((int *) arg); - if (midi_dev >= max_mididev) + if (midi_dev < 0 || midi_dev >= max_mididev) return -(ENXIO); if (!midi_opened[midi_dev]) diff -urN linux-2.0.31-pre7/fs/buffer.c linux-2.0.31-pre8/fs/buffer.c --- linux-2.0.31-pre7/fs/buffer.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/fs/buffer.c 2003-08-15 15:04:07.000000000 -0700 @@ -543,14 +543,11 @@ static inline int can_reclaim(struct buffer_head *bh, int size) { if (bh->b_count || - buffer_protected(bh) || buffer_locked(bh)) + buffer_protected(bh) || + buffer_locked(bh) || + mem_map[MAP_NR((unsigned long) bh->b_data)].count != 1 || + buffer_dirty(bh)) return 0; - - if (mem_map[MAP_NR((unsigned long) bh->b_data)].count != 1 || - buffer_dirty(bh)) { - /* WSH: don't attempt to refile here! */ - return 0; - } if (bh->b_size != size) return 0; @@ -559,13 +556,15 @@ } /* find a candidate buffer to be reclaimed */ -static struct buffer_head *find_candidate(struct buffer_head *list,int *list_len,int size) +static struct buffer_head *find_candidate(struct buffer_head *bh, + int *list_len, int size) { - struct buffer_head *bh; + int behind = 0; + + if (!bh) + goto no_candidate; - for (bh = list; - bh && (*list_len) > 0; - bh = bh->b_next_free, (*list_len)--) { + for (; (*list_len) > 0; bh = bh->b_next_free, (*list_len)--) { if (size != bh->b_size) { /* this provides a mechanism for freeing blocks of other sizes, this is necessary now that we @@ -575,21 +574,18 @@ break; continue; } - - if (buffer_locked(bh) && - (bh->b_list == BUF_LOCKED || bh->b_list == BUF_LOCKED1)) { - /* Buffers are written in the order they are placed - on the locked list. If we encounter a locked - buffer here, this means that the rest of them - are also locked */ - (*list_len) = 0; - return NULL; + else if (buffer_locked(bh) && + (bh->b_list == BUF_LOCKED || bh->b_list == BUF_LOCKED1)) { + if (behind++ > 10) { + (*list_len) = 0; + goto no_candidate; + } } - - if (can_reclaim(bh,size)) - return bh; + else if (can_reclaim(bh,size)) + return bh; } +no_candidate: return NULL; } @@ -662,6 +658,12 @@ } goto repeat; } + + /* Dirty buffers should not overtake, wakeup_bdflush(1) calls + bdflush and sleeps, therefore kswapd does his important work. */ + if ((nr_buffers_type[BUF_DIRTY] > nr_buffers * bdf_prm.b_un.nfract/100) || + (nr_free_pages < min_free_pages)) + wakeup_bdflush(1); /* Too bad, that was not enough. Try a little harder to grow some. */ @@ -672,18 +674,7 @@ }; } -#if 0 - /* - * In order to protect our reserved pages, - * return now if we got any buffers. - */ - if (free_list[BUFSIZE_INDEX(size)]) - return; - /* and repeat until we find something good */ - if (!grow_buffers(GFP_ATOMIC, size)) - wakeup_bdflush(1); -#endif wakeup_bdflush(1); /* decrease needed even if there is no success */ @@ -1717,7 +1708,7 @@ * dirty buffers, then make the next write to a * loop device to be a blocking write. * This lets us block--which we _must_ do! */ - if (ndirty == 0 && nr_buffers_type[BUF_DIRTY] > 0) { + if (ndirty == 0 && nr_buffers_type[BUF_DIRTY] > 0 && wrta_cmd != WRITE) { wrta_cmd = WRITE; continue; } @@ -1725,7 +1716,7 @@ /* If there are still a lot of dirty buffers around, skip the sleep and flush some more */ - if(nr_buffers_type[BUF_DIRTY] <= nr_buffers * bdf_prm.b_un.nfract/100) { + if(ndirty == 0 || nr_buffers_type[BUF_DIRTY] <= nr_buffers * bdf_prm.b_un.nfract/100) { wake_up(&bdflush_done); current->signal = 0; interruptible_sleep_on(&bdflush_wait); diff -urN linux-2.0.31-pre7/fs/locks.c linux-2.0.31-pre8/fs/locks.c --- linux-2.0.31-pre7/fs/locks.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/fs/locks.c 2003-08-15 15:04:07.000000000 -0700 @@ -128,6 +128,8 @@ unsigned int wait); static int posix_locks_deadlock(struct task_struct *my_task, struct task_struct *blocked_task); +static void posix_remove_locks(struct file_lock **before, struct task_struct *task); +static void flock_remove_locks(struct file_lock **before, struct file *filp); static struct file_lock *locks_alloc_lock(struct file_lock *fl); static void locks_insert_lock(struct file_lock **pos, struct file_lock *fl); @@ -281,7 +283,7 @@ for (fl = filp->f_inode->i_flock; fl != NULL; fl = fl->fl_next) { if (!(fl->fl_flags & FL_POSIX)) - continue; + break; if (posix_locks_conflict(&file_lock, fl)) { flock.l_pid = fl->fl_owner->pid; flock.l_start = fl->fl_start; @@ -301,6 +303,8 @@ /* Apply the lock described by l to an open file descriptor. * This implements both the F_SETLK and F_SETLKW commands of fcntl(). + * It also emulates flock() in a pretty broken way for older C + * libraries. */ int fcntl_setlk(unsigned int fd, unsigned int cmd, struct flock *l) { @@ -354,9 +358,21 @@ break; case F_SHLCK: case F_EXLCK: +#if 1 +/* warn a bit for now, but don't overdo it */ +{ + static int count = 0; + if (!count) { + count=1; printk(KERN_WARNING - "fcntl_setlk(): process %d (%s) requested broken flock() emulation\n", + "fcntl_setlk() called by process %d (%s) with broken flock() emulation\n", current->pid, current->comm); + } +} +#endif + if (!(filp->f_mode & 3)) + return (-EBADF); + break; default: return (-EINVAL); } @@ -369,18 +385,27 @@ void locks_remove_locks(struct task_struct *task, struct file *filp) { struct file_lock *fl; - struct file_lock **before; /* For POSIX locks we free all locks on this file for the given task. * For FLOCK we only free locks on this *open* file if it is the last * close on that file. */ - before = &filp->f_inode->i_flock; + if ((fl = filp->f_inode->i_flock) != NULL) { + if (fl->fl_flags & FL_POSIX) + posix_remove_locks(&filp->f_inode->i_flock, task); + else + flock_remove_locks(&filp->f_inode->i_flock, filp); + } + + return; +} + +static void posix_remove_locks(struct file_lock **before, struct task_struct *task) +{ + struct file_lock *fl; while ((fl = *before) != NULL) { - if (((fl->fl_flags & FL_POSIX) && (fl->fl_owner == task)) || - ((fl->fl_flags & FL_FLOCK) && (fl->fl_file == filp) && - (filp->f_count == 1))) + if (fl->fl_owner == task) locks_delete_lock(before, 0); else before = &fl->fl_next; @@ -389,6 +414,20 @@ return; } +static void flock_remove_locks(struct file_lock **before, struct file *filp) +{ + struct file_lock *fl; + + while ((fl = *before) != NULL) { + if ((fl->fl_file == filp) && (filp->f_count == 1)) + locks_delete_lock(before, 0); + else + before = &fl->fl_next; + } + + return; +} + int locks_verify_locked(struct inode *inode) { /* Candidates for mandatory locking have the setgid bit set @@ -417,13 +456,16 @@ { struct file_lock *fl; + /* If there are no FL_POSIX locks then go ahead. */ + if (!(fl = inode->i_flock) || !(fl->fl_flags & FL_POSIX)) + return (0); + /* Search the lock list for this inode for any POSIX locks. */ - for (fl = inode->i_flock; fl != NULL; fl = fl->fl_next) { - if (!(fl->fl_flags & FL_POSIX)) - continue; + while (fl != NULL) { if (fl->fl_owner != current) return (-EAGAIN); + fl = fl->fl_next; } return (0); } @@ -445,12 +487,14 @@ tfl.fl_end = offset + count - 1; repeat: + /* If there are no FL_POSIX locks then go ahead. */ + if (!(fl = inode->i_flock) || !(fl->fl_flags & FL_POSIX)) + return (0); + /* Search the lock list for this inode for locks that conflict with * the proposed read/write. */ - for (fl = inode->i_flock; fl != NULL; fl = fl->fl_next) { - if (!(fl->fl_flags & FL_POSIX)) - continue; + while (fl != NULL) { /* Block for writes against a "read" lock, * and both reads and writes against a "write" lock. */ @@ -475,6 +519,7 @@ break; goto repeat; } + fl = fl->fl_next; } return (0); } @@ -497,6 +542,14 @@ case F_UNLCK: fl->fl_type = l->l_type; break; + case F_SHLCK : + fl->fl_type = F_RDLCK; + fl->fl_flags |= FL_BROKEN; + break; + case F_EXLCK : + fl->fl_type = F_WRLCK; + fl->fl_flags |= FL_BROKEN; + break; default: return (0); } @@ -569,8 +622,7 @@ /* POSIX locks owned by the same process do not conflict with * each other. */ - if (!(sys_fl->fl_flags & FL_POSIX) || - (caller_fl->fl_owner == sys_fl->fl_owner)) + if (caller_fl->fl_owner == sys_fl->fl_owner) return (0); return (locks_conflict(caller_fl, sys_fl)); @@ -584,8 +636,7 @@ /* FLOCK locks referring to the same filp do not conflict with * each other. */ - if (!(sys_fl->fl_flags & FL_FLOCK) || - (caller_fl->fl_file == sys_fl->fl_file)) + if (caller_fl->fl_file == sys_fl->fl_file) return (0); return (locks_conflict(caller_fl, sys_fl)); @@ -662,7 +713,11 @@ int change = 0; before = &filp->f_inode->i_flock; - while (((fl = *before) != NULL) && (fl->fl_flags & FL_FLOCK)) { + + if ((fl = *before) && (fl->fl_flags & FL_POSIX)) + return (-EBUSY); + + while ((fl = *before) != NULL) { if (caller->fl_file == fl->fl_file) { if (caller->fl_type == fl->fl_type) return (0); @@ -681,10 +736,16 @@ if ((new_fl = locks_alloc_lock(caller)) == NULL) return (-ENOLCK); repeat: - for (fl = filp->f_inode->i_flock; (fl != NULL) && (fl->fl_flags & FL_FLOCK); - fl = fl->fl_next) { - if (!flock_locks_conflict(new_fl, fl)) + if ((fl = filp->f_inode->i_flock) && (fl->fl_flags & FL_POSIX)) { + locks_free_lock(new_fl); + return (-EBUSY); + } + + while (fl != NULL) { + if (!flock_locks_conflict(new_fl, fl)) { + fl = fl->fl_next; continue; + } if (!wait) { locks_free_lock(new_fl); return (-EAGAIN); @@ -738,11 +799,14 @@ if (caller->fl_type != F_UNLCK) { repeat: - for (fl = filp->f_inode->i_flock; fl != NULL; fl = fl->fl_next) { - if (!(fl->fl_flags & FL_POSIX)) - continue; - if (!posix_locks_conflict(caller, fl)) + if ((fl = filp->f_inode->i_flock) && (fl->fl_flags & FL_FLOCK)) + return (-EBUSY); + + while (fl != NULL) { + if (!posix_locks_conflict(caller, fl)) { + fl = fl->fl_next; continue; + } if (!wait) return (-EAGAIN); if (current->signal & ~current->blocked) @@ -763,10 +827,12 @@ before = &filp->f_inode->i_flock; + if ((*before != NULL) && ((*before)->fl_flags & FL_FLOCK)) + return (-EBUSY); + /* First skip locks owned by other processes. */ - while ((fl = *before) && (!(fl->fl_flags & FL_POSIX) || - (caller->fl_owner != fl->fl_owner))) { + while ((fl = *before) && (caller->fl_owner != fl->fl_owner)) { before = &fl->fl_next; } @@ -964,6 +1030,7 @@ p += sprintf(p, "%d:%s ", id, pfx); if (fl->fl_flags & FL_POSIX) { p += sprintf(p, "%6s %s ", + (fl->fl_flags & FL_BROKEN) ? "BROKEN" : (fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ", (IS_MANDLOCK(inode) && (inode->i_mode & (S_IXGRP | S_ISGID)) == S_ISGID) ? diff -urN linux-2.0.31-pre7/fs/super.c linux-2.0.31-pre8/fs/super.c --- linux-2.0.31-pre7/fs/super.c 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/fs/super.c 2003-08-15 15:04:07.000000000 -0700 @@ -764,8 +764,7 @@ if (retval) return retval; } - sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | - (flags & MS_RMT_MASK); + sb->s_flags = (sb->s_flags & ~MS_RMT_MASK) | (flags & MS_RMT_MASK); vfsmnt = lookup_vfsmnt(sb->s_dev); if (vfsmnt) vfsmnt->mnt_flags = sb->s_flags; diff -urN linux-2.0.31-pre7/include/linux/fs.h linux-2.0.31-pre8/include/linux/fs.h --- linux-2.0.31-pre7/include/linux/fs.h 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/include/linux/fs.h 2003-08-15 15:04:07.000000000 -0700 @@ -79,7 +79,7 @@ /* * Flags that can be altered by MS_REMOUNT */ -#define MS_RMT_MASK (MS_RDONLY|MS_MANDLOCK) +#define MS_RMT_MASK (MS_RDONLY|MS_MANDLOCK|MS_NOATIME) /* * Magic mount flag number. Has to be or-ed to the flag values. diff -urN linux-2.0.31-pre7/include/linux/isdn.h linux-2.0.31-pre8/include/linux/isdn.h --- linux-2.0.31-pre7/include/linux/isdn.h 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/include/linux/isdn.h 2003-08-15 15:04:07.000000000 -0700 @@ -1,4 +1,4 @@ -/* $Id: isdn.h,v 1.30 1997/06/17 13:07:23 hipp Exp $ +/* $Id: isdn.h,v 1.32 1997/08/21 09:49:46 fritz Exp $ * * Main header for the Linux ISDN subsystem (linklevel). * @@ -21,6 +21,12 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Log: isdn.h,v $ + * Revision 1.32 1997/08/21 09:49:46 fritz + * Increased NET_DV + * + * Revision 1.31 1997/06/22 11:57:07 fritz + * Added ability to adjust slave triggerlevel. + * * Revision 1.30 1997/06/17 13:07:23 hipp * compression changes , MP changes * @@ -222,7 +228,7 @@ int outgoing; } isdn_net_ioctl_phone; -#define NET_DV 0x03 /* Data version for net_cfg */ +#define NET_DV 0x04 /* Data version for net_cfg */ #define TTY_DV 0x04 /* Data version for iprofd etc. */ typedef struct { @@ -239,7 +245,6 @@ int exclusive; /* Channel, if bound exclusive */ int dialmax; /* Dial Retry-Counter */ int slavedelay; /* Delay until slave starts up */ - int triggercps; /* BogoCPS needed for triggering slave */ int cbdelay; /* Delay before Callback */ int chargehup; /* Flag: Charge-Hangup */ int ihup; /* Flag: Hangup-Timeout on incoming line */ @@ -248,6 +253,7 @@ int cbhup; /* Flag: Reject Call before Callback */ int pppbind; /* ippp device for bindings */ int chargeint; /* Use fixed charge interval length */ + int triggercps; /* BogoCPS needed for triggering slave */ } isdn_net_ioctl_cfg; #ifdef __KERNEL__ diff -urN linux-2.0.31-pre7/include/linux/mm.h linux-2.0.31-pre8/include/linux/mm.h --- linux-2.0.31-pre7/include/linux/mm.h 1997-03-28 16:08:17.000000000 -0800 +++ linux-2.0.31-pre8/include/linux/mm.h 2003-08-15 15:04:07.000000000 -0700 @@ -295,7 +295,7 @@ /* filemap.c */ extern unsigned long page_unuse(unsigned long); -extern int shrink_mmap(int, int); +extern int shrink_mmap(int, int, int); extern void truncate_inode_pages(struct inode *, unsigned long); #define GFP_BUFFER 0x00 diff -urN linux-2.0.31-pre7/include/linux/pci.h linux-2.0.31-pre8/include/linux/pci.h --- linux-2.0.31-pre7/include/linux/pci.h 2003-08-15 15:04:06.000000000 -0700 +++ linux-2.0.31-pre8/include/linux/pci.h 2003-08-15 15:04:07.000000000 -0700 @@ -221,6 +221,9 @@ */ #define PCI_VENDOR_ID_COMPAQ 0x0e11 #define PCI_DEVICE_ID_COMPAQ_1280 0x3033 +#define PCI_DEVICE_ID_COMPAQ_NETELL100 0xae32 +#define PCI_DEVICE_ID_COMPAQ_NETELL10 0xae34 +#define PCI_DEVICE_ID_COMPAQ_NETFLEX3 0xae35 #define PCI_DEVICE_ID_COMPAQ_THUNDER 0xf130 #define PCI_VENDOR_ID_NCR 0x1000 @@ -240,12 +243,14 @@ #define PCI_DEVICE_ID_ATI_210888CX 0x4358 #define PCI_DEVICE_ID_ATI_215GT 0x4754 #define PCI_DEVICE_ID_ATI_210888GX 0x4758 +#define PCI_DEVICE_ID_ATI_264VT 0x5654 #define PCI_VENDOR_ID_VLSI 0x1004 #define PCI_DEVICE_ID_VLSI_82C592 0x0005 #define PCI_DEVICE_ID_VLSI_82C593 0x0006 #define PCI_DEVICE_ID_VLSI_82C594 0x0007 #define PCI_DEVICE_ID_VLSI_82C597 0x0009 +#define PCI_DEVICE_ID_VLSI_VAS96011 0x0702 #define PCI_VENDOR_ID_ADL 0x1005 #define PCI_DEVICE_ID_ADL_2301 0x2301 @@ -282,12 +287,17 @@ #define PCI_DEVICE_ID_CIRRUS_5434_8 0x00a8 #define PCI_DEVICE_ID_CIRRUS_5436 0x00ac #define PCI_DEVICE_ID_CIRRUS_5446 0x00b8 +#define PCI_DEVICE_ID_CIRRUS_5480 0x00bc +#define PCI_DEVICE_ID_CIRRUS_5464 0x00d4 +#define PCI_DEVICE_ID_CIRRUS_5465 0x00d6 #define PCI_DEVICE_ID_CIRRUS_6729 0x1100 +#define PCI_DEVICE_ID_CIRRUS_6832 0x1110 #define PCI_DEVICE_ID_CIRRUS_7542 0x1200 #define PCI_DEVICE_ID_CIRRUS_7543 0x1202 #define PCI_DEVICE_ID_CIRRUS_7541 0x1204 #define PCI_VENDOR_ID_IBM 0x1014 +#define PCI_DEVICE_ID_IBM_FIRE_CORAL 0x000a #define PCI_DEVICE_ID_IBM_82G2675 0x001d #define PCI_DEVICE_ID_IBM_82351 0x0022 @@ -310,6 +320,7 @@ #define PCI_DEVICE_ID_MATROX_MGA_2 0x0518 #define PCI_DEVICE_ID_MATROX_MIL 0x0519 #define PCI_DEVICE_ID_MATROX_MYS 0x051A +#define PCI_DEVICE_ID_MATROX_MIL_2 0x051b #define PCI_DEVICE_ID_MATROX_MGA_IMP 0x0d10 #define PCI_VENDOR_ID_CT 0x102c @@ -332,6 +343,7 @@ #define PCI_DEVICE_ID_SI_501 0x0406 #define PCI_DEVICE_ID_SI_496 0x0496 #define PCI_DEVICE_ID_SI_601 0x0601 +#define PCI_DEVICE_ID_SI_5107 0x5107 #define PCI_DEVICE_ID_SI_5511 0x5511 #define PCI_DEVICE_ID_SI_5513 0x5513 #define PCI_DEVICE_ID_SI_5571 0x5571 @@ -364,6 +376,10 @@ #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040 #define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130 +#define PCI_VENDOR_ID_TI 0x104c +#define PCI_DEVICE_ID_TI_PCI1130 0xac12 +#define PCI_DEVICE_ID_TI_PCI1131 0xac15 + #define PCI_VENDOR_ID_OAK 0x104e #define PCI_DEVICE_ID_OAK_OTI107 0x0107 @@ -397,6 +413,11 @@ #define PCI_VENDOR_ID_X 0x1061 #define PCI_DEVICE_ID_X_AGX016 0x0001 +#define PCI_VENDOR_ID_APPLE 0x106b +#define PCI_DEVICE_ID_APPLE_BANDIT 0x0001 +#define PCI_DEVICE_ID_APPLE_GC 0x0002 +#define PCI_DEVICE_ID_APPLE_HYDRA 0x000e + #define PCI_VENDOR_ID_NEXGEN 0x1074 #define PCI_DEVICE_ID_NEXGEN_82C501 0x4e78 @@ -413,10 +434,18 @@ #define PCI_VENDOR_ID_FOREX 0x1083 #define PCI_VENDOR_ID_OLICOM 0x108d +#define PCI_DEVICE_ID_OLICOM_OC3136 0x0001 +#define PCI_DEVICE_ID_OLICOM_OC2315 0x0011 +#define PCI_DEVICE_ID_OLICOM_OC2325 0x0012 +#define PCI_DEVICE_ID_OLICOM_OC2183 0x0013 +#define PCI_DEVICE_ID_OLICOM_OC2326 0x0014 +#define PCI_DEVICE_ID_OLICOM_OC6151 0x0021 #define PCI_VENDOR_ID_CMD 0x1095 #define PCI_DEVICE_ID_CMD_640 0x0640 +#define PCI_DEVICE_ID_CMD_643 0x0643 #define PCI_DEVICE_ID_CMD_646 0x0646 +#define PCI_DEVICE_ID_CMD_670 0x0670 #define PCI_VENDOR_ID_VISION 0x1098 #define PCI_DEVICE_ID_VISION_QD8500 0x0001 @@ -436,6 +465,9 @@ #define PCI_DEVICE_ID_WINBOND_82C105 0x0105 #define PCI_DEVICE_ID_WINBOND_83C553 0x0565 +#define PCI_VENDOR_ID_DATABOOK 0x10b3 +#define PCI_DEVICE_ID_DATABOOK_87144 0xb106 + #define PCI_VENDOR_ID_3COM 0x10b7 #define PCI_DEVICE_ID_3COM_3C590 0x5900 #define PCI_DEVICE_ID_3COM_3C595TX 0x5950 @@ -445,6 +477,8 @@ #define PCI_DEVICE_ID_3COM_3C900COMBO 0x9001 #define PCI_DEVICE_ID_3COM_3C905TX 0x9050 +#define PCI_VENDOR_ID_SMC 0x10b8 + #define PCI_VENDOR_ID_AL 0x10b9 #define PCI_DEVICE_ID_AL_M1445 0x1445 #define PCI_DEVICE_ID_AL_M1449 0x1449 @@ -455,8 +489,11 @@ #define PCI_DEVICE_ID_AL_M1513 0x1513 #define PCI_DEVICE_ID_AL_M4803 0x5215 +#define PCI_VENDOR_ID_MITSUBISHI 0x10ba + #define PCI_VENDOR_ID_NEOMAGIC 0x10c8 #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2070 0x0001 +#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128V 0x0002 #define PCI_VENDOR_ID_ASP 0x10cd #define PCI_DEVICE_ID_ASP_ABP940 0x1200 @@ -485,6 +522,10 @@ #define PCI_VENDOR_ID_REALTEK 0x10ec #define PCI_DEVICE_ID_REALTEK_8029 0x8029 +#define PCI_DEVICE_ID_REALTEK_8129 0x8129 + +#define PCI_VENDOR_ID_TRUEVISION 0x10fa +#define PCI_DEVICE_ID_TRUEVISION_T1000 0x000c #define PCI_VENDOR_ID_INIT 0x1101 #define PCI_DEVICE_ID_INIT_320P 0x9100 @@ -496,6 +537,7 @@ #define PCI_DEVICE_ID_VIA_82C576 0x0576 #define PCI_DEVICE_ID_VIA_82C585 0x0585 #define PCI_DEVICE_ID_VIA_82C586_0 0x0586 +#define PCI_DEVICE_ID_VIA_82C926 0x0926 #define PCI_DEVICE_ID_VIA_82C416 0x1571 #define PCI_VENDOR_ID_VORTEX 0x1119 @@ -525,6 +567,9 @@ #define PCI_VENDOR_ID_IMAGINGTECH 0x112f #define PCI_DEVICE_ID_IMAGINGTECH_ICPCI 0x0000 +#define PCI_VENDOR_ID_PHILIPS 0x1131 +#define PCI_DEVICE_ID_PHILIPS_SAA7146 0x7146 + #define PCI_VENDOR_ID_PLX 0x113c #define PCI_DEVICE_ID_PLX_9060 0x0001 @@ -541,21 +586,35 @@ #define PCI_VENDOR_ID_MUTECH 0x1159 #define PCI_DEVICE_ID_MUTECH_MV1000 0x0001 +#define PCI_VENDOR_ID_RENDITION 0x1163 +#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001 + #define PCI_VENDOR_ID_TOSHIBA 0x1179 #define PCI_DEVICE_ID_TOSHIBA_601 0x0601 +#define PCI_VENDOR_ID_RICOH 0x1180 +#define PCI_DEVICE_ID_RICOH_RL5C466 0x0466 + #define PCI_VENDOR_ID_ZEITNET 0x1193 #define PCI_DEVICE_ID_ZEITNET_1221 0x0001 #define PCI_DEVICE_ID_ZEITNET_1225 0x0002 #define PCI_VENDOR_ID_OMEGA 0x119b -#define PCI_DEVICE_ID_OMEGA_PCMCIA 0x1221 +#define PCI_DEVICE_ID_OMEGA_82C092G 0x1221 + +#define PCI_VENDOR_ID_NP 0x11bc +#define PCI_DEVICE_ID_NP_PCI_FDDI 0x0001 #define PCI_VENDOR_ID_SPECIALIX 0x11cb #define PCI_DEVICE_ID_SPECIALIX_XIO 0x4000 #define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000 +#define PCI_VENDOR_ID_IKON 0x11d5 +#define PCI_DEVICE_ID_IKON_10115 0x0115 +#define PCI_DEVICE_ID_IKON_10117 0x0117 + #define PCI_VENDOR_ID_ZORAN 0x11de +#define PCI_DEVICE_ID_ZORAN_36057 0x6057 #define PCI_DEVICE_ID_ZORAN_36120 0x6120 #define PCI_VENDOR_ID_COMPEX 0x11f6 @@ -577,8 +636,8 @@ #define PCI_VENDOR_ID_3DFX 0x121a #define PCI_DEVICE_ID_3DFX_VOODOO 0x0001 -#define PCI_VENDOR_ID_SIGMA_DESIGNS 0x1236 -#define PCI_DEVICE_ID_SD_REALMAGIC64GX 0x6401 +#define PCI_VENDOR_ID_SIGMADES 0x1236 +#define PCI_DEVICE_ID_SIGMADES_6425 0x6401 #define PCI_VENDOR_ID_OPTIBASE 0x1255 #define PCI_DEVICE_ID_OPTIBASE_FORGE 0x1110 @@ -595,12 +654,17 @@ #define PCI_VENDOR_ID_3DLABS 0x3d3d #define PCI_DEVICE_ID_3DLABS_300SX 0x0001 +#define PCI_DEVICE_ID_3DLABS_500TX 0x0002 #define PCI_DEVICE_ID_3DLABS_DELTA 0x0003 #define PCI_DEVICE_ID_3DLABS_PERMEDIA 0x0004 #define PCI_VENDOR_ID_AVANCE 0x4005 +#define PCI_DEVICE_ID_AVANCE_ALG2064 0x2064 #define PCI_DEVICE_ID_AVANCE_2302 0x2302 +#define PCI_VENDOR_ID_NETVIN 0x4a14 +#define PCI_DEVICE_ID_NETVIN_NV5000SC 0x5000 + #define PCI_VENDOR_ID_S3 0x5333 #define PCI_DEVICE_ID_S3_PLATO_PXS 0x0551 #define PCI_DEVICE_ID_S3_ViRGE 0x5631 @@ -635,7 +699,7 @@ #define PCI_DEVICE_ID_INTEL_82371_0 0x122e #define PCI_DEVICE_ID_INTEL_82371_1 0x1230 #define PCI_DEVICE_ID_INTEL_82371MX 0x1234 -#define PCI_DEVICE_ID_INTEL_82430MX 0x1235 +#define PCI_DEVICE_ID_INTEL_82437MX 0x1235 #define PCI_DEVICE_ID_INTEL_82441 0x1237 #define PCI_DEVICE_ID_INTEL_82439 0x1250 #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000 diff -urN linux-2.0.31-pre7/kernel/exit.c linux-2.0.31-pre8/kernel/exit.c --- linux-2.0.31-pre7/kernel/exit.c 2003-08-15 15:04:07.000000000 -0700 +++ linux-2.0.31-pre8/kernel/exit.c 2003-08-15 15:04:07.000000000 -0700 @@ -533,7 +533,8 @@ p->p_pptr = p->p_opptr; p->p_osptr = p->p_pptr->p_cptr; - p->p_osptr->p_ysptr = p; + if (p->p_osptr) + p->p_osptr->p_ysptr = p; p->p_pptr->p_cptr = p; if (p->state == TASK_ZOMBIE) notify_parent(p, p->exit_signal); diff -urN linux-2.0.31-pre7/kernel/time.c linux-2.0.31-pre8/kernel/time.c --- linux-2.0.31-pre7/kernel/time.c 1996-04-24 23:59:33.000000000 -0700 +++ linux-2.0.31-pre8/kernel/time.c 2003-08-15 15:04:07.000000000 -0700 @@ -15,7 +15,7 @@ * 1993-10-08 Torsten Duwe * adjtime interface update and CMOS clock write code * 1995-08-13 Torsten Duwe - * kernel PLL updated to 1994-12-13 specs (rfc-1489) + * kernel PLL updated to 1994-12-13 specs (rfc-1589) */ #include diff -urN linux-2.0.31-pre7/mm/filemap.c linux-2.0.31-pre8/mm/filemap.c --- linux-2.0.31-pre7/mm/filemap.c 2003-08-15 15:04:07.000000000 -0700 +++ linux-2.0.31-pre8/mm/filemap.c 2003-08-15 15:04:07.000000000 -0700 @@ -114,7 +114,7 @@ } } -int shrink_mmap(int priority, int dma) +int shrink_mmap(int priority, int dma, int can_do_io) { static int clock = 0; struct page * page; @@ -174,7 +174,7 @@ } /* is it a buffer cache page? */ - if (bh && try_to_free_buffer(bh, &bh, 6)) + if (can_do_io && bh && try_to_free_buffer(bh, &bh, 6)) return 1; break; diff -urN linux-2.0.31-pre7/mm/page_alloc.c linux-2.0.31-pre8/mm/page_alloc.c --- linux-2.0.31-pre7/mm/page_alloc.c 2003-08-15 15:04:07.000000000 -0700 +++ linux-2.0.31-pre8/mm/page_alloc.c 2003-08-15 15:04:07.000000000 -0700 @@ -214,7 +214,7 @@ return 0; } restore_flags(flags); - if (priority != GFP_BUFFER && try_to_free_page(priority, dma, 1)) + if (try_to_free_page(priority, dma, 1)) goto repeat; return 0; } diff -urN linux-2.0.31-pre7/mm/vmscan.c linux-2.0.31-pre8/mm/vmscan.c --- linux-2.0.31-pre7/mm/vmscan.c 2003-08-15 15:04:07.000000000 -0700 +++ linux-2.0.31-pre8/mm/vmscan.c 2003-08-15 15:04:07.000000000 -0700 @@ -31,7 +31,7 @@ /* * To check memory consuming code elsewhere set this to 1 */ -#define MM_DEBUG 0 +/* #define MM_DEBUG */ /* * When are we next due for a page scan? @@ -80,7 +80,7 @@ * have died while we slept). */ static inline int try_to_swap_out(struct task_struct * tsk, struct vm_area_struct* vma, - unsigned long address, pte_t * page_table, int dma, int wait) + unsigned long address, pte_t * page_table, int dma, int wait, int can_do_io) { pte_t pte; unsigned long entry; @@ -112,6 +112,8 @@ if (page_map->age) return 0; if (pte_dirty(pte)) { + if(!can_do_io) + return 0; if (vma->vm_ops && vma->vm_ops->swapout) { pid_t pid = tsk->pid; vma->vm_mm->rss--; @@ -169,7 +171,8 @@ */ static inline int swap_out_pmd(struct task_struct * tsk, struct vm_area_struct * vma, - pmd_t *dir, unsigned long address, unsigned long end, int dma, int wait) + pmd_t *dir, unsigned long address, unsigned long end, int dma, int wait, + int can_do_io) { pte_t * pte; unsigned long pmd_end; @@ -191,7 +194,8 @@ do { int result; tsk->swap_address = address + PAGE_SIZE; - result = try_to_swap_out(tsk, vma, address, pte, dma, wait); + result = try_to_swap_out(tsk, vma, address, pte, dma, wait, + can_do_io); if (result) return result; address += PAGE_SIZE; @@ -201,7 +205,8 @@ } static inline int swap_out_pgd(struct task_struct * tsk, struct vm_area_struct * vma, - pgd_t *dir, unsigned long address, unsigned long end, int dma, int wait) + pgd_t *dir, unsigned long address, unsigned long end, int dma, int wait, + int can_do_io) { pmd_t * pmd; unsigned long pgd_end; @@ -221,7 +226,8 @@ end = pgd_end; do { - int result = swap_out_pmd(tsk, vma, pmd, address, end, dma, wait); + int result = swap_out_pmd(tsk, vma, pmd, address, end, dma, wait, + can_do_io); if (result) return result; address = (address + PMD_SIZE) & PMD_MASK; @@ -231,7 +237,7 @@ } static int swap_out_vma(struct task_struct * tsk, struct vm_area_struct * vma, - pgd_t *pgdir, unsigned long start, int dma, int wait) + pgd_t *pgdir, unsigned long start, int dma, int wait, int can_do_io) { unsigned long end; @@ -242,7 +248,8 @@ end = vma->vm_end; while (start < end) { - int result = swap_out_pgd(tsk, vma, pgdir, start, end, dma, wait); + int result = swap_out_pgd(tsk, vma, pgdir, start, end, dma, wait, + can_do_io); if (result) return result; start = (start + PGDIR_SIZE) & PGDIR_MASK; @@ -251,7 +258,7 @@ return 0; } -static int swap_out_process(struct task_struct * p, int dma, int wait) +static int swap_out_process(struct task_struct * p, int dma, int wait, int can_do_io) { unsigned long address; struct vm_area_struct* vma; @@ -272,7 +279,8 @@ address = vma->vm_start; for (;;) { - int result = swap_out_vma(p, vma, pgd_offset(p->mm, address), address, dma, wait); + int result = swap_out_vma(p, vma, pgd_offset(p->mm, address), address, dma, wait, + can_do_io); if (result) return result; vma = vma->vm_next; @@ -284,7 +292,7 @@ return 0; } -static int swap_out(unsigned int priority, int dma, int wait) +static int swap_out(unsigned int priority, int dma, int wait, int can_do_io) { static int swap_task; int loop, counter, shfrv; @@ -357,7 +365,7 @@ } if (!--p->swap_cnt) swap_task++; - switch (swap_out_process(p, dma, wait)) { + switch (swap_out_process(p, dma, wait, can_do_io)) { case 0: if (p->state == TASK_STOPPED) /* Stopped task occupy nonused ram */ @@ -391,24 +399,30 @@ { static int state = 0; int i=6; - int stop; + int stop, can_do_io; /* we don't try as hard if we're not waiting.. */ stop = 3; + can_do_io = 1; if (wait) stop = 0; + if (priority == GFP_BUFFER) { + /* bdflush() should do the rest if we fail */ + stop = 3; + can_do_io = 0; + } switch (state) { do { case 0: - if (shrink_mmap(i, dma)) + if (shrink_mmap(i, dma, can_do_io)) return 1; state = 1; case 1: - if (shm_swap(i, dma)) + if (can_do_io && shm_swap(i, dma)) return 1; state = 2; default: - if (swap_out(i, dma, wait)) + if (swap_out(i, dma, wait, can_do_io)) return 1; state = 0; i--; diff -urN linux-2.0.31-pre7/net/bridge/br.c linux-2.0.31-pre8/net/bridge/br.c --- linux-2.0.31-pre7/net/bridge/br.c 1996-11-07 22:44:27.000000000 -0800 +++ linux-2.0.31-pre8/net/bridge/br.c 2003-08-15 15:04:07.000000000 -0700 @@ -1418,7 +1418,7 @@ return; } - bpdu = (Tcn_bpdu *)skb->data + ETH_HLEN; + bpdu = (Tcn_bpdu *) (skb->data + ETH_HLEN); switch (bpdu->type) { case BPDU_TYPE_CONFIG: received_config_bpdu(port, (Config_bpdu *)bpdu); diff -urN linux-2.0.31-pre7/net/ipv4/route.c linux-2.0.31-pre8/net/ipv4/route.c --- linux-2.0.31-pre7/net/ipv4/route.c 2003-08-15 15:04:07.000000000 -0700 +++ linux-2.0.31-pre8/net/ipv4/route.c 2003-08-15 15:04:07.000000000 -0700 @@ -130,9 +130,9 @@ * Backlogging. */ -#define RT_BH_REDIRECT 0 -#define RT_BH_GARBAGE_COLLECT 1 -#define RT_BH_FREE 2 +#define RT_BH_REDIRECT 1 +#define RT_BH_GARBAGE_COLLECT 2 +#define RT_BH_FREE 4 struct rt_req {