Re: 2.6.27-rc8 boot failure

2008-10-06 Thread Paul Mackerras
Badari Pulavarty writes:

> I am not able to boot my Power5 box with 2.6.27-rc8 (defconfig).
> However, I am able to boot with my own custom config.
> 
> Known issue ?

No, and I wasn't able to replicate it on a power5 partition here...

Could you look up what is at 0xc097a02c in your vmlinux (not
zImage)?

Paul.
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH v2] properly reserve in bootmem the lmb reserved regions that cross NUMA nodes

2008-10-06 Thread Benjamin Herrenschmidt
Minor nits ...

One is, you add this helper to mm/page_alloc.c, which means that I'll
need some ack from Hugh or Andrew before I can merge that via the
powerpc tree... Unless there's another user, I'd rather keep the
helper function in powerpc code for now, it can be moved to common
code later if somebody needs something similar.

> + /* Mark reserved regions */
> + for (i = 0; i < lmb.reserved.cnt; i++) {
> + unsigned long physbase = lmb.reserved.region[i].base;
> + unsigned long size = lmb.reserved.region[i].size;
> + unsigned long start_pfn = physbase >> PAGE_SHIFT;
> + unsigned long end_pfn = ((physbase + size - 1) >> PAGE_SHIFT);
> + struct node_active_region *node_ar;

I'm not too happy wit the fact that something called "end_pfn" is
sometimes inclusive and sometime exclusive.

IE. From your implementation of get_node_active_region() it looks like
early_node_map[i].end_pfn isn't part of the range (exclusive) while
in your loop, the way you define end_pfn to be base + size - 1 means
it's part of the range (inclusive). That subtle distinction makes it
harder to understand the logic and is bug prone.

> + node_ar = get_node_active_region(start_pfn);
> + while (start_pfn < end_pfn && node_ar != NULL) {
> + /*
> +  * if reserved region extends past active region
> +  * then trim size to active region
> +  */
> + if (end_pfn >= node_ar->end_pfn)

So the above test is correct, but it took me two more brain cells to
figure it out than necessary :-)

> + size = (node_ar->end_pfn << PAGE_SHIFT)
> + - (start_pfn << PAGE_SHIFT);
> + dbg("reserve_bootmem %lx %lx nid=%d\n", physbase, size,
> + node_ar->nid);
> + reserve_bootmem_node(NODE_DATA(node_ar->nid), physbase,
> + size, BOOTMEM_DEFAULT);
> + /*
> +  * if reserved region extends past the active region
> +  * then get next active region that contains
> +  *this reserved region
> +  */
> + if (end_pfn >= node_ar->end_pfn) {
> + start_pfn = node_ar->end_pfn;
> + physbase = start_pfn << PAGE_SHIFT;
> + node_ar = get_node_active_region(start_pfn);
> + } else
> + break;
>   }
Minor nit but the above would look nicer if you wrote instead

if (end_pfn < node_ar->end_pfn)
break;
start_pfn = ...
 
> + }
> +
> + for_each_online_node(nid) {
>   sparse_memory_present_with_active_regions(nid);
>   }
>  }

And you can remove the { and } above.

Cheers,
Ben.


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [RFC/PATCH 1/2] pci: Add ability to mmap legacy_io on some platforms

2008-10-06 Thread Benjamin Herrenschmidt
On Fri, 2008-10-03 at 08:53 -0700, Jesse Barnes wrote:
> Tony and/or Bjorn, do you want to take a look and make sure this is ok?  If 
> so 
> I can take the whole thing into the PCI tree.

Don't take patch 2/2, only 1/2. If/when you do, I'll then get the
powerpc side patch via the powerpc tree, as I didn't quite manage to
test it properly yet and I may want to polish a thing or two first. It's
also likely to collide with other powerpc incoming stuff, better if I
sort that out.

Cheers,
Ben.


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


BSP on Kernel2.4 needed for MPC8360E-MDS

2008-10-06 Thread mike zheng
Hi All,

Is there any BSP on kernel 2.4 for MPC8360EMDS board?

Thanks,

Mike
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: remove CHRP and PMAC support from defconfigs, fix Kconfigs

2008-10-06 Thread Timur Tabi
On Fri, Sep 26, 2008 at 12:19 PM, Timur Tabi <[EMAIL PROTECTED]> wrote:
> The Kconfig files for PowerPC CHRP and PMAC support had "default=y" for some
> Kconfig options, and this caused support for CHRP and PMAC platforms to be
> enabled incorrectly for several platforms.  Fix the Kconfigs and the
> affected defconfigs.
>
> Signed-off-by: Timur Tabi <[EMAIL PROTECTED]>
> ---
>
> This patch is for 2.6.28.  Ben, please review and make sure I'm not being to
> conservative or too aggressive.  I don't know enough about CHRP and PMAC to
> be sure I'm doing this right.

Ping.

-- 
Timur Tabi
Linux kernel developer at Freescale
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH v2] properly reserve in bootmem the lmb reserved regions that cross NUMA nodes

2008-10-06 Thread Jon Tollefson
If there are multiple reserved memory blocks via lmb_reserve() that are
contiguous addresses and on different NUMA nodes we are losing track of which 
address ranges to reserve in bootmem on which node.  I discovered this 
when I only recently got to try 16GB huge pages on a system with more 
then 2 nodes.

When scanning the device tree in early boot we call lmb_reserve() with 
the addresses of the 16G pages that we find so that the memory doesn't 
get used for something else.  For example the addresses for the pages 
could be 40, 44, 48, 4C, etc - 8 pages, 
one on each of eight nodes.  In the lmb after all the pages have been 
reserved it will look something like the following:

lmb_dump_all:
memory.cnt= 0x2
memory.size   = 0x3e8000
memory.region[0x0].base   = 0x0
  .size = 0x1e8000
memory.region[0x1].base   = 0x40
  .size = 0x20
reserved.cnt  = 0x5
reserved.size = 0x3e8000
reserved.region[0x0].base   = 0x0
  .size = 0x7b5000
reserved.region[0x1].base   = 0x2a0
  .size = 0x78c000
reserved.region[0x2].base   = 0x328c000
  .size = 0x43000
reserved.region[0x3].base   = 0xf4e8000
  .size = 0xb18000
reserved.region[0x4].base   = 0x40
  .size = 0x20


The reserved.region[0x4] contains the 16G pages.  In 
arch/powerpc/mm/num.c: do_init_bootmem() we loop through each of the 
node numbers looking for the reserved regions that belong to the 
particular node.  It is not able to identify region 0x4 as being a part 
of each of the 8 nodes.  It is assuming that a reserved region is only
on a single node.

This patch takes out the reserved region loop from inside
the loop that goes over each node.  It looks up the active region containing
the start of the reserved region.  If it extends past that active region then
it adjusts the size and gets the next active region containing it.


Signed-off-by: Jon Tollefson <[EMAIL PROTECTED]>
---

Changes:
-style changes as suggested by Adam Litke


Please consider for 2.6.28.


 arch/powerpc/mm/numa.c |   63 -
 include/linux/mm.h |2 +
 mm/page_alloc.c|   19 ++
 3 files changed, 57 insertions(+), 27 deletions(-)


diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index d9a1813..9a3b0c9 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -837,36 +837,45 @@ void __init do_init_bootmem(void)
  start_pfn, end_pfn);
 
free_bootmem_with_active_regions(nid, end_pfn);
+   }
 
-   /* Mark reserved regions on this node */
-   for (i = 0; i < lmb.reserved.cnt; i++) {
-   unsigned long physbase = lmb.reserved.region[i].base;
-   unsigned long size = lmb.reserved.region[i].size;
-   unsigned long start_paddr = start_pfn << PAGE_SHIFT;
-   unsigned long end_paddr = end_pfn << PAGE_SHIFT;
-
-   if (early_pfn_to_nid(physbase >> PAGE_SHIFT) != nid &&
-   early_pfn_to_nid((physbase+size-1) >> PAGE_SHIFT) 
!= nid)
-   continue;
-
-   if (physbase < end_paddr &&
-   (physbase+size) > start_paddr) {
-   /* overlaps */
-   if (physbase < start_paddr) {
-   size -= start_paddr - physbase;
-   physbase = start_paddr;
-   }
-
-   if (size > end_paddr - physbase)
-   size = end_paddr - physbase;
-
-   dbg("reserve_bootmem %lx %lx\n", physbase,
-   size);
-   reserve_bootmem_node(NODE_DATA(nid), physbase,
-size, BOOTMEM_DEFAULT);
-   }
+   /* Mark reserved regions */
+   for (i = 0; i < lmb.reserved.cnt; i++) {
+   unsigned long physbase = lmb.reserved.region[i].base;
+   unsigned long size = lmb.reserved.region[i].size;
+   unsigned long start_pfn = physbase >> PAGE_SHIFT;
+   unsigned long end_pfn = ((physbase + size - 1) >> PAGE_SHIFT);
+   struct node_active_region *node_ar;
+
+   node_ar = get_node_active_region(start_pfn);
+   while (start_pfn < end_pfn && node_ar != NULL) {
+   /*
+* if reserved region extends past active region
+* then trim size to a

Re: [PATCH] pata_of_platform: fix no irq handling

2008-10-06 Thread Anton Vorontsov
On Mon, Oct 06, 2008 at 03:41:19PM -0500, Matt Sealey wrote:
> There is a simple problem with the patch which is that an "IRQ 0" can and does
> actually exist on a bunch of platforms, at least to the best of my knowledge.
> 
> Checking for -1 (which means for definite, no irq at all, because it is
> totally unambiguous, as a -1 IRQ numbering is "impossible") is more correct.

This was discussed years ago.

http://lkml.org/lkml/2005/11/22/159
http://lkml.org/lkml/2005/11/22/227

-- 
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: 2.6.27-rc8 boot failure

2008-10-06 Thread Badari Pulavarty
On Mon, 2008-10-06 at 11:05 +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2008-10-03 at 10:40 -0700, Badari Pulavarty wrote:
> > Hi,
> > 
> > I am not able to boot my Power5 box with 2.6.27-rc8 (defconfig).
> > However, I am able to boot with my own custom config.
> > 
> > Known issue ?
> 
> Nope. It would be useful to know the difference between the 2 configs
> tho :-)
> 
> It -could- have something to do with the kernel size too.
> 
> Cheers,
> Ben.



#diff .config .config.working

16,17c16
< CONFIG_ALTIVEC=y
< CONFIG_VSX=y
---
> # CONFIG_ALTIVEC is not set
60d58
< CONFIG_ARCH_SUSPEND_POSSIBLE=y
62,64c60,61
< CONFIG_PPC_DCR_MMIO=y
< CONFIG_PPC_DCR=y
< CONFIG_PPC_OF_PLATFORM_PCI=y
---
> # CONFIG_PPC_DCR_MMIO is not set
> # CONFIG_PPC_OF_PLATFORM_PCI is not set
78c75
< CONFIG_POSIX_MQUEUE=y
---
> # CONFIG_POSIX_MQUEUE is not set
80,82c77
< CONFIG_TASKSTATS=y
< CONFIG_TASK_DELAY_ACCT=y
< # CONFIG_TASK_XACCT is not set
---
> # CONFIG_TASKSTATS is not set
86c81
< CONFIG_LOG_BUF_SHIFT=17
---
> CONFIG_LOG_BUF_SHIFT=15
88,94c83,95
< # CONFIG_CGROUP_DEBUG is not set
< # CONFIG_CGROUP_NS is not set
< # CONFIG_CGROUP_DEVICE is not set
< CONFIG_CPUSETS=y
< # CONFIG_GROUP_SCHED is not set
< # CONFIG_CGROUP_CPUACCT is not set
< # CONFIG_RESOURCE_COUNTERS is not set
---
> CONFIG_CGROUP_DEBUG=y
> CONFIG_CGROUP_NS=y
> CONFIG_CGROUP_DEVICE=y
> # CONFIG_CPUSETS is not set
> CONFIG_GROUP_SCHED=y
> CONFIG_FAIR_GROUP_SCHED=y
> CONFIG_RT_GROUP_SCHED=y
> CONFIG_USER_SCHED=y
> # CONFIG_CGROUP_SCHED is not set
> CONFIG_CGROUP_CPUACCT=y
> CONFIG_RESOURCE_COUNTERS=y
> CONFIG_MM_OWNER=y
> CONFIG_CGROUP_MEM_RES_CTLR=y
97d97
< CONFIG_PROC_PID_CPUSET=y
100,101c100,101
< # CONFIG_UTS_NS is not set
< # CONFIG_IPC_NS is not set
---
> CONFIG_UTS_NS=y
> CONFIG_IPC_NS=y
103c103
< # CONFIG_PID_NS is not set
---
> CONFIG_PID_NS=y
111c111
< CONFIG_KALLSYMS_ALL=y
---
> # CONFIG_KALLSYMS_ALL is not set
118c118
< # CONFIG_COMPAT_BRK is not set
---
> CONFIG_COMPAT_BRK=y
128,130c128,129
< CONFIG_SLUB_DEBUG=y
< # CONFIG_SLAB is not set
< CONFIG_SLUB=y
---
> CONFIG_SLAB=y
> # CONFIG_SLUB is not set
136c135
< # CONFIG_KPROBES is not set
---
> CONFIG_KPROBES=y
137a137
> CONFIG_KRETPROBES=y
155,156c155,156
< CONFIG_MODVERSIONS=y
< CONFIG_MODULE_SRCVERSION_ALL=y
---
> # CONFIG_MODVERSIONS is not set
> # CONFIG_MODULE_SRCVERSION_ALL is not set
161c161
< CONFIG_BLK_DEV_BSG=y
---
> # CONFIG_BLK_DEV_BSG is not set
172c172
< CONFIG_DEFAULT_AS=y
---
> # CONFIG_DEFAULT_AS is not set
174c174
< # CONFIG_DEFAULT_CFQ is not set
---
> CONFIG_DEFAULT_CFQ=y
176c176
< CONFIG_DEFAULT_IOSCHED="anticipatory"
---
> CONFIG_DEFAULT_IOSCHED="cfq"
184c184
< CONFIG_PPC_SPLPAR=y
---
> # CONFIG_PPC_SPLPAR is not set
186,198c186,189
< CONFIG_SCANLOG=m
< CONFIG_LPARCFG=y
< CONFIG_PPC_SMLPAR=y
< CONFIG_CMM=y
< CONFIG_PPC_ISERIES=y
< 
< #
< # iSeries device drivers
< #
< CONFIG_VIODASD=y
< CONFIG_VIOCD=m
< CONFIG_VIOTAPE=m
< CONFIG_VIOPATH=y
---
> CONFIG_SCANLOG=y
> # CONFIG_LPARCFG is not set
> # CONFIG_PPC_SMLPAR is not set
> # CONFIG_PPC_ISERIES is not set
201,209c192,193
< CONFIG_PPC_MAPLE=y
< CONFIG_PPC_PASEMI=y
< 
< #
< # PA Semi PWRficient options
< #
< CONFIG_PPC_PASEMI_IOMMU=y
< # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
< CONFIG_PPC_PASEMI_MDIO=y
---
> # CONFIG_PPC_MAPLE is not set
> # CONFIG_PPC_PASEMI is not set
211,230c195,198
< CONFIG_PPC_CELL=y
< CONFIG_PPC_CELL_NATIVE=y
< CONFIG_PPC_IBM_CELL_BLADE=y
< CONFIG_PPC_CELLEB=y
< 
< #
< # Cell Broadband Engine options
< #
< CONFIG_SPU_FS=m
< CONFIG_SPU_FS_64K_LS=y
< # CONFIG_SPU_TRACE is not set
< CONFIG_SPU_BASE=y
< CONFIG_CBE_RAS=y
< CONFIG_PPC_IBM_CELL_RESETBUTTON=y
< CONFIG_PPC_IBM_CELL_POWERBUTTON=m
< CONFIG_CBE_THERM=m
< CONFIG_CBE_CPUFREQ=m
< CONFIG_CBE_CPUFREQ_PMI=m
< CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m
< CONFIG_OPROFILE_CELL=y
---
> # CONFIG_PPC_CELL is not set
> # CONFIG_PPC_CELL_NATIVE is not set
> # CONFIG_PPC_IBM_CELL_BLADE is not set
> # CONFIG_PPC_CELLEB is not set
233,234c201
< CONFIG_UDBG_RTAS_CONSOLE=y
< CONFIG_PPC_UDBG_BEAT=y
---
> # CONFIG_UDBG_RTAS_CONSOLE is not set
244,246c211,212
< CONFIG_RTAS_FLASH=m
< CONFIG_PPC_PMI=m
< CONFIG_MMIO_NVRAM=y
---
> # CONFIG_RTAS_FLASH is not set
> # CONFIG_MMIO_NVRAM is not set
248d213
< CONFIG_MPIC_BROKEN_REGREAD=y
250c215
< CONFIG_IBMEBUS=y
---
> # CONFIG_IBMEBUS is not set
253,276c218,220
< CONFIG_PPC_INDIRECT_IO=y
< CONFIG_GENERIC_IOMAP=y
< CONFIG_CPU_FREQ=y
< CONFIG_CPU_FREQ_TABLE=y
< # CONFIG_CPU_FREQ_DEBUG is not set
< CONFIG_CPU_FREQ_STAT=y
< # CONFIG_CPU_FREQ_STAT_DETAILS is not set
< CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
< # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
< # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
< # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
< # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
< CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
< CONFIG_CPU_FREQ_GOV_POWERSAVE=y
< CONFIG_CPU_FREQ_GOV_USERSPACE=y
< # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
< # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
< 
< #
< # CPU Frequency driv

Re: USB support on mpc5200 broken

2008-10-06 Thread Matt Sealey

Benjamin Herrenschmidt wrote:

This is what we were recommended to use at the time. There is a patch
on www.powerdeveloper.org which tweaks the tree to make it ultra-compliant
with the Linux version of things, which implements every variation. It
also implements a suggested patch which added a "big-endian" property
(not built in to the compatible property, but another property).

I don't see why THAT patch got reverted as it was a great idea that we
all agreed was a great idea.


I agree. Something needs to be fixed on the OHCI OF stuff, it should
definitely cope with the "big-endian" property (which is a practice
borrowed from Apple that I recommended I think back then) and I don't
see any problem with having ohci-be in the "compatible" property, its
trivial enough to cope in the driver and being anal about it on the
kernel side doesn't really bring any benefit.


I see a problem with having ohci-be being in there to the exclusion of
fixed properties on existing hardware that are not easy to realise what
changed (i.e. you upgrade your kernel, and not being an avid follower
of linux-usb or linuxppc-dev, wonder why USB stopped working).

It's not that easy for a lot of people who are not kernel developers to
find out WHY it broke let alone HOW to fix it (edit the USB compatibility
names list to re-add it, use efika.forth, edit a custom snippet in nvramrc
or a forth boot script, hack chrp_fixups some more - in order of increasing
brain death :)


Care to send a patch ?


I don't really have time to go into it right now but I will look into
it. At some point I have to get my act together and release the latest
version of efika.forth as some things did change between that and the
latest Linux version...


Linux development around here is getting really schizophrenic. Nobody
is writing these decisions down even as comments in the source code..


That isn't entirely true. There's the ePAPR effort on power.org that is
codifying a lot of that, and there are binding documents dropped in
Documentation/powerpc.


You know I don't believe in Power.org any more than I believe in the
tooth fairy. Codifying ePAPR is just reverse engineering decisions made
a year ago with the booting-without-of.txt and the existing code, and
putting it into a document.

It didn't solve this situation and it won't - ePAPR can't help codifying
a board's device tree that was engineered, produced and will probably
be discontinued before a decent version of ePAPR will be released. Just
like ePAPR doesn't expect anyone conform to Apple device trees, ePAPR
will not make Efika device trees suddenly work without "help" (which is
why I wrote that forth script..)


No; you can have little endian OHCI controllers on big endian machines.
It's a property of the host controller, not the system architecture, just
like PCI is always little endian (except when you have magic in hardware
like Amiga PowerUP cards which endianswap for you :)


In fact, you can have both kinds on the same machine.


And all kinds of USB controllers at once. I have seen a Pegasos with a
little endian UHCI, big endian OHCI, little endian OHCI in the same
box. Very confusing for drivers. Don't get me started on the FireWire
OHCI, which I think above "ohci-be" really conflicts with in terms
of namespace.

What I thought we all agreed on before was this;

compatible = "usb-ohci, usb-ohci-be"
big-endian

Would be canonical. That way you can tell it's OHCI USB, it's big
endian for compatibility and big-endian property just in case the
driver forgot or was misled somehow (at least it should match on
usb-ohci, usb-ohci-be, then check if usb-ohci-be is present, and
then check for big-endian, and it will have a comprehensive
knowledge..)

There stands to be some discussion over whether mpc5200-usb-ohci
or mpc5200-ohci or mpc5200-usb is valid or required or not. You
still need to check for quirks (I am sure there ARE some) after
all.

I really wish it would be codified somewhere so that we could once
and for all put in exactly what it should be, and not just change
it at the whim of the latest patch (the reason we do not release
firmware this often is because the burden of releasing firmware does
not match the expectations of a 3-month-long kernel release where
the decisions are overturned, reverted and having 15 firmware
versions since release makes our life and your lives much harder
when fixing these things down. Efika stayed as it was, so it can
be consistently supported :)

I think the thing to do somewhere is note that while ePAPR is the
recommended practise, it's based on Open Firmware standards which
already exist, and there are still Open Firmware standard firmwares
which still exist, which may not be so easily updated as to just
run the device tree compiler and attach it to a kernel, so when
making decisions about naming or submitting patches about naming,
check out the users of that peripheral and make sure you're not
just submitting a patch assuming that everyone can update t

Re: [PATCH] properly reserve in bootmem the lmb reserved regions that cross numa nodes

2008-10-06 Thread Jon Tollefson
Kumar Gala wrote:
>
> On Oct 6, 2008, at 10:42 AM, Jon Tollefson wrote:
>
>> Kumar Gala wrote:
>>> Out of interest how to do you guys represent NUMA regions of memory in
>>> the device tree?
>>>
>>> - k
>> Looking at the source code in numa.c I see at the start of
>> do_init_bootmem() that parse_numa_properties() is called.  It appears to
>> be looking at memory nodes and getting the node id from it.  It gets an
>> associativity property for the memory node and indexes that array with a
>> 'min_common_depth' value to get the node id.
>>
>> This node id is then used to setup the active ranges in the
>> early_node_map[].
>>
>> Is this what you are asking about?  There are others I am sure who know
>> more about it then I though.
>
> I was wondering if this was documented anywhere (like in sPAPR)?
>
> - k
I see some information on it in section "C.6.6".

Jon

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] pata_of_platform: fix no irq handling

2008-10-06 Thread Matt Sealey

There is a simple problem with the patch which is that an "IRQ 0" can and does
actually exist on a bunch of platforms, at least to the best of my knowledge.

Checking for -1 (which means for definite, no irq at all, because it is
totally unambiguous, as a -1 IRQ numbering is "impossible") is more correct.

The problem is the check against an unsigned value for interrupts (is there
any reason why you would need 4 billion interrupts possible instead of just
2 billion?) although I must say, the patch will work, and probably 99.999%
of people will never see a problem with it :)

--
Matt Sealey <[EMAIL PROTECTED]>
Genesi, Manager, Developer Relations

Anton Vorontsov wrote:

When no irq specified the pata_of_platform fills the irq_res with -1,
which is wrong to do for two reasons:

1. By definition, 'no irq' should be IRQ 0, not some negative integer;
2. pata_platform checks for irq_res.start > 0, but since irq_res.start
   is unsigned type, the check will be true for `-1'.

Reported-by: Steven A. Falco <[EMAIL PROTECTED]>
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---

Resending again...

 drivers/ata/pata_of_platform.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/ata/pata_of_platform.c b/drivers/ata/pata_of_platform.c
index 408da30..1f18ad9 100644
--- a/drivers/ata/pata_of_platform.c
+++ b/drivers/ata/pata_of_platform.c
@@ -52,7 +52,7 @@ static int __devinit pata_of_platform_probe(struct of_device 
*ofdev,
 
 	ret = of_irq_to_resource(dn, 0, &irq_res);

if (ret == NO_IRQ)
-   irq_res.start = irq_res.end = -1;
+   irq_res.start = irq_res.end = 0;
else
irq_res.flags = 0;
 

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 1/2] OF: add fsl,mcu-mpc8349emitx to the exception list

2008-10-06 Thread Anton Vorontsov
On Mon, Oct 06, 2008 at 11:31:58AM -0600, Grant Likely wrote:
> On Mon, Oct 06, 2008 at 09:28:31PM +0400, Anton Vorontsov wrote:
> > On Wed, Oct 01, 2008 at 03:39:48PM +0400, Anton Vorontsov wrote:
> > [...]
> > > > > Any issues with this or the second patch? Can we merge them?
> > > > 
> > > > I do not have the time to review these patches (and, honestly, have no
> > > > interest in them.) So I will not merge them but I have no objection to
> > > > them being merged by somebody else.
> > > 
> > > Ok, thanks for the sincerity.. ;-)
> > > 
> > > Kumar, could you pick up the two patches via the patchworks?
> > > 
> > > [1/2] OF: add fsl,mcu-mpc8349emitx to the exception list
> > > http://patchwork.ozlabs.org/patch/1105/
> > > 
> 
> Since I've been involved with the i2c of bindings, I can pick this one up.

Much appreciated, thanks!

> > > [2/2] i2c: MPC8349E-mITX Power Management and GPIO expander driver
> > > http://patchwork.ozlabs.org/patch/1106/
> 
> But I'm not involved enough with this one, so it should go through
> kumar.

That's fine, the first and second patches could go separate trees
since it won't break the build.

-- 
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] dma: add new dma_mapping_ops API sync_page

2008-10-06 Thread Remi Machet
On Mon, 2008-10-06 at 11:30 -0500, Scott Wood wrote:
> Remi Machet wrote:
> > After continuing to work on the dma noncoherent code I realized that
> > sync_page is not the best choice of API: 
> > -The API should preferably take a dma_addr_t in my opinion
> 
> A virtual address will typically be needed to perform the flush; why 
> pass the bus address?
Because it is a sync API. You want to make sure that a physical memory
area is in sync with the caches, not the virtual address. This
distinction can become important in the event where the page is mapped
multiple times in the memory and the architecture does not take care of
synchronizing the multiple mapping, the dma_mapping_ops code should be
able to synchronize the multiple mapping. In most case it would be easy
of course to go from virtual address to the page address, but not if the
page is in high memory ...

By the way I realized later on that scatter/gather structures contain 2
fields: dma_addr and dma_length that can be used to recover the bus
address => no need for sync_sg anymore.

Remi

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 1/2] OF: add fsl,mcu-mpc8349emitx to the exception list

2008-10-06 Thread Grant Likely
On Mon, Oct 06, 2008 at 09:28:31PM +0400, Anton Vorontsov wrote:
> On Wed, Oct 01, 2008 at 03:39:48PM +0400, Anton Vorontsov wrote:
> [...]
> > > > Any issues with this or the second patch? Can we merge them?
> > > 
> > > I do not have the time to review these patches (and, honestly, have no
> > > interest in them.) So I will not merge them but I have no objection to
> > > them being merged by somebody else.
> > 
> > Ok, thanks for the sincerity.. ;-)
> > 
> > Kumar, could you pick up the two patches via the patchworks?
> > 
> > [1/2] OF: add fsl,mcu-mpc8349emitx to the exception list
> > http://patchwork.ozlabs.org/patch/1105/
> > 

Since I've been involved with the i2c of bindings, I can pick this one up.

> > [2/2] i2c: MPC8349E-mITX Power Management and GPIO expander driver
> > http://patchwork.ozlabs.org/patch/1106/

But I'm not involved enough with this one, so it should go through
kumar.

g.
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH 1/2] OF: add fsl,mcu-mpc8349emitx to the exception list

2008-10-06 Thread Anton Vorontsov
On Wed, Oct 01, 2008 at 03:39:48PM +0400, Anton Vorontsov wrote:
[...]
> > > Any issues with this or the second patch? Can we merge them?
> > 
> > I do not have the time to review these patches (and, honestly, have no
> > interest in them.) So I will not merge them but I have no objection to
> > them being merged by somebody else.
> 
> Ok, thanks for the sincerity.. ;-)
> 
> Kumar, could you pick up the two patches via the patchworks?
> 
> [1/2] OF: add fsl,mcu-mpc8349emitx to the exception list
> http://patchwork.ozlabs.org/patch/1105/
> 
> [2/2] i2c: MPC8349E-mITX Power Management and GPIO expander driver
> http://patchwork.ozlabs.org/patch/1106/
> 
> Or should I resend them to you? Or should I resend them to Andrew?

Ping?

-- 
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH] pata_of_platform: fix no irq handling

2008-10-06 Thread Anton Vorontsov
When no irq specified the pata_of_platform fills the irq_res with -1,
which is wrong to do for two reasons:

1. By definition, 'no irq' should be IRQ 0, not some negative integer;
2. pata_platform checks for irq_res.start > 0, but since irq_res.start
   is unsigned type, the check will be true for `-1'.

Reported-by: Steven A. Falco <[EMAIL PROTECTED]>
Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---

Resending again...

 drivers/ata/pata_of_platform.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/ata/pata_of_platform.c b/drivers/ata/pata_of_platform.c
index 408da30..1f18ad9 100644
--- a/drivers/ata/pata_of_platform.c
+++ b/drivers/ata/pata_of_platform.c
@@ -52,7 +52,7 @@ static int __devinit pata_of_platform_probe(struct of_device 
*ofdev,
 
ret = of_irq_to_resource(dn, 0, &irq_res);
if (ret == NO_IRQ)
-   irq_res.start = irq_res.end = -1;
+   irq_res.start = irq_res.end = 0;
else
irq_res.flags = 0;
 
-- 
1.5.6.3

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH v3] powerpc/83xx: don't probe broken PCI on mpc837x_mds boards

2008-10-06 Thread Anton Vorontsov
In the standalone setup the board's CPLD disables the PCI internal
arbiter, thus any access to the PCI bus will hang the board.

The common way to disable particular devices in the device tree is to
put the "status" property with any value other than "ok" or "okay"
into the device node we want to disable.

So, when there is no PCI arbiter on the bus the u-boot adds status =
"broken (no arbiter)" property into the PCI controller's node, and so
marks the PCI controller as unavailable.

Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---

On Fri, Oct 03, 2008 at 12:51:41PM -0500, Kumar Gala wrote:
[...]
>>> yes, but should we just have "status = disabled" since that is the
>>> effect?
>>
>> I don't know, should we? For the unavailable/disabled case the status
>> can be anything but not 'ok' or 'okay' (the only status values for the
>> available devices). So if we can encode the reason, why not do this?
>
> that works for me, just add the fact to the commit msg that the "valid  
> status's are 'ok' and 'okay' and everything else is treated as "not  
> available or disabled"

Done.

 arch/powerpc/platforms/83xx/mpc837x_mds.c |8 +++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c 
b/arch/powerpc/platforms/83xx/mpc837x_mds.c
index be62de2..8bb13c8 100644
--- a/arch/powerpc/platforms/83xx/mpc837x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c
@@ -85,8 +85,14 @@ static void __init mpc837x_mds_setup_arch(void)
ppc_md.progress("mpc837x_mds_setup_arch()", 0);
 
 #ifdef CONFIG_PCI
-   for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
+   for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") {
+   if (!of_device_is_available(np)) {
+   pr_warning("%s: disabled by the firmware.\n",
+  np->full_name);
+   continue;
+   }
mpc83xx_add_bridge(np);
+   }
 #endif
mpc837xmds_usb_cfg();
 }
-- 
1.5.6.3

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH 2/2] powerpc/QE: implement QE Pin Multiplexing API

2008-10-06 Thread Anton Vorontsov
With this API we're able to set a QE pin to the GPIO mode or a dedicated
peripheral function.

The API relies on the fact that QE gpio controllers are registered. If
they aren't, the API won't work (gracefully though).

There is one caveat though: if anybody occupied the node->data before us,
or overwrote it, then bad things will happen. Luckily this is all in the
platform code that we fully control, so this should never happen.

I could implement more checks (for example we could create a list of
successfully registered QE controllers, and compare the node->data in the
qe_pin_request()), but this is unneeded if nobody is going to do silly
things behind our back.

Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
 arch/powerpc/include/asm/qe.h |9 ++
 arch/powerpc/sysdev/qe_lib/gpio.c |  195 +
 2 files changed, 204 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/qe.h b/arch/powerpc/include/asm/qe.h
index edee15d..31ddbc9 100644
--- a/arch/powerpc/include/asm/qe.h
+++ b/arch/powerpc/include/asm/qe.h
@@ -112,6 +112,15 @@ extern int par_io_config_pin(u8 port, u8 pin, int dir, int 
open_drain,
 int assignment, int has_irq);
 extern int par_io_data_set(u8 port, u8 pin, u8 val);
 
+/*
+ * Pin multiplexing functions.
+ */
+struct qe_pin;
+extern struct qe_pin *qe_pin_request(struct device_node *np, int index);
+extern void qe_pin_free(struct qe_pin *qe_pin);
+extern void qe_pin_set_gpio(struct qe_pin *qe_pin);
+extern void qe_pin_set_dedicated(struct qe_pin *pin);
+
 /* QE internal API */
 int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
 enum qe_clock qe_clock_source(const char *source);
diff --git a/arch/powerpc/sysdev/qe_lib/gpio.c 
b/arch/powerpc/sysdev/qe_lib/gpio.c
index 8e5a0bc..7f10b18 100644
--- a/arch/powerpc/sysdev/qe_lib/gpio.c
+++ b/arch/powerpc/sysdev/qe_lib/gpio.c
@@ -14,6 +14,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -24,8 +25,14 @@ struct qe_gpio_chip {
struct of_mm_gpio_chip mm_gc;
spinlock_t lock;
 
+   unsigned long pin_flags[QE_PIO_PINS];
+#define QE_PIN_REQUESTED 0
+
/* shadowed data register to clear/set bits safely */
u32 cpdata;
+
+   /* saved_regs used to restore dedicated functions */
+   struct qe_pio_regs saved_regs;
 };
 
 static inline struct qe_gpio_chip *
@@ -40,6 +47,12 @@ static void qe_gpio_save_regs(struct of_mm_gpio_chip *mm_gc)
struct qe_pio_regs __iomem *regs = mm_gc->regs;
 
qe_gc->cpdata = in_be32(®s->cpdata);
+   qe_gc->saved_regs.cpdata = qe_gc->cpdata;
+   qe_gc->saved_regs.cpdir1 = in_be32(®s->cpdir1);
+   qe_gc->saved_regs.cpdir2 = in_be32(®s->cpdir2);
+   qe_gc->saved_regs.cppar1 = in_be32(®s->cppar1);
+   qe_gc->saved_regs.cppar2 = in_be32(®s->cppar2);
+   qe_gc->saved_regs.cpodr = in_be32(®s->cpodr);
 }
 
 static int qe_gpio_get(struct gpio_chip *gc, unsigned int gpio)
@@ -103,6 +116,188 @@ static int qe_gpio_dir_out(struct gpio_chip *gc, unsigned 
int gpio, int val)
return 0;
 }
 
+struct qe_pin {
+   /*
+* The qe_gpio_chip name is unfortunate, we should change that to
+* something like qe_pio_controller. Someday.
+*/
+   struct qe_gpio_chip *controller;
+   int num;
+};
+
+/**
+ * qe_pin_request - Request a QE pin
+ * @np:device node to get a pin from
+ * @index: index of a pin in the device tree
+ * Context:non-atomic
+ *
+ * This function return qe_pin so that you could use it with the rest of
+ * the QE Pin Multiplexing API.
+ */
+struct qe_pin *qe_pin_request(struct device_node *np, int index)
+{
+   struct qe_pin *qe_pin;
+   struct device_node *gc;
+   struct of_gpio_chip *of_gc = NULL;
+   struct of_mm_gpio_chip *mm_gc;
+   struct qe_gpio_chip *qe_gc;
+   int err;
+   int size;
+   const void *gpio_spec;
+   const u32 *gpio_cells;
+   unsigned long flags;
+
+   qe_pin = kzalloc(sizeof(*qe_pin), GFP_KERNEL);
+   if (!qe_pin) {
+   pr_debug("%s: can't allocate memory\n", __func__);
+   return ERR_PTR(-ENOMEM);
+   }
+
+   err = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", index,
+ &gc, &gpio_spec);
+   if (err) {
+   pr_debug("%s: can't parse gpios property\n", __func__);
+   goto err0;
+   }
+
+   if (!of_device_is_compatible(gc, "fsl,mpc8323-qe-pario-bank")) {
+   pr_debug("%s: tried to get a non-qe pin\n", __func__);
+   err = -EINVAL;
+   goto err1;
+   }
+
+   of_gc = gc->data;
+   if (!of_gc) {
+   pr_debug("%s: gpio controller %s isn't registered\n",
+np->full_name, gc->full_name);
+   err = -ENODEV;
+   goto err1;
+   }
+
+   gpio_cells = of_get_property(gc, "#gpi

[PATCH 1/2] OF: new helper: of_parse_phandles_with_args()

2008-10-06 Thread Anton Vorontsov
The helper is factored out of of_get_gpio(). Will be used by the QE
pin multiplexing functions (they need to parse the gpios = <> too).

Signed-off-by: Anton Vorontsov <[EMAIL PROTECTED]>
---
 drivers/of/base.c  |  111 
 drivers/of/gpio.c  |   77 +++
 include/linux/of.h |3 +
 3 files changed, 130 insertions(+), 61 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index ad8ac1a..d31686d 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -473,3 +473,114 @@ int of_modalias_node(struct device_node *node, char 
*modalias, int len)
 }
 EXPORT_SYMBOL_GPL(of_modalias_node);
 
+/**
+ * of_parse_phandles_with_args - Find a node pointed by phandle in a list
+ * @np:pointer to a device tree node containing a list
+ * @list_name: property name that contains a list
+ * @cells_name:property name that specifies phandles' arguments count
+ * @index: index of a phandle to parse out
+ * @out_node:  pointer to device_node struct pointer (will be filled)
+ * @out_args:  pointer to arguments pointer (will be filled)
+ *
+ * This function is useful to parse lists of phandles and their arguments.
+ * Returns 0 on success and fills out_node and out_args, on error returns
+ * appropriate errno value.
+ *
+ * Example:
+ *
+ * phandle1: node1 {
+ * #list-cells = <2>;
+ * }
+ *
+ * phandle2: node2 {
+ * #list-cells = <1>;
+ * }
+ *
+ * node3 {
+ * list = <&phandle1 1 2 &phandle2 3>;
+ * }
+ *
+ * To get a device_node of the `node2' node you may call this:
+ * of_parse_phandles_with_args(node3, "list", "#list-cells", 2, &node2, &args);
+ */
+int of_parse_phandles_with_args(struct device_node *np, const char *list_name,
+   const char *cells_name, int index,
+   struct device_node **out_node,
+   const void **out_args)
+{
+   int ret = -EINVAL;
+   const u32 *list;
+   u32 list_cells;
+   int size;
+   int i;
+   int cur_index = 0;
+   struct device_node *node = NULL;
+   const void *args;
+
+   list = of_get_property(np, list_name, &size);
+   if (!list) {
+   ret = -ENOENT;
+   goto err0;
+   }
+   list_cells = size / sizeof(u32);
+
+   for (i = 0; i < list_cells; cur_index++) {
+   const u32 *cells;
+   const phandle *phandle;
+
+   phandle = list + i;
+   args = phandle + 1;
+
+   /* one cell hole in the list = <>; */
+   if (!*phandle) {
+   if (cur_index == index)
+   return -ENOENT;
+   i++;
+   continue;
+   }
+
+   node = of_find_node_by_phandle(*phandle);
+   if (!node) {
+   pr_debug("%s: could not find phandle\n",
+np->full_name);
+   goto err0;
+   }
+
+   cells = of_get_property(node, cells_name, &size);
+   if (!cells || size != sizeof(*cells)) {
+   pr_debug("%s: could not get %s for %s\n",
+np->full_name, cells_name, node->full_name);
+   goto err1;
+   }
+
+   /* Next phandle is at phandle cells + #cells */
+   i += sizeof(*phandle) / sizeof(u32) + *cells;
+   if (i >= list_cells + 1) {
+   pr_debug("%s: insufficient arguments length\n",
+np->full_name);
+   goto err1;
+   }
+
+   if (cur_index == index)
+   break;
+
+   node = NULL;
+   of_node_put(node);
+   }
+
+   if (!node) {
+   ret = -ENOENT;
+   goto err0;
+   }
+
+   *out_node = node;
+   *out_args = args;
+
+   return 0;
+err1:
+   of_node_put(node);
+err0:
+   pr_debug("%s failed with status %d\n", __func__, ret);
+   return ret;
+}
+EXPORT_SYMBOL(of_parse_phandles_with_args);
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c
index 1c9cab8..6d6e4c0 100644
--- a/drivers/of/gpio.c
+++ b/drivers/of/gpio.c
@@ -28,78 +28,33 @@
  */
 int of_get_gpio(struct device_node *np, int index)
 {
-   int ret = -EINVAL;
+   int ret;
struct device_node *gc;
struct of_gpio_chip *of_gc = NULL;
int size;
-   const u32 *gpios;
-   u32 nr_cells;
-   int i;
const void *gpio_spec;
const u32 *gpio_cells;
-   int gpio_index = 0;
 
-   gpios = of_get_property(np, "gpios", &size);
-   if (!gpios) {
-   ret = -ENOENT;
+   ret = of_parse_phandles_with_args(np, "gpios", "#gpio-cells", index,
+ &gc, &gpio_spec);
+   if (ret) {
+   p

[PATCH 0/2] QE pin multiplexing API

2008-10-06 Thread Anton Vorontsov
Hi all,

The API is eveloved from the approach where I tried to put the
qe_set_dedicated() function into the GPIO LIB framework, which
wasn't good idea after all (see http://lkml.org/lkml/2008/9/24/289).

So here is the new version. Since the patchset touches driver/of/
I need Acks from the OF guys for the first patch. Then I hope
Kumar would merge the patchset to the powerpc-next. And after
that I could ask Greg KH to merge the FHCI driver itself...

Thanks,

-- 
Anton Vorontsov
email: [EMAIL PROTECTED]
irc://irc.freenode.net/bd2
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] dma: add new dma_mapping_ops API sync_page

2008-10-06 Thread Scott Wood

Remi Machet wrote:

After continuing to work on the dma noncoherent code I realized that
sync_page is not the best choice of API: 
-The API should preferably take a dma_addr_t in my opinion


A virtual address will typically be needed to perform the flush; why 
pass the bus address?


-Scott

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] properly reserve in bootmem the lmb reserved regions that cross numa nodes

2008-10-06 Thread Kumar Gala


On Oct 6, 2008, at 10:42 AM, Jon Tollefson wrote:


Kumar Gala wrote:
Out of interest how to do you guys represent NUMA regions of memory  
in

the device tree?

- k

Looking at the source code in numa.c I see at the start of
do_init_bootmem() that parse_numa_properties() is called.  It  
appears to
be looking at memory nodes and getting the node id from it.  It gets  
an
associativity property for the memory node and indexes that array  
with a

'min_common_depth' value to get the node id.

This node id is then used to setup the active ranges in the
early_node_map[].

Is this what you are asking about?  There are others I am sure who  
know

more about it then I though.


I was wondering if this was documented anywhere (like in sPAPR)?

- k
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


ehea: Error in ehea_treat_poll_error: CQE Error for QP 16

2008-10-06 Thread Elbert C Hu





System log shows a lot of "ehea: Error", see below, during system start up.
Not sure what it is. I'd like to understand this, could someone points me
the direction? My "Machine Type and Model ... ST9146802SS" reported from
lscfg (p6 blade). OS is RHEL 5.2. Kernel level is 2.6.18-92.1.10.el5.

Thanks.

E. Hu
 ehea.modinfo 
filename:   /lib/modules/2.6.18-92.1.10.el5/kernel/drivers/net/ehea/ehea.ko
version:EHEA_0076-05
description:IBM eServer HEA Driver.
author: Christoph Raisch <[EMAIL PROTECTED]>
license:GPL
srcversion: C481DB79B4694F406CF4AA7
depends:
vermagic:   2.6.18-92.1.10.el5 SMP mod_unload gcc-4.1
parm:   num_tx_qps:Number of TX-QPS (int)
parm:   msg_level:msg_level (int)
parm:   prop_carrier_state:Propagate carrier state of physical port
to stack. 1:yes, 0:no.  Default = 0  (int)
parm:   rq3_entries:Number of entries for Receive Queue 3 [2^x -
1], x = [6..14]. Default = 1023) (int)
parm:   rq2_entries:Number of entries for Receive Queue 2 [2^x -
1], x = [6..14]. Default = 1023) (int)
parm:   rq1_entries:Number of entries for Receive Queue 1 [2^x -
1], x = [6..14]. Default = 4095) (int)
parm:   sq_entries: Number of entries for the Send Queue  [2^x -
1], x = [6..14]. Default = 1023) (int)
parm:   use_mcs: 0:NAPI, 1:Multiple receive queues, Default = 0
(int)
parm:   lro_max_aggr: LRO: Max packets to be aggregated. Default =
64 (int)..
parm:   use_lro: Large Receive Offload, 1: enable, 0: disable,
Default = 0 (int).
module_sig:
883f3504886ebc8736cb7d2578e3b1112b7ab09e3b2c69b141d16d1bbbd51ab063f7955335a49e80a0ba218c849673e067f7c0ccc9d7353cc1ce05997

 system log 
Sep 29 09:35:35 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 09:35:35 newhamburg kernel: ehea CQE adr=c001ddbc1400 ofs=
 2000408e
Sep 29 09:35:35 newhamburg kernel: ehea CQE adr=c001ddbc1410 ofs=0010
d6ec002a 0400
Sep 29 09:35:35 newhamburg kernel: ehea CQE adr=c001ddbc1420 ofs=0020
 
Sep 29 09:35:35 newhamburg kernel: ehea CQE adr=c001ddbc1430 ofs=0030
 
Sep 29 09:40:10 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 09:40:10 newhamburg kernel: ehea CQE adr=c001dd9d2800 ofs=
 2000408e
Sep 29 09:40:10 newhamburg kernel: ehea CQE adr=c001dd9d2810 ofs=0010
d6ec002a 0800
Sep 29 09:40:10 newhamburg kernel: ehea CQE adr=c001dd9d2820 ofs=0020
 
Sep 29 09:40:10 newhamburg kernel: ehea CQE adr=c001dd9d2830 ofs=0030
 
Sep 29 10:08:17 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 10:08:17 newhamburg kernel: ehea CQE adr=c001dd9eb600 ofs=
 2000408e
Sep 29 10:08:17 newhamburg kernel: ehea CQE adr=c001dd9eb610 ofs=0010
d6ec002a 0600
Sep 29 10:08:17 newhamburg kernel: ehea CQE adr=c001dd9eb620 ofs=0020
 
Sep 29 10:08:17 newhamburg kernel: ehea CQE adr=c001dd9eb630 ofs=0030
 
Sep 29 10:21:51 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 10:21:51 newhamburg kernel: ehea CQE adr=c001dd9e2300 ofs=
 2000408e
Sep 29 10:21:51 newhamburg kernel: ehea CQE adr=c001dd9e2310 ofs=0010
d6ec002a 0300
Sep 29 10:21:51 newhamburg kernel: ehea CQE adr=c001dd9e2320 ofs=0020
 
Sep 29 10:21:51 newhamburg kernel: ehea CQE adr=c001dd9e2330 ofs=0030
 
Sep 29 16:16:23 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 16:16:23 newhamburg kernel: ehea CQE adr=c001ddb9a800 ofs=
03000263 408040e0
Sep 29 16:16:23 newhamburg kernel: ehea CQE adr=c001ddb9a810 ofs=0010
e10f002a 0800
Sep 29 16:16:23 newhamburg kernel: ehea CQE adr=c001ddb9a820 ofs=0020
 
Sep 29 16:16:23 newhamburg kernel: ehea CQE adr=c001ddb9a830 ofs=0030
 
Sep 29 21:50:04 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error for QP 16
Sep 29 21:50:04 newhamburg kernel: ehea CQE adr=c001dd9c0700 ofs=
 20804076
Sep 29 21:50:04 newhamburg kernel: ehea CQE adr=c001dd9c0710 ofs=0010
fb42002a 0700
Sep 29 21:50:04 newhamburg kernel: ehea CQE adr=c001dd9c0720 ofs=0020
 
Sep 29 21:50:04 newhamburg kernel: ehea CQE adr=c001dd9c0730 ofs=0030
 
Sep 30 03:55:49 newhamburg kernel: ehea: Error in ehea_treat_poll_error:
CQE Error

Re: [PATCH] properly reserve in bootmem the lmb reserved regions that cross numa nodes

2008-10-06 Thread Jon Tollefson
Kumar Gala wrote:
> Out of interest how to do you guys represent NUMA regions of memory in
> the device tree?
>
> - k
Looking at the source code in numa.c I see at the start of
do_init_bootmem() that parse_numa_properties() is called.  It appears to
be looking at memory nodes and getting the node id from it.  It gets an
associativity property for the memory node and indexes that array with a
'min_common_depth' value to get the node id.

This node id is then used to setup the active ranges in the
early_node_map[].

Is this what you are asking about?  There are others I am sure who know
more about it then I though.

Jon

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: MPC8315ERDB PCI Express support status?

2008-10-06 Thread Kumar Gala


On Oct 6, 2008, at 8:42 AM, Leon Woestenberg wrote:


Hello all,


can Freescale or any of the powerpc maintainers indicate to what
extend PCI Express support for the MPC8315E processor has been merged
to Linux mainline, or what is still needs review or attention?

I could find u-boot and Linux patches provided by Freescale in their
open-source patch pool:

http://www.bitshrine.org/gpp/
http://www.bitshrine.org/gpp/linux-fsl-2.6.24.3-MPC8315ERDB-pcie-INTx-support.patch

but I could not easily identify what has been merged upstream.


My first goal (and hardware on my desk) would be to test an Intel PCIe
PRO/1000 Ethernet adapter, as a start to add a custom PCIe FPGA
device.


No PCI-e support for 83xx has been merged in any mainline kernel.

- k
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


MPC8315ERDB PCI Express support status?

2008-10-06 Thread Leon Woestenberg
Hello all,


can Freescale or any of the powerpc maintainers indicate to what
extend PCI Express support for the MPC8315E processor has been merged
to Linux mainline, or what is still needs review or attention?

I could find u-boot and Linux patches provided by Freescale in their
open-source patch pool:

http://www.bitshrine.org/gpp/
http://www.bitshrine.org/gpp/linux-fsl-2.6.24.3-MPC8315ERDB-pcie-INTx-support.patch

but I could not easily identify what has been merged upstream.


My first goal (and hardware on my desk) would be to test an Intel PCIe
PRO/1000 Ethernet adapter, as a start to add a custom PCIe FPGA
device.

Regards,
-- 
Leon
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: Before adding preiliminary support for Netstal HCU4 (PPC405 based) board

2008-10-06 Thread Geert Uytterhoeven
On Tue, 30 Sep 2008, Niklaus Giger wrote:
> The patch is against the master git of denx.de. It does not apply cleanly
> against linus' git as I cannot find there any include/asm-ppc subdirectory. 

{arch/,include-asm-}ppc/ has been removed, in favor of arch/powerpc/.

With kind regards,

Geert Uytterhoeven
Software Architect

Sony Techsoft Centre Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium

Phone:+32 (0)2 700 8453
Fax:  +32 (0)2 700 8622
E-mail:   [EMAIL PROTECTED]
Internet: http://www.sony-europe.com/

A division of Sony Europe (Belgium) N.V.
VAT BE 0413.825.160 · RPR Brussels
Fortis · BIC GEBABEBB · IBAN BE41293037680010___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev