LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [RFC 1/1] lro: Generic Large Receive Offload for TCP traffic
From: David Miller @ 2007-07-22  2:29 UTC (permalink / raw)
  To: ossthema
  Cc: tklein, themann, netdev, linux-kernel, linuxppc-dev, raisch,
	meder, stefan.roscher
In-Reply-To: <200707201741.49290.ossthema@de.ibm.com>

From: Jan-Bernd Themann <ossthema@de.ibm.com>
Date: Fri, 20 Jul 2007 17:41:48 +0200

> Generic LRO patch
> 
> Signed-off-by: Jan-Bernd Themann <themann@de.ibm.com>

I have no general objections to this patch.

However I'd like to see at least one or two uses of these APIs before
we put it in, and it sounds as if we have at least two pending and
in the works if not ready already, so that shouldn't be an issue.

Thanks.

^ permalink raw reply

* 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


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