All of lore.kernel.org
 help / color / mirror / Atom feed
* [ALSA - driver 0001857]: regression in snd-cs4281 in recent 2.6.16-rcX kernels
From: bugtrack @ 2006-04-07 11:11 UTC (permalink / raw)
  To: alsa-devel


A NOTE has been added to this issue.
======================================================================
<https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1857> 
======================================================================
Reported By:                hoffmajs
Assigned To:                
======================================================================
Project:                    ALSA - driver
Issue ID:                   1857
Category:                   PCI - cs4281
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
Distribution:               Ubuntu (Dapper)
Kernel Version:             2.6.16-rc4
======================================================================
Date Submitted:             02-19-2006 06:11 CET
Last Modified:              04-07-2006 13:11 CEST
======================================================================
Summary:                    regression in snd-cs4281 in recent 2.6.16-rcX
kernels
Description: 
In the recent 2.6.16-rc kernels snd-cs4281 broke for me.
(I think since 2.6.16-rc2, but Im not sure atm. In 2.6.15 the card works
fine.)

# > modprobe snd-cs4281
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKC] -> GSI 5 (level, low)
-> IRQ 5
never read ISV3 and ISV4 from AC'97
ACPI: PCI interrupt for device 0000:00:08.0 disabled
CS4281: probe of 0000:00:08.0 failed with error -5

and no soundcard is found.

If you need more info or want me to test something, please say so.


kind regards,
Jens

======================================================================

----------------------------------------------------------------------
 julienbras - 04-05-06 10:33 
----------------------------------------------------------------------
same problem on a debian sid, IBM Thinkpad X20.

The switch from 2.6.15 to 2.6.16 broke the sound

LSPCI output:
julien@x20:~$ sudo lspci -vs 00:0b
0000:00:0b.0 Multimedia audio controller: Cirrus Logic Crystal CS4281 PCI
Audio (rev 01)
        Subsystem: IBM: Unknown device 0183
        Flags: medium devsel, IRQ 11
        Memory at f4010000 (32-bit, non-prefetchable) [size=4K]
        Memory at f4000000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 2

DMESG output:
ACPI: PCI Interrupt 0000:00:0b.0[A] -> Link [LNKA] -> GSI 11 (level, low)
-> IRQ 11
never read ISV3 and ISV4 from AC'97
ACPI: PCI interrupt for device 0000:00:0b.0 disabled
CS4281: probe of 0000:00:0b.0 failed with error -5

----------------------------------------------------------------------
 Mo6eB - 04-07-06 13:11 
----------------------------------------------------------------------
Also happens here.
Debian unstable, custom-compiled kernel, as well as the precompiled kernel
in the Debian repository don't work.
Fujitsu/Siemens Lifebook C-4345

lspci -vs 00:08
0000:00:08.0 Multimedia audio controller: Cirrus Logic Crystal CS4281 PCI
Audio (rev 01)
        Subsystem: Fujitsu Limited. Crystal CS4281 PCI Audio
        Flags: medium devsel, IRQ 5
        Memory at fc010000 (32-bit, non-prefetchable) [size=4K]
        Memory at fc000000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 2

dmesg on a kernel, compiled with support for ACPI:
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKC] -> GSI 5 (level, low)
-> IRQ 5
ALSA sound/pci/cs4281.c:1577: never read ISV3 and ISV4 from AC'97
ACPI: PCI interrupt for device 0000:00:08.0 disabled
CS4281: probe of 0000:00:08.0 failed with error -5

dmesg on a kernel, compiled without support for ACPI:
PCI: Found IRQ 5 for device 0000:00:08.0
ALSA sound/pci/cs4281.c:1577: never read ISV3 and ISV4 from AC'97
CS4281: probe of 0000:00:08.0 failed with error -5

It doesn't seem like ACPI is the problem. The second kernel was compiled
with no support whatsoever for power management. If you need me to try
some specific configuration, do say so.

Issue History
Date Modified  Username       Field                    Change              
======================================================================
02-19-06 06:11 hoffmajs       New Issue                                    
02-19-06 06:11 hoffmajs       Distribution              => Ubuntu (Dapper) 
02-19-06 06:11 hoffmajs       Kernel Version            => 2.6.16-rc4      
03-02-06 16:05 tiwai          Note Added: 0008319                          
04-05-06 10:33 julienbras     Note Added: 0009119                          
04-07-06 13:11 Mo6eB          Note Added: 0009138                          
======================================================================




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

^ permalink raw reply

* [PATCH 2.6.17-rc1-mm1] m32r: Remove symbols exported twice
From: Hirokazu Takata @ 2006-04-07 11:09 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, takata

Remove multi-exported symbols from arch/m32r/kernel/m32r_ksyms.c.

WARNING: vmlinux: 'enable_irq' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'disable_irq' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'disable_irq_nosync' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'synchronize_irq' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'memchr' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strstr' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'memscan' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'memcmp' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'memmove' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strnlen' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strchr' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strncmp' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strcmp' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strncat' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strcat' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strncpy' exported twice. Previous export was in vmlinux
WARNING: vmlinux: 'strcpy' exported twice. Previous export was in vmlinux

Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
---

 arch/m32r/kernel/m32r_ksyms.c |   24 ------------------------
 1 file changed, 24 deletions(-)

Index: linux-2.6.17-rc1-mm1/arch/m32r/kernel/m32r_ksyms.c
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/kernel/m32r_ksyms.c	2006-04-07 14:59:13.000000000 +0900
+++ linux-2.6.17-rc1-mm1/arch/m32r/kernel/m32r_ksyms.c	2006-04-07 15:43:19.235344160 +0900
@@ -23,9 +23,6 @@ EXPORT_SYMBOL(boot_cpu_data);
 EXPORT_SYMBOL(dump_fpu);
 EXPORT_SYMBOL(__ioremap);
 EXPORT_SYMBOL(iounmap);
-EXPORT_SYMBOL(enable_irq);
-EXPORT_SYMBOL(disable_irq);
-EXPORT_SYMBOL(disable_irq_nosync);
 EXPORT_SYMBOL(kernel_thread);
 EXPORT_SYMBOL(__down);
 EXPORT_SYMBOL(__down_interruptible);
@@ -38,8 +35,6 @@ EXPORT_SYMBOL(__udelay);
 EXPORT_SYMBOL(__delay);
 EXPORT_SYMBOL(__const_udelay);
 
-EXPORT_SYMBOL(strstr);
-
 EXPORT_SYMBOL(strncpy_from_user);
 EXPORT_SYMBOL(__strncpy_from_user);
 EXPORT_SYMBOL(clear_user);
@@ -54,11 +49,8 @@ extern void *dcache_dummy;
 EXPORT_SYMBOL(dcache_dummy);
 #endif
 EXPORT_SYMBOL(cpu_data);
-EXPORT_SYMBOL(cpu_online_map);
-EXPORT_SYMBOL(cpu_callout_map);
 
 /* Global SMP stuff */
-EXPORT_SYMBOL(synchronize_irq);
 EXPORT_SYMBOL(smp_call_function);
 
 /* TLB flushing */
@@ -78,27 +70,11 @@ EXPORT_SYMBOL(__lshrdi3);
 EXPORT_SYMBOL(__muldi3);
 
 /* memory and string operations */
-EXPORT_SYMBOL(memchr);
 EXPORT_SYMBOL(memcpy);
-/* EXPORT_SYMBOL(memcpy_fromio); // not implement yet */
-/* EXPORT_SYMBOL(memcpy_toio); // not implement yet */
 EXPORT_SYMBOL(memset);
-/* EXPORT_SYMBOL(memset_io); // not implement yet */
-EXPORT_SYMBOL(memmove);
-EXPORT_SYMBOL(memcmp);
-EXPORT_SYMBOL(memscan);
 EXPORT_SYMBOL(copy_page);
 EXPORT_SYMBOL(clear_page);
-
-EXPORT_SYMBOL(strcat);
-EXPORT_SYMBOL(strchr);
-EXPORT_SYMBOL(strcmp);
-EXPORT_SYMBOL(strcpy);
 EXPORT_SYMBOL(strlen);
-EXPORT_SYMBOL(strncat);
-EXPORT_SYMBOL(strncmp);
-EXPORT_SYMBOL(strnlen);
-EXPORT_SYMBOL(strncpy);
 
 EXPORT_SYMBOL(_inb);
 EXPORT_SYMBOL(_inw);

--
Hirokazu Takata <takata@linux-m32r.org>
Linux/M32R Project:  http://www.linux-m32r.org/
 

^ permalink raw reply

* Re: [patch][rfc] quell interactive feeding frenzy
From: Mike Galbraith @ 2006-04-07 11:09 UTC (permalink / raw)
  To: Con Kolivas
  Cc: Ingo Molnar, Andrew Morton, linux-kernel, nickpiggin, pwil3058
In-Reply-To: <200604072100.17900.kernel@kolivas.org>

On Fri, 2006-04-07 at 21:00 +1000, Con Kolivas wrote:
> On Friday 07 April 2006 20:57, Mike Galbraith wrote:
> > On Fri, 2006-04-07 at 11:52 +0200, Ingo Molnar wrote:
> > > i think we should try Mike's patches after smpnice got ironed out. The
> > > extreme-starvation cases should be handled more or less correctly now by
> > > the minimal set of changes from Mike that are upstream (knock on wood),
> > > the singing-dancing add-ons can probably wait a bit and smpnice clearly
> > > has priority.
> >
> > (I'm still trying to find ways to do less singing and dancing.)
> >
> > This patch you may notice wasn't against an mm kernel.  I was more or
> > less separating this one from the others, because I consider this
> > problem to be very severe.  IMHO, this or something like it needs to get
> > upstream soon.
> 
> Which is a fine observation but your code is changing every 2nd day. Which is 
> also fine because code needs to evolve. However that's not really the way we 
> push stuff upstream...

No, it's not changing much at all, though I wish it would.  WRT this
patch, you'll note that the mail subject contains the magical
incantation [rfc] (didn't work).  I care not one whit whether _my_ patch
gets sent upstream or to the bit bucket.  I care only that the problem
gets solved, and preferably sooner than later.

	-Mike


^ permalink raw reply

* Re: [PATCH] use CONFIG_HZ
From: Maciej W. Rozycki @ 2006-04-07 11:18 UTC (permalink / raw)
  To: Atsushi Nemoto; +Cc: linux-mips, ralf
In-Reply-To: <20060407.011000.77652835.anemo@mba.ocn.ne.jp>

On Fri, 7 Apr 2006, Atsushi Nemoto wrote:

> Make HZ configurable (except for DECSTATION which is using special HZ
> value which is out of choice).  Also remove some param.h files and

 The DECstation could actually use a choice of 128Hz, 256Hz and 1024Hz if 
anybody cared.

  Maciej

^ permalink raw reply

* [ALSA - driver 0001134]: alsa 1.0.9rc4 + intel 82801FB/.../ = No sound (Benq 52-101)
From: bugtrack @ 2006-04-07 11:05 UTC (permalink / raw)
  To: alsa-devel


A NOTE has been added to this issue.
======================================================================
<https://bugtrack.alsa-project.org/alsa-bug/view.php?id=1134> 
======================================================================
Reported By:                liangalei
Assigned To:                
======================================================================
Project:                    ALSA - driver
Issue ID:                   1134
Category:                   PCI - intel8x0
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
Distribution:               Fedora Core 3
Kernel Version:             2.6.11-1.14
======================================================================
Date Submitted:             05-28-2005 08:49 CEST
Last Modified:              04-07-2006 13:05 CEST
======================================================================
Summary:                    alsa 1.0.9rc4 + intel 82801FB/.../ = No sound (Benq
52-101)
Description: 
My notebook is Benq 52-101, update FC3 to kernel 2.6.11-1.14_FC3

alsamixer report: Card=intel ICH6, chip=Conexant id 3 (Question, Conexant
just support modem's AC-97 or else provide whole sound ? )

alsaconf: can find "Intel Corp 82801FB/.../ ICH6 family AC'97 Audio", and
will contine to "Have a lot fun".

I have ever, update linux kernel from 2.6.9 to 2.6.11(yum update, no
recompiling), and alsa driver from 0.9.0/1.0.8/1.0.9rc3/4.

Recomipling ALsa driver/lib/oss/tools/util.., with drive, ever try 
----- ./configure --with-cards=azx (error: no this card)
----- ./configure ; make; make install (no error report), not run
./snddevices

No sound ! So much days, so much test..... (if i915GM chipset + Conexant
chip...(see below lspci), will be powered by alsa-1.0.9rc4 ? --- if still
not, I will just wait for new alsa-driver.)

thanks
======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
has duplicate       0001931 Unknown AC97 codec, digital sound works
======================================================================

----------------------------------------------------------------------
 trava - 03-30-06 15:47 
----------------------------------------------------------------------
I've the same problem on benq s53y.01, the sound is mute. I tried also to
use snd-hda-intel, but this module don't work at all.
I don't know what to do... :(

----------------------------------------------------------------------
 kesiev - 04-07-06 13:05 
----------------------------------------------------------------------
I'm using a Kubuntu 6.06 (Dapper Drake) Flight and sound is still mute. But
using earphones, i can hear sometime some noise (like a radio tuner) while
changing volume from alsamixer.

Issue History
Date Modified  Username       Field                    Change              
======================================================================
05-28-05 08:49 liangalei      New Issue                                    
05-28-05 08:49 liangalei      Distribution              => Fedora Core 3   
05-28-05 08:49 liangalei      Kernel Version            => 2.6.11-1.14     
05-28-05 09:17 liangalei      Note Added: 0004759                          
05-28-05 09:18 liangalei      Issue Monitored: liangalei                    
05-30-05 03:29 liangalei      Note Added: 0004795                          
06-01-05 16:58 tiwai          Note Added: 0004863                          
06-01-05 17:04 tiwai          Category                 0_compilation problem_!!!
=> PCI - intel8x0
06-02-05 10:42 liangalei      Note Added: 0004875                          
06-06-05 09:53 perex          Assigned To              perex =>            
06-23-05 12:42 tiwai          Note Added: 0005182                          
06-24-05 03:12 liangalei      File Added: asound.state                     
06-24-05 03:13 liangalei      File Added: ac97#0-0                         
06-24-05 03:14 liangalei      File Added: ac97#0-0+regs                    
06-24-05 03:18 liangalei      Note Added: 0005202                          
08-28-05 15:28 ybar           Note Added: 0005962                          
11-29-05 05:59 derek          Issue Monitored: derek                       
11-29-05 06:00 derek          Issue End Monitor: derek                     
11-29-05 06:03 derek          Note Added: 0006870                          
02-07-06 10:03 anhi1968       Issue Monitored: anhi1968                    
02-17-06 22:22 gandhi         Note Added: 0008110                          
02-17-06 23:26 gandhi         Issue Monitored: gandhi                      
02-17-06 23:28 gandhi         Note Edited: 0008110                         
02-17-06 23:43 gandhi         Note Edited: 0008110                         
02-18-06 02:05 gandhi         Note Added: 0008112                          
02-18-06 08:13 liangalei      Note Added: 0008116                          
02-18-06 15:56 gandhi         Issue Monitored: tiwai                       
02-18-06 15:56 gandhi         Note Added: 0008120                          
02-28-06 12:02 anhi1968       Issue End Monitor: anhi1968                    
03-03-06 08:29 robitech       Note Added: 0008336                          
03-15-06 05:34 JProgrammer    Note Added: 0008526                          
03-15-06 05:37 JProgrammer    Issue Monitored: JProgrammer                    
03-15-06 06:39 Kooper         Note Added: 0008527                          
03-15-06 11:40 tiwai          Note Added: 0008531                          
03-15-06 11:53 Kooper         Note Added: 0008535                          
03-15-06 12:13 JProgrammer    Note Added: 0008538                          
03-15-06 12:18 tiwai          Note Added: 0008540                          
03-15-06 23:48 JProgrammer    Note Added: 0008579                          
03-16-06 15:04 tiwai          Note Added: 0008606                          
03-16-06 15:05 tiwai          File Added: ac97-remove-modem.diff                
   
03-16-06 19:34 rlrevell       Relationship added       has duplicate 0001931
03-17-06 04:10 Kooper         Note Added: 0008633                          
03-17-06 12:07 tiwai          Note Added: 0008641                          
03-17-06 12:32 Kooper         File Added: kooper-alsa-bugreport.tgz             
      
03-17-06 12:35 Kooper         Note Added: 0008644                          
03-21-06 02:38 JProgrammer    Note Added: 0008736                          
03-25-06 10:51 alessiodf      Note Added: 0008944                          
03-26-06 20:12 alessiodf      Note Edited: 0008944                         
03-26-06 20:15 alessiodf      Note Edited: 0008944                         
03-30-06 15:47 trava          Note Added: 0009034                          
04-07-06 13:05 kesiev         Note Added: 0009137                          
======================================================================




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642

^ permalink raw reply

* Re: Real Time Mirroring of a NAS
From: Joshua Baker-LePain @ 2006-04-07 11:04 UTC (permalink / raw)
  To: andy liebman; +Cc: linux-raid
In-Reply-To: <44364336.7060704@aol.com>

On Fri, 7 Apr 2006 at 6:47am, andy liebman wrote

> I'm looking for a way to create a real-time mirror of a NAS. In other words, 
> say I have a 5.5 TB NAS (3ware 16-drive array, RAID-5, 500 GB drives). I want 
> to mirror it in real time to a completely separate 5.5 TB NAS. RSYNCing in 
> the background is not an option. The two NAS boxes need to hold identical 
> data at all times. It is NOT necessary that the data be accessed from both 
> NAS boxes simultaneously. One is simply a backup of the other.
>
> I guess one option might be to use Redhat's Global File System (GFS). 
> Although there seems to be an 8TB limit for a GFS filesystem, which could be 
> an issue down the road.

I don't have any experience with it, but I've often seen DRBD mentioned 
for just this sort of situation.  I'd look into that.

-- 
Joshua Baker-LePain
Department of Biomedical Engineering
Duke University

^ permalink raw reply

* [PATCH 2.6.17-rc1-mm1] Remove unused prepare_to_switch macro
From: Hirokazu Takata @ 2006-04-07 11:02 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, takata, Mikael Starvik, David Howells,
	Yoshinori Sato, Miles Bader, Chris Zankel

This patch removes prepare_to_switch() macros.
It seems that they are no longer used in the kernel.

Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Cc: Mikael Starvik <starvik@axis.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
Cc: Chris Zankel <chris@zankel.net>
---

 include/asm-cris/system.h   |    1 -
 include/asm-frv/system.h    |    2 --
 include/asm-h8300/system.h  |    2 --
 include/asm-m32r/system.h   |    4 ----
 include/asm-v850/system.h   |    2 --
 include/asm-xtensa/system.h |    2 --
 6 files changed, 13 deletions(-)

Index: linux-2.6.17-rc1-mm1/include/asm-cris/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-cris/system.h	2006-04-07 12:16:12.536648308 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-cris/system.h	2006-04-07 14:59:15.539846173 +0900
@@ -8,7 +8,6 @@
  */
 
 extern struct task_struct *resume(struct task_struct *prev, struct task_struct *next, int);
-#define prepare_to_switch()     do { } while(0)
 #define switch_to(prev,next,last) last = resume(prev,next, \
 					 (int)&((struct task_struct *)0)->thread)
 
Index: linux-2.6.17-rc1-mm1/include/asm-frv/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-frv/system.h	2006-04-07 12:16:13.424508512 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-frv/system.h	2006-04-07 14:59:15.547844914 +0900
@@ -18,8 +18,6 @@
 
 struct thread_struct;
 
-#define prepare_to_switch()    do { } while(0)
-
 /*
  * switch_to(prev, next) should switch from task `prev' to `next'
  * `prev' will never be the same as `next'.
Index: linux-2.6.17-rc1-mm1/include/asm-h8300/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-h8300/system.h	2006-04-07 12:16:16.056094164 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-h8300/system.h	2006-04-07 14:59:15.559843026 +0900
@@ -4,8 +4,6 @@
 #include <linux/config.h> /* get configuration macros */
 #include <linux/linkage.h>
 
-#define prepare_to_switch()	do { } while(0)
-
 /*
  * switch_to(n) should switch tasks to task ptr, first checking that
  * ptr isn't the current task, in which case it does nothing.  This
Index: linux-2.6.17-rc1-mm1/include/asm-m32r/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-m32r/system.h	2006-04-07 12:16:21.918171168 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-m32r/system.h	2006-04-07 14:59:15.568841610 +0900
@@ -22,10 +22,6 @@
  * `next' and `prev' should be struct task_struct, but it isn't always defined
  */
 
-#ifndef CONFIG_SMP
-#define prepare_to_switch()  do { } while(0)
-#endif	/* not CONFIG_SMP */
-
 #define switch_to(prev, next, last)  do { \
 	register unsigned long  arg0 __asm__ ("r0") = (unsigned long)prev; \
 	register unsigned long  arg1 __asm__ ("r1") = (unsigned long)next; \
Index: linux-2.6.17-rc1-mm1/include/asm-v850/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-v850/system.h	2006-04-07 12:16:51.535507822 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-v850/system.h	2006-04-07 14:59:15.576840351 +0900
@@ -18,8 +18,6 @@
 #include <asm/ptrace.h>
 
 
-#define prepare_to_switch()	do { } while (0)
-
 /*
  * switch_to(n) should switch tasks to task ptr, first checking that
  * ptr isn't the current task, in which case it does nothing.
Index: linux-2.6.17-rc1-mm1/include/asm-xtensa/system.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-xtensa/system.h	2006-04-07 12:16:53.529193908 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-xtensa/system.h	2006-04-07 14:59:15.585838935 +0900
@@ -111,8 +111,6 @@ extern void *_switch_to(void *last, void
 
 #endif	/* __ASSEMBLY__ */
 
-#define prepare_to_switch()	do { } while(0)
-
 #define switch_to(prev,next,last)		\
 do {						\
 	clear_cpenable();			\

--
Hirokazu Takata <takata@linux-m32r.org>
Linux/M32R Project:  http://www.linux-m32r.org/


^ permalink raw reply

* MacOS X on Xen
From: Jun OKAJIMA @ 2006-04-07 11:02 UTC (permalink / raw)
  To: xen-devel


Somebody know feasiblity of MacOS X on Xen?
Of course, it is possible if you have VT, but I think DomU kernel
( a Xen kernel you dont have to use VT with) is also possible.
It comes with a source code of the core part ( Mach micro kernel),
so I believe that it is not impossible to run MacOS X as DomU of Xen,
without VT.

                    --- Okajima, Jun. Tokyo, Japan.

^ permalink raw reply

* Re: add new code section for kernel code
From: saeed bishara @ 2006-04-07 11:02 UTC (permalink / raw)
  To: Paolo Ornati; +Cc: linux-kernel, linux-arm-kernel, Linux-arm-toolchain
In-Reply-To: <c70ff3ad0604060947t728fbad9g2e3b35198f9b0f66@mail.gmail.com>

I noticed the arch/arm/boot/compressed/ files compiled with
ffunction-sections switch, so I added the -fno-function-sections to
the EXTRA_CFLAGS of the compressed/Makefile. And this solved the
problem.



On 4/6/06, saeed bishara <saeed.bishara@gmail.com> wrote:
> Hi,
>     I've tried to port this to my kernel (2.6.12.6), but the kenel
> fails to boot; it stops after Starting kernel ....
>    I tried to add only the CFLAGS += -ffunction-sections to the
> arch/arm/Makefile, and it still fails. my tool chains is "gcc version
> 3.4.4 (release) (CodeSourcery ARM 2005q3-2)"
> any ideas?

^ permalink raw reply

* Re: [patch][rfc] quell interactive feeding frenzy
From: Con Kolivas @ 2006-04-07 11:00 UTC (permalink / raw)
  To: Mike Galbraith
  Cc: Ingo Molnar, Andrew Morton, linux-kernel, nickpiggin, pwil3058
In-Reply-To: <1144407438.8870.5.camel@homer>

On Friday 07 April 2006 20:57, Mike Galbraith wrote:
> On Fri, 2006-04-07 at 11:52 +0200, Ingo Molnar wrote:
> > i think we should try Mike's patches after smpnice got ironed out. The
> > extreme-starvation cases should be handled more or less correctly now by
> > the minimal set of changes from Mike that are upstream (knock on wood),
> > the singing-dancing add-ons can probably wait a bit and smpnice clearly
> > has priority.
>
> (I'm still trying to find ways to do less singing and dancing.)
>
> This patch you may notice wasn't against an mm kernel.  I was more or
> less separating this one from the others, because I consider this
> problem to be very severe.  IMHO, this or something like it needs to get
> upstream soon.

Which is a fine observation but your code is changing every 2nd day. Which is 
also fine because code needs to evolve. However that's not really the way we 
push stuff upstream...

-ck

^ permalink raw reply

* Re: [patch][rfc] quell interactive feeding frenzy
From: Mike Galbraith @ 2006-04-07 10:57 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Andrew Morton, linux-kernel, nickpiggin, pwil3058, kernel
In-Reply-To: <20060407095247.GA2788@elte.hu>

On Fri, 2006-04-07 at 11:52 +0200, Ingo Molnar wrote:

> i think we should try Mike's patches after smpnice got ironed out. The 
> extreme-starvation cases should be handled more or less correctly now by 
> the minimal set of changes from Mike that are upstream (knock on wood), 
> the singing-dancing add-ons can probably wait a bit and smpnice clearly 
> has priority.

(I'm still trying to find ways to do less singing and dancing.)

This patch you may notice wasn't against an mm kernel.  I was more or
less separating this one from the others, because I consider this
problem to be very severe.  IMHO, this or something like it needs to get
upstream soon.

	-Mike


^ permalink raw reply

* Re: RT task scheduling
From: Ingo Molnar @ 2006-04-07 10:51 UTC (permalink / raw)
  To: Bill Huey
  Cc: Darren Hart, linux-kernel, Thomas Gleixner, Stultz, John,
	Peter Williams, Siddha, Suresh B, Nick Piggin
In-Reply-To: <20060407103926.GC11706@gnuppy.monkey.org>


* Bill Huey <billh@gnuppy.monkey.org> wrote:

> On Fri, Apr 07, 2006 at 11:19:46AM +0200, Ingo Molnar wrote:
> > -ENOPARSE. CPU binding brings with itself obvious disadvantages that 
> > some applications are not ready to pay. CPU binding restricts the 
> > scheduler from achieving best resource utilization. That may be fine for 
> > some applications, but is not good enough for a good number of 
> > applications. So in no way can any 'CPU binding mechanism' (which 
> > already exists in multiple forms) replace the need and desire for a 
> > globally scheduled class of RT tasks.
> 
> You're discussing a different problem than what I'm talking about. 
> [...]

no, i'm discussing precisely the point you raised:

>>> You should consider for a moment to allow for the binding of a 
>>> thread to a CPU to determine the behavior of a SCHED_FIFO class task 
>>> instead of creating a new run category. [...]

with the observation that 1) binding is already possible [so your 
suggestion is apparently knocking on open doors] 2) binding is a 
separate mechanism (not adequate for all workloads) and it is thus 
orthogonal to what i'm trying to achieve with the "RT overload" stuff.  
Really simple and straightforward observations i think.

	Ingo

^ permalink raw reply

* Re: Mini-os with Lua
From: John D. Ramsdell @ 2006-04-07 10:48 UTC (permalink / raw)
  To: xen-devel
In-Reply-To: <ogtwte230ua.fsf_-_@divan.mitre.org>

ramsdell@mitre.org (John D. Ramsdell) writes:

> The C library that is part of mini-os in inadequate for use with
> Lua, however, one can build a cross-compiler that can do the job.
> ...
> I have also built Lua with it so as to ensure that all of its
> globals are resolved by newlib.

Actual, not all the globals were resolved by newlib.  Lua uses the
time system call, but it can easily be implemented in terms of
gettimeofday.

John

^ permalink raw reply

* [PATCH 2.6.17-rc1-mm1] m32r: security fix of {get,put}_user macros
From: Hirokazu Takata @ 2006-04-07 10:48 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, gniibe, takata

Update {get,put}_user macros for m32r kernel.
- Modify get_user to use __get_user_asm macro, instead of __get_user_x macro.
- Remove arch/m32r/lib/{get,put}user.S.
- Some cosmetic updates.

I would like to thank NIIBE Yutaka for his reporting about
the m32r kernel's security problem in {get,put}_user macros.

There were no address checking for user space access in
{get,put}_user macros.  ;-)

Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
Cc: NIIBE Yutaka <gniibe@fsij.org>
---

 arch/m32r/kernel/m32r_ksyms.c |    4 
 arch/m32r/lib/Makefile        |    4 
 arch/m32r/lib/getuser.S       |   88 -------------
 arch/m32r/lib/putuser.S       |   84 -------------
 include/asm-m32r/uaccess.h    |  266 ++++++++++++++++++------------------------
 5 files changed, 117 insertions(+), 329 deletions(-)

Index: linux-2.6.17-rc1-mm1/include/asm-m32r/uaccess.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-m32r/uaccess.h	2006-04-07 12:16:22.000000000 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-m32r/uaccess.h	2006-04-07 12:54:44.045862148 +0900
@@ -5,17 +5,9 @@
  *  linux/include/asm-m32r/uaccess.h
  *
  *  M32R version.
- *    Copyright (C) 2004  Hirokazu Takata <takata at linux-m32r.org>
+ *    Copyright (C) 2004, 2006  Hirokazu Takata <takata at linux-m32r.org>
  */
 
-#undef UACCESS_DEBUG
-
-#ifdef UACCESS_DEBUG
-#define UAPRINTK(args...) printk(args)
-#else
-#define UAPRINTK(args...)
-#endif /* UACCESS_DEBUG */
-
 /*
  * User space memory access functions
  */
@@ -38,27 +30,29 @@
 #define MAKE_MM_SEG(s)	((mm_segment_t) { (s) })
 
 #ifdef CONFIG_MMU
+
 #define KERNEL_DS	MAKE_MM_SEG(0xFFFFFFFF)
 #define USER_DS		MAKE_MM_SEG(PAGE_OFFSET)
-#else
-#define KERNEL_DS	MAKE_MM_SEG(0xFFFFFFFF)
-#define USER_DS		MAKE_MM_SEG(0xFFFFFFFF)
-#endif /* CONFIG_MMU */
-
 #define get_ds()	(KERNEL_DS)
-#ifdef CONFIG_MMU
 #define get_fs()	(current_thread_info()->addr_limit)
 #define set_fs(x)	(current_thread_info()->addr_limit = (x))
-#else
+
+#else /* not CONFIG_MMU */
+
+#define KERNEL_DS	MAKE_MM_SEG(0xFFFFFFFF)
+#define USER_DS		MAKE_MM_SEG(0xFFFFFFFF)
+#define get_ds()	(KERNEL_DS)
+
 static inline mm_segment_t get_fs(void)
 {
-  return USER_DS;
+	return USER_DS;
 }
 
 static inline void set_fs(mm_segment_t s)
 {
 }
-#endif /* CONFIG_MMU */
+
+#endif /* not CONFIG_MMU */
 
 #define segment_eq(a,b)	((a).seg == (b).seg)
 
@@ -83,9 +77,9 @@ static inline void set_fs(mm_segment_t s
 		"	subx	%0, %0\n"				\
 		"	cmpu	%4, %1\n"				\
 		"	subx	%0, %5\n"				\
-		: "=&r"(flag), "=r"(sum)				\
-		: "1"(addr), "r"((int)(size)), 				\
-		  "r"(current_thread_info()->addr_limit.seg), "r"(0)	\
+		: "=&r" (flag), "=r" (sum)				\
+		: "1" (addr), "r" ((int)(size)), 			\
+		  "r" (current_thread_info()->addr_limit.seg), "r" (0)	\
 		: "cbit" );						\
 	flag; })
 
@@ -113,10 +107,10 @@ static inline void set_fs(mm_segment_t s
 #else
 static inline int access_ok(int type, const void *addr, unsigned long size)
 {
-  extern unsigned long memory_start, memory_end;
-  unsigned long val = (unsigned long)addr;
+	extern unsigned long memory_start, memory_end;
+	unsigned long val = (unsigned long)addr;
 
-  return ((val >= memory_start) && ((val + size) < memory_end));
+	return ((val >= memory_start) && ((val + size) < memory_end));
 }
 #endif /* CONFIG_MMU */
 
@@ -155,39 +149,6 @@ extern int fixup_exception(struct pt_reg
  * accesses to the same area of user memory).
  */
 
-extern void __get_user_1(void);
-extern void __get_user_2(void);
-extern void __get_user_4(void);
-
-#ifndef MODULE
-#define __get_user_x(size,ret,x,ptr) 					\
-	__asm__ __volatile__(						\
-		"	mv	r0, %0\n"				\
-		"	mv	r1, %1\n" 				\
-		"	bl __get_user_" #size "\n"			\
-		"	mv	%0, r0\n"				\
-		"	mv	%1, r1\n" 				\
-		: "=r"(ret), "=r"(x) 					\
-		: "0"(ptr)						\
-		: "r0", "r1", "r14" )
-#else /* MODULE */
-/*
- * Use "jl" instead of "bl" for MODULE
- */
-#define __get_user_x(size,ret,x,ptr) 					\
-	__asm__ __volatile__(						\
-		"	mv	r0, %0\n"				\
-		"	mv	r1, %1\n" 				\
-		"	seth	lr, #high(__get_user_" #size ")\n"	\
-		"	or3	lr, lr, #low(__get_user_" #size ")\n"	\
-		"	jl 	lr\n"					\
-		"	mv	%0, r0\n"				\
-		"	mv	%1, r1\n" 				\
-		: "=r"(ret), "=r"(x) 					\
-		: "0"(ptr)						\
-		: "r0", "r1", "r14" )
-#endif
-
 /* Careful: we have to cast the result to the type of the pointer for sign
    reasons */
 /**
@@ -208,20 +169,7 @@ extern void __get_user_4(void);
  * On error, the variable @x is set to zero.
  */
 #define get_user(x,ptr)							\
-({	int __ret_gu;							\
-	unsigned long __val_gu;						\
-	__chk_user_ptr(ptr);						\
-	switch(sizeof (*(ptr))) {					\
-	case 1:  __get_user_x(1,__ret_gu,__val_gu,ptr); break;		\
-	case 2:  __get_user_x(2,__ret_gu,__val_gu,ptr); break;		\
-	case 4:  __get_user_x(4,__ret_gu,__val_gu,ptr); break;		\
-	default: __get_user_x(X,__ret_gu,__val_gu,ptr); break;		\
-	}								\
-	(x) = (__typeof__(*(ptr)))__val_gu;				\
-	__ret_gu;							\
-})
-
-extern void __put_user_bad(void);
+	__get_user_check((x),(ptr),sizeof(*(ptr)))
 
 /**
  * put_user: - Write a simple value into user space.
@@ -240,8 +188,7 @@ extern void __put_user_bad(void);
  * Returns zero on success, or -EFAULT on error.
  */
 #define put_user(x,ptr)							\
-  __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
-
+	__put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
 
 /**
  * __get_user: - Get a simple variable from user space, with less checking.
@@ -264,8 +211,64 @@ extern void __put_user_bad(void);
  * On error, the variable @x is set to zero.
  */
 #define __get_user(x,ptr) \
-  __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
+	__get_user_nocheck((x),(ptr),sizeof(*(ptr)))
 
+#define __get_user_nocheck(x,ptr,size)					\
+({									\
+	long __gu_err = 0;						\
+	unsigned long __gu_val;						\
+	might_sleep();							\
+	__get_user_size(__gu_val,(ptr),(size),__gu_err);		\
+	(x) = (__typeof__(*(ptr)))__gu_val;				\
+	__gu_err;							\
+})
+
+#define __get_user_check(x,ptr,size)					\
+({									\
+	long __gu_err = -EFAULT;					\
+	unsigned long __gu_val = 0;					\
+	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);		\
+	might_sleep();							\
+	if (access_ok(VERIFY_READ,__gu_addr,size))			\
+		__get_user_size(__gu_val,__gu_addr,(size),__gu_err);	\
+	(x) = (__typeof__(*(ptr)))__gu_val;				\
+	__gu_err;							\
+})
+
+extern long __get_user_bad(void);
+
+#define __get_user_size(x,ptr,size,retval)				\
+do {									\
+	retval = 0;							\
+	__chk_user_ptr(ptr);						\
+	switch (size) {							\
+	  case 1: __get_user_asm(x,ptr,retval,"ub"); break;		\
+	  case 2: __get_user_asm(x,ptr,retval,"uh"); break;		\
+	  case 4: __get_user_asm(x,ptr,retval,""); break;		\
+	  default: (x) = __get_user_bad();				\
+	}								\
+} while (0)
+
+#define __get_user_asm(x, addr, err, itype)				\
+	__asm__ __volatile__(						\
+		"	.fillinsn\n"					\
+		"1:	ld"itype" %1,@%2\n"				\
+		"	.fillinsn\n"					\
+		"2:\n"							\
+		".section .fixup,\"ax\"\n"				\
+		"	.balign 4\n"					\
+		"3:	ldi %0,%3\n"					\
+		"	seth r14,#high(2b)\n"				\
+		"	or3 r14,r14,#low(2b)\n"				\
+		"	jmp r14\n"					\
+		".previous\n"						\
+		".section __ex_table,\"a\"\n"				\
+		"	.balign 4\n"					\
+		"	.long 1b,3b\n"					\
+		".previous"						\
+		: "=&r" (err), "=&r" (x)				\
+		: "r" (addr), "i" (-EFAULT), "0" (err)			\
+		: "r14", "memory")
 
 /**
  * __put_user: - Write a simple value into user space, with less checking.
@@ -287,11 +290,13 @@ extern void __put_user_bad(void);
  * Returns zero on success, or -EFAULT on error.
  */
 #define __put_user(x,ptr) \
-  __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
+	__put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
+
 
 #define __put_user_nocheck(x,ptr,size)					\
 ({									\
 	long __pu_err;							\
+	might_sleep();							\
 	__put_user_size((x),(ptr),(size),__pu_err);			\
 	__pu_err;							\
 })
@@ -308,28 +313,28 @@ extern void __put_user_bad(void);
 })
 
 #if defined(__LITTLE_ENDIAN__)
-#define __put_user_u64(x, addr, err)                                    \
-        __asm__ __volatile__(                                           \
-                "       .fillinsn\n"                                    \
-                "1:     st %L1,@%2\n"                                    \
-                "       .fillinsn\n"                                    \
-                "2:     st %H1,@(4,%2)\n"                                \
-                "       .fillinsn\n"                                    \
-                "3:\n"                                                  \
-                ".section .fixup,\"ax\"\n"                              \
-                "       .balign 4\n"                                    \
-                "4:     ldi %0,%3\n"                                    \
-                "       seth r14,#high(3b)\n"                           \
-                "       or3 r14,r14,#low(3b)\n"                         \
-                "       jmp r14\n"                                      \
-                ".previous\n"                                           \
-                ".section __ex_table,\"a\"\n"                           \
-                "       .balign 4\n"                                    \
-                "       .long 1b,4b\n"                                  \
-                "       .long 2b,4b\n"                                  \
-                ".previous"                                             \
-                : "=&r"(err)                                             \
-                : "r"(x), "r"(addr), "i"(-EFAULT), "0"(err)		\
+#define __put_user_u64(x, addr, err)					\
+        __asm__ __volatile__(						\
+                "       .fillinsn\n"					\
+                "1:     st %L1,@%2\n"					\
+                "       .fillinsn\n"					\
+                "2:     st %H1,@(4,%2)\n"				\
+                "       .fillinsn\n"					\
+                "3:\n"							\
+                ".section .fixup,\"ax\"\n"				\
+                "       .balign 4\n"					\
+                "4:     ldi %0,%3\n"					\
+                "       seth r14,#high(3b)\n"				\
+                "       or3 r14,r14,#low(3b)\n"				\
+                "       jmp r14\n"					\
+                ".previous\n"						\
+                ".section __ex_table,\"a\"\n"				\
+                "       .balign 4\n"					\
+                "       .long 1b,4b\n"					\
+                "       .long 2b,4b\n"					\
+                ".previous"						\
+                : "=&r" (err)						\
+                : "r" (x), "r" (addr), "i" (-EFAULT), "0" (err)		\
                 : "r14", "memory")
 
 #elif defined(__BIG_ENDIAN__)
@@ -353,13 +358,15 @@ extern void __put_user_bad(void);
 		"	.long 1b,4b\n"					\
 		"	.long 2b,4b\n"					\
 		".previous"						\
-		: "=&r"(err)						\
-		: "r"(x), "r"(addr), "i"(-EFAULT), "0"(err)		\
+		: "=&r" (err)						\
+		: "r" (x), "r" (addr), "i" (-EFAULT), "0" (err)		\
 		: "r14", "memory")
 #else
 #error no endian defined
 #endif
 
+extern void __put_user_bad(void);
+
 #define __put_user_size(x,ptr,size,retval)				\
 do {									\
 	retval = 0;							\
@@ -398,52 +405,8 @@ struct __large_struct { unsigned long bu
 		"	.balign 4\n"					\
 		"	.long 1b,3b\n"					\
 		".previous"						\
-		: "=&r"(err)						\
-		: "r"(x), "r"(addr), "i"(-EFAULT), "0"(err)		\
-		: "r14", "memory")
-
-#define __get_user_nocheck(x,ptr,size)					\
-({									\
-	long __gu_err;							\
-	unsigned long __gu_val;						\
-	__get_user_size(__gu_val,(ptr),(size),__gu_err);		\
-	(x) = (__typeof__(*(ptr)))__gu_val;				\
-	__gu_err;							\
-})
-
-extern long __get_user_bad(void);
-
-#define __get_user_size(x,ptr,size,retval)				\
-do {									\
-	retval = 0;							\
-	__chk_user_ptr(ptr);						\
-	switch (size) {							\
-	  case 1: __get_user_asm(x,ptr,retval,"ub"); break;		\
-	  case 2: __get_user_asm(x,ptr,retval,"uh"); break;		\
-	  case 4: __get_user_asm(x,ptr,retval,""); break;		\
-	  default: (x) = __get_user_bad();				\
-	}								\
-} while (0)
-
-#define __get_user_asm(x, addr, err, itype)				\
-	__asm__ __volatile__(						\
-		"	.fillinsn\n"					\
-		"1:	ld"itype" %1,@%2\n"				\
-		"	.fillinsn\n"					\
-		"2:\n"							\
-		".section .fixup,\"ax\"\n"				\
-		"	.balign 4\n"					\
-		"3:	ldi %0,%3\n"					\
-		"	seth r14,#high(2b)\n"				\
-		"	or3 r14,r14,#low(2b)\n"				\
-		"	jmp r14\n"					\
-		".previous\n"						\
-		".section __ex_table,\"a\"\n"				\
-		"	.balign 4\n"					\
-		"	.long 1b,3b\n"					\
-		".previous"						\
-		: "=&r"(err), "=&r"(x)					\
-		: "r"(addr), "i"(-EFAULT), "0"(err)			\
+		: "=&r" (err)						\
+		: "r" (x), "r" (addr), "i" (-EFAULT), "0" (err)		\
 		: "r14", "memory")
 
 /*
@@ -453,7 +416,6 @@ do {									\
  * anything, so this is accurate.
  */
 
-
 /*
  * Copy To/From Userspace
  */
@@ -511,8 +473,9 @@ do {									\
 		"	.long 2b,9b\n"					\
 		"	.long 3b,9b\n"					\
 		".previous\n"						\
-		: "=&r"(__dst), "=&r"(__src), "=&r"(size), "=&r"(__c)	\
-		: "0"(to), "1"(from), "2"(size), "3"(size / 4)		\
+		: "=&r" (__dst), "=&r" (__src), "=&r" (size),		\
+		  "=&r" (__c)						\
+		: "0" (to), "1" (from), "2" (size), "3" (size / 4)	\
 		: "r14", "memory");					\
 } while (0)
 
@@ -573,8 +536,9 @@ do {									\
 		"	.long 2b,7b\n"					\
 		"	.long 3b,7b\n"					\
 		".previous\n"						\
-		: "=&r"(__dst), "=&r"(__src), "=&r"(size), "=&r"(__c)	\
-		: "0"(to), "1"(from), "2"(size), "3"(size / 4)		\
+		: "=&r" (__dst), "=&r" (__src), "=&r" (size),		\
+		  "=&r" (__c)						\
+		: "0" (to), "1" (from), "2" (size), "3" (size / 4)	\
 		: "r14", "memory");					\
 } while (0)
 
@@ -676,7 +640,7 @@ unsigned long __generic_copy_from_user(v
 #define copy_from_user(to,from,n)			\
 ({							\
 	might_sleep();					\
-__generic_copy_from_user((to),(from),(n));	\
+	__generic_copy_from_user((to),(from),(n));	\
 })
 
 long __must_check strncpy_from_user(char *dst, const char __user *src,
Index: linux-2.6.17-rc1-mm1/arch/m32r/kernel/m32r_ksyms.c
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/kernel/m32r_ksyms.c	2006-04-07 12:52:48.000000000 +0900
+++ linux-2.6.17-rc1-mm1/arch/m32r/kernel/m32r_ksyms.c	2006-04-07 12:56:36.868028610 +0900
@@ -38,10 +38,6 @@ EXPORT_SYMBOL(__udelay);
 EXPORT_SYMBOL(__delay);
 EXPORT_SYMBOL(__const_udelay);
 
-EXPORT_SYMBOL(__get_user_1);
-EXPORT_SYMBOL(__get_user_2);
-EXPORT_SYMBOL(__get_user_4);
-
 EXPORT_SYMBOL(strstr);
 
 EXPORT_SYMBOL(strncpy_from_user);
Index: linux-2.6.17-rc1-mm1/arch/m32r/lib/Makefile
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/lib/Makefile	2006-04-07 12:12:17.000000000 +0900
+++ linux-2.6.17-rc1-mm1/arch/m32r/lib/Makefile	2006-04-07 12:54:44.085855832 +0900
@@ -2,6 +2,6 @@
 # Makefile for M32R-specific library files..
 #
 
-lib-y  := checksum.o ashxdi3.o memset.o memcpy.o getuser.o \
-	  putuser.o delay.o strlen.o usercopy.o csum_partial_copy.o
+lib-y  := checksum.o ashxdi3.o memset.o memcpy.o \
+	  delay.o strlen.o usercopy.o csum_partial_copy.o
 
Index: linux-2.6.17-rc1-mm1/arch/m32r/lib/getuser.S
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/lib/getuser.S	2006-04-07 12:12:17.000000000 +0900
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,88 +0,0 @@
-/*
- * __get_user functions.
- *
- * (C) Copyright 2001 Hirokazu Takata
- *
- * These functions have a non-standard call interface
- * to make them more efficient, especially as they
- * return an error value in addition to the "real"
- * return value.
- */
-
-#include <linux/config.h>
-
-/*
- * __get_user_X
- *
- * Inputs:	r0 contains the address
- *
- * Outputs:	r0 is error code (0 or -EFAULT)
- *		r1 contains zero-extended value
- *
- * These functions should not modify any other registers,
- * as they get called from within inline assembly.
- */
-
-#ifdef CONFIG_ISA_DUAL_ISSUE
-
-	.text
-	.balign 4
-	.globl __get_user_1
-__get_user_1:
-1:	ldub	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __get_user_2
-__get_user_2:
-2:	lduh	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __get_user_4
-__get_user_4:
-3:	ld	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-bad_get_user:
-	ldi	r1, #0		    ||	ldi	r0, #-14
-	jmp	r14
-
-#else /* not CONFIG_ISA_DUAL_ISSUE */
-
-	.text
-	.balign 4
-	.globl __get_user_1
-__get_user_1:
-1:	ldub	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __get_user_2
-__get_user_2:
-2:	lduh	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __get_user_4
-__get_user_4:
-3:	ld	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-bad_get_user:
-	ldi	r1, #0
-	ldi	r0, #-14
-	jmp	r14
-
-#endif /* not CONFIG_ISA_DUAL_ISSUE */
-
-.section __ex_table,"a"
-	.long 1b,bad_get_user
-	.long 2b,bad_get_user
-	.long 3b,bad_get_user
-.previous
-
-	.end
Index: linux-2.6.17-rc1-mm1/arch/m32r/lib/putuser.S
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/lib/putuser.S	2006-04-07 12:12:17.000000000 +0900
+++ /dev/null	1970-01-01 00:00:00.000000000 +0000
@@ -1,84 +0,0 @@
-/*
- * __put_user functions.
- *
- * (C) Copyright 1998 Linus Torvalds
- * (C) Copyright 2001 Hirokazu Takata
- *
- * These functions have a non-standard call interface
- * to make them more efficient.
- */
-
-#include <linux/config.h>
-
-/*
- * __put_user_X
- *
- * Inputs:	r0 contains the address
- *		r1 contains the value
- *
- * Outputs:	r0 is error code (0 or -EFAULT)
- *		r1 is corrupted (will contain "current_task").
- *
- * These functions should not modify any other registers,
- * as they get called from within inline assembly.
- */
-
-#ifdef CONFIG_ISA_DUAL_ISSUE
-
-	.text
-	.balign 4
-	.globl __put_user_1
-__put_user_1:
-1:	stb	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __put_user_2
-__put_user_2:
-2:	sth	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __put_user_4
-__put_user_4:
-3:	st	r1, @r0		    ||	ldi	r0, #0
-	jmp	r14
-
-bad_put_user:
-	ldi	r0, #-14	    ||	jmp	r14
-
-#else /* not CONFIG_ISA_DUAL_ISSUE */
-
-	.text
-	.balign 4
-	.globl __put_user_1
-__put_user_1:
-1:	stb	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __put_user_2
-__put_user_2:
-2:	sth	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-	.balign 4
-	.globl __put_user_4
-__put_user_4:
-3:	st	r1, @r0
-	ldi	r0, #0
-	jmp	r14
-
-bad_put_user:
-	ldi	r0, #-14
-	jmp	r14
-
-#endif /* not CONFIG_ISA_DUAL_ISSUE */
-
-.section __ex_table,"a"
-	.long 1b,bad_put_user
-	.long 2b,bad_put_user
-	.long 3b,bad_put_user
-.previous

--
Hirokazu Takata <takata@linux-m32r.org>
Linux/M32R Project:  http://www.linux-m32r.org/
 


^ permalink raw reply

* [PATCH 2.6.17-rc1-mm1] m32r: Fix cpu_possible_map and cpu_present_map initialization for SMP kernel
From: Hirokazu Takata @ 2006-04-07 10:47 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, fujiwara, takata

Hello,

This patch fixes a boot problem of the m32r SMP kernel
2.6.16-rc1-mm3 or later.

In this patch, cpu_possible_map is statically initialized,
and cpu_present_map is also copied from cpu_possible_map in
smp_prepare_cpus(), because the m32r architecture has not
supported CPU hotplug yet.

Signed-off-by: Hayato Fujiwara <fujiwara.hayato@renesas.com>
Signed-off-by: Hirokazu Takata <takata@linux-m32r.org>
---

 arch/m32r/kernel/setup.c   |   12 +++++-------
 arch/m32r/kernel/smpboot.c |   19 ++++++++++---------
 include/asm-m32r/smp.h     |    3 ++-
 3 files changed, 17 insertions(+), 17 deletions(-)

Index: linux-2.6.17-rc1-mm1/arch/m32r/kernel/setup.c
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/kernel/setup.c	2006-04-07 15:45:16.753827627 +0900
+++ linux-2.6.17-rc1-mm1/arch/m32r/kernel/setup.c	2006-04-07 15:45:46.815091003 +0900
@@ -9,6 +9,7 @@
 
 #include <linux/config.h>
 #include <linux/init.h>
+#include <linux/kernel.h>
 #include <linux/stddef.h>
 #include <linux/fs.h>
 #include <linux/sched.h>
@@ -219,8 +220,6 @@ static unsigned long __init setup_memory
 extern unsigned long setup_memory(void);
 #endif	/* CONFIG_DISCONTIGMEM */
 
-#define M32R_PCC_PCATCR	0x00ef7014	/* will move to m32r.h */
-
 void __init setup_arch(char **cmdline_p)
 {
 	ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
@@ -269,15 +268,14 @@ void __init setup_arch(char **cmdline_p)
 	paging_init();
 }
 
-static struct cpu cpu[NR_CPUS];
+static struct cpu cpu_devices[NR_CPUS];
 
 static int __init topology_init(void)
 {
-	int cpu_id;
+	int i;
 
-	for (cpu_id = 0; cpu_id < NR_CPUS; cpu_id++)
-		if (cpu_possible(cpu_id))
-			register_cpu(&cpu[cpu_id], cpu_id, NULL);
+	for_each_present_cpu(i)
+		register_cpu(&cpu_devices[i], i, NULL);
 
 	return 0;
 }
Index: linux-2.6.17-rc1-mm1/arch/m32r/kernel/smpboot.c
===================================================================
--- linux-2.6.17-rc1-mm1.orig/arch/m32r/kernel/smpboot.c	2006-04-07 12:12:17.430664372 +0900
+++ linux-2.6.17-rc1-mm1/arch/m32r/kernel/smpboot.c	2006-04-07 15:45:46.822089900 +0900
@@ -39,8 +39,10 @@
  *		Martin J. Bligh	: 	Added support for multi-quad systems
  */
 
+#include <linux/module.h>
 #include <linux/config.h>
 #include <linux/init.h>
+#include <linux/kernel.h>
 #include <linux/mm.h>
 #include <linux/smp_lock.h>
 #include <linux/irq.h>
@@ -72,11 +74,15 @@ physid_mask_t phys_cpu_present_map;
 
 /* Bitmask of currently online CPUs */
 cpumask_t cpu_online_map;
+EXPORT_SYMBOL(cpu_online_map);
 
 cpumask_t cpu_bootout_map;
 cpumask_t cpu_bootin_map;
-cpumask_t cpu_callout_map;
 static cpumask_t cpu_callin_map;
+cpumask_t cpu_callout_map;
+EXPORT_SYMBOL(cpu_callout_map);
+cpumask_t cpu_possible_map = CPU_MASK_ALL;
+EXPORT_SYMBOL(cpu_possible_map);
 
 /* Per CPU bogomips and other parameters */
 struct cpuinfo_m32r cpu_data[NR_CPUS] __cacheline_aligned;
@@ -110,7 +116,6 @@ static unsigned int calibration_result;
 
 void smp_prepare_boot_cpu(void);
 void smp_prepare_cpus(unsigned int);
-static void smp_tune_scheduling(void);
 static void init_ipi_lock(void);
 static void do_boot_cpu(int);
 int __cpu_up(unsigned int);
@@ -177,6 +182,9 @@ void __init smp_prepare_cpus(unsigned in
 	}
 	for (phys_id = 0 ; phys_id < nr_cpu ; phys_id++)
 		physid_set(phys_id, phys_cpu_present_map);
+#ifndef CONFIG_HOTPLUG_CPU
+	cpu_present_map = cpu_possible_map;
+#endif
 
 	show_mp_info(nr_cpu);
 
@@ -186,7 +194,6 @@ void __init smp_prepare_cpus(unsigned in
 	 * Setup boot CPU information
 	 */
 	smp_store_cpu_info(0); /* Final full version of the data */
-	smp_tune_scheduling();
 
 	/*
 	 * If SMP should be disabled, then really disable it!
@@ -230,11 +237,6 @@ smp_done:
 	Dprintk("Boot done.\n");
 }
 
-static void __init smp_tune_scheduling(void)
-{
-	/* Nothing to do. */
-}
-
 /*
  * init_ipi_lock : Initialize IPI locks.
  */
@@ -629,4 +631,3 @@ static void __init unmap_cpu_to_physid(i
 	physid_2_cpu[phys_id] = -1;
 	cpu_2_physid[cpu_id] = -1;
 }
-
Index: linux-2.6.17-rc1-mm1/include/asm-m32r/smp.h
===================================================================
--- linux-2.6.17-rc1-mm1.orig/include/asm-m32r/smp.h	2006-04-07 12:16:21.802189429 +0900
+++ linux-2.6.17-rc1-mm1/include/asm-m32r/smp.h	2006-04-07 15:45:46.834088010 +0900
@@ -67,7 +67,8 @@ extern volatile int cpu_2_physid[NR_CPUS
 #define raw_smp_processor_id()	(current_thread_info()->cpu)
 
 extern cpumask_t cpu_callout_map;
-#define cpu_possible_map cpu_callout_map
+extern cpumask_t cpu_possible_map;
+extern cpumask_t cpu_present_map;
 
 static __inline__ int hard_smp_processor_id(void)
 {


--
Hirokazu Takata <takata@linux-m32r.org>
Linux/M32R Project:  http://www.linux-m32r.org/

^ permalink raw reply

* Real Time Mirroring of a NAS
From: andy liebman @ 2006-04-07 10:47 UTC (permalink / raw)
  To: linux-raid

Hi,

I'm looking for a way to create a real-time mirror of a NAS. In other 
words, say I have a 5.5 TB NAS (3ware 16-drive array, RAID-5, 500 GB 
drives). I want to mirror it in real time to a completely separate 5.5 
TB NAS. RSYNCing in the background is not an option. The two NAS boxes 
need to hold identical data at all times. It is NOT necessary that the 
data be accessed from both NAS boxes simultaneously. One is simply a 
backup of the other.

I guess one option might be to use Redhat's Global File System (GFS). 
Although there seems to be an 8TB limit for a GFS filesystem, which 
could be an issue down the road.

But would the following approach work:

Can I export NAS B as a SAN or ISCSI target, connect the two machines 
with, say, mryinet cards or 10 GbE TOE cards, mount the NAS B volume on 
NAS A, and create a RAID-1 mirror of the two volumes? Is this kind of 
thing done?

Andy Liebman



^ permalink raw reply

* [PATCH/RFC] libata: turn on the ATAPI DMADIR support per word 62 (revised)
From: Albert Lee @ 2006-04-07 10:46 UTC (permalink / raw)
  To: Jeff Garzik
  Cc: linux-ide, Jonathan Benson, Tejun Heo, Carlos Pardo, Doug Maxey
In-Reply-To: <44363D2E.7010700@tw.ibm.com>

Turn on the ATAPI DMADIR support if word 62 indicates it.

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>
---
(Revised to add mwdma/udma mask of word 62 per Jeff's comments.
Need more testing once I get the SiI 3811, etc.)

ATAPI DMADIR follow-up patch to turn on the DMADIR support automatically
by checking identify device word 62. (Thanks for Jeff and Tejun's pointer.)

According to Jonathan's test result, SiI 3611 (the current known bridge that
requires the ATAPI DMADIR support) doesn't implement word 62. So, the
atapi_dmadir parameter is preserved to enable the DMA DIR support manually as
work around.

Patch against upstream (c2a6585296009379e0f4eff39cdcb108b457ebf2).
For your review, thanks.

--- upstream0/include/linux/ata.h	2006-04-06 16:07:36.000000000 +0800
+++ upstream1/include/linux/ata.h	2006-04-07 17:52:24.000000000 +0800
@@ -47,6 +47,7 @@ enum {
 	ATA_ID_PROD_OFS		= 27,
 	ATA_ID_OLD_PIO_MODES	= 51,
 	ATA_ID_FIELD_VALID	= 53,
+	ATA_ID_DMADIR		= 62,
 	ATA_ID_MWDMA_MODES	= 63,
 	ATA_ID_PIO_MODES	= 64,
 	ATA_ID_EIDE_DMA_MIN	= 65,
@@ -264,6 +265,7 @@ struct ata_taskfile {
 #define ata_id_has_dma(id)	((id)[49] & (1 << 8))
 #define ata_id_removeable(id)	((id)[0] & (1 << 7))
 #define ata_id_has_dword_io(id)	((id)[50] & (1 << 0))
+#define ata_id_dmadir_needed(id) ((id)[62] & (1 << 15))
 #define ata_id_u32(id,n)	\
 	(((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
 #define ata_id_u64(id,n)	\
--- upstream0/include/linux/libata.h	2006-04-06 16:07:37.000000000 +0800
+++ upstream1/include/linux/libata.h	2006-04-07 17:53:19.000000000 +0800
@@ -121,6 +121,7 @@ enum {
 	/* struct ata_device stuff */
 	ATA_DFLAG_LBA		= (1 << 0), /* device supports LBA */
 	ATA_DFLAG_LBA48		= (1 << 1), /* device supports LBA48 */
+	ATA_DFLAG_DMADIR	= (1 << 2), /* device requires ATAPI DMADIR */
 	ATA_DFLAG_CFG_MASK	= (1 << 8) - 1,
 
 	ATA_DFLAG_PIO		= (1 << 8), /* device currently in PIO mode */
--- upstream0/drivers/scsi/libata-scsi.c	2006-04-06 16:07:32.000000000 +0800
+++ upstream1/drivers/scsi/libata-scsi.c	2006-04-07 17:54:06.000000000 +0800
@@ -2163,9 +2163,12 @@ static unsigned int atapi_xlat(struct at
 		qc->tf.protocol = ATA_PROT_ATAPI_DMA;
 		qc->tf.feature |= ATAPI_PKT_DMA;
 
-		if (atapi_dmadir && (cmd->sc_data_direction != DMA_TO_DEVICE))
-			/* some SATA bridges need us to indicate data xfer direction */
-			qc->tf.feature |= ATAPI_DMADIR;
+		if ((dev->flags & ATA_DFLAG_DMADIR) || atapi_dmadir)
+			/* some SATA bridges need us to indicate
+			 * data xfer direction
+			 */
+			if (cmd->sc_data_direction != DMA_TO_DEVICE)
+				qc->tf.feature |= ATAPI_DMADIR;
 	}
 
 	qc->nbytes = cmd->bufflen;
--- upstream0/drivers/scsi/libata-core.c	2006-04-06 16:07:32.000000000 +0800
+++ upstream1/drivers/scsi/libata-core.c	2006-04-07 18:35:38.000000000 +0800
@@ -78,7 +78,7 @@ MODULE_PARM_DESC(atapi_enabled, "Enable 
 
 int atapi_dmadir = 0;
 module_param(atapi_dmadir, int, 0444);
-MODULE_PARM_DESC(atapi_dmadir, "Enable ATAPI DMADIR bridge support (0=off, 1=on)");
+MODULE_PARM_DESC(atapi_dmadir, "Manually enable ATAPI DMADIR bridge support (0=off, 1=on)");
 
 int libata_fua = 0;
 module_param_named(fua, libata_fua, int, 0444);
@@ -831,6 +831,7 @@ static inline void ata_dump_id(const u16
 /**
  *	ata_id_xfermask - Compute xfermask from the given IDENTIFY data
  *	@id: IDENTIFY data to compute xfer mask from
+ *	@class: class of attached device
  *
  *	Compute the xfermask for this device. This is not as trivial
  *	as it seems if we must consider early devices correctly.
@@ -843,7 +844,7 @@ static inline void ata_dump_id(const u16
  *	RETURNS:
  *	Computed xfermask
  */
-static unsigned int ata_id_xfermask(const u16 *id)
+static unsigned int ata_id_xfermask(const u16 *id, unsigned int class)
 {
 	unsigned int pio_mask, mwdma_mask, udma_mask;
 
@@ -873,6 +874,23 @@ static unsigned int ata_id_xfermask(cons
 	if (id[ATA_ID_FIELD_VALID] & (1 << 2))
 		udma_mask = id[ATA_ID_UDMA_MODES] & 0xff;
 
+	if (class == ATA_DEV_ATAPI && ata_id_dmadir_needed(id)) {
+		/* To prevent the pre ATA-7 host software (which is
+		 * not aware of the DMADIR word) from using ATAPI DMA
+		 * and causing trouble, the bridge mangles id[49],
+		 * id[63] and id[88] to report no DMA support.
+		 * 
+		 * We turn on DMA here if word 62 indicates it.
+		 * (Per ATA-7, DMADIR is only used for S-ATAPI
+		 * devices, therefore bits 0-10 are set to 1.
+		 * Anyway, we just use these bits as is.)
+		 */
+		WARN_ON(mwdma_mask || udma_mask);
+
+		mwdma_mask = (id[ATA_ID_DMADIR] >> 7) & 0x07;
+		udma_mask = id[ATA_ID_DMADIR] & 0x7f;
+	}
+
 	return ata_pack_xfermask(pio_mask, mwdma_mask, udma_mask);
 }
 
@@ -1256,7 +1274,7 @@ static int ata_dev_configure(struct ata_
 	 */
 
 	/* find max transfer mode; for printk only */
-	xfer_mask = ata_id_xfermask(id);
+	xfer_mask = ata_id_xfermask(id, dev->class);
 
 	ata_dump_id(id);
 
@@ -1322,6 +1340,9 @@ static int ata_dev_configure(struct ata_
 		}
 		dev->cdb_len = (unsigned int) rc;
 
+		if (ata_id_dmadir_needed(id))
+			dev->flags |= ATA_DFLAG_DMADIR;
+
 		/* print device info to dmesg */
 		if (print_info)
 			printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",
@@ -2941,7 +2962,7 @@ static void ata_dev_xfermask(struct ata_
 
 		xfer_mask &= ata_pack_xfermask(d->pio_mask,
 					       d->mwdma_mask, d->udma_mask);
-		xfer_mask &= ata_id_xfermask(d->id);
+		xfer_mask &= ata_id_xfermask(d->id, d->class);
 		if (ata_dma_blacklisted(d))
 			xfer_mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA);
 	}


^ permalink raw reply

* [lm-sensors] w83792d watchdog
From: Rudolf Marek @ 2006-04-07 10:43 UTC (permalink / raw)
  To: lm-sensors
In-Reply-To: <442B0C6F.4080604@sh.cvut.cz>

dezheng shen wrote:
> I will forward to the responsible engineer anyway but I have to consult 
> him if he is willing to communicate with you directly.

Hello again.

I have programed a new watchdog class to a kernel so now I'm able to connect
w83792d driver to the watchdog class... I think I will be able to test the stuff
next week or so. Any news on about the engineer?

Btw it is great that I have a computer I can test the whole thing!

Thanks,
Regards
Rudolf


^ permalink raw reply

* Re: [patch][rfc] quell interactive feeding frenzy
From: Mike Galbraith @ 2006-04-07 10:40 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, mingo, nickpiggin, pwil3058, kernel
In-Reply-To: <20060407024758.22417917.akpm@osdl.org>

On Fri, 2006-04-07 at 02:47 -0700, Andrew Morton wrote:
> Mike Galbraith <efault@gmx.de> wrote:
> >
> > Problem:
> 
> I don't know what to do with all these patches you keep sending.

Print and place in nearest dentist office?  Either that or maybe bounce
this one off the distcc problem in your copious spare time.

	-Mike


^ permalink raw reply

* Re: RT task scheduling
From: Bill Huey @ 2006-04-07 10:39 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Darren Hart, linux-kernel, Thomas Gleixner, Stultz, John,
	Peter Williams, Siddha, Suresh B, Nick Piggin, Bill Huey (hui)
In-Reply-To: <20060407091946.GA28421@elte.hu>

On Fri, Apr 07, 2006 at 11:19:46AM +0200, Ingo Molnar wrote:
> -ENOPARSE. CPU binding brings with itself obvious disadvantages that 
> some applications are not ready to pay. CPU binding restricts the 
> scheduler from achieving best resource utilization. That may be fine for 
> some applications, but is not good enough for a good number of 
> applications. So in no way can any 'CPU binding mechanism' (which 
> already exists in multiple forms) replace the need and desire for a 
> globally scheduled class of RT tasks.

You're discussing a different problem than what I'm talking about. Some
of it probably is terminology, some it is actually multipule problems
that need to be seperated out and discussed individually. I'm open for
any help on this matter to communicate my view on this topic.

I'm talking about two scenarios, (1) a high performance strict RT usage
of SCHED_FIFO and friends verses (2) a kernel that might have a more
general purpose orientation that would be looser about rebalancing,
permitting some RT task of lower priority to run above a higher priority
for performance sake, what ever...

> > [...] the key here is "robust". [...]
> 
> -ENOPARSE. CPU binding is CPU binding. Could you outline an example of a 
> "non-robust" CPU binding solution?

We're having a terminology problem here... let's pull back a bit.

Any solution that depends on a general purpose algorithm, heuristic or
any of thing of that nature, that means any kind of load rebalancing,
may interfere with RT app of type (1).

RT applications tend to want explicit control over the scheduling of
the system with as little interference from the kernel as possible. The
general purpose policies (RT rebalancing) of the Linux kernel can impede
RT apps from getting at CPU time more directly. If you have a SCHED_FIFO
task, it's by default globally rebalanced, right ? Well, the run queue
search and IPI is going to add to the maximum deterministic response time
of that thread.

How do you avoid that ? Well, give the RT app designer the decision to
hot wire a thread to a CPU so that the rebalancing logic never gets
triggered. That'll improve latency and the expense of rebalancing. This
is up to the discretion of the RT app designer and that person is best
suited to decide where and when that RT thread will run. Current Linux
kernel policies are sufficient to meet at least part of this requirement
fairly well. This does not address the general case (2) and is a
different problem.

Here I've though of it in terms of letting a per CPU binding suggest
to the scheduler what kind of rebalancing policy I want verses letting
a run class determine it. In my opinion, creation of SCHED_FIFO_GLOBAL
is unneeded because of it. What I meant by "robust" was that folks
should consider "fully" if binding address the solution or not before
introducing a new run category. I'm asking "does this address the
problem entirely ?" if not, *then* consider a new run category only after
this fails. That's what I'm saying.

As a side note, consider extended this notion of thread binding so that
it excludes any other thread from running on a CPU that might make the
cache cold for that bounded thread. That'll give maximum latency
performance (sub-microsecond). That's more thinking in terms of CPU
binding.

Does this help with the communication ?

bill


^ permalink raw reply

* [U-Boot-Users] MPC8349EMDS port
From: Wolfgang Denk @ 2006-04-07 10:35 UTC (permalink / raw)
  To: u-boot
In-Reply-To: <F74FD79C-8F46-4465-93FB-54ADA4D017BC@kernel.crashing.org>

Dear Kumar,

in message <F74FD79C-8F46-4465-93FB-54ADA4D017BC@kernel.crashing.org> you wrote:
> Any update on this?

Sorry for the delay...

> > I was looking at merging the EMDS and ADS ports for MPC834x and was  
> > wondering about a few things:
> >
> > * EMDS has TEXT_BASE @ 0xFE000000, and ADS at 0xFE700000 where do  
> > you end up programming u-boot at? (for example what is the flash  
> > command you use to reprogram a u-boot image on the board).

We use exactly this address 0xFE000000, here is a command:

protect off FE000000 +${filesize}; era FE000000 +${filesize}; cp.b 100000 FE000000 ${filesize}

> > * I had to rework the BATs to be able to cover everything properly  
> > which also meant moving a few things around.
> > CFG_BCSR 0xF8000000 -> 0xE2400000
> > CFG_INIT_RAM_ADDR 0xE8000000 -> 0xFD000000
> >
> > This is so we can fit everything into the 8 BATS and maintain  
> > proper WIMG settings.
> >
> > If you can explain the TEXT_BASE difference and how that works out  
> > and are ok with the changing of CFG_BCSR and CFG_INIT_RAM_ADDR then  
> > I'll push some patches to merge ADS & MDS, remove ADS, and we get  
> > PCI support on EMDS out of it.

These selection of addresses was made by a customer  in  his  initial
patch. I think the customer was trying to follow the memory map which
is  defined  in  the  board  User's Manual. And we just didn't change
that. But I think that moving things around as you suggest should  be
fine as well.


Best regards,

Wolfgang Denk

-- 
Software Engineering:  Embedded and Realtime Systems,  Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
When a child is taught ... its programmed with simple instructions --
and at some point, if its mind develops properly, it exceeds the  sum
of what it was taught, thinks independently.
	-- Dr. Richard Daystrom, "The Ultimate Computer",
	   stardate 4731.3.

^ permalink raw reply

* Re: [PATCH] fix do_coredump() vs SIGSTOP race
From: Roland McGrath @ 2006-04-07 10:33 UTC (permalink / raw)
  To: Oleg Nesterov; +Cc: linux-kernel, Ingo Molnar, Linus Torvalds, Andrew Morton
In-Reply-To: <43467C2B.14D992B4@tv-sign.ru>

Sorry I have been absent from the discussion for such a long time.
I'm trying to catch up on old issues that I should have reviewed earlier.

I like this change.  I think it's sensible to keep the invariant that
SIGNAL_STOP_DEQUEUED can't be set when SIGNAL_GROUP_EXIT is set.
Good work, Oleg.


Thanks,
Roland

^ permalink raw reply

* [LARTC] PRIO and u32 matching problem
From: Stanislav Nedelchev @ 2006-04-07 10:32 UTC (permalink / raw)
  To: lartc

Hi to everybody
I'm trying to use PRIO qdisc to prioritize the traffic but i have
strange problem maybe I'm missing sometging.
First i add root qdisc like this
tc qdisc add dev eth0 root handle 1: prio

it's fine after this i try to match traffic by tos field but i get error
invalid match

tc filter add dev eth0 parent 1:0 prio 1 protocol ip u32 \
match ip tos 0x10 0xff \
match ip tos 0x12 0xff  \
match ip tos 0x14 0xff \
match ip tos 0x16 0xff \
flowid 1:1

if i use it with only one match it's working like this.
tc filter add dev eth0 parent 1:0 prio 1 protocol ip u32 \
match ip tos 0x10 0xff \
flowid 1:1

i match traffic by type of TOS and put it to different classes
but when i get statistic of the class there is no data.

What is wrong?

here is the example

# tc -s -d qdisc show
qdisc prio 1: dev eth0 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 30140564 bytes 42329 pkts (dropped 0, overlimits 0)
qdisc prio 1: dev eth1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 Sent 2765825 bytes 29850 pkts (dropped 0, overlimits 0)

~# tc -s -d class show dev eth0
class prio 1:1 parent 1:
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
class prio 1:2 parent 1:
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
class prio 1:3 parent 1:
 Sent 0 bytes 0 pkts (dropped 0, overlimits 0)


tc -s -d filter show dev eth0
filter parent 1: protocol ip pref 1 u32
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht
800 bkt 0 flowid 1:1  (rule hit 45901 success 3595)
  match 00100000/00ff0000 at 0 (success 3595 )
filter parent 1: protocol ip pref 1 u32 fh 800::801 order 2049 key ht
800 bkt 0 flowid 1:1  (rule hit 42306 success 0)
  match 00120000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 1 u32 fh 800::802 order 2050 key ht
800 bkt 0 flowid 1:1  (rule hit 42306 success 0)
  match 00140000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 1 u32 fh 800::803 order 2051 key ht
800 bkt 0 flowid 1:1  (rule hit 42306 success 0)
  match 00160000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32
filter parent 1: protocol ip pref 2 u32 fh 801: ht divisor 1
filter parent 1: protocol ip pref 2 u32 fh 801::800 order 2048 key ht
801 bkt 0 flowid 1:2  (rule hit 42306 success 17877)
  match 00000000/00ff0000 at 0 (success 17877 )
filter parent 1: protocol ip pref 2 u32 fh 801::801 order 2049 key ht
801 bkt 0 flowid 1:2  (rule hit 24429 success 0)
  match 00040000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32 fh 801::802 order 2050 key ht
801 bkt 0 flowid 1:2  (rule hit 24427 success 0)
  match 00060000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32 fh 801::803 order 2051 key ht
801 bkt 0 flowid 1:2  (rule hit 24426 success 0)
  match 00180000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32 fh 801::804 order 2052 key ht
801 bkt 0 flowid 1:2  (rule hit 24424 success 0)
  match 001a0000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32 fh 801::805 order 2053 key ht
801 bkt 0 flowid 1:2  (rule hit 24424 success 0)
  match 001c0000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 2 u32 fh 801::806 order 2054 key ht
801 bkt 0 flowid 1:2  (rule hit 24424 success 0)
  match 001e0000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 3 u32
filter parent 1: protocol ip pref 3 u32 fh 802: ht divisor 1
filter parent 1: protocol ip pref 3 u32 fh 802::800 order 2048 key ht
802 bkt 0 flowid 1:3  (rule hit 24424 success 0)
  match 00020000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 3 u32 fh 802::801 order 2049 key ht
802 bkt 0 flowid 1:3  (rule hit 24424 success 0)
  match 00080000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 3 u32 fh 802::802 order 2050 key ht
802 bkt 0 flowid 1:3  (rule hit 24424 success 0)
  match 000a0000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 3 u32 fh 802::803 order 2051 key ht
802 bkt 0 flowid 1:3  (rule hit 24424 success 0)
  match 000c0000/00ff0000 at 0 (success 0 )
filter parent 1: protocol ip pref 3 u32 fh 802::804 order 2052 key ht
802 bkt 0 flowid 1:3  (rule hit 24424 success 0)
  match 000e0000/00ff0000 at 0 (success 0 )

_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

^ permalink raw reply

* [Fwd: Re: [RFC][PATCH] allow dom0 to power off machine using ACPI on shutdown.]
From: Harry Butterworth @ 2006-04-07 10:31 UTC (permalink / raw)
  To: ewan, xen-devel

[-- Attachment #1: Type: text/plain, Size: 292 bytes --]

Ewan,

    Keir seems to think this patch is OK.  I tested it on an
Intellistation A Pro for x86_64 and it works for me.  I think it is low
risk because it's executed at the end of the shutdown process.  Please
apply.

http://lists.xensource.com/archives/html/xen-devel/2006-04/msg00223.html

[-- Attachment #2: Forwarded message - Re: [Xen-devel] [RFC][PATCH] allow dom0 to power off machine using ACPI on shutdown. --]
[-- Type: message/rfc822, Size: 4316 bytes --]

From: Keir Fraser <Keir.Fraser@cl.cam.ac.uk>
To: Harry Butterworth <harry@hebutterworth.freeserve.co.uk>
Cc: xen-devel@lists.xensource.com
Subject: Re: [Xen-devel] [RFC][PATCH] allow dom0 to power off machine using ACPI on shutdown.
Date: Fri, 7 Apr 2006 08:27:50 +0100
Message-ID: <461bea0b36f0398882dec8610f691f54@cl.cam.ac.uk>


On 6 Apr 2006, at 22:22, Harry Butterworth wrote:

> It might be better to install the hypervisor call in pm_power_off and
> let it get replaced by the acpi_power_off call if ACPI is detected.
> That would seem to fit in better with the way the x86 arch handles
> multiple power off strategies.
>
> I haven't looked to see how the other architectures do power off yet.
>
> Was hoping for some comment about whether to do power off in xen or in
> domU and whether the hypervisor needed notification.

I think your patch looked okay for now, actually. Alternatively our 
machine_restart() could be moved into arch-specific code files. Doing 
the power off in dom0 is fine -- as you say, Xen doesn't do anyhting 
special before shutdown.

  -- Keir


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel


[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply

* Re: [2.6.16 PATCH] Filessytem Events Reporter V2
From: Evgeniy Polyakov @ 2006-04-07 10:26 UTC (permalink / raw)
  To: Yi Yang; +Cc: LKML, Andrew Morton, Matt Helsley
In-Reply-To: <443638D8.2010800@gmail.com>

On Fri, Apr 07, 2006 at 06:03:04PM +0800, Yi Yang (yang.y.yi@gmail.com) wrote:
> >>Can you explain why there is such a big difference between 
> >>netlink_unicast and netlink_broadcast?
> >>    
> >
> >Netlink broadcast clones skbs, while unicasting requires the whole new
> >one.
> >  
> No, I also use clone to send skb, so they should have the same overhead.

I missed that.
After rereading fsevent_send_to_process() I do not see how original skb
is freed though.

> >>>Btw, you need some rebalancing of the per-cpu queues, probably in
> >>>keventd, since CPUs can go offline and your messages will stuck foreve
> >>>there.
> >>> 
> >>>      
> >>Does keventd not do it? if so, keventd should be modified.
> >>    
> >
> >How does keventd know about your own structures?
> >You have an per-cpu object, but your keventd function gets object 
> >from running cpu, not from any other cpus.

-- 
	Evgeniy Polyakov

^ permalink raw reply


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.