* Re: [Qemu-devel] qemu-fast
From: Jim C. Brown @ 2004-07-01 1:22 UTC (permalink / raw)
To: qemu-devel
In-Reply-To: <200406302009.17188.menola@sbcglobal.net>
On Wed, Jun 30, 2004 at 08:09:17PM -0500, Joe Menola wrote:
> If I go thru the modify config/compile scene will win98 run in qemu-fast mode?
>
What would you modify/config/compile? I thought win98 was only available in
binary form. Or perhaps you have something that I don't have. ;):):)
--
Infinite complexity begets infinite beauty.
Infinite precision begets infinite perfection.
^ permalink raw reply
* Re: A problem with a large static arp table
From: Rusty Russell @ 2004-07-01 1:12 UTC (permalink / raw)
To: Roman Zagustin; +Cc: netdev
In-Reply-To: <1835705734.20040630181449@techas.lt>
On Thu, 2004-07-01 at 01:14, Roman Zagustin wrote:
> Hello!
Hi,
Not really my area; pinging netdev to see if they can help.
> I have a router with >800 static ip/mac records.
> It does not work :(
> With small table it is fine.
> The kernel is 2.6 (tried with different patches and versions
> 2.4 - the same)
>
> Just for example(real):
>
> root@stargate:/proc/sys/net/ipv4/neigh/default# arp -n|grep 172.16.3.230
> 172.16.3.230 ether 00:50:04:6C:50:9E CM eth3
> root@stargate:/proc/sys/net/ipv4/neigh/default#
> root@stargate:/proc/sys/net/ipv4/neigh/default# tcpdump -i eth3 host 172.16.3.230 -e
> tcpdump: listening on eth3
> 15:38:10.660144 0:6:29:ee:c3:d8 0:2:b3:b4:34:e2 ip 448: 172.16.3.230.1060 > medium.cs.microlink.lt.http: P 1268207798:1268208192(394) ack 3537529644 win 64240 (DF)
> 15:38:10.674698 0:6:29:ee:c3:d8 0:2:b3:b4:34:e2 ip 453: 172.16.3.230.1077 > medium.cs.microlink.lt.http: P 1279539300:1279539699(399) ack 2683450794 win 63095 (DF)
>
> There are no errors/warnings in the log files about neighbour table.
>
> >From the server I can't ping the 172.16.3.230, but it can ping the
> server. In general, server do not check the ip/mac table at all
> when forwarding received packets.
>
> I don't know where is the problem :(
--
Anyone who quotes me in their signature is an idiot -- Rusty Russell
^ permalink raw reply
* Re: [Qemu-devel] qemu-fast
From: Joe Menola @ 2004-07-01 1:09 UTC (permalink / raw)
To: qemu-devel
In-Reply-To: <20040701005009.GA28651@jbrown.mylinuxbox.org>
On Wed June 30 2004 7:50 pm, Jim C. Brown wrote:
> On Wed, Jun 30, 2004 at 07:34:38PM -0500, Joe Menola wrote:
> > I just installed Qemu last night. After reading the user doc and some
> > recent mailing list postings I've managed to create a raw drive image, 2
> > of them actually... one to install win98 in and one to hold my win95 cd
> > files for proof of upgrade eligibility.
> > I booted from a win98 start disk and I'll be damned if 98 isn't
> > installing as I type. This is WAAAAAAAAAAAAAAAAAY cool. :)
> > Kinda slow though, which leads to my question... the user doc states that
> > a patch is available for 2.6 kernels for enabling qemu-fast support. The
> > doc states that it can be found "in the QEMU source archive".
> > What I can't seem to locate is, the QEMU source archive. Any one have a
> > link or sense of direction?
> >
> > Thanks in advance, and thanks for such a nifty application.
> >
> > -jm
>
> Those patches only work when using linux 2.6 kernel as a guest OS. It won't
> help you run Windows 98 with qemu-fast. (On the plus side you can run
> qemu-fast w/o needing to recompile your host OS kernel :)
I see, well at least there's a plus side :). I plan to play with Linux distros
also, so this will come in handy anyway.
If I go thru the modify config/compile scene will win98 run in qemu-fast mode?
>
> That said, *I think* you can get those patches here, but am not sure if
> these are the right ones:
>
> http://lists.gnu.org/archive/html/qemu-devel/2003-12/msg00020.html
> http://lists.gnu.org/archive/html/qemu-devel/2004-01/msg00014.html
>
Looks like the right stuff to me, thanks a ton.
-jm
^ permalink raw reply
* [U-Boot-Users] write_via_fpu() doesn't work?
From: Shawn @ 2004-07-01 1:11 UTC (permalink / raw)
To: u-boot
In-Reply-To: <20040701002418.23575.qmail@web20706.mail.yahoo.com>
OK, I found the reason.
> I'm debugging the flash_init(), which is ported from SL8245. Through
> the
> following three lines of code, it always gets wrong result.
> write_via_fpu (&addr[0xaaa8], precmd0);
> write_via_fpu (&addr[0x5550], precmd1);
> write_via_fpu (&addr[0xaaa8], cmdid);
It should be 0x2aaa because the pointer is long type.
-Shawn.
__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail
^ permalink raw reply
* Re: how to redirect certain IPs to specific url
From: Ian Holsman @ 2004-07-01 1:11 UTC (permalink / raw)
To: Askar Ali Khan; +Cc: netfilter
In-Reply-To: <a0f69e504063000446f514e22@mail.gmail.com>
Hi.
If your running a apache webserver you can do this via re-write rules
check out http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html
something like
rewriteengine on
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule ...some special stuff for any of these hosts...
On Wed, 30 Jun 2004 12:44:09 +0500, Askar Ali Khan <askarali@gmail.com> wrote:
>
> hi
> got a very simple question, i want to redirect certain IPs(clients)
> request to a specific URL (ip)?
> and also later on how to Flush the specific rule from the the chain as
> -A will append it on the bottom, how i will delete it ?
>
> thanks
>
>
^ permalink raw reply
* Re: A question about PROT_NONE on ARM and ARM26
From: Nicolas Pitre @ 2004-07-01 1:05 UTC (permalink / raw)
To: Jamie Lokier; +Cc: Ian Molton, linux-arm-kernel, lkml
In-Reply-To: <20040630233014.GC32560@mail.shareable.org>
On Thu, 1 Jul 2004, Jamie Lokier wrote:
> Russell King wrote:
> > Ok, this could work, but there's one gotcha - TASK_SIZE-4 doesn't fit
> > in an 8-bit rotated constants, so we need 2 extra instructions:
> >
> > __get_user_4:
> > mov r1, #TASK_SIZE
> > sub r1, r1, #4
> > cmp r0, r1
> > 4: ldrlet r1, [r0]
> > movle r0, #0
> > movle pc, lr
> > ...
>
> One more possibility:
>
> cmp r0, #(TASK_SIZE - (1<<24))
>
> I.e. just compare against the largest constant that can be
> represented. For accesses to the last part of userspace, it's a
> penalty of 4 instructions -- but it might work out to be a net gain.
Maybe not. The user stack is located at the top so any user buffer
allocated on the stack would be penalized.
Nicolas
^ permalink raw reply
* Re: Hard errors, trying to recover
From: Redeeman @ 2004-07-01 1:04 UTC (permalink / raw)
To: Reiserfs Mailinglist
In-Reply-To: <200406302142.05828.kris@xn--khntopp-90a.de>
On Wed, 2004-06-30 at 21:42 +0200, Kristian Köhntopp wrote:
> On Wednesday 30 June 2004 17:59, Vitaly Fertman wrote:
> > you probably used some old reiserfsprogs.
>
> Suse Linux 9.0 with all patches, reiserfsck identifies itself as
>
> white:~ # reiserfsck -V
> reiserfsck 3.6.9 (2003 www.namesys.com)
which is also very old, as 2.6.17 exists
>
> Kristian
>
--
Redeeman <redeeman@metanurb.dk>
^ permalink raw reply
* Re: compat_sys_adjtimex
From: Arun Sharma @ 2004-07-01 1:03 UTC (permalink / raw)
To: Paul Mackerras; +Cc: David S. Miller, linux-arch
In-Reply-To: <16611.20590.297525.314297@cargo.ozlabs.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 936 bytes --]
On 6/30/2004 4:44 PM, Paul Mackerras wrote:
> David S. Miller writes:
>> On Wed, 30 Jun 2004 12:03:43 -0700
>> Arun Sharma <arun.sharma@intel.com> wrote:
>>
>> > This system call seems to be duplicated in many architectures. Here's
>> > a patch which moves it to kernel/compat.c
>> >
>> > We didn't touch ppc64, because it seems to be different. We've tested
>> > this on ia64 with LTP.
>>
>> PPC64 just wants some kind of callback invoked right after the
>> do_adjtimex() call, it should be possible to provide a "do-nothing"
>> macro in linux/compat.h that ppc can override in asm/compat.h
>
> That code we have in ppc64 is about 10 times too clever to be allowed
> to live. It was basically trying to avoid the overhead of the rwlock
> back in the days when xtime was protected by an rwlock. Now that we
> have seqlocks we could (and should :) get rid of it.
ok, the function has been eliminated from ppc64 as well.
-Arun
[-- Attachment #2: compat_sys_adjtimex.2.patch --]
[-- Type: text/plain, Size: 31777 bytes --]
This patch moves sys32_adjtimex in 7 archs up to kernel/compat.c.
Signed-off-by: Gordon Jin <gordon.jin@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@intel.com>
---
arch/ia64/ia32/ia32_entry.S | 2
arch/ia64/ia32/sys_ia32.c | 74 -----------------------------------
arch/mips/kernel/linux32.c | 73 -----------------------------------
arch/mips/kernel/scall64-n32.S | 2
arch/mips/kernel/scall64-o32.S | 2
arch/parisc/kernel/sys_parisc32.c | 58 ---------------------------
arch/parisc/kernel/syscall_table.S | 2
arch/ppc64/kernel/misc.S | 2
arch/ppc64/kernel/sys_ppc32.c | 77 -------------------------------------
arch/s390/kernel/compat_linux.c | 73 -----------------------------------
arch/s390/kernel/compat_wrapper.S | 8 +--
arch/s390/kernel/syscalls.S | 2
arch/sparc64/kernel/sys_sparc32.c | 73 -----------------------------------
arch/sparc64/kernel/systbls.S | 2
arch/x86_64/ia32/ia32entry.S | 2
arch/x86_64/ia32/sys_ia32.c | 76 ------------------------------------
include/linux/compat.h | 15 +++++++
kernel/compat.c | 58 +++++++++++++++++++++++++++
18 files changed, 85 insertions(+), 516 deletions(-)
diff -purN linux-2.6.7/arch/ia64/ia32/ia32_entry.S linux-2.6.7-adjtimex/arch/ia64/ia32/ia32_entry.S
--- linux-2.6.7/arch/ia64/ia32/ia32_entry.S 2004-06-23 17:29:15.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/ia64/ia32/ia32_entry.S 2004-06-30 09:26:24.000000000 +0800
@@ -332,7 +332,7 @@ ia32_syscall_table:
data8 sys_setdomainname
data8 sys32_newuname
data8 sys32_modify_ldt
- data8 sys_ni_syscall /* adjtimex */
+ data8 compat_sys_adjtimex
data8 sys32_mprotect /* 125 */
data8 compat_sys_sigprocmask
data8 sys_ni_syscall /* create_module */
diff -purN linux-2.6.7/arch/ia64/ia32/sys_ia32.c linux-2.6.7-adjtimex/arch/ia64/ia32/sys_ia32.c
--- linux-2.6.7/arch/ia64/ia32/sys_ia32.c 2004-06-23 17:29:15.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/ia64/ia32/sys_ia32.c 2004-06-30 09:56:09.000000000 +0800
@@ -2199,78 +2199,4 @@ sys32_setresgid(compat_gid_t rgid, compa
ssgid = (sgid == (compat_gid_t)-1) ? ((gid_t)-1) : ((gid_t)sgid);
return sys_setresgid(srgid, segid, ssgid);
}
-
-/* Handle adjtimex compatibility. */
-
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-
-asmlinkage long
-sys32_adjtimex(struct timex32 *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if(get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- if(put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
#endif /* NOTYET */
diff -purN linux-2.6.7/arch/mips/kernel/linux32.c linux-2.6.7-adjtimex/arch/mips/kernel/linux32.c
--- linux-2.6.7/arch/mips/kernel/linux32.c 2004-06-17 15:55:28.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/mips/kernel/linux32.c 2004-06-30 10:49:51.000000000 +0800
@@ -1257,79 +1257,6 @@ out:
return err;
}
-/* Handle adjtimex compatibility. */
-
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-
-asmlinkage int sys32_adjtimex(struct timex32 *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if (get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- if (put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
-
asmlinkage int sys32_sendfile(int out_fd, int in_fd, compat_off_t *offset,
s32 count)
{
diff -purN linux-2.6.7/arch/mips/kernel/scall64-n32.S linux-2.6.7-adjtimex/arch/mips/kernel/scall64-n32.S
--- linux-2.6.7/arch/mips/kernel/scall64-n32.S 2004-06-17 15:55:28.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/mips/kernel/scall64-n32.S 2004-06-30 10:50:59.000000000 +0800
@@ -271,7 +271,7 @@ EXPORT(sysn32_call_table)
PTR sys_pivot_root
PTR sys32_sysctl
PTR sys_prctl
- PTR sys32_adjtimex
+ PTR compat_sys_adjtimex
PTR compat_sys_setrlimit /* 6155 */
PTR sys_chroot
PTR sys_sync
diff -purN linux-2.6.7/arch/mips/kernel/scall64-o32.S linux-2.6.7-adjtimex/arch/mips/kernel/scall64-o32.S
--- linux-2.6.7/arch/mips/kernel/scall64-o32.S 2004-06-17 15:55:28.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/mips/kernel/scall64-o32.S 2004-06-30 10:51:51.000000000 +0800
@@ -382,7 +382,7 @@ out: jr ra
sys sys_setdomainname 2
sys sys32_newuname 1
sys sys_ni_syscall 0 /* sys_modify_ldt */
- sys sys32_adjtimex 1
+ sys compat_sys_adjtimex 1
sys sys_mprotect 3 /* 4125 */
sys compat_sys_sigprocmask 3
sys sys_ni_syscall 0 /* was creat_module */
diff -purN linux-2.6.7/arch/parisc/kernel/syscall_table.S linux-2.6.7-adjtimex/arch/parisc/kernel/syscall_table.S
--- linux-2.6.7/arch/parisc/kernel/syscall_table.S 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/parisc/kernel/syscall_table.S 2004-06-30 10:59:10.000000000 +0800
@@ -207,7 +207,7 @@
/* struct sockaddr... */
ENTRY_SAME(recvfrom)
/* struct timex contains longs */
- ENTRY_DIFF(adjtimex)
+ ENTRY_COMP(adjtimex)
ENTRY_SAME(mprotect) /* 125 */
/* old_sigset_t forced to 32 bits. Beware glibc sigset_t */
ENTRY_COMP(sigprocmask)
diff -purN linux-2.6.7/arch/parisc/kernel/sys_parisc32.c linux-2.6.7-adjtimex/arch/parisc/kernel/sys_parisc32.c
--- linux-2.6.7/arch/parisc/kernel/sys_parisc32.c 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/parisc/kernel/sys_parisc32.c 2004-06-30 10:58:14.000000000 +0800
@@ -585,64 +585,6 @@ asmlinkage int sys32_sendfile64(int out_
return ret;
}
-
-struct timex32 {
- unsigned int modes; /* mode selector */
- int offset; /* time offset (usec) */
- int freq; /* frequency offset (scaled ppm) */
- int maxerror; /* maximum error (usec) */
- int esterror; /* estimated error (usec) */
- int status; /* clock command/status */
- int constant; /* pll time constant */
- int precision; /* clock precision (usec) (read only) */
- int tolerance; /* clock frequency tolerance (ppm)
- * (read only)
- */
- struct compat_timeval time; /* (read only) */
- int tick; /* (modified) usecs between clock ticks */
-
- int ppsfreq; /* pps frequency (scaled ppm) (ro) */
- int jitter; /* pps jitter (us) (ro) */
- int shift; /* interval duration (s) (shift) (ro) */
- int stabil; /* pps stability (scaled ppm) (ro) */
- int jitcnt; /* jitter limit exceeded (ro) */
- int calcnt; /* calibration intervals (ro) */
- int errcnt; /* calibration errors (ro) */
- int stbcnt; /* stability limit exceeded (ro) */
-
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
- int :32; int :32; int :32; int :32;
-};
-
-asmlinkage long sys32_adjtimex(struct timex32 *txc_p32)
-{
- struct timex txc;
- struct timex32 t32;
- int ret;
- extern int do_adjtimex(struct timex *txc);
-
- if(copy_from_user(&t32, txc_p32, sizeof(struct timex32)))
- return -EFAULT;
-#undef CP
-#define CP(x) txc.x = t32.x
- CP(modes); CP(offset); CP(freq); CP(maxerror); CP(esterror);
- CP(status); CP(constant); CP(precision); CP(tolerance);
- CP(time.tv_sec); CP(time.tv_usec); CP(tick); CP(ppsfreq); CP(jitter);
- CP(shift); CP(stabil); CP(jitcnt); CP(calcnt); CP(errcnt);
- CP(stbcnt);
- ret = do_adjtimex(&txc);
-#undef CP
-#define CP(x) t32.x = txc.x
- CP(modes); CP(offset); CP(freq); CP(maxerror); CP(esterror);
- CP(status); CP(constant); CP(precision); CP(tolerance);
- CP(time.tv_sec); CP(time.tv_usec); CP(tick); CP(ppsfreq); CP(jitter);
- CP(shift); CP(stabil); CP(jitcnt); CP(calcnt); CP(errcnt);
- CP(stbcnt);
- return copy_to_user(txc_p32, &t32, sizeof(struct timex32)) ? -EFAULT : ret;
-}
-
-
struct sysinfo32 {
s32 uptime;
u32 loads[3];
diff -purN linux-2.6.7/arch/ppc64/kernel/misc.S linux-2.6.7-adjtimex/arch/ppc64/kernel/misc.S
--- linux-2.6.7/arch/ppc64/kernel/misc.S 2004-06-17 15:55:33.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/ppc64/kernel/misc.S 2004-07-01 08:38:53.050665105 +0800
@@ -730,7 +730,7 @@ _GLOBAL(sys_call_table32)
.llong .sys32_setdomainname
.llong .ppc64_newuname
.llong .sys_ni_syscall /* old modify_ldt syscall */
- .llong .sys32_adjtimex
+ .llong .compat_sys_adjtimex
.llong .sys_mprotect /* 125 */
.llong .compat_sys_sigprocmask
.llong .sys_ni_syscall /* old create_module syscall */
diff -purN linux-2.6.7/arch/ppc64/kernel/sys_ppc32.c linux-2.6.7-adjtimex/arch/ppc64/kernel/sys_ppc32.c
--- linux-2.6.7/arch/ppc64/kernel/sys_ppc32.c 2004-06-17 15:55:33.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/ppc64/kernel/sys_ppc32.c 2004-07-01 08:37:23.925666197 +0800
@@ -274,83 +274,6 @@ asmlinkage long sys32_sysfs(u32 option,
return sys_sysfs((int)option, arg1, arg2);
}
-/* Handle adjtimex compatibility. */
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-extern void ppc_adjtimex(void);
-
-asmlinkage long sys32_adjtimex(struct timex32 __user *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if(get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- /* adjust the conversion of TB to time of day to track adjtimex */
- ppc_adjtimex();
-
- if(put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
-
-
/* These are here just in case some old sparc32 binary calls it. */
asmlinkage long sys32_pause(void)
{
diff -purN linux-2.6.7/arch/s390/kernel/compat_linux.c linux-2.6.7-adjtimex/arch/s390/kernel/compat_linux.c
--- linux-2.6.7/arch/s390/kernel/compat_linux.c 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/s390/kernel/compat_linux.c 2004-06-30 11:05:47.000000000 +0800
@@ -916,79 +916,6 @@ asmlinkage long sys32_sendfile64(int out
return ret;
}
-/* Handle adjtimex compatibility. */
-
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-
-asmlinkage long sys32_adjtimex(struct timex32 *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if(get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- if(put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
-
struct __sysctl_args32 {
u32 name;
int nlen;
diff -purN linux-2.6.7/arch/s390/kernel/compat_wrapper.S linux-2.6.7-adjtimex/arch/s390/kernel/compat_wrapper.S
--- linux-2.6.7/arch/s390/kernel/compat_wrapper.S 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/s390/kernel/compat_wrapper.S 2004-06-30 11:11:00.000000000 +0800
@@ -547,10 +547,10 @@ sys32_newuname_wrapper:
llgtr %r2,%r2 # struct new_utsname *
jg s390x_newuname # branch to system call
- .globl sys32_adjtimex_wrapper
-sys32_adjtimex_wrapper:
- llgtr %r2,%r2 # struct timex_emu31 *
- jg sys32_adjtimex # branch to system call
+ .globl compat_sys_adjtimex_wrapper
+compat_sys_adjtimex_wrapper:
+ llgtr %r2,%r2 # struct compat_timex *
+ jg compat_sys_adjtimex # branch to system call
.globl sys32_mprotect_wrapper
sys32_mprotect_wrapper:
diff -purN linux-2.6.7/arch/s390/kernel/syscalls.S linux-2.6.7-adjtimex/arch/s390/kernel/syscalls.S
--- linux-2.6.7/arch/s390/kernel/syscalls.S 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/s390/kernel/syscalls.S 2004-06-30 11:11:54.000000000 +0800
@@ -132,7 +132,7 @@ SYSCALL(sys_clone_glue,sys_clone_glue,sy
SYSCALL(sys_setdomainname,sys_setdomainname,sys32_setdomainname_wrapper)
SYSCALL(sys_newuname,s390x_newuname,sys32_newuname_wrapper)
NI_SYSCALL /* modify_ldt for i386 */
-SYSCALL(sys_adjtimex,sys_adjtimex,sys32_adjtimex_wrapper)
+SYSCALL(sys_adjtimex,sys_adjtimex,compat_sys_adjtimex_wrapper)
SYSCALL(sys_mprotect,sys_mprotect,sys32_mprotect_wrapper) /* 125 */
SYSCALL(sys_sigprocmask,sys_sigprocmask,compat_sys_sigprocmask_wrapper)
NI_SYSCALL /* old "create module" */
diff -purN linux-2.6.7/arch/sparc64/kernel/sys_sparc32.c linux-2.6.7-adjtimex/arch/sparc64/kernel/sys_sparc32.c
--- linux-2.6.7/arch/sparc64/kernel/sys_sparc32.c 2004-06-17 15:55:29.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/sparc64/kernel/sys_sparc32.c 2004-06-30 11:13:30.000000000 +0800
@@ -1607,79 +1607,6 @@ asmlinkage long compat_sys_sendfile64(in
return ret;
}
-/* Handle adjtimex compatibility. */
-
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-
-asmlinkage long sys32_adjtimex(struct timex32 __user *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if (get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- if (put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
-
/* This is just a version for 32-bit applications which does
* not force O_LARGEFILE on.
*/
diff -purN linux-2.6.7/arch/sparc64/kernel/systbls.S linux-2.6.7-adjtimex/arch/sparc64/kernel/systbls.S
--- linux-2.6.7/arch/sparc64/kernel/systbls.S 2004-06-17 15:55:29.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/sparc64/kernel/systbls.S 2004-06-30 11:16:41.000000000 +0800
@@ -62,7 +62,7 @@ sys_call_table32:
/*200*/ .word sys32_ssetmask, sys_sigsuspend, compat_sys_newlstat, sys_uselib, old32_readdir
.word sys32_readahead, sys32_socketcall, sys32_syslog, sys32_lookup_dcookie, sys32_fadvise64
/*210*/ .word sys32_fadvise64_64, sys32_tgkill, sys32_waitpid, sys_swapoff, sys32_sysinfo
- .word sys32_ipc, sys32_sigreturn, sys_clone, sys_nis_syscall, sys32_adjtimex
+ .word sys32_ipc, sys32_sigreturn, sys_clone, sys_nis_syscall, compat_sys_adjtimex
/*220*/ .word sys32_sigprocmask, sys_ni_syscall, sys32_delete_module, sys_ni_syscall, sys32_getpgid
.word sys32_bdflush, sys32_sysfs, sys_nis_syscall, sys32_setfsuid16, sys32_setfsgid16
/*230*/ .word sys32_select, sys_time, sys_nis_syscall, sys_stime, compat_statfs64
diff -purN linux-2.6.7/arch/x86_64/ia32/ia32entry.S linux-2.6.7-adjtimex/arch/x86_64/ia32/ia32entry.S
--- linux-2.6.7/arch/x86_64/ia32/ia32entry.S 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/x86_64/ia32/ia32entry.S 2004-06-30 11:21:16.000000000 +0800
@@ -429,7 +429,7 @@ ia32_sys_call_table:
.quad sys_setdomainname
.quad sys_uname
.quad sys_modify_ldt
- .quad sys32_adjtimex
+ .quad compat_sys_adjtimex
.quad sys32_mprotect /* 125 */
.quad compat_sys_sigprocmask
.quad quiet_ni_syscall /* create_module */
diff -purN linux-2.6.7/arch/x86_64/ia32/sys_ia32.c linux-2.6.7-adjtimex/arch/x86_64/ia32/sys_ia32.c
--- linux-2.6.7/arch/x86_64/ia32/sys_ia32.c 2004-06-17 15:55:37.000000000 +0800
+++ linux-2.6.7-adjtimex/arch/x86_64/ia32/sys_ia32.c 2004-06-30 11:21:40.000000000 +0800
@@ -953,82 +953,6 @@ sys32_sendfile(int out_fd, int in_fd, co
return ret;
}
-/* Handle adjtimex compatibility. */
-
-struct timex32 {
- u32 modes;
- s32 offset, freq, maxerror, esterror;
- s32 status, constant, precision, tolerance;
- struct compat_timeval time;
- s32 tick;
- s32 ppsfreq, jitter, shift, stabil;
- s32 jitcnt, calcnt, errcnt, stbcnt;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
- s32 :32; s32 :32; s32 :32; s32 :32;
-};
-
-extern int do_adjtimex(struct timex *);
-
-asmlinkage long
-sys32_adjtimex(struct timex32 __user *utp)
-{
- struct timex txc;
- int ret;
-
- memset(&txc, 0, sizeof(struct timex));
-
- if(verify_area(VERIFY_READ, utp, sizeof(struct timex32)) ||
- __get_user(txc.modes, &utp->modes) ||
- __get_user(txc.offset, &utp->offset) ||
- __get_user(txc.freq, &utp->freq) ||
- __get_user(txc.maxerror, &utp->maxerror) ||
- __get_user(txc.esterror, &utp->esterror) ||
- __get_user(txc.status, &utp->status) ||
- __get_user(txc.constant, &utp->constant) ||
- __get_user(txc.precision, &utp->precision) ||
- __get_user(txc.tolerance, &utp->tolerance) ||
- __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __get_user(txc.tick, &utp->tick) ||
- __get_user(txc.ppsfreq, &utp->ppsfreq) ||
- __get_user(txc.jitter, &utp->jitter) ||
- __get_user(txc.shift, &utp->shift) ||
- __get_user(txc.stabil, &utp->stabil) ||
- __get_user(txc.jitcnt, &utp->jitcnt) ||
- __get_user(txc.calcnt, &utp->calcnt) ||
- __get_user(txc.errcnt, &utp->errcnt) ||
- __get_user(txc.stbcnt, &utp->stbcnt))
- return -EFAULT;
-
- ret = do_adjtimex(&txc);
-
- if(verify_area(VERIFY_WRITE, utp, sizeof(struct timex32)) ||
- __put_user(txc.modes, &utp->modes) ||
- __put_user(txc.offset, &utp->offset) ||
- __put_user(txc.freq, &utp->freq) ||
- __put_user(txc.maxerror, &utp->maxerror) ||
- __put_user(txc.esterror, &utp->esterror) ||
- __put_user(txc.status, &utp->status) ||
- __put_user(txc.constant, &utp->constant) ||
- __put_user(txc.precision, &utp->precision) ||
- __put_user(txc.tolerance, &utp->tolerance) ||
- __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
- __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
- __put_user(txc.tick, &utp->tick) ||
- __put_user(txc.ppsfreq, &utp->ppsfreq) ||
- __put_user(txc.jitter, &utp->jitter) ||
- __put_user(txc.shift, &utp->shift) ||
- __put_user(txc.stabil, &utp->stabil) ||
- __put_user(txc.jitcnt, &utp->jitcnt) ||
- __put_user(txc.calcnt, &utp->calcnt) ||
- __put_user(txc.errcnt, &utp->errcnt) ||
- __put_user(txc.stbcnt, &utp->stbcnt))
- ret = -EFAULT;
-
- return ret;
-}
-
asmlinkage long sys32_mmap2(unsigned long addr, unsigned long len,
unsigned long prot, unsigned long flags,
unsigned long fd, unsigned long pgoff)
diff -purN linux-2.6.7/include/linux/compat.h linux-2.6.7-adjtimex/include/linux/compat.h
--- linux-2.6.7/include/linux/compat.h 2004-06-17 15:55:53.000000000 +0800
+++ linux-2.6.7-adjtimex/include/linux/compat.h 2004-06-30 15:15:53.000000000 +0800
@@ -40,6 +40,19 @@ struct compat_tms {
compat_clock_t tms_cstime;
};
+struct compat_timex {
+ u32 modes;
+ s32 offset, freq, maxerror, esterror;
+ s32 status, constant, precision, tolerance;
+ struct compat_timeval time;
+ s32 tick;
+ s32 ppsfreq, jitter, shift, stabil;
+ s32 jitcnt, calcnt, errcnt, stbcnt;
+ s32 :32; s32 :32; s32 :32; s32 :32;
+ s32 :32; s32 :32; s32 :32; s32 :32;
+ s32 :32; s32 :32; s32 :32; s32 :32;
+};
+
#define _COMPAT_NSIG_WORDS (_COMPAT_NSIG / _COMPAT_NSIG_BPW)
typedef struct {
@@ -130,5 +143,7 @@ asmlinkage long compat_sys_select(int n,
compat_ulong_t __user *outp, compat_ulong_t __user *exp,
struct compat_timeval __user *tvp);
+asmlinkage long compat_sys_adjtimex(struct compat_timex *utp)
+
#endif /* CONFIG_COMPAT */
#endif /* _LINUX_COMPAT_H */
diff -purN linux-2.6.7/kernel/compat.c linux-2.6.7-adjtimex/kernel/compat.c
--- linux-2.6.7/kernel/compat.c 2004-06-17 15:56:05.000000000 +0800
+++ linux-2.6.7-adjtimex/kernel/compat.c 2004-06-30 15:13:38.000000000 +0800
@@ -170,6 +170,64 @@ asmlinkage long compat_sys_times(struct
return compat_jiffies_to_clock_t(jiffies);
}
+extern int do_adjtimex(struct timex *);
+
+asmlinkage long compat_sys_adjtimex(struct compat_timex *utp)
+{
+ struct timex txc;
+ int ret;
+
+ memset(&txc, 0, sizeof(struct timex));
+
+ if(get_user(txc.modes, &utp->modes) ||
+ __get_user(txc.offset, &utp->offset) ||
+ __get_user(txc.freq, &utp->freq) ||
+ __get_user(txc.maxerror, &utp->maxerror) ||
+ __get_user(txc.esterror, &utp->esterror) ||
+ __get_user(txc.status, &utp->status) ||
+ __get_user(txc.constant, &utp->constant) ||
+ __get_user(txc.precision, &utp->precision) ||
+ __get_user(txc.tolerance, &utp->tolerance) ||
+ __get_user(txc.time.tv_sec, &utp->time.tv_sec) ||
+ __get_user(txc.time.tv_usec, &utp->time.tv_usec) ||
+ __get_user(txc.tick, &utp->tick) ||
+ __get_user(txc.ppsfreq, &utp->ppsfreq) ||
+ __get_user(txc.jitter, &utp->jitter) ||
+ __get_user(txc.shift, &utp->shift) ||
+ __get_user(txc.stabil, &utp->stabil) ||
+ __get_user(txc.jitcnt, &utp->jitcnt) ||
+ __get_user(txc.calcnt, &utp->calcnt) ||
+ __get_user(txc.errcnt, &utp->errcnt) ||
+ __get_user(txc.stbcnt, &utp->stbcnt))
+ return -EFAULT;
+
+ ret = do_adjtimex(&txc);
+
+ if(put_user(txc.modes, &utp->modes) ||
+ __put_user(txc.offset, &utp->offset) ||
+ __put_user(txc.freq, &utp->freq) ||
+ __put_user(txc.maxerror, &utp->maxerror) ||
+ __put_user(txc.esterror, &utp->esterror) ||
+ __put_user(txc.status, &utp->status) ||
+ __put_user(txc.constant, &utp->constant) ||
+ __put_user(txc.precision, &utp->precision) ||
+ __put_user(txc.tolerance, &utp->tolerance) ||
+ __put_user(txc.time.tv_sec, &utp->time.tv_sec) ||
+ __put_user(txc.time.tv_usec, &utp->time.tv_usec) ||
+ __put_user(txc.tick, &utp->tick) ||
+ __put_user(txc.ppsfreq, &utp->ppsfreq) ||
+ __put_user(txc.jitter, &utp->jitter) ||
+ __put_user(txc.shift, &utp->shift) ||
+ __put_user(txc.stabil, &utp->stabil) ||
+ __put_user(txc.jitcnt, &utp->jitcnt) ||
+ __put_user(txc.calcnt, &utp->calcnt) ||
+ __put_user(txc.errcnt, &utp->errcnt) ||
+ __put_user(txc.stbcnt, &utp->stbcnt))
+ ret = -EFAULT;
+
+ return ret;
+}
+
/*
* Assumption: old_sigset_t and compat_old_sigset_t are both
* types that can be passed to put_user()/get_user().
^ permalink raw reply
* Re: [Qemu-devel] qemu-fast
From: Jim C. Brown @ 2004-07-01 0:50 UTC (permalink / raw)
To: qemu-devel
In-Reply-To: <200406301934.39253.menola@sbcglobal.net>
On Wed, Jun 30, 2004 at 07:34:38PM -0500, Joe Menola wrote:
> I just installed Qemu last night. After reading the user doc and some recent
> mailing list postings I've managed to create a raw drive image, 2 of them
> actually... one to install win98 in and one to hold my win95 cd files for
> proof of upgrade eligibility.
> I booted from a win98 start disk and I'll be damned if 98 isn't installing as
> I type. This is WAAAAAAAAAAAAAAAAAY cool. :)
> Kinda slow though, which leads to my question... the user doc states that a
> patch is available for 2.6 kernels for enabling qemu-fast support. The doc
> states that it can be found "in the QEMU source archive".
> What I can't seem to locate is, the QEMU source archive. Any one have a link
> or sense of direction?
>
> Thanks in advance, and thanks for such a nifty application.
>
> -jm
>
Those patches only work when using linux 2.6 kernel as a guest OS. It won't help
you run Windows 98 with qemu-fast. (On the plus side you can run qemu-fast w/o
needing to recompile your host OS kernel :)
That said, *I think* you can get those patches here, but am not sure if these
are the right ones:
http://lists.gnu.org/archive/html/qemu-devel/2003-12/msg00020.html
http://lists.gnu.org/archive/html/qemu-devel/2004-01/msg00014.html
>
> _______________________________________________
> Qemu-devel mailing list
> Qemu-devel@nongnu.org
> http://lists.nongnu.org/mailman/listinfo/qemu-devel
--
Infinite complexity begets infinite beauty.
Infinite precision begets infinite perfection.
^ permalink raw reply
* Re: SCSI synchronization and error handling
From: James Bottomley @ 2004-07-01 0:49 UTC (permalink / raw)
To: Jeff Garzik; +Cc: SCSI Mailing List
In-Reply-To: <40E317D9.80904@pobox.com>
On Wed, 2004-06-30 at 14:43, Jeff Garzik wrote:
> What's the best way to ensure that the SMART command is only executed
> after preceding, queued commands are completed? My guess is to return
> MLQUEUE_BUSY if (a) ->queuecommand is passed a non-queued command AND
> (b) there are commands queued to hardware already.
So you have to quiesce the device before issuing the smart command? In
which case, scsi_quiesce_device() is the API you want. Or is this some
type of command ordering problem you're trying to solve?
James
^ permalink raw reply
* [PATCH] 2.6 PPC64: lockfix for rtas error log (third-times-a-charm?)
From: linas @ 2004-06-30 20:31 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: paulus, Paul Mackerras, linuxppc64-dev, Linux Kernel list
In-Reply-To: <1088621248.1920.43.camel@gaston>
On Wed, Jun 30, 2004 at 01:47:29PM -0500, Benjamin Herrenschmidt wrote:
>
> > Well, the problem was that there is no lock that is protecting the
> > use of the single, global buffer. Adding yet another lock is bad;
> > it makes hunting for deadlocks that much more tedious and difficult;
> > already, finding deadlocks is error-prone, and subject to bit-rot as
> > future hackers update the code. So instead, the problem can be easily
> > avoided by not using a global buffer. The code below mallocs/frees.
> > Its not perf-critcal, so I don't mind malloc overhead. Would this
> > work for you? Patch attached below.
>
> I prefer that, but couldn't we move the kmalloc outside of the spinlock
> and so use GFP_KERNEL instead ?
OK,
Upon closer analysis of the code, I see that log_rtas_error()
was incorrectly named, and was being used incorrectly. The
solution is to get rid of it entirely; see patch below. So:
-- In one case kmalloc must be GFP_ATOMIC because rtas_call()
can happen in any context, incl. irqs.
-- In the other case, I turned it into GFP_KENREL, at the cost
of doing a needless malloc/free in the vast majority of
cases where there is no error. Small price, as I beleive
that this routine is very rarely called.
Patch below,
Signed-off-by: Linas Vepstas <linas@linas.org>
--linas
^ permalink raw reply
* [Qemu-devel] qemu-fast
From: Joe Menola @ 2004-07-01 0:34 UTC (permalink / raw)
To: qemu-devel
I just installed Qemu last night. After reading the user doc and some recent
mailing list postings I've managed to create a raw drive image, 2 of them
actually... one to install win98 in and one to hold my win95 cd files for
proof of upgrade eligibility.
I booted from a win98 start disk and I'll be damned if 98 isn't installing as
I type. This is WAAAAAAAAAAAAAAAAAY cool. :)
Kinda slow though, which leads to my question... the user doc states that a
patch is available for 2.6 kernels for enabling qemu-fast support. The doc
states that it can be found "in the QEMU source archive".
What I can't seem to locate is, the QEMU source archive. Any one have a link
or sense of direction?
Thanks in advance, and thanks for such a nifty application.
-jm
^ permalink raw reply
* 2.6.7-mm5
From: Andrew Morton @ 2004-07-01 0:26 UTC (permalink / raw)
To: linux-kernel
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm5/
- bk-acpi.patch is back. If devices mysteriously fail to function please
try reverting it with
patch -p1 -R -i ~/bk-acpi.patch
- last call for reviewers of the perfctr patches.
- s390, ppc64, ppc32 and IDE updates.
Changes since 2.6.7-mm4:
linus.patch
bk-acpi.patch
bk-agpgart.patch
bk-alsa.patch
bk-cpufreq.patch
bk-driver-core.patch
bk-ieee1394.patch
bk-input.patch
bk-netdev.patch
bk-ntfs.patch
bk-pnp.patch
bk-scsi.patch
bk-usb.patch
External trees
-x86_64-setup-section-alignment-fix.patch
-pwc-uncompress-build-fix.patch
-ppc64-fault-deadlock-fix-2.patch
-binary-translator-fs-passing.patch
-translate-japanese-comments-in-arch-v850.patch
-kill-mm_structused_hugetlb.patch
-provide-console_device.patch
-provide-console_device-comment.patch
-provide-console_suspend-and-console_resume.patch
-v267-indydogc-patch-20040627.patch
-fbcon-display-artifacts-fix.patch
-fix-to-microcode-driver-for-the-old-cpus.patch
-credits-update.patch
-pcdp-console-detection-support-fixes.patch
-ppc64-vio-infrastructure-modifications.patch
-ppc64-iseries_veth-integration.patch
-ppc64-viodasd-integration.patch
-ppc64-viocd-integration.patch
-ppc64-viotape-integration.patch
-hpet-fixes-3.patch
-sh64-merge.patch
-cirrusfb-minor-fixes.patch
-signed-bug-in-drivers-video-console-fbconc-con2fb_map.patch
-edd-store-mbr_signature-on-first-16-int13-devices.patch
-combined-patch-for-remaining-trivial-sparse.patch
-dma_get_required_mask.patch
-add-m68k-support-to-checkstack.patch
-small-fixes-to-checkstack.patch
-add-linux-compilerh-to-linux-fdh.patch
-fix-page-count-discrepancy-for-zero-page.patch
-alpha-build-fix.patch
Merged
+ppc64-remove-rtas-arguments-from-paca.patch
+ppc64-paca-cleanup.patch
+ppc64-janitor-log_rtas_error-call-arguments.patch
+ppc64-janitor-rtas_call-return-variables.patch
ppc64 udpates
+ppc32-ocp-for-mp10x.patch
+ppc32-ppc44x-updates.patch
+ppc32-ppc4xx-preempt-fixes.patch
ppc32 updates
+pefrctr-x86_tests-build-fix.patch
+perfctr-update-4-6-ppc32-cleanups.patch
+perfctr-update-6-6-misc-minor-cleanups.patch
+perfctr-update-3-6-__user-annotations.patch
+perfctr-update-2-6-kconfig-related-updates.patch
+perfctr-update-5-6-reduce-stack-usage.patch
perfctr updates
-r8169_napi-help-text.patch
This broke
-bridge-fix-bpdu-message_age.patch
Sort-of merged
-reduce-tlb-flushing-during-process-migration-2-fix.patch
-tlb_migrate_flush-docs.patch
Folded into reduce-tlb-flushing-during-process-migration-2.patch
-sched-cleanup-init_idle.patch
-sched-cleanup-improve-sched-fork-apis.patch
-sched-misc-changes.patch
-sched-disable-balance-on-clone-by-default.patch
-sched-exit-race.patch
+sched-clean-init-idle.patch
+sched-clean-fork.patch
+sched-clean-fork-rename-wake_up_new_process-wake_up_new_task.patch
+sched-misc-cleanups-2.patch
+sched-unlikely-rt_task.patch
+sched-misc.patch
+sched-misc-fix-rt.patch
+sched-no-balance-clone.patch
+sched-remove-balance-clone.patch
New set of CPU scheduler updates
-input-psmouse-state-locking.patch
-input-serio-connect-disconnect-mandatory.patch
-input-serio-renames-1.patch
-input-serio-renames-2.patch
-input-serio-dynamic-allocation.patch
-input-serio-avoid-recursion.patch
-input-serio-sysfs-intergration.patch
-input-serio-rebind.patch
-input-9-19-serio-manual-bind.patch
-input-serio_raw-driver.patch
-input-add-platform_device_register_simple.patch
-input-convert-i8042-into-a-platform-device.patch
-input-more-platform-device-conversions.patch
-input-bind-serio-ports-and-their-parents.patch
-input-synaptics-passthrough-handling.patch
-input-add-bus-default-driver-attributes.patch
-input-serio-use-bus-default-driver-device-attributes.patch
-input-add-driver_find.patch
-input-serio-use-driver_find.patch
These were partly-merged into bk-input, so I dropped everything.
+pcmcia-net-device-unplugging-ordering-fix.patch
Fix pcmcia netdev takedown ordering
+remove-upf_resources.patch
PCMCIA cleanup/fix
+define-max-kernel-symbol-lenght-and-clean-up.patch
+fix-sparse-warnings-in-kernel-power.patch
+fix-sparse-warnings-in.patch
sparse fixes
+convert-private-abs-to-kernels-abs.patch
Remove private ABS() implementations
+posix-locking-fix-to-posix_same_owner.patch
+posix-locking-fix-to-locking-code.patch
+posix-locking-fix-up-nfs4statec.patch
+posix-locking-fix-up-lockd.patch
+posix-locking-fl_owner_t-to-pid-mapping.patch
POSIX file locking fixes
+rivafb-fixes.patch
+mode-switch-in-fbcon_blank.patch
+another-batch-of-fbcon-fixes.patch
+asiliantfb-fixes.patch
fbdev driver fixes
+pdcp-needs-io_h.patch
Build fix
+es7000-subarch-update-for-target_cpus.patch
es7000 build fix
+zombie-with-clone_thread.patch
Prevent creation of zombies with obscure CLONE_THREAD usage
+64-bit-bug-in-radix-tree-lookup.patch
Fix 32-bit overflow in the radix-tree code
+s390-core-changes.patch
+s390-comon-i-o-layer.patch
+s390-dasd-driver-changes.patch
+s390-sclp-console-driver.patch
+s390-network-driver-changes.patch
+s390-zfcp-host-adapter.patch
s390 update
+ide_tf_pio_out_fixes.patch
+ide_tf_pio_out_prehandler.patch
+ide_tf_pio_out_error.patch
+ide_task_in_intr.patch
+ide_pre_task_out_intr.patch
+ide_pre_task_mulout_intr.patch
+ide_tf_no_partial.patch
+ide_non_tf_pio.patch
+ide_no_flagged_pio.patch
IDE update
+x86_64-edd-build-fix.patch
Build fix
+telephony-driver-isapnp-fix.patch
ixj.c actually works!
+1-4-dm-kcopydc-remove-unused-include.patch
+2-4-dm-kcopydc-make-client_add-return-void.patch
+3-4-dm-dm-raid1c-enforce-max-of-9-mirrors.patch
+4-4-dm-dm-raid1c-use-fixed-size-arrays.patch
device mapper tweaks
+physnode-map-can-go-negative.patch
Probably fix the NUMAQ remap_pte_range bug.
+flexible-mmap-bug-fix.patch
Fix BUG in the flexible-mmap patches.
All 161 patches:
linus.patch
kbuild-improve-kernel-build-with-separated-output.patch
kbuild: Improve Kernel build with separated output
sysfs-leaves-mount.patch
sysfs backing store: add sysfs_dirent
sysfs-leaves-dir.patch
sysfs backing store: add sysfs_dirent
sysfs-leaves-file.patch
sysfs backing store: sysfs_create() changes
sysfs-leaves-bin.patch
sysfs backing store: bin attribute changes
sysfs-leaves-symlink.patch
sysfs backing store: sysfs_create_link changes
sysfs-leaves-misc.patch
sysfs backing store: attribute groups and misc routines
bk-acpi.patch
bk-agpgart.patch
bk-alsa.patch
bk-cpufreq.patch
bk-driver-core.patch
bk-ieee1394.patch
bk-input.patch
bk-netdev.patch
bk-ntfs.patch
bk-pnp.patch
bk-scsi.patch
bk-usb.patch
mm.patch
add -mmN to EXTRAVERSION
alsa-gus-compile-error.patch
fix ALSA gus compile error
kgdb-ga.patch
kgdb stub for ia32 (George Anzinger's one)
kgdbL warning fix
kgdb buffer overflow fix
kgdbL warning fix
kgdb: CONFIG_DEBUG_INFO fix
x86_64 fixes
correct kgdb.txt Documentation link (against 2.6.1-rc1-mm2)
kgdb: fix for recent gcc
kgdb warning fixes
THREAD_SIZE fixes for kgdb
Fix stack overflow test for non-8k stacks
kgdb-gapatch-fix-for-i386-single-step-into-sysenter.patch
kgdb-ga.patch fix for i386 single-step into sysenter
kgdboe-netpoll.patch
kgdb-over-ethernet via netpoll
kgdboe: fix configuration of MAC address
kgdb-x86_64-support.patch
kgdb-x86_64-support.patch for 2.6.2-rc1-mm3
kgdb-x86_64-warning-fixes
kgdb-ia64-support.patch
IA64 kgdb support
ia64 kgdb repair and cleanup
kgdb-irqaction-use-cpumask.patch
kgdb-ia64-fix.patch
ia64 kgdb fix
make-tree_lock-an-rwlock.patch
make mapping->tree_lock an rwlock
radix_tree_tag_set-atomic.patch
Make radix_tree_tag_set/clear atomic wrt the tag
radix_tree_tag_set-only-needs-read_lock.patch
radix_tree_tag_set only needs read_lock()
must-fix.patch
must fix lists update
must fix list update
mustfix update
must-fix-update-5.patch
must-fix update
mustfix-lists.patch
mustfix lists
ppc64-remove-rtas-arguments-from-paca.patch
ppc64: emove RTAS arguments from PACA
ppc64-paca-cleanup.patch
ppc64: PACA cleanup
ppc64-janitor-log_rtas_error-call-arguments.patch
ppc64: janitor log_rtas_error() call arguments
ppc64-janitor-rtas_call-return-variables.patch
ppc64: Janitor rtas_call() return variables
ppc32-ocp-for-mp10x.patch
ppc32: OCP for MP10x
ppc32-ppc44x-updates.patch
ppc32: PPC44x defconfig update and fixes
ppc32-ppc4xx-preempt-fixes.patch
ppc32: PPC4xx preempt fix
ppc64-reloc_hide.patch
invalidate_inodes-speedup.patch
invalidate_inodes speedup
more invalidate_inodes speedup fixes
get_user_pages-handle-VM_IO.patch
fix get_user_pages() against mappings of /dev/mem
fa311-mac-address-fix.patch
wrong mac address with netgear FA311 ethernet card
pid_max-fix.patch
Bug when setting pid_max > 32k
jbd-remove-livelock-avoidance.patch
JBD: remove livelock avoidance code in journal_dirty_data()
journal_add_journal_head-debug.patch
journal_add_journal_head-debug
list_del-debug.patch
list_del debug check
oops-dump-preceding-code.patch
i386 oops output: dump preceding code
lockmeter.patch
lockmeter
ia64 CONFIG_LOCKMETER fix
unplug-can-sleep.patch
unplug functions can sleep
firestream-warnings.patch
firestream warnings
ext3_rsv_cleanup.patch
ext3 block reservation patch set -- ext3 preallocation cleanup
ext3_rsv_base.patch
ext3 block reservation patch set -- ext3 block reservation
ext3 reservations: fix performance regression
ext3 block reservation patch set -- mount and ioctl feature
ext3 block reservation patch set -- dynamically increase reservation window
ext3 reservation ifdef cleanup patch
ext3 reservation max window size check patch
ext3 reservation file ioctl fix
ext3-reservation-default-on.patch
ext3 reservation: default to on
ext3-lazy-discard-reservation-window-patch.patch
ext3 lazy discard reservation window patch
ext3 discard reservation in last iput fix patch
Fix lazy reservation discard
ext3 reservations: bad_inode fix
ext3 reservation discard race fix
hugetlb_shm_group-sysctl-gid-0-fix.patch
hugetlb_shm_group sysctl-gid-0-fix
really-ptrace-single-step-2.patch
ptrace single-stepping fix
ipr-ppc64-depends.patch
Make ipr.c require ppc
disk-barrier-core.patch
disk barriers: core
disk-barrier-core-tweaks
disk-barrier-ide.patch
disk barriers: IDE
disk-barrier-ide-symbol-expoprt
disk-barrier ide warning fix
barrier-update.patch
barrier update
disk-barrier-scsi.patch
disk barriers: scsi
disk-barrier-dm.patch
disk barriers: devicemapper
disk-barrier-md.patch
disk barriers: MD
reiserfs-v3-barrier-support.patch
reiserfs v3 barrier support
reiserfs-v3-barrier-support-tweak
sync_dirty_buffer-retval.patch
make sync_dirty_buffer() return something useful
ext3-barrier-support.patch
ext3 barrier support
jbd-barrier-fallback-on-failure.patch
jbd: barrier fallback on failure
ide-print-failed-opcode.patch
ide: print failed opcode on IO errors
From: Jens Axboe <axboe@suse.de>
Subject: Re: ide errors in 7-rc1-mm1 and later
add-bh_eopnotsupp-for-testing.patch
add BH_Eopnotsupp for testing async barrier failures
handle-async-barrier-failures.patch
Handle async barrier failures
enable-suspend-resuming-of-e1000.patch
Enable suspend/resuming of e1000
tty_io-hangup-locking.patch
tty_io.c hangup locking
perfctr-core.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][1/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: core
CONFIG_PERFCTR=n build fix
perfctr-i386.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][2/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: i386
perfctr #if/#ifdef cleanup
perfctr Dothan support
pefrctr-x86_tests-build-fix.patch
perfctr x86_tests build fix
perfctr-x86_64.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][3/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: x86_64
perfctr-ppc.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][4/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: PowerPC
perfctr-ppc32-update.patch
perfctr ppc32 update
perfctr-update-4-6-ppc32-cleanups.patch
perfctr update 4/6: PPC32 cleanups
perfctr-virtualised-counters.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][5/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: virtualised counters
perfctr-update-6-6-misc-minor-cleanups.patch
perfctr update 6/6: misc minor cleanups
perfctr-update-3-6-__user-annotations.patch
perfctr update 3/6: __user annotations
perfctr-ifdef-cleanup.patch
perfctr ifdef cleanup
perfctr-update-2-6-kconfig-related-updates.patch
perfctr update 2/6: Kconfig-related updates
perfctr-cpus_complement-fix.patch
perfctr-cpus_complement-fix
perfctr-cpumask-cleanup.patch
perfctr cpumask cleanup
perfctr-update-5-6-reduce-stack-usage.patch
perfctr update 5/6: reduce stack usage
perfctr-misc.patch
From: Mikael Pettersson <mikpe@csd.uu.se>
Subject: [PATCH][6/6] perfctr-2.7.3 for 2.6.7-rc1-mm1: misc
ext3-online-resize-patch.patch
ext3: online resizing
ext3-online-resize-warning-fix.patch
ext3-online-resize-warning-fix
net-at1700c-depends-on-mca_legacy.patch
net/at1700.c depends on MCA_LEGACY
net-ne2c-needs-mca_legacy.patch
net/ne2.c needs MCA_LEGACY
altix-serial-driver-2.patch
Altix serial driver updates
altix-serial-driver-fix
reduce-tlb-flushing-during-process-migration-2.patch
Reduce TLB flushing during process migration
reduce-tlb-flushing-during-process-migration-2-fix
tlb_migrate_flush documentation
sched-clean-init-idle.patch
sched: cleanup init_idle()
sched-clean-fork.patch
sched: cleanup, improve sched <=> fork APIs
sched-clean-fork-rename-wake_up_new_process-wake_up_new_task.patch
sched: rename wake_up_new_process -> wake_up_new_task
sched-misc-cleanups-2.patch
sched: misc cleanups #2
sched-unlikely-rt_task.patch
sched: make rt_task unlikely
sched-misc.patch
sched: sched misc changes
sched-misc-fix-rt.patch
sched: fix RT scheduling & interactivity estimator
sched-no-balance-clone.patch
sched: disable balance on clone
sched-remove-balance-clone.patch
sched: remove balance on clone
memory-backed-inodes-fix.patch
memory-backed inodes fix
ext3_bread-cleanup.patch
ext3_bread() cleanup
flexible-mmap-2.6.7-mm3-A8.patch
i386 virtual memory layout rework
next-step-of-smp-support-fix-device-suspending.patch
swsusp: preparation for smp support & fix device suspending
next-step-of-smp-support-fix-device-suspending-warning-fix.patch
next-step-of-smp-support-fix-device-suspending warning fix
next-step-of-smp-support-fix-device-suspending-warning-fix-2.patch
next-step-of-smp-support-fix-device-suspending warning fix 2
next-step-of-smp-support-fix-device-suspending-x86_64-fix.patch
next-step-of-smp-support-fix-device-suspending x86_64 fix
produce-a-warning-on-unchecked-inode_setattr-use.patch
produce a warning on unchecked inode_setattr use
driver-model-and-sysfs-support-for-pcmcia-1-3.patch
driver model and sysfs support for PCMCIA (1/3)
update-drivers-net-pcmcia-2-3.patch
update drivers/net/pcmcia (2/3)
update-drivers-net-wireless-3-3.patch
update drivers/net/wireless (3/3)
bugfix-for-clock_realtime-absolute-timer.patch
Bugfix for CLOCK_REALTIME absolute timer
pcmcia-net-device-unplugging-ordering-fix.patch
PCMCIA net device unplugging ordering fix
remove-upf_resources.patch
serial: remove UPF_RESOURCES
define-max-kernel-symbol-lenght-and-clean-up.patch
sparse: define max kernel symbol length and clean up errors in kernel/kallsyms.c
fix-sparse-warnings-in-kernel-power.patch
sparse: fix sparse warnings in kernel/power/*
fix-sparse-warnings-in.patch
sparse: fix sparse in drivers/pnp/pnpbios/*
convert-private-abs-to-kernels-abs.patch
convert private ABS() to kernel's abs()
posix-locking-fix-to-posix_same_owner.patch
posix locking: Minimal fix to posix_same_owner()
posix-locking-fix-to-locking-code.patch
posix locking: more locking code fixes
posix-locking-fix-up-nfs4statec.patch
posix locking: Fix up nfs4state.c
posix-locking-fix-up-lockd.patch
posix locking: Fix up lockd to make use of the new interface
posix-locking-fl_owner_t-to-pid-mapping.patch
posix locking: mapping between fl_owner_t and client-side "pid"
rivafb-fixes.patch
Rivafb fixes
mode-switch-in-fbcon_blank.patch
Mode Switch in fbcon_blank()
another-batch-of-fbcon-fixes.patch
Another batch of fbcon fixes
pdcp-needs-io_h.patch
pcdp.c needs io.h
es7000-subarch-update-for-target_cpus.patch
es7000 subarch update for target_cpus()
zombie-with-clone_thread.patch
Fix zombie with CLONE_THREAD
asiliantfb-fixes.patch
asiliantfb fix
64-bit-bug-in-radix-tree-lookup.patch
64 bit bug in radix-tree lookup.
s390-core-changes.patch
s390: core changes
s390-comon-i-o-layer.patch
s390: comon i/o layer
s390-dasd-driver-changes.patch
s390: dasd driver changes
s390-sclp-console-driver.patch
s390: sclp console driver
s390-network-driver-changes.patch
s390: network driver changes
s390-zfcp-host-adapter.patch
s390: zfcp host adapter
ide_tf_pio_out_fixes.patch
ide: PIO-out fixes for ide-taskfile.c (CONFIG_IDE_TASKFILE_IO=n)
ide_tf_pio_out_prehandler.patch
ide: PIO-out ->prehandler() fixes (CONFIG_IDE_TASKFILE_IO=y)
ide_tf_pio_out_error.patch
ide: PIO-out error handling fixes (CONFIG_IDE_TASKFILE_IO=y)
ide_task_in_intr.patch
ide: remove BUSY check from task_in_intr() (CONFIG_IDE_TASKFILE_IO=n)
ide_pre_task_out_intr.patch
remove pre_task_out_intr() comment (CONFIG_IDE_TASKFILE_IO=n)
ide_pre_task_mulout_intr.patch
ide: pre_task_mulout_intr() cleanup (CONFIG_IDE_TASKFILE_IO=n)
ide_tf_no_partial.patch
ide: no partial completions for PIO (CONFIG_IDE_TASKFILE_IO=y)
ide_non_tf_pio.patch
ide: merge CONFIG_IDE_TASKFILE_IO=y|n PIO handlers together
ide_no_flagged_pio.patch
ide: use "normal" handlers for "flagged" taskfiles (ide-taskfile.c)
x86_64-edd-build-fix.patch
x86_64 EDD build fix
telephony-driver-isapnp-fix.patch
Telephony Driver ISAPNP fix
1-4-dm-kcopydc-remove-unused-include.patch
DM: kcopyd.c: Remove unused include
2-4-dm-kcopydc-make-client_add-return-void.patch
DM: kcopyd.c: make client_add() return void
3-4-dm-dm-raid1c-enforce-max-of-9-mirrors.patch
DM: dm-raid1.c: Enforce max of 9 mirrors
4-4-dm-dm-raid1c-use-fixed-size-arrays.patch
DM: dm-raid1.c: Use fixed-size arrays
physnode-map-can-go-negative.patch
ia32 NUMA: physnode_map entries can be negative
flexible-mmap-bug-fix.patch
flexible-mmap BUG fix
^ permalink raw reply
* Re: RAW I/O
From: Bryan Henderson @ 2004-07-01 0:26 UTC (permalink / raw)
To: Kernel The; +Cc: linux-scsi
In-Reply-To: <20040629053446.73235.qmail@web90102.mail.scd.yahoo.com>
>I want to do RAW I/O to a disk/partition from my ram
>disk driver. How I can achieve this?
>
>alloc_kiovec(..), map_user_kiobuf(...) and
>brw_kiovec(...) functions can be used for this? But
>these function map user space into kernel space
>memory, but in my driver I will be having only kernel
>space memory.
(Incidentally, this isn't a SCSI question -- it's a Linux block device
question -- the answer below applies to any block device).
Yes, kiovecs are all about mapping user space memory; not useful in your
case.
But if you follow the brw_kiovec() code, you'll eventually come to the
basic block I/O submitting interface. Essentially, 1) fill in the
relevant fields of a buffer head: b_state, b_page, b_addr, b_size, b_rdev,
b_rsector, b_endio, b_private. 2) find the block request queue that feeds
your device, with blk_get_queue(devno). 3) submit the buffer head by
calling the queue's make_request_fn function
(blk_get_queue()->make_request_fn).
Some people prefer to call the higher level submit_bh() or
generic_make_request(), but I find that they assume too much that they're
being called for buffer cache I/O. That's not what you're doing.
All of this information is specific to Linux 2.4, which I can tell you're
using because only 2.4 has kiovecs. The interface is cleaner in 2.6.
^ permalink raw reply
* [U-Boot-Users] write_via_fpu() doesn't work?
From: Shawn @ 2004-07-01 0:24 UTC (permalink / raw)
To: u-boot
Hi,
I'm debugging the flash_init(), which is ported from SL8245. Through the
following three lines of code, it always gets wrong result.
write_via_fpu (&addr[0xaaa8], precmd0);
write_via_fpu (&addr[0x5550], precmd1);
write_via_fpu (&addr[0xaaa8], cmdid);
But if I manually write to flash via BDI, it always returns correct
result. Doesn't write_via_fpu() work?
(gdb) n
137 write_via_fpu (&addr[0xaaa8], cmdid);
(gdb) n
139 DEBUGF ("Flash bank # %d:\n"
(gdb) p *addr
$6 = 0xffffffff
(gdb) mon mmd 0xff80aaa8 000000aa000000aa
(gdb) mon mmd 0xff805550 0000005500000055
(gdb) mon mmd 0xff80aaa8 0000009000000090
(gdb) mon mdd 0xff800000
ff800000 : 0000000100000001 ........
ff800008 : 2222227e2222227e """~"""~
Thanks,
-Shawn.
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
^ permalink raw reply
* Re: policy help
From: Greg Norris @ 2004-07-01 0:16 UTC (permalink / raw)
To: Russell Coker; +Cc: SE-Linux
In-Reply-To: <200406301327.35935.russell@coker.com.au>
On Wed, Jun 30, 2004 at 01:27:35PM +1000, Russell Coker wrote:
> > allow dnsmasq_t netif_type:netif { udp_send udp_recv };
> > allow dnsmasq_t node_type:node { udp_send udp_recv };
>
> Use can_network(dnsmasq_t) for this and more.
Thanx. I switched to that approach, and everything seems to be working
as intended now. I was avoiding can_network originally, because I was
trying to strictly limit network permissions... dnsmasq doesn't use
TCP, for example, so I didn't want to allow it. I might revisit this
later (after working through some unrelated policies), although I'm not
at all sure it's worth the effort in this case. ;-)
--
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: traceroute
From: Cedric Blancher @ 2004-07-01 0:16 UTC (permalink / raw)
To: Florian Boelstler; +Cc: netfilter
In-Reply-To: <40E334EC.1080606@web.de>
Le mer 30/06/2004 à 23:47, Florian Boelstler a écrit :
> My traceroute says:
> traceroute to www.google.akadns.net (66.102.11.99), 30 hops max, 38 byte
> packets
> traceroute: sendto: Operation not permitted
> 1 traceroute: wrote www.google.akadns.net 38 chars, ret=-1
> [ ... ]
You must have an OUTPUT rule that forbid UDP to high ports, thus
traceroute cannot send its packets.
--
http://www.netexit.com/~sid/
PGP KeyID: 157E98EE FingerPrint: FA62226DA9E72FA8AECAA240008B480E157E98EE
>> Hi! I'm your friendly neighbourhood signature virus.
>> Copy me to your signature file and help me spread!
^ permalink raw reply
* Re: per-process namespace?
From: Serge E. Hallyn @ 2004-07-01 0:14 UTC (permalink / raw)
To: Ram Pai; +Cc: linux-kernel
In-Reply-To: <1088619320.2927.77.camel@localhost.localdomain>
> The per-process namespace concept comes in handy here except for the
> static nature of the namespace. In the sense, any changes to the system
> namespace do not reflect in the children namespace.
Static?
It's not static! It's private, as advertised.
It sounds like you're asking (or your customer is asking) for
copy-on-write namespaces :)
^ permalink raw reply
* Re: [Lhms-devel] new memory hotremoval patch
From: Dave Hansen @ 2004-07-01 0:11 UTC (permalink / raw)
To: IWAMOTO Toshihiro; +Cc: Linux Kernel Mailing List, lhms, linux-mm
In-Reply-To: <20040630111719.EBACF70A92@sv1.valinux.co.jp>
On Wed, 2004-06-30 at 04:17, IWAMOTO Toshihiro wrote:
> Due to struct page changes, page->mapping == NULL predicate can no
> longer be used for detecting cancellation of an anonymous page
> remapping operation. So the PG_again bit is being used again.
> It may be still possible to kill the PG_again bit, but the priority is
> rather low.
But, you reintroduced it everywhere, including file-backed pages, not
just for anonymous pages? Why was this necessary?
-- Dave
^ permalink raw reply
* Re: [Lhms-devel] new memory hotremoval patch
From: Dave Hansen @ 2004-07-01 0:11 UTC (permalink / raw)
To: IWAMOTO Toshihiro; +Cc: Linux Kernel Mailing List, lhms, linux-mm
In-Reply-To: <20040630111719.EBACF70A92@sv1.valinux.co.jp>
On Wed, 2004-06-30 at 04:17, IWAMOTO Toshihiro wrote:
> Due to struct page changes, page->mapping == NULL predicate can no
> longer be used for detecting cancellation of an anonymous page
> remapping operation. So the PG_again bit is being used again.
> It may be still possible to kill the PG_again bit, but the priority is
> rather low.
But, you reintroduced it everywhere, including file-backed pages, not
just for anonymous pages? Why was this necessary?
-- Dave
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>
^ permalink raw reply
* Re: Using GDB kills kernel
From: peterc @ 2004-07-01 0:09 UTC (permalink / raw)
To: linux-ia64
In-Reply-To: <16610.19218.349114.463377@wombat.chubb.wattle.id.au>
>>>>> "Alex" = Alex Williamson <alex.williamson@hp.com> writes:
Alex> On Wed, 2004-06-30 at 15:09 +1000, Peter Chubb wrote:
>> With David's current patch against 2.6.7-BK, attempting to use GDB
>> causes a firmware assertion failure on my ZX2000. Looks like it's
>> causing a SAL call or something.
>>
>> gdb ./h (gdb) r Firmware assertion failed: (((DATA8) addr - salNvm)
>> < NVM_SIZE) || (((DATA8) addr - efiNvm) < EFI_NVM_SIZE), file
>> bbsram_new.c line 570 ....
>>
Alex> According to our firmware guys, that message is trying to say
Alex> that something tried to access non-volatile memory outside of
Alex> the SAL or EFI address ranges (ie. bad address that happened to
Alex> hit NVM). I can't reproduce it on my box. Does it happen every
Alex> time? Any dependency on the binary gdb is debugging? Thanks,
I can reproduce the problem on any one-processor Zx2000, when using
gdb on any process.
On a dual processor, I see an oops instead:
Unable to handle kernel paging request at virtual address
a00080a40bc4c008
gdb[426]: Oops 8821862825984 [1]
Call Trace:
[<a000000100015b20>] show_stack+0x80/0xa0
spà00004040bd79a0 bspà00004040bd12e8
[<a000000100024c90>] die+0x1f0/0x280
spà00004040bd7b70 bspà00004040bd12b0
[<a00000010003fb40>] ia64_do_page_fault+0x360/0x960
spà00004040bd7b70 bspà00004040bd1248
[<a00000010000e1a0>] ia64_leave_kernel+0x0/0x260
spà00004040bd7c00 bspà00004040bd1248
[<a0000001000e0c40>] get_user_pages+0x980/0x9c0
spà00004040bd7dd0 bspà00004040bd10e8
[<a000000100088f00>] access_process_vm+0x1a0/0x4e0
spà00004040bd7de0 bspà00004040bd1038
[<a000000100018e50>] ia64_peek+0x230/0x260
spà00004040bd7e00 bspà00004040bd0fe0
[<a00000010001c070>] sys_ptrace+0x390/0xb20
spà00004040bd7e20 bspà00004040bd0f48
[<a00000010000e020>] ia64_ret_from_syscall+0x0/0x20
spà00004040bd7e30 bspà00004040bd0f48
0xa0000001000e0c40 where the fault occurred is
include/linux/mm.h:307 -- the atomic-increment of page->_count in
get_page.
--
Dr Peter Chubb http://www.gelato.unsw.edu.au peterc AT gelato.unsw.edu.au
The technical we do immediately, the political takes *forever*
^ permalink raw reply
* Re: [uml-devel] Humfs directory creation bug.
From: Jeff Dike @ 2004-07-01 1:00 UTC (permalink / raw)
To: Piotr Neuman; +Cc: user-mode-linux-devel
In-Reply-To: <200406071844.27297.sikkh@wp.pl>
sikkh@wp.pl said:
> Humfs code misreported device when getting stat info on directories.
> This code hopefully fixes that (mv will work with hardlinks as
> expected now).
> Apply to 2.4.26-1 UML release (in arch/um/fs/hostfs/). Patch:
Nice spotting.
However, you missed a kfree(file) along an error path.
Jeff
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
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: problem with cpu eating too much power, prize given if solved
From: Michael Frank @ 2004-07-01 0:03 UTC (permalink / raw)
To: Keld Jørn Simonsen
Cc: Pavel Machek, acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f
In-Reply-To: <20040630173754.GA29587-EittdKFJ/bZ/SzgSGea1oA@public.gmane.org>
On Wed, 30 Jun 2004 19:37:54 +0200, Keld Jørn Simonsen <keld-6PR53cSIHaE@public.gmane.org> wrote:
> On Wed, Jun 30, 2004 at 10:16:31PM +0800, Michael Frank wrote:
>> On Wed, 30 Jun 2004 00:11:11 +0200, Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org> wrote:
>>
>> >Hi!
>> >
>> >>>>Many times I just want to read the screen, eg emails or documents,
>> >>>>and then still the cpu will be in idle mode, where
>> >>>>it uses 7.5 W out of the about 15 W that the whole machine uses.
>> >>>>I have found out from Intel data sheets that my
>> >>>>Mobile Intel Celeron 2.0 GHz CPU consumes 7.5 W in idle loop/
>> >>>>stop grant/sleep states, (and 5.0 W i deep sleep state).
>> >>>>
>> >>>>So I would like to have the CPU stopped completely (consuming 0 W)
>> >>>>while I still could read the screen. In that way I should
>> >>>>be able to have about double the lifetime on the battery,
>> >>>>going to about 7 hours from the 3.5 hours I have now.
>> >>>>
>> >>>>I would like the machine to wake up again by any keystroke
>> >>>>on the keyboard or mouse input. I would like the input to be
>> >>>>reacted upon (not just used to wake up the system, and
>> >>>>then forgotten).
>> >>>>
>> >>>
>> >>>S1 is what you want... but... if you get what you asked for,
>> >>>do you realize that for example clock would not update on the desktop
>> >>>in this mode?
>> >>
>> >>Which hardware can power down the CPU on its own?
>> >
>> >I thought that CPU powered down is pretty much definition S1.
>> >
>>
>> Please refer to http://acpi.sourceforge.net/documentation/sleep.html
>> and ACPI spec 2.0a around Page 216
>>
>> "Sleep States
>> S1 - "Stopgrant"
>> Power to cpu is maintained, but no instructions are executed.
>> The CPU halts itself and may shut down many of its internal
>> components. In Microsoft Windows, the "Standby" command
>> is associated with this state by default.
>> "
>
> Well, I think what I want is S2, from the same document:
>
> S2
>
> While defined in the spec, this state is not currently in use. It
> resembles S3 with the qualification that some devices are permitted to
> remain on.
"some devices" could include the CPU - fair enough!
>
> S3 - "Suspend to RAM"
>
> All power to the cpu is shut off, and the contents of its registers are
> flushed to RAM, which remains on. In Microsoft Windows, the "Standby"
> command can be associated with this state if enabled in the BIOS.
> Because it requires a high degree of coordination between the cpu,
> chipset, devices, OS, BIOS, and OS device drivers, this system state is
> the most prone to errors and instability.
> Pavel Machek has created a small document with some hints how to solve
> problems with S3. You can find it in the kernel sources at
> Documentation/power/tricks.txt.
> S3 is currently _not_ supported by the 2.4.x kernel series in Linux.
>
>
> I would like the CPU to power down, save things in memory, and then
> still have the screen and associated hardware on, and possibly also the
> keyboard and mouse if that is needed to capture an ACPI event, including
> the actual keystroke. This seems to be S2. I am not sure if all of S2
> needs to be implemented to do what I asked for, I just would like the
> functionality I described.
>
>> If you look at the original post, S1 "Stopgrant" costs 5W on his celeron.
>> It takes a lot
>> more on many 90nm chips. I read in the Centrino datasheet that it can draw
>> 15W
>> stopgrant at _maximum_ vcore!!!. The maximum possible power consumption
>> is only 25W!.
>> Now, that is life with modern CMOS, leakage is most of the power
>> consumption....
>> I think it will improve but 1:3 is the best you can expect for multi GHZ
>> CPU's.
>
> According to that, then what I ask for could also be beneficial to
> centrino CPU's.
It would be benefitial to most CPU's also desktops.
>
>> So again, which (mainboard/notebook) HW does depower the CPU and keeps the
>> rest running ?
>
> I thought this was something that most mainboards would support, given
> that we make the appropiate SW in the kernel.
If you want to depower the CPU, you have to depower its bridge
connections as well, _No_ Mainboard especially the chipsets
can do that. . ... also need a seperate set of main regulators for the
CPU.
The software side would be mostly CPU part of S3.
>
> Another thing is that if a mainboard/BIOS supports ACPI, then it should
> actually support all of ACPI, including S2 support. Or am I wrong?
All optional by the spec. You get S0, and S5 and S4 and S3 when you
are lucky. Got a P4 with S1 and S3, but its DSDT is so buggy I run
it with ACPI=off and use swsusp 2 on 2.4.
>
>> As to ACPI there should be a S2.5 state, or a S3 extension to power down
>> the CPU and run the rest...
>
> I thought S2 was actually powering down the cpu, saving all registers
> and things in memory, like S3, and then leaving some devices on. As I have read it,
> this is clean S2, and not a 2.5 level. But I am not an ACPI expert.
It could be, provided someone writes a spec on how to power the CPU down
while keeping the rest running and the manufacturers implement it.
ACPI for Linux implements the spec and supports features supported
by hardware. I suggest you discuss in a PC hardware forum.
Best Regards
Michael
-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 -
digital self defense, top technical experts, no vendor pitches,
unmatched networking opportunities. Visit www.blackhat.com
^ permalink raw reply
* MARK and routing issue
From: Steve Wakelin @ 2004-06-30 23:58 UTC (permalink / raw)
To: netfilter
Hello,
Perhaps someone could point me in the right direction.
I am simply ;-( trying to MARK packets and then route them according to
the mark.
[root@localhost sysconfig]# ip rule
0: from all lookup local
32760: from all fwmark 0x6 lookup T4
32761: from all fwmark 0x5 lookup T3
32762: from 192.168.252.1 lookup T2
32763: from 192.168.253.1 lookup T1
32764: from 192.168.252.1 lookup T2
32765: from 192.168.253.1 lookup T1
32766: from all lookup main
32767: from all lookup default
[root@localhost sysconfig]# ip route list table T3
10.3.0.1 via 10.3.0.2 dev tun1
default via 10.3.0.2 dev tun1
[root@localhost sysconfig]# ip route list table T4
10.3.0.1 via 10.3.0.3 dev tun2
default via 10.3.0.3 dev tun2
[root@localhost sysconfig]# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
MARK all -- 10.15.1.0/24 10.3.0.0/24 MARK set
0x5
MARK all -- 10.15.1.0/24 10.3.0.0/24 MARK set
0x6
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost sysconfig]# ping -I 10.15.1.1 10.3.0.1
PING 10.3.0.1 (10.3.0.1) from 10.15.1.1 : 56(84) bytes of data.
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable
Will someone please enlighten me as to what I have missed?
Thanks in advance.
Regards
/Steve
^ permalink raw reply
* Re: A question about PROT_NONE on ARM and ARM26
From: Ian Molton @ 2004-06-30 23:48 UTC (permalink / raw)
To: Jamie Lokier; +Cc: linux-arm-kernel, linux-kernel
In-Reply-To: <20040630233014.GC32560@mail.shareable.org>
On Thu, 1 Jul 2004 00:30:14 +0100
Jamie Lokier <jamie@shareable.org> wrote:
> "ge" is a signed comparison, and unsigned is needed here, unless I
> missed something subtle. So "bge" and "ldrge" should be "bhi" and "ldrhi".
technically, I think you're right here.
in practise, the arm26 address space is too small (64MB) for this to
ever cause a problem.
^ 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.