* Re: NGROUPS 2.6.2rc2
From: Rusty Russell @ 2004-01-28 1:12 UTC (permalink / raw)
To: thockin, torvalds, Linux Kernel mailing list
In-Reply-To: <20040127225311.GA9155@sun.com>
In message <20040127225311.GA9155@sun.com> you write:
> (sorry if this dups, screwup in my aliases file)
>
> Linus,
You should probably send to Andrew Morton, too (or instead).
For the record; it's overkill for what I need (hundreds, not thousands
of groups, and I don't really mind if accessing them is slow), but at
this point I'd just like *some* solution.
Thanks Tim!
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: Squid only on eth1
From: rgomez@bancomer.com @ 2004-01-28 2:53 UTC (permalink / raw)
To: linux-newbie
In-Reply-To: <000701c3e524$66616c70$3401a8c0@iih.usyd.edu.au>
Here is the information you need:
My machine is Pentium 400Mhz - 128 MB RAM
$ uname -a
Linux naboo 2.4.20-8 #1 Thu Mar 13 16:42:56 EST 2003 i586 i586 i386 GNU/Linux
$ rpm -q squid
squid-2.5.STABLE1-2
My Internet connection is a T1 maybe more...
$>-- Mensaje Original --
$>From: "James Turnbull" <james@lovedthanlost.net>
$>To: <rgomez@bancomer.com>, <linux-newbie@vger.kernel.org>
$>Subject: Re: Squid only on eth1
$>Date: Wed, 28 Jan 2004 09:24:59 +1100
$>
$>
$>rgomez@bancomer.com wrote:
> It works, but one more, now it takes much time (close a minute) to
> get response from proxy, here are all info I think you would need...
There are far too many variables to determine why this could be happening
and y
$>u have not provided enough information. I'd probably need to look at
your squid.conf. What OS is it? What is the spec of the machine you're
running on? What version of squid? What sort of connection to the Internet
do you have and it's speed?
$>> # echo $http_proxy
> http://localhost:8080/
>
> # wget www.tldp.com
> --13:44:09-- http://www.tldp.com/
> => `index.html'
> Resolving localhost... done.
> Connecting to localhost[127.0.0.1]:8080... failed: Connection refused.
Co
$>fused as to why this is here - this is going to be rejected because squid
is only running on eth1?
> # wget www.ibm.com
> --13:48:57-- http://www.ibm.com/
> => `index.html.4'
> Connecting to eth1:8080... connected.
> Proxy request s
$>nt, awaiting response... 302 Moved Temporarily
> Location: http://www.ibm.com/us/ [following]
> --13:49:44-- http://www.ibm.com/us/
> => `index.html.4'
> Connecting to eth1:8080... connected.
> Proxy request sent, awaiting response...
$>00 OK
> Length: 27,087 [text/html]
I can see the time being taken but this could also be the remote site or
your link?
Can I suggest you try the Squid FAQ and/or the Usenet group and mailing
list. All of these can be found on the squid websit
$> -
http://www.squid-cache.org/
Regards
James
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
$>
Please read the FAQ at http://www.linux-learn.org/faqs
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
^ permalink raw reply
* Re: PATCH: (as177) Add class_device_unregister_wait() and platform_device_unregister_wait() to the driver model core
From: Roman Zippel @ 2004-01-28 2:53 UTC (permalink / raw)
To: viro
Cc: Greg KH, Linus Torvalds, Alan Stern, Kernel development list,
Patrick Mochel
In-Reply-To: <20040128021719.GV21151@parcelfarce.linux.theplanet.co.uk>
Hi,
On Wed, 28 Jan 2004 viro@parcelfarce.linux.theplanet.co.uk wrote:
> > Recovery of the scsi core is IMO one the smallest problems, but how do you
> > recover at the block layer? The point is that you have here theoretically
> > more one recovery strategy, but simply pulling out the module leaves you
> > not much room for a controlled recovery.
>
> Block layer is not too big issue. We have almost everything in the tree
> already - the main problem is to get check_disk_change() use regularized.
> Now, sound and character devices in general...
Hmm, I more meant "user controlled recovery", the simplest strategy is of
course to throw everything away and that should be indeed not too
difficult, but I don't really think that this is user prefered strategy if
he accidentally unplugs/plugs a device. OTOH that the simple strategy
works reliably is of course a prerequisite to even think about an any more
advanced recovery.
But with the current module infrastructure the user has not much choice
anyway, without any indication of module usage state the user can only
guess what will happen when he tries to unload a module, so that currently
the best advice is indeed: don't do it.
bye, Roman
^ permalink raw reply
* Re: [RFC/PATCH, 2/4] readX_check() performance evaluation
From: Linus Torvalds @ 2004-01-28 2:55 UTC (permalink / raw)
To: Hironobu Ishii; +Cc: linux-kernel, linux-ia64
In-Reply-To: <00a301c3e541$c13a6350$2987110a@lsd.css.fujitsu.com>
On Wed, 28 Jan 2004, Hironobu Ishii wrote:
>
> This is a readX_check() prototype patch to evaluate
> the performance disadvantage.
Quite frankly, I'd much rather have something more like this:
clear_pcix_errors(dev);
..
x = readX_check(dev, offset); /* Maybe several ones, maybe in a loop */
..
error = read_pcix_errors(dev);
if (error)
take_pcix_offline(dev);
in other words, I'd rather _not_ see the "readX_check()" code itself have
the retry logic and error value handling.
Why? Because on a number of architectures it is entirely possible that the
error comes as a _asynchronous_ machine exception or similar. So I'd much
rather have the interfaces be designed for that. Also, it's likely to
perform a lot better, and result in much clearer code this way (ie you can
try to set up the whole command before reading the error just once).
It is _also_ going to be a hell of a lot easier to disable the code if you
want to, with just a
#ifndef CONFIG_PCI_RECOVERY
#define clear_pcix_errors(dev) do { } while (0)
#define read_pcix_errors(dev) (0)
#define take_pcix_offline(dev) do { } while (0)
#endif
in a header file for architectures that don't support it.
Does anybody see any downsides to something like this?
Linus
^ permalink raw reply
* Re: [RFC/PATCH, 2/4] readX_check() performance evaluation
From: Linus Torvalds @ 2004-01-28 2:55 UTC (permalink / raw)
To: Hironobu Ishii; +Cc: linux-kernel, linux-ia64
In-Reply-To: <00a301c3e541$c13a6350$2987110a@lsd.css.fujitsu.com>
On Wed, 28 Jan 2004, Hironobu Ishii wrote:
>
> This is a readX_check() prototype patch to evaluate
> the performance disadvantage.
Quite frankly, I'd much rather have something more like this:
clear_pcix_errors(dev);
..
x = readX_check(dev, offset); /* Maybe several ones, maybe in a loop */
..
error = read_pcix_errors(dev);
if (error)
take_pcix_offline(dev);
in other words, I'd rather _not_ see the "readX_check()" code itself have
the retry logic and error value handling.
Why? Because on a number of architectures it is entirely possible that the
error comes as a _asynchronous_ machine exception or similar. So I'd much
rather have the interfaces be designed for that. Also, it's likely to
perform a lot better, and result in much clearer code this way (ie you can
try to set up the whole command before reading the error just once).
It is _also_ going to be a hell of a lot easier to disable the code if you
want to, with just a
#ifndef CONFIG_PCI_RECOVERY
#define clear_pcix_errors(dev) do { } while (0)
#define read_pcix_errors(dev) (0)
#define take_pcix_offline(dev) do { } while (0)
#endif
in a header file for architectures that don't support it.
Does anybody see any downsides to something like this?
Linus
^ permalink raw reply
* Re: 2.6.2-rc2-bk1 oopses on boot (ACPI patch)
From: Linus Torvalds @ 2004-01-28 3:06 UTC (permalink / raw)
To: Alessandro Suardi
Cc: linux-kernel, linux-acpi, Andrew Morton, Dominik Brodowski,
Dave Jones
In-Reply-To: <40171B5B.4020601@oracle.com>
On Wed, 28 Jan 2004, Alessandro Suardi wrote:
>
> Already reported, but I'll do so once again, since it looks like
> in a short while I won't be able to boot official kernels in my
> current config...
>
> http://www.ussg.iu.edu/hypermail/linux/kernel/0312.3/0442.html
Can you make adjust_jiffies() print out its arguments (it's in
drivers/cpufreq/cpufreq.c).
It looks like cpufreq_scale() gets a divide-by-zero or an overflow on one
of
l_p_j_ref, l_p_j_ref_freq, ci->new
and just printing out those values would be interesting.
That said, the code is crap anyway. It does various divides without
actually testing for any sanity at all, and tries to "avoid overflow" by
totally bogus methods, instead of just using the 64-bit do_div64().
Dominic? Dave? Suggestions about nicer failure modes?
Linus
^ permalink raw reply
* Re: [RFC/PATCH, 2/4] readX_check() performance evaluation
From: Matthew Wilcox @ 2004-01-28 3:09 UTC (permalink / raw)
To: Hironobu Ishii; +Cc: linux-kernel, linux-ia64
In-Reply-To: <00a301c3e541$c13a6350$2987110a@lsd.css.fujitsu.com>
On Wed, Jan 28, 2004 at 10:54:37AM +0900, Hironobu Ishii wrote:
> This is a readX_check() prototype patch to evaluate
> the performance disadvantage.
I think you've just demonstrated why this type of interface is unacceptable:
> + #ifdef CONFIG_PCI_RECOVERY
> + {
> + int read_fail;
> + read_fail = CHIPREG_READ32(&pa, &ioc->chip->ReplyFifo);
> + if (read_fail) {
> + printk("PCI PIO read error:%d\n", read_fail);
> + /* recovery code */
> + }
> + if (pa = 0xFFFFFFFF)
> + return IRQ_HANDLED;
> + }
> + #else
> if ((pa = CHIPREG_READ32(&ioc->chip->ReplyFifo)) = 0xFFFFFFFF)
> return IRQ_HANDLED;
> ! #endif
We go from two easily understood lines to ten plus the recovery code.
If indeed recovery is even possible. An exception framework is clearly
the way to do this.
--
"Next the statesmen will invent cheap lies, putting the blame upon
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince
himself that the war is just, and will thank God for the better sleep
he enjoys after this process of grotesque self-deception." -- Mark Twain
^ permalink raw reply
* Re: [RFC/PATCH, 2/4] readX_check() performance evaluation
From: Matthew Wilcox @ 2004-01-28 3:09 UTC (permalink / raw)
To: Hironobu Ishii; +Cc: linux-kernel, linux-ia64
In-Reply-To: <00a301c3e541$c13a6350$2987110a@lsd.css.fujitsu.com>
On Wed, Jan 28, 2004 at 10:54:37AM +0900, Hironobu Ishii wrote:
> This is a readX_check() prototype patch to evaluate
> the performance disadvantage.
I think you've just demonstrated why this type of interface is unacceptable:
> + #ifdef CONFIG_PCI_RECOVERY
> + {
> + int read_fail;
> + read_fail = CHIPREG_READ32(&pa, &ioc->chip->ReplyFifo);
> + if (read_fail) {
> + printk("PCI PIO read error:%d\n", read_fail);
> + /* recovery code */
> + }
> + if (pa == 0xFFFFFFFF)
> + return IRQ_HANDLED;
> + }
> + #else
> if ((pa = CHIPREG_READ32(&ioc->chip->ReplyFifo)) == 0xFFFFFFFF)
> return IRQ_HANDLED;
> ! #endif
We go from two easily understood lines to ten plus the recovery code.
If indeed recovery is even possible. An exception framework is clearly
the way to do this.
--
"Next the statesmen will invent cheap lies, putting the blame upon
the nation that is attacked, and every man will be glad of those
conscience-soothing falsities, and will diligently study them, and refuse
to examine any refutations of them; and thus he will by and by convince
himself that the war is just, and will thank God for the better sleep
he enjoys after this process of grotesque self-deception." -- Mark Twain
^ permalink raw reply
* failure notice
From: MAILER-DAEMON-uCHqV657H0uzivOs7FMqQVaTQe2KTcn/ @ 2004-01-28 3:10 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
Hi. This is the qmail-send program at smtp4.tidc.telus.com.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<datarec-dkcWiHplHgnk1uMJSBkQmQ@public.gmane.org>:
Sorry, I wasn't able to establish an SMTP connection. (#4.4.1)
I'm not going to try again; this message has been in the queue too long.
--- Below this line is a copy of the message.
Return-Path: <acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Received: (qmail 10598 invoked from network); 27 Jan 2004 23:03:48 -0000
Received: from 61-221-35-12.hinet-ip.hinet.net (HELO lists.sourceforge.net) (61.221.35.12)
by relay.tidc.telus.com with SMTP; 27 Jan 2004 23:03:48 -0000
From: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
To: datarec-dkcWiHplHgnk1uMJSBkQmQ@public.gmane.org
Subject: hi
Date: Wed, 28 Jan 2004 07:08:27 +0800
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_NextPart_000_0008_FC835B5C.70A5E9E8"
X-Priority: 3
X-MSMail-Priority: Normal
This is a multi-part message in MIME format.
------=_NextPart_000_0008_FC835B5C.70A5E9E8
Content-Type: text/plain;
charset="Windows-1252"
Content-Transfer-Encoding: 7bit
The message contains Unicode characters and has been sent as a binary attachment.
------=_NextPart_000_0008_FC835B5C.70A5E9E8
Content-Type: application/octet-stream;
name="text.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="text.zip"
UEsDBAoAAAAAAA25OzDKJx+eAFgAAABYAABSAAAAdGV4dC5odG0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpZk1a
kAADAAAABAAAAP//AAC4AAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBFAABM
AQMAAAAAAAAAAAAAAAAA4AAPAQsBBwAAUAAAABAAAABgAABgvgAAAHAAAADAAAAAAEoAABAAAAAC
AAAEAAAAAAAAAAQAAAAAAAAAANAAAAAQAAAAAAAAAgAAAAAAEAAAEAAAAAAQAAAQAAAAAAAAEAAA
AAAAAAAAAAAA6MEAADABAAAAwAAA6AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAVVBYMAAAAAAAYAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAgAAA4FVQ
WDEAAAAAAFAAAABwAAAAUAAAAAQAAAAAAAAAAAAAAAAAAEAAAOAucnNyYwAAAAAQAAAAwAAAAAQA
AABUAAAAAAAAAAAAAAAAAABAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAADEuMjQAVVBYIQwJAglIfomP1DYcgSmWAABTTgAAAIAAACYBAMXuhwKS
AFAmSgBAA/2yaZosEAT0JegBAEvOaZpu2R/IKsADuLCopmmapqCYkIiAmqZpmnhwaGBYUM1gn2lI
AEQHODA0TdN0AygkHBgQ0yy71wgjA/gp8OhN0zRN4NjQyLy0NE3TNKyknJSMzjZN04h8cGgpb1ym
6ZrBB1RMA0Q4mqZpmiwkHBQMBGmazm38KH8D9OzkpmmaptzUzMi8mqZpmrSspKCYkGebpmmMgHhw
KHto3mzTdQdcA1RMKP/7C3a2++NADzQo9ywvA5qmGfkkKEocFAwEaZrO7Jv8JwPs6OCmaZqm2NTM
yMCapmm6uCewrKigmGmapmmUjIiEfKRpmqZ0bGRcVGmaphtMA0RAODCmaZqmKCAYEAiapnObAPgm
zwPo4Nhnm85tVDRDA0A0NNuK/////51a0Nrl9AYfM05sck7YApdfksgBPXy+Q0uW5DWJ4DqX////
//dawCmVBHbrY95c3WHocv+PIrhR7Ywu03sm1A058Kpn/////yfqsHlFFOa7k25MLRH44s+/sqih
nZyeo6u2xNXpABo3/////1d6oMn1JFaLw/48fcEIUp/vQpjxTawOc9tGtCWZEIoH/////4cKkBml
paj+8sPSqPgSLEprj7bgDT1wpt8bWnzhJ1XJ/////xJgvhhl1TieF3PiVIlBvJrjP8ZQjW0Alk/L
agyxQ3qy/////3MXzohHBciKVyPyxJlxTC4L79bArZ2Qhg97enyRiZSi/////7PH3voVNVh+p8MC
NHmh3Bpbj+Ywbc0gds8rivxRuSSS/////wN37mjlZehul4ODdoyVobDC1+8KKEltlL7rG06Evfk4
/////3q/B1Kg8UVsllOzGnzlUcAypx+aGJkdpC67S950DalI/////+qPN+KQQfWsZiPjpmw1AdCi
d08qCOnNtJ6Le25kXVlY/////1pfZ3KAkaW81vMTNlyFseASR3+6+Dl9xA5bq/5UrQk9/////5p3
pwJw4VXMBsNDxlzVYWFkanN/jKC1zegGJ0tynMn5/////yxim1cWWH2wYCb+I3rUMZHkWsMvzhCF
/XT2d/uADJkp/////7xS64cmyG0VwG4fk4pE4ZTUEiHfroBVLRjmx6vyfGlZ/////05COzc4OD1F
UF5vg5q00fEUOmPPvvDlbLbkI1v3vGGo/////9A7ie5zPGP4meDFS5EXoSHeIrM/P1RIUXtvftbP
2W6V/9/+/ykDI+mUCb/m86VBEKZ8MmlrgCELLcdO0hCCbPn/////c6d33hSHBwf7UqoBYcAsm/cm
lt2XnSJgD0aezf0sQH//////k7LS8QkgWHZoY11QUlFTamR3ASzF71QwvFcRPM6dV27/////IOOt
YNrRUhXOZl+3QcAU5GWTn3j+cg2852qVe3sTdnb/////fRwNLfL29LDx0ed5+t1MZaP/J2yM3Qvb
jBupvXWHO0//////2xSCQhQJRcyCD/pitylz+xWD5x6TfrQkaSn/vSjL6k7//+3/dw46sL/3VNTs
c5gBTQad8qKvwmLz5V433wVxUv////8H+BtAflQ+p6lPLAJ9MMjnBtJUKhprTAGdBPZq+h3HBv+F
///4HZAEq5YABgYQK++Z1E7/F3gLk8b4dSGMpP////9f/8xya+tv/qX97NBByXiR2cSsJsfo4Km3
Gl1v7CkQo/////+88+31b1EhNY3WUxxIKRjjt1w/nbjN0FJV47VD6r5n4/////+goDLizkk6JC8w
Co+uhOF1QKFimLL1MErg4/+RgcEnB/////93iGePVLOFCOL+gkWrYY502rsqOK7wStQYnBeKSMK1
vP////+e+x9W5m6Q4DtHs6Aat9KqvMT3k0imAcAE/wYSi12p2P////+9lDH4H+haYz7f1grKQtUM
XmBJcvX0rvRTF/wWFfKOmv////9zcDyCseKON1tTFqInlFRYrLE1Nz6qdWWVIW7rGoSBav/////m
Chg/OpWfgYLjc6RHPQkC1i6IwqfVP4pc6p9WO189Sv/S///DeV9DCbjwq5rOHrKF2UvB1Dtez9/2
R/lK9//////Y+y20imdi/1itEYwi91vLWN+F/KzgZdrrl5TiYAjvP/////884+x/EI5gft1Nm+Sd
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
1qn//1uiQmyZyfwya6fmKG0gYE6fgyqk3f//X2jELP9u4FXNSMZHaTLcaYHsIrtX9pg9+i/0/+WQ
Pu+jWhTRPDQa41RQJf3Ytpd7Yvh/6ResKRwSCwftDRUgLj/rCoShB4T///+30F+OwPX7CKbnK3K8
Cb3MAlu3FnjdVbAeDwN6//////RxujGozUpDISoPaXACYzrS4pSpaXlFib58JYWRVQ7B+Lf+/+0e
U7VE7t9o8Ucyln+MHVvIJal81Saz//9btIDStQRigm4ciuRMot0AUbml6S7/f4vGS3CHVzwnaXto
iZWigJ3m6/OJ/9/4239tWwwL+YPoESOe3wtGhGgxUJrnN4r//w3+4DmV9Fa7I9pt4VjST89S2GHt
7fD2/wsa//8v/SxBWXSSs5koVYW47idjouQpcbwKW68GYL0d/xZf6oDmT46cEYkEuocOmCW1SN7/
////dxOyVPmhTPqrXxbQjU0Q1p9rOgzhuZRyUzceCPXl2M7/hf7/x8PCxMnR3Or7DyZAXX2gTxtK
fLHpJGKj/wL//+cueMUVaL4Xc9I0mQFs2ksAsC2tMLY/y///jf7LztTd6fgKQFJwkbXcBjNjlswF
QYDCB0//Uv//mug5jeQ+m/texC2ZCHrvZ1PhZex2A5Mm/l/q/7xV8ZAy138q2Ik96Gsr7rR9SRjq
v5dy6P//l8AV/ObTw7aspaGgoqevusjZ7QQeO1v1//9fQc35KFqPxyhzeW5jLmMsdiAwLjEgMjAw
NP0j22+TMS94eCACOiBhbmR5KQB7uwUbzAItDAAFHAA5Cc4Q/5kPAQAQAAkAEtcDByF++2Z1dnp0
TXYucXl5N0Zi/b/7/3Nnam5lclxadnBlYmYNXEp2YXFiamZcUGhlf/n/vxdhZ0lyZWZ2YmFcUmtj
eWJlcmVielF5dDO3+C3YMlwZQ2pyb0Z2a0Z6ur/99mdrRjBTZ25meHoXLnJrcgBHC1orNAX2I2dF
eZeW//a/bm90ZXBhZCAlcwtNZXNzYWdlACwl+5jbD3USBS4ydToEim57zxQGAy8tPyv7b/9vQ2Vj
AE5vdgBPY3QAU00AQXVnAEp1bAO2udutblNheQ9wcgcDRpC3v122E2FTYSdGcmkAVGhEV2X2zt22
ZAd1c01vFy9hYmNkn/vCb/9naGlqa2xtnHBxcnN0Tnd4eXpn9v//f0FCQ0RFRkdISUpLTE1OT1BR
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
AACIiIgAAAAACId3d3iAAAB4//+Ih3AAAHj3j///eAAAeP////94AAB493d4/3gAAHj/////eAAA
ePd3eP94AAB4/////3gAAHj3d4//eAAAeP////94AAB4/////3gAAHh/f39/eAAAh3OHh4eAAAAH
szt7d4AAAAAAAACAAADwPwAA4AcAAMAHAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMA
AMADAADAAwAAwAcAAOAHAAD/3wAA2JEAAAAAAQABABAQEAABAAQAKAEAAAEAAAAAAAAAAAAAAAAA
kMIAAGDCAAAAAAAAAAAAAAAAAACdwgAAcMIAAAAAAAAAAAAAAAAAAKrCAAB4wgAAAAAAAAAAAAAA
AAAAtcIAAIDCAAAAAAAAAAAAAAAAAADAwgAAiMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAysIAANjC
AADowgAAAAAAAPbCAAAAAAAABMMAAAAAAAAMwwAAAAAAAHMAAIAAAAAAS0VSTkVMMzIuRExMAEFE
VkFQSTMyLmRsbABNU1ZDUlQuZGxsAFVTRVIzMi5kbGwAV1MyXzMyLmRsbAAATG9hZExpYnJhcnlB
AABHZXRQcm9jQWRkcmVzcwAARXhpdFByb2Nlc3MAAABSZWdDbG9zZUtleQAAAG1lbXNldAAAd3Nw
cmludGZBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABQSwECFAAKAAAAAAANuTswyicfngBYAAAAWAAAUgAAAAAAAAAAACAAAAAAAAAA
dGV4dC5odG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLnBpZlBLBQYAAAAAAQABAIAAAABwWAAAAAA=
------=_NextPart_000_0008_FC835B5C.70A5E9E8--
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
^ permalink raw reply
* Re: Has something changed on Dan Walsh's site?
From: Tom Ziebro @ 2004-01-28 3:12 UTC (permalink / raw)
To: Mark Shakespeare; +Cc: selinux
In-Reply-To: <p06020419bc3b1448ee02@[128.115.96.64]>
Mark-
> I tried a fresh install of SeLinux on top of a new Fedora build.
> Using Dan Walsh's selUpgrade script.....used to work a week ago.
Those dependencies look like they are coming from packages on Fedora
Core 2. You are building on Fedora Core 1.
> ./selUpgrade: line 55: cd: /etc/security/selinux/src/policy/domains:
> no such file or directory
You also might be missing some packages: policy* / libselinux, and
checkpolicy.
Tom Ziebro
Red Hat, Inc.
tziebro@redhat.com
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
^ permalink raw reply
* Re: 2.6.2-rc2-bk1 oopses on boot (ACPI patch)
From: Linus Torvalds @ 2004-01-28 3:10 UTC (permalink / raw)
To: Andrew Morton; +Cc: Alessandro Suardi, linux-kernel, linux-acpi
In-Reply-To: <20040127184228.3a0b8a86.akpm@osdl.org>
On Tue, 27 Jan 2004, Andrew Morton wrote:
>
> Divide by zero. Looks like ACPI is now passing bad values into the
> frequency change notifier.
>
> Does this make the oops go away?
Other values will still cause divide-by-zero (any divisor in 0..9 will do
it). Besides, we're dividing with _old_, not new, so that's the one we
should likely check.
Linus
^ permalink raw reply
* devfs 199.17 not in 2.4 (was Re:2.4.22 devfs/zlib outstanding updates ...)
From: Frédéric L. W. Meunier @ 2004-01-28 3:17 UTC (permalink / raw)
To: linux-kernel
Herbert Pötzl wrote on Sat, 12 Jul 2003 00:22:07 +0200
> just wanted to remind/state that the final? v199.17 devfs
> patch and the 1.1.4 zlib update are not in 2.4.22-pre5.
About the devfs patch.
Yes, I already reported it a long time ago -
http://www.uwsg.iu.edu/hypermail/linux/kernel/0306.2/1655.html
and have no idea why it hasn't been merged in 2.4, after all
it's supposed to fix some things and there have been no changes
since then in the kernel.
http://marc.theaimsgroup.com/?l=linux-kernel&m=103474534430016&w=2
Can someone clarify this ? I've been applying this patch since
its release and it didn't broke anything.
--
http://www.pervalidus.net/contact.html
^ permalink raw reply
* [ANNOUNCE] Core Team Announces Emeritus Members
From: Rusty Russell @ 2004-01-28 3:19 UTC (permalink / raw)
To: netfilter-annnounce; +Cc: netfilter-devel
The Netfilter Core Team has long discussed the issue of Core Team
members who are no longer active. Dismissing them from the Core Team
would deny them the benefits of such a prestigious title, should any
become apparent.
Hence the conclusion is that Marc Boucher, James Morris and Rusty
Russell are now "emeritus"[1] members of the Netfilter Core Team.
In this status, their involvement in the Core Team will be merely
advisory. If they again become active and request reinstatement, they
will return to full Core Team membership.
Happy hacking!
Marc Boucher, James Morris, and Rusty Russell.
[1] Latin for "burnt-out freeriding slacker", I believe.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
^ permalink raw reply
* Re: 2.6.2-rc2-bk1 oopses on boot (ACPI patch)
From: Alessandro Suardi @ 2004-01-28 3:19 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andrew Morton, linux-kernel, linux-acpi
In-Reply-To: <Pine.LNX.4.58.0401271907070.10794@home.osdl.org>
Linus Torvalds wrote:
>
> On Tue, 27 Jan 2004, Andrew Morton wrote:
>
>>Divide by zero. Looks like ACPI is now passing bad values into the
>>frequency change notifier.
>>
>>Does this make the oops go away?
>
>
> Other values will still cause divide-by-zero (any divisor in 0..9 will do
> it). Besides, we're dividing with _old_, not new, so that's the one we
> should likely check.
>
> Linus
Indeed... I get two of the debug printks from the patch, but in the
end I still oops due to a div-by-zero with EIP in time_cpufreq_notifier.
I'll try and look into Linus' suggestion about printing out stuff from
adjust_jiffies() in cpufreq.c and will report later.
Thanks,
--alessandro
"Two rivers run too deep
The seasons change and so do I"
(U2, "Indian Summer Sky")
^ permalink raw reply
* Re: [2.0.40-rc8] Works well
From: Coywolf Qi Hunt @ 2004-01-28 3:28 UTC (permalink / raw)
To: Markus Hästbacka; +Cc: David Weinehall, Kernel Mailinglist
In-Reply-To: <1075223456.5219.1.camel@midux>
Markus Hästbacka wrote:
>Hey David,
>I just mail to tell you that 2.0.40-rc8 seems to work really well, no
>problems compiling (except a few warnings :) and absolutely no problem
>running. Great work!
>
> Markus
>
>
Hello all 2.0 hackers,
Recently I just have such an idea that is to port the 2.0.39 to let it
be compiled with my gcc 2.95.4 or any
other latest gcc. At the same time, also make it remain compliant to
gcc 2.7.2.1. ( I can't find 2.7.2.1, only 2.7.2.3
on the ftp) Is this work worth while?
Coywolf
^ permalink raw reply
* Re: [uml-devel] Re: [PATCH] mconsole fixes
From: Dan Shearer @ 2004-01-28 3:30 UTC (permalink / raw)
To: jdike; +Cc: user-mode-linux-devel
In-Reply-To: <20040128021652.GP4203@erizo.shearer.org>
On Wed, Jan 28, 2004 at 12:46:52PM +1030, Dan Shearer wrote:
> On Tue, Jan 27, 2004 at 08:46:36PM -0500, Jeff Dike wrote:
> > I applied most of the rest of that. I got rid of the exits from main, since
> > I like returns better and I tidied up some other stuff.
>
> Minor portability potential. See
> http://www.eskimo.com/~scs/C-faq/q11.16.html. (I looked it up once long
> ago and supposedly _exit is more likely to work on more systems than
> exit.)
Actually on second thoughts that is not relevant (applies to functions
other than main.)
However there is only one way that the standard guarantees we can
indicate a status to the OS and that is exit(EXIT_FAILURE) or
EXIT_SUCCESS. return(whatever) works on the sane OSs that we're used to,
but the standard is there for a reason. So that should be used instead.
--
Dan Shearer
dan@shearer.org
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
^ permalink raw reply
* Re: Squid only on eth1
From: James Turnbull @ 2004-01-28 3:29 UTC (permalink / raw)
To: rgomez@bancomer.com; +Cc: linux-newbie
In-Reply-To: <4011C8740000178F@mail-bcm02.alestra.net.mx>
> Here is the information you need:
> My machine is Pentium 400Mhz - 128 MB RAM
>
> $ uname -a
> Linux naboo 2.4.20-8 #1 Thu Mar 13 16:42:56 EST 2003 i586 i586 i386
> GNU/Linux
>
> $ rpm -q squid
> squid-2.5.STABLE1-2
>
> My Internet connection is a T1 maybe more...
Hi
When you asked the previous question about limiting squid to one interface
I provided a fairly simple - a RTFM simple - answer. As to your broader
problems squid is a complex beastie. Without digging into your config
(especially your squid.conf) and your network setup I can't explain why
you are getting 60 second + delays from squid. As I recommended I suggest
you try the Squid FAQ and mailing list on http://www.squid-cache.org/
Regards
James
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
^ permalink raw reply
* Re: Badness in scsi_single_lun_run at /root/scsi/scsi_lib.c:344
From: Willem Riede @ 2004-01-28 3:30 UTC (permalink / raw)
To: linux-scsi
In-Reply-To: <20040127003244.GM23308@serve.riede.org>
On 2004.01.26 19:32, Willem Riede wrote:
> Jan 26 17:13:23 fallguy kernel: Badness in scsi_single_lun_run at /root/scsi/scsi_lib.c:344
> Jan 26 17:13:23 fallguy kernel: Call Trace:
> Jan 26 17:13:23 fallguy kernel: [<e0850192>] scsi_single_lun_run+0x202/0x230 [scsi_mod]
> Jan 26 17:13:23 fallguy kernel: [<e084a33d>] scsi_put_command+0xbd/0x160 [scsi_mod]
> Jan 26 17:13:23 fallguy kernel: [<e0850347>] scsi_run_queue+0x187/0x190 [scsi_mod]
> Jan 26 17:13:23 fallguy kernel: [<e0850524>] scsi_end_request+0xf4/0x150 [scsi_mod]
> Jan 26 17:13:23 fallguy kernel: [<e08508f7>] scsi_io_completion+0x1c7/0x4b0 [scsi_mod]
> Jan 26 17:13:23 fallguy kernel: [<e0829a32>] sd_rw_intr+0x82/0x260 [sd_mod]
> Jan 26 17:13:24 fallguy kernel: [<e084aed1>] scsi_finish_command+0x81/0xe0 [scsi_mod]
> Jan 26 17:13:24 fallguy kernel: [<e084ade8>] scsi_softirq+0xc8/0xf0 [scsi_mod]
> Jan 26 17:13:24 fallguy kernel: [<c012d6a7>] do_softirq+0xc7/0xd0
> Jan 26 17:13:24 fallguy kernel: [<c010e395>] do_IRQ+0x165/0x220
scsi_lib.c contains the following code:
spin_lock(shost->host_lock);
if (!scsi_host_queue_ready(q, shost, sdev))
goto not_ready;
if (sdev->single_lun) {
if (sdev->sdev_target->starget_sdev_user &&
sdev->sdev_target->starget_sdev_user != sdev)
goto not_ready;
sdev->sdev_target->starget_sdev_user = sdev;
}
shost->host_busy++;
/*
* XXX(hch): This is rather suboptimal, scsi_dispatch_cmd will
* take the lock again.
*/
spin_unlock_irq(shost->host_lock);
Is it a problem that the lock is taken by means of spin_lock() and then
released with spin_unlock_irq() ? We do need to lock against scsi_softirq
as in the backtrace above...
Thanks, Willem Riede.
^ permalink raw reply
* PATCH: uid16 cleanup for 64 bit architectures
From: Tim Hockin @ 2004-01-28 3:30 UTC (permalink / raw)
To: Linux Kernel mailing list; +Cc: akpm, torvalds
[-- Attachment #1: Type: text/plain, Size: 998 bytes --]
The NGROUPS patch exposed me to a lot of duplicated code in some of the 64
bit architectures (stemming from CONFIG_UID16).
So a few months back, I worked up a solution. It seems that things have
changed some. Architectures that used to not define CONFIG_UID16 (sparc64,
s390, x86_64) now do. But they don't take advantage of the uid16.c code.
This (totally experimental, untestable by me) patch removes the offending
code. In short:
* pry apart highuid.h and uid16.c
* build uid16.o iff CONFIG_UID16_SYSCALLS
* anywhere that defines CONFIG_UID16 adds CONFIG_UID16_SYSCALLS
* add CONFIG_UID16_SYSCALLS for any arch that wants to use uid16.c without
converting everywhere else highuid.h is used
* strip out lots of code that was copied from uid16.c
This may all be totally worthless. That's up to the arch people to decide,
I guess. I just said I would look into the mess. :)
--
Tim Hockin
Sun Microsystems, Linux Software Engineering
thockin@sun.com
All opinions are my own, not Sun's
[-- Attachment #2: uid16-2.6.2rc2-1.diff --]
[-- Type: text/plain, Size: 36562 bytes --]
diff -ruN ngroups-2.6/arch/arm/Kconfig uid16-2.6/arch/arm/Kconfig
--- ngroups-2.6/arch/arm/Kconfig 2003-12-19 14:29:51.000000000 -0800
+++ uid16-2.6/arch/arm/Kconfig 2004-01-27 15:38:53.000000000 -0800
@@ -50,6 +50,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/arm26/Kconfig uid16-2.6/arch/arm26/Kconfig
--- ngroups-2.6/arch/arm26/Kconfig 2003-12-19 14:29:54.000000000 -0800
+++ uid16-2.6/arch/arm26/Kconfig 2004-01-27 15:39:00.000000000 -0800
@@ -38,6 +38,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/cris/Kconfig uid16-2.6/arch/cris/Kconfig
--- ngroups-2.6/arch/cris/Kconfig 2003-12-19 14:29:54.000000000 -0800
+++ uid16-2.6/arch/cris/Kconfig 2004-01-27 15:39:07.000000000 -0800
@@ -13,6 +13,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/h8300/Kconfig uid16-2.6/arch/h8300/Kconfig
--- ngroups-2.6/arch/h8300/Kconfig 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/h8300/Kconfig 2004-01-27 15:39:14.000000000 -0800
@@ -25,6 +25,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/i386/Kconfig uid16-2.6/arch/i386/Kconfig
--- ngroups-2.6/arch/i386/Kconfig 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/i386/Kconfig 2004-01-27 15:35:35.000000000 -0800
@@ -25,6 +25,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config GENERIC_ISA_DMA
bool
default y
diff -ruN ngroups-2.6/arch/ia64/ia32/ia32_entry.S uid16-2.6/arch/ia64/ia32/ia32_entry.S
--- ngroups-2.6/arch/ia64/ia32/ia32_entry.S 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/ia64/ia32/ia32_entry.S 2004-01-27 17:03:18.000000000 -0800
@@ -288,8 +288,8 @@
data8 compat_sys_getrusage
data8 sys32_gettimeofday
data8 sys32_settimeofday
- data8 sys32_getgroups16 /* 80 */
- data8 sys32_setgroups16
+ data8 sys_getgroups16 /* 80 */
+ data8 sys_setgroups16
data8 sys32_old_select
data8 sys_symlink
data8 sys_ni_syscall
diff -ruN ngroups-2.6/arch/ia64/ia32/sys_ia32.c uid16-2.6/arch/ia64/ia32/sys_ia32.c
--- ngroups-2.6/arch/ia64/ia32/sys_ia32.c 2004-01-27 12:40:02.000000000 -0800
+++ uid16-2.6/arch/ia64/ia32/sys_ia32.c 2004-01-27 17:01:57.000000000 -0800
@@ -2413,87 +2413,6 @@
return sys_lseek(fd, offset, whence);
}
-static int
-groups16_to_user(short *grouplist, struct group_info *info)
-{
- int i;
- short group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_WRITE, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- group = (short)GROUP_AT(info, i);
- if (__put_user(group, grouplist+i))
- return -EFAULT;
- }
-
- return 0;
-}
-
-static int
-groups16_from_user(struct group_info *info, short *grouplist)
-{
- int i;
- short group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_READ, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- if (__get_user(group, grouplist+i))
- return -EFAULT;
- GROUP_AT(info, i) = (gid_t)group;
- }
-
- return 0;
-}
-
-asmlinkage long
-sys32_getgroups16 (int gidsetsize, short *grouplist)
-{
- int i;
-
- if (gidsetsize < 0)
- return -EINVAL;
- i = current->group_info->ngroups;
- if (gidsetsize) {
- if (i > gidsetsize)
- return -EINVAL;
- if (groups16_to_user(grouplist, current->group_info))
- return -EFAULT;
- }
- return i;
-}
-
-asmlinkage long
-sys32_setgroups16 (int gidsetsize, short *grouplist)
-{
- struct group_info *new_info;
- int retval;
-
- if (!capable(CAP_SETGID))
- return -EPERM;
- new_info = groups_alloc(gidsetsize);
- if (!new_info)
- return -ENOMEM;
- retval = groups16_from_user(new_info, grouplist);
- if (retval) {
- groups_free(new_info);
- return retval;
- }
-
- retval = set_current_groups(new_info);
- if (retval)
- groups_free(new_info);
-
- return retval;
-}
-
asmlinkage long
sys32_truncate64 (unsigned int path, unsigned int len_lo, unsigned int len_hi)
{
diff -ruN ngroups-2.6/arch/ia64/Kconfig uid16-2.6/arch/ia64/Kconfig
--- ngroups-2.6/arch/ia64/Kconfig 2004-01-27 12:38:53.000000000 -0800
+++ uid16-2.6/arch/ia64/Kconfig 2004-01-27 16:32:17.000000000 -0800
@@ -385,6 +385,11 @@
depends on IA32_SUPPORT
default y
+config UID16_SYSCALLS
+ bool
+ depends on IA32_SUPPORT
+ default y
+
config PERFMON
bool "Performance monitor support"
help
diff -ruN ngroups-2.6/arch/m68k/Kconfig uid16-2.6/arch/m68k/Kconfig
--- ngroups-2.6/arch/m68k/Kconfig 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/m68k/Kconfig 2004-01-27 15:39:28.000000000 -0800
@@ -14,6 +14,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/m68knommu/Kconfig uid16-2.6/arch/m68knommu/Kconfig
--- ngroups-2.6/arch/m68knommu/Kconfig 2003-12-19 14:29:57.000000000 -0800
+++ uid16-2.6/arch/m68knommu/Kconfig 2004-01-27 15:39:32.000000000 -0800
@@ -17,6 +17,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/s390/Kconfig uid16-2.6/arch/s390/Kconfig
--- ngroups-2.6/arch/s390/Kconfig 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/s390/Kconfig 2004-01-27 17:38:55.000000000 -0800
@@ -28,6 +28,11 @@
default y
depends on ARCH_S390X = 'n'
+config UID16_SYSCALLS
+ bool
+ default y
+ depends on ARCH_S390X = 'n'
+
source "init/Kconfig"
menu "Base setup"
diff -ruN ngroups-2.6/arch/s390/kernel/compat_linux.c uid16-2.6/arch/s390/kernel/compat_linux.c
--- ngroups-2.6/arch/s390/kernel/compat_linux.c 2004-01-27 12:40:02.000000000 -0800
+++ uid16-2.6/arch/s390/kernel/compat_linux.c 2004-01-27 17:42:18.000000000 -0800
@@ -71,221 +71,17 @@
#include "compat_linux.h"
-extern asmlinkage long sys_chown(const char *, uid_t,gid_t);
-extern asmlinkage long sys_lchown(const char *, uid_t,gid_t);
-extern asmlinkage long sys_fchown(unsigned int, uid_t,gid_t);
-extern asmlinkage long sys_setregid(gid_t, gid_t);
-extern asmlinkage long sys_setgid(gid_t);
-extern asmlinkage long sys_setreuid(uid_t, uid_t);
-extern asmlinkage long sys_setuid(uid_t);
-extern asmlinkage long sys_setresuid(uid_t, uid_t, uid_t);
-extern asmlinkage long sys_setresgid(gid_t, gid_t, gid_t);
-extern asmlinkage long sys_setfsuid(uid_t);
-extern asmlinkage long sys_setfsgid(gid_t);
-
/* For this source file, we want overflow handling. */
#undef high2lowuid
#undef high2lowgid
#undef low2highuid
#undef low2highgid
-#undef SET_UID16
-#undef SET_GID16
-#undef NEW_TO_OLD_UID
-#undef NEW_TO_OLD_GID
-#undef SET_OLDSTAT_UID
-#undef SET_OLDSTAT_GID
-#undef SET_STAT_UID
-#undef SET_STAT_GID
#define high2lowuid(uid) ((uid) > 65535) ? (u16)overflowuid : (u16)(uid)
#define high2lowgid(gid) ((gid) > 65535) ? (u16)overflowgid : (u16)(gid)
#define low2highuid(uid) ((uid) == (u16)-1) ? (uid_t)-1 : (uid_t)(uid)
#define low2highgid(gid) ((gid) == (u16)-1) ? (gid_t)-1 : (gid_t)(gid)
-#define SET_UID16(var, uid) var = high2lowuid(uid)
-#define SET_GID16(var, gid) var = high2lowgid(gid)
-#define NEW_TO_OLD_UID(uid) high2lowuid(uid)
-#define NEW_TO_OLD_GID(gid) high2lowgid(gid)
-#define SET_OLDSTAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid)
-#define SET_OLDSTAT_GID(stat, gid) (stat).st_gid = high2lowgid(gid)
-#define SET_STAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid)
-#define SET_STAT_GID(stat, gid) (stat).st_gid = high2lowgid(gid)
-
-asmlinkage long sys32_chown16(const char * filename, u16 user, u16 group)
-{
- return sys_chown(filename, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_lchown16(const char * filename, u16 user, u16 group)
-{
- return sys_lchown(filename, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_fchown16(unsigned int fd, u16 user, u16 group)
-{
- return sys_fchown(fd, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_setregid16(u16 rgid, u16 egid)
-{
- return sys_setregid(low2highgid(rgid), low2highgid(egid));
-}
-
-asmlinkage long sys32_setgid16(u16 gid)
-{
- return sys_setgid((gid_t)gid);
-}
-
-asmlinkage long sys32_setreuid16(u16 ruid, u16 euid)
-{
- return sys_setreuid(low2highuid(ruid), low2highuid(euid));
-}
-
-asmlinkage long sys32_setuid16(u16 uid)
-{
- return sys_setuid((uid_t)uid);
-}
-
-asmlinkage long sys32_setresuid16(u16 ruid, u16 euid, u16 suid)
-{
- return sys_setresuid(low2highuid(ruid), low2highuid(euid),
- low2highuid(suid));
-}
-
-asmlinkage long sys32_getresuid16(u16 *ruid, u16 *euid, u16 *suid)
-{
- int retval;
-
- if (!(retval = put_user(high2lowuid(current->uid), ruid)) &&
- !(retval = put_user(high2lowuid(current->euid), euid)))
- retval = put_user(high2lowuid(current->suid), suid);
-
- return retval;
-}
-
-asmlinkage long sys32_setresgid16(u16 rgid, u16 egid, u16 sgid)
-{
- return sys_setresgid(low2highgid(rgid), low2highgid(egid),
- low2highgid(sgid));
-}
-
-asmlinkage long sys32_getresgid16(u16 *rgid, u16 *egid, u16 *sgid)
-{
- int retval;
-
- if (!(retval = put_user(high2lowgid(current->gid), rgid)) &&
- !(retval = put_user(high2lowgid(current->egid), egid)))
- retval = put_user(high2lowgid(current->sgid), sgid);
-
- return retval;
-}
-
-asmlinkage long sys32_setfsuid16(u16 uid)
-{
- return sys_setfsuid((uid_t)uid);
-}
-
-asmlinkage long sys32_setfsgid16(u16 gid)
-{
- return sys_setfsgid((gid_t)gid);
-}
-
-static int groups16_to_user(u16 *grouplist, struct group_info *info)
-{
- int i;
- u16 group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_WRITE, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- group = (u16)GROUP_AT(info, i);
- if (__put_user(group, grouplist+i))
- return -EFAULT;
- }
-
- return 0;
-}
-
-static int groups16_from_user(struct group_info *info, u16 *grouplist)
-{
- int i;
- u16 group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_READ, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- if (__get_user(group, grouplist+i))
- return -EFAULT;
- GROUP_AT(info, i) = (gid_t)group;
- }
-
- return 0;
-}
-
-asmlinkage long sys32_getgroups16(int gidsetsize, u16 *grouplist)
-{
- int i;
-
- if (gidsetsize < 0)
- return -EINVAL;
- i = current->group_info->ngroups;
- if (gidsetsize) {
- if (i > gidsetsize)
- return -EINVAL;
- if (groups16_to_user(grouplist, current->group_info))
- return -EFAULT;
- }
- return i;
-}
-
-asmlinkage long sys32_setgroups16(int gidsetsize, u16 *grouplist)
-{
- struct group_info *new_info;
- int retval;
-
- if (!capable(CAP_SETGID))
- return -EPERM;
- new_info = groups_alloc(gidsetsize);
- if (!new_info)
- return -ENOMEM;
- retval = groups16_from_user(new_info, grouplist);
- if (retval) {
- groups_free(new_info);
- return retval;
- }
-
- retval = set_current_groups(new_info);
- if (retval)
- groups_free(new_info);
-
- return retval;
-}
-
-asmlinkage long sys32_getuid16(void)
-{
- return high2lowuid(current->uid);
-}
-
-asmlinkage long sys32_geteuid16(void)
-{
- return high2lowuid(current->euid);
-}
-
-asmlinkage long sys32_getgid16(void)
-{
- return high2lowgid(current->gid);
-}
-
-asmlinkage long sys32_getegid16(void)
-{
- return high2lowgid(current->egid);
-}
/* 32-bit timeval and related flotsam. */
diff -ruN ngroups-2.6/arch/s390/kernel/compat_wrapper.S uid16-2.6/arch/s390/kernel/compat_wrapper.S
--- ngroups-2.6/arch/s390/kernel/compat_wrapper.S 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/s390/kernel/compat_wrapper.S 2004-01-27 17:47:40.000000000 -0800
@@ -84,7 +84,7 @@
llgtr %r2,%r2 # const char *
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
llgfr %r4,%r4 # __kernel_old_uid_emu31_t
- jg sys32_lchown16 # branch to system call
+ jg sys_lchown16 # branch to system call
.globl sys32_lseek_wrapper
sys32_lseek_wrapper:
@@ -112,7 +112,7 @@
.globl sys32_setuid16_wrapper
sys32_setuid16_wrapper:
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
- jg sys32_setuid16 # branch to system call
+ jg sys_setuid16 # branch to system call
#sys32_getuid16_wrapper # void
@@ -196,7 +196,7 @@
.globl sys32_setgid16_wrapper
sys32_setgid16_wrapper:
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
- jg sys32_setgid16 # branch to system call
+ jg sys_setgid16 # branch to system call
#sys32_getgid16_wrapper # void
@@ -279,13 +279,13 @@
sys32_setreuid16_wrapper:
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
- jg sys32_setreuid16 # branch to system call
+ jg sys_setreuid16 # branch to system call
.globl sys32_setregid16_wrapper
sys32_setregid16_wrapper:
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
llgfr %r3,%r3 # __kernel_old_gid_emu31_t
- jg sys32_setregid16 # branch to system call
+ jg sys_setregid16 # branch to system call
#sys32_sigsuspend_wrapper # done in sigsuspend_glue
@@ -345,13 +345,13 @@
sys32_getgroups16_wrapper:
lgfr %r2,%r2 # int
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
- jg sys32_getgroups16 # branch to system call
+ jg sys_getgroups16 # branch to system call
.globl sys32_setgroups16_wrapper
sys32_setgroups16_wrapper:
lgfr %r2,%r2 # int
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
- jg sys32_setgroups16 # branch to system call
+ jg sys_setgroups16 # branch to system call
.globl sys32_symlink_wrapper
sys32_symlink_wrapper:
@@ -426,7 +426,7 @@
llgfr %r2,%r2 # unsigned int
llgtr %r3,%r3 # __kernel_old_uid_emu31_t *
llgtr %r4,%r4 # __kernel_old_gid_emu31_t *
- jg sys32_fchown16 # branch to system call
+ jg sys_fchown16 # branch to system call
.globl sys32_getpriority_wrapper
sys32_getpriority_wrapper:
@@ -615,12 +615,12 @@
.globl sys32_setfsuid16_wrapper
sys32_setfsuid16_wrapper:
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
- jg sys32_setfsuid16 # branch to system call
+ jg sys_setfsuid16 # branch to system call
.globl sys32_setfsgid16_wrapper
sys32_setfsgid16_wrapper:
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
- jg sys32_setfsgid16 # branch to system call
+ jg sys_setfsgid16 # branch to system call
.globl sys32_llseek_wrapper
sys32_llseek_wrapper:
@@ -767,14 +767,14 @@
llgfr %r2,%r2 # __kernel_old_uid_emu31_t
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
llgfr %r4,%r4 # __kernel_old_uid_emu31_t
- jg sys32_setresuid16 # branch to system call
+ jg sys_setresuid16 # branch to system call
.globl sys32_getresuid16_wrapper
sys32_getresuid16_wrapper:
llgtr %r2,%r2 # __kernel_old_uid_emu31_t *
llgtr %r3,%r3 # __kernel_old_uid_emu31_t *
llgtr %r4,%r4 # __kernel_old_uid_emu31_t *
- jg sys32_getresuid16 # branch to system call
+ jg sys_getresuid16 # branch to system call
.globl sys32_poll_wrapper
sys32_poll_wrapper:
@@ -795,14 +795,14 @@
llgfr %r2,%r2 # __kernel_old_gid_emu31_t
llgfr %r3,%r3 # __kernel_old_gid_emu31_t
llgfr %r4,%r4 # __kernel_old_gid_emu31_t
- jg sys32_setresgid16 # branch to system call
+ jg sys_setresgid16 # branch to system call
.globl sys32_getresgid16_wrapper
sys32_getresgid16_wrapper:
llgtr %r2,%r2 # __kernel_old_gid_emu31_t *
llgtr %r3,%r3 # __kernel_old_gid_emu31_t *
llgtr %r4,%r4 # __kernel_old_gid_emu31_t *
- jg sys32_getresgid16 # branch to system call
+ jg sys_getresgid16 # branch to system call
.globl sys32_prctl_wrapper
sys32_prctl_wrapper:
@@ -876,7 +876,7 @@
llgtr %r2,%r2 # const char *
llgfr %r3,%r3 # __kernel_old_uid_emu31_t
llgfr %r4,%r4 # __kernel_old_gid_emu31_t
- jg sys32_chown16 # branch to system call
+ jg sys_chown16 # branch to system call
.globl sys32_getcwd_wrapper
sys32_getcwd_wrapper:
diff -ruN ngroups-2.6/arch/s390/kernel/syscalls.S uid16-2.6/arch/s390/kernel/syscalls.S
--- ngroups-2.6/arch/s390/kernel/syscalls.S 2004-01-26 09:19:00.000000000 -0800
+++ uid16-2.6/arch/s390/kernel/syscalls.S 2004-01-27 17:50:21.000000000 -0800
@@ -32,7 +32,7 @@
SYSCALL(sys_mount,sys_mount,sys32_mount_wrapper)
SYSCALL(sys_oldumount,sys_oldumount,sys32_oldumount_wrapper)
SYSCALL(sys_setuid16,sys_ni_syscall,sys32_setuid16_wrapper) /* old setuid16 syscall*/
-SYSCALL(sys_getuid16,sys_ni_syscall,sys32_getuid16) /* old getuid16 syscall*/
+SYSCALL(sys_getuid16,sys_ni_syscall,sys_getuid16) /* old getuid16 syscall*/
SYSCALL(sys_stime,sys_ni_syscall,sys32_stime_wrapper) /* 25 old stime syscall */
SYSCALL(sys_ptrace,sys_ptrace,sys32_ptrace_wrapper)
SYSCALL(sys_alarm,sys_alarm,sys32_alarm_wrapper)
@@ -54,11 +54,11 @@
SYSCALL(sys_times,sys_times,compat_sys_times_wrapper)
NI_SYSCALL /* old prof syscall */
SYSCALL(sys_brk,sys_brk,sys32_brk_wrapper) /* 45 */
-SYSCALL(sys_setgid16,sys_ni_syscall,sys32_setgid16) /* old setgid16 syscall*/
-SYSCALL(sys_getgid16,sys_ni_syscall,sys32_getgid16) /* old getgid16 syscall*/
+SYSCALL(sys_setgid16,sys_ni_syscall,sys_setgid16) /* old setgid16 syscall*/
+SYSCALL(sys_getgid16,sys_ni_syscall,sys_getgid16) /* old getgid16 syscall*/
SYSCALL(sys_signal,sys_signal,sys32_signal_wrapper)
-SYSCALL(sys_geteuid16,sys_ni_syscall,sys32_geteuid16) /* old geteuid16 syscall */
-SYSCALL(sys_getegid16,sys_ni_syscall,sys32_getegid16) /* 50 old getegid16 syscall */
+SYSCALL(sys_geteuid16,sys_ni_syscall,sys_geteuid16) /* old geteuid16 syscall */
+SYSCALL(sys_getegid16,sys_ni_syscall,sys_getegid16) /* 50 old getegid16 syscall */
SYSCALL(sys_acct,sys_acct,sys32_acct_wrapper)
SYSCALL(sys_umount,sys_umount,sys32_umount_wrapper)
NI_SYSCALL /* old lock syscall */
diff -ruN ngroups-2.6/arch/sh/Kconfig uid16-2.6/arch/sh/Kconfig
--- ngroups-2.6/arch/sh/Kconfig 2004-01-26 09:19:01.000000000 -0800
+++ uid16-2.6/arch/sh/Kconfig 2004-01-27 15:40:15.000000000 -0800
@@ -18,6 +18,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/sparc/Kconfig uid16-2.6/arch/sparc/Kconfig
--- ngroups-2.6/arch/sparc/Kconfig 2004-01-26 09:19:01.000000000 -0800
+++ uid16-2.6/arch/sparc/Kconfig 2004-01-27 15:40:30.000000000 -0800
@@ -13,6 +13,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config HIGHMEM
bool
default y
diff -ruN ngroups-2.6/arch/sparc64/Kconfig uid16-2.6/arch/sparc64/Kconfig
--- ngroups-2.6/arch/sparc64/Kconfig 2004-01-26 09:19:01.000000000 -0800
+++ uid16-2.6/arch/sparc64/Kconfig 2004-01-27 17:13:53.000000000 -0800
@@ -381,6 +381,11 @@
depends on SPARC32_COMPAT
default y
+config UID16_SYSCALLS
+ bool
+ depends on SPARC32_COMPAT
+ default y
+
config BINFMT_ELF32
tristate "Kernel support for 32-bit ELF binaries"
depends on SPARC32_COMPAT
diff -ruN ngroups-2.6/arch/sparc64/kernel/entry.S uid16-2.6/arch/sparc64/kernel/entry.S
--- ngroups-2.6/arch/sparc64/kernel/entry.S 2003-12-19 14:30:00.000000000 -0800
+++ uid16-2.6/arch/sparc64/kernel/entry.S 2004-01-27 17:30:23.000000000 -0800
@@ -1475,9 +1475,9 @@
/* SunOS getuid() returns uid in %o0 and euid in %o1 */
.globl sunos_getuid
sunos_getuid:
- call sys32_geteuid16
+ call sys_geteuid16
nop
- call sys32_getuid16
+ call sys_getuid16
stx %o0, [%sp + PTREGS_OFF + PT_V9_I1]
b,pt %xcc, ret_sys_call
stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
@@ -1485,9 +1485,9 @@
/* SunOS getgid() returns gid in %o0 and egid in %o1 */
.globl sunos_getgid
sunos_getgid:
- call sys32_getegid16
+ call sys_getegid16
nop
- call sys32_getgid16
+ call sys_getgid16
stx %o0, [%sp + PTREGS_OFF + PT_V9_I1]
b,pt %xcc, ret_sys_call
stx %o0, [%sp + PTREGS_OFF + PT_V9_I0]
diff -ruN ngroups-2.6/arch/sparc64/kernel/sys_sparc32.c uid16-2.6/arch/sparc64/kernel/sys_sparc32.c
--- ngroups-2.6/arch/sparc64/kernel/sys_sparc32.c 2004-01-27 12:40:02.000000000 -0800
+++ uid16-2.6/arch/sparc64/kernel/sys_sparc32.c 2004-01-27 17:27:36.000000000 -0800
@@ -88,194 +88,6 @@
__ret; \
})
-extern asmlinkage long sys_chown(const char *, uid_t,gid_t);
-extern asmlinkage long sys_lchown(const char *, uid_t,gid_t);
-extern asmlinkage long sys_fchown(unsigned int, uid_t,gid_t);
-extern asmlinkage long sys_setregid(gid_t, gid_t);
-extern asmlinkage long sys_setgid(gid_t);
-extern asmlinkage long sys_setreuid(uid_t, uid_t);
-extern asmlinkage long sys_setuid(uid_t);
-extern asmlinkage long sys_setresuid(uid_t, uid_t, uid_t);
-extern asmlinkage long sys_setresgid(gid_t, gid_t, gid_t);
-extern asmlinkage long sys_setfsuid(uid_t);
-extern asmlinkage long sys_setfsgid(gid_t);
-
-asmlinkage long sys32_chown16(const char * filename, u16 user, u16 group)
-{
- return sys_chown(filename, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_lchown16(const char * filename, u16 user, u16 group)
-{
- return sys_lchown(filename, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_fchown16(unsigned int fd, u16 user, u16 group)
-{
- return sys_fchown(fd, low2highuid(user), low2highgid(group));
-}
-
-asmlinkage long sys32_setregid16(u16 rgid, u16 egid)
-{
- return sys_setregid(low2highgid(rgid), low2highgid(egid));
-}
-
-asmlinkage long sys32_setgid16(u16 gid)
-{
- return sys_setgid((gid_t)gid);
-}
-
-asmlinkage long sys32_setreuid16(u16 ruid, u16 euid)
-{
- return sys_setreuid(low2highuid(ruid), low2highuid(euid));
-}
-
-asmlinkage long sys32_setuid16(u16 uid)
-{
- return sys_setuid((uid_t)uid);
-}
-
-asmlinkage long sys32_setresuid16(u16 ruid, u16 euid, u16 suid)
-{
- return sys_setresuid(low2highuid(ruid), low2highuid(euid),
- low2highuid(suid));
-}
-
-asmlinkage long sys32_getresuid16(u16 *ruid, u16 *euid, u16 *suid)
-{
- int retval;
-
- if (!(retval = put_user(high2lowuid(current->uid), ruid)) &&
- !(retval = put_user(high2lowuid(current->euid), euid)))
- retval = put_user(high2lowuid(current->suid), suid);
-
- return retval;
-}
-
-asmlinkage long sys32_setresgid16(u16 rgid, u16 egid, u16 sgid)
-{
- return sys_setresgid(low2highgid(rgid), low2highgid(egid),
- low2highgid(sgid));
-}
-
-asmlinkage long sys32_getresgid16(u16 *rgid, u16 *egid, u16 *sgid)
-{
- int retval;
-
- if (!(retval = put_user(high2lowgid(current->gid), rgid)) &&
- !(retval = put_user(high2lowgid(current->egid), egid)))
- retval = put_user(high2lowgid(current->sgid), sgid);
-
- return retval;
-}
-
-asmlinkage long sys32_setfsuid16(u16 uid)
-{
- return sys_setfsuid((uid_t)uid);
-}
-
-asmlinkage long sys32_setfsgid16(u16 gid)
-{
- return sys_setfsgid((gid_t)gid);
-}
-
-static int groups16_to_user(u16 *grouplist, struct group_info *info)
-{
- int i;
- u16 group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_WRITE, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- group = (u16)GROUP_AT(info, i);
- if (__put_user(group, grouplist+i))
- return -EFAULT;
- }
-
- return 0;
-}
-
-static int groups16_from_user(struct group_info *info, u16 *grouplist)
-{
- int i;
- u16 group;
-
- if (info->ngroups > TASK_SIZE/sizeof(group))
- return -EFAULT;
- if (!access_ok(VERIFY_READ, grouplist, info->ngroups * sizeof(group)))
- return -EFAULT;
-
- for (i = 0; i < info->ngroups; i++) {
- if (__get_user(group, grouplist+i))
- return -EFAULT;
- GROUP_AT(info, i) = (gid_t)group;
- }
-
- return 0;
-}
-
-asmlinkage long sys32_getgroups16(int gidsetsize, u16 *grouplist)
-{
- int i;
-
- if (gidsetsize < 0)
- return -EINVAL;
- i = current->group_info->ngroups;
- if (gidsetsize) {
- if (i > gidsetsize)
- return -EINVAL;
- if (groups16_to_user(grouplist, current->group_info))
- return -EFAULT;
- }
- return i;
-}
-
-asmlinkage long sys32_setgroups16(int gidsetsize, u16 *grouplist)
-{
- struct group_info *new_info;
- int retval;
-
- if (!capable(CAP_SETGID))
- return -EPERM;
- new_info = groups_alloc(gidsetsize);
- if (!new_info)
- return -ENOMEM;
- retval = groups16_from_user(new_info, grouplist);
- if (retval) {
- groups_free(new_info);
- return retval;
- }
-
- retval = set_current_groups(new_info);
- if (retval)
- groups_free(new_info);
-
- return retval;
-}
-
-asmlinkage long sys32_getuid16(void)
-{
- return high2lowuid(current->uid);
-}
-
-asmlinkage long sys32_geteuid16(void)
-{
- return high2lowuid(current->euid);
-}
-
-asmlinkage long sys32_getgid16(void)
-{
- return high2lowgid(current->gid);
-}
-
-asmlinkage long sys32_getegid16(void)
-{
- return high2lowgid(current->egid);
-}
-
/* 32-bit timeval and related flotsam. */
static long get_tv32(struct timeval *o, struct compat_timeval *i)
diff -ruN ngroups-2.6/arch/sparc64/kernel/systbls.S uid16-2.6/arch/sparc64/kernel/systbls.S
--- ngroups-2.6/arch/sparc64/kernel/systbls.S 2004-01-26 09:19:01.000000000 -0800
+++ uid16-2.6/arch/sparc64/kernel/systbls.S 2004-01-27 17:35:08.000000000 -0800
@@ -21,21 +21,21 @@
sys_call_table32:
/*0*/ .word sys_restart_syscall, sparc_exit, sys_fork, sys_read, sys_write
/*5*/ .word sparc32_open, sys_close, compat_sys_wait4, sys_creat, sys_link
-/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys32_chown16, sys32_mknod
-/*15*/ .word sys32_chmod, sys32_lchown16, sparc_brk, sys_perfctr, sys32_lseek
-/*20*/ .word sys_getpid, sys_capget, sys_capset, sys32_setuid16, sys32_getuid16
+/*10*/ .word sys_unlink, sunos_execv, sys_chdir, sys_chown16, sys32_mknod
+/*15*/ .word sys32_chmod, sys_lchown16, sparc_brk, sys_perfctr, sys32_lseek
+/*20*/ .word sys_getpid, sys_capget, sys_capset, sys_setuid16, sys_getuid16
/*25*/ .word sys_time, sys_ptrace, sys_alarm, sys32_sigaltstack, sys32_pause
/*30*/ .word compat_sys_utime, sys_lchown, sys_fchown, sys_access, sys_nice
.word sys_chown, sys_sync, sys_kill, compat_sys_newstat, sys32_sendfile
/*40*/ .word compat_sys_newlstat, sys_dup, sys_pipe, compat_sys_times, sys_getuid
- .word sys_umount, sys32_setgid16, sys32_getgid16, sys_signal, sys32_geteuid16
-/*50*/ .word sys32_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
+ .word sys_umount, sys_setgid16, sys_getgid16, sys_signal, sys_geteuid16
+/*50*/ .word sys_getegid16, sys_acct, sys_nis_syscall, sys_getgid, compat_sys_ioctl
.word sys_reboot, sys32_mmap2, sys_symlink, sys_readlink, sys32_execve
/*60*/ .word sys_umask, sys_chroot, compat_sys_newfstat, sys_fstat64, sys_getpagesize
.word sys_msync, sys_vfork, sys32_pread64, sys32_pwrite64, sys_geteuid
/*70*/ .word sys_getegid, sys32_mmap, sys_setreuid, sys_munmap, sys_mprotect
- .word sys_madvise, sys_vhangup, sys32_truncate64, sys_mincore, sys32_getgroups16
-/*80*/ .word sys32_setgroups16, sys_getpgrp, sys_setgroups, compat_sys_setitimer, sys32_ftruncate64
+ .word sys_madvise, sys_vhangup, sys32_truncate64, sys_mincore, sys_getgroups16
+/*80*/ .word sys_setgroups16, sys_getpgrp, sys_setgroups, compat_sys_setitimer, sys32_ftruncate64
.word sys_swapon, compat_sys_getitimer, sys_setuid, sys_sethostname, sys_setgid
/*90*/ .word sys_dup2, sys_setfsuid, compat_sys_fcntl, sys32_select, sys_setfsgid
.word sys_fsync, sys_setpriority32, sys_nis_syscall, sys_nis_syscall, sys_nis_syscall
@@ -43,8 +43,8 @@
.word sys32_rt_sigtimedwait, sys32_rt_sigqueueinfo, sys32_rt_sigsuspend, sys_setresuid, sys_getresuid
/*110*/ .word sys_setresgid, sys_getresgid, sys_setregid, sys_nis_syscall, sys_nis_syscall
.word sys_getgroups, sys32_gettimeofday, compat_sys_getrusage, sys_nis_syscall, sys_getcwd
-/*120*/ .word sys32_readv, sys32_writev, sys32_settimeofday, sys32_fchown16, sys_fchmod
- .word sys_nis_syscall, sys32_setreuid16, sys32_setregid16, sys_rename, sys_truncate
+/*120*/ .word sys32_readv, sys32_writev, sys32_settimeofday, sys_fchown16, sys_fchmod
+ .word sys_nis_syscall, sys_setreuid16, sys_setregid16, sys_rename, sys_truncate
/*130*/ .word sys_ftruncate, sys_flock, sys_lstat64, sys_nis_syscall, sys_nis_syscall
.word sys_nis_syscall, sys_mkdir, sys_rmdir, sys32_utimes, sys_stat64
/*140*/ .word sys32_sendfile64, sys_nis_syscall, compat_sys_futex, sys_gettid, compat_sys_getrlimit
@@ -64,7 +64,7 @@
/*210*/ .word sys32_fadvise64_64, sys_tgkill, sys_waitpid, sys_swapoff, sys32_sysinfo
.word sys32_ipc, sys32_sigreturn, sys_clone, sys_nis_syscall, sys32_adjtimex
/*220*/ .word compat_sys_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys_getpgid
- .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16
+ .word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys_setfsuid16, sys_setfsgid16
/*230*/ .word sys32_select, sys_time, sys_nis_syscall, sys_stime, compat_statfs64
.word compat_fstatfs64, sys_llseek, sys_mlock, sys_munlock, sys_mlockall
/*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler
@@ -149,7 +149,7 @@
.word sys_close, sunos_wait4, sys_creat
.word sys_link, sys_unlink, sunos_execv
.word sys_chdir, sunos_nosys, sys32_mknod
- .word sys32_chmod, sys32_lchown16, sunos_brk
+ .word sys32_chmod, sys_lchown16, sunos_brk
.word sunos_nosys, sys32_lseek, sunos_getpid
.word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_getuid, sunos_nosys, sys_ptrace
@@ -170,8 +170,8 @@
.word sunos_nosys, sunos_sbrk, sunos_sstk
.word sunos_mmap, sunos_vadvise, sys_munmap
.word sys_mprotect, sys_madvise, sys_vhangup
- .word sunos_nosys, sys_mincore, sys32_getgroups16
- .word sys32_setgroups16, sys_getpgrp, sunos_setpgrp
+ .word sunos_nosys, sys_mincore, sys_getgroups16
+ .word sys_setgroups16, sys_getpgrp, sunos_setpgrp
.word compat_sys_setitimer, sunos_nosys, sys_swapon
.word compat_sys_getitimer, sys_gethostname, sys_sethostname
.word sunos_getdtablesize, sys_dup2, sunos_nop
@@ -185,9 +185,9 @@
.word sys32_sigstack, compat_sys_recvmsg, compat_sys_sendmsg
.word sunos_nosys, sys32_gettimeofday, compat_sys_getrusage
.word sunos_getsockopt, sunos_nosys, sunos_readv
- .word sunos_writev, sys32_settimeofday, sys32_fchown16
- .word sys_fchmod, sys32_recvfrom, sys32_setreuid16
- .word sys32_setregid16, sys_rename, sys_truncate
+ .word sunos_writev, sys32_settimeofday, sys_fchown16
+ .word sys_fchmod, sys32_recvfrom, sys_setreuid16
+ .word sys_setregid16, sys_rename, sys_truncate
.word sys_ftruncate, sys_flock, sunos_nosys
.word sys32_sendto, sys_shutdown, sys_socketpair
.word sys_mkdir, sys_rmdir, sys32_utimes
diff -ruN ngroups-2.6/arch/um/Kconfig uid16-2.6/arch/um/Kconfig
--- ngroups-2.6/arch/um/Kconfig 2004-01-26 09:19:09.000000000 -0800
+++ uid16-2.6/arch/um/Kconfig 2004-01-27 15:41:22.000000000 -0800
@@ -22,6 +22,10 @@
bool
default y
+config UID16_SYSCALLS
+ bool
+ default y
+
config RWSEM_GENERIC_SPINLOCK
bool
default y
diff -ruN ngroups-2.6/arch/x86_64/Kconfig uid16-2.6/arch/x86_64/Kconfig
--- ngroups-2.6/arch/x86_64/Kconfig 2004-01-26 09:19:09.000000000 -0800
+++ uid16-2.6/arch/x86_64/Kconfig 2004-01-27 17:10:03.000000000 -0800
@@ -368,6 +368,11 @@
depends on IA32_EMULATION
default y
+config UID16_SYSCALLS
+ bool
+ depends on IA32_EMULATION
+ default y
+
endmenu
source drivers/Kconfig
diff -ruN ngroups-2.6/kernel/Makefile uid16-2.6/kernel/Makefile
--- ngroups-2.6/kernel/Makefile 2003-12-19 14:30:14.000000000 -0800
+++ uid16-2.6/kernel/Makefile 2004-01-27 14:53:35.000000000 -0800
@@ -11,7 +11,7 @@
obj-$(CONFIG_FUTEX) += futex.o
obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
obj-$(CONFIG_SMP) += cpu.o
-obj-$(CONFIG_UID16) += uid16.o
+obj-$(CONFIG_UID16_SYSCALLS) += uid16.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_KALLSYMS) += kallsyms.o
obj-$(CONFIG_PM) += power/
diff -ruN ngroups-2.6/kernel/uid16.c uid16-2.6/kernel/uid16.c
--- ngroups-2.6/kernel/uid16.c 2004-01-27 12:40:02.000000000 -0800
+++ uid16-2.6/kernel/uid16.c 2004-01-27 15:07:52.000000000 -0800
@@ -11,11 +11,19 @@
#include <linux/reboot.h>
#include <linux/prctl.h>
#include <linux/init.h>
-#include <linux/highuid.h>
+#include <linux/types.h>
#include <linux/security.h>
#include <asm/uaccess.h>
+/* duplicated from highuid.h, but not exposed */
+extern int overflowuid;
+extern int overflowgid;
+#define high2lowuid(uid) ((uid) > 65535 ? (uid16_t)overflowuid : (uid16_t)(uid)
+#define high2lowgid(gid) ((gid) > 65535 ? (gid16_t)overflowgid : (gid16_t)(gid))
+#define low2highuid(uid) ((uid) == (uid16_t)-1 ? (uid_t)-1 : (uid_t)(uid))
+#define low2highgid(gid) ((gid) == (gid16_t)-1 ? (gid_t)-1 : (gid_t)(gid))
+
extern asmlinkage long sys_chown(const char *, uid_t,gid_t);
extern asmlinkage long sys_lchown(const char *, uid_t,gid_t);
extern asmlinkage long sys_fchown(unsigned int, uid_t,gid_t);
@@ -28,48 +36,48 @@
extern asmlinkage long sys_setfsuid(uid_t);
extern asmlinkage long sys_setfsgid(gid_t);
-asmlinkage long sys_chown16(const char * filename, old_uid_t user, old_gid_t group)
+asmlinkage long sys_chown16(const char * filename, uid16_t user, gid16_t group)
{
return sys_chown(filename, low2highuid(user), low2highgid(group));
}
-asmlinkage long sys_lchown16(const char * filename, old_uid_t user, old_gid_t group)
+asmlinkage long sys_lchown16(const char * filename, uid16_t user, gid16_t group)
{
return sys_lchown(filename, low2highuid(user), low2highgid(group));
}
-asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group)
+asmlinkage long sys_fchown16(unsigned int fd, uid16_t user, gid16_t group)
{
return sys_fchown(fd, low2highuid(user), low2highgid(group));
}
-asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid)
+asmlinkage long sys_setregid16(gid16_t rgid, gid16_t egid)
{
return sys_setregid(low2highgid(rgid), low2highgid(egid));
}
-asmlinkage long sys_setgid16(old_gid_t gid)
+asmlinkage long sys_setgid16(gid16_t gid)
{
return sys_setgid((gid_t)gid);
}
-asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid)
+asmlinkage long sys_setreuid16(uid16_t ruid, uid16_t euid)
{
return sys_setreuid(low2highuid(ruid), low2highuid(euid));
}
-asmlinkage long sys_setuid16(old_uid_t uid)
+asmlinkage long sys_setuid16(uid16_t uid)
{
return sys_setuid((uid_t)uid);
}
-asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid)
+asmlinkage long sys_setresuid16(uid16_t ruid, uid16_t euid, uid16_t suid)
{
return sys_setresuid(low2highuid(ruid), low2highuid(euid),
low2highuid(suid));
}
-asmlinkage long sys_getresuid16(old_uid_t *ruid, old_uid_t *euid, old_uid_t *suid)
+asmlinkage long sys_getresuid16(uid16_t *ruid, uid16_t *euid, uid16_t *suid)
{
int retval;
@@ -80,13 +88,13 @@
return retval;
}
-asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid)
+asmlinkage long sys_setresgid16(gid16_t rgid, gid16_t egid, gid16_t sgid)
{
return sys_setresgid(low2highgid(rgid), low2highgid(egid),
low2highgid(sgid));
}
-asmlinkage long sys_getresgid16(old_gid_t *rgid, old_gid_t *egid, old_gid_t *sgid)
+asmlinkage long sys_getresgid16(gid16_t *rgid, gid16_t *egid, gid16_t *sgid)
{
int retval;
@@ -97,21 +105,21 @@
return retval;
}
-asmlinkage long sys_setfsuid16(old_uid_t uid)
+asmlinkage long sys_setfsuid16(uid16_t uid)
{
return sys_setfsuid((uid_t)uid);
}
-asmlinkage long sys_setfsgid16(old_gid_t gid)
+asmlinkage long sys_setfsgid16(gid16_t gid)
{
return sys_setfsgid((gid_t)gid);
}
-static int groups16_to_user(old_gid_t __user *grouplist,
+static int groups16_to_user(gid16_t __user *grouplist,
struct group_info *info)
{
int i;
- old_gid_t group;
+ gid16_t group;
if (info->ngroups > TASK_SIZE/sizeof(group))
return -EFAULT;
@@ -119,7 +127,7 @@
return -EFAULT;
for (i = 0; i < info->ngroups; i++) {
- group = (old_gid_t)GROUP_AT(info, i);
+ group = (gid16_t)GROUP_AT(info, i);
if (__put_user(group, grouplist+i))
return -EFAULT;
}
@@ -128,10 +136,10 @@
}
static int groups16_from_user(struct group_info *info,
- old_gid_t __user *grouplist)
+ gid16_t __user *grouplist)
{
int i;
- old_gid_t group;
+ gid16_t group;
if (info->ngroups > TASK_SIZE/sizeof(group))
return -EFAULT;
@@ -147,7 +155,7 @@
return 0;
}
-asmlinkage long sys_getgroups16(int gidsetsize, old_gid_t __user *grouplist)
+asmlinkage long sys_getgroups16(int gidsetsize, gid16_t __user *grouplist)
{
int i = 0;
@@ -163,7 +171,7 @@
return i;
}
-asmlinkage long sys_setgroups16(int gidsetsize, old_gid_t __user *grouplist)
+asmlinkage long sys_setgroups16(int gidsetsize, gid16_t __user *grouplist)
{
struct group_info *new_info;
int retval;
^ permalink raw reply
* [BK] Updated 2.6 typhoon driver for 3CR990 & 3CR990B cards
From: David Dillow @ 2004-01-28 3:31 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Netdev
[ Resend, seems my mailer had issues. ]
[ I've not sent patches to the list, as the firmware update is too big. ]
Jeff, please do a
bk pull http://typhoon.bkbits.net/typhoon-2.5
This will update the following files:
drivers/net/typhoon-firmware.h | 6890 +++++++++++++++++++++--------------------
drivers/net/typhoon.c | 20
drivers/net/typhoon.h | 6
3 files changed, 3563 insertions(+), 3353 deletions(-)
through these ChangeSets:
<dave@thedillows.org> (03/12/15 1.1488)
Support the new 3CR990B cards that require authentication of the runtime
firmware image.
And the non-firmware part is:
diff -Nru a/drivers/net/typhoon.c b/drivers/net/typhoon.c
--- a/drivers/net/typhoon.c Mon Jan 26 22:58:36 2004
+++ b/drivers/net/typhoon.c Mon Jan 26 22:58:36 2004
@@ -85,8 +85,8 @@
#define PKT_BUF_SZ 1536
#define DRV_MODULE_NAME "typhoon"
-#define DRV_MODULE_VERSION "1.5.2"
-#define DRV_MODULE_RELDATE "03/11/25"
+#define DRV_MODULE_VERSION "1.5.3"
+#define DRV_MODULE_RELDATE "03/12/15"
#define PFX DRV_MODULE_NAME ": "
#define ERR_PFX KERN_ERR PFX
@@ -157,6 +157,7 @@
TYPHOON_TX = 0, TYPHOON_TX95, TYPHOON_TX97, TYPHOON_SVR,
TYPHOON_SVR95, TYPHOON_SVR97, TYPHOON_TXM, TYPHOON_BSVR,
TYPHOON_FX95, TYPHOON_FX97, TYPHOON_FX95SVR, TYPHOON_FX97SVR,
+ TYPHOON_FXM,
};
/* directly indexed by enum typhoon_cards, above */
@@ -185,6 +186,8 @@
TYPHOON_CRYPTO_DES | TYPHOON_FIBER},
{ "3Com Typhoon (3CR990-FX-97 Server)",
TYPHOON_CRYPTO_DES | TYPHOON_CRYPTO_3DES | TYPHOON_FIBER},
+ { "3Com Typhoon2 (3C990B-FX-97)",
+ TYPHOON_CRYPTO_VARIABLE | TYPHOON_FIBER},
};
/* Notes on the new subsystem numbering scheme:
@@ -203,6 +206,8 @@
{ PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3CR990B,
PCI_ANY_ID, 0x1000, 0, 0, TYPHOON_TXM },
{ PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3CR990B,
+ PCI_ANY_ID, 0x1102, 0, 0, TYPHOON_FXM },
+ { PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3CR990B,
PCI_ANY_ID, 0x2000, 0, 0, TYPHOON_BSVR },
{ PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3CR990_FX,
PCI_ANY_ID, 0x1101, 0, 0, TYPHOON_FX95 },
@@ -1363,6 +1368,7 @@
u32 section_len;
u32 len;
u32 load_addr;
+ u32 hmac;
int i;
int err;
@@ -1406,6 +1412,16 @@
writel(TYPHOON_INTR_BOOTCMD, ioaddr + TYPHOON_REG_INTR_STATUS);
writel(load_addr, ioaddr + TYPHOON_REG_DOWNLOAD_BOOT_ADDR);
+ hmac = le32_to_cpu(fHdr->hmacDigest[0]);
+ writel(hmac, ioaddr + TYPHOON_REG_DOWNLOAD_HMAC_0);
+ hmac = le32_to_cpu(fHdr->hmacDigest[1]);
+ writel(hmac, ioaddr + TYPHOON_REG_DOWNLOAD_HMAC_1);
+ hmac = le32_to_cpu(fHdr->hmacDigest[2]);
+ writel(hmac, ioaddr + TYPHOON_REG_DOWNLOAD_HMAC_2);
+ hmac = le32_to_cpu(fHdr->hmacDigest[3]);
+ writel(hmac, ioaddr + TYPHOON_REG_DOWNLOAD_HMAC_3);
+ hmac = le32_to_cpu(fHdr->hmacDigest[4]);
+ writel(hmac, ioaddr + TYPHOON_REG_DOWNLOAD_HMAC_4);
typhoon_post_pci_writes(ioaddr);
writel(TYPHOON_BOOTCMD_RUNTIME_IMAGE, ioaddr + TYPHOON_REG_COMMAND);
diff -Nru a/drivers/net/typhoon.h b/drivers/net/typhoon.h
--- a/drivers/net/typhoon.h Mon Jan 26 22:58:36 2004
+++ b/drivers/net/typhoon.h Mon Jan 26 22:58:36 2004
@@ -512,6 +512,7 @@
u32 version;
u32 numSections;
u32 startAddr;
+ u32 hmacDigest[5];
} __attribute__ ((packed));
struct typhoon_section_header {
@@ -548,6 +549,11 @@
#define TYPHOON_REG_BOOT_LENGTH TYPHOON_REG_HOST2ARM1
#define TYPHOON_REG_DOWNLOAD_BOOT_ADDR TYPHOON_REG_HOST2ARM1
+#define TYPHOON_REG_DOWNLOAD_HMAC_0 TYPHOON_REG_HOST2ARM2
+#define TYPHOON_REG_DOWNLOAD_HMAC_1 TYPHOON_REG_HOST2ARM3
+#define TYPHOON_REG_DOWNLOAD_HMAC_2 TYPHOON_REG_HOST2ARM4
+#define TYPHOON_REG_DOWNLOAD_HMAC_3 TYPHOON_REG_HOST2ARM5
+#define TYPHOON_REG_DOWNLOAD_HMAC_4 TYPHOON_REG_HOST2ARM6
#define TYPHOON_REG_BOOT_RECORD_ADDR_HI TYPHOON_REG_HOST2ARM2
#define TYPHOON_REG_BOOT_RECORD_ADDR_LO TYPHOON_REG_HOST2ARM1
^ permalink raw reply
* Re: [2.0.40-rc8] Works well
From: David Weinehall @ 2004-01-28 3:37 UTC (permalink / raw)
To: Coywolf Qi Hunt; +Cc: Markus Hästbacka, Kernel Mailinglist
In-Reply-To: <40172C5E.3090201@lovecn.org>
On Wed, Jan 28, 2004 at 03:28:30AM +0000, Coywolf Qi Hunt wrote:
> Markus Hästbacka wrote:
>
> >Hey David,
> >I just mail to tell you that 2.0.40-rc8 seems to work really well, no
> >problems compiling (except a few warnings :) and absolutely no problem
> >running. Great work!
> >
> > Markus
> >
> >
> Hello all 2.0 hackers,
There aren't a lot, I suspect you can count us using one hand
nowadays...
> Recently I just have such an idea that is to port the 2.0.39 to let it
> be compiled with my gcc 2.95.4 or any
> other latest gcc. At the same time, also make it remain compliant to
> gcc 2.7.2.1. ( I can't find 2.7.2.1, only 2.7.2.3
> on the ftp) Is this work worth while?
Well, for sure it's quite a demanding task, since, if I remember
correctly, the module-code uses some nasty internal gcc-knowledge to
generate code, that simply doesn't work with later versions of gcc.
It might be that I remember this incorrectly though.
It would be interesting, yes, but only if it can be proved to some
degree that no new bugs are introduced.
My aim for 2.0.41 is to make it a cleanup-release; remove warnings, tidy
up a little source-code mess, kill dead code, fix typos etc.
Regards: David Weinehall
--
/) David Weinehall <tao@acc.umu.se> /) Northern lights wander (\
// Maintainer of the v2.0 kernel // Dance across the winter sky //
\) http://www.acc.umu.se/~tao/ (/ Full colour fire (/
^ permalink raw reply
* linux_2_4 and Malta
From: Nathan Field @ 2004-01-28 3:45 UTC (permalink / raw)
To: linux-mips
[-- Attachment #1: Type: TEXT/PLAIN, Size: 788 bytes --]
I'm having problems getting the linux_2_4 branch of the kernel to output
serial on my Malta board. The HEAD branch (2.6) seems to work fine, but
I'd prefer to avoid that if possible. Is anyone else having this problem?
I've attached my .config just in case I'm doing something stupid. I got
the 2.4.17 kernel to work fine.
The prom_print stuff outputs to the serial port fine, but printk's never
get out. Looking at the kernel under a debugger it also seems that the
kernel is crashing randomly and ending up in an infinite loop branching to
self.
nathan
--
Nathan Field (ndf@ghs.com)
But the trouble with analogies is that analogies are like goldfish:
sometimes they have nothing to do with the topic at hand.
-- Crispin (from a posting to the Bugtraq mailing list)
[-- Attachment #2: Type: TEXT/PLAIN, Size: 16290 bytes --]
#
# Automatically generated by make menuconfig: don't edit
#
CONFIG_MIPS=y
CONFIG_MIPS32=y
# CONFIG_MIPS64 is not set
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KMOD=y
#
# Machine selection
#
# CONFIG_ACER_PICA_61 is not set
# CONFIG_MIPS_BOSPORUS is not set
# CONFIG_MIPS_MIRAGE is not set
# CONFIG_MIPS_DB1000 is not set
# CONFIG_MIPS_DB1100 is not set
# CONFIG_MIPS_DB1500 is not set
# CONFIG_MIPS_PB1000 is not set
# CONFIG_MIPS_PB1100 is not set
# CONFIG_MIPS_PB1500 is not set
# CONFIG_MIPS_HYDROGEN3 is not set
# CONFIG_MIPS_PB1550 is not set
# CONFIG_MIPS_XXS1500 is not set
# CONFIG_MIPS_MTX1 is not set
# CONFIG_COGENT_CSB250 is not set
# CONFIG_BAGET_MIPS is not set
# CONFIG_CASIO_E55 is not set
# CONFIG_MIPS_COBALT is not set
# CONFIG_DECSTATION is not set
# CONFIG_MIPS_EV64120 is not set
# CONFIG_MIPS_EV96100 is not set
# CONFIG_MIPS_IVR is not set
# CONFIG_HP_LASERJET is not set
# CONFIG_IBM_WORKPAD is not set
# CONFIG_LASAT is not set
# CONFIG_MIPS_ITE8172 is not set
# CONFIG_MIPS_ATLAS is not set
# CONFIG_MIPS_MAGNUM_4000 is not set
CONFIG_MIPS_MALTA=y
# CONFIG_MIPS_SEAD is not set
# CONFIG_MOMENCO_OCELOT is not set
# CONFIG_MOMENCO_OCELOT_G is not set
# CONFIG_MOMENCO_OCELOT_C is not set
# CONFIG_MOMENCO_JAGUAR_ATX is not set
# CONFIG_PMC_YOSEMITE is not set
# CONFIG_DDB5074 is not set
# CONFIG_DDB5476 is not set
# CONFIG_DDB5477 is not set
# CONFIG_NEC_OSPREY is not set
# CONFIG_NEC_EAGLE is not set
# CONFIG_OLIVETTI_M700 is not set
# CONFIG_NINO is not set
# CONFIG_SGI_IP22 is not set
# CONFIG_SGI_IP27 is not set
# CONFIG_SIBYTE_SB1xxx_SOC is not set
# CONFIG_SNI_RM200_PCI is not set
# CONFIG_TANBAC_TB0226 is not set
# CONFIG_TANBAC_TB0229 is not set
# CONFIG_TOSHIBA_JMR3927 is not set
# CONFIG_TOSHIBA_RBTX4927 is not set
# CONFIG_VICTOR_MPC30X is not set
# CONFIG_ZAO_CAPCELLA is not set
# CONFIG_HIGHMEM is not set
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BOOT_ELF32=y
CONFIG_HAVE_STD_PC_SERIAL_PORT=y
CONFIG_I8259=y
CONFIG_MIPS_BONITO64=y
CONFIG_MIPS_GT64120=y
CONFIG_MIPS_MSC=y
CONFIG_L1_CACHE_SHIFT=5
CONFIG_NEW_TIME_C=y
CONFIG_NONCOHERENT_IO=y
CONFIG_SWAP_IO_SPACE_W=y
CONFIG_SWAP_IO_SPACE_L=y
CONFIG_PC_KEYB=y
CONFIG_PCI=y
# CONFIG_MIPS_AU1000 is not set
#
# CPU selection
#
CONFIG_CPU_MIPS32=y
# CONFIG_CPU_MIPS64 is not set
# CONFIG_CPU_R3000 is not set
# CONFIG_CPU_TX39XX is not set
# CONFIG_CPU_VR41XX is not set
# CONFIG_CPU_R4300 is not set
# CONFIG_CPU_R4X00 is not set
# CONFIG_CPU_TX49XX is not set
# CONFIG_CPU_R5000 is not set
# CONFIG_CPU_R5432 is not set
# CONFIG_CPU_R6000 is not set
# CONFIG_CPU_NEVADA is not set
# CONFIG_CPU_R8000 is not set
# CONFIG_CPU_R10000 is not set
# CONFIG_CPU_RM7000 is not set
# CONFIG_CPU_RM9000 is not set
# CONFIG_CPU_SB1 is not set
CONFIG_PAGE_SIZE_4KB=y
# CONFIG_PAGE_SIZE_16KB is not set
# CONFIG_PAGE_SIZE_64KB is not set
CONFIG_CPU_HAS_PREFETCH=y
# CONFIG_VTAG_ICACHE is not set
# CONFIG_64BIT_PHYS_ADDR is not set
# CONFIG_CPU_ADVANCED is not set
CONFIG_CPU_HAS_LLSC=y
# CONFIG_CPU_HAS_LLDSCD is not set
# CONFIG_CPU_HAS_WB is not set
CONFIG_CPU_HAS_SYNC=y
#
# General setup
#
# CONFIG_CPU_LITTLE_ENDIAN is not set
# CONFIG_BINFMT_IRIX is not set
CONFIG_NET=y
# CONFIG_PCI_NAMES is not set
# CONFIG_ISA is not set
# CONFIG_TC is not set
# CONFIG_MCA is not set
# CONFIG_SBUS is not set
# CONFIG_HOTPLUG is not set
# CONFIG_PCMCIA is not set
# CONFIG_HOTPLUG_PCI is not set
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_SYSCTL is not set
CONFIG_KCORE_ELF=y
# CONFIG_KCORE_AOUT is not set
# CONFIG_BINFMT_AOUT is not set
CONFIG_BINFMT_ELF=y
# CONFIG_MIPS32_COMPAT is not set
# CONFIG_MIPS32_O32 is not set
# CONFIG_MIPS32_N32 is not set
# CONFIG_BINFMT_ELF32 is not set
# CONFIG_BINFMT_MISC is not set
# CONFIG_OOM_KILLER is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play configuration
#
# CONFIG_PNP is not set
# CONFIG_ISAPNP is not set
#
# Block devices
#
CONFIG_BLK_DEV_FD=y
# CONFIG_BLK_DEV_XD is not set
# CONFIG_PARIDE is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_CISS_SCSI_TAPE is not set
# CONFIG_CISS_MONITOR_THREAD is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_BLK_STATS is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_MD_LINEAR is not set
# CONFIG_MD_RAID0 is not set
# CONFIG_MD_RAID1 is not set
# CONFIG_MD_RAID5 is not set
# CONFIG_MD_MULTIPATH is not set
# CONFIG_BLK_DEV_LVM is not set
#
# Networking options
#
# CONFIG_PACKET is not set
CONFIG_NETLINK_DEV=y
# CONFIG_NETFILTER is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
#
# Appletalk devices
#
# CONFIG_DEV_APPLETALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_LLC is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
#
# Telephony Support
#
# CONFIG_PHONE is not set
# CONFIG_PHONE_IXJ is not set
# CONFIG_PHONE_IXJ_PCMCIA is not set
#
# ATA/IDE/MFM/RLL support
#
# CONFIG_IDE is not set
# CONFIG_BLK_DEV_IDE_MODES is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI support
#
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SD_EXTRA_DEVS=40
# CONFIG_CHR_DEV_ST is not set
# CONFIG_CHR_DEV_OSST is not set
# CONFIG_BLK_DEV_SR is not set
# CONFIG_CHR_DEV_SG is not set
# CONFIG_SCSI_DEBUG_QUEUES is not set
# CONFIG_SCSI_MULTI_LUN is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
#
# SCSI low-level drivers
#
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_7000FASST is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AHA1740 is not set
# CONFIG_SCSI_AACRAID is not set
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC79XX is not set
# CONFIG_SCSI_AIC7XXX_OLD is not set
# CONFIG_SCSI_DPT_I2O is not set
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_SCSI_MEGARAID is not set
# CONFIG_SCSI_MEGARAID2 is not set
# CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_CPQFCTS is not set
# CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_DTC3280 is not set
# CONFIG_SCSI_EATA is not set
# CONFIG_SCSI_EATA_DMA is not set
# CONFIG_SCSI_EATA_PIO is not set
# CONFIG_SCSI_FUTURE_DOMAIN is not set
# CONFIG_SCSI_GDTH is not set
# CONFIG_SCSI_GENERIC_NCR5380 is not set
# CONFIG_SCSI_INITIO is not set
# CONFIG_SCSI_INIA100 is not set
# CONFIG_SCSI_NCR53C406A is not set
# CONFIG_SCSI_NCR53C7xx is not set
# CONFIG_SCSI_SYM53C8XX_2 is not set
# CONFIG_SCSI_NCR53C8XX is not set
# CONFIG_SCSI_SYM53C8XX is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_PCI2000 is not set
# CONFIG_SCSI_PCI2220I is not set
# CONFIG_SCSI_PSI240I is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_QLOGIC_ISP is not set
# CONFIG_SCSI_QLOGIC_FC is not set
# CONFIG_SCSI_QLOGIC_1280 is not set
# CONFIG_SCSI_SIM710 is not set
# CONFIG_SCSI_SYM53C416 is not set
# CONFIG_SCSI_DC390T is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_U14_34F is not set
# CONFIG_SCSI_NSP32 is not set
# CONFIG_SCSI_DEBUG is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
# CONFIG_FUSION_BOOT is not set
# CONFIG_FUSION_ISENSE is not set
# CONFIG_FUSION_CTL is not set
# CONFIG_FUSION_LAN is not set
#
# IEEE 1394 (FireWire) support (EXPERIMENTAL)
#
# CONFIG_IEEE1394 is not set
#
# I2O device support
#
# CONFIG_I2O is not set
# CONFIG_I2O_PCI is not set
# CONFIG_I2O_BLOCK is not set
# CONFIG_I2O_LAN is not set
# CONFIG_I2O_SCSI is not set
# CONFIG_I2O_PROC is not set
#
# Network device support
#
CONFIG_NETDEVICES=y
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_SUNLANCE is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNBMAC is not set
# CONFIG_SUNQE is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
CONFIG_PCNET32=y
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_APRICOT is not set
# CONFIG_B44 is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
# CONFIG_EEPRO100 is not set
# CONFIG_EEPRO100_PIO is not set
# CONFIG_E100 is not set
# CONFIG_LNE390 is not set
# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
# CONFIG_8139CP is not set
# CONFIG_8139TOO is not set
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_SUNDANCE_MMIO is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_VIA_RHINE_MMIO is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_LAN_SAA9730 is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_MYRI_SBUS is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
# CONFIG_NET_FC is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Input core support
#
# CONFIG_INPUT is not set
# CONFIG_INPUT_KEYBDEV is not set
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_UINPUT is not set
#
# Character devices
#
# CONFIG_VT is not set
CONFIG_SERIAL=y
CONFIG_SERIAL_CONSOLE=y
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
# CONFIG_MOUSE is not set
#
# Joysticks
#
# CONFIG_INPUT_GAMEPORT is not set
# CONFIG_QIC02_TAPE is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_IPMI_PANIC_EVENT is not set
# CONFIG_IPMI_DEVICE_INTERFACE is not set
# CONFIG_IPMI_KCS is not set
# CONFIG_IPMI_WATCHDOG is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
# CONFIG_SCx200 is not set
# CONFIG_SCx200_GPIO is not set
# CONFIG_AMD_PM768 is not set
# CONFIG_NVRAM is not set
CONFIG_RTC=y
# CONFIG_MIPS_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
# CONFIG_AGP is not set
#
# Direct Rendering Manager (XFree86 DRI support)
#
# CONFIG_DRM is not set
#
# File systems
#
# CONFIG_QUOTA is not set
# CONFIG_QFMT_V2 is not set
CONFIG_AUTOFS_FS=y
# CONFIG_AUTOFS4_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BEFS_DEBUG is not set
# CONFIG_BFS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
# CONFIG_JBD_DEBUG is not set
# CONFIG_FAT_FS is not set
# CONFIG_MSDOS_FS is not set
# CONFIG_UMSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_JFFS_FS is not set
# CONFIG_JFFS2_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_TMPFS is not set
CONFIG_RAMFS=y
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
# CONFIG_JFS_DEBUG is not set
# CONFIG_JFS_STATISTICS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
# CONFIG_DEVFS_FS is not set
# CONFIG_DEVFS_MOUNT is not set
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_XFS_FS is not set
# CONFIG_XFS_QUOTA is not set
# CONFIG_XFS_RT is not set
# CONFIG_XFS_TRACE is not set
# CONFIG_XFS_DEBUG is not set
#
# Network File Systems
#
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_DIRECTIO is not set
CONFIG_ROOT_NFS=y
# CONFIG_NFSD is not set
# CONFIG_NFSD_V3 is not set
# CONFIG_NFSD_TCP is not set
CONFIG_SUNRPC=y
CONFIG_LOCKD=y
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
# CONFIG_NCPFS_PACKET_SIGNING is not set
# CONFIG_NCPFS_IOCTL_LOCKING is not set
# CONFIG_NCPFS_STRONG is not set
# CONFIG_NCPFS_NFS_NS is not set
# CONFIG_NCPFS_OS2_NS is not set
# CONFIG_NCPFS_SMALLDOS is not set
# CONFIG_NCPFS_NLS is not set
# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
# CONFIG_SMB_NLS is not set
# CONFIG_NLS is not set
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# Support for USB gadgets
#
# CONFIG_USB_GADGET is not set
#
# Bluetooth support
#
# CONFIG_BLUEZ is not set
#
# Kernel hacking
#
CONFIG_CROSSCOMPILE=y
# CONFIG_RUNTIME_DEBUG is not set
# CONFIG_KGDB is not set
# CONFIG_GDB_CONSOLE is not set
CONFIG_DEBUG_INFO=y
# CONFIG_MAGIC_SYSRQ is not set
# CONFIG_MIPS_UNCACHED is not set
CONFIG_LOG_BUF_SHIFT=0
#
# Cryptographic options
#
# CONFIG_CRYPTO is not set
#
# Library routines
#
# CONFIG_CRC32 is not set
# CONFIG_ZLIB_INFLATE is not set
# CONFIG_ZLIB_DEFLATE is not set
^ permalink raw reply
* Re: 2.6.2-rc2-bk1 oopses on boot (ACPI patch)
From: Alessandro Suardi @ 2004-01-28 3:40 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-kernel, linux-acpi, Andrew Morton, Dominik Brodowski,
Dave Jones
In-Reply-To: <Pine.LNX.4.58.0401271859140.10794@home.osdl.org>
Linus Torvalds wrote:
>
> On Wed, 28 Jan 2004, Alessandro Suardi wrote:
>
>>Already reported, but I'll do so once again, since it looks like
>> in a short while I won't be able to boot official kernels in my
>> current config...
>>
>> http://www.ussg.iu.edu/hypermail/linux/kernel/0312.3/0442.html
>
>
> Can you make adjust_jiffies() print out its arguments (it's in
> drivers/cpufreq/cpufreq.c).
>
> It looks like cpufreq_scale() gets a divide-by-zero or an overflow on one
> of
>
> l_p_j_ref, l_p_j_ref_freq, ci->new
>
> and just printing out those values would be interesting.
Assuming the late hour (hmm, early by now) hasn't crossed my
eyes entirely the three above entities are %lu, %u, %u... so
this line
printk("CPUFREQ DEBUG: [%lu] [%u] [%u]\n", l_p_j_ref, l_p_j_ref_freq, ci->new);
as both first and last instruction in adjust_jiffies() turns
up the same values, which are 1773568, 1, 0.
Side-note, since master penguin is looking... after the oops
all SysRq stuff keeps working - except Alt-SysRq-B; the atkbd.c
code tells me the keyboard says "too many keys pressed". K, T,
P just do their job fine.
(yeah, okay, Alt-SysRq-O prints Power Off but obviously doesn't).
Thanks,
--alessandro
"Two rivers run too deep
The seasons change and so do I"
(U2, "Indian Summer Sky")
^ permalink raw reply
* 64 bit bus access on a customed MPC8245 board
From: Shawn Jin @ 2004-01-28 3:47 UTC (permalink / raw)
To: linux-mtd
[-- Attachment #1: Type: text/plain, Size: 1348 bytes --]
Hi,
I'm working on a customed MPC8245 board with flash
chip Am29LV320 and trying to enable MTD driver
support.
The configuration is 32 bit bus width in each chip
with 2 chips interleaved. So CONFIG_MTD_CFI_B8 and
CONFIG_MTD_CFI_I2 are defined.
MPC8245 requires the following memory mapping:
bank 0: 0xFF800000 - 0xFFFFFFFF
bank 1: 0xFF000000 - 0xFF7FFFFF
I noticed that FPU must be enabled for 64-bit
read/write from/to flash.
I use read64() and write64() functions in the
attachment, which are copied from sbc8240.c. However
no chip can be found. Any suggestions? Thank you very
much.
The message is shown below.
mpc8245:Probing 0x00800000 at 0xff800000
mpc8245_write64 adr 0xff800000 data 0x000000f0000000f0
mpc8245_write64 adr 0xff8002a8 data 0x0000009800000098
mpc8245_read64 ofs 0xff800080 result
0xffffffffffffffff
CFI: Found no mpc8245 Flash Bank #0 device at location
zero
mpc8245:Probing 0x00800000 at 0xff000000
mpc8245_write64 adr 0xff000000 data 0x000000f0000000f0
mpc8245_write64 adr 0xff0002a8 data 0x0000009800000098
mpc8245_read64 ofs 0xff000080 result
0xffffffffffffffff
CFI: Found no MPC8245 Flash Bank #1 device at location
zero
mpc8245:No suppported flash chips found!
-Shawn.
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!
http://webhosting.yahoo.com/ps/sb/
[-- Attachment #2: flash.c --]
[-- Type: application/octet-stream, Size: 1782 bytes --]
__u64 mpc8245_read64(struct map_info *map, unsigned long ofs)
{
unsigned long flags, msr, saved_msr;
volatile unsigned long *p;
save_flags(flags);
cli();
/* turn off floating point unavailable exceptions */
__asm__ __volatile__ (
"mfmsr %0"
: "=r" (msr) :);
saved_msr = msr;
msr |= MSR_FP;
msr &= ~(MSR_FE0 | MSR_FE1);
__asm__ __volatile__ (
"mtmsr %0\n"
"isync\n"
: : "r" (msr));
/* read the data via a floating point register */
ofs = map->map_priv_1 + ofs;
p = (unsigned long *) &result64;
__asm__ __volatile__ (
"lfd 1,0(%1)\n"
"stfd 1,0(%0)\n"
: : "r" (p), "r" (ofs)
);
/* restore state */
__asm__ __volatile__ (
"mtmsr %0\n"
"isync\n"
: : "r" (saved_msr));
restore_flags(flags);
p = (unsigned long *) &result64;
debugk("mpc8245_read64 ofs 0x%x result 0x%08x%08x\n", ofs, *p, *(p+1));
return result64;
}
void mpc8245_write64(struct map_info *map, __u64 d, unsigned long adr)
{
unsigned long long tmp;
unsigned long flags, msr, saved_msr, *p;
volatile long saved_fr[2];
save_flags(flags);
cli();
/* turn off floating point unavailable exceptions */
__asm__ __volatile__ (
"mfmsr %0"
: "=r" (msr) :);
saved_msr = msr;
msr |= MSR_FP;
msr &= ~(MSR_FE0 | MSR_FE1);
__asm__ __volatile__ (
"mtmsr %0\n"
"isync\n"
: : "r" (msr));
/* write the data via a floating point register */
tmp = d;
p = (unsigned long *) &tmp;
adr = map->map_priv_1 + adr;
debugk("mpc8245_write64 adr 0x%x data 0x%08x%08x\n", adr, *p, *(p+1));
__asm__ __volatile__ (
"stfd 1,0(%2)\n"
"lfd 1,0(%0)\n"
"stfd 1,0(%1)\n"
"lfd 1,0(%2)\n"
: : "r" (p), "r" (adr), "b" (saved_fr)
);
/* restore state */
__asm__ __volatile__ (
"mtmsr %0\n"
"isync\n"
: : "r" (saved_msr));
restore_flags(flags);
}
^ permalink raw reply
* Notification of Removed Attachment - please read for details
From: SAS Postmaster 62 @ 2004-01-28 3:48 UTC (permalink / raw)
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
NotificationRecipient, postmaster62-LVvIjLR0h5w
Please read this notification carefully. Almost certainly, you need *not* contact your Help Desk at this time.
An attachment was removed because it was of a type prohibited by our email policies. If a business need exists to transfer this file type by email, the sender/recipient within SAS should refer to http://sww.sas.com/helpdesk/pc/EmailAttachmentPolicy.htm.
This notification does not necessarily mean that a virus-infected attachment was removed. However, the type of file that was being emailed is one that is, unfortunately, commonly used to transfer viruses. It is our policy to restrict the free flow of this type of attachment via email in order to protect ourselves and our external customers from the damage that can be caused by viruses that are sometimes transported in these files.
++++++++++++++++++++++++++++++++++++++
Sender: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Recipient(s): larry.isaacs-LVvIjLR0h5w@public.gmane.org
Received: Tue Jan 27 22:48:43 2004
Subject of Message:
Attachment file name: document.scr:HEADER
Action on Attachment: STRIP
++++++++++++++++++++++++++++++++++++++
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.