LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [patch 1/3] m68k/mac: Make mac_hid_mouse_emulate_buttons() declaration visible
From: Dmitry Torokhov @ 2007-07-22  4:22 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: linux-m68k, linux-kernel, Adrian Bunk, linuxppc-dev, linux-input,
	Andrew Morton
In-Reply-To: <Pine.LNX.4.64.0707211026070.18493@anakin>

Hi Geert,

On Saturday 21 July 2007 04:27, Geert Uytterhoeven wrote:
> On Fri, 20 Jul 2007, Dmitry Torokhov wrote:
> > 
> > I am OK with adding a new header file. I was just saying that placing
> > that declaration in linux/hid.h makes about the same sense as putting
> > it into linux/scsi.h
> 
> At first I just wanted to move it. Then I thought about the angry
> comments I would get about not moving it to a header file ;-)
> 
> <linux/hid.h> looked like the best candidate. <linux/kbd_kern.h> is
> another option.
> 

linux/kbd_kern.h sounds much better.

-- 
Dmitry

^ permalink raw reply

* [PATCH] ppc64 mismerge
From: Al Viro @ 2007-07-22  7:10 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linuxppc-dev, jk, linux-kernel

	Mismerge in
commit 8b6f50ef1d5cc86b278eb42bc91630fad455fb10
Author: Jeremy Kerr <jk@ozlabs.org>
Date:   Sat Jul 21 04:37:51 2007 -0700
    spufs: make signal-notification files readonly for NOSCHED contexts

structs got duplicated.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index c2aaec5..4100ddc 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -941,13 +941,6 @@ static const struct file_operations spufs_signal1_nosched_fops = {
 	.mmap = spufs_signal1_mmap,
 };
 
-static const struct file_operations spufs_signal1_nosched_fops = {
-	.open = spufs_signal1_open,
-	.release = spufs_signal1_release,
-	.write = spufs_signal1_write,
-	.mmap = spufs_signal1_mmap,
-};
-
 static int spufs_signal2_open(struct inode *inode, struct file *file)
 {
 	struct spufs_inode_info *i = SPUFS_I(inode);
@@ -1083,13 +1076,6 @@ static const struct file_operations spufs_signal2_nosched_fops = {
 	.mmap = spufs_signal2_mmap,
 };
 
-static const struct file_operations spufs_signal2_nosched_fops = {
-	.open = spufs_signal2_open,
-	.release = spufs_signal2_release,
-	.write = spufs_signal2_write,
-	.mmap = spufs_signal2_mmap,
-};
-
 static void spufs_signal1_type_set(void *data, u64 val)
 {
 	struct spu_context *ctx = data;

^ permalink raw reply related

* Re: [PATCH] ppc64 mismerge
From: Jeremy Kerr @ 2007-07-22  7:14 UTC (permalink / raw)
  To: Al Viro; +Cc: linuxppc-dev, Linus Torvalds, linux-kernel
In-Reply-To: <20070722071035.GS21668@ftp.linux.org.uk>

> 	Mismerge in
> commit 8b6f50ef1d5cc86b278eb42bc91630fad455fb10
> Author: Jeremy Kerr <jk@ozlabs.org>
> Date:   Sat Jul 21 04:37:51 2007 -0700
>     spufs: make signal-notification files readonly for NOSCHED
> contexts
>
> structs got duplicated.
>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Yep, the original patch can be applied more than once without fuzz :/

Acked-by: Jeremy Kerr <jk@ozlabs.org>


Jeremy

^ permalink raw reply

* ask some questions about u-boot's bootm command
From: poorbeyond @ 2007-07-22  7:39 UTC (permalink / raw)
  To: Linux-ppc mail list

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

my cpu is 860T, using bootm command boot a linux kernel image, the following message print by smc1:

bootm 300000

## Booting image at 00300000 ...
   Image Name:   Linux-2.6.20.14
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1081591 Bytes =  1 MB
   Load Address: 00100000
   Entry Point:  00100000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Current stack ends at 0x01D5DB10 => set upper limit to 0x00800000
No initrd
## Transferring control to Linux (at address 00100000) ...



then, the program has no response.

i debug it througth BDM, in u-boot function "do_bootm_linux", execute at "kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))hdr->ih_ep", the program branch to address "0x00000000", the code is shown as following:
00000000    mr    r31,r3
00000004    mr    r30,r4
00000008    mr    r29,r5
0000000C    mr    r28,r6
00000010    mr    r27,r7
00000014    bl    0x000020C8
00000018    mfmsr    r0
0000001C    ori    r0,r0,0x30
00000020    mtspr    SRR1,r0
00000024    lis    r0,0xC0002004@h
00000028    ori    r0,r0,0xC0002004@l
0000002C    mtspr    SRR0,r0
00000030    rfi


my questions are:

1. Is the code "kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))hdr->ih_ep" branch right?

2. What's the expected code after "kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))hdr->ih_ep"?

3. When the kernel run to the "boot/simple/head.s"?


thanks a lot





poorbeyond
2007-07-22

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

^ permalink raw reply

* Re: [patch 1/3] m68k/mac: Make mac_hid_mouse_emulate_buttons() declaration visible
From: Geert Uytterhoeven @ 2007-07-22 12:51 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: linux-m68k, linux-kernel, Adrian Bunk, linuxppc-dev, linux-input,
	Andrew Morton
In-Reply-To: <200707220022.41797.dtor@insightbb.com>

On Sun, 22 Jul 2007, Dmitry Torokhov wrote:
> On Saturday 21 July 2007 04:27, Geert Uytterhoeven wrote:
> > On Fri, 20 Jul 2007, Dmitry Torokhov wrote:
> > > I am OK with adding a new header file. I was just saying that placing
> > > that declaration in linux/hid.h makes about the same sense as putting
> > > it into linux/scsi.h
> > 
> > At first I just wanted to move it. Then I thought about the angry
> > comments I would get about not moving it to a header file ;-)
> > 
> > <linux/hid.h> looked like the best candidate. <linux/kbd_kern.h> is
> > another option.
> > 
> 
> linux/kbd_kern.h sounds much better.

And so it will be.

---
m68k/mac: Make mac_hid_mouse_emulate_buttons() declaration visible

drivers/char/keyboard.c: In function 'kbd_keycode':
drivers/char/keyboard.c:1142: error: implicit declaration of function 'mac_hid_mouse_emulate_buttons'

The forward declaration of mac_hid_mouse_emulate_buttons() is not visible on
m68k because it's hidden in the middle of a big #ifdef block.

Move it to <linux/kbd_kern.h>, correct the type of the second parameter, and
include <linux/kbd_kern.h> where needed.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
 drivers/char/keyboard.c     |    4 ----
 drivers/macintosh/mac_hid.c |    1 +
 include/linux/kbd_kern.h    |    3 +++
 3 files changed, 4 insertions(+), 4 deletions(-)

--- a/drivers/char/keyboard.c
+++ b/drivers/char/keyboard.c
@@ -1022,10 +1022,6 @@ static const unsigned short x86_keycodes
 	308,310,313,314,315,317,318,319,320,357,322,323,324,325,276,330,
 	332,340,365,342,343,344,345,346,356,270,341,368,369,370,371,372 };
 
-#ifdef CONFIG_MAC_EMUMOUSEBTN
-extern int mac_hid_mouse_emulate_buttons(int, int, int);
-#endif /* CONFIG_MAC_EMUMOUSEBTN */
-
 #ifdef CONFIG_SPARC
 static int sparc_l1_a_state = 0;
 extern void sun_do_break(void);
--- a/drivers/macintosh/mac_hid.c
+++ b/drivers/macintosh/mac_hid.c
@@ -13,6 +13,7 @@
 #include <linux/sysctl.h>
 #include <linux/input.h>
 #include <linux/module.h>
+#include <linux/kbd_kern.h>
 
 
 static struct input_dev *emumousebtn;
--- a/include/linux/kbd_kern.h
+++ b/include/linux/kbd_kern.h
@@ -161,4 +161,7 @@ static inline void con_schedule_flip(str
 	schedule_delayed_work(&t->buf.work, 0);
 }
 
+/* mac_hid.c */
+extern int mac_hid_mouse_emulate_buttons(int, unsigned int, int);
+
 #endif


Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

^ permalink raw reply

* Please pull powerpc.git merge branch
From: Paul Mackerras @ 2007-07-22 12:56 UTC (permalink / raw)
  To: torvalds; +Cc: linuxppc-dev

Linus,

Please do

git pull \
git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc.git merge

to get a further powerpc update for 2.6.23.

Thanks,
Paul.

 arch/powerpc/configs/prpmc2800_defconfig   |    2 +-
 arch/powerpc/kernel/pci-common.c           |    2 +-
 arch/powerpc/kernel/prom.c                 |    2 +-
 arch/powerpc/kernel/smp.c                  |    7 +++++-
 arch/powerpc/mm/fault.c                    |    8 ++++++-
 arch/powerpc/mm/hash_utils_64.c            |    4 ++--
 arch/powerpc/platforms/Kconfig.cputype     |    2 +-
 arch/powerpc/platforms/embedded6xx/Kconfig |    2 +-
 arch/powerpc/platforms/pseries/firmware.c  |   19 +++--------------
 arch/powerpc/platforms/pseries/pseries.h   |    2 +-
 arch/powerpc/platforms/pseries/setup.c     |   17 ++++++++++-----
 arch/powerpc/sysdev/mpic.c                 |   32 ++++++++++++++++++++++++++++
 arch/powerpc/xmon/nonstdio.c               |    5 ++++
 arch/powerpc/xmon/nonstdio.h               |    3 ++-
 arch/powerpc/xmon/start.c                  |    2 +-
 arch/powerpc/xmon/xmon.c                   |    2 +-
 arch/ppc/syslib/mv64x60.c                  |   15 +++++++------
 drivers/char/hvc_iseries.c                 |    8 ++++---
 drivers/char/hvc_rtas.c                    |    2 +-
 drivers/char/hvcs.c                        |    8 ++++---
 drivers/macintosh/rack-meter.c             |    1 -
 drivers/pcmcia/m8xx_pcmcia.c               |    2 +-
 include/asm-powerpc/mpic.h                 |    3 +++
 include/asm-powerpc/prom.h                 |    2 +-
 include/asm-ppc/system.h                   |    1 +
 include/linux/of_platform.h                |    4 ++--
 26 files changed, 101 insertions(+), 56 deletions(-)

Avi Kivity (1):
      [POWERPC] Allow smp_call_function_single() to current cpu

Benjamin Herrenschmidt (1):
      [POWERPC] MPIC protected sources

Christoph Hellwig (1):
      [POWERPC] mv64x60: Use mutex instead of semaphore

Geert Uytterhoeven (1):
      [POWERPC] cell: CONFIG_SPE_BASE is a typo

Ishizaki Kou (2):
      [POWERPC] Make xmon_write accept a const buffer
      [POWERPC] fix showing xmon help

Jesper Juhl (1):
      [POWERPC] Clean up duplicate includes in drivers/macintosh/

Josh Boyer (1):
      [POWERPC] Fix ARCH=ppc builds

Michael Neuling (1):
      [POWERPC] Fix future firmware feature fixups function failure

Paul Mackerras (1):
      [POWERPC] Allow exec faults on readable areas on classic 32-bit PowerPC

Robert P. J. Day (1):
      [POWERPC] Fix misspelled "CONFIG_CHECK_CACHE_COHERENCY" Kconfig option.

Segher Boessenkool (1):
      [POWERPC] of_detach_node()'s device node argument cannot be const

Stephen Rothwell (6):
      [POWERPC] Constify of_platform_driver name
      [POWERPC] hvcs: Make some things static and const
      [POWERPC] Constify of_platform_driver match_table
      [POWERPC] Quiet section mismatch in hvc_rtas.c
      [POWERPC] init and exit markings for hvc_iseries
      [POWERPC] Quiet section mismatch warning on pcibios_setup

^ permalink raw reply

* Re: [patch 05/14] 40x MMU
From: David Gibson @ 2007-07-18  3:38 UTC (permalink / raw)
  To: Josh Boyer; +Cc: linuxppc-dev
In-Reply-To: <20070717182621.437685000@linux.vnet.ibm.com>

On Tue, Jul 17, 2007 at 01:15:52PM -0500, Josh Boyer wrote:
> Add MMU definitions for 40x platforms.  Also fixes two warnings in 40x_mmu.c.
> 
> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
> 
> ---
>  arch/powerpc/mm/40x_mmu.c     |    4 +-
>  include/asm-powerpc/mmu-40x.h |   65 ++++++++++++++++++++++++++++++++++++++++++
>  include/asm-powerpc/mmu.h     |    3 +
>  3 files changed, 70 insertions(+), 2 deletions(-)
> 
> --- /dev/null
> +++ linux-2.6/include/asm-powerpc/mmu-40x.h
> @@ -0,0 +1,65 @@
> +#ifndef _ASM_POWERPC_MMU_40X_H_
> +#define _ASM_POWERPC_MMU_40X_H_
> +
> +/*
> + * PPC40x support
> + */
> +
> +#define PPC4XX_TLB_SIZE 64

This should probably be 40X, like other things.

> +
> +/*
> + * TLB entries are defined by a "high" tag portion and a "low" data
> + * portion.  On all architectures, the data portion is 32-bits.
> + *
> + * TLB entries are managed entirely under software control by reading,
> + * writing, and searchoing using the 4xx-specific tlbre, tlbwr, and tlbsx
> + * instructions.
> + */
> +
> +#define	TLB_LO          1
> +#define	TLB_HI          0
> +
> +#define	TLB_DATA        TLB_LO
> +#define	TLB_TAG         TLB_HI
> +
> +/* Tag portion */
> +
> +#define TLB_EPN_MASK    0xFFFFFC00      /* Effective Page Number */
> +#define TLB_PAGESZ_MASK 0x00000380
> +#define TLB_PAGESZ(x)   (((x) & 0x7) << 7)
> +#define   PAGESZ_1K		0
> +#define   PAGESZ_4K             1
> +#define   PAGESZ_16K            2
> +#define   PAGESZ_64K            3
> +#define   PAGESZ_256K           4
> +#define   PAGESZ_1M             5
> +#define   PAGESZ_4M             6
> +#define   PAGESZ_16M            7
> +#define TLB_VALID       0x00000040      /* Entry is valid */
> +
> +/* Data portion */
> +
> +#define TLB_RPN_MASK    0xFFFFFC00      /* Real Page Number */
> +#define TLB_PERM_MASK   0x00000300
> +#define TLB_EX          0x00000200      /* Instruction execution allowed */
> +#define TLB_WR          0x00000100      /* Writes permitted */
> +#define TLB_ZSEL_MASK   0x000000F0
> +#define TLB_ZSEL(x)     (((x) & 0xF) << 4)
> +#define TLB_ATTR_MASK   0x0000000F
> +#define TLB_W           0x00000008      /* Caching is write-through */
> +#define TLB_I           0x00000004      /* Caching is inhibited */
> +#define TLB_M           0x00000002      /* Memory is coherent */
> +#define TLB_G           0x00000001      /* Memory is guarded from prefetch */
> +
> +#ifndef __ASSEMBLY__
> +
> +typedef unsigned long phys_addr_t;
> +
> +typedef struct {
> +	unsigned long id;
> +	unsigned long vdso_base;
> +} mm_context_t;
> +
> +#endif /* !__ASSEMBLY__ */
> +
> +#endif /* _ASM_POWERPC_MMU_40X_H_ */
> --- linux-2.6.orig/include/asm-powerpc/mmu.h
> +++ linux-2.6/include/asm-powerpc/mmu.h
> @@ -8,6 +8,9 @@
>  #elif defined(CONFIG_PPC_STD_MMU)
>  /* 32-bit classic hash table MMU */
>  #  include <asm/mmu-hash32.h>
> +#elif defined(CONFIG_40x)
> +/* 40x-style software loaded TLB */
> +#  include <asm/mmu-40x.h>
>  #elif defined(CONFIG_44x)
>  /* 44x-style software loaded TLB */
>  #  include <asm/mmu-44x.h>
> --- linux-2.6.orig/arch/powerpc/mm/40x_mmu.c
> +++ linux-2.6/arch/powerpc/mm/40x_mmu.c
> @@ -108,7 +108,7 @@ unsigned long __init mmu_mapin_ram(void)
>  		pmd_t *pmdp;
>  		unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE;
>  
> -		pmdp = pmd_offset(pgd_offset_k(v), v);
> +		pmdp = pmd_offset(pud_offset(pgd_offset_k(v), v), v);
>  		pmd_val(*pmdp++) = val;
>  		pmd_val(*pmdp++) = val;
>  		pmd_val(*pmdp++) = val;
> @@ -123,7 +123,7 @@ unsigned long __init mmu_mapin_ram(void)
>  		pmd_t *pmdp;
>  		unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE;
>  
> -		pmdp = pmd_offset(pgd_offset_k(v), v);
> +		pmdp = pmd_offset(pud_offset(pgd_offset_k(v), v), v);
>  		pmd_val(*pmdp) = val;
>  
>  		v += LARGE_PAGE_SIZE_4M;
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* Re: [RFC][PATCH 6/8] Walnut DTS
From: David Gibson @ 2007-07-18  1:02 UTC (permalink / raw)
  To: Josh Boyer; +Cc: linuxppc-dev
In-Reply-To: <1184176531.32199.81.camel@weaponx.rchland.ibm.com>

On Wed, Jul 11, 2007 at 12:55:31PM -0500, Josh Boyer wrote:
> On Wed, 2007-07-11 at 19:49 +0200, Segher Boessenkool wrote:
> > > +	UIC0: interrupt-controller0 {
> > 
> > Why not just "interrupt-controller"?
> 
> Copy/paste error from Ebony DTS, which has multiple UICs.  Will fix.
> 
> > 
> > > +		#address-cells = <0>;
> > > +		#size-cells = <0>;
> > 
> > No need for these.
> 
> Ok.
> 
> > >
> > > +	plb {
> > > +		ranges;
> > 
> > Please make the valid address ranges explicit here.
> 
> Meaning what exactly?  I thought just specifying "ranges;" simply said
> "the addresses from this node don't have any translation from the parent
> node" (or something like that).
> 
> > 
> > > +		SDRAM0: memory-controller {
> > > +			compatible = "ibm,sdram-405gp", "ibm,sdram-440gp";
> > 
> > It's a bit weird to mention 440 here, since 405 is older.
> > Not a real problem, but if you still can change all relevant
> > OS code and device trees, I'd swap it around (make 440 trees
> > include the 405 "compatible" value).  Can you still do that
> > or is there a too big installed base already?
> 
> The installed base for 440 exists of exactly 1 completely non-functional
> board ;).  I can change it.

And I don't think we even actually look at this compatible property in
practice.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* Re: [patch 02/14] Rename 4xx paths to 40x
From: David Gibson @ 2007-07-18  3:26 UTC (permalink / raw)
  To: Josh Boyer; +Cc: linuxppc-dev
In-Reply-To: <20070717182620.683036000@linux.vnet.ibm.com>

On Tue, Jul 17, 2007 at 01:15:49PM -0500, Josh Boyer wrote:
> 4xx is a bit of a misnomer for certain things, as they really apply to PowerPC
> 40x only.  Rename some of the files to clean this up.
> 
> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>

Looks good

Acked-by: David Gibson <david@gibson.dropbear.id.au>

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* Re: [PATCH] Update kuroboxH[GD].dts with i2c rtc entries, cleanup
From: David Gibson @ 2007-07-23  1:26 UTC (permalink / raw)
  To: Guennadi Liakhovetski; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <Pine.LNX.4.60.0707220028370.13322@poirot.grange>

On Sun, Jul 22, 2007 at 12:43:11AM +0200, Guennadi Liakhovetski wrote:
> Let's fix rtc on linkstation ppc machines again, plus .dts cleanup as 
> suggested by Segher Boessenkool.
> 
> Thanks
> Guennadi
> ---
> Guennadi Liakhovetski
> 
> Device tree update: add rtc nodes on i2c, remove bogus 0-size cache-line 
> declarations, rename interrupt-controller nodes, remove erroneous 
> interrupt-parent line, accidentally introduced by a recent patch.
> 
> Signed-off-by: G. Liakhovetski <g.liakhovetski@gmx.de>
> 


[snip]
> @@ -64,11 +62,19 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
>  			  fef00000 fef00000 00100000>;	/* pci iack */
>  
>  		i2c@80003000 {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
>  			device_type = "i2c";
>  			compatible = "fsl-i2c";
>  			reg = <80003000 1000>;
>  			interrupts = <5 2>;
>  			interrupt-parent = <&mpic>;
> +
> +			rtc@32 {
> +				device_type = "rtc";
> +				compatible = "ricoh,rs5c372b";
> +				reg = <32>;

Ok, just making sure that rtc at 0x32 (decimal 50) is correct, rather
than at decimal 32.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* Re: Someone broke my allmodconfig build
From: David Gibson @ 2007-07-23  1:43 UTC (permalink / raw)
  To: Josh Boyer; +Cc: Stephen Rothwell, Paul Mackerras, ppc-dev
In-Reply-To: <20070722020412.GQ3925@crusty.rchland.ibm.com>

On Sat, Jul 21, 2007 at 09:04:13PM -0500, Josh Boyer wrote:
> On Sun, Jul 22, 2007 at 10:37:06AM +1000, Paul Mackerras wrote:
> > Stephen Rothwell writes:
> > 
> > >   WRAP    arch/powerpc/boot/zImage.ps3
> > > /home/sfr/kernels/linus/arch/powerpc/boot/wrapper: line 113: dtc: command not found
> > > make[2]: *** [arch/powerpc/boot/zImage.ps3] Error 1
> > 
> > Hmmm, we should be shipping .dtb files with the tree, so people don't
> > have to have dtc installed.
> 
> Really?  I don't think we're quite ready for that.  Particularly for the
> embedded boards.  Those DTS files still get lots of churn, and having to
> update both the .dts and .dtb at the same time seems a bit fragile.

I sort of prefer this option in theory, but it's basically
impossible.  People updating dts files by patch would also have to
update the dtb, which can't be done in a normal patch, since they're
binary.

I'm working with sfr now on importing dtc into the kernel tree.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* [PATCH] [POWERPC] iSeries: we need vio_enable_interrupts
From: Stephen Rothwell @ 2007-07-23  1:55 UTC (permalink / raw)
  To: paulus; +Cc: Brian King, ppc-dev

Commit 3d0e91f7ace12499c4b00088e9a6b1361e1bb0ca introduced a requirement
for vio_enable_interrupts which iSeires has never needed.  So create a
dummy one.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 include/asm-powerpc/vio.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

Paul, this is a fix for a 2.6.23 regression.  I should do a better fix
for 2.6.24.  Built for iseries_defconfig, ppc64_defconfig and
allmodconfig.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --git a/include/asm-powerpc/vio.h b/include/asm-powerpc/vio.h
index 0117b54..3a0975e 100644
--- a/include/asm-powerpc/vio.h
+++ b/include/asm-powerpc/vio.h
@@ -80,6 +80,11 @@ extern const void *vio_get_attribute(struct vio_dev *vdev, char *which,
 extern struct vio_dev *vio_find_node(struct device_node *vnode);
 extern int vio_enable_interrupts(struct vio_dev *dev);
 extern int vio_disable_interrupts(struct vio_dev *dev);
+#else
+static inline int vio_enable_interrupts(struct vio_dev *dev)
+{
+	return 0;
+}
 #endif
 
 static inline struct vio_driver *to_vio_driver(struct device_driver *drv)
-- 
1.5.2.3

^ permalink raw reply related

* [PATCH] ehea: silence some warnings
From: Stephen Rothwell @ 2007-07-23  2:01 UTC (permalink / raw)
  To: Thomas Klein, Jan-Bernd Themann; +Cc: ppc-dev

drivers/net/ehea/ehea_main.c: In function 'write_swqe2_TSO':
drivers/net/ehea/ehea_main.c:1335: warning: passing argument 1 of 'ehea_map_vaddr' makes pointer from integer without a cast
drivers/net/ehea/ehea_main.c: In function 'write_swqe2_nonTSO':
drivers/net/ehea/ehea_main.c:1366: warning: passing argument 1 of 'ehea_map_vaddr' makes pointer from integer without a cast
drivers/net/ehea/ehea_main.c: In function 'write_swqe2_data':
drivers/net/ehea/ehea_main.c:1405: warning: passing argument 1 of 'ehea_map_vaddr' makes pointer from integer without a cast
drivers/net/ehea/ehea_main.c:1420: warning: passing argument 1 of 'ehea_map_vaddr' makes pointer from integer without a cast

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 drivers/net/ehea/ehea_main.c |   20 ++++++++------------
 1 files changed, 8 insertions(+), 12 deletions(-)

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
index 4c70a93..8adcd6f 100644
--- a/drivers/net/ehea/ehea_main.c
+++ b/drivers/net/ehea/ehea_main.c
@@ -1309,7 +1309,6 @@ static void write_swqe2_TSO(struct sk_buff *skb,
 	u8 *imm_data = &swqe->u.immdata_desc.immediate_data[0];
 	int skb_data_size = skb->len - skb->data_len;
 	int headersize;
-	u64 tmp_addr;
 
 	/* Packet is TCP with TSO enabled */
 	swqe->tx_control |= EHEA_SWQE_TSO;
@@ -1331,8 +1330,8 @@ static void write_swqe2_TSO(struct sk_buff *skb,
 			sg1entry->l_key = lkey;
 			sg1entry->len = skb_data_size - headersize;
 
-			tmp_addr = (u64)(skb->data + headersize);
-			sg1entry->vaddr = ehea_map_vaddr(tmp_addr);
+			sg1entry->vaddr =
+				ehea_map_vaddr(skb->data + headersize);
 			swqe->descriptors++;
 		}
 	} else
@@ -1345,7 +1344,6 @@ static void write_swqe2_nonTSO(struct sk_buff *skb,
 	int skb_data_size = skb->len - skb->data_len;
 	u8 *imm_data = &swqe->u.immdata_desc.immediate_data[0];
 	struct ehea_vsgentry *sg1entry = &swqe->u.immdata_desc.sg_entry;
-	u64 tmp_addr;
 
 	/* Packet is any nonTSO type
 	 *
@@ -1362,8 +1360,8 @@ static void write_swqe2_nonTSO(struct sk_buff *skb,
 			/* copy sg1entry data */
 			sg1entry->l_key = lkey;
 			sg1entry->len = skb_data_size - SWQE2_MAX_IMM;
-			tmp_addr = (u64)(skb->data + SWQE2_MAX_IMM);
-			sg1entry->vaddr = ehea_map_vaddr(tmp_addr);
+			sg1entry->vaddr =
+				ehea_map_vaddr(skb->data + SWQE2_MAX_IMM);
 			swqe->descriptors++;
 		}
 	} else {
@@ -1378,7 +1376,6 @@ static inline void write_swqe2_data(struct sk_buff *skb, struct net_device *dev,
 	struct ehea_vsgentry *sg_list, *sg1entry, *sgentry;
 	skb_frag_t *frag;
 	int nfrags, sg1entry_contains_frag_data, i;
-	u64 tmp_addr;
 
 	nfrags = skb_shinfo(skb)->nr_frags;
 	sg1entry = &swqe->u.immdata_desc.sg_entry;
@@ -1400,9 +1397,9 @@ static inline void write_swqe2_data(struct sk_buff *skb, struct net_device *dev,
 			/* copy sg1entry data */
 			sg1entry->l_key = lkey;
 			sg1entry->len = frag->size;
-			tmp_addr =  (u64)(page_address(frag->page)
+			sg1entry->vaddr =
+				ehea_map_vaddr(page_address(frag->page)
 					  + frag->page_offset);
-			sg1entry->vaddr = ehea_map_vaddr(tmp_addr);
 			swqe->descriptors++;
 			sg1entry_contains_frag_data = 1;
 		}
@@ -1415,9 +1412,8 @@ static inline void write_swqe2_data(struct sk_buff *skb, struct net_device *dev,
 			sgentry->l_key = lkey;
 			sgentry->len = frag->size;
 
-			tmp_addr = (u64)(page_address(frag->page)
-					 + frag->page_offset);
-			sgentry->vaddr = ehea_map_vaddr(tmp_addr);
+			sgentry->vaddr = ehea_map_vaddr(page_address(frag->page)
+						+ frag->page_offset);
 			swqe->descriptors++;
 		}
 	}
-- 
1.5.2.3

^ permalink raw reply related

* Re: Problem faced while using workqueue in the character driver.
From: Misbah khan @ 2007-07-23  3:35 UTC (permalink / raw)
  To: linuxppc-embedded
In-Reply-To: <46A0EE6B.3000904@ovro.caltech.edu>


hi David

Thanks for your reply I really appreciate it from the heart.

The problem is solved now ,Actually I was using a kernel timer in open call
(to run for the first time which ever application would open it and deleting
the timer for the last exit ) to simulate for an Interrupt in the same
driver. There i did mistake in the implimentation in the logic and as a
consiquence of which it was crashing the system and not because of the
workqueue.

thanks 
misbah

David Hawkins-3 wrote:
> 
> Hi Misbah,
> 
>> I am working on a character driver for FPGA, in which i am using a
>> blocked
>> read call on workqueue. The read call will be unblocked by the Interrupt
>> from the Fpga to PPC Cpu.
>> 
>> The problem is that if the process is in blocked mode and then an
>> Interrupt
>> occurs the system gives kernel Panic where as it get unblocked and start
>> reading the data but very soon it gets crashed.
>> 
>> Please send me your suggessins regarding the mentioned problem.
> 
> Er, without seeing the code, its a bit difficult to suggest
> anything.
> 
> Perhaps you are using work-queues incorrectly?
> 
> Take a look at:
> 
> simple_work_queue.c
> 
> In the tar-ball
> 
> http://www.ovro.caltech.edu/~dwh/correlator/software/driver_design.tar.gz
> 
> Which is described in:
> 
> http://www.ovro.caltech.edu/~dwh/correlator/pdf/LNX-723-Hawkins.pdf
> 
> There's also a more complex 'COBRA driver' here:
> 
> http://www.ovro.caltech.edu/~dwh/correlator/cobra_docs.html
> 
> Having an example of a working driver that uses work-queues
> might help you.
> 
> Dave
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 

-- 
View this message in context: http://www.nabble.com/Problem-faced-while-using-workqueue-in-the-character-driver.-tf4116327.html#a11737447
Sent from the linuxppc-embedded mailing list archive at Nabble.com.

^ permalink raw reply

* Re: Kmalloc returns which address
From: Misbah khan @ 2007-07-23  3:47 UTC (permalink / raw)
  To: linuxppc-embedded
In-Reply-To: <469B92DC.50609@freescale.com>


hi Scott

yes really it would really generate a machine check... but i guess if you
convert this virt address to physical address using __pa() then pass it to
the ioremap() i guess things will work .

Please correct me if i am wrong

regard 
misbah
 

Scott Wood-2 wrote:
> 
> suresh suresh wrote:
>> I want know the address return by kmalloc function? is it physical
>> address
>> or kernel virtual address.
> 
> Kernel virtual.
> 
>> For Tx and Rx, hardware uses buffers, so I have to allocate buffers and 
>> pass
>> the pointer to hardware. Can I pass the pointer returned kmalloc?  or  I
>> should convert it into physical address?
> 
> You need to convert it; read Documentation/DMA-mapping.txt.
> 
> -Scott
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> 
> 

-- 
View this message in context: http://www.nabble.com/Kmalloc-returns-which-address-tf4086826.html#a11737504
Sent from the linuxppc-embedded mailing list archive at Nabble.com.

^ permalink raw reply

* Re: [PATCH] Update kuroboxH[GD].dts with i2c rtc entries, cleanup
From: Guennadi Liakhovetski @ 2007-07-23  5:28 UTC (permalink / raw)
  To: David Gibson; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <20070723012602.GA3272@localhost.localdomain>

On Mon, 23 Jul 2007, David Gibson wrote:

> On Sun, Jul 22, 2007 at 12:43:11AM +0200, Guennadi Liakhovetski wrote:
> [snip]
> > @@ -64,11 +62,19 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
> >  			  fef00000 fef00000 00100000>;	/* pci iack */
> >  
> >  		i2c@80003000 {
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> >  			device_type = "i2c";
> >  			compatible = "fsl-i2c";
> >  			reg = <80003000 1000>;
> >  			interrupts = <5 2>;
> >  			interrupt-parent = <&mpic>;
> > +
> > +			rtc@32 {
> > +				device_type = "rtc";
> > +				compatible = "ricoh,rs5c372b";
> > +				reg = <32>;
> 
> Ok, just making sure that rtc at 0x32 (decimal 50) is correct, rather
> than at decimal 32.

Yes, it is. I even tested it:-)

Thanks
Guennadi
---
Guennadi Liakhovetski

^ permalink raw reply

* Re: [PATCH] Update kuroboxH[GD].dts with i2c rtc entries, cleanup
From: David Gibson @ 2007-07-23  5:30 UTC (permalink / raw)
  To: Guennadi Liakhovetski; +Cc: linuxppc-dev, Paul Mackerras
In-Reply-To: <Pine.LNX.4.60.0707230727210.3786@poirot.grange>

On Mon, Jul 23, 2007 at 07:28:12AM +0200, Guennadi Liakhovetski wrote:
> On Mon, 23 Jul 2007, David Gibson wrote:
> 
> > On Sun, Jul 22, 2007 at 12:43:11AM +0200, Guennadi Liakhovetski wrote:
> > [snip]
> > > @@ -64,11 +62,19 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
> > >  			  fef00000 fef00000 00100000>;	/* pci iack */
> > >  
> > >  		i2c@80003000 {
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > >  			device_type = "i2c";
> > >  			compatible = "fsl-i2c";
> > >  			reg = <80003000 1000>;
> > >  			interrupts = <5 2>;
> > >  			interrupt-parent = <&mpic>;
> > > +
> > > +			rtc@32 {
> > > +				device_type = "rtc";
> > > +				compatible = "ricoh,rs5c372b";
> > > +				reg = <32>;
> > 
> > Ok, just making sure that rtc at 0x32 (decimal 50) is correct, rather
> > than at decimal 32.
> 
> Yes, it is. I even tested it:-)

Ok, just making sure, since it's an easy mistake to make.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

^ permalink raw reply

* Re: [PATCH 2/2] fix showing xmon help
From: Milton Miller @ 2007-07-23  6:49 UTC (permalink / raw)
  To: Ishizaki Kou; +Cc: linuxppc-dev, paulus
In-Reply-To: <20070720.171509.-1300522247.kouish@swc.toshiba.co.jp>


On Jul 20, 2007, at 3:15 AM, Ishizaki Kou wrote:

> Milton Miller <miltonm@bga.com> wrote:
>> On Jul 18, 2007, at 11:12 AM, Andreas Schwab wrote:
>>
>>> Milton Miller <miltonm@bga.com> writes:
>>>
>>>>>                 case '?':
>>>>> -                       printf(help_string);
>>>>> +                       xmon_puts(help_string);
>>>>>                         break;
>>>>>
>>>>
>>>> nonstdio.h #defines printf to xmon_printf.  Please add a similar
>>>> line
>>>> for puts, and use the define here.  (It will avoid an unnecessary
>>>> difference with the user space version).
>>>
>>> User space puts add a newline, which this xmon_puts doesn't.
>>>
>>> Andreas.
>>
>> Good point.  This should be xmon_fputs #defined to fputs.
>>
>> milton
>
> Should we change like below?
>
> define fputs:
>  #define fputs(str,stream)  xmon_fputs(str) /* stream is ignored. */
>
> show the help string:
>  fputs(help_string, stdout);
>

Sounds good to me.  It's consistent with using printf.


milton

^ permalink raw reply

* Re: [PATCH 5/6 v2] 85xxCDS: Misc 8548 PCI Corrections.
From: Zang Roy-r61911 @ 2007-07-23 10:04 UTC (permalink / raw)
  To: Randy Vinson; +Cc: linuxppc-dev list
In-Reply-To: <46A137C1.3080105@mvista.com>

On Sat, 2007-07-21 at 06:31, Randy Vinson wrote:

> @@ -272,10 +272,10 @@ static void __init mpc85xx_cds_setup_arch(void)
>         for (np = NULL; (np = of_find_node_by_type(np, "pci")) !=
> NULL;) {
>                 struct resource rsrc;
>                 of_address_to_resource(np, 0, &rsrc);
> -               if ((rsrc.start & 0xfffff) == 0x9000)
> -                       fsl_add_bridge(np, 0);
> -               else
> +               if ((rsrc.start & 0xfffff) == 0x8000)
>                         fsl_add_bridge(np, 1);
> +               else
> +                       fsl_add_bridge(np, 0);
Why this is needed?
For pcie@a000, fsl_add_bridge(np, 0)?
Roy

^ permalink raw reply

* Re: [PATCH] Fix tas_suspend/resume build warning
From: Takashi Iwai @ 2007-07-23 10:11 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Stephen Rothwell, alsa-devel, Andrew Morton, linuxppc-dev
In-Reply-To: <1185038966.868.5.camel@johannes.berg>

At Sat, 21 Jul 2007 19:29:26 +0200,
Johannes Berg wrote:
> 
> On Sun, 2007-07-22 at 00:29 +1000, Stephen Rothwell wrote:
> > sound/aoa/codecs/snd-aoa-codec-tas.c:750: warning: 'tas_suspend' defined but not used
> > sound/aoa/codecs/snd-aoa-codec-tas.c:760: warning: 'tas_resume' defined but not used
> 
> Heh. I daresay I never compiled a kernel without PM. Not sure why you'd
> want to, but still good to have it fixed. Thanks.
> 
> 
> [full copy below for Takashi, I suppose it'll go through his tree]

Thanks, I applied it to ALSA tree now.


Takashi

> 
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Subject: Fix tas_suspend/resume build warning
> 
> sound/aoa/codecs/snd-aoa-codec-tas.c:750: warning: 'tas_suspend' defined but not used
> sound/aoa/codecs/snd-aoa-codec-tas.c:760: warning: 'tas_resume' defined but not used
> 
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> Acked-by: Johannes Berg <johannes@sipsolutions.net>
> ---
>  sound/aoa/codecs/snd-aoa-codec-tas.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> -- 
> Cheers,
> Stephen Rothwell                    sfr@canb.auug.org.au
> 
> diff --git a/sound/aoa/codecs/snd-aoa-codec-tas.c b/sound/aoa/codecs/snd-aoa-codec-tas.c
> index 2f771f5..3cbfe46 100644
> --- a/sound/aoa/codecs/snd-aoa-codec-tas.c
> +++ b/sound/aoa/codecs/snd-aoa-codec-tas.c
> @@ -743,6 +743,7 @@ static int tas_switch_clock(struct codec_info_item *cii, enum clock_switch clock
>  	return 0;
>  }
>  
> +#ifdef CONFIG_PM
>  /* we are controlled via i2c and assume that is always up
>   * If that wasn't the case, we'd have to suspend once
>   * our i2c device is suspended, and then take note of that! */
> @@ -768,7 +769,6 @@ static int tas_resume(struct tas *tas)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
>  static int _tas_suspend(struct codec_info_item *cii, pm_message_t state)
>  {
>  	return tas_suspend(cii->codec_data);
> @@ -778,7 +778,10 @@ static int _tas_resume(struct codec_info_item *cii)
>  {
>  	return tas_resume(cii->codec_data);
>  }
> -#endif
> +#else /* CONFIG_PM */
> +#define _tas_suspend	NULL
> +#define _tas_resume	NULL
> +#endif /* CONFIG_PM */
>  
>  static struct codec_info tas_codec_info = {
>  	.transfers = tas_transfers,
> @@ -791,10 +794,8 @@ static struct codec_info tas_codec_info = {
>  	.owner = THIS_MODULE,
>  	.usable = tas_usable,
>  	.switch_clock = tas_switch_clock,
> -#ifdef CONFIG_PM
>  	.suspend = _tas_suspend,
>  	.resume = _tas_resume,
> -#endif
>  };
>  
>  static int tas_init_codec(struct aoa_codec *codec)
> 
> 

^ permalink raw reply

* Re: [RFC 1/1] lro: Generic Large Receive Offload for TCP traffic
From: Evgeniy Polyakov @ 2007-07-23 10:38 UTC (permalink / raw)
  To: Jan-Bernd Themann
  Cc: Thomas Klein, Jan-Bernd Themann, netdev, linux-kernel, linux-ppc,
	Christoph Raisch, Marcus Eder, Stefan Roscher, David Miller
In-Reply-To: <200707201741.49290.ossthema@de.ibm.com>

Hi Jan-Bernd.

On Fri, Jul 20, 2007 at 05:41:48PM +0200, Jan-Bernd Themann (ossthema@de.ibm.com) wrote:
> Generic LRO patch
> 
> Signed-off-by: Jan-Bernd Themann <themann@de.ibm.com>

Besides couple trivial codyng/formatting nits I did not found any
problematic places after review. Details below.

Thanks.

> +#define TCP_PAYLOAD_LENGTH(iph, tcph) \
> +(ntohs(iph->tot_len) - IP_HDR_LEN(iph) - TCP_HDR_LEN(tcph))

A tab?

> +static void lro_add_common(struct net_lro_desc *lro_desc, struct iphdr *iph,
> +			   struct tcphdr *tcph, int tcp_data_len)
> +{
> +	struct sk_buff *parent = lro_desc->parent;
> +	u32 *topt;
> +
> +	lro_desc->pkt_aggr_cnt++;
> +	lro_desc->ip_tot_len += tcp_data_len;
> +	lro_desc->tcp_next_seq += tcp_data_len;
> +	lro_desc->tcp_window = tcph->window;
> +	lro_desc->tcp_ack = tcph->ack_seq;
> +
> +	/* don't update tcp_rcv_tsval, would not work with PAWS */
> +	if (lro_desc->tcp_saw_tstamp) {
> +		topt = (u32 *) (tcph + 1);
> +		lro_desc->tcp_rcv_tsecr = *(topt + 2);
> +	}
> +
> +	parent->len += tcp_data_len;
> +	parent->data_len += tcp_data_len;
> +
> +	lro_desc->data_csum = csum_add(lro_desc->data_csum,
> +				       lro_tcp_data_csum(iph, tcph,
> +							 tcp_data_len));
> +	return;
> +}

return from void? And in other places too.

> +int __lro_proc_skb(struct net_lro_mgr *lro_mgr, struct sk_buff *skb,
> +		   struct vlan_group *vgrp, u16 vlan_tag, void *priv)
> +{
> +	struct net_lro_desc *lro_desc;
> +        struct iphdr *iph;
> +        struct tcphdr *tcph;
> +	u64 flags;

Broken tab and spaces.

> +struct sk_buff *lro_gen_skb(struct net_lro_mgr *lro_mgr,
> +			    struct skb_frag_struct *frags,
> +			    int len, int true_size,
> +			    void *mac_hdr,
> +			    int hlen)
> +{
> +	struct sk_buff *skb;
> +        struct skb_frag_struct *skb_frags;
> +	int data_len = len;

The same.

> +	skb = netdev_alloc_skb(lro_mgr->dev, hlen);
> +	if (!skb)
> +		return NULL;
> +
> +        skb->len = len;
> +	skb->data_len = len - hlen;

Here too.
There is number of such places, ommitted others.


-- 
	Evgeniy Polyakov

^ permalink raw reply

* [PATCH 3/3] Add irq debugfs and virq_mapping for getting the virq
From: Chen Gong @ 2007-07-23 11:13 UTC (permalink / raw)
  To: paulus, galak; +Cc: linuxppc-dev, Chen Gong, Chen Gong
In-Reply-To: <11851892322112-git-send-email-g.chen@freescale.com>

This patch adds irq debugfs and virq_mapping for getting the virq.
The virq_mapping node is in powerpc/irq directory of the root debugfs.

Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Chen Gong <G.Chen@freescale.com>
---
 arch/powerpc/Kconfig.debug        |    7 ++
 arch/powerpc/kernel/Makefile      |    1 +
 arch/powerpc/kernel/irq_debugfs.c |  140 +++++++++++++++++++++++++++++++++++++
 3 files changed, 148 insertions(+), 0 deletions(-)
 create mode 100644 arch/powerpc/kernel/irq_debugfs.c

diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index 346cd3b..7ae8df1 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -2,6 +2,13 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
+config PPC_VIRQ_DEBUGFS
+	bool "Check virqs mapping"
+	depends on DEBUG_FS
+	help
+	  This option will show the mapping relationship between hardware irq
+	  and virtual irq based on debugfs
+
 config DEBUG_STACKOVERFLOW
 	bool "Check for stack overflows"
 	depends on DEBUG_KERNEL
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
index 42c42ec..cc3e1e5 100644
--- a/arch/powerpc/kernel/Makefile
+++ b/arch/powerpc/kernel/Makefile
@@ -15,6 +15,7 @@ obj-y				:= semaphore.o cputable.o ptrace.o syscalls.o \
 				   init_task.o process.o systbl.o idle.o \
 				   signal.o
 obj-y				+= vdso32/
+obj-$(CONFIG_PPC_VIRQ_DEBUGFS)	+= irq_debugfs.o
 obj-$(CONFIG_PPC64)		+= setup_64.o binfmt_elf32.o sys_ppc32.o \
 				   signal_64.o ptrace32.o \
 				   paca.o cpu_setup_ppc970.o \
diff --git a/arch/powerpc/kernel/irq_debugfs.c b/arch/powerpc/kernel/irq_debugfs.c
new file mode 100644
index 0000000..53ac12e
--- /dev/null
+++ b/arch/powerpc/kernel/irq_debugfs.c
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved.
+ *
+ * Auther: Zhang Wei <wei.zhang@freescale.com>
+ *
+ * Description:
+ * This file is used for debug the irq. It will create 'irq' directory
+ * in the powerpc directory of debugfs.
+ *
+ * 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.
+ */
+
+#include <linux/module.h>
+#include <linux/threads.h>
+#include <linux/kernel_stat.h>
+#include <linux/signal.h>
+#include <linux/sched.h>
+#include <linux/ptrace.h>
+#include <linux/ioport.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/seq_file.h>
+#include <linux/mutex.h>
+#include <linux/list.h>
+
+#include <asm/uaccess.h>
+#include <asm/system.h>
+#include <asm/irq.h>
+#include <asm/pgtable.h>
+#include <asm/prom.h>
+
+extern struct dentry *powerpc_debugfs_root;
+
+static void *irq_dbg_start(struct seq_file *m, loff_t *pos)
+{
+	return (*pos <= NR_IRQS) ? pos : NULL;
+}
+
+static void *irq_dbg_next(struct seq_file *m, void *p, loff_t * pos)
+{
+	(*pos)++;
+
+	return (*pos <= NR_IRQS) ? pos : NULL;
+}
+
+static void irq_dbg_stop(struct seq_file *m, void *p)
+{
+	/* Nothing to do */
+}
+
+static int irq_dbg_show(struct seq_file *m, void *p)
+{
+	int i = *(loff_t *)p;
+	struct irqaction *action;
+	irq_desc_t *desc;
+	unsigned long flags;
+
+	if (i == 0)
+		seq_puts(m, "VIRQ  HWIRQ  Chip Name   Host Name\n");
+
+	if (i < NR_IRQS) {
+		desc = get_irq_desc(i);
+		spin_lock_irqsave(&desc->lock, flags);
+		action = desc->action;
+		if (!action || !action->handler)
+			goto skip;
+		seq_printf(m, "%3d: ", i);
+
+		seq_printf(m, "  %3d ", (irq_map[i].host->revmap_type == IRQ_HOST_MAP_LEGACY) ? i : virq_to_hw(i));
+
+		if (desc->chip)
+			seq_printf(m, "  %s ", desc->chip->typename);
+		else
+			seq_puts(m, "  None      ");
+
+		seq_printf(m, " %s ", (irq_map[i].host->name) ? irq_map[i].host->name : "  None  ");
+		seq_putc(m, '\n');
+skip:
+		spin_unlock_irqrestore(&desc->lock, flags);
+	} else if (i == NR_IRQS) {
+#ifdef CONFIG_PPC32
+#ifdef CONFIG_TAU_INT
+		if (tau_initialized)
+			seq_puts(m, "TAU:   PowerPC             Thermal Assist (cpu temp)\n");
+#endif
+#endif /* CONFIG_PPC32 */
+	}
+
+	return 0;
+}
+
+static struct seq_operations irq_dbg_seq_ops = {
+	.start = irq_dbg_start,
+	.next  = irq_dbg_next,
+	.stop  = irq_dbg_stop,
+	.show  = irq_dbg_show
+};
+
+static int irq_dbg_seq_open(struct inode *inode, struct file *file)
+{
+	int rc;
+	struct seq_file *seq;
+
+	rc = seq_open(file, &irq_dbg_seq_ops);
+	seq = file->private_data;
+	seq->private = file->f_path.dentry->d_inode->i_private;
+
+	return rc;
+}
+
+static const struct file_operations irq_dbg_seq_fops = {
+	.open = irq_dbg_seq_open,
+	.read = seq_read,
+	.llseek = seq_lseek,
+	.release = seq_release,
+};
+
+static int __init irq_debugfs_init(void)
+{
+	struct dentry *irq_root;
+	struct dentry *irq_file;
+
+	if (!powerpc_debugfs_root)
+		return 1;
+
+	irq_root = debugfs_create_dir("irq", powerpc_debugfs_root);
+	if (!irq_root)
+		return -ENOMEM;
+
+	irq_file = debugfs_create_file("virq_mapping", S_IRUGO,
+			irq_root, NULL, &irq_dbg_seq_fops);
+	if (!irq_file)
+		return -ENOMEM;
+
+	return 0;
+}
+__initcall(irq_debugfs_init);
-- 
1.5.1

^ permalink raw reply related

* [PATCH 1/3] Add a new member name to structure irq_host
From: Chen Gong @ 2007-07-23 11:13 UTC (permalink / raw)
  To: paulus, galak; +Cc: linuxppc-dev, Chen Gong, Chen Gong
In-Reply-To: <11851892302391-git-send-email-g.chen@freescale.com>

This patch adds a new member 'name' for irq host's name to
structure irq_host and modifies the definition of the
function irq_alloc_host(). The assignment to the
irq host's name is also added to irq_alloc_host().

Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Chen Gong <G.Chen@freescale.com>
---
 arch/powerpc/kernel/irq.c |    4 +++-
 include/asm-powerpc/irq.h |    4 +++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 2fc8786..2c46c6d 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -421,7 +421,8 @@ EXPORT_SYMBOL_GPL(virq_to_hw);
 struct irq_host *irq_alloc_host(unsigned int revmap_type,
 				unsigned int revmap_arg,
 				struct irq_host_ops *ops,
-				irq_hw_number_t inval_irq)
+				irq_hw_number_t inval_irq,
+				const char *name)
 {
 	struct irq_host *host;
 	unsigned int size = sizeof(struct irq_host);
@@ -446,6 +447,7 @@ struct irq_host *irq_alloc_host(unsigned int revmap_type,
 	host->revmap_type = revmap_type;
 	host->inval_irq = inval_irq;
 	host->ops = ops;
+	host->name = name;
 
 	spin_lock_irqsave(&irq_big_lock, flags);
 
diff --git a/include/asm-powerpc/irq.h b/include/asm-powerpc/irq.h
index 0485c53..cd0ba2d 100644
--- a/include/asm-powerpc/irq.h
+++ b/include/asm-powerpc/irq.h
@@ -124,6 +124,7 @@ struct irq_host {
 	struct irq_host_ops	*ops;
 	void			*host_data;
 	irq_hw_number_t		inval_irq;
+	const char		*name;
 };
 
 /* The main irq map itself is an array of NR_IRQ entries containing the
@@ -159,7 +160,8 @@ extern irq_hw_number_t virq_to_hw(unsigned int virq);
 extern struct irq_host *irq_alloc_host(unsigned int revmap_type,
 				       unsigned int revmap_arg,
 				       struct irq_host_ops *ops,
-				       irq_hw_number_t inval_irq);
+				       irq_hw_number_t inval_irq,
+				       const char *name);
 
 
 /**
-- 
1.5.1

^ permalink raw reply related

* [PATCH 2/3] Add irq host name for all powerpc interrupt controllors.
From: Chen Gong @ 2007-07-23 11:13 UTC (permalink / raw)
  To: paulus, galak; +Cc: linuxppc-dev, Chen Gong, Chen Gong
In-Reply-To: <11851892311178-git-send-email-g.chen@freescale.com>

If there is an OF-tree node for the interrupt controller, we will
use ofnode->full_name as the INT controller's name.
NULL is a proper choice if there is not binding OF-tree node
for the INT controller.

Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Chen Gong <G.Chen@freescale.com>
---
 arch/powerpc/platforms/52xx/mpc52xx_pic.c |    2 +-
 arch/powerpc/platforms/82xx/mpc82xx_ads.c |    2 +-
 arch/powerpc/platforms/cell/interrupt.c   |    2 +-
 arch/powerpc/platforms/cell/spider-pic.c  |    2 +-
 arch/powerpc/platforms/celleb/interrupt.c |    2 +-
 arch/powerpc/platforms/iseries/irq.c      |    2 +-
 arch/powerpc/platforms/powermac/pic.c     |    2 +-
 arch/powerpc/platforms/ps3/interrupt.c    |    2 +-
 arch/powerpc/platforms/pseries/xics.c     |    2 +-
 arch/powerpc/sysdev/commproc.c            |    3 ++-
 arch/powerpc/sysdev/cpm2_pic.c            |    2 +-
 arch/powerpc/sysdev/i8259.c               |    3 ++-
 arch/powerpc/sysdev/ipic.c                |    3 ++-
 arch/powerpc/sysdev/mpc8xx_pic.c          |    2 +-
 arch/powerpc/sysdev/mpic.c                |    3 ++-
 arch/powerpc/sysdev/mv64x60_pic.c         |    3 ++-
 arch/powerpc/sysdev/qe_lib/qe_ic.c        |    3 ++-
 arch/powerpc/sysdev/tsi108_pci.c          |    2 +-
 arch/powerpc/sysdev/uic.c                 |    2 +-
 19 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
index fbfff95..d5efdbc 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
@@ -422,7 +422,7 @@ void __init mpc52xx_init_irq(void)
 
 	mpc52xx_irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR,
 	                                 MPC52xx_IRQ_HIGHTESTHWIRQ,
-	                                 &mpc52xx_irqhost_ops, -1);
+	                                 &mpc52xx_irqhost_ops, -1, picnode->full_name);
 
 	if (!mpc52xx_irqhost)
 		panic(__FILE__ ": Cannot allocate the IRQ host\n");
diff --git a/arch/powerpc/platforms/82xx/mpc82xx_ads.c b/arch/powerpc/platforms/82xx/mpc82xx_ads.c
index da20832..3e27d3d 100644
--- a/arch/powerpc/platforms/82xx/mpc82xx_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc82xx_ads.c
@@ -503,7 +503,7 @@ void m82xx_pci_init_irq(void)
 	iounmap(immap);
 	pci_pic_host =
 	    irq_alloc_host(IRQ_HOST_MAP_LINEAR, irq_max - irq_min + 1,
-			   &pci_pic_host_ops, irq_max + 1);
+			   &pci_pic_host_ops, irq_max + 1, NULL);
 	return;
 }
 
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c
index 47264e7..9768ba2 100644
--- a/arch/powerpc/platforms/cell/interrupt.c
+++ b/arch/powerpc/platforms/cell/interrupt.c
@@ -382,7 +382,7 @@ void __init iic_init_IRQ(void)
 {
 	/* Setup an irq host data structure */
 	iic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, IIC_SOURCE_COUNT,
-				  &iic_host_ops, IIC_IRQ_INVALID);
+				  &iic_host_ops, IIC_IRQ_INVALID, NULL);
 	BUG_ON(iic_host == NULL);
 	irq_set_default_host(iic_host);
 
diff --git a/arch/powerpc/platforms/cell/spider-pic.c b/arch/powerpc/platforms/cell/spider-pic.c
index 05f4b3d..79c8d4f 100644
--- a/arch/powerpc/platforms/cell/spider-pic.c
+++ b/arch/powerpc/platforms/cell/spider-pic.c
@@ -309,7 +309,7 @@ static void __init spider_init_one(struct device_node *of_node, int chip,
 
 	/* Allocate a host */
 	pic->host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, SPIDER_SRC_COUNT,
-				   &spider_host_ops, SPIDER_IRQ_INVALID);
+				   &spider_host_ops, SPIDER_IRQ_INVALID, of_node->full_name);
 	if (pic->host == NULL)
 		panic("spider_pic: can't allocate irq host !");
 	pic->host->host_data = pic;
diff --git a/arch/powerpc/platforms/celleb/interrupt.c b/arch/powerpc/platforms/celleb/interrupt.c
index 98e6665..0a08a99 100644
--- a/arch/powerpc/platforms/celleb/interrupt.c
+++ b/arch/powerpc/platforms/celleb/interrupt.c
@@ -244,7 +244,7 @@ void __init beatic_init_IRQ(void)
 	/* Allocate an irq host */
 	beatic_host = irq_alloc_host(IRQ_HOST_MAP_NOMAP, 0,
 					 &beatic_pic_host_ops,
-					 0);
+					 0, NULL);
 	BUG_ON(beatic_host == NULL);
 	irq_set_default_host(beatic_host);
 }
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c
index 63b3367..766f5d3 100644
--- a/arch/powerpc/platforms/iseries/irq.c
+++ b/arch/powerpc/platforms/iseries/irq.c
@@ -369,7 +369,7 @@ void __init iSeries_init_IRQ(void)
 	/* Create irq host. No need for a revmap since HV will give us
 	 * back our virtual irq number
 	 */
-	host = irq_alloc_host(IRQ_HOST_MAP_NOMAP, 0, &iseries_irq_host_ops, 0);
+	host = irq_alloc_host(IRQ_HOST_MAP_NOMAP, 0, &iseries_irq_host_ops, 0, NULL);
 	BUG_ON(host == NULL);
 	irq_set_default_host(host);
 
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 87cd680..9d4b3e1 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -386,7 +386,7 @@ static void __init pmac_pic_probe_oldstyle(void)
 	 */
 	pmac_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, max_irqs,
 				       &pmac_pic_host_ops,
-				       max_irqs);
+				       max_irqs, NULL);
 	BUG_ON(pmac_pic_host == NULL);
 	irq_set_default_host(pmac_pic_host);
 
diff --git a/arch/powerpc/platforms/ps3/interrupt.c b/arch/powerpc/platforms/ps3/interrupt.c
index 67e32ec..2b56b81 100644
--- a/arch/powerpc/platforms/ps3/interrupt.c
+++ b/arch/powerpc/platforms/ps3/interrupt.c
@@ -727,7 +727,7 @@ void __init ps3_init_IRQ(void)
 	struct irq_host *host;
 
 	host = irq_alloc_host(IRQ_HOST_MAP_NOMAP, 0, &ps3_host_ops,
-		PS3_INVALID_OUTLET);
+		PS3_INVALID_OUTLET, NULL);
 	irq_set_default_host(host);
 	irq_set_virq_count(PS3_PLUG_MAX + 1);
 
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c
index 5bd90a7..7f8a5c7 100644
--- a/arch/powerpc/platforms/pseries/xics.c
+++ b/arch/powerpc/platforms/pseries/xics.c
@@ -541,7 +541,7 @@ static void __init xics_init_host(void)
 	else
 		ops = &xics_host_direct_ops;
 	xics_host = irq_alloc_host(IRQ_HOST_MAP_TREE, 0, ops,
-				   XICS_IRQ_SPURIOUS);
+				   XICS_IRQ_SPURIOUS, NULL);
 	BUG_ON(xics_host == NULL);
 	irq_set_default_host(xics_host);
 }
diff --git a/arch/powerpc/sysdev/commproc.c b/arch/powerpc/sysdev/commproc.c
index 4f67b89..91dc738 100644
--- a/arch/powerpc/sysdev/commproc.c
+++ b/arch/powerpc/sysdev/commproc.c
@@ -167,7 +167,8 @@ unsigned int cpm_pic_init(void)
 
 	cpm_pic_node = of_node_get(np);
 
-	cpm_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &cpm_pic_host_ops, 64);
+	cpm_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &cpm_pic_host_ops, 64,
+			cpm_pic_node->full_name);
 	if (cpm_pic_host == NULL) {
 		printk(KERN_ERR "CPM2 PIC: failed to allocate irq host!\n");
 		sirq = NO_IRQ;
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c
index eabfe06..1aaebf8 100644
--- a/arch/powerpc/sysdev/cpm2_pic.c
+++ b/arch/powerpc/sysdev/cpm2_pic.c
@@ -274,7 +274,7 @@ void cpm2_pic_init(struct device_node *node)
 
 	/* create a legacy host */
 	cpm2_pic_node = of_node_get(node);
-	cpm2_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &cpm2_pic_host_ops, 64);
+	cpm2_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &cpm2_pic_host_ops, 64, cpm2_pic_node->full_name);
 	if (cpm2_pic_host == NULL) {
 		printk(KERN_ERR "CPM2 PIC: failed to allocate irq host!\n");
 		return;
diff --git a/arch/powerpc/sysdev/i8259.c b/arch/powerpc/sysdev/i8259.c
index ad87adc..e80c127 100644
--- a/arch/powerpc/sysdev/i8259.c
+++ b/arch/powerpc/sysdev/i8259.c
@@ -278,7 +278,8 @@ void i8259_init(struct device_node *node, unsigned long intack_addr)
 	/* create a legacy host */
 	if (node)
 		i8259_node = of_node_get(node);
-	i8259_host = irq_alloc_host(IRQ_HOST_MAP_LEGACY, 0, &i8259_host_ops, 0);
+	i8259_host = irq_alloc_host(IRQ_HOST_MAP_LEGACY, 0, &i8259_host_ops, 0,
+			(node) ? i8259_node->full_name : NULL);
 	if (i8259_host == NULL) {
 		printk(KERN_ERR "i8259: failed to allocate irq host !\n");
 		return;
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c
index 473c415..4fe6770 100644
--- a/arch/powerpc/sysdev/ipic.c
+++ b/arch/powerpc/sysdev/ipic.c
@@ -572,7 +572,8 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)
 
 	ipic->irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR,
 				       NR_IPIC_INTS,
-				       &ipic_host_ops, 0);
+				       &ipic_host_ops, 0,
+				       ipic->of_node->full_name);
 	if (ipic->irqhost == NULL) {
 		of_node_put(node);
 		return NULL;
diff --git a/arch/powerpc/sysdev/mpc8xx_pic.c b/arch/powerpc/sysdev/mpc8xx_pic.c
index 2fc2bcd..c3eb805 100644
--- a/arch/powerpc/sysdev/mpc8xx_pic.c
+++ b/arch/powerpc/sysdev/mpc8xx_pic.c
@@ -187,7 +187,7 @@ int mpc8xx_pic_init(void)
 	if (siu_reg == NULL)
 		return -EINVAL;
 
-	mpc8xx_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &mpc8xx_pic_host_ops, 64);
+	mpc8xx_pic_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, 64, &mpc8xx_pic_host_ops, 64, np->full_name);
 	if (mpc8xx_pic_host == NULL) {
 		printk(KERN_ERR "MPC8xx PIC: failed to allocate irq host!\n");
 		ret = -ENOMEM;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 74c64c0..d71441e 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -989,7 +989,8 @@ struct mpic * __init mpic_alloc(struct device_node *node,
 
 	mpic->irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR, isu_size,
 				       &mpic_host_ops,
-				       flags & MPIC_LARGE_VECTORS ? 2048 : 256);
+				       flags & MPIC_LARGE_VECTORS ? 2048 : 256,
+				       mpic->of_node->full_name);
 	if (mpic->irqhost == NULL) {
 		of_node_put(node);
 		return NULL;
diff --git a/arch/powerpc/sysdev/mv64x60_pic.c b/arch/powerpc/sysdev/mv64x60_pic.c
index 01d3162..2bb5b12 100644
--- a/arch/powerpc/sysdev/mv64x60_pic.c
+++ b/arch/powerpc/sysdev/mv64x60_pic.c
@@ -257,7 +257,8 @@ void __init mv64x60_init_irq(void)
 	mv64x60_irq_reg_base = ioremap(paddr, reg[1]);
 
 	mv64x60_irq_host = irq_alloc_host(IRQ_HOST_MAP_LINEAR, MV64x60_NUM_IRQS,
-					  &mv64x60_host_ops, MV64x60_NUM_IRQS);
+					  &mv64x60_host_ops, MV64x60_NUM_IRQS,
+					  np->full_name);
 
 	mv64x60_irq_host->host_data = np;
 
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c
index 4d1dcb4..1e78a02 100644
--- a/arch/powerpc/sysdev/qe_lib/qe_ic.c
+++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c
@@ -355,7 +355,8 @@ void __init qe_ic_init(struct device_node *node, unsigned int flags)
 	qe_ic->of_node = of_node_get(node);
 
 	qe_ic->irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR,
-					NR_QE_IC_INTS, &qe_ic_host_ops, 0);
+					NR_QE_IC_INTS, &qe_ic_host_ops, 0,
+					qe_ic->of_node->full_name);
 	if (qe_ic->irqhost == NULL) {
 		of_node_put(node);
 		return;
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c
index 90db8a7..84dc543 100644
--- a/arch/powerpc/sysdev/tsi108_pci.c
+++ b/arch/powerpc/sysdev/tsi108_pci.c
@@ -434,7 +434,7 @@ void __init tsi108_pci_int_init(struct device_node *node)
 	DBG("Tsi108_pci_int_init: initializing PCI interrupts\n");
 
 	pci_irq_node = of_node_get(node);
-	pci_irq_host = irq_alloc_host(IRQ_HOST_MAP_LEGACY, 0, &pci_irq_host_ops, 0);
+	pci_irq_host = irq_alloc_host(IRQ_HOST_MAP_LEGACY, 0, &pci_irq_host_ops, 0, pci_irq_node->full_name);
 	if (pci_irq_host == NULL) {
 		printk(KERN_ERR "pci_irq_host: failed to allocate irq host !\n");
 		return;
diff --git a/arch/powerpc/sysdev/uic.c b/arch/powerpc/sysdev/uic.c
index 8905989..7705676 100644
--- a/arch/powerpc/sysdev/uic.c
+++ b/arch/powerpc/sysdev/uic.c
@@ -247,7 +247,7 @@ static struct uic * __init uic_init_one(struct device_node *node)
 	uic->dcrbase = *dcrreg;
 
 	uic->irqhost = irq_alloc_host(IRQ_HOST_MAP_LINEAR, NR_UIC_INTS,
-				      &uic_host_ops, -1);
+				      &uic_host_ops, -1, node->full_name);
 	if (! uic->irqhost) {
 		of_node_put(node);
 		return NULL; /* FIXME: panic? */
-- 
1.5.1

^ permalink raw reply related

* [PATCH 0/3] Add virq mapping debugfs for PowerPC
From: Chen Gong @ 2007-07-23 11:13 UTC (permalink / raw)
  To: paulus, galak; +Cc: linuxppc-dev, g.chen

Cc: g.chen@freescale.com

Hi

These patches are the update as follows:
http://ozlabs.org/pipermail/linuxppc-dev/2007-March/033091.html
http://ozlabs.org/pipermail/linuxppc-dev/2007-March/033093.html
http://ozlabs.org/pipermail/linuxppc-dev/2007-March/033092.html
http://ozlabs.org/pipermail/linuxppc-dev/2007-March/033094.html

These patches are used for supplying virq mapping debugfs function.
It can be used for displaying irq-virq mapping relationship under debugfs.
Meanwhile, to express these information more clearly, we also add a new member
named "name" for struct irq_host.

[PATCH 1/3] Add a new member name to structure irq_host
[PATCH 2/3] Add irq host name for interrupt controllors
[PATCH 3/3] Add irq debugfs and virq mapping for getting the virq

Any feedback is welcome!

Best Regards,
Chen Gong

^ 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