Commit ae3e6abc authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.64

parent 27fc11ad
...@@ -2041,6 +2041,20 @@ CONFIG_XIA_FS ...@@ -2041,6 +2041,20 @@ CONFIG_XIA_FS
want), say M here and read Documentation/modules.txt. Note that the want), say M here and read Documentation/modules.txt. Note that the
filesystem of your root partition cannot be compiled as a module. filesystem of your root partition cannot be compiled as a module.
fat fs support
CONFIG_FAT_FS
If you want to use one of the FAT-based filesystems (the MS-DOS,
VFAT (Windows'95) and UMSDOS filesystems), then you must include
FAT support. This is not a filesystem in itself, but it provides
the foundation for the other filesystems. This option will enlarge
your kernel about 24 kB. If unsure, say Y. If you want to compile
this as a module however ( = code which can be inserted in and
removed from the running kernel whenever you want), say M here and
read Documentation/modules.txt. Note that if you compile the FAT
support as a module, you cannot compile any of the FAT-based file-
systems into the kernel - they will have to be modules as well.
The filesystem of your root partition cannot be a module.
msdos fs support msdos fs support
CONFIG_MSDOS_FS CONFIG_MSDOS_FS
This allows you to mount MSDOS partitions of your harddrive (unless This allows you to mount MSDOS partitions of your harddrive (unless
...@@ -2056,14 +2070,30 @@ CONFIG_MSDOS_FS ...@@ -2056,14 +2070,30 @@ CONFIG_MSDOS_FS
which doesn't require the msdos filesystem support. If you want to which doesn't require the msdos filesystem support. If you want to
use umsdos, the Unix-like filesystem on top of DOS, which allows you use umsdos, the Unix-like filesystem on top of DOS, which allows you
to run Linux from within a DOS partition without repartitioning, to run Linux from within a DOS partition without repartitioning,
you'll have to say Y here. This option will enlarge your kernel by you'll have to say Y or M here. If your have Windows'95 or Windows NT
about 25 kB. If unsure, say Y. If you want to compile this as a installed on your MSDOS partitions, you should use the VFAT
module however ( = code which can be inserted in and removed from filesystem instead, or you will not be able to see the long filenames
generated by Windows'95 / Windows NT. This option will enlarge your
kernel by about 7 kB. If unsure, say Y. If you want to compile this
as a module however ( = code which can be inserted in and removed from
the running kernel whenever you want), say M here and read the running kernel whenever you want), say M here and read
Documentation/modules.txt. Note that the filesystem of your root Documentation/modules.txt. Note that the filesystem of your root
partition cannot be a module. partition cannot be a module.
umsdos: Unix like fs on top of std MSDOS FAT fs vfat fs support
CONFIG_VFAT_FS
This allows you to mount MSDOS partitions of your harddrive. It
will let you use filenames in a way compatible with the long
filenames used by Windows'95 and Windows NT fat-based (not NTFS)
partitions. It does not support Windows'95 compressed filesystems.
You cannot use the VFAT filesystem for your root partition; use
UMSDOS instead. This option enlarges your kernel by about 10 kB.
If unsure, say N. If you want to compile this as a module ( = code
which can be inserted in and removed from the running kernel whenever
you want), say M here and read Documentation/modules.txt. Note that
the filesystem of your root partition cannot be a module.
umsdos: Unix like fs on top of std MSDOS fs
CONFIG_UMSDOS_FS CONFIG_UMSDOS_FS
Say Y here if you want to run Linux from within an existing DOS Say Y here if you want to run Linux from within an existing DOS
partition of your harddrive. The advantage of this is that you can partition of your harddrive. The advantage of this is that you can
......
...@@ -26,7 +26,8 @@ there are others as well, but these are less common. The different hardware ...@@ -26,7 +26,8 @@ there are others as well, but these are less common. The different hardware
types, as far as I'm aware, are not compatible and so you cannot wire a types, as far as I'm aware, are not compatible and so you cannot wire a
100Mbps card to a 2.5Mbps card, and so on. From what I hear, my driver does 100Mbps card to a 2.5Mbps card, and so on. From what I hear, my driver does
work with 100Mbps cards, but I haven't been able to verify this myself, work with 100Mbps cards, but I haven't been able to verify this myself,
since I only have the 2.5Mbps variety. since I only have the 2.5Mbps variety. It is probably not going to saturate
your 100Mbps card. Stop complaining :)
You also cannot connect an ARCnet card to any kind of ethernet card and You also cannot connect an ARCnet card to any kind of ethernet card and
expect it to work. expect it to work.
...@@ -46,6 +47,10 @@ even if it can't possibly be delivered properly (ie. because of a cable ...@@ -46,6 +47,10 @@ even if it can't possibly be delivered properly (ie. because of a cable
break, or because the destination computer does not exist) it will at least break, or because the destination computer does not exist) it will at least
tell the sender about it. tell the sender about it.
Because of the carefully defined action of the "token", it will always make
a pass around the "ring" within a maximum length of time. This makes it
useful for realtime networks.
In addition, all known ARCnet cards have an (almost) identical programming In addition, all known ARCnet cards have an (almost) identical programming
interface. This means that with one "arcnet" driver you can support any interface. This means that with one "arcnet" driver you can support any
card; whereas, with ethernet, each manufacturer uses what is sometimes a card; whereas, with ethernet, each manufacturer uses what is sometimes a
...@@ -60,9 +65,14 @@ limit on their packet sizes; standard ARCnet can only send packets that are ...@@ -60,9 +65,14 @@ limit on their packet sizes; standard ARCnet can only send packets that are
up to 508 bytes in length. This is smaller than the internet "bare minimum" up to 508 bytes in length. This is smaller than the internet "bare minimum"
of 576 bytes, let alone the ethernet MTU of 1500. To compensate, an extra of 576 bytes, let alone the ethernet MTU of 1500. To compensate, an extra
level of encapsulation is defined by RFC1201, which I call "packet level of encapsulation is defined by RFC1201, which I call "packet
splitting," which allows "virtual packets" to grow as large as 64K each, splitting," that allows "virtual packets" to grow as large as 64K each,
although they are generally kept down to the ethernet-style 1500 bytes. although they are generally kept down to the ethernet-style 1500 bytes.
For more information on the advantages and disadvantages (mostly the
advantages) of ARCnet networks, you might try the "ARCnet Trade Association"
WWW page:
http://www.arcnet.com
CABLING ARCNET NETWORKS CABLING ARCNET NETWORKS
----------------------- -----------------------
...@@ -260,7 +270,7 @@ All ARCnet cards should have a total of four or five different settings: ...@@ -260,7 +270,7 @@ All ARCnet cards should have a total of four or five different settings:
that IRQ2 is the same as IRQ9, as far as Linux is concerned. You can that IRQ2 is the same as IRQ9, as far as Linux is concerned. You can
"cat /proc/interrupts" for a somewhat complete list of which ones are in "cat /proc/interrupts" for a somewhat complete list of which ones are in
use at any given time. Here is a list of common usages from Vojtech use at any given time. Here is a list of common usages from Vojtech
Pavlik <vpav4328@diana.troja.mff.cuni.cz>: Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>:
("Not on bus" means there is no way for a card to generate this ("Not on bus" means there is no way for a card to generate this
interrupt) interrupt)
IRQ 0 - Timer 0 (Not on bus) IRQ 0 - Timer 0 (Not on bus)
...@@ -268,9 +278,9 @@ All ARCnet cards should have a total of four or five different settings: ...@@ -268,9 +278,9 @@ All ARCnet cards should have a total of four or five different settings:
IRQ 2 - IRQ Controller 2 (Not on bus, nor does interrupt the CPU) IRQ 2 - IRQ Controller 2 (Not on bus, nor does interrupt the CPU)
IRQ 3 - COM2 IRQ 3 - COM2
IRQ 4 - COM1 IRQ 4 - COM1
IRQ 5 - FREE (LPT2 if you have it; sometimes COM3) IRQ 5 - FREE (LPT2 if you have it; sometimes COM3; maybe PLIP)
IRQ 6 - Floppy disk controller IRQ 6 - Floppy disk controller
IRQ 7 - FREE (LPT1 if you don't use the polling driver or PLIP) IRQ 7 - FREE (LPT1 if you don't use the polling driver; PLIP)
IRQ 8 - Realtime Clock Interrupt (Not on bus) IRQ 8 - Realtime Clock Interrupt (Not on bus)
IRQ 9 - FREE (VGA vertical sync interrupt if enabled) IRQ 9 - FREE (VGA vertical sync interrupt if enabled)
IRQ 10 - FREE IRQ 10 - FREE
...@@ -280,6 +290,19 @@ All ARCnet cards should have a total of four or five different settings: ...@@ -280,6 +290,19 @@ All ARCnet cards should have a total of four or five different settings:
IRQ 14 - Fixed Disk Controller IRQ 14 - Fixed Disk Controller
IRQ 15 - FREE (Fixed Disk Controller 2 if you have it) IRQ 15 - FREE (Fixed Disk Controller 2 if you have it)
Note: IRQ 9 is used on some video cards for the "vertical retrace"
interrupt. This interrupt would have been handy for things like
video games, as it occurs exactly once per screen refresh, but
unfortunately IBM cancelled this feature starting with the original
VGA and thus many VGA/SVGA cards do not support it. For this
reason, no modern software uses this interrupt and it can almost
always be safely disabled, if your video card supports it at all.
If your card for some reason CANNOT disable this IRQ (usually there
is a jumper), one solution would be to clip the printed circuit
contact on the board: it's the fourth contact from the left on the
back side. I take no responsibility if you try this.
- Avery's favourite: IRQ2 (actually IRQ9). Watch that VGA, though. - Avery's favourite: IRQ2 (actually IRQ9). Watch that VGA, though.
- the memory address: Unlike most cards, ARCnets use "shared memory" for - the memory address: Unlike most cards, ARCnets use "shared memory" for
...@@ -324,7 +347,7 @@ All ARCnet cards should have a total of four or five different settings: ...@@ -324,7 +347,7 @@ All ARCnet cards should have a total of four or five different settings:
network. network.
Also, on many cards (not mine, though) there are red and green LED's. Also, on many cards (not mine, though) there are red and green LED's.
Vojtech Pavlik <vpav4328@diana.troja.mff.cuni.cz> tells me this is what they Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz> tells me this is what they
mean: mean:
GREEN RED Status GREEN RED Status
----- --- ------ ----- --- ------
...@@ -368,7 +391,7 @@ Cards Listed in this file (in this order, mostly): ...@@ -368,7 +391,7 @@ Cards Listed in this file (in this order, mostly):
SMC PC550Longboard 16 SMC PC550Longboard 16
SMC PC600 16 SMC PC600 16
SMC PC710 8 SMC PC710 8
SMC? LCS-8830-T 16? SMC? LCS-8830(-T) 8/16
Puredata PDI507 8 Puredata PDI507 8
CNet Tech CN120-Series 8 CNet Tech CN120-Series 8
CNet Tech CN160-Series 16 CNet Tech CN160-Series 16
...@@ -974,9 +997,12 @@ I know it works when connected to a PC110 type ARCnet board. ...@@ -974,9 +997,12 @@ I know it works when connected to a PC110 type ARCnet board.
***************************************************************************** *****************************************************************************
** Possibly SMC ** ** Possibly SMC **
LCS-8830-T (16-bit card) LCS-8830(-T) (8 and 16-bit cards)
------------------------ ---------------------------------
- from Mathias Katzer <mkatzer@HRZ.Uni-Bielefeld.DE> - from Mathias Katzer <mkatzer@HRZ.Uni-Bielefeld.DE>
- Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl> says the
LCS-8830 is slightly different from LCS-8830-T. These are 8 bit, BUS
only (the JP0 jumper is hardwired), and BNC only.
This is a LCS-8830-T made by SMC, I think ('SMC' only appears on one PLCC, This is a LCS-8830-T made by SMC, I think ('SMC' only appears on one PLCC,
nowhere else, not even on the few xeroxed sheets from the manual). nowhere else, not even on the few xeroxed sheets from the manual).
...@@ -1709,7 +1735,7 @@ JP 6 : IRQ set (ONLY ONE jumper on 1-5 for IRQ 2-6) ...@@ -1709,7 +1735,7 @@ JP 6 : IRQ set (ONLY ONE jumper on 1-5 for IRQ 2-6)
** Acer ** ** Acer **
8-bit card, Model 5210-003 8-bit card, Model 5210-003
-------------------------- --------------------------
- from Vojtech Pavlik <vpav4328@diana.troja.mff.cuni.cz> using portions of - from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz> using portions of
the existing arcnet-hardware file. the existing arcnet-hardware file.
This is a 90C26 based card. Its configuration seems similar to This is a 90C26 based card. Its configuration seems similar to
...@@ -1877,7 +1903,7 @@ guess the purpose. ...@@ -1877,7 +1903,7 @@ guess the purpose.
** Datapoint? ** ** Datapoint? **
LAN-ARC-8, an 8-bit card LAN-ARC-8, an 8-bit card
------------------------ ------------------------
- from Vojtech Pavlik <vpav4328@diana.troja.mff.cuni.cz> - from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
This is another SMC 90C65 based arcnet card. I couldn't identify the This is another SMC 90C65 based arcnet card. I couldn't identify the
manufacturer, but it might be DataPoint, becsuse the card has the manufacturer, but it might be DataPoint, becsuse the card has the
...@@ -2017,7 +2043,7 @@ parameters. These two switches are normally left in the OFF position. ...@@ -2017,7 +2043,7 @@ parameters. These two switches are normally left in the OFF position.
** Topware ** ** Topware **
8-bit card, TA-ARC/10 8-bit card, TA-ARC/10
------------------------- -------------------------
- from Vojtech Pavlik <vpav4328@diana.troja.mff.cuni.cz> - from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
This is another very similar 90C65 card. Most of the switches and jumpers This is another very similar 90C65 card. Most of the switches and jumpers
are the same as on other clones. are the same as on other clones.
...@@ -2726,7 +2752,7 @@ Setting the Timeouts ...@@ -2726,7 +2752,7 @@ Setting the Timeouts
** No Name ** ** No Name **
8-bit cards ("Made in Taiwan R.O.C.") 8-bit cards ("Made in Taiwan R.O.C.")
----------- -----------
- from Vojtech Pavlik <vpav4328@diana.troja.mff.cuni.cz> - from Vojtech Pavlik <Vojtech.Pavlik@st.mff.cuni.cz>
I have named this ARCnet card "NONAME", since I got only the card with I have named this ARCnet card "NONAME", since I got only the card with
no manual at all and the only text identifying the manufacturer is no manual at all and the only text identifying the manufacturer is
......
...@@ -7,8 +7,8 @@ manual with your ARCnet card. ...@@ -7,8 +7,8 @@ manual with your ARCnet card.
Since no one seems to listen to me otherwise, perhaps a poem will get your Since no one seems to listen to me otherwise, perhaps a poem will get your
attention: attention:
This is scary software This driver's getting fat and beefy,
If it works I DO CARE. But my cat is still named Fifi.
Hmm, I think I'm allowed to call that a poem, even though it's only two Hmm, I think I'm allowed to call that a poem, even though it's only two
lines. Hey, I'm in Computer Science, not English. Give me a break. lines. Hey, I'm in Computer Science, not English. Give me a break.
...@@ -46,16 +46,16 @@ My e-mail address is: apenwarr@foxnet.net ...@@ -46,16 +46,16 @@ My e-mail address is: apenwarr@foxnet.net
These are the ARCnet drivers for Linux. These are the ARCnet drivers for Linux.
This new release has resulted from many months of on-and-off effort from me This new release has resulted from many months of on-and-off effort from me
(Avery Pennarun), many bug reports from users, and in particular a lot of (Avery Pennarun), many bug reports/fixes and suggestions from others, and in
input and coding from Tomasz Motylewski. Starting with ARCnet 2.10 ALPHA, particular a lot of input and coding from Tomasz Motylewski. Starting with
Tomasz's all-new-and-improved RFC1051 support has been included and seems to ARCnet 2.10 ALPHA, Tomasz's all-new-and-improved RFC1051 support has been
be working fine! included and seems to be working fine!
Where do I discuss these drivers? Where do I discuss these drivers?
--------------------------------- ---------------------------------
BOINGY - the linux-arcnet@807-city.on.ca mailing list is now so unstable HEY!! - the linux-arcnet@807-city.on.ca mailing list is now so unstable
that I can't recommend people even bother with it. I no longer have an that I can't recommend people even bother with it. I no longer have an
account on 807-CITY (though they still graciously forward my mail to me) so account on 807-CITY (though they still graciously forward my mail to me) so
there's not much I can do. there's not much I can do.
...@@ -65,12 +65,9 @@ mailing list; subscribe by sending a message with the BODY "subscribe ...@@ -65,12 +65,9 @@ mailing list; subscribe by sending a message with the BODY "subscribe
linux-arcnet YOUR REAL NAME" to listserv@tichy.ch.uj.edu.pl. Then, to linux-arcnet YOUR REAL NAME" to listserv@tichy.ch.uj.edu.pl. Then, to
submit messages to the list, mail to linux-arcnet@tichy.ch.uj.edu.pl. submit messages to the list, mail to linux-arcnet@tichy.ch.uj.edu.pl.
There are mailing list archives at: There are archives of the mailing list at:
http://tichy.ch.uj.edu.pl/lists/linux-arcnet http://tichy.ch.uj.edu.pl/lists/linux-arcnet
Send all bug (or success) reports to me, then, not the list, since (as I
mentioned) the list doesn't work.
The people on linux-net@vger.rutgers.edu have also been known to be very The people on linux-net@vger.rutgers.edu have also been known to be very
helpful, especially when we're talking about ALPHA Linux kernels that may or helpful, especially when we're talking about ALPHA Linux kernels that may or
may not work right in the first place. may not work right in the first place.
...@@ -264,10 +261,14 @@ The ARCnet driver v2.10 ALPHA supports three protocols, each on its own ...@@ -264,10 +261,14 @@ The ARCnet driver v2.10 ALPHA supports three protocols, each on its own
The arc0s support was contributed by Tomasz Motylewski The arc0s support was contributed by Tomasz Motylewski
and modified somewhat by me. Bugs are probably my fault. and modified somewhat by me. Bugs are probably my fault.
You can choose not to compile arc0e and arc0s into the driver if you want -
this will save you a bit of memory and avoid confusion when eg. trying to
use the "NFS-root" stuff in recent Linux kernels.
The arc0e and arc0s devices are created automatically when you first The arc0e and arc0s devices are created automatically when you first
'ifconfig' the arc0 device. To actually use them, though, you need to also ifconfig the arc0 device. To actually use them, though, you need to also
'ifconfig' the other virtual devices you need. There are a number of ways ifconfig the other virtual devices you need. There are a number of ways you
you can set up your network then: can set up your network then:
1. Single Protocol. 1. Single Protocol.
...@@ -330,7 +331,7 @@ you can set up your network then: ...@@ -330,7 +331,7 @@ you can set up your network then:
ifconfig arc0 freedom ifconfig arc0 freedom
route add freedom arc0 route add freedom arc0
route add insight arc0 route add insight arc0
/* and default gateway is configured by PPP */ /* and default gateway is configured by pppd */
Great, now insight talks to freedom directly on arc0, and sends packets Great, now insight talks to freedom directly on arc0, and sends packets
to the internet through freedom. If you didn't know how to do the above, to the internet through freedom. If you didn't know how to do the above,
...@@ -374,16 +375,15 @@ you can set up your network then: ...@@ -374,16 +375,15 @@ you can set up your network then:
both insight and patience are using freedom as their default gateway, the both insight and patience are using freedom as their default gateway, the
two can already talk to each other. two can already talk to each other.
It's quite fortunate that I set things up like this the first time It's quite fortunate that I set things up like this the first time (cough
through (cough cough) because it's really handy when I boot insight into cough) because it's really handy when I boot insight into DOS. There, it
DOS. There, it runs the Novell ODI protocol stack, which only works with runs the Novell ODI protocol stack, which only works with RFC1201 ARCnet.
RFC1201 ARCnet. In this mode it would be impossible for insight to In this mode it would be impossible for insight to communicate directly
communicate directly with patience, since the Novell stack is with patience, since the Novell stack is incompatible with Microsoft's
incompatible with Microsoft's Ethernet-Encap. Without changing any Ethernet-Encap. Without changing any settings on freedom or patience, I
settings on freedom or patience, I simply set freedom as the default simply set freedom as the default gateway for insight (now in DOS,
gateway for insight (now in DOS, remember) and all the forwarding happens remember) and all the forwarding happens "automagically" between the two
"automagically" between the two hosts that would normally not be able to hosts that would normally not be able to communicate at all.
communicate at all.
For those who like diagrams, I have created two "virtual subnets" on the For those who like diagrams, I have created two "virtual subnets" on the
same physical ARCnet wire. You can picture it like this: same physical ARCnet wire. You can picture it like this:
...@@ -397,15 +397,13 @@ you can set up your network then: ...@@ -397,15 +397,13 @@ you can set up your network then:
| | * | | | | * | |
| +-Freedom-*-Gatekeeper-+ | | +-Freedom-*-Gatekeeper-+ |
| | | * | | | | | * | |
\-------+-------/ | \-------+-------/ \-------+-------/ | * \-------+-------/
| | | | | |
Insight | Patience Insight | Patience
(Internet) (Internet)
It works: what now? It works: what now?
------------------- -------------------
...@@ -424,31 +422,37 @@ It doesn't work: what now? ...@@ -424,31 +422,37 @@ It doesn't work: what now?
-------------------------- --------------------------
Do the same as above, but also include the output of the ifconfig and route Do the same as above, but also include the output of the ifconfig and route
commands, as well as any pertinent log entries (ie: anything that starts commands, as well as any pertinent log entries (ie. anything that starts
with "arcnet:" and has shown up since the last reboot) in your mail. with "arcnet:" and has shown up since the last reboot) in your mail.
If you want to try fixing it yourself (I strongly recommend that you mail me If you want to try fixing it yourself (I strongly recommend that you mail me
about the problem first, since it might already have been solved) you may about the problem first, since it might already have been solved) you may
want to try some of the debug levels available. For heavy testing on want to try some of the debug levels available. For heavy testing on
D_DURING or more, it would be a REALLY good idea to kill your klogd daemon D_DURING or more, it would be a REALLY good idea to kill your klogd daemon
first! D_DURING displays 4-5 lines for each packet sent or received. D_TX first! D_DURING displays 4-5 lines for each packet sent or received. D_TX,
and RX actually DISPLAY each packet as it is sent or received, which is D_RX, and D_SKB actually DISPLAY each packet as it is sent or received,
obviously quite big. which is obviously quite big.
You can run the arcdump shell script (available from me or in the full Starting with v2.40 ALPHA, the autoprobe routines have changed
ARCnet package if you got it) as root to list the contents of the arcnet significantly. In particular, they won't tell you why the card was not
buffers at any time. To make any sense at all out of this, you should grab found unless you turn on the D_INIT_REASONS debugging flag.
the pertinent RFC's. (some are listed near the top of arcnet.c). arcdump
assumes your card is at 0xD0000. If it isn't, edit the script. Once the driver is running, you can run the arcdump shell script (available
from me or in the full ARCnet package, if you have it) as root to list the
Buffers #0 and 1 are used for receiving, and Buffers #2 and 3 are for contents of the arcnet buffers at any time. To make any sense at all out of
sending. Ping-pong buffers are implemented both ways. this, you should grab the pertinent RFC's. (some are listed near the top of
arcnet.c). arcdump assumes your card is at 0xD0000. If it isn't, edit the
If your debug level includes D_DURING, the buffers are cleared to a constant script.
value of 0x42 every time the card is reset (which should only happen when
you do an ifconfig up, or when Linux decides that the driver is broken). Buffers 0 and 1 are used for receiving, and Buffers 2 and 3 are for sending.
This is to make it easier to figure out which bytes are being used by a Ping-pong buffers are implemented both ways.
packet.
If your debug level includes D_DURING and you did NOT define SLOW_XMIT_COPY,
the buffers are cleared to a constant value of 0x42 every time the card is
reset (which should only happen when you do an ifconfig up, or when Linux
decides that the driver is broken). During a transmit, unused parts of the
buffer will be cleared to 0x42 as well. This is to make it easier to figure
out which bytes are being used by a packet.
You can change the debug level without recompiling the kernel by typing: You can change the debug level without recompiling the kernel by typing:
ifconfig arc0 down metric 1xxx ifconfig arc0 down metric 1xxx
...@@ -456,10 +460,10 @@ You can change the debug level without recompiling the kernel by typing: ...@@ -456,10 +460,10 @@ You can change the debug level without recompiling the kernel by typing:
where "xxx" is the debug level you want. For example, "metric 1015" would put where "xxx" is the debug level you want. For example, "metric 1015" would put
you at debug level 15. Debug level 7 is currently the default. you at debug level 15. Debug level 7 is currently the default.
Note that the debug level is (as of v1.90 ALPHA) a binary combination of Note that the debug level is (starting with v1.90 ALPHA) a binary
different debug flags; so debug level 7 is really 1+2+4 or combination of different debug flags; so debug level 7 is really 1+2+4 or
D_NORMAL+D_INIT+D_EXTRA. To reach D_DURING, you would add 8 to this, D_NORMAL+D_EXTRA+D_INIT. To include D_DURING, you would add 16 to this,
resulting in debug level 15. resulting in debug level 23.
If you don't understand that, you probably don't want to know anyway. If you don't understand that, you probably don't want to know anyway.
E-mail me about your problem. E-mail me about your problem.
......
VERSION = 1 VERSION = 1
PATCHLEVEL = 3 PATCHLEVEL = 3
SUBLEVEL = 63 SUBLEVEL = 64
ARCH = i386 ARCH = i386
......
...@@ -581,7 +581,7 @@ static inline void avanti_and_noname_fixup(void) ...@@ -581,7 +581,7 @@ static inline void avanti_and_noname_fixup(void)
{ 0, 0, 2, 1, 0}, /* idsel 11 (slot furthest from ISA) KN25_PCI_SLOT0 */ { 0, 0, 2, 1, 0}, /* idsel 11 (slot furthest from ISA) KN25_PCI_SLOT0 */
{ 1, 1, 0, 2, 1}, /* idsel 12 (middle slot) KN25_PCI_SLOT1 */ { 1, 1, 0, 2, 1}, /* idsel 12 (middle slot) KN25_PCI_SLOT1 */
#ifdef CONFIG_ALPHA_AVANTI #ifdef CONFIG_ALPHA_AVANTI
{ 1, 1, -1, -1, -1}, /* idsel 13 KN25_PCI_SLOT2 */ { 1, 2, 1, 0, 2}, /* idsel 13 KN25_PCI_SLOT2 */
#endif /* CONFIG_ALPHA_AVANTI */ #endif /* CONFIG_ALPHA_AVANTI */
}; };
/* /*
......
...@@ -622,6 +622,8 @@ asmlinkage void do_entInt(unsigned long type, unsigned long vector, unsigned lon ...@@ -622,6 +622,8 @@ asmlinkage void do_entInt(unsigned long type, unsigned long vector, unsigned lon
cabriolet_and_eb66p_device_interrupt(vector, &regs); cabriolet_and_eb66p_device_interrupt(vector, &regs);
#elif NR_IRQS == 32 #elif NR_IRQS == 32
eb66_and_eb64p_device_interrupt(vector, &regs); eb66_and_eb64p_device_interrupt(vector, &regs);
#elif NR_IRQS == 16
isa_device_interrupt(vector, &regs);
#endif #endif
return; return;
case 4: case 4:
......
#include <linux/module.h> #include <linux/module.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/user.h>
#include <linux/elfcore.h>
extern void dump_thread(struct pt_regs *, struct user *);
extern int dump_fpu(elf_fpregset_t *);
static struct symbol_table arch_symbol_table = { static struct symbol_table arch_symbol_table = {
#include <linux/symtab_begin.h> #include <linux/symtab_begin.h>
/* platform dependent support */ /* platform dependent support */
X(dump_thread),
X(dump_fpu),
#ifdef __SMP__ #ifdef __SMP__
X(apic_reg), /* Needed internally for the I386 inlines */ X(apic_reg), /* Needed internally for the I386 inlines */
X(cpu_data), X(cpu_data),
......
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
/* do print messages for unexpected interrupts */ /* do print messages for unexpected interrupts */
static int print_unex=1; static int print_unex=1;
#include <linux/utsname.h>
#include <linux/module.h> #include <linux/module.h>
/* the following is the mask of allowed drives. By default units 2 and /* the following is the mask of allowed drives. By default units 2 and
...@@ -3118,31 +3118,16 @@ static struct translation_entry { ...@@ -3118,31 +3118,16 @@ static struct translation_entry {
static inline int normalize_0x02xx_ioctl(int *cmd, int *size) static inline int normalize_0x02xx_ioctl(int *cmd, int *size)
{ {
int i, orig_size, ocmd; int i;
orig_size = _IOC_SIZE(*cmd);
ocmd = *cmd;
for (i=0; i < ARRAY_SIZE(translation_table); i++) { for (i=0; i < ARRAY_SIZE(translation_table); i++) {
if ((*cmd & 0xff3f) == (translation_table[i].newcmd & 0xff3f)){ if ((*cmd & 0xffff) == (translation_table[i].newcmd & 0xffff)){
*cmd = translation_table[i].newcmd;
if (!orig_size && _IOC_SIZE(*cmd)) {
/* kernels 1.3.34 to 1.3.39 : */
*size = _IOC_SIZE(*cmd); *size = _IOC_SIZE(*cmd);
DPRINT1("warning: obsolete ioctl 0x%x\n",ocmd); *cmd = translation_table[i].newcmd;
DPRINT("please recompile your program\n");
/* these ioctls only existed
* in six (development)
* kernels anyways. That's why we
* complain about these, and not about
* the much older 0x00xx ioctl's
*/
} else {
*size = orig_size;
if (*size > _IOC_SIZE(*cmd)) { if (*size > _IOC_SIZE(*cmd)) {
printk("ioctl not yet supported\n"); printk("ioctl not yet supported\n");
return -EFAULT; return -EFAULT;
} }
}
return 0; return 0;
} }
} }
...@@ -3152,14 +3137,18 @@ static inline int normalize_0x02xx_ioctl(int *cmd, int *size) ...@@ -3152,14 +3137,18 @@ static inline int normalize_0x02xx_ioctl(int *cmd, int *size)
static inline int xlate_0x00xx_ioctl(int *cmd, int *size) static inline int xlate_0x00xx_ioctl(int *cmd, int *size)
{ {
int i; int i;
/* kernels <= 1.3.33 */ /* old ioctls' for kernels <= 1.3.33 */
/* we might want to start warning in 1.4.x (by then, no user /* When the next even release will come around, we'll start
* programs will have an excuse to use the old ioctls: there * warning against these.
* will be a stable kernel supporting them :) * When the next odd release will come around, we'll fail with
* * -EINVAL */
* when the first 1.5.x kernel will come out, this loop will if(strcmp(system_utsname.version, "1.4.0") >= 0)
* be removed as well. printk("obsolete floppy ioctl %x\n", *cmd);
*/ if((system_utsname.version[0] == '1' &&
strcmp(system_utsname.version, "1.5.0") >= 0) ||
(system_utsname.version[0] >= '2' &&
strcmp(system_utsname.version, "2.1.0") >= 0))
return -EINVAL;
for (i=0; i < ARRAY_SIZE(translation_table); i++) { for (i=0; i < ARRAY_SIZE(translation_table); i++) {
if (*cmd == translation_table[i].oldcmd) { if (*cmd == translation_table[i].oldcmd) {
*size = translation_table[i].oldsize; *size = translation_table[i].oldsize;
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
* NOTE that writes may use only the low 2/3 of these: reads * NOTE that writes may use only the low 2/3 of these: reads
* take precedence. * take precedence.
*/ */
#define NR_REQUEST 16 #define NR_REQUEST 64
static struct request all_requests[NR_REQUEST]; static struct request all_requests[NR_REQUEST];
/* /*
......
...@@ -431,7 +431,7 @@ void rd_load() ...@@ -431,7 +431,7 @@ void rd_load()
outfile.f_op->write(outfile.f_inode, &outfile, buf, outfile.f_op->write(outfile.f_inode, &outfile, buf,
BLOCK_SIZE); BLOCK_SIZE);
if (!(i % 16)) { if (!(i % 16)) {
printk("%c\b", rotator[rotate & 0x3]); printk(KERN_NOTICE "%c\b", rotator[rotate & 0x3]);
rotate++; rotate++;
} }
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* /*
* stallion.c -- stallion multiport serial driver. * stallion.c -- stallion multiport serial driver.
* *
* Copyright (C) 1994,1995 Greg Ungerer (gerg@stallion.oz.au). * Copyright (C) 1994-1996 Greg Ungerer (gerg@stallion.oz.au).
* *
* This code is loosely based on the Linux serial driver, written by * This code is loosely based on the Linux serial driver, written by
* Linus Torvalds, Theodore T'so and others. * Linus Torvalds, Theodore T'so and others.
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
/*****************************************************************************/ /*****************************************************************************/
#include <linux/module.h> #include <linux/module.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/wait.h> #include <linux/wait.h>
...@@ -42,7 +41,6 @@ ...@@ -42,7 +41,6 @@
#include <linux/malloc.h> #include <linux/malloc.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/config.h> /* for CONFIG_PCI */ #include <linux/config.h> /* for CONFIG_PCI */
#include <asm/system.h> #include <asm/system.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/segment.h> #include <asm/segment.h>
...@@ -143,7 +141,7 @@ static int stl_nrbrds = sizeof(stl_brdconf) / sizeof(stlconf_t); ...@@ -143,7 +141,7 @@ static int stl_nrbrds = sizeof(stl_brdconf) / sizeof(stlconf_t);
* all the local structures required by a serial tty driver. * all the local structures required by a serial tty driver.
*/ */
static char *stl_drvname = "Stallion Multiport Serial Driver"; static char *stl_drvname = "Stallion Multiport Serial Driver";
static char *stl_drvversion = "1.0.0"; static char *stl_drvversion = "1.0.2";
static char *stl_serialname = "ttyE"; static char *stl_serialname = "ttyE";
static char *stl_calloutname = "cue"; static char *stl_calloutname = "cue";
...@@ -452,7 +450,6 @@ static unsigned int stl_baudrates[] = { ...@@ -452,7 +450,6 @@ static unsigned int stl_baudrates[] = {
int init_module(void); int init_module(void);
void cleanup_module(void); void cleanup_module(void);
#endif #endif
static void *stl_memalloc(int len);
int stl_init(void); int stl_init(void);
static int stl_open(struct tty_struct *tty, struct file *filp); static int stl_open(struct tty_struct *tty, struct file *filp);
...@@ -494,6 +491,7 @@ static int stl_waitcarrier(stlport_t *portp, struct file *filp); ...@@ -494,6 +491,7 @@ static int stl_waitcarrier(stlport_t *portp, struct file *filp);
static void stl_delay(int len); static void stl_delay(int len);
static void stl_intr(int irq, struct pt_regs *regs); static void stl_intr(int irq, struct pt_regs *regs);
static void stl_offintr(void *private); static void stl_offintr(void *private);
static void *stl_memalloc(int len);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
static int stl_findpcibrds(void); static int stl_findpcibrds(void);
...@@ -504,8 +502,9 @@ static int stl_findpcibrds(void); ...@@ -504,8 +502,9 @@ static int stl_findpcibrds(void);
#ifdef MODULE #ifdef MODULE
/* /*
* Use the kernel version number for modules. * Loadable module initialization stuff.
*/ */
int init_module() int init_module()
{ {
unsigned long flags; unsigned long flags;
...@@ -605,15 +604,12 @@ void cleanup_module() ...@@ -605,15 +604,12 @@ void cleanup_module()
/*****************************************************************************/ /*****************************************************************************/
/* /*
* Local memory allocation routines. These are used so we can deal with * Local driver kernel memory allocation routine.
* memory allocation at init time and during run-time in a consistent
* way. Everbody just calls the stl_memalloc routine to allocate
* memory and it will do the right thing.
*/ */
static void *stl_memalloc(int len) static void *stl_memalloc(int len)
{ {
return (void *) kmalloc(len, GFP_KERNEL); return((void *) kmalloc(len, GFP_KERNEL));
} }
/*****************************************************************************/ /*****************************************************************************/
...@@ -2782,18 +2778,6 @@ static int stl_findpcibrds() ...@@ -2782,18 +2778,6 @@ static int stl_findpcibrds()
} }
brdp->irq = irq; brdp->irq = irq;
#if 0
ioaddr = 0x0c000001;
if ((rc = pcibios_write_config_dword(busnr, devnr, 0x40, ioaddr))) {
printk("STALLION: failed to write register on PCI board, errno=%x\n", rc);
continue;
}
if ((rc = pcibios_write_config_dword(busnr, devnr, 0x48, ioaddr))) {
printk("STALLION: failed to write register on PCI board, errno=%x\n", rc);
continue;
}
#endif
stl_brdinit(brdp); stl_brdinit(brdp);
} }
} }
...@@ -2919,7 +2903,7 @@ int stl_init(void) ...@@ -2919,7 +2903,7 @@ int stl_init(void)
if (tty_register_driver(&stl_callout)) if (tty_register_driver(&stl_callout))
printk("STALLION: failed to register callout driver\n"); printk("STALLION: failed to register callout driver\n");
return 0; return(0);
} }
/*****************************************************************************/ /*****************************************************************************/
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -61,6 +61,7 @@ struct symbol_table scsi_symbol_table = { ...@@ -61,6 +61,7 @@ struct symbol_table scsi_symbol_table = {
X(need_isa_buffer), X(need_isa_buffer),
X(request_queueable), X(request_queueable),
X(print_Scsi_Cmnd), X(print_Scsi_Cmnd),
X(scsi_mark_host_bus_reset),
#if defined(CONFIG_PROC_FS) #if defined(CONFIG_PROC_FS)
X(proc_print_scsidevice), X(proc_print_scsidevice),
#endif #endif
......
...@@ -12,8 +12,8 @@ tristate 'xiafs filesystem support' CONFIG_XIA_FS ...@@ -12,8 +12,8 @@ tristate 'xiafs filesystem support' CONFIG_XIA_FS
# msdos filesystems # msdos filesystems
tristate 'DOS FAT fs support' CONFIG_FAT_FS tristate 'DOS FAT fs support' CONFIG_FAT_FS
dep_tristate 'Old MSDOS fs support' CONFIG_MSDOS_FS $CONFIG_FAT_FS dep_tristate 'MSDOS fs support' CONFIG_MSDOS_FS $CONFIG_FAT_FS
dep_tristate 'vfat (Windows-95) fs support' CONFIG_VFAT_FS $CONFIG_FAT_FS dep_tristate 'VFAT (Windows-95) fs support' CONFIG_VFAT_FS $CONFIG_FAT_FS
dep_tristate 'umsdos: Unix like fs on top of std MSDOS FAT fs' CONFIG_UMSDOS_FS $CONFIG_MSDOS_FS dep_tristate 'umsdos: Unix like fs on top of std MSDOS FAT fs' CONFIG_UMSDOS_FS $CONFIG_MSDOS_FS
bool '/proc filesystem support' CONFIG_PROC_FS bool '/proc filesystem support' CONFIG_PROC_FS
......
...@@ -100,7 +100,7 @@ static union bdflush_param{ ...@@ -100,7 +100,7 @@ static union bdflush_param{
trim back the buffers */ trim back the buffers */
} b_un; } b_un;
unsigned int data[N_PARAM]; unsigned int data[N_PARAM];
} bdf_prm = {{60, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}}; } bdf_prm = {{25, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
/* The lav constant is set for 1 minute, as long as the update process runs /* The lav constant is set for 1 minute, as long as the update process runs
every 5 seconds. If you change the frequency of update, the time every 5 seconds. If you change the frequency of update, the time
...@@ -1111,7 +1111,7 @@ int brw_page(int rw, unsigned long address, kdev_t dev, int b[], int size, int b ...@@ -1111,7 +1111,7 @@ int brw_page(int rw, unsigned long address, kdev_t dev, int b[], int size, int b
memcpy(next->b_data, tmp->b_data, size); memcpy(next->b_data, tmp->b_data, size);
else { else {
memcpy(tmp->b_data, next->b_data, size); memcpy(tmp->b_data, next->b_data, size);
set_bit(BH_Dirty, &tmp->b_state); mark_buffer_dirty(tmp, 0);
} }
brelse(tmp); brelse(tmp);
next->b_count--; next->b_count--;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
*/ */
#include <linux/module.h> #include <linux/module.h>
#include <linux/mm.h>
#include <linux/msdos_fs.h> #include <linux/msdos_fs.h>
#include "msbuffer.h" #include "msbuffer.h"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/mm.h>
#include <linux/msdos_fs.h> #include <linux/msdos_fs.h>
static struct symbol_table msdos_syms = { static struct symbol_table msdos_syms = {
......
...@@ -775,6 +775,7 @@ extern int get_ksyms_list(char *, char **, off_t, int); ...@@ -775,6 +775,7 @@ extern int get_ksyms_list(char *, char **, off_t, int);
#endif #endif
extern int get_device_list(char *); extern int get_device_list(char *);
extern int get_filesystem_list(char *); extern int get_filesystem_list(char *);
extern int get_filesystem_info( char * );
extern int get_irq_list(char *); extern int get_irq_list(char *);
extern int get_dma_list(char *); extern int get_dma_list(char *);
extern int get_cpuinfo(char *); extern int get_cpuinfo(char *);
...@@ -846,6 +847,9 @@ static int get_root_array(char * page, int type, char **start, off_t offset, int ...@@ -846,6 +847,9 @@ static int get_root_array(char * page, int type, char **start, off_t offset, int
#endif #endif
case PROC_CMDLINE: case PROC_CMDLINE:
return get_cmdline(page); return get_cmdline(page);
case PROC_MTAB:
return get_filesystem_info( page );
} }
return -EBADF; return -EBADF;
} }
......
...@@ -362,6 +362,9 @@ void proc_root_init(void) ...@@ -362,6 +362,9 @@ void proc_root_init(void)
S_IFREG | S_IRUGO, 1, 0, 0, S_IFREG | S_IRUGO, 1, 0, 0,
}); });
proc_register( &proc_root, &(struct proc_dir_entry)
{ PROC_MTAB, 6, "mounts", S_IFREG | S_IRUGO, 1, 0, 0, } );
if (prof_shift) { if (prof_shift) {
proc_register(&proc_root, &(struct proc_dir_entry) { proc_register(&proc_root, &(struct proc_dir_entry) {
PROC_PROFILE, 7, "profile", PROC_PROFILE, 7, "profile",
......
...@@ -262,6 +262,23 @@ asmlinkage int sys_sysfs(int option, ...) ...@@ -262,6 +262,23 @@ asmlinkage int sys_sysfs(int option, ...)
return retval; return retval;
} }
int get_filesystem_info( char *buf )
{
struct vfsmount *tmp = vfsmntlist;
int len = 0;
while ( tmp && len < PAGE_SIZE - 80 )
{
len += sprintf( buf + len, "%s %s %s %s",
tmp->mnt_devname, tmp->mnt_dirname, tmp->mnt_sb->s_type->name,
tmp->mnt_flags & MS_RDONLY ? "ro" : "rw" );
len += sprintf( buf + len, " 0 0\n" );
tmp = tmp->mnt_next;
}
return len;
}
int get_filesystem_list(char * buf) int get_filesystem_list(char * buf)
{ {
int len = 0; int len = 0;
......
...@@ -401,6 +401,7 @@ static int vfat_create_shortname(struct inode *dir, const char *name, ...@@ -401,6 +401,7 @@ static int vfat_create_shortname(struct inode *dir, const char *name,
extlen = 0; extlen = 0;
} }
ext[extlen] = '\0'; ext[extlen] = '\0';
base[baselen] = '\0';
count = 0; count = 0;
strcpy(msdos_name, base); strcpy(msdos_name, base);
......
...@@ -37,17 +37,17 @@ __ntohl(unsigned long int x) ...@@ -37,17 +37,17 @@ __ntohl(unsigned long int x)
unsigned long int res, t1, t2; unsigned long int res, t1, t2;
__asm__( __asm__(
"# bswap input: %0 (aabbccdd) "# bswap input: %0 (aabbccdd)\n\t"
# output: %0, used %1 %2 "# output: %0, used %1 %2\n\t"
extlh %0,5,%1 # %1 = dd000000 "extlh %0,5,%1 # %1 = dd000000\n\t"
zap %0,0xfd,%2 # %2 = 0000cc00 "zap %0,0xfd,%2 # %2 = 0000cc00\n\t"
sll %2,5,%2 # %2 = 00198000 "sll %2,5,%2 # %2 = 00198000\n\t"
s8addq %2,%1,%1 # %1 = ddcc0000 "s8addq %2,%1,%1 # %1 = ddcc0000\n\t"
zap %0,0xfb,%2 # %2 = 00bb0000 "zap %0,0xfb,%2 # %2 = 00bb0000\n\t"
srl %2,8,%2 # %2 = 0000bb00 "srl %2,8,%2 # %2 = 0000bb00\n\t"
extbl %0,3,%0 # %0 = 000000aa "extbl %0,3,%0 # %0 = 000000aa\n\t"
or %1,%0,%0 # %0 = ddcc00aa "or %1,%0,%0 # %0 = ddcc00aa\n\t"
or %2,%0,%0 # %0 = ddccbbaa" "or %2,%0,%0 # %0 = ddccbbaa\n"
: "r="(res), "r="(t1), "r="(t2) : "r="(res), "r="(t1), "r="(t2)
: "0" (x & 0xffffffffUL)); : "0" (x & 0xffffffffUL));
return res; return res;
...@@ -64,11 +64,12 @@ __ntohs(unsigned short int x) ...@@ -64,11 +64,12 @@ __ntohs(unsigned short int x)
{ {
unsigned long int res, t1; unsigned long int res, t1;
__asm__ __asm__(
("bis %2,%2,%0 # v0 is result; swap in-place. v0=aabb "# v0 is result; swap in-place.\n\t"
extwh %0,7,%1 # t1 = bb00 "bis %2,%2,%0 # v0 = aabb\n\t"
extbl %0,1,%0 # v0 = 00aa "extwh %0,7,%1 # t1 = bb00\n\t"
bis %0,%1,%0 # v0 = bbaa" "extbl %0,1,%0 # v0 = 00aa\n\t"
"bis %0,%1,%0 # v0 = bbaa\n"
: "r="(res), "r="(t1) : "r"(x)); : "r="(res), "r="(t1) : "r"(x));
return res; return res;
} }
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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