LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [JOB] Senior Embedded Linux Video Engineer
From: Segher Boessenkool @ 2006-07-14 19:14 UTC (permalink / raw)
  To: bbosch; +Cc: Stephen Rothwell, linuxppc-embedded, linuxppc-dev
In-Reply-To: <17591.43974.871998.267718@waldo.lisle.iphase.com>

> On the other hand, a couple weeks ago, proclus@gnu-darwin.org posted a
> very long, meandering political statement, most of which seemed to
> have very little to do with PowerPC Linux and I didn't notice anyone
> complain on these lists.

I complained on another list -- he sent it _everywhere_.

> (Which is just as well since my objection
> off-list resulted only in a long pointless argument in which it became
> clear that rational debate would get me nowhere.)

Yes indeed.


Segher

^ permalink raw reply

* Re: [JOB] Senior Embedded Linux Video Engineer
From: Olof Johansson @ 2006-07-14 19:17 UTC (permalink / raw)
  To: Tim Bird
  Cc: Olof Johansson, Stephen Rothwell, linuxppc-dev, linuxppc-embedded
In-Reply-To: <44B7ECD7.3080807@am.sony.com>

On Fri, Jul 14, 2006 at 12:13:27PM -0700, Tim Bird wrote:
> Olof Johansson wrote:
> > Ick. Why not just create a linuxppc-jobs@ozlabs org instead of hiding it
> > somewhere in the CELF organization...?
> 
> Well, it would be either a public list or on CELF's public wiki.
> I'm not sure how this would be "hiding it".

Sorry, I was replying from the viewpoing of a linuxppc-dev reader, not a
linuxppc-embedded reader. I'm willing to say that almost noone of us
visit the CELF pages very often, or at all.


-Olof

^ permalink raw reply

* Re: [Fwd: Re: [Ilugc] help regarding powerpc and vga card]
From: Benjamin Herrenschmidt @ 2006-07-14 19:20 UTC (permalink / raw)
  To: sudheer; +Cc: Sivasankar Chander, linuxppc-embedded
In-Reply-To: <44B77452.1070106@gmail.com>


>         >>     All PCI VGA cards for use on x86 PCs have a ROMscan
>         BIOS
>         >> extension on them. This initializes the card after POST -
>         basically,
>         >> the motherboard BIOS transfers control to the BIOS on the
>         >> PCI VGA card, which then initializes itself. If control is
>         not
>         >> transfered to the VGA BIOS on the card, the VGA controller
>         >> stays isolated and will not respond to PCI device
>         enumeration,
>         >> etc. 
>         >
>         I have a doubt here. How does the processor know that the card
>         sitting 
>         here is a vga card
>         and control should be transfered to initialize it.  I think it
>         can know 
>         that it is a vga card only by reading the config space .
>         And bios is necesary for vga card to work in its normal way.
>         Is it 
>         necesary for bios to be initialised to get detected.
>         Please correct me if i am wrong.

You are not wrong (though your mailer sucks). The initial poster seems
to be a bit confused.

All PCI video cards (VGA or not) shall respond to PCI config spaces
normally. They can be enumerated, and if they carry a BIOS image (or any
other firmware support like an Open Firmware F-Code driver), it should
be accessible via the standard PCI expansion ROM BAR.

There is no such thing as "the VGA controller stays isolated" or
whatever sort of crap. However, it is true that the video card needs to
be initialized to be able to actually output anything useful, and
depending on the chip, it's generically a complex procedure involving
setting up all sorts of PLLs, initializing the card's memory controller
and performing the appropriate SDRAM init sequence, initializing the
various external chips like TMDS transmitters on the card etc etc... 

That is normally done by the card's firmware which generally sits in the
card's PCI expansion ROM (not always though, it's getting common
nowadays on x86 laptops for example to have the video card's BIOS mixes
with the main BIOS to save a flash chip). The most common type of
firmware is indeed an x86 video BIOS, which can run on non-x86 platforms
through an emulator like x86emu (a common practice, works fairly well
afaik).

Note that what that BIOS does it to poke the card's registers, which are
accessible via the card's normal PCI BARs :) At least most of the time.
Some cards do indeed require some use of the legacy VGA registers for
initialization, which means issuing IO cycles on the bus to fixed VGA
addresses, but that's pretty much irrelevant.

^ permalink raw reply

* Re: some problems on the SystemACE driver.
From: Ming Liu @ 2006-07-14 21:06 UTC (permalink / raw)
  To: ammubhai; +Cc: linuxppc-embedded

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

Dear Ameet,
Here is the normal log without -d when make zImage. Please check it. 
Waiting for your result. Have fun in the weekend. :)

>I appreciate you testing the patch. Don't worry... we will solve it. And
>I am not an expert either... you probably know more than me!

Thanks for your encouraging. Let's do it! Hopefully we can finish it 
a.s.a.p. Good luck for us!  

Regards
Ming

_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。  http://www.hotmail.com  

[-- Attachment #2: log --]
[-- Type: text/plain, Size: 30355 bytes --]

  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/kxgettext.o
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -s arch/ppc/Kconfig
#
# using defaults found in .config
#
  SPLIT   include/linux/autoconf.h -> include/config/*
  CC      arch/ppc/kernel/asm-offsets.s
  GEN     include/asm-ppc/asm-offsets.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/conmakehash
  CC      init/main.o
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  CC      init/do_mounts.o
  LD      init/mounts.o
  CC      init/initramfs.o
  CC      init/calibrate.o
  LD      init/built-in.o
  HOSTCC  usr/gen_init_cpio
  GEN     usr/initramfs_data.cpio.gz
  AS      usr/initramfs_data.o
  LD      usr/built-in.o
  AS      arch/ppc/kernel/entry.o
  CC      arch/ppc/kernel/traps.o
  CC      arch/ppc/kernel/time.o
  AS      arch/ppc/kernel/misc.o
  CC      arch/ppc/kernel/setup.o
  CC      arch/ppc/kernel/ppc_htab.o
  CC      arch/ppc/kernel/dma-mapping.o
  LD      arch/ppc/kernel/built-in.o
  AS      arch/ppc/kernel/head_4xx.o
  LDS     arch/ppc/kernel/vmlinux.lds
  CC      arch/powerpc/kernel/semaphore.o
  CC      arch/powerpc/kernel/cputable.o
  CC      arch/powerpc/kernel/ptrace.o
  CC      arch/powerpc/kernel/syscalls.o
  CC      arch/powerpc/kernel/irq.o
  CC      arch/powerpc/kernel/align.o
  CC      arch/powerpc/kernel/signal_32.o
  CC      arch/powerpc/kernel/pmc.o
  CC      arch/powerpc/kernel/vdso.o
  CC      arch/powerpc/kernel/init_task.o
  CC      arch/powerpc/kernel/process.o
  AS      arch/powerpc/kernel/systbl.o
  CC      arch/powerpc/kernel/idle.o
  LDS     arch/powerpc/kernel/vdso32/vdso32.lds
  VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o
  VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o
  VDSO32A arch/powerpc/kernel/vdso32/datapage.o
  VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o
  VDSO32A arch/powerpc/kernel/vdso32/note.o
  VDSO32L arch/powerpc/kernel/vdso32/vdso32.so
  AS      arch/powerpc/kernel/vdso32/vdso32_wrapper.o
  LD      arch/powerpc/kernel/vdso32/built-in.o
  LD      arch/powerpc/kernel/built-in.o
  LD      arch/ppc/platforms/built-in.o
  CC      arch/ppc/mm/fault.o
  CC      arch/ppc/mm/init.o
  CC      arch/ppc/mm/mem_pieces.o
  CC      arch/ppc/mm/mmu_context.o
  CC      arch/ppc/mm/pgtable.o
  CC      arch/ppc/mm/4xx_mmu.o
  LD      arch/ppc/mm/built-in.o
  AS      arch/ppc/lib/checksum.o
  AS      arch/ppc/lib/string.o
  CC      arch/ppc/lib/strcase.o
  AS      arch/ppc/lib/div64.o
  LD      arch/ppc/lib/built-in.o
  CC      arch/ppc/syslib/xilinx_pic.o
  CC      arch/ppc/syslib/ppc_sys.o
  CC      arch/ppc/syslib/ppc4xx_setup.o
  LD      arch/ppc/syslib/built-in.o
  AS      arch/powerpc/sysdev/dcr.o
  LD      arch/powerpc/sysdev/built-in.o
  CC      arch/powerpc/lib/bitops.o
  LD      arch/powerpc/lib/built-in.o
  CC      arch/ppc/platforms/4xx/xilinx_ml403.o
  CC      arch/ppc/platforms/4xx/virtex.o
  LD      arch/ppc/platforms/4xx/built-in.o
  CC      arch/powerpc/math-emu/math.o
arch/powerpc/math-emu/math.c:56: warning: conflicting types for built-in 
function 'fabs'
  CC      arch/powerpc/math-emu/fmr.o
  CC      arch/powerpc/math-emu/lfd.o
  CC      arch/powerpc/math-emu/stfd.o
  CC      arch/powerpc/math-emu/fabs.o
arch/powerpc/math-emu/fabs.c:7: warning: conflicting types for built-in 
function 'fabs'
  CC      arch/powerpc/math-emu/fadd.o
arch/powerpc/math-emu/fadd.c: In function `fadd':
arch/powerpc/math-emu/fadd.c:31: warning: right shift count is negative
arch/powerpc/math-emu/fadd.c:31: warning: left shift count >= width of type
arch/powerpc/math-emu/fadd.c:13: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fadd.c:13: warning: 'R_f0' might be used uninitialized 
in this function
arch/powerpc/math-emu/fadd.c:13: warning: 'R_f1' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fadds.o
arch/powerpc/math-emu/fadds.c: In function `fadds':
arch/powerpc/math-emu/fadds.c:32: warning: right shift count is negative
arch/powerpc/math-emu/fadds.c:32: warning: left shift count >= width of type
arch/powerpc/math-emu/fadds.c:14: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fadds.c:14: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fadds.c:14: warning: 'R_f1' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fcmpo.o
  CC      arch/powerpc/math-emu/fcmpu.o
  CC      arch/powerpc/math-emu/fctiw.o
arch/powerpc/math-emu/fctiw.c: In function `fctiw':
arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of type
arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of type
arch/powerpc/math-emu/fctiw.c:12: warning: 'r' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fctiwz.o
arch/powerpc/math-emu/fctiwz.c: In function `fctiwz':
arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fctiwz.c:13: warning: 'r' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fdiv.o
arch/powerpc/math-emu/fdiv.c: In function `fdiv':
arch/powerpc/math-emu/fdiv.c:46: warning: left shift count is negative
arch/powerpc/math-emu/fdiv.c:13: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f0' might be used uninitialized 
in this function
arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f1' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fdivs.o
arch/powerpc/math-emu/fdivs.c: In function `fdivs':
arch/powerpc/math-emu/fdivs.c:48: warning: left shift count is negative
arch/powerpc/math-emu/fdivs.c:14: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f1' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fmadd.o
arch/powerpc/math-emu/fmadd.c: In function `fmadd':
arch/powerpc/math-emu/fmadd.c:36: warning: right shift count is negative
arch/powerpc/math-emu/fmadd.c:36: warning: left shift count >= width of type
arch/powerpc/math-emu/fmadd.c:41: warning: right shift count is negative
arch/powerpc/math-emu/fmadd.c:41: warning: left shift count >= width of type
arch/powerpc/math-emu/fmadd.c:11: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmadd.c:15: warning: 'T_e' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fmadds.o
arch/powerpc/math-emu/fmadds.c: In function `fmadds':
arch/powerpc/math-emu/fmadds.c:37: warning: right shift count is negative
arch/powerpc/math-emu/fmadds.c:37: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fmadds.c:42: warning: right shift count is negative
arch/powerpc/math-emu/fmadds.c:42: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fmadds.c:12: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmadds.c:16: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fmsub.o
arch/powerpc/math-emu/fmsub.c: In function `fmsub':
arch/powerpc/math-emu/fmsub.c:36: warning: right shift count is negative
arch/powerpc/math-emu/fmsub.c:36: warning: left shift count >= width of type
arch/powerpc/math-emu/fmsub.c:44: warning: right shift count is negative
arch/powerpc/math-emu/fmsub.c:44: warning: left shift count >= width of type
arch/powerpc/math-emu/fmsub.c:11: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmsub.c:15: warning: 'T_e' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fmsubs.o
arch/powerpc/math-emu/fmsubs.c: In function `fmsubs':
arch/powerpc/math-emu/fmsubs.c:37: warning: right shift count is negative
arch/powerpc/math-emu/fmsubs.c:37: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fmsubs.c:45: warning: right shift count is negative
arch/powerpc/math-emu/fmsubs.c:45: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fmsubs.c:16: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fmul.o
arch/powerpc/math-emu/fmul.c: In function `fmul':
arch/powerpc/math-emu/fmul.c:34: warning: right shift count is negative
arch/powerpc/math-emu/fmul.c:34: warning: left shift count >= width of type
arch/powerpc/math-emu/fmul.c:13: warning: 'R_e' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fmuls.o
arch/powerpc/math-emu/fmuls.c: In function `fmuls':
arch/powerpc/math-emu/fmuls.c:35: warning: right shift count is negative
arch/powerpc/math-emu/fmuls.c:35: warning: left shift count >= width of type
arch/powerpc/math-emu/fmuls.c:14: warning: 'R_e' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fnabs.o
  CC      arch/powerpc/math-emu/fneg.o
  CC      arch/powerpc/math-emu/types.o
arch/powerpc/math-emu/types.c: In function `fp_unpack_d':
arch/powerpc/math-emu/types.c:13: warning: left shift count is negative
arch/powerpc/math-emu/types.c: In function `fp_pack_d':
arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
arch/powerpc/math-emu/types.c:28: warning: left shift count is negative
arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
arch/powerpc/math-emu/types.c: In function `fp_pack_ds':
arch/powerpc/math-emu/types.c:41: warning: right shift count is negative
arch/powerpc/math-emu/types.c:45: warning: left shift count is negative
arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
arch/powerpc/math-emu/types.c:46: warning: left shift count is negative
arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
  CC      arch/powerpc/math-emu/fnmadd.o
arch/powerpc/math-emu/fnmadd.c: In function `fnmadd':
arch/powerpc/math-emu/fnmadd.c:36: warning: right shift count is negative
arch/powerpc/math-emu/fnmadd.c:36: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmadd.c:41: warning: right shift count is negative
arch/powerpc/math-emu/fnmadd.c:41: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadd.c:15: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fnmadds.o
arch/powerpc/math-emu/fnmadds.c: In function `fnmadds':
arch/powerpc/math-emu/fnmadds.c:37: warning: right shift count is negative
arch/powerpc/math-emu/fnmadds.c:37: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmadds.c:42: warning: right shift count is negative
arch/powerpc/math-emu/fnmadds.c:42: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmadds.c:16: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fnmsub.o
arch/powerpc/math-emu/fnmsub.c: In function `fnmsub':
arch/powerpc/math-emu/fnmsub.c:36: warning: right shift count is negative
arch/powerpc/math-emu/fnmsub.c:36: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmsub.c:44: warning: right shift count is negative
arch/powerpc/math-emu/fnmsub.c:44: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsub.c:15: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fnmsubs.o
arch/powerpc/math-emu/fnmsubs.c: In function `fnmsubs':
arch/powerpc/math-emu/fnmsubs.c:37: warning: right shift count is negative
arch/powerpc/math-emu/fnmsubs.c:37: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmsubs.c:45: warning: right shift count is negative
arch/powerpc/math-emu/fnmsubs.c:45: warning: left shift count >= width of 
type
arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f1' might be used 
uninitialized in this function
arch/powerpc/math-emu/fnmsubs.c:16: warning: 'T_e' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fres.o
  CC      arch/powerpc/math-emu/frsp.o
  CC      arch/powerpc/math-emu/frsqrte.o
  CC      arch/powerpc/math-emu/fsel.o
  CC      arch/powerpc/math-emu/lfs.o
arch/powerpc/math-emu/lfs.c: In function `lfs':
arch/powerpc/math-emu/lfs.c:30: warning: left shift count is negative
  CC      arch/powerpc/math-emu/fsqrt.o
arch/powerpc/math-emu/fsqrt.c: In function `fsqrt':
arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
arch/powerpc/math-emu/fsqrt.c:30: warning: right shift count is negative
arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_c' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_s' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f1' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fsqrts.o
arch/powerpc/math-emu/fsqrts.c: In function `fsqrts':
arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
arch/powerpc/math-emu/fsqrts.c:31: warning: right shift count is negative
arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_c' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_s' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_e' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f1' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/fsub.o
arch/powerpc/math-emu/fsub.c: In function `fsub':
arch/powerpc/math-emu/fsub.c:34: warning: right shift count is negative
arch/powerpc/math-emu/fsub.c:34: warning: left shift count >= width of type
arch/powerpc/math-emu/fsub.c:13: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsub.c:13: warning: 'R_f0' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsub.c:13: warning: 'R_f1' might be used uninitialized 
in this function
  CC      arch/powerpc/math-emu/fsubs.o
arch/powerpc/math-emu/fsubs.c: In function `fsubs':
arch/powerpc/math-emu/fsubs.c:35: warning: right shift count is negative
arch/powerpc/math-emu/fsubs.c:35: warning: left shift count >= width of type
arch/powerpc/math-emu/fsubs.c:14: warning: 'R_e' might be used uninitialized 
in this function
arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f0' might be used 
uninitialized in this function
arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f1' might be used 
uninitialized in this function
  CC      arch/powerpc/math-emu/mcrfs.o
  CC      arch/powerpc/math-emu/mffs.o
  CC      arch/powerpc/math-emu/mtfsb0.o
  CC      arch/powerpc/math-emu/mtfsb1.o
  CC      arch/powerpc/math-emu/mtfsf.o
  CC      arch/powerpc/math-emu/mtfsfi.o
  CC      arch/powerpc/math-emu/stfiwx.o
  CC      arch/powerpc/math-emu/stfs.o
arch/powerpc/math-emu/stfs.c: In function `stfs':
arch/powerpc/math-emu/stfs.c:27: warning: right shift count is negative
  CC      arch/powerpc/math-emu/udivmodti4.o
  LD      arch/powerpc/math-emu/built-in.o
  CC      kernel/sched.o
  CC      kernel/fork.o
  CC      kernel/exec_domain.o
  CC      kernel/panic.o
  CC      kernel/printk.o
  CC      kernel/profile.o
  CC      kernel/exit.o
  CC      kernel/itimer.o
  CC      kernel/time.o
  CC      kernel/softirq.o
  CC      kernel/resource.o
  CC      kernel/sysctl.o
  CC      kernel/capability.o
  CC      kernel/ptrace.o
  CC      kernel/timer.o
  CC      kernel/user.o
  CC      kernel/signal.o
  CC      kernel/sys.o
  CC      kernel/kmod.o
  CC      kernel/workqueue.o
  CC      kernel/pid.o
  CC      kernel/rcupdate.o
  CC      kernel/extable.o
  CC      kernel/params.o
  CC      kernel/posix-timers.o
  CC      kernel/kthread.o
  CC      kernel/wait.o
  CC      kernel/kfifo.o
  CC      kernel/sys_ni.o
  CC      kernel/posix-cpu-timers.o
  CC      kernel/mutex.o
  CC      kernel/hrtimer.o
  CC      kernel/futex.o
  CC      kernel/intermodule.o
  CC      kernel/kallsyms.o
  CC      kernel/ksysfs.o
  CC      kernel/softlockup.o
  CC      kernel/irq/handle.o
  CC      kernel/irq/manage.o
  CC      kernel/irq/spurious.o
  CC      kernel/irq/proc.o
  LD      kernel/irq/built-in.o
  CC      kernel/seccomp.o
  LD      kernel/built-in.o
  CC      mm/bootmem.o
  CC      mm/filemap.o
  CC      mm/mempool.o
  CC      mm/oom_kill.o
  CC      mm/fadvise.o
  CC      mm/page_alloc.o
  CC      mm/page-writeback.o
  CC      mm/pdflush.o
  CC      mm/readahead.o
  CC      mm/swap.o
  CC      mm/truncate.o
  CC      mm/vmscan.o
  CC      mm/prio_tree.o
  CC      mm/util.o
  CC      mm/mmzone.o
  CC      mm/fremap.o
  CC      mm/highmem.o
  CC      mm/madvise.o
  CC      mm/memory.o
  CC      mm/mincore.o
  CC      mm/mlock.o
  CC      mm/mmap.o
  CC      mm/mprotect.o
  CC      mm/mremap.o
  CC      mm/msync.o
  CC      mm/rmap.o
  CC      mm/vmalloc.o
  CC      mm/page_io.o
  CC      mm/swap_state.o
  CC      mm/swapfile.o
  CC      mm/thrash.o
  CC      mm/shmem.o
  CC      mm/slab.o
  CC      mm/filemap_xip.o
  LD      mm/built-in.o
  CC      fs/open.o
  CC      fs/read_write.o
  CC      fs/file_table.o
  CC      fs/buffer.o
  CC      fs/bio.o
  CC      fs/super.o
  CC      fs/block_dev.o
  CC      fs/char_dev.o
  CC      fs/stat.o
  CC      fs/exec.o
  CC      fs/pipe.o
  CC      fs/namei.o
  CC      fs/fcntl.o
  CC      fs/ioctl.o
  CC      fs/readdir.o
  CC      fs/select.o
  CC      fs/fifo.o
  CC      fs/locks.o
  CC      fs/dcache.o
  CC      fs/inode.o
  CC      fs/attr.o
  CC      fs/bad_inode.o
  CC      fs/file.o
  CC      fs/filesystems.o
  CC      fs/namespace.o
  CC      fs/aio.o
  CC      fs/seq_file.o
  CC      fs/xattr.o
  CC      fs/libfs.o
  CC      fs/fs-writeback.o
  CC      fs/mpage.o
  CC      fs/direct-io.o
  CC      fs/ioprio.o
  CC      fs/pnode.o
  CC      fs/drop_caches.o
  CC      fs/splice.o
  CC      fs/sync.o
  CC      fs/inotify.o
  CC      fs/eventpoll.o
  CC      fs/binfmt_script.o
  CC      fs/binfmt_elf.o
  CC      fs/mbcache.o
  CC      fs/posix_acl.o
  CC      fs/xattr_acl.o
  CC      fs/dnotify.o
  CC      fs/autofs/dirhash.o
  CC      fs/autofs/init.o
  CC      fs/autofs/inode.o
  CC      fs/autofs/root.o
  CC      fs/autofs/symlink.o
  CC      fs/autofs/waitq.o
  LD      fs/autofs/autofs.o
  LD      fs/autofs/built-in.o
  CC      fs/autofs4/init.o
  CC      fs/autofs4/inode.o
  CC      fs/autofs4/root.o
  CC      fs/autofs4/symlink.o
  CC      fs/autofs4/waitq.o
  CC      fs/autofs4/expire.o
  LD      fs/autofs4/autofs4.o
  LD      fs/autofs4/built-in.o
  CC      fs/devpts/inode.o
  LD      fs/devpts/devpts.o
  LD      fs/devpts/built-in.o
  CC      fs/ext2/balloc.o
  CC      fs/ext2/bitmap.o
  CC      fs/ext2/dir.o
  CC      fs/ext2/file.o
  CC      fs/ext2/fsync.o
  CC      fs/ext2/ialloc.o
  CC      fs/ext2/inode.o
  CC      fs/ext2/ioctl.o
  CC      fs/ext2/namei.o
  CC      fs/ext2/super.o
  CC      fs/ext2/symlink.o
  CC      fs/ext2/xattr.o
  CC      fs/ext2/xattr_user.o
  CC      fs/ext2/xattr_trusted.o
  CC      fs/ext2/acl.o
  CC      fs/ext2/xattr_security.o
  CC      fs/ext2/xip.o
  LD      fs/ext2/ext2.o
  LD      fs/ext2/built-in.o
  CC      fs/nls/nls_base.o
  LD      fs/nls/built-in.o
  CC      fs/partitions/check.o
  CC      fs/partitions/msdos.o
  LD      fs/partitions/built-in.o
  CC      fs/proc/mmu.o
  CC      fs/proc/task_mmu.o
  CC      fs/proc/inode.o
  CC      fs/proc/root.o
  CC      fs/proc/base.o
  CC      fs/proc/generic.o
  CC      fs/proc/array.o
  CC      fs/proc/kmsg.o
  CC      fs/proc/proc_tty.o
  CC      fs/proc/proc_misc.o
  CC      fs/proc/kcore.o
  LD      fs/proc/proc.o
  LD      fs/proc/built-in.o
  CC      fs/ramfs/inode.o
  CC      fs/ramfs/file-mmu.o
  LD      fs/ramfs/ramfs.o
  LD      fs/ramfs/built-in.o
  CC      fs/sysfs/inode.o
  CC      fs/sysfs/file.o
  CC      fs/sysfs/dir.o
  CC      fs/sysfs/symlink.o
  CC      fs/sysfs/mount.o
  CC      fs/sysfs/bin.o
  CC      fs/sysfs/group.o
  LD      fs/sysfs/built-in.o
  LD      fs/built-in.o
  CC      ipc/util.o
  CC      ipc/msgutil.o
  CC      ipc/msg.o
  CC      ipc/sem.o
  CC      ipc/shm.o
  LD      ipc/built-in.o
  CC      security/commoncap.o
  LD      security/built-in.o
  LD      crypto/built-in.o
  CC      block/elevator.o
  CC      block/ll_rw_blk.o
  CC      block/ioctl.o
  CC      block/genhd.o
  CC      block/scsi_ioctl.o
  CC      block/noop-iosched.o
  CC      block/as-iosched.o
  CC      block/deadline-iosched.o
  CC      block/cfq-iosched.o
  LD      block/built-in.o
  CC      drivers/base/core.o
  CC      drivers/base/sys.o
  CC      drivers/base/bus.o
  CC      drivers/base/dd.o
  CC      drivers/base/driver.o
  CC      drivers/base/class.o
  CC      drivers/base/platform.o
  CC      drivers/base/cpu.o
  CC      drivers/base/firmware.o
  CC      drivers/base/init.o
  CC      drivers/base/map.o
  CC      drivers/base/dmapool.o
  CC      drivers/base/attribute_container.o
  CC      drivers/base/transport_class.o
  CC      drivers/base/power/shutdown.o
  LD      drivers/base/power/built-in.o
  LD      drivers/base/built-in.o
  CC      drivers/block/loop.o
  CC      drivers/block/xilinx_sysace/adapter.o
drivers/block/xilinx_sysace/adapter.c:221: warning: 'xsysace_restart' 
defined but not used
  CC      drivers/block/xilinx_sysace/xbasic_types.o
  CC      drivers/block/xilinx_sysace/xsysace.o
  CC      drivers/block/xilinx_sysace/xsysace_g.o
  CC      drivers/block/xilinx_sysace/xsysace_intr.o
  CC      drivers/block/xilinx_sysace/xsysace_l.o
  CC      drivers/block/xilinx_sysace/xsysace_compactflash.o
  CC      drivers/block/xilinx_sysace/xsysace_jtagcfg.o
  LD      drivers/block/xilinx_sysace/xilinx_sysace.o
  LD      drivers/block/xilinx_sysace/built-in.o
  LD      drivers/block/built-in.o
  LD      drivers/cdrom/built-in.o
  CC      drivers/char/mem.o
  CC      drivers/char/random.o
  CC      drivers/char/tty_io.o
  CC      drivers/char/n_tty.o
  CC      drivers/char/tty_ioctl.o
  CC      drivers/char/pty.o
  CC      drivers/char/misc.o
  CC      drivers/char/vt_ioctl.o
  CC      drivers/char/vc_screen.o
  CC      drivers/char/consolemap.o
  CONMK   drivers/char/consolemap_deftbl.c
  CC      drivers/char/consolemap_deftbl.o
  CC      drivers/char/selection.o
  CC      drivers/char/keyboard.o
  CC      drivers/char/vt.o
  SHIPPED drivers/char/defkeymap.c
  CC      drivers/char/defkeymap.o
  LD      drivers/char/built-in.o
  LD      drivers/firmware/built-in.o
  CC      drivers/hwmon/hwmon.o
  LD      drivers/hwmon/built-in.o
  CC      drivers/input/input.o
  CC      drivers/input/mousedev.o
  LD      drivers/input/built-in.o
  CC      drivers/input/serio/serio.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/input/serio/serport.o
  LD      drivers/input/serio/built-in.o
  LD      drivers/media/common/built-in.o
  LD      drivers/media/built-in.o
  LD      drivers/mfd/built-in.o
  LD      drivers/misc/built-in.o
  CC      drivers/mtd/mtdcore.o
  CC      drivers/mtd/mtdpart.o
  CC      drivers/mtd/redboot.o
drivers/mtd/redboot.c: In function `parse_redboot_partitions':
drivers/mtd/redboot.c:103: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:104: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:105: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:106: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:107: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:108: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
drivers/mtd/redboot.c:109: warning: passing arg 1 of `__swab32s' from 
incompatible pointer type
  CC      drivers/mtd/mtdchar.o
  CC      drivers/mtd/mtdblock.o
  CC      drivers/mtd/mtd_blkdevs.o
  CC      drivers/mtd/chips/chipreg.o
  CC      drivers/mtd/chips/cfi_probe.o
  CC      drivers/mtd/chips/cfi_util.o
  CC      drivers/mtd/chips/cfi_cmdset_0002.o
drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_init':
drivers/mtd/chips/cfi_cmdset_0002.c:1766: warning: `inter_module_register' 
is deprecated (declared at include/linux/module.h:563)
drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_exit':
drivers/mtd/chips/cfi_cmdset_0002.c:1773: warning: `inter_module_unregister' 
is deprecated (declared at include/linux/module.h:564)
  CC      drivers/mtd/chips/gen_probe.o
  LD      drivers/mtd/chips/built-in.o
  LD      drivers/mtd/devices/built-in.o
  LD      drivers/mtd/maps/built-in.o
  LD      drivers/mtd/nand/built-in.o
  LD      drivers/mtd/onenand/built-in.o
  LD      drivers/mtd/built-in.o
  CC      drivers/net/Space.o
  CC      drivers/net/loopback.o
  CC      drivers/net/xilinx_temac/adapter.o
  CC      drivers/net/xilinx_temac/xtemac.o
  CC      drivers/net/xilinx_temac/xtemac_intr.o
  CC      drivers/net/xilinx_temac/xtemac_intr_sgdma.o
  CC      drivers/net/xilinx_temac/xtemac_sgdma.o
  CC      drivers/net/xilinx_temac/xtemac_intr_fifo.o
  CC      drivers/net/xilinx_temac/xtemac_fifo.o
  CC      drivers/net/xilinx_temac/xtemac_l.o
  CC      drivers/net/xilinx_temac/xtemac_control.o
  LD      drivers/net/xilinx_temac/xilinx_temac.o
  LD      drivers/net/xilinx_temac/built-in.o
  LD      drivers/net/built-in.o
  CC      drivers/serial/serial_core.o
  CC      drivers/serial/8250.o
  CC      drivers/serial/8250_early.o
  LD      drivers/serial/built-in.o
  LD      drivers/video/backlight/built-in.o
  CC      drivers/video/console/dummycon.o
  LD      drivers/video/console/built-in.o
  LD      drivers/video/built-in.o
  CC      drivers/xilinx_edk/xilinx_syms.o
  CC      drivers/xilinx_edk/xbasic_types.o
  CC      drivers/xilinx_edk/xpacket_fifo_v2_00_a.o
  CC      drivers/xilinx_edk/xpacket_fifo_l_v2_00_a.o
  CC      drivers/xilinx_edk/xdmav2.o
  CC      drivers/xilinx_edk/xdmav2_intr.o
  CC      drivers/xilinx_edk/xdmav2_sg.o
  CC      drivers/xilinx_edk/xdmav2_simple.o
  LD      drivers/xilinx_edk/built-in.o
  LD      drivers/built-in.o
drivers/xilinx_edk/built-in.o(.sdata+0x0): In function `XAssert':
drivers/xilinx_edk/xbasic_types.c:105: multiple definition of 
`XWaitInAssert'
drivers/block/built-in.o(.sdata+0x0):drivers/block/loop.c:91: first defined 
here
drivers/xilinx_edk/built-in.o(.sbss+0x4): In function `XAssert':
drivers/xilinx_edk/xbasic_types.c:105: multiple definition of 
`XAssertStatus'
drivers/block/built-in.o(.sbss+0x38):drivers/block/loop.c:98: first defined 
here
drivers/xilinx_edk/built-in.o(.text+0x44): In function `XAssertSetCallback':
drivers/xilinx_edk/xbasic_types.c:134: multiple definition of 
`XAssertSetCallback'
drivers/block/built-in.o(.text+0x24bc):drivers/block/xilinx_sysace/xbasic_types.c:134: 
first defined here
drivers/xilinx_edk/built-in.o(.text+0x0): In function `XAssert':
drivers/xilinx_edk/xbasic_types.c:105: multiple definition of `XAssert'
drivers/block/built-in.o(.text+0x2478):drivers/block/xilinx_sysace/xbasic_types.c:105: 
first defined here
drivers/xilinx_edk/built-in.o(.text+0x50): In function `XNullHandler':
drivers/xilinx_edk/xbasic_types.c:153: multiple definition of `XNullHandler'
drivers/block/built-in.o(.text+0x24c8):drivers/block/xilinx_sysace/xbasic_types.c:153: 
first defined here
make[1]: *** [drivers/built-in.o] Error 1
make: *** [drivers] Error 2


^ permalink raw reply

* Re: Kexec initial registers
From: Benjamin Herrenschmidt @ 2006-07-14 21:08 UTC (permalink / raw)
  To: Jimi Xenidis; +Cc: linuxppc-dev
In-Reply-To: <4CE0FC89-084F-42E8-8E3B-8D2C41AC06F2@watson.ibm.com>

On Fri, 2006-07-14 at 12:02 -0400, Jimi Xenidis wrote:
> This is what I have so far:
> 
>    r3: address of device tree blob
>    r4: address that kernel was loaded
>    r5: not OF (=0)

Correct and that's all that should be needed

>    r13: local_paca address (0?)

You shouldn't have to care about r13 at all, it should be set by the
kernel before it's used. If not, please let us know as that means there
is a bug :)

Ben.

^ permalink raw reply

* [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Mike Kravetz @ 2006-07-14 23:37 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
	Christopher Yeoh

Hi Paul,

Here is an updated version of the patch(es) to instrument hcalls.  All
issues from the previous versions have been addressed.  Although, I
haven't really discovered an elegant solution to the assembly routine
name juggling.

In addition, there has been some discussion of these patches on IRC.
Some remaining issues/questions are:
- Exactly how much overhead does the statistic gathering introduce?
- What would be the cost of disabling preemption for more accurate statistics?
- What would be the cost of disabling interrupts for more accurate statistics?
- Should we extend this statistic gathering to RTAS calls?

I would like to get this basic code integrated and then start to address
some of these questions.  The IBM performance group will help in
benchmarking to determine overhead.

Please note that all code is behind a config option (off by default) with
zero impact unless enabled.

-- 
Mike

^ permalink raw reply

* [PATCH 1/3] powerpc: Instrument Hypervisor Calls: merge headers
From: Mike Kravetz @ 2006-07-14 23:39 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
	Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>

Move all the Hypervisor call definitions to to a single header file.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>

diff -Naupr linux-2.6.17.4/drivers/net/ibmveth.h linux-2.6.17.4.work/drivers/net/ibmveth.h
--- linux-2.6.17.4/drivers/net/ibmveth.h	2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/drivers/net/ibmveth.h	2006-07-14 23:05:37.000000000 +0000
@@ -41,16 +41,6 @@
 #define IbmVethMcastRemoveFilter     0x2UL
 #define IbmVethMcastClearFilterTable 0x3UL
 
-/* hcall numbers */
-#define H_VIO_SIGNAL             0x104
-#define H_REGISTER_LOGICAL_LAN   0x114
-#define H_FREE_LOGICAL_LAN       0x118
-#define H_ADD_LOGICAL_LAN_BUFFER 0x11C
-#define H_SEND_LOGICAL_LAN       0x120
-#define H_MULTICAST_CTRL         0x130
-#define H_CHANGE_LOGICAL_LAN_MAC 0x14C
-#define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
-
 /* hcall macros */
 #define h_register_logical_lan(ua, buflst, rxq, fltlst, mac) \
   plpar_hcall_norets(H_REGISTER_LOGICAL_LAN, ua, buflst, rxq, fltlst, mac)
diff -Naupr linux-2.6.17.4/include/asm-powerpc/hvcall.h linux-2.6.17.4.work/include/asm-powerpc/hvcall.h
--- linux-2.6.17.4/include/asm-powerpc/hvcall.h	2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/include/asm-powerpc/hvcall.h	2006-07-14 23:05:37.000000000 +0000
@@ -155,9 +155,15 @@
 #define H_VIO_SIGNAL		0x104
 #define H_SEND_CRQ		0x108
 #define H_COPY_RDMA		0x110
+#define H_REGISTER_LOGICAL_LAN	0x114
+#define H_FREE_LOGICAL_LAN	0x118
+#define H_ADD_LOGICAL_LAN_BUFFER 0x11C
+#define H_SEND_LOGICAL_LAN	0x120
+#define H_MULTICAST_CTRL	0x130
 #define H_SET_XDABR		0x134
 #define H_STUFF_TCE		0x138
 #define H_PUT_TCE_INDIRECT	0x13C
+#define H_CHANGE_LOGICAL_LAN_MAC 0x14C
 #define H_VTERM_PARTNER_INFO	0x150
 #define H_REGISTER_VTERM	0x154
 #define H_FREE_VTERM		0x158
@@ -187,11 +193,14 @@
 #define H_GET_HCA_INFO          0x1B8
 #define H_GET_PERF_COUNT        0x1BC
 #define H_MANAGE_TRACE          0x1C0
+#define H_FREE_LOGICAL_LAN_BUFFER 0x1D4
 #define H_QUERY_INT_STATE       0x1E4
 #define H_POLL_PENDING		0x1D8
 #define H_JOIN			0x298
 #define H_ENABLE_CRQ		0x2B0
 
+#define MAX_HCALL_OPCODES	(H_ENABLE_CRQ >> 2)
+
 #ifndef __ASSEMBLY__
 
 /* plpar_hcall() -- Generic call interface using above opcodes

^ permalink raw reply

* [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Mike Kravetz @ 2006-07-14 23:40 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
	Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>

Add wrappers which perform the actual hypervisor call instrumentation.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>

diff -Naupr linux-2.6.17.4/arch/powerpc/Kconfig.debug linux-2.6.17.4.work/arch/powerpc/Kconfig.debug
--- linux-2.6.17.4/arch/powerpc/Kconfig.debug	2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/Kconfig.debug	2006-07-14 23:28:20.000000000 +0000
@@ -18,6 +18,19 @@ config DEBUG_STACK_USAGE
 
 	  This option will slow down process creation somewhat.
 
+config HCALL_STATS
+	bool "Hypervisor call instrumentation"
+	depends on PPC_PSERIES && DEBUG_FS
+	help
+	  Adds code to keep track of the number of hypervisor calls made and
+	  the amount of time spent in hypervisor calls.  A directory named
+	  hcall_inst is added at the root of the debugfs filesystem.  Within
+	  the hcall_inst directory are files that contain CPU specific call
+	  statistics.
+
+	  This option will add a small amount of overhead to all hypervisor
+	  calls.
+
 config DEBUGGER
 	bool "Enable debugger hooks"
 	depends on DEBUG_KERNEL
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/Makefile linux-2.6.17.4.work/arch/powerpc/platforms/pseries/Makefile
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/Makefile	2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/Makefile	2006-07-14 23:28:20.000000000 +0000
@@ -9,3 +9,4 @@ obj-$(CONFIG_EEH)	+= eeh.o eeh_cache.o e
 
 obj-$(CONFIG_HVC_CONSOLE)	+= hvconsole.o
 obj-$(CONFIG_HVCS)		+= hvcserver.o
+obj-$(CONFIG_HCALL_STATS)	+= hvCall_inst.o
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall.S linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall.S
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall.S	2006-07-06 20:02:28.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall.S	2006-07-14 23:28:20.000000000 +0000
@@ -11,7 +11,35 @@
 #include <asm/hvcall.h>
 #include <asm/processor.h>
 #include <asm/ppc_asm.h>
-	
+
+/*
+ * If hcall statistics are desired, all routines are wrapped with code
+ * that does the statistic gathering.
+ */
+#ifndef CONFIG_HCALL_STATS
+#define PLPAR_HCALL		plpar_hcall
+#define PLPAR_HCALL_NORETS	plpar_hcall_norets
+#define PLPAR_HCALL_8ARG_2RET	plpar_hcall_8arg_2ret
+#define PLPAR_HCALL_4OUT	plpar_hcall_4out
+#define PLPAR_HCALL_7ARG_7RET	plpar_hcall_7arg_7ret
+#define PLPAR_HCALL_9ARG_9RET	plpar_hcall_9arg_9ret
+#else
+#define PLPAR_HCALL		plpar_hcall_base
+#define PLPAR_HCALL_NORETS	plpar_hcall_norets_base
+#define PLPAR_HCALL_8ARG_2RET	plpar_hcall_8arg_2ret_base
+#define PLPAR_HCALL_4OUT	plpar_hcall_4out_base
+#define PLPAR_HCALL_7ARG_7RET	plpar_hcall_7arg_7ret_base
+#define PLPAR_HCALL_9ARG_9RET	plpar_hcall_9arg_9ret_base
+
+/*
+ * A special 'indirect' call to a C based wrapper if statistics are desired.
+ * See plpar_hcall_norets_C function header for more details.
+ */
+_GLOBAL(plpar_hcall_norets)
+	b	plpar_hcall_norets_C
+
+#endif
+
 #define STK_PARM(i)     (48 + ((i)-3)*8)
 
 	.text
@@ -25,7 +53,7 @@
 			unsigned long *out2,		R9
 			unsigned long *out3);		R10
  */
-_GLOBAL(plpar_hcall)
+_GLOBAL(PLPAR_HCALL)
 	HMT_MEDIUM
 
 	mfcr	r0
@@ -52,7 +80,7 @@ _GLOBAL(plpar_hcall)
 
 
 /* Simple interface with no output values (other than status) */
-_GLOBAL(plpar_hcall_norets)
+_GLOBAL(PLPAR_HCALL_NORETS)
 	HMT_MEDIUM
 
 	mfcr	r0
@@ -76,7 +104,7 @@ _GLOBAL(plpar_hcall_norets)
 			unsigned long arg8,		112(R1)
 			unsigned long *out1);		120(R1)
  */
-_GLOBAL(plpar_hcall_8arg_2ret)
+_GLOBAL(PLPAR_HCALL_8ARG_2RET)
 	HMT_MEDIUM
 
 	mfcr	r0
@@ -102,7 +130,7 @@ _GLOBAL(plpar_hcall_8arg_2ret)
 		 	unsigned long *out3,		R10
 		 	unsigned long *out4);		112(R1)
  */
-_GLOBAL(plpar_hcall_4out)
+_GLOBAL(PLPAR_HCALL_4OUT)
 	HMT_MEDIUM
 
 	mfcr	r0
@@ -144,7 +172,7 @@ _GLOBAL(plpar_hcall_4out)
 			 unsigned long *out6,		102(R1)
 			 unsigned long *out7);		100(R1)
 */
-_GLOBAL(plpar_hcall_7arg_7ret)
+_GLOBAL(PLPAR_HCALL_7ARG_7RET)
 	HMT_MEDIUM
 
 	mfcr	r0
@@ -193,7 +221,7 @@ _GLOBAL(plpar_hcall_7arg_7ret)
 			 unsigned long *out8,		 94(R1)
 		         unsigned long *out9,            92(R1)
 */
-_GLOBAL(plpar_hcall_9arg_9ret)
+_GLOBAL(PLPAR_HCALL_9ARG_9RET)
 	HMT_MEDIUM
 
 	mfcr	r0
diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c	1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c	2006-07-14 23:28:44.000000000 +0000
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2006 Mike Kravetz IBM Corporation
+ *
+ * Hypervisor Call Instrumentation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+#include <linux/kernel.h>
+#include <linux/percpu.h>
+#include <linux/debugfs.h>
+#include <linux/seq_file.h>
+#include <linux/cpumask.h>
+#include <asm/hvcall.h>
+#include <asm/firmware.h>
+
+DEFINE_PER_CPU(struct hcall_stats[MAX_HCALL_OPCODES+1], hcall_stats);
+
+/*
+ * Common update of the per-CPU/per-hcall statistics
+ */
+static inline void update_stats(unsigned long opcode, unsigned long t_before)
+{
+	unsigned long op_index = opcode >> 2;
+	struct hcall_stats *hs = &__get_cpu_var(hcall_stats[op_index]);
+
+	hs->total_time += (mftb() - t_before);
+	hs->num_calls++;
+}
+
+/*
+ * plpar_hcall wrapper
+ */
+long plpar_hcall(unsigned long opcode,
+                 unsigned long arg1,
+                 unsigned long arg2,
+                 unsigned long arg3,
+                 unsigned long arg4,
+                 unsigned long *out1,
+                 unsigned long *out2,
+                 unsigned long *out3)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_base(opcode, arg1, arg2, arg3, arg4, out1, out2, out3);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
+
+/*
+ * A C based wrapper for plpar_hcall_norets
+ * The wrapper for plpar_hcall_norets is a special case because the function
+ * takes a variable number of arguments.  It is almost impossible to write a
+ * wrapper for a function that takes a variable number of arguments in C.
+ * Therefore, there is an assembly routine in hvCall.S that simply branches
+ * to this C wrapper.  This 'indirection' takes care of the variable arguments
+ * issue.  This C wrapper has a fixed maximum number of arguments.
+ */
+long plpar_hcall_norets_C(unsigned long opcode,
+				unsigned long arg1,
+				unsigned long arg2,
+				unsigned long arg3,
+				unsigned long arg4,
+				unsigned long arg5,
+				unsigned long arg6)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_norets_base(opcode, arg1, arg2, arg3, arg4, arg5,
+				     arg6);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
+
+/*
+ * plpar_hcall_8arg_2ret wrapper
+ */
+long plpar_hcall_8arg_2ret(unsigned long opcode,
+                           unsigned long arg1,
+                           unsigned long arg2,
+                           unsigned long arg3,
+                           unsigned long arg4,
+                           unsigned long arg5,
+                           unsigned long arg6,
+                           unsigned long arg7,
+                           unsigned long arg8,
+                           unsigned long *out1)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_8arg_2ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+					arg6, arg7, arg8, out1);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
+
+/*
+ * plpar_hcall_4out wrapper
+ */
+long plpar_hcall_4out(unsigned long opcode,
+                      unsigned long arg1,
+                      unsigned long arg2,
+                      unsigned long arg3,
+                      unsigned long arg4,
+                      unsigned long *out1,
+                      unsigned long *out2,
+                      unsigned long *out3,
+                      unsigned long *out4)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_4out_base(opcode, arg1, arg2, arg3, arg4, out1,
+				   out2, out3, out4);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
+
+/*
+ * plpar_hcall_7arg_7ret wrapper
+ */
+long plpar_hcall_7arg_7ret(unsigned long opcode,
+                           unsigned long arg1,
+                           unsigned long arg2,
+                           unsigned long arg3,
+                           unsigned long arg4,
+                           unsigned long arg5,
+                           unsigned long arg6,
+                           unsigned long arg7,
+                           unsigned long *out1,
+                           unsigned long *out2,
+                           unsigned long *out3,
+                           unsigned long *out4,
+                           unsigned long *out5,
+                           unsigned long *out6,
+                           unsigned long *out7)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_7arg_7ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+					arg6, arg7, out1, out2, out3, out4,
+					out5, out6, out7);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
+
+/*
+ * plpar_hcall_9arg_9ret wrapper
+ */
+long plpar_hcall_9arg_9ret(unsigned long opcode,
+                           unsigned long arg1,
+                           unsigned long arg2,
+                           unsigned long arg3,
+                           unsigned long arg4,
+                           unsigned long arg5,
+                           unsigned long arg6,
+                           unsigned long arg7,
+                           unsigned long arg8,
+                           unsigned long arg9,
+                           unsigned long *out1,
+                           unsigned long *out2,
+                           unsigned long *out3,
+                           unsigned long *out4,
+                           unsigned long *out5,
+                           unsigned long *out6,
+                           unsigned long *out7,
+                           unsigned long *out8,
+                           unsigned long *out9)
+{
+	long rc;
+	unsigned long t_before;
+
+	t_before = mftb();
+	rc = plpar_hcall_9arg_9ret_base(opcode, arg1, arg2, arg3, arg4, arg5,
+					arg6, arg7, arg8, arg9, out1, out2,
+					out3, out4, out5, out6, out7, out8,
+					out9);
+
+	update_stats(opcode, t_before);
+	return rc;
+}
diff -Naupr linux-2.6.17.4/include/asm-powerpc/hvcall.h linux-2.6.17.4.work/include/asm-powerpc/hvcall.h
--- linux-2.6.17.4/include/asm-powerpc/hvcall.h	2006-07-14 23:27:52.000000000 +0000
+++ linux-2.6.17.4.work/include/asm-powerpc/hvcall.h	2006-07-14 23:28:20.000000000 +0000
@@ -292,6 +292,86 @@ long plpar_hcall_9arg_9ret(unsigned long
 			   unsigned long *out8,
 			   unsigned long *out9);
 
+
+/* For hcall instrumentation.  One structure per-hcall, per-CPU */
+struct hcall_stats {
+	unsigned long	num_calls;	/* number of calls (on this CPU) */
+	unsigned long	total_time;	/* total cputime (PURR) of calls. */
+};
+
+/* If Hypervisor call instrumentation is enabled, the assembly routine
+ * names are changed from 'plpar_hcall*' to 'plpar_hcall*_base' and
+ * 'plpar_hcall*' routines become instrumented wrappers.  The following
+ * are declarations for the renamed 'plpar_hcall*_base' routines.
+ */
+long plpar_hcall_base (unsigned long opcode,
+		       unsigned long arg1,
+		       unsigned long arg2,
+		       unsigned long arg3,
+		       unsigned long arg4,
+		       unsigned long *out1,
+		       unsigned long *out2,
+		       unsigned long *out3);
+
+long plpar_hcall_norets_base(unsigned long opcode, ...);
+
+long plpar_hcall_8arg_2ret_base(unsigned long opcode,
+				unsigned long arg1,
+				unsigned long arg2,
+				unsigned long arg3,
+				unsigned long arg4,
+				unsigned long arg5,
+				unsigned long arg6,
+				unsigned long arg7,
+				unsigned long arg8,
+				unsigned long *out1);
+
+long plpar_hcall_4out_base(unsigned long opcode,
+			   unsigned long arg1,
+			   unsigned long arg2,
+			   unsigned long arg3,
+			   unsigned long arg4,
+			   unsigned long *out1,
+			   unsigned long *out2,
+			   unsigned long *out3,
+			   unsigned long *out4);
+
+long plpar_hcall_7arg_7ret_base(unsigned long opcode,
+				unsigned long arg1,
+				unsigned long arg2,
+				unsigned long arg3,
+				unsigned long arg4,
+				unsigned long arg5,
+				unsigned long arg6,
+				unsigned long arg7,
+				unsigned long *out1,
+				unsigned long *out2,
+				unsigned long *out3,
+				unsigned long *out4,
+				unsigned long *out5,
+				unsigned long *out6,
+				unsigned long *out7);
+
+long plpar_hcall_9arg_9ret_base(unsigned long opcode,
+				unsigned long arg1,
+				unsigned long arg2,
+				unsigned long arg3,
+				unsigned long arg4,
+				unsigned long arg5,
+				unsigned long arg6,
+				unsigned long arg7,
+				unsigned long arg8,
+				unsigned long arg9,
+				unsigned long *out1,
+				unsigned long *out2,
+				unsigned long *out3,
+				unsigned long *out4,
+				unsigned long *out5,
+				unsigned long *out6,
+				unsigned long *out7,
+				unsigned long *out8,
+				unsigned long *out9);
+
 #endif /* __ASSEMBLY__ */
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_HVCALL_H */

^ permalink raw reply

* [PATCH 3/3] powerpc: Instrument Hypervisor Calls: add debugfs files
From: Mike Kravetz @ 2006-07-14 23:41 UTC (permalink / raw)
  To: Paul Mackerras
  Cc: Arnd Bergmann, Bryan Rosenburg, linuxppc-dev, Nathan Lynch,
	Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>

Make statistics available via files in debugfs.
--
Signed-off-by: Mike Kravetz <kravetz@us.ibm.com>

diff -Naupr linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c
--- linux-2.6.17.4/arch/powerpc/platforms/pseries/hvCall_inst.c	2006-07-14 23:32:01.000000000 +0000
+++ linux-2.6.17.4.work/arch/powerpc/platforms/pseries/hvCall_inst.c	2006-07-14 23:32:54.000000000 +0000
@@ -205,3 +205,94 @@ long plpar_hcall_9arg_9ret(unsigned long
 	update_stats(opcode, t_before);
 	return rc;
 }
+
+/*
+ * Routines for displaying the statistics in debugfs
+ */
+static void *hc_start(struct seq_file *m, loff_t *pos)
+{
+	if ((int)*pos < MAX_HCALL_OPCODES)
+		return (void *)(unsigned long)(*pos + 1);
+
+	return NULL;
+}
+
+static void *hc_next(struct seq_file *m, void *p, loff_t * pos)
+{
+	++*pos;
+
+	return hc_start(m, pos);
+}
+
+static void hc_stop(struct seq_file *m, void *p)
+{
+}
+
+static int hc_show(struct seq_file *m, void *p)
+{
+	unsigned long h_num = (unsigned long)p;
+	struct hcall_stats *hs = (struct hcall_stats *)m->private;
+
+	if (hs[h_num].num_calls)
+		seq_printf(m, "%lu %lu %lu\n", h_num<<2, hs[h_num].num_calls,
+			   hs[h_num].total_time);
+
+	return 0;
+}
+
+static struct seq_operations hcall_inst_seq_ops = {
+        .start = hc_start,
+        .next  = hc_next,
+        .stop  = hc_stop,
+        .show  = hc_show
+};
+
+static int hcall_inst_seq_open(struct inode *inode, struct file *file)
+{
+	int rc;
+	struct seq_file *seq;
+
+	rc = seq_open(file, &hcall_inst_seq_ops);
+	seq = file->private_data;
+	seq->private = file->f_dentry->d_inode->u.generic_ip;
+
+	return rc;
+}
+
+static struct file_operations hcall_inst_seq_fops = {
+	.open = hcall_inst_seq_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = seq_release,
+};
+
+#define	HCALL_ROOT_DIR		"hcall_inst"
+#define CPU_NAME_BUF_SIZE	32
+
+static int __init hcall_inst_init(void)
+{
+	struct dentry *hcall_root;
+	struct dentry *hcall_file;
+	char cpu_name_buf[CPU_NAME_BUF_SIZE];
+	int cpu;
+
+	if (!firmware_has_feature(FW_FEATURE_LPAR))
+		return 0;
+
+	hcall_root = debugfs_create_dir(HCALL_ROOT_DIR, NULL);
+	if (!hcall_root)
+		return -ENOMEM;
+
+	for_each_cpu(cpu) {
+		snprintf(cpu_name_buf, CPU_NAME_BUF_SIZE, "cpu%d", cpu);
+		hcall_file = debugfs_create_file(cpu_name_buf, S_IRUGO,
+						 hcall_root,
+						 per_cpu(hcall_stats, cpu),
+						 &hcall_inst_seq_fops);
+		if (!hcall_file)
+			return -ENOMEM;
+	}
+
+	return 0;
+}
+__initcall(hcall_inst_init);

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Arnd Bergmann @ 2006-07-15  0:00 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Bryan Rosenburg, Nathan Lynch, Paul Mackerras, Christopher Yeoh
In-Reply-To: <20060714233739.GA11487@monkey.ibm.com>

On Saturday 15 July 2006 01:37, Mike Kravetz wrote:
> In addition, there has been some discussion of these patches on IRC.
> Some remaining issues/questions are:
> - Exactly how much overhead does the statistic gathering introduce?
> - What would be the cost of disabling preemption for more accurate statistics?
> - What would be the cost of disabling interrupts for more accurate statistics?
> - Should we extend this statistic gathering to RTAS calls?

What happened to the question whether to use PURR values for also measuring
cycles spent executing the hcall as opposed to cycles that passed before
the hcall returns. Did that turn out not giving extra information after all
or was there a different reason to drop that idea?

	Arnd <><

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Mike Kravetz @ 2006-07-15  0:06 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
	Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>

On Sat, Jul 15, 2006 at 02:00:02AM +0200, Arnd Bergmann wrote:
> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?

Oops, forgot that as an additional issue/question.  In this patch, I went
back to mftb() as 'wall time' made more sense for the group wanting this
functionality.  It is easy to switch, or collect both (I think).  Since I
started with mftb went to PURR and then back to mftb, it certainly does
look like an agument to try and collect both. :)

-- 
Mike

^ permalink raw reply

* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Nathan Lynch @ 2006-07-15  0:15 UTC (permalink / raw)
  To: Mike Kravetz
  Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
	Christopher Yeoh
In-Reply-To: <20060714234034.GC11487@monkey.ibm.com>

Mike Kravetz wrote:
> +static inline void update_stats(unsigned long opcode, unsigned long t_before)
> +{
> +	unsigned long op_index = opcode >> 2;
> +	struct hcall_stats *hs = &__get_cpu_var(hcall_stats[op_index]);
> +
> +	hs->total_time += (mftb() - t_before);
> +	hs->num_calls++;
> +}
> +
> +/*
> + * plpar_hcall wrapper
> + */
> +long plpar_hcall(unsigned long opcode,
> +                 unsigned long arg1,
> +                 unsigned long arg2,
> +                 unsigned long arg3,
> +                 unsigned long arg4,
> +                 unsigned long *out1,
> +                 unsigned long *out2,
> +                 unsigned long *out3)
> +{
> +	long rc;
> +	unsigned long t_before;
> +
> +	t_before = mftb();
> +	rc = plpar_hcall_base(opcode, arg1, arg2, arg3, arg4, out1, out2, out3);
> +
> +	update_stats(opcode, t_before);
> +	return rc;
> +}

Hmm, isn't it possible that the stats could be corrupted if we process
an interrupt/softirq which does an hcall while the stats are being
updated?  Maybe it's not a show-stopper, but it seems to me that
accuracy could suffer under some workloads.

^ permalink raw reply

* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Mike Kravetz @ 2006-07-15  0:41 UTC (permalink / raw)
  To: Nathan Lynch
  Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
	Christopher Yeoh
In-Reply-To: <20060715001545.GK19076@localdomain>

On Fri, Jul 14, 2006 at 07:15:45PM -0500, Nathan Lynch wrote:
> Hmm, isn't it possible that the stats could be corrupted if we process
> an interrupt/softirq which does an hcall while the stats are being
> updated?  Maybe it's not a show-stopper, but it seems to me that
> accuracy could suffer under some workloads.

Yes, they can become inaccurate.  Is this what you mean by 'corrupted' or
you thinking of something worse?

There is going to be a trade off between accuracy and the overhead of the
data gathering.  What really needs to happen is some good benchmarking to
measure the costs of different approaches.  I'm pretty sure I can get
someone to provide such data.

In this patch, I have minimized the overhead in data collection at the
cost of accuracy.

-- 
Mike

^ permalink raw reply

* Re: [JOB] Senior Embedded Linux Video Engineer
From: David H. Lynch Jr. @ 2006-07-15  3:23 UTC (permalink / raw)
  To: linuxppc-embedded
In-Reply-To: <44B7ECD7.3080807@am.sony.com>

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

Tim Bird wrote:
> Olof Johansson wrote:
>   
>> Ick. Why not just create a linuxppc-jobs@ozlabs org instead of hiding it
>> somewhere in the CELF organization...?
>>     
>
> Well, it would be either a public list or on CELF's public wiki.
> I'm not sure how this would be "hiding it".
>  -- Tim
>   
    Aparently there are people that do not want job related postings of
any kind on this list.

    I can respect that. To the same extent there are those of us who are
looking for work and appreciate means to get the work we love instead of
having to take the work we can get.

    I have my own personal worries about even a job list. There are a
plethora of jobsites. And I can trivially do a search for Embedded Linux
and get a plethora of job oportunities.
    But they are all employment - primarily contract employment. There
seem to be no resources available for those of us looking for actual
consulting work.

    I mean you would think this would be the ultimate consulting task -
give me a board and a few weeks without sleep and I will bring forth
Linux for you.

   
    Anyway, we all have our preferences. I would love to see an embedded
Linux Consultants list that was chock full of consulting oportunities.
    I would bring it up myself - but my ISP basically sucks, and I can
not even host a decent web site for my own consulting business.
    I would even be willing to risk its being overrun with employment,
and contract for hire, and contract employment gigs that have zero
appeal to me - but may be of
    interest to others here.

    I would NOT restrict it to PPC's. I come to linuxppc-embedded to
look for ppc information. But I will do embedded linux work of any kind
that will pay the mortgage - heck, I would do web programming rather
than rejoin the rat race.

    Unfortunately the rats are looming.




> =============================
> Tim Bird
> Architecture Group Chair, CE Linux Forum
> Senior Staff Engineer, Sony Electronics
> =============================
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>   


-- 
Dave Lynch 					  	    DLA Systems
Software Development:  				         Embedded Linux
717.627.3770 	       dhlii@dlasys.net 	  http://www.dlasys.net
fax: 1.253.369.9244 			           Cell: 1.717.587.7774
Over 25 years' experience in platforms, languages, and technologies too numerous to list.

"Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction."
Albert Einstein


[-- Attachment #2: Type: text/html, Size: 3750 bytes --]

^ permalink raw reply

* Re: [PATCH 2/3] powerpc: Instrument Hypervisor Calls: add wrappers
From: Nathan Lynch @ 2006-07-15  8:03 UTC (permalink / raw)
  To: Mike Kravetz
  Cc: Bryan Rosenburg, linuxppc-dev, Paul Mackerras, Arnd Bergmann,
	Christopher Yeoh
In-Reply-To: <20060715004156.GJ6824@monkey.ibm.com>

Mike Kravetz wrote:
> On Fri, Jul 14, 2006 at 07:15:45PM -0500, Nathan Lynch wrote:
> > Hmm, isn't it possible that the stats could be corrupted if we process
> > an interrupt/softirq which does an hcall while the stats are being
> > updated?  Maybe it's not a show-stopper, but it seems to me that
> > accuracy could suffer under some workloads.
> 
> Yes, they can become inaccurate.  Is this what you mean by 'corrupted' or
> you thinking of something worse?

Yes, "corrupted" was perhaps too strong, but we could lose the
accounting for hcalls from interrupts that we take at exactly the
wrong time.  I guess it's a pretty tiny risk.

I just wanted to make sure this had been considered, but if you're
comfortable with the overhead/accuracy tradeoff, then okay.

^ permalink raw reply

* powermac: More powermac backlight fixes
From: Michael Hanselmann @ 2006-07-15 13:09 UTC (permalink / raw)
  To: akpm; +Cc: linuxppc-dev, johannes, aris, linux-kernel

This patch fixes several problems:
- The legacy backlight value might be set at interrupt time. Introduced
  a worker to prevent it from directly calling the backlight code.
- via-pmu allows the backlight to be grabbed, in which case we need to
  prevent other kernel code from changing the brightness.
- Don't send PMU requests in via-pmu-backlight when the machine is about
  to sleep or waking up.
- More Kconfig fixes.

Signed-off-by: Michael Hanselmann <linux-kernel@hansmi.ch>

---
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/arch/powerpc/platforms/powermac/backlight.c linux-2.6.18-rc1-git8/arch/powerpc/platforms/powermac/backlight.c
--- linux-2.6.18-rc1-git8.orig/arch/powerpc/platforms/powermac/backlight.c	2006-07-14 22:24:02.000000000 +0200
+++ linux-2.6.18-rc1-git8/arch/powerpc/platforms/powermac/backlight.c	2006-07-14 22:41:39.000000000 +0200
@@ -10,19 +10,32 @@
 #include <linux/kernel.h>
 #include <linux/fb.h>
 #include <linux/backlight.h>
+#include <linux/adb.h>
+#include <linux/pmu.h>
+#include <asm/atomic.h>
 #include <asm/prom.h>
 #include <asm/backlight.h>
 
 #define OLD_BACKLIGHT_MAX 15
 
 static void pmac_backlight_key_worker(void *data);
+static void pmac_backlight_set_legacy_worker(void *data);
+
 static DECLARE_WORK(pmac_backlight_key_work, pmac_backlight_key_worker, NULL);
+static DECLARE_WORK(pmac_backlight_set_legacy_work, pmac_backlight_set_legacy_worker, NULL);
 
-/* Although this variable is used in interrupt context, it makes no sense to
- * protect it. No user is able to produce enough key events per second and
+/* Although these variables are used in interrupt context, it makes no sense to
+ * protect them. No user is able to produce enough key events per second and
  * notice the errors that might happen.
  */
 static int pmac_backlight_key_queued;
+static int pmac_backlight_set_legacy_queued;
+
+/* The via-pmu code allows the backlight to be grabbed, in which case the
+ * in-kernel control of the brightness needs to be disabled. This should
+ * only be used by really old PowerBooks.
+ */
+static atomic_t kernel_backlight_disabled = ATOMIC_INIT(0);
 
 /* Protect the pmac_backlight variable */
 DEFINE_MUTEX(pmac_backlight_mutex);
@@ -82,6 +95,9 @@ int pmac_backlight_curve_lookup(struct f
 
 static void pmac_backlight_key_worker(void *data)
 {
+	if (atomic_read(&kernel_backlight_disabled))
+		return;
+
 	mutex_lock(&pmac_backlight_mutex);
 	if (pmac_backlight) {
 		struct backlight_properties *props;
@@ -107,8 +123,12 @@ static void pmac_backlight_key_worker(vo
 	mutex_unlock(&pmac_backlight_mutex);
 }
 
+/* This function is called in interrupt context */
 void pmac_backlight_key(int direction)
 {
+	if (atomic_read(&kernel_backlight_disabled))
+		return;
+
 	/* we can receive multiple interrupts here, but the scheduled work
 	 * will run only once, with the last value
 	 */
@@ -116,10 +136,13 @@ void pmac_backlight_key(int direction)
 	schedule_work(&pmac_backlight_key_work);
 }
 
-int pmac_backlight_set_legacy_brightness(int brightness)
+static int __pmac_backlight_set_legacy_brightness(int brightness)
 {
 	int error = -ENXIO;
 
+	if (atomic_read(&kernel_backlight_disabled))
+		return -EBUSY;
+
 	mutex_lock(&pmac_backlight_mutex);
 	if (pmac_backlight) {
 		struct backlight_properties *props;
@@ -145,6 +168,22 @@ int pmac_backlight_set_legacy_brightness
 	return error;
 }
 
+static void pmac_backlight_set_legacy_worker(void *data)
+{
+	__pmac_backlight_set_legacy_brightness(pmac_backlight_set_legacy_queued);
+}
+
+/* This function is called in interrupt context */
+void pmac_backlight_set_legacy_brightness_pmu(int brightness) {
+	pmac_backlight_set_legacy_queued = brightness;
+	schedule_work(&pmac_backlight_set_legacy_work);
+}
+
+int pmac_backlight_set_legacy_brightness(int brightness)
+{
+	return __pmac_backlight_set_legacy_brightness(brightness);
+}
+
 int pmac_backlight_get_legacy_brightness()
 {
 	int result = -ENXIO;
@@ -167,6 +206,16 @@ int pmac_backlight_get_legacy_brightness
 	return result;
 }
 
+void pmac_backlight_disable()
+{
+	atomic_inc(&kernel_backlight_disabled);
+}
+
+void pmac_backlight_enable()
+{
+	atomic_dec(&kernel_backlight_disabled);
+}
+
 EXPORT_SYMBOL_GPL(pmac_backlight);
 EXPORT_SYMBOL_GPL(pmac_backlight_mutex);
 EXPORT_SYMBOL_GPL(pmac_has_backlight_type);
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/adbhid.c linux-2.6.18-rc1-git8/drivers/macintosh/adbhid.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/adbhid.c	2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/adbhid.c	2006-07-14 22:41:10.000000000 +0200
@@ -45,14 +45,11 @@
 #include <linux/pmu.h>
 
 #include <asm/machdep.h>
+#include <asm/backlight.h>
 #ifdef CONFIG_PPC_PMAC
 #include <asm/pmac_feature.h>
 #endif
 
-#ifdef CONFIG_PMAC_BACKLIGHT
-#include <asm/backlight.h>
-#endif
-
 MODULE_AUTHOR("Franz Sirl <Franz.Sirl-kernel@lauterbach.com>");
 
 #define KEYB_KEYREG	0	/* register # for key up/down data */
@@ -237,11 +234,6 @@ static struct adb_ids keyboard_ids;
 static struct adb_ids mouse_ids;
 static struct adb_ids buttons_ids;
 
-#ifdef CONFIG_PMAC_BACKLIGHT
-/* Exported to via-pmu.c */
-int disable_kernel_backlight = 0;
-#endif /* CONFIG_PMAC_BACKLIGHT */
-
 /* Kind of keyboard, see Apple technote 1152  */
 #define ADB_KEYBOARD_UNKNOWN	0
 #define ADB_KEYBOARD_ANSI	0x0100
@@ -527,7 +519,7 @@ adbhid_buttons_input(unsigned char *data
 
 		case 0xa:	/* brightness decrease */
 #ifdef CONFIG_PMAC_BACKLIGHT
-			if (!disable_kernel_backlight && down)
+			if (down)
 				pmac_backlight_key_down();
 #endif
 			input_report_key(adbhid[id]->input, KEY_BRIGHTNESSDOWN, down);
@@ -535,7 +527,7 @@ adbhid_buttons_input(unsigned char *data
 
 		case 0x9:	/* brightness increase */
 #ifdef CONFIG_PMAC_BACKLIGHT
-			if (!disable_kernel_backlight && down)
+			if (down)
 				pmac_backlight_key_up();
 #endif
 			input_report_key(adbhid[id]->input, KEY_BRIGHTNESSUP, down);
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/Kconfig linux-2.6.18-rc1-git8/drivers/macintosh/Kconfig
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/Kconfig	2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/Kconfig	2006-07-14 22:41:10.000000000 +0200
@@ -115,8 +115,6 @@ config PMAC_BACKLIGHT
 	bool "Backlight control for LCD screens"
 	depends on ADB_PMU && FB = y && (BROKEN || !PPC64)
 	select FB_BACKLIGHT
-	select BACKLIGHT_CLASS_DEVICE
-	select BACKLIGHT_LCD_SUPPORT
 	help
 	  Say Y here to enable Macintosh specific extensions of the generic
 	  backlight code. With this enabled, the brightness keys on older
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu-backlight.c linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu-backlight.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu-backlight.c	2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu-backlight.c	2006-07-14 22:41:10.000000000 +0200
@@ -15,8 +15,9 @@
 
 #define MAX_PMU_LEVEL 0xFF
 
-static struct device_node *vias;
 static struct backlight_properties pmu_backlight_data;
+static spinlock_t pmu_backlight_lock;
+static int sleeping;
 
 static int pmu_backlight_get_level_brightness(struct fb_info *info,
 		int level)
@@ -40,23 +41,36 @@ static int pmu_backlight_update_status(s
 {
 	struct fb_info *info = class_get_devdata(&bd->class_dev);
 	struct adb_request req;
-	int pmulevel, level = bd->props->brightness;
+	unsigned long flags;
+	int level = bd->props->brightness;
 
-	if (vias == NULL)
-		return -ENODEV;
+	spin_lock_irqsave(&pmu_backlight_lock, flags);
+
+	/* Don't update brightness when sleeping */
+	if (sleeping)
+		goto out;
 
 	if (bd->props->power != FB_BLANK_UNBLANK ||
 	    bd->props->fb_blank != FB_BLANK_UNBLANK)
 		level = 0;
 
-	pmulevel = pmu_backlight_get_level_brightness(info, level);
+	if (level > 0) {
+		int pmulevel = pmu_backlight_get_level_brightness(info, level);
 
-	pmu_request(&req, NULL, 2, PMU_BACKLIGHT_BRIGHT, pmulevel);
-	pmu_wait_complete(&req);
+		pmu_request(&req, NULL, 2, PMU_BACKLIGHT_BRIGHT, pmulevel);
+		pmu_wait_complete(&req);
 
-	pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
-		PMU_POW_BACKLIGHT | (level > 0 ? PMU_POW_ON : PMU_POW_OFF));
-	pmu_wait_complete(&req);
+		pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
+			PMU_POW_BACKLIGHT | PMU_POW_ON);
+		pmu_wait_complete(&req);
+	} else {
+		pmu_request(&req, NULL, 2, PMU_POWER_CTRL,
+			PMU_POW_BACKLIGHT | PMU_POW_OFF);
+		pmu_wait_complete(&req);
+	}
+
+out:
+	spin_unlock_irqrestore(&pmu_backlight_lock, flags);
 
 	return 0;
 }
@@ -73,15 +87,39 @@ static struct backlight_properties pmu_b
 	.max_brightness	= (FB_BACKLIGHT_LEVELS - 1),
 };
 
-void __init pmu_backlight_init(struct device_node *in_vias)
+#ifdef CONFIG_PM
+static int pmu_backlight_sleep_call(struct pmu_sleep_notifier *self, int when)
+{
+	unsigned long flags;
+
+	spin_lock_irqsave(&pmu_backlight_lock, flags);
+
+	switch (when) {
+	case PBOOK_SLEEP_REQUEST:
+		sleeping = 1;
+		break;
+	case PBOOK_WAKE:
+		sleeping = 0;
+		break;
+	}
+
+	spin_unlock_irqrestore(&pmu_backlight_lock, flags);
+
+	return PBOOK_SLEEP_OK;
+}
+
+static struct pmu_sleep_notifier pmu_backlight_sleep_notif = {
+	.notifier_call = pmu_backlight_sleep_call,
+};
+#endif
+
+void __init pmu_backlight_init()
 {
 	struct backlight_device *bd;
 	struct fb_info *info;
 	char name[10];
 	int level, autosave;
 
-	vias = in_vias;
-
 	/* Special case for the old PowerBook since I can't test on it */
 	autosave =
 		machine_is_compatible("AAPL,3400/2400") ||
@@ -141,6 +179,10 @@ void __init pmu_backlight_init(struct de
 		pmac_backlight = bd;
 	mutex_unlock(&pmac_backlight_mutex);
 
+#ifdef CONFIG_PM
+	pmu_register_sleep_notifier(&pmu_backlight_sleep_notif);
+#endif 
+
 	printk("pmubl: Backlight initialized (%s)\n", name);
 
 	return;
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu.c linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu.c
--- linux-2.6.18-rc1-git8.orig/drivers/macintosh/via-pmu.c	2006-07-14 22:24:11.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/macintosh/via-pmu.c	2006-07-14 22:41:10.000000000 +0200
@@ -16,7 +16,6 @@
  *    a sleep or a freq. switch
  *  - Move sleep code out of here to pmac_pm, merge into new
  *    common PM infrastructure
- *  - Move backlight code out as well
  *  - Save/Restore PCI space properly
  *
  */
@@ -60,9 +59,7 @@
 #include <asm/mmu_context.h>
 #include <asm/cputable.h>
 #include <asm/time.h>
-#ifdef CONFIG_PMAC_BACKLIGHT
 #include <asm/backlight.h>
-#endif
 
 #include "via-pmu-event.h"
 
@@ -177,10 +174,6 @@ static int query_batt_timer = BATTERY_PO
 static struct adb_request batt_req;
 static struct proc_dir_entry *proc_pmu_batt[PMU_MAX_BATTERIES];
 
-#if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
-extern int disable_kernel_backlight;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
-
 int __fake_sleep;
 int asleep;
 BLOCKING_NOTIFIER_HEAD(sleep_notifier_list);
@@ -466,7 +459,7 @@ static int __init via_pmu_dev_init(void)
 
 #ifdef CONFIG_PMAC_BACKLIGHT
 	/* Initialize backlight */
-	pmu_backlight_init(vias);
+	pmu_backlight_init();
 #endif
 
 #ifdef CONFIG_PPC32
@@ -1403,11 +1396,8 @@ next:
 	else if ((1 << pirq) & PMU_INT_SNDBRT) {
 #ifdef CONFIG_PMAC_BACKLIGHT
 		if (len == 3)
-#ifdef CONFIG_INPUT_ADBHID
-			if (!disable_kernel_backlight)
-#endif /* CONFIG_INPUT_ADBHID */
-				pmac_backlight_set_legacy_brightness(data[1] >> 4);
-#endif /* CONFIG_PMAC_BACKLIGHT */
+			pmac_backlight_set_legacy_brightness_pmu(data[1] >> 4);
+#endif
 	}
 	/* Tick interrupt */
 	else if ((1 << pirq) & PMU_INT_TICK) {
@@ -2414,7 +2404,7 @@ struct pmu_private {
 	spinlock_t lock;
 #if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
 	int	backlight_locker;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */	
+#endif
 };
 
 static LIST_HEAD(all_pmu_pvt);
@@ -2464,7 +2454,7 @@ pmu_open(struct inode *inode, struct fil
 	spin_lock_irqsave(&all_pvt_lock, flags);
 #if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
 	pp->backlight_locker = 0;
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */	
+#endif
 	list_add(&pp->list, &all_pmu_pvt);
 	spin_unlock_irqrestore(&all_pvt_lock, flags);
 	file->private_data = pp;
@@ -2559,13 +2549,12 @@ pmu_release(struct inode *inode, struct 
 		spin_lock_irqsave(&all_pvt_lock, flags);
 		list_del(&pp->list);
 		spin_unlock_irqrestore(&all_pvt_lock, flags);
+
 #if defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT)
-		if (pp->backlight_locker) {
-			spin_lock_irqsave(&pmu_lock, flags);
-			disable_kernel_backlight--;
-			spin_unlock_irqrestore(&pmu_lock, flags);
-		}
-#endif /* defined(CONFIG_INPUT_ADBHID) && defined(CONFIG_PMAC_BACKLIGHT) */
+		if (pp->backlight_locker)
+			pmac_backlight_enable();
+#endif
+
 		kfree(pp);
 	}
 	unlock_kernel();
@@ -2642,18 +2631,18 @@ pmu_ioctl(struct inode * inode, struct f
 #ifdef CONFIG_INPUT_ADBHID
 	case PMU_IOC_GRAB_BACKLIGHT: {
 		struct pmu_private *pp = filp->private_data;
-		unsigned long flags;
 
 		if (pp->backlight_locker)
 			return 0;
+
 		pp->backlight_locker = 1;
-		spin_lock_irqsave(&pmu_lock, flags);
-		disable_kernel_backlight++;
-		spin_unlock_irqrestore(&pmu_lock, flags);
+		pmac_backlight_disable();
+
 		return 0;
 	}
 #endif /* CONFIG_INPUT_ADBHID */
 #endif /* CONFIG_PMAC_BACKLIGHT_LEGACY */
+
 	case PMU_IOC_GET_MODEL:
 	    	return put_user(pmu_kind, argp);
 	case PMU_IOC_HAS_ADB:
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/aty/aty128fb.c linux-2.6.18-rc1-git8/drivers/video/aty/aty128fb.c
--- linux-2.6.18-rc1-git8.orig/drivers/video/aty/aty128fb.c	2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/aty/aty128fb.c	2006-07-14 22:41:10.000000000 +0200
@@ -455,7 +455,10 @@ static void do_wait_for_fifo(u16 entries
 static void wait_for_fifo(u16 entries, struct aty128fb_par *par);
 static void wait_for_idle(struct aty128fb_par *par);
 static u32 depth_to_dst(u32 depth);
+
+#ifdef CONFIG_FB_ATY128_BACKLIGHT
 static void aty128_bl_set_power(struct fb_info *info, int power);
+#endif
 
 #define BIOS_IN8(v)  	(readb(bios + (v)))
 #define BIOS_IN16(v) 	(readb(bios + (v)) | \
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/aty/atyfb_base.c linux-2.6.18-rc1-git8/drivers/video/aty/atyfb_base.c
--- linux-2.6.18-rc1-git8.orig/drivers/video/aty/atyfb_base.c	2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/aty/atyfb_base.c	2006-07-14 22:41:10.000000000 +0200
@@ -2812,7 +2812,7 @@ static int atyfb_blank(int blank, struct
 	if (par->lock_blank || par->asleep)
 		return 0;
 
-#ifdef CONFIG_PMAC_BACKLIGHT
+#ifdef CONFIG_FB_ATY_BACKLIGHT
 	if (machine_is(powermac) && blank > FB_BLANK_NORMAL)
 		aty_bl_set_power(info, FB_BLANK_POWERDOWN);
 #elif defined(CONFIG_FB_ATY_GENERIC_LCD)
@@ -2844,7 +2844,7 @@ static int atyfb_blank(int blank, struct
 	}
 	aty_st_le32(CRTC_GEN_CNTL, gen_cntl, par);
 
-#ifdef CONFIG_PMAC_BACKLIGHT
+#ifdef CONFIG_FB_ATY_BACKLIGHT
 	if (machine_is(powermac) && blank <= FB_BLANK_NORMAL)
 		aty_bl_set_power(info, FB_BLANK_UNBLANK);
 #elif defined(CONFIG_FB_ATY_GENERIC_LCD)
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/drivers/video/Kconfig linux-2.6.18-rc1-git8/drivers/video/Kconfig
--- linux-2.6.18-rc1-git8.orig/drivers/video/Kconfig	2006-07-14 22:24:07.000000000 +0200
+++ linux-2.6.18-rc1-git8/drivers/video/Kconfig	2006-07-14 22:41:10.000000000 +0200
@@ -86,9 +86,11 @@ config FB_MACMODES
        default n
 
 config FB_BACKLIGHT
-       bool
-       depends on FB
-       default n
+	bool
+	depends on FB
+	select BACKLIGHT_LCD_SUPPORT
+	select BACKLIGHT_CLASS_DEVICE
+	default n
 
 config FB_MODE_HELPERS
         bool "Enable Video Mode Handling Helpers"
@@ -721,10 +723,8 @@ config FB_NVIDIA_I2C
 
 config FB_NVIDIA_BACKLIGHT
 	bool "Support for backlight control"
-	depends on FB_NVIDIA && PPC_PMAC
+	depends on FB_NVIDIA && PMAC_BACKLIGHT
 	select FB_BACKLIGHT
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
 	default y
 	help
 	  Say Y here if you want to control the backlight of your display.
@@ -769,10 +769,8 @@ config FB_RIVA_DEBUG
 
 config FB_RIVA_BACKLIGHT
 	bool "Support for backlight control"
-	depends on FB_RIVA && PPC_PMAC
+	depends on FB_RIVA && PMAC_BACKLIGHT
 	select FB_BACKLIGHT
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
 	default y
 	help
 	  Say Y here if you want to control the backlight of your display.
@@ -1025,10 +1023,8 @@ config FB_RADEON_I2C
 
 config FB_RADEON_BACKLIGHT
 	bool "Support for backlight control"
-	depends on FB_RADEON && PPC_PMAC
+	depends on FB_RADEON && PMAC_BACKLIGHT
 	select FB_BACKLIGHT
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
 	default y
 	help
 	  Say Y here if you want to control the backlight of your display.
@@ -1059,10 +1055,8 @@ config FB_ATY128
 
 config FB_ATY128_BACKLIGHT
 	bool "Support for backlight control"
-	depends on FB_ATY128 && PPC_PMAC
+	depends on FB_ATY128 && PMAC_BACKLIGHT
 	select FB_BACKLIGHT
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
 	default y
 	help
 	  Say Y here if you want to control the backlight of your display.
@@ -1111,10 +1105,8 @@ config FB_ATY_GX
 
 config FB_ATY_BACKLIGHT
 	bool "Support for backlight control"
-	depends on FB_ATY && PPC_PMAC
+	depends on FB_ATY && PMAC_BACKLIGHT
 	select FB_BACKLIGHT
-	select BACKLIGHT_LCD_SUPPORT
-	select BACKLIGHT_CLASS_DEVICE
 	default y
 	help
 	  Say Y here if you want to control the backlight of your display.
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/include/asm-powerpc/backlight.h linux-2.6.18-rc1-git8/include/asm-powerpc/backlight.h
--- linux-2.6.18-rc1-git8.orig/include/asm-powerpc/backlight.h	2006-07-14 22:24:29.000000000 +0200
+++ linux-2.6.18-rc1-git8/include/asm-powerpc/backlight.h	2006-07-14 22:41:10.000000000 +0200
@@ -30,8 +30,12 @@ static inline void pmac_backlight_key_do
 	pmac_backlight_key(1);
 }
 
+extern void pmac_backlight_set_legacy_brightness_pmu(int brightness);
 extern int pmac_backlight_set_legacy_brightness(int brightness);
 extern int pmac_backlight_get_legacy_brightness(void);
 
+extern void pmac_backlight_enable(void);
+extern void pmac_backlight_disable(void);
+
 #endif /* __KERNEL__ */
 #endif
diff -Nrup --exclude-from linux-exclude-from linux-2.6.18-rc1-git8.orig/include/linux/pmu.h linux-2.6.18-rc1-git8/include/linux/pmu.h
--- linux-2.6.18-rc1-git8.orig/include/linux/pmu.h	2006-07-14 22:24:25.000000000 +0200
+++ linux-2.6.18-rc1-git8/include/linux/pmu.h	2006-07-14 22:41:10.000000000 +0200
@@ -231,7 +231,6 @@ extern struct pmu_battery_info pmu_batte
 extern unsigned int pmu_power_flags;
 
 /* Backlight */
-extern int disable_kernel_backlight;
-extern void pmu_backlight_init(struct device_node*);
+extern void pmu_backlight_init(void);
 
 #endif	/* __KERNEL__ */

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Anton Blanchard @ 2006-07-15 15:30 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
	Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>

 
> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?

You have to be careful with PURR since it may be context switched
between partitions.

Anton

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Arnd Bergmann @ 2006-07-15 16:42 UTC (permalink / raw)
  To: Anton Blanchard
  Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
	Christopher Yeoh
In-Reply-To: <20060715153053.GK31081@krispykreme>

On Saturday 15 July 2006 17:30, Anton Blanchard wrote:
> > What happened to the question whether to use PURR values for also measuring
> > cycles spent executing the hcall as opposed to cycles that passed before
> > the hcall returns. Did that turn out not giving extra information after all
> > or was there a different reason to drop that idea?
> 
> You have to be careful with PURR since it may be context switched
> between partitions.
> 

Not sure I follow you. I would expect the PURR value to be restored after
a context switch, even if we continue on a different physical CPU.

The idea behind monitoring both PURR and timebase is that the difference
between the two tells you how long the partition was suspended during
the hcall.

	Arnd <><

^ permalink raw reply

* Re: [PATCH 06/12] aoa: pmf gpio: report if function calling fails
From: Andreas Schwab @ 2006-07-15 17:12 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linuxppc-dev
In-Reply-To: <20060707165531.206137000@sipsolutions.net>

Johannes Berg <johannes@sipsolutions.net> writes:

> This patch makes the pmf GPIO layer in aoa report if calling
> a platform function failed.

This will always fire when a switch like lineout-mute does not exist,
apparently because layout_notify does not check for that.

pmf_gpio_set_lineout failed, rc: -19

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Anton Blanchard @ 2006-07-15 22:07 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
	Christopher Yeoh
In-Reply-To: <200607151842.27568.arnd@arndb.de>

 
> Not sure I follow you. I would expect the PURR value to be restored after
> a context switch, even if we continue on a different physical CPU.
> 
> The idea behind monitoring both PURR and timebase is that the difference
> between the two tells you how long the partition was suspended during
> the hcall.

Sounds good, last time I looked at the patch I thought it was gathering
the PURR only. That on its own would make for some confusing results.

Anton

^ permalink raw reply

* Re: Kexec initial registers
From: Jimi Xenidis @ 2006-07-16  2:10 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1152911297.23037.109.camel@localhost.localdomain>


On Jul 14, 2006, at 5:08 PM, Benjamin Herrenschmidt wrote:

> On Fri, 2006-07-14 at 12:02 -0400, Jimi Xenidis wrote:
>> This is what I have so far:
>>
>>    r3: address of device tree blob
>>    r4: address that kernel was loaded
>>    r5: not OF (=0)
>
> Correct and that's all that should be needed
>
>>    r13: local_paca address (0?)
>
> You shouldn't have to care about r13 at all, it should be set by the
> kernel before it's used. If not, please let us know as that means  
> there
> is a bug :)

Not! 99.99% :)
When loading a kernel under Xen using kexec we set r1-r5 and set all  
other GPRS to all 5's (cuz we can) with CONFIG_PPC_EARLY_DEBUG=y and  
all hell breaks loose in the first printk()/DBG() from early_setup()  
for:
   kernel/printk.c:506
   506		spin_lock_irqsave(&logbuf_lock, flags);

where is access local_paca.

I think everyone else (ot just the sane ones) just sets all GPRS to 0

-JX

^ permalink raw reply

* Re: [PATCH 0/3] powerpc: Instrument Hypervisor Calls
From: Olof Johansson @ 2006-07-16  3:53 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Bryan Rosenburg, linuxppc-dev, Nathan Lynch, Paul Mackerras,
	Christopher Yeoh
In-Reply-To: <200607150200.03494.arnd@arndb.de>

On Sat, Jul 15, 2006 at 02:00:02AM +0200, Arnd Bergmann wrote:

> What happened to the question whether to use PURR values for also measuring
> cycles spent executing the hcall as opposed to cycles that passed before
> the hcall returns. Did that turn out not giving extra information after all
> or was there a different reason to drop that idea?

Just so people don't forget: this can't be done on all processors. For
example, PPC970 and POWER4 don't implement the PURR SPR. And it doesn't
make sense to use H_PURR to get the software emulated ones there. Not
really an issue on POWER4 since they don't do shared processor LPAR, but
on JS21 I think they might do?


-Olof

^ permalink raw reply

* Re: [PATCH 06/12] aoa: pmf gpio: report if function calling fails
From: Johannes Berg @ 2006-07-16  8:43 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: linuxppc-dev
In-Reply-To: <jebqrqbxne.fsf@sykes.suse.de>

Andreas Schwab wrote:
> This will always fire when a switch like lineout-mute does not exist,
> apparently because layout_notify does not check for that.
>
> pmf_gpio_set_lineout failed, rc: -19

Yeah, I know, I need to fix that. Unfortunately I've had corruption on my
/ and ~ filesystems so I'm a bit impaired right now, I'll send a patch to
make sure we don't touch knobs we don't have after I can fix up my
filesystem issues.

johannes

^ permalink raw reply

* Re: some problems on the SystemACE driver.
From: Ameet Patil @ 2006-07-16  9:40 UTC (permalink / raw)
  To: Ming Liu; +Cc: linuxppc-embedded
In-Reply-To: <BAY110-F25F8A5EDC3636ADA072960B26F0@phx.gbl>

Hi Ming,
   I know this might be very tedious for you. But its the same for me
especially when there is no need for me to do it. Anyway, could please
do a fresh start: untar linux kernel, apply all the TEMAC patches and
then apply my only 1 xx-after-TEMAC.patch

I have updated the patch. Make sure you download the new one.

The key is: When you compile this time the file xbasic_types.c in
drivers/bloxk/xilinx_sysace/ should not be compiled.

i.e.
>  CC      drivers/block/xilinx_sysace/xbasic_types.o
should not be shown!
Send a fresh log if this doesnot work!

-Ameet

Ming Liu wrote:
> Dear Ameet,
> Here is the normal log without -d when make zImage. Please check it. 
> Waiting for your result. Have fun in the weekend. :)
> 
>> I appreciate you testing the patch. Don't worry... we will solve it. And
>> I am not an expert either... you probably know more than me!
> 
> Thanks for your encouraging. Let's do it! Hopefully we can finish it 
> a.s.a.p. Good luck for us! 
> Regards
> Ming
> 
> _________________________________________________________________
> 享用世界上最大的电子邮件系统― MSN Hotmail。  http://www.hotmail.com  
>  CHK     include/linux/version.h
>  HOSTCC  scripts/basic/fixdep
>  HOSTCC  scripts/basic/split-include
>  HOSTCC  scripts/basic/docproc
>  HOSTCC  scripts/kconfig/conf.o
>  HOSTCC  scripts/kconfig/kxgettext.o
>  HOSTCC  scripts/kconfig/mconf.o
>  HOSTCC  scripts/kconfig/zconf.tab.o
>  HOSTLD  scripts/kconfig/conf
> scripts/kconfig/conf -s arch/ppc/Kconfig
> #
> # using defaults found in .config
> #
>  SPLIT   include/linux/autoconf.h -> include/config/*
>  CC      arch/ppc/kernel/asm-offsets.s
>  GEN     include/asm-ppc/asm-offsets.h
>  HOSTCC  scripts/kallsyms
>  HOSTCC  scripts/conmakehash
>  CC      init/main.o
>  CHK     include/linux/compile.h
>  UPD     include/linux/compile.h
>  CC      init/version.o
>  CC      init/do_mounts.o
>  LD      init/mounts.o
>  CC      init/initramfs.o
>  CC      init/calibrate.o
>  LD      init/built-in.o
>  HOSTCC  usr/gen_init_cpio
>  GEN     usr/initramfs_data.cpio.gz
>  AS      usr/initramfs_data.o
>  LD      usr/built-in.o
>  AS      arch/ppc/kernel/entry.o
>  CC      arch/ppc/kernel/traps.o
>  CC      arch/ppc/kernel/time.o
>  AS      arch/ppc/kernel/misc.o
>  CC      arch/ppc/kernel/setup.o
>  CC      arch/ppc/kernel/ppc_htab.o
>  CC      arch/ppc/kernel/dma-mapping.o
>  LD      arch/ppc/kernel/built-in.o
>  AS      arch/ppc/kernel/head_4xx.o
>  LDS     arch/ppc/kernel/vmlinux.lds
>  CC      arch/powerpc/kernel/semaphore.o
>  CC      arch/powerpc/kernel/cputable.o
>  CC      arch/powerpc/kernel/ptrace.o
>  CC      arch/powerpc/kernel/syscalls.o
>  CC      arch/powerpc/kernel/irq.o
>  CC      arch/powerpc/kernel/align.o
>  CC      arch/powerpc/kernel/signal_32.o
>  CC      arch/powerpc/kernel/pmc.o
>  CC      arch/powerpc/kernel/vdso.o
>  CC      arch/powerpc/kernel/init_task.o
>  CC      arch/powerpc/kernel/process.o
>  AS      arch/powerpc/kernel/systbl.o
>  CC      arch/powerpc/kernel/idle.o
>  LDS     arch/powerpc/kernel/vdso32/vdso32.lds
>  VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o
>  VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o
>  VDSO32A arch/powerpc/kernel/vdso32/datapage.o
>  VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o
>  VDSO32A arch/powerpc/kernel/vdso32/note.o
>  VDSO32L arch/powerpc/kernel/vdso32/vdso32.so
>  AS      arch/powerpc/kernel/vdso32/vdso32_wrapper.o
>  LD      arch/powerpc/kernel/vdso32/built-in.o
>  LD      arch/powerpc/kernel/built-in.o
>  LD      arch/ppc/platforms/built-in.o
>  CC      arch/ppc/mm/fault.o
>  CC      arch/ppc/mm/init.o
>  CC      arch/ppc/mm/mem_pieces.o
>  CC      arch/ppc/mm/mmu_context.o
>  CC      arch/ppc/mm/pgtable.o
>  CC      arch/ppc/mm/4xx_mmu.o
>  LD      arch/ppc/mm/built-in.o
>  AS      arch/ppc/lib/checksum.o
>  AS      arch/ppc/lib/string.o
>  CC      arch/ppc/lib/strcase.o
>  AS      arch/ppc/lib/div64.o
>  LD      arch/ppc/lib/built-in.o
>  CC      arch/ppc/syslib/xilinx_pic.o
>  CC      arch/ppc/syslib/ppc_sys.o
>  CC      arch/ppc/syslib/ppc4xx_setup.o
>  LD      arch/ppc/syslib/built-in.o
>  AS      arch/powerpc/sysdev/dcr.o
>  LD      arch/powerpc/sysdev/built-in.o
>  CC      arch/powerpc/lib/bitops.o
>  LD      arch/powerpc/lib/built-in.o
>  CC      arch/ppc/platforms/4xx/xilinx_ml403.o
>  CC      arch/ppc/platforms/4xx/virtex.o
>  LD      arch/ppc/platforms/4xx/built-in.o
>  CC      arch/powerpc/math-emu/math.o
> arch/powerpc/math-emu/math.c:56: warning: conflicting types for built-in 
> function 'fabs'
>  CC      arch/powerpc/math-emu/fmr.o
>  CC      arch/powerpc/math-emu/lfd.o
>  CC      arch/powerpc/math-emu/stfd.o
>  CC      arch/powerpc/math-emu/fabs.o
> arch/powerpc/math-emu/fabs.c:7: warning: conflicting types for built-in 
> function 'fabs'
>  CC      arch/powerpc/math-emu/fadd.o
> arch/powerpc/math-emu/fadd.c: In function `fadd':
> arch/powerpc/math-emu/fadd.c:31: warning: right shift count is negative
> arch/powerpc/math-emu/fadd.c:31: warning: left shift count >= width of type
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fadd.c:13: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fadds.o
> arch/powerpc/math-emu/fadds.c: In function `fadds':
> arch/powerpc/math-emu/fadds.c:32: warning: right shift count is negative
> arch/powerpc/math-emu/fadds.c:32: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fadds.c:14: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fcmpo.o
>  CC      arch/powerpc/math-emu/fcmpu.o
>  CC      arch/powerpc/math-emu/fctiw.o
> arch/powerpc/math-emu/fctiw.c: In function `fctiw':
> arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fctiw.c:15: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fctiw.c:12: warning: 'r' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fctiwz.o
> arch/powerpc/math-emu/fctiwz.c: In function `fctiwz':
> arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fctiwz.c:20: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fctiwz.c:13: warning: 'r' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fdiv.o
> arch/powerpc/math-emu/fdiv.c: In function `fdiv':
> arch/powerpc/math-emu/fdiv.c:46: warning: left shift count is negative
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fdiv.c:13: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fdivs.o
> arch/powerpc/math-emu/fdivs.c: In function `fdivs':
> arch/powerpc/math-emu/fdivs.c:48: warning: left shift count is negative
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fdivs.c:14: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmadd.o
> arch/powerpc/math-emu/fmadd.c: In function `fmadd':
> arch/powerpc/math-emu/fmadd.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fmadd.c:36: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmadd.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/fmadd.c:41: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:11: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadd.c:15: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmadds.o
> arch/powerpc/math-emu/fmadds.c: In function `fmadds':
> arch/powerpc/math-emu/fmadds.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fmadds.c:37: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmadds.c:42: warning: right shift count is negative
> arch/powerpc/math-emu/fmadds.c:42: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:12: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmadds.c:16: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmsub.o
> arch/powerpc/math-emu/fmsub.c: In function `fmsub':
> arch/powerpc/math-emu/fmsub.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fmsub.c:36: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmsub.c:44: warning: right shift count is negative
> arch/powerpc/math-emu/fmsub.c:44: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:11: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsub.c:15: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmsubs.o
> arch/powerpc/math-emu/fmsubs.c: In function `fmsubs':
> arch/powerpc/math-emu/fmsubs.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fmsubs.c:37: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmsubs.c:45: warning: right shift count is negative
> arch/powerpc/math-emu/fmsubs.c:45: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:12: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fmsubs.c:16: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmul.o
> arch/powerpc/math-emu/fmul.c: In function `fmul':
> arch/powerpc/math-emu/fmul.c:34: warning: right shift count is negative
> arch/powerpc/math-emu/fmul.c:34: warning: left shift count >= width of type
> arch/powerpc/math-emu/fmul.c:13: warning: 'R_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fmuls.o
> arch/powerpc/math-emu/fmuls.c: In function `fmuls':
> arch/powerpc/math-emu/fmuls.c:35: warning: right shift count is negative
> arch/powerpc/math-emu/fmuls.c:35: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fmuls.c:14: warning: 'R_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fnabs.o
>  CC      arch/powerpc/math-emu/fneg.o
>  CC      arch/powerpc/math-emu/types.o
> arch/powerpc/math-emu/types.c: In function `fp_unpack_d':
> arch/powerpc/math-emu/types.c:13: warning: left shift count is negative
> arch/powerpc/math-emu/types.c: In function `fp_pack_d':
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:28: warning: right shift count is negative
> arch/powerpc/math-emu/types.c: In function `fp_pack_ds':
> arch/powerpc/math-emu/types.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:45: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: left shift count is negative
> arch/powerpc/math-emu/types.c:46: warning: right shift count is negative
>  CC      arch/powerpc/math-emu/fnmadd.o
> arch/powerpc/math-emu/fnmadd.c: In function `fnmadd':
> arch/powerpc/math-emu/fnmadd.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadd.c:36: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fnmadd.c:41: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadd.c:41: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:11: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadd.c:15: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fnmadds.o
> arch/powerpc/math-emu/fnmadds.c: In function `fnmadds':
> arch/powerpc/math-emu/fnmadds.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadds.c:37: warning: left shift count >= width 
> of type
> arch/powerpc/math-emu/fnmadds.c:42: warning: right shift count is negative
> arch/powerpc/math-emu/fnmadds.c:42: warning: left shift count >= width 
> of type
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:12: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmadds.c:16: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fnmsub.o
> arch/powerpc/math-emu/fnmsub.c: In function `fnmsub':
> arch/powerpc/math-emu/fnmsub.c:36: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsub.c:36: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fnmsub.c:44: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsub.c:44: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:11: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsub.c:15: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fnmsubs.o
> arch/powerpc/math-emu/fnmsubs.c: In function `fnmsubs':
> arch/powerpc/math-emu/fnmsubs.c:37: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsubs.c:37: warning: left shift count >= width 
> of type
> arch/powerpc/math-emu/fnmsubs.c:45: warning: right shift count is negative
> arch/powerpc/math-emu/fnmsubs.c:45: warning: left shift count >= width 
> of type
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:12: warning: 'R_f1' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fnmsubs.c:16: warning: 'T_e' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fres.o
>  CC      arch/powerpc/math-emu/frsp.o
>  CC      arch/powerpc/math-emu/frsqrte.o
>  CC      arch/powerpc/math-emu/fsel.o
>  CC      arch/powerpc/math-emu/lfs.o
> arch/powerpc/math-emu/lfs.c: In function `lfs':
> arch/powerpc/math-emu/lfs.c:30: warning: left shift count is negative
>  CC      arch/powerpc/math-emu/fsqrt.o
> arch/powerpc/math-emu/fsqrt.c: In function `fsqrt':
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrt.c:30: warning: right shift count is negative
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_c' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_s' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrt.c:12: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fsqrts.o
> arch/powerpc/math-emu/fsqrts.c: In function `fsqrts':
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: left shift count is negative
> arch/powerpc/math-emu/fsqrts.c:31: warning: right shift count is negative
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_c' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_s' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsqrts.c:13: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fsub.o
> arch/powerpc/math-emu/fsub.c: In function `fsub':
> arch/powerpc/math-emu/fsub.c:34: warning: right shift count is negative
> arch/powerpc/math-emu/fsub.c:34: warning: left shift count >= width of type
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsub.c:13: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/fsubs.o
> arch/powerpc/math-emu/fsubs.c: In function `fsubs':
> arch/powerpc/math-emu/fsubs.c:35: warning: right shift count is negative
> arch/powerpc/math-emu/fsubs.c:35: warning: left shift count >= width of 
> type
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_e' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f0' might be used 
> uninitialized in this function
> arch/powerpc/math-emu/fsubs.c:14: warning: 'R_f1' might be used 
> uninitialized in this function
>  CC      arch/powerpc/math-emu/mcrfs.o
>  CC      arch/powerpc/math-emu/mffs.o
>  CC      arch/powerpc/math-emu/mtfsb0.o
>  CC      arch/powerpc/math-emu/mtfsb1.o
>  CC      arch/powerpc/math-emu/mtfsf.o
>  CC      arch/powerpc/math-emu/mtfsfi.o
>  CC      arch/powerpc/math-emu/stfiwx.o
>  CC      arch/powerpc/math-emu/stfs.o
> arch/powerpc/math-emu/stfs.c: In function `stfs':
> arch/powerpc/math-emu/stfs.c:27: warning: right shift count is negative
>  CC      arch/powerpc/math-emu/udivmodti4.o
>  LD      arch/powerpc/math-emu/built-in.o
>  CC      kernel/sched.o
>  CC      kernel/fork.o
>  CC      kernel/exec_domain.o
>  CC      kernel/panic.o
>  CC      kernel/printk.o
>  CC      kernel/profile.o
>  CC      kernel/exit.o
>  CC      kernel/itimer.o
>  CC      kernel/time.o
>  CC      kernel/softirq.o
>  CC      kernel/resource.o
>  CC      kernel/sysctl.o
>  CC      kernel/capability.o
>  CC      kernel/ptrace.o
>  CC      kernel/timer.o
>  CC      kernel/user.o
>  CC      kernel/signal.o
>  CC      kernel/sys.o
>  CC      kernel/kmod.o
>  CC      kernel/workqueue.o
>  CC      kernel/pid.o
>  CC      kernel/rcupdate.o
>  CC      kernel/extable.o
>  CC      kernel/params.o
>  CC      kernel/posix-timers.o
>  CC      kernel/kthread.o
>  CC      kernel/wait.o
>  CC      kernel/kfifo.o
>  CC      kernel/sys_ni.o
>  CC      kernel/posix-cpu-timers.o
>  CC      kernel/mutex.o
>  CC      kernel/hrtimer.o
>  CC      kernel/futex.o
>  CC      kernel/intermodule.o
>  CC      kernel/kallsyms.o
>  CC      kernel/ksysfs.o
>  CC      kernel/softlockup.o
>  CC      kernel/irq/handle.o
>  CC      kernel/irq/manage.o
>  CC      kernel/irq/spurious.o
>  CC      kernel/irq/proc.o
>  LD      kernel/irq/built-in.o
>  CC      kernel/seccomp.o
>  LD      kernel/built-in.o
>  CC      mm/bootmem.o
>  CC      mm/filemap.o
>  CC      mm/mempool.o
>  CC      mm/oom_kill.o
>  CC      mm/fadvise.o
>  CC      mm/page_alloc.o
>  CC      mm/page-writeback.o
>  CC      mm/pdflush.o
>  CC      mm/readahead.o
>  CC      mm/swap.o
>  CC      mm/truncate.o
>  CC      mm/vmscan.o
>  CC      mm/prio_tree.o
>  CC      mm/util.o
>  CC      mm/mmzone.o
>  CC      mm/fremap.o
>  CC      mm/highmem.o
>  CC      mm/madvise.o
>  CC      mm/memory.o
>  CC      mm/mincore.o
>  CC      mm/mlock.o
>  CC      mm/mmap.o
>  CC      mm/mprotect.o
>  CC      mm/mremap.o
>  CC      mm/msync.o
>  CC      mm/rmap.o
>  CC      mm/vmalloc.o
>  CC      mm/page_io.o
>  CC      mm/swap_state.o
>  CC      mm/swapfile.o
>  CC      mm/thrash.o
>  CC      mm/shmem.o
>  CC      mm/slab.o
>  CC      mm/filemap_xip.o
>  LD      mm/built-in.o
>  CC      fs/open.o
>  CC      fs/read_write.o
>  CC      fs/file_table.o
>  CC      fs/buffer.o
>  CC      fs/bio.o
>  CC      fs/super.o
>  CC      fs/block_dev.o
>  CC      fs/char_dev.o
>  CC      fs/stat.o
>  CC      fs/exec.o
>  CC      fs/pipe.o
>  CC      fs/namei.o
>  CC      fs/fcntl.o
>  CC      fs/ioctl.o
>  CC      fs/readdir.o
>  CC      fs/select.o
>  CC      fs/fifo.o
>  CC      fs/locks.o
>  CC      fs/dcache.o
>  CC      fs/inode.o
>  CC      fs/attr.o
>  CC      fs/bad_inode.o
>  CC      fs/file.o
>  CC      fs/filesystems.o
>  CC      fs/namespace.o
>  CC      fs/aio.o
>  CC      fs/seq_file.o
>  CC      fs/xattr.o
>  CC      fs/libfs.o
>  CC      fs/fs-writeback.o
>  CC      fs/mpage.o
>  CC      fs/direct-io.o
>  CC      fs/ioprio.o
>  CC      fs/pnode.o
>  CC      fs/drop_caches.o
>  CC      fs/splice.o
>  CC      fs/sync.o
>  CC      fs/inotify.o
>  CC      fs/eventpoll.o
>  CC      fs/binfmt_script.o
>  CC      fs/binfmt_elf.o
>  CC      fs/mbcache.o
>  CC      fs/posix_acl.o
>  CC      fs/xattr_acl.o
>  CC      fs/dnotify.o
>  CC      fs/autofs/dirhash.o
>  CC      fs/autofs/init.o
>  CC      fs/autofs/inode.o
>  CC      fs/autofs/root.o
>  CC      fs/autofs/symlink.o
>  CC      fs/autofs/waitq.o
>  LD      fs/autofs/autofs.o
>  LD      fs/autofs/built-in.o
>  CC      fs/autofs4/init.o
>  CC      fs/autofs4/inode.o
>  CC      fs/autofs4/root.o
>  CC      fs/autofs4/symlink.o
>  CC      fs/autofs4/waitq.o
>  CC      fs/autofs4/expire.o
>  LD      fs/autofs4/autofs4.o
>  LD      fs/autofs4/built-in.o
>  CC      fs/devpts/inode.o
>  LD      fs/devpts/devpts.o
>  LD      fs/devpts/built-in.o
>  CC      fs/ext2/balloc.o
>  CC      fs/ext2/bitmap.o
>  CC      fs/ext2/dir.o
>  CC      fs/ext2/file.o
>  CC      fs/ext2/fsync.o
>  CC      fs/ext2/ialloc.o
>  CC      fs/ext2/inode.o
>  CC      fs/ext2/ioctl.o
>  CC      fs/ext2/namei.o
>  CC      fs/ext2/super.o
>  CC      fs/ext2/symlink.o
>  CC      fs/ext2/xattr.o
>  CC      fs/ext2/xattr_user.o
>  CC      fs/ext2/xattr_trusted.o
>  CC      fs/ext2/acl.o
>  CC      fs/ext2/xattr_security.o
>  CC      fs/ext2/xip.o
>  LD      fs/ext2/ext2.o
>  LD      fs/ext2/built-in.o
>  CC      fs/nls/nls_base.o
>  LD      fs/nls/built-in.o
>  CC      fs/partitions/check.o
>  CC      fs/partitions/msdos.o
>  LD      fs/partitions/built-in.o
>  CC      fs/proc/mmu.o
>  CC      fs/proc/task_mmu.o
>  CC      fs/proc/inode.o
>  CC      fs/proc/root.o
>  CC      fs/proc/base.o
>  CC      fs/proc/generic.o
>  CC      fs/proc/array.o
>  CC      fs/proc/kmsg.o
>  CC      fs/proc/proc_tty.o
>  CC      fs/proc/proc_misc.o
>  CC      fs/proc/kcore.o
>  LD      fs/proc/proc.o
>  LD      fs/proc/built-in.o
>  CC      fs/ramfs/inode.o
>  CC      fs/ramfs/file-mmu.o
>  LD      fs/ramfs/ramfs.o
>  LD      fs/ramfs/built-in.o
>  CC      fs/sysfs/inode.o
>  CC      fs/sysfs/file.o
>  CC      fs/sysfs/dir.o
>  CC      fs/sysfs/symlink.o
>  CC      fs/sysfs/mount.o
>  CC      fs/sysfs/bin.o
>  CC      fs/sysfs/group.o
>  LD      fs/sysfs/built-in.o
>  LD      fs/built-in.o
>  CC      ipc/util.o
>  CC      ipc/msgutil.o
>  CC      ipc/msg.o
>  CC      ipc/sem.o
>  CC      ipc/shm.o
>  LD      ipc/built-in.o
>  CC      security/commoncap.o
>  LD      security/built-in.o
>  LD      crypto/built-in.o
>  CC      block/elevator.o
>  CC      block/ll_rw_blk.o
>  CC      block/ioctl.o
>  CC      block/genhd.o
>  CC      block/scsi_ioctl.o
>  CC      block/noop-iosched.o
>  CC      block/as-iosched.o
>  CC      block/deadline-iosched.o
>  CC      block/cfq-iosched.o
>  LD      block/built-in.o
>  CC      drivers/base/core.o
>  CC      drivers/base/sys.o
>  CC      drivers/base/bus.o
>  CC      drivers/base/dd.o
>  CC      drivers/base/driver.o
>  CC      drivers/base/class.o
>  CC      drivers/base/platform.o
>  CC      drivers/base/cpu.o
>  CC      drivers/base/firmware.o
>  CC      drivers/base/init.o
>  CC      drivers/base/map.o
>  CC      drivers/base/dmapool.o
>  CC      drivers/base/attribute_container.o
>  CC      drivers/base/transport_class.o
>  CC      drivers/base/power/shutdown.o
>  LD      drivers/base/power/built-in.o
>  LD      drivers/base/built-in.o
>  CC      drivers/block/loop.o
>  CC      drivers/block/xilinx_sysace/adapter.o
> drivers/block/xilinx_sysace/adapter.c:221: warning: 'xsysace_restart' 
> defined but not used
>  CC      drivers/block/xilinx_sysace/xbasic_types.o
>  CC      drivers/block/xilinx_sysace/xsysace.o
>  CC      drivers/block/xilinx_sysace/xsysace_g.o
>  CC      drivers/block/xilinx_sysace/xsysace_intr.o
>  CC      drivers/block/xilinx_sysace/xsysace_l.o
>  CC      drivers/block/xilinx_sysace/xsysace_compactflash.o
>  CC      drivers/block/xilinx_sysace/xsysace_jtagcfg.o
>  LD      drivers/block/xilinx_sysace/xilinx_sysace.o
>  LD      drivers/block/xilinx_sysace/built-in.o
>  LD      drivers/block/built-in.o
>  LD      drivers/cdrom/built-in.o
>  CC      drivers/char/mem.o
>  CC      drivers/char/random.o
>  CC      drivers/char/tty_io.o
>  CC      drivers/char/n_tty.o
>  CC      drivers/char/tty_ioctl.o
>  CC      drivers/char/pty.o
>  CC      drivers/char/misc.o
>  CC      drivers/char/vt_ioctl.o
>  CC      drivers/char/vc_screen.o
>  CC      drivers/char/consolemap.o
>  CONMK   drivers/char/consolemap_deftbl.c
>  CC      drivers/char/consolemap_deftbl.o
>  CC      drivers/char/selection.o
>  CC      drivers/char/keyboard.o
>  CC      drivers/char/vt.o
>  SHIPPED drivers/char/defkeymap.c
>  CC      drivers/char/defkeymap.o
>  LD      drivers/char/built-in.o
>  LD      drivers/firmware/built-in.o
>  CC      drivers/hwmon/hwmon.o
>  LD      drivers/hwmon/built-in.o
>  CC      drivers/input/input.o
>  CC      drivers/input/mousedev.o
>  LD      drivers/input/built-in.o
>  CC      drivers/input/serio/serio.o
>  CC      drivers/input/serio/i8042.o
>  CC      drivers/input/serio/serport.o
>  LD      drivers/input/serio/built-in.o
>  LD      drivers/media/common/built-in.o
>  LD      drivers/media/built-in.o
>  LD      drivers/mfd/built-in.o
>  LD      drivers/misc/built-in.o
>  CC      drivers/mtd/mtdcore.o
>  CC      drivers/mtd/mtdpart.o
>  CC      drivers/mtd/redboot.o
> drivers/mtd/redboot.c: In function `parse_redboot_partitions':
> drivers/mtd/redboot.c:103: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:104: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:105: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:106: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:107: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:108: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
> drivers/mtd/redboot.c:109: warning: passing arg 1 of `__swab32s' from 
> incompatible pointer type
>  CC      drivers/mtd/mtdchar.o
>  CC      drivers/mtd/mtdblock.o
>  CC      drivers/mtd/mtd_blkdevs.o
>  CC      drivers/mtd/chips/chipreg.o
>  CC      drivers/mtd/chips/cfi_probe.o
>  CC      drivers/mtd/chips/cfi_util.o
>  CC      drivers/mtd/chips/cfi_cmdset_0002.o
> drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_init':
> drivers/mtd/chips/cfi_cmdset_0002.c:1766: warning: 
> `inter_module_register' is deprecated (declared at 
> include/linux/module.h:563)
> drivers/mtd/chips/cfi_cmdset_0002.c: In function `cfi_amdstd_exit':
> drivers/mtd/chips/cfi_cmdset_0002.c:1773: warning: 
> `inter_module_unregister' is deprecated (declared at 
> include/linux/module.h:564)
>  CC      drivers/mtd/chips/gen_probe.o
>  LD      drivers/mtd/chips/built-in.o
>  LD      drivers/mtd/devices/built-in.o
>  LD      drivers/mtd/maps/built-in.o
>  LD      drivers/mtd/nand/built-in.o
>  LD      drivers/mtd/onenand/built-in.o
>  LD      drivers/mtd/built-in.o
>  CC      drivers/net/Space.o
>  CC      drivers/net/loopback.o
>  CC      drivers/net/xilinx_temac/adapter.o
>  CC      drivers/net/xilinx_temac/xtemac.o
>  CC      drivers/net/xilinx_temac/xtemac_intr.o
>  CC      drivers/net/xilinx_temac/xtemac_intr_sgdma.o
>  CC      drivers/net/xilinx_temac/xtemac_sgdma.o
>  CC      drivers/net/xilinx_temac/xtemac_intr_fifo.o
>  CC      drivers/net/xilinx_temac/xtemac_fifo.o
>  CC      drivers/net/xilinx_temac/xtemac_l.o
>  CC      drivers/net/xilinx_temac/xtemac_control.o
>  LD      drivers/net/xilinx_temac/xilinx_temac.o
>  LD      drivers/net/xilinx_temac/built-in.o
>  LD      drivers/net/built-in.o
>  CC      drivers/serial/serial_core.o
>  CC      drivers/serial/8250.o
>  CC      drivers/serial/8250_early.o
>  LD      drivers/serial/built-in.o
>  LD      drivers/video/backlight/built-in.o
>  CC      drivers/video/console/dummycon.o
>  LD      drivers/video/console/built-in.o
>  LD      drivers/video/built-in.o
>  CC      drivers/xilinx_edk/xilinx_syms.o
>  CC      drivers/xilinx_edk/xbasic_types.o
>  CC      drivers/xilinx_edk/xpacket_fifo_v2_00_a.o
>  CC      drivers/xilinx_edk/xpacket_fifo_l_v2_00_a.o
>  CC      drivers/xilinx_edk/xdmav2.o
>  CC      drivers/xilinx_edk/xdmav2_intr.o
>  CC      drivers/xilinx_edk/xdmav2_sg.o
>  CC      drivers/xilinx_edk/xdmav2_simple.o
>  LD      drivers/xilinx_edk/built-in.o
>  LD      drivers/built-in.o
> drivers/xilinx_edk/built-in.o(.sdata+0x0): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of 
> `XWaitInAssert'
> drivers/block/built-in.o(.sdata+0x0):drivers/block/loop.c:91: first 
> defined here
> drivers/xilinx_edk/built-in.o(.sbss+0x4): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of 
> `XAssertStatus'
> drivers/block/built-in.o(.sbss+0x38):drivers/block/loop.c:98: first 
> defined here
> drivers/xilinx_edk/built-in.o(.text+0x44): In function 
> `XAssertSetCallback':
> drivers/xilinx_edk/xbasic_types.c:134: multiple definition of 
> `XAssertSetCallback'
> drivers/block/built-in.o(.text+0x24bc):drivers/block/xilinx_sysace/xbasic_types.c:134: 
> first defined here
> drivers/xilinx_edk/built-in.o(.text+0x0): In function `XAssert':
> drivers/xilinx_edk/xbasic_types.c:105: multiple definition of `XAssert'
> drivers/block/built-in.o(.text+0x2478):drivers/block/xilinx_sysace/xbasic_types.c:105: 
> first defined here
> drivers/xilinx_edk/built-in.o(.text+0x50): In function `XNullHandler':
> drivers/xilinx_edk/xbasic_types.c:153: multiple definition of 
> `XNullHandler'
> drivers/block/built-in.o(.text+0x24c8):drivers/block/xilinx_sysace/xbasic_types.c:153: 
> first defined here
> make[1]: *** [drivers/built-in.o] Error 1
> make: *** [drivers] Error 2
> 

^ permalink raw reply

* Re: some problems on the SystemACE driver.
From: Ming Liu @ 2006-07-16 13:17 UTC (permalink / raw)
  To: ammubhai; +Cc: linuxppc-embedded
In-Reply-To: <44BA09A1.50908@gmail.com>

Dear Ameet,
Good news! This time, it works well and no error during the compilation 
process. Finally we solved this sucking problem! Congratulations to us!

I have tried the kernel. It works well for the SystemACE driver, although I 
have not successfully made Temac work well. It shows that the network is 
disconnected and there is no device symbol in /dev directory. I think I 
should make this device in /dev manually and make it recognizable for 
Linux, right? If any guidance, please feel free to tell me. Thanks in 
advance.

>    I know this might be very tedious for you. But its the same for me
>especially when there is no need for me to do it. 

I will not feel it tedious because 1. in this process I can learn a lot; 2. 
it's really useful for me. :-) So I would like to consume time on that. 
Also, you are really helpful for my project. So if possible, I would like 
to cooperate with you and do something meanningful together. 

Thanks again for all your help and hard work recently. 

Regards
Ming

_________________________________________________________________
享用世界上最大的电子邮件系统― MSN Hotmail。  http://www.hotmail.com  

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox