* 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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox