RE: [PATCH] ibm_newemac: Add support for Arches CPU0 SGMII0 to CPU1SGMII0

2009-01-16 Thread Benjamin Herrenschmidt
On Fri, 2009-01-16 at 16:14 -0800, Victor Gallardo wrote:
> Hi Josh,
> 
> I see you are delegated for this patch submission any ideas when it will be 
> accepted.
> 
> http://patchwork.ozlabs.org/patch/6814/

Looks like it fell through the cracks.

Can you resend it to both our list and net...@vger.kernel.org ? Keep
CC'me, I'll ack it and then it will be up to the networking folks to
pick it up.

Cheers,
Ben.


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


RE: [PATCH] ibm_newemac: Add support for Arches CPU0 SGMII0 to CPU1SGMII0

2009-01-16 Thread Victor Gallardo
Hi Josh,

I see you are delegated for this patch submission any ideas when it will be 
accepted.

http://patchwork.ozlabs.org/patch/6814/

Thanks,

-Victor Gallardo

-Original Message-
From: linuxppc-dev-bounces+vgallardo=amcc@ozlabs.org 
[mailto:linuxppc-dev-bounces+vgallardo=amcc@ozlabs.org] On Behalf Of Victor 
Gallardo
Sent: Monday, November 10, 2008 10:07 AM
To: Josh Boyer; b...@kernel.crashing.org
Cc: linuxppc-dev@ozlabs.org
Subject: RE: [PATCH] ibm_newemac: Add support for Arches CPU0 SGMII0 to 
CPU1SGMII0

Hello Josh and Ben,

Who should I ask to get this patch integrated into the Linux tree?
http://ozlabs.org/pipermail/linuxppc-dev/2008-November/064834.html

Thanks,

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


Re: [PATCH] infiniband/ehca: use consistent type

2009-01-16 Thread Stephen Rothwell
Hi Roland,

On Fri, 16 Jan 2009 14:51:30 -0800 Roland Dreier  wrote:
>
>  > Sorry to appear picky, but how is that different from the patch "powerpc:
>  > cleanup from powerpc l64 to ll64 change: drivers/infiniband" that I sent
>  > to you on Jan 7?
> 
> Well, I didn't lose my version and forget all about it ;)

I figured it was something simple.

> Seriously, I must have lost that patch, sorry about that.  I'll dig it
> out and replace mine so you get credit.

Thanks.  /me needs all the credit he can get :-)

-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/


pgpdpzhnuOeeq.pgp
Description: PGP signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: [PATCH] infiniband/ehca: use consistent type

2009-01-16 Thread Roland Dreier
 > Sorry to appear picky, but how is that different from the patch "powerpc:
 > cleanup from powerpc l64 to ll64 change: drivers/infiniband" that I sent
 > to you on Jan 7?

Well, I didn't lose my version and forget all about it ;)

Seriously, I must have lost that patch, sorry about that.  I'll dig it
out and replace mine so you get credit.

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


Re: [PATCH] infiniband/ehca: use consistent type

2009-01-16 Thread Stephen Rothwell
Hi Roland,

On Fri, 16 Jan 2009 14:36:27 -0800 Roland Dreier  wrote:
>
> I'm going to apply this for 2.6.29, since the change to the u64 type
> went upstream, so ehca spews a bunch of warnings now.

Thanks.

> I'll also add the following patch to fix all the printk format warnings:
> 
> IB/ehca: Fix printk format warnings from u64 type change

Sorry to appear picky, but how is that different from the patch "powerpc:
cleanup from powerpc l64 to ll64 change: drivers/infiniband" that I sent
to you on Jan 7?

-- 
Cheers,
Stephen Rothwells...@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/


pgpYc6UOcpEmq.pgp
Description: PGP signature
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Re: [PATCH] infiniband/ehca: use consistent type

2009-01-16 Thread Roland Dreier
I'm going to apply this for 2.6.29, since the change to the u64 type
went upstream, so ehca spews a bunch of warnings now.

I'll also add the following patch to fix all the printk format warnings:

IB/ehca: Fix printk format warnings from u64 type change

Commit fe21 ("powerpc: Change u64/s64 to a long long integer
type") changed u64 from unsigned long to unsigned long long, which
means that printk formats for printing u64 values should use "ll"
instead of "l" to avoid warnings.  Fix all the places affected by this
in ehca.

Signed-off-by: Roland Dreier 
---
 drivers/infiniband/hw/ehca/ehca_cq.c |   16 ++--
 drivers/infiniband/hw/ehca/ehca_hca.c|2 +-
 drivers/infiniband/hw/ehca/ehca_irq.c|   18 ++--
 drivers/infiniband/hw/ehca/ehca_main.c   |6 +-
 drivers/infiniband/hw/ehca/ehca_mcast.c  |4 +-
 drivers/infiniband/hw/ehca/ehca_mrmw.c   |  144 +++---
 drivers/infiniband/hw/ehca/ehca_qp.c |   32 
 drivers/infiniband/hw/ehca/ehca_reqs.c   |2 +-
 drivers/infiniband/hw/ehca/ehca_sqp.c|2 +-
 drivers/infiniband/hw/ehca/ehca_tools.h  |2 +-
 drivers/infiniband/hw/ehca/ehca_uverbs.c |2 +-
 drivers/infiniband/hw/ehca/hcp_if.c  |   30 +++---
 12 files changed, 130 insertions(+), 130 deletions(-)

diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c 
b/drivers/infiniband/hw/ehca/ehca_cq.c
index 2f4c28a..97e4b23 100644
--- a/drivers/infiniband/hw/ehca/ehca_cq.c
+++ b/drivers/infiniband/hw/ehca/ehca_cq.c
@@ -196,7 +196,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int 
cqe, int comp_vector,
 
if (h_ret != H_SUCCESS) {
ehca_err(device, "hipz_h_alloc_resource_cq() failed "
-"h_ret=%li device=%p", h_ret, device);
+"h_ret=%lli device=%p", h_ret, device);
cq = ERR_PTR(ehca2ib_return_code(h_ret));
goto create_cq_exit2;
}
@@ -232,7 +232,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int 
cqe, int comp_vector,
 
if (h_ret < H_SUCCESS) {
ehca_err(device, "hipz_h_register_rpage_cq() failed "
-"ehca_cq=%p cq_num=%x h_ret=%li counter=%i "
+"ehca_cq=%p cq_num=%x h_ret=%lli counter=%i "
 "act_pages=%i", my_cq, my_cq->cq_number,
 h_ret, counter, param.act_pages);
cq = ERR_PTR(-EINVAL);
@@ -244,7 +244,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int 
cqe, int comp_vector,
if ((h_ret != H_SUCCESS) || vpage) {
ehca_err(device, "Registration of pages not "
 "complete ehca_cq=%p cq_num=%x "
-"h_ret=%li", my_cq, my_cq->cq_number,
+"h_ret=%lli", my_cq, my_cq->cq_number,
 h_ret);
cq = ERR_PTR(-EAGAIN);
goto create_cq_exit4;
@@ -252,7 +252,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int 
cqe, int comp_vector,
} else {
if (h_ret != H_PAGE_REGISTERED) {
ehca_err(device, "Registration of page failed "
-"ehca_cq=%p cq_num=%x h_ret=%li "
+"ehca_cq=%p cq_num=%x h_ret=%lli "
 "counter=%i act_pages=%i",
 my_cq, my_cq->cq_number,
 h_ret, counter, param.act_pages);
@@ -266,7 +266,7 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int 
cqe, int comp_vector,
 
gal = my_cq->galpas.kernel;
cqx_fec = hipz_galpa_load(gal, CQTEMM_OFFSET(cqx_fec));
-   ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%lx",
+   ehca_dbg(device, "ehca_cq=%p cq_num=%x CQX_FEC=%llx",
 my_cq, my_cq->cq_number, cqx_fec);
 
my_cq->ib_cq.cqe = my_cq->nr_of_entries =
@@ -307,7 +307,7 @@ create_cq_exit3:
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 1);
if (h_ret != H_SUCCESS)
ehca_err(device, "hipz_h_destroy_cq() failed ehca_cq=%p "
-"cq_num=%x h_ret=%li", my_cq, my_cq->cq_number, h_ret);
+"cq_num=%x h_ret=%lli", my_cq, my_cq->cq_number, 
h_ret);
 
 create_cq_exit2:
write_lock_irqsave(&ehca_cq_idr_lock, flags);
@@ -355,7 +355,7 @@ int ehca_destroy_cq(struct ib_cq *cq)
h_ret = hipz_h_destroy_cq(adapter_handle, my_cq, 0);
if (h_ret == H_R_STATE) {
/* cq in err: read err data and destroy it forcibly */
-   ehca_dbg(device, "ehca_cq=%p cq_num=%x ressource=%lx in err "
+   ehca_dbg(device, "ehca_cq=%p cq_num=%x reso

Re: Re[2]: [PATCH 07/11] md: rewrite handle_stripe_dirtying6 in asynchronous way

2009-01-16 Thread Dan Williams
On Fri, Jan 16, 2009 at 7:24 AM, Yuri Tikhonov  wrote:
>> Ok, I now see why this change was made.  Please make this changelog
>> more descriptive than "Rewrite handle_stripe_dirtying6 function to
>> work asynchronously."
>
>  Sure, how about the following:
>
> "
>
>  md: rewrite handle_stripe_dirtying6 in asynchronous way
>
>  Processing stripe dirtying in asynchronous way requires some changes
> to the handle_stripe_dirtying6() algorithm.
>
>  In the synchronous implementation of the stripe dirtying we processed
> dirtying of a degraded stripe (with partially changed strip(s) located
> on the failed drive(s)) inside one handle_stripe_dirtying6() call:
> - we computed the missed strips from the old parities, and thus got
> the fully up-to-date stripe, then
> - we did reconstruction using the new data to write.
>
>  In the asynchronous case of handle_stripe_dirtying6() we don't
> process anything right inside this function (since we under the lock),
> but only schedule the necessary operations with flags. Thus, if
> handle_stripe_dirtying6() is performed on the top of a degraded array
> we should schedule the reconstruction operation when the failed strips
> are marked (by previously called fetch_block6()) as to be computed
> (with the R5_Wantcompute flag), and all the other strips of the stripe
> are UPTODATE. The schedule_reconstruction() function will set the
> STRIPE_OP_POSTXOR flag [for new parity calculation], which is then
> handled in raid_run_ops() after the STRIPE_OP_COMPUTE_BLK one [which
> causes computing of the data missed].
>
> "

Excellent!

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


Re: Re[2]: [PATCH 03/11][v3] async_tx: add support for asynchronous RAID6 recovery operations

2009-01-16 Thread Dan Williams
On Fri, Jan 16, 2009 at 4:51 AM, Yuri Tikhonov  wrote:
>  The reason why I preferred to use async_pq() instead of async_xor()
> here is to maximize the chance that the whole D+D recovery operation
> will be handled in one ADMA device, i.e. without channels switch and
> the latency introduced because of that.
>

This should be a function of the async_tx_find_channel implementation.
 The default version tries to keep a chain of operations on one
channel.

struct dma_chan *
__async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx,
enum dma_transaction_type tx_type)
{
/* see if we can keep the chain on one channel */
if (depend_tx &&
dma_has_cap(tx_type, depend_tx->chan->device->cap_mask))
return depend_tx->chan;
return dma_find_channel(tx_type);
}

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


Re: Re[2]: [PATCH 02/11][v3] async_tx: add support for asynchronous GF multiplication

2009-01-16 Thread Dan Williams
On Fri, Jan 16, 2009 at 4:41 AM, Yuri Tikhonov  wrote:
>> I don't think this will work as we will be mixing Q into the new P and
>> P into the new Q.  In order to support (src_cnt > device->max_pq) we
>> need to explicitly tell the driver that the operation is being
>> continued (DMA_PREP_CONTINUE) and to apply different coeffeicients to
>> P and Q to cancel the effect of including them as sources.
>
>  With DMA_PREP_ZERO_P/Q approach, the Q isn't mixed into new P, and P
> isn't mixed into new Q. For your example of max_pq=4:
>
>  p, q = PQ(src0, src1, src2, src3, src4, COEF({01}, {02}, {04}, {08}, {10}))
>
>  with the current implementation will be split into:
>
>  p, q = PQ(src0, src1, src2, src3, COEF({01}, {02}, {04}, {08})
>  p`,q` = PQ(src4, COEF({10}))
>
>  which will result to the following:
>
>  p = ((dma_flags & DMA_PREP_ZERO_P) ? 0 : old_p) + src0 + src1 + src2 + src3
>  q = ((dma_flags & DMA_PREP_ZERO_Q) ? 0 : old_q) + {01}*src0 + {02}*src1 + 
> {04}*src2 + {08}*src3
>
>  p` = p + src4
>  q` = q + {10}*src4
>

Huh?  Does the ppc440spe engine have some notion of flagging a source
as old_p/old_q?  Otherwise I do not see how the engine will not turn
this into:

p` = p + src4 + q
q` = q + {10}*src4 + {x}*p

I think you missed the fact that we have passed p and q back in as
sources.  Unless we have multiple p destinations and multiple q
destinations, or hardware support for continuations I do not see how
you can guarantee this split.

>  I'm afraid that the difference (13/4, 125/32) is very significant, so
> getting rid of DMA_PREP_ZERO_P/Q will eat most of the improvement
> which could be achieved with the current approach.

Data corruption is a slightly higher cost :-).

>
>>  but at this point I do not see a cleaner alternatve for engines like 
>> iop13xx.
>
>  I can't find any description of iop13xx processors at Intel's
> web-site, only 3xx:
>
> http://www.intel.com/design/iio/index.htm?iid=ipp_embed+embed_io
>
>  So, it's hard for me to do any suggestions. I just wonder - doesn't
> iop13xx allow users to program destination addresses into the sources
> fields of descriptors?

Yes it does, but the engine does not know it is a destination.

Take a look at page 496 of the following and tell me if you come to a
different conclusion.
http://download.intel.com/design/iio/docs/31503602.pdf

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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Jean-Michel Hautbois
2009/1/16 Scott Wood :
> Jean-Michel Hautbois wrote:
>>
>> OK, I just tried a make of my kernel (already compiled yesterday), and
>> it generated a cuImage.mpc8272ads kernel image (which it didn't do
>> yesterday).
>> I don't know why this image was generated, but I tried to reboot using
>> this one.
>
> Use uImage if you are providing a device tree from u-boot.  cuImage is for
> older u-boots that don't support this, though you could still try using it
> on a modern u-boot with a one- or two-argument bootm command to try to
> isolate the problem.
>
> -Scott
>

Well it seems to be a (very) bad idea to use ucImage, because I cannot
have my u-boot prompt after resetting my board...
My LEDs are blinking (LD4 and LD 9) and my LD20 is off (when it should be on).

I am blocked (without the prompt on my serial line !).
JM
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: Device Tree setup for 8272-based board

2009-01-16 Thread Scott Wood
On Fri, Jan 16, 2009 at 02:40:03PM +1100, Daniel Ng wrote:
> I've tried various values for 'console' but I'm quite certain 'ttyCPM0' is the
> one to use as this is what I was using when it was working with Linux 2.6.14
> and an old (pre-Device Tree) version of u-boot.

Yes, that is correct.  You can also leave it out and rely on
/chosen/linux,stdout-path.

> I've even tried enabling the 'Early serial debugging for Freescale CPM-based
> serial ports' option in the Kernel config. Unfortunately this doesn't result
> in any noticeable difference.
> 
> Can you explain why my board is freezing?
> 
> Here is my Device Tree. It is a stripped-down version of mpc8272ads.dts (PCI
> has been removed among many others). I have tried to minimise the tree just to
> keep things simple.
> 
> Perhaps I removed something I shouldn't have?-

You removed the brg node, but early debug output should still work
without it.

> /dts-v1/;
> 
> / {
> model = "HPXRED";
> compatible = "fsl,mpc8272ads";

Is it 100% compatible?  If not, change the compatible to something else
(and make sure your board code matches it).

Do you currently have mpc8272ads support enabled in the kernel?  If the
kernel doesn't find a matching ppc_md, you won't get any debug output. 

You can use udbg_printf() directly after the call to udbg_early_init()
though.

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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Scott Wood

Jean-Michel Hautbois wrote:

OK, I just tried a make of my kernel (already compiled yesterday), and
it generated a cuImage.mpc8272ads kernel image (which it didn't do
yesterday).
I don't know why this image was generated, but I tried to reboot using this one.


Use uImage if you are providing a device tree from u-boot.  cuImage is 
for older u-boots that don't support this, though you could still try 
using it on a modern u-boot with a one- or two-argument bootm command to 
try to isolate the problem.


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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Jean-Michel Hautbois
2009/1/16 Jean-Michel Hautbois :
> 2009/1/16 Scott Wood :
>> On Fri, Jan 16, 2009 at 01:06:06PM +0100, Jean-Michel Hautbois wrote:
>>> Could it be a problem in my bootargs command line ?
>>> I mean, maybe the console=ttyS0,11500 wrong ?
>>> Because my "Run" LED is on...
>>>
>>> I tried ttyS0, ttyCPM0, tty0.
>>
>> It should be ttyCPM0, or just leave it out and make sure that
>> /chosen/linux,stdout-path is set properly.
>>
>> Have you tried enabling early CPM debugging output?
>>
>> -Scott
>>
>
> Well, I have to say, yes, I tried:
> CONFIG_PPC_EARLY_DEBUG_CPM=y
> CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xf0001ff8
>
> I have also tried without specifying the console outpût:
> setenv bootargs root=/dev/ram rw
>
> Nothing more...
>
> JM
>

OK, I just tried a make of my kernel (already compiled yesterday), and
it generated a cuImage.mpc8272ads kernel image (which it didn't do
yesterday).
I don't know why this image was generated, but I tried to reboot using this one.

And I am going further !

Hit any key to stop autoboot:  0
## Booting kernel from Legacy Image at 0100 ...
   Image Name:   Linux-2.6.29-rc1-01197-g5a7b6e7-
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:1529877 Bytes =  1.5 MB
   Load Address: 0040
   Entry Point:  00400b94
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at ff98 ...
   Image Name:   Simple Embedded Linux Framework
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:1730966 Bytes =  1.7 MB
   Load Address: 
   Entry Point:  
   Verifying Checksum ... OK
## Flattened Device Tree blob at 0200
   Booting using the fdt blob at 0x200
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 039d7000, end 03b7d996 ... OK
   Loading Device Tree to 007fb000, end 007ff159 ... OK
Memory <- <0xd00dfeed 0x2000> (0MB)
ENET0: local-mac-address <- 00:00:00:00:00:7f
ENET1: local-mac-address <- 00:00:00:00:00:00
CPU clock-frequency <- 0x0 (0MHz)
CPU timebase-frequency <- 0x800 (0MHz)
CPU bus-frequency <- 0x2000 (0MHz)

zImage starting: loaded at 0x0040 (sp: 0x03b7ebe0)
Allocating 0x329908 bytes for kernel ...
gunzipping (0x <- 0x0040d000:0x007591d8)...done 0x308b0c bytes

Linux/PowerPC load:
Finalizing device tree... flat tree at 0x767300
id mach(): done
MMU:enter
MMU:hw init
MMU:mapin
MMU:setio
MMU:exit

I am stuck there, with my eth LEDs blinking...

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


Re: 2.6.28-rc9 panics with crashkernel=256M while booting

2009-01-16 Thread Dave Hansen
On Fri, 2009-01-16 at 17:46 +0530, Chandru wrote:
> On Thursday 15 January 2009 13:35:27 Chandru wrote:
> > Hello Dave, From the debug console output, if there is anything you can add
> > here, pls let me know.
> 
> As we can see from the console output here,  physbase isn't page aligned when 
> the panic occurs.  So we could as well send (start_pfn << PAGE_SHIFT) to 
> reserve_bootmem_node() instead of physbase. your thoughts ?.
> 
> Also end_pfn in mark_reserved_region_for_nid() is defined as 
> 
> unsigned long end_pfn = ((physbase + size) >> PAGE_SHIFT);
> 
> Does this refer to the pfn after the area that we are interested in ?.  We 
> have 
> atleast two fixes here,  
> 1. Limit start and end to bdata->node_min_pfn  and bdata->node_low_pfn in 
> reserve_bootmem_node() and add comments out in there that the caller of the 
> funtion should be aware of how much are they reserving. 
> 2. send (start_pfn << PAGE_SHIFT) to reserve_bootmem_node() instead of 
> physbase. 

Just looking at it, that calculation is OK.  But, there was one in your
dmesg that looked a page too long, like page 0x1001 instead of 0x1000.
I'd find out how that happened.

-- Dave

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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Jean-Michel Hautbois
2009/1/16 Scott Wood :
> On Fri, Jan 16, 2009 at 01:06:06PM +0100, Jean-Michel Hautbois wrote:
>> Could it be a problem in my bootargs command line ?
>> I mean, maybe the console=ttyS0,11500 wrong ?
>> Because my "Run" LED is on...
>>
>> I tried ttyS0, ttyCPM0, tty0.
>
> It should be ttyCPM0, or just leave it out and make sure that
> /chosen/linux,stdout-path is set properly.
>
> Have you tried enabling early CPM debugging output?
>
> -Scott
>

Well, I have to say, yes, I tried:
CONFIG_PPC_EARLY_DEBUG_CPM=y
CONFIG_PPC_EARLY_DEBUG_CPM_ADDR=0xf0001ff8

I have also tried without specifying the console outpût:
setenv bootargs root=/dev/ram rw

Nothing more...

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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Jean-Michel Hautbois
2009/1/16 Scott Wood :
> On Fri, Jan 16, 2009 at 01:06:06PM +0100, Jean-Michel Hautbois wrote:
>> Could it be a problem in my bootargs command line ?
>> I mean, maybe the console=ttyS0,11500 wrong ?
>> Because my "Run" LED is on...
>>
>> I tried ttyS0, ttyCPM0, tty0.
>
> It should be ttyCPM0, or just leave it out and make sure that
> /chosen/linux,stdout-path is set properly.
>
> Have you tried enabling early CPM debugging output?
>
> -Scott
>

No, I haven't tried it... How can I do it :) ?
/chosen/linux,stdout-path is set to  "/soc/cpm/ser...@11a00"

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


Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Scott Wood
On Fri, Jan 16, 2009 at 01:06:06PM +0100, Jean-Michel Hautbois wrote:
> Could it be a problem in my bootargs command line ?
> I mean, maybe the console=ttyS0,11500 wrong ?
> Because my "Run" LED is on...
> 
> I tried ttyS0, ttyCPM0, tty0.

It should be ttyCPM0, or just leave it out and make sure that
/chosen/linux,stdout-path is set properly.

Have you tried enabling early CPM debugging output?

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


Re[2]: [PATCH][v4] powerpc 44x: support for 256KB PAGE_SIZE

2009-01-16 Thread Yuri Tikhonov
Hello Milton,

On Friday, January 16, 2009 you wrote:

> On Jan 12, 2009, at 4:49 PM, Yuri Tikhonov wrote:

>> This patch adds support for 256KB pages on ppc44x-based boards.

> Another day, another comment.  The motivation for reply was the second
> comment below.

>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 84b8613..18f33ef 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -443,6 +443,19 @@ config PPC_64K_PAGES
>>   bool "64k page size" if 44x || PPC_STD_MMU_64
>>   select PPC_HAS_HASH_64K if PPC_STD_MMU_64
>>
>> +config PPC_256K_PAGES
>> + bool "256k page size" if 44x
>> + depends on !STDBINUTILS && !SHMEM

> depends on !STDBINUTILS && (!SHMEM || BROKEN)

> to identify that it is not fundamentally incompatable just not a chance
> of working without other changes.

 This makes sense.

[..]

>> +config STDBINUTILS
>> + bool "Using standard binutils settings"
>> + depends on 44x
>> + default y


> I think this should be

> config STDBINUTILS
> bool "Using standard binutils settings" if 44x
> default y

> that way we imply that all powerpc users are using the standard 
> binutils instead of only those using a 44x platform.  We still get the
> intended effect of asking the user only on 44x.

> I haven't looked at the resulting question or config order to see if it
> makes sense to leave it here or put it closer to the page size.

 I'm not sure about this. For 44x platforms - the STDBINUTILS option 
is reasonable, because it's used in the PAGE_SIZE selection process. 
But as regarding the other powerpcs the STDBINUTILS option will do 
nothing, but taking a superfluous string in configs. Are you sure this 
will be better ?

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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


Re: [PATCH][v4] powerpc 44x: support for 256KB PAGE_SIZE

2009-01-16 Thread Milton Miller

On Jan 12, 2009, at 4:49 PM, Yuri Tikhonov wrote:


This patch adds support for 256KB pages on ppc44x-based boards.


Another day, another comment.  The motivation for reply was the second 
comment below.




diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 84b8613..18f33ef 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -443,6 +443,19 @@ config PPC_64K_PAGES
bool "64k page size" if 44x || PPC_STD_MMU_64
select PPC_HAS_HASH_64K if PPC_STD_MMU_64

+config PPC_256K_PAGES
+   bool "256k page size" if 44x
+   depends on !STDBINUTILS && !SHMEM


depends on !STDBINUTILS && (!SHMEM || BROKEN)

to identify that it is not fundamentally incompatable just not a chance 
of working without other changes.



+   help
+ Make the page size 256k.
+
+ As the ELF standard only requires alignment to support page
+ sizes up to 64k, you will need to compile all of your user
+ space applications with a non-standard binutils settings
+ (see the STDBINUTILS description for details).
+
+ Say N unless you know what you are doing.
+
 endchoice

 config FORCE_MAX_ZONEORDER



diff --git a/arch/powerpc/platforms/44x/Kconfig 
b/arch/powerpc/platforms/44x/Kconfig

index 3496bc0..d02e8c8 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -214,6 +214,18 @@ config 440SPe
bool
select IBM_NEW_EMAC_EMAC4

+config STDBINUTILS
+   bool "Using standard binutils settings"
+   depends on 44x
+   default y



I think this should be

config STDBINUTILS
bool "Using standard binutils settings" if 44x
default y

that way we imply that all powerpc users are using the standard 
binutils instead of only those using a 44x platform.  We still get the 
intended effect of asking the user only on 44x.


I haven't looked at the resulting question or config order to see if it 
makes sense to leave it here or put it closer to the page size.




+   help
+	  Turning this option off allows you to select 256KB PAGE_SIZE on 
44x.

+ Note, that kernel will be able to run only those applications,
+ which had been compiled using binutils later than 2.17.50.0.3 with
+ '-zmax-page-size' set to 256K (the default is 64K). Or, if using
+ the older binutils, you can patch them with a trivial patch, which
+ changes the ELF_MAXPAGESIZE definition from 0x1 to 0x4.
+
 config 460EX
bool
select PPC_FPU
--
1.6.0.6


milton

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


Re[2]: [PATCH 07/11] md: rewrite handle_stripe_dirtying6 in asynchronous way

2009-01-16 Thread Yuri Tikhonov

Hello Cheng,

On Friday, January 16, 2009 you wrote:

> Ack, could you please make the changelog more descriptive?
> and or add some of your benchmark results?

 Of course. We did benchmarking using the Xdd tool like follows:

# xdd -op write -kbytes $kbytes -reqsize $reqsize -dio-passes 2 –verbose 
-target $target_device

 where

$kbytes = data disks * size of disk
$reqsize= data disks * chunk size
$target_device = /dev/md0

 This way we did write of full array size, and thus achieved the 
maximum performance.

 The test cases were RAID-6 built on the top of 14 S-ATA drives 
connected to 2 LSI cards (7+7) inserted into the 800 MHz Katmai board 
(based on ppc440spe) equipped with 4GB of 800 MHz DRAM .

 Here are the results (Psw - write throughput with s/w RAID-6; Phw - 
write throughput with the h/w accelerated RAID-6):

 PAGE_SIZE=4KB, chunk=64/128/256 KB
Psw = 71/72/74 MBps
Phw = 128/136/139 MBps

 PAGE_SIZE=16KB, chunk=256/512/1024 KB
Psw = 81/81/82 MBps
Phw = 205/244/239 MBps

 PAGE_SIZE=64KB, chunk=1024/2048/4096 KB
Psw = 84/84/85 MBps
Phw = 258/253/258 MBps

 PAGE_SIZE=256KB, chunk=4096/8192/16384 KB
Psw = 81/83/83 MBps
Phw = 288/275/274 MBps

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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

Re[2]: [PATCH 07/11] md: rewrite handle_stripe_dirtying6 in asynchronous way

2009-01-16 Thread Yuri Tikhonov
On Friday, January 16, 2009 you wrote:

> On Thu, Jan 15, 2009 at 2:51 PM, Dan Williams  
> wrote:
>> On Mon, Dec 8, 2008 at 2:57 PM, Yuri Tikhonov  wrote:
>> What's the reasoning behind changing the logic here, i.e. removing
>> must_compute and such?  I'd feel more comfortable seeing copy and
>> paste where possible with cleanups separated out into their own patch.
>>

> Ok, I now see why this change was made.  Please make this changelog
> more descriptive than "Rewrite handle_stripe_dirtying6 function to
> work asynchronously."

 Sure, how about the following:

"

 md: rewrite handle_stripe_dirtying6 in asynchronous way

 Processing stripe dirtying in asynchronous way requires some changes 
to the handle_stripe_dirtying6() algorithm.

 In the synchronous implementation of the stripe dirtying we processed 
dirtying of a degraded stripe (with partially changed strip(s) located 
on the failed drive(s)) inside one handle_stripe_dirtying6() call:
- we computed the missed strips from the old parities, and thus got 
the fully up-to-date stripe, then
- we did reconstruction using the new data to write.

 In the asynchronous case of handle_stripe_dirtying6() we don't 
process anything right inside this function (since we under the lock), 
but only schedule the necessary operations with flags. Thus, if 
handle_stripe_dirtying6() is performed on the top of a degraded array 
we should schedule the reconstruction operation when the failed strips 
are marked (by previously called fetch_block6()) as to be computed 
(with the R5_Wantcompute flag), and all the other strips of the stripe 
are UPTODATE. The schedule_reconstruction() function will set the 
STRIPE_OP_POSTXOR flag [for new parity calculation], which is then 
handled in raid_run_ops() after the STRIPE_OP_COMPUTE_BLK one [which 
causes computing of the data missed].

"

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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


Re: 2.6.28-rc9 panics with crashkernel=256M while booting

2009-01-16 Thread Chandru
On Thursday 15 January 2009 13:35:27 Chandru wrote:
> Hello Dave, From the debug console output, if there is anything you can add
> here, pls let me know.

As we can see from the console output here,  physbase isn't page aligned when 
the panic occurs.  So we could as well send (start_pfn << PAGE_SHIFT) to 
reserve_bootmem_node() instead of physbase. your thoughts ?.

Also end_pfn in mark_reserved_region_for_nid() is defined as 

unsigned long end_pfn = ((physbase + size) >> PAGE_SHIFT);

Does this refer to the pfn after the area that we are interested in ?.  We have 
atleast two fixes here,  
1. Limit start and end to bdata->node_min_pfn  and bdata->node_low_pfn in 
reserve_bootmem_node() and add comments out in there that the caller of the 
funtion should be aware of how much are they reserving. 
2. send (start_pfn << PAGE_SHIFT) to reserve_bootmem_node() instead of 
physbase. 

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


Re[2]: [PATCH 11/11][v2] ppc440spe-adma: ADMA driver for PPC440SP(e) systems

2009-01-16 Thread Yuri Tikhonov

 Hello Anton,

 Thanks for review. Please note the general note I made in "Re[2]: 
[PATCH 11/11][v2] ppc440spe-adma: ADMA driver for PPC440SP(e) 
systems".

 All your comments make sense, so we'll try to address these in the 
next version of the driver. Some comments below.

On Thursday, January 15, 2009 you wrote:

> Hello Yuri,

> On Tue, Jan 13, 2009 at 03:43:55AM +0300, Yuri Tikhonov wrote:
>> Adds the platform device definitions and the architecture specific support
>> routines for the ppc440spe adma driver.
>> 
>> Any board equipped with PPC440SP(e) controller may utilize this driver.
>> 
>> Signed-off-by: Yuri Tikhonov 
>> Signed-off-by: Ilya Yanok 
>> ---

> Quite complex and interesting driver, I must say.
> Have you thought about splitting ppc440spe-adma.c into multiple
> files, btw?

 Admittedly, no. But I guess this makes sense. The driver supports two 
different types of DMA devices of ppc440spe: DMA0,1 and DMA2[XOR 
engine]. So, we could split the driver at least in two, which would 
definitely simplified the code. 

> A few comments down below...

> [...]
>> +typedef struct ppc440spe_adma_device {

> Please avoid typedefs.

 OK.

> [...]
>> +/*
>> + * Descriptor of allocated CDB
>> + */
>> +typedef struct {
>> + dma_cdb_t   *vaddr; /* virtual address of CDB */
>> + dma_addr_t  paddr;  /* physical address of CDB */
>> + /*
>> +  * Additional fields
>> +  */
>> + struct list_headlink;   /* link in processing list */
>> + u32 status; /* status of the CDB */
>> + /* status bits:  */
>> + #define DMA_CDB_DONE(1<<0)  /* CDB processing competed */
>> + #define DMA_CDB_CANCEL  (1<<1)  /* waiting thread was interrupted */
>> +} dma_cdbd_t;

> It seems there are no users of this struct.

 Indeed. This is an useless inheritance of some old version of the 
driver. Will remove this in the next patch.

[..]

>> +/**
>> + * ppc440spe_desc_init_dma01pq - initialize the descriptors for PQ operation
>> + * qith DMA0/1
>> + */
>> +static inline void ppc440spe_desc_init_dma01pq(ppc440spe_desc_t *desc,
>> + int dst_cnt, int src_cnt, unsigned long flags,
>> + unsigned long op)
>> +{

> Way to big for inline. The same for all the inlines.

> Btw, ppc_async_tx_find_best_channel() looks too big for inline
> and also too big to be in a .h file.

 OK, will be moved to the appropriate .c.

[..]

> [...]
>> +static int ppc440spe_test_raid6 (ppc440spe_ch_t *chan)
>> +{
>> + ppc440spe_desc_t *sw_desc, *iter;
>> + struct page *pg;
>> + char *a;
>> + dma_addr_t dma_addr, addrs[2];
>> + unsigned long op = 0;
>> + int rval = 0;
>> +
>> + /*FIXME*/

> ?

>> +
>> + set_bit(PPC440SPE_DESC_WXOR, &op);
>> +
>> + pg = alloc_page(GFP_KERNEL);
>> + if (!pg)
>> + return -ENOMEM;
>> +

>> +
>> +/**
>> + * ppc440spe_adma_probe - probe the asynch device
>> + */
>> +static int __devinit ppc440spe_adma_probe(struct platform_device *pdev)
>> +{
>> + struct resource *res;

> Why is this a platform driver? What's the point of describing
> DMA nodes in the device tree w/o actually using them (don't count
> interrupts)? There are a lot of hard-coded addresses in the code...
> :-/

> And arch/powerpc/platforms/44x/ppc440spe_dma_engines.c file
> reminds me arch/ppc-style bindings. ;-)

 Right. This driver is a not-completed port from the arch/ppc branch.

>> + int ret=0, irq1, irq2, initcode = PPC_ADMA_INIT_OK;
>> + void *regs;
>> + ppc440spe_dev_t *adev;
>> + ppc440spe_ch_t *chan;
>> + ppc440spe_aplat_t *plat_data;
>> + struct ppc_dma_chan_ref *ref;
>> + struct device_node *dp;
>> + char s[10];
>> +

> [...]
>> +static int __init ppc440spe_adma_init (void)
>> +{
>> + int rval, i;
>> + struct proc_dir_entry *p;
>> +
>> + for (i = 0; i < PPC440SPE_ADMA_ENGINES_NUM; i++)
>> + ppc_adma_devices[i] = -1;
>> +
>> + rval = platform_driver_register(&ppc440spe_adma_driver);
>> +
>> + if (rval == 0) {
>> + /* Create /proc entries */
>> + ppc440spe_proot = proc_mkdir(PPC440SPE_R6_PROC_ROOT, NULL);
>> + if (!ppc440spe_proot) {
>> + printk(KERN_ERR "%s: failed to create %s proc "
>> + "directory\n",__func__,PPC440SPE_R6_PROC_ROOT);
>> + /* User will not be able to enable h/w RAID-6 */
>> + return rval;
>> + }

> /proc? Why /proc? The driver has nothing to do with Linux VM subsystem
> or processes. I think /sys/ interface would suit better for this, no?
> Either way, userspace interfaces should be documented somehow
> (probably Documentation/ABI/, or at least some comments in the
> code).

 Agree, we'll fix this.

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

___
Linuxppc-dev mailing list
Linuxppc-dev@

Re: [MPC8272ADS]Cannot start my Linux Kernel

2009-01-16 Thread Jean-Michel Hautbois
>> try to fix "ft_cpu_setup()" in your u-boot source for mpc8272ads
>> and use "PowerPC,8...@0" as cpu_path instead of "c...@0".
>>
>> Best regards,
>> Anatolij
>
I am currently going until this step:

## Booting kernel from Legacy Image at 0040 ...
   Image Name:   Linux-2.6.29-rc1-01197-g5a7b6e7-
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:1505515 Bytes =  1.4 MB
   Load Address: 
   Entry Point:  
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at ff98 ...
   Image Name:   Simple Embedded Linux Framework
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:1730966 Bytes =  1.7 MB
   Load Address: 
   Entry Point:  
   Verifying Checksum ... OK
## Flattened Device Tree blob at 0200
   Booting using the fdt blob at 0x200
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 039d7000, end 03b7d996 ... OK
   Loading Device Tree to 007fb000, end 007ff159 ... OK


Could it be a problem in my bootargs command line ?
I mean, maybe the console=ttyS0,11500 wrong ?
Because my "Run" LED is on...

I tried ttyS0, ttyCPM0, tty0.
And I don't have any "Starting kernel..." message.

Thx in advance.
Best Regards,
JM
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re[2]: [PATCH 03/11][v3] async_tx: add support for asynchronous RAID6 recovery operations

2009-01-16 Thread Yuri Tikhonov

On Thursday, January 15, 2009 Dan Williams wrote:

> On Mon, Jan 12, 2009 at 5:43 PM, Yuri Tikhonov  wrote:
>> +   /* (2) Calculate Q+Qxy */
>> +   lptrs[0] = ptrs[failb];
>> +   lptrs[1] = ptrs[disks-1];
>> +   lptrs[2] = NULL;
>> +   tx = async_pq(lptrs, NULL, 0, 1, bytes, ASYNC_TX_DEP_ACK,
>> + tx, NULL, NULL);
>> +
>> +   /* (3) Calculate P+Pxy */
>> +   lptrs[0] = ptrs[faila];
>> +   lptrs[1] = ptrs[disks-2];
>> +   lptrs[2] = NULL;
>> +   tx = async_pq(lptrs, NULL, 0, 1, bytes, ASYNC_TX_DEP_ACK,
>> + tx, NULL, NULL);
>> +

> These two calls convinced me that ASYNC_TX_PQ_ZERO_{P,Q} need to go.
> A 1-source async_pq operation does not make sense.

 Another source is hidden under not-set ASYNC_TX_PQ_ZERO_{P,Q} :) 
Though, I agree, this looks rather misleading.

>   These should be:

>/* (2) Calculate Q+Qxy */
>lptrs[0] = ptrs[disks-1];
>lptrs[1] = ptrs[failb];
>tx = async_xor(lptrs[0], lptrs, 0, 2, bytes,
>   ASYNC_TX_XOR_DROP_DST|ASYNC_TX_DEP_ACK, tx, NULL, NULL);

> /* (3) Calculate P+Pxy */
>lptrs[0] = ptrs[disks-2];
>lptrs[1] = ptrs[faila];
>tx = async_xor(lptrs[0], lptrs, 0, 2, bytes,
>   ASYNC_TX_XOR_DROP_DST|ASYNC_TX_DEP_ACK, tx, NULL, NULL);


 The reason why I preferred to use async_pq() instead of async_xor() 
here is to maximize the chance that the whole D+D recovery operation 
will be handled in one ADMA device, i.e. without channels switch and 
the latency introduced because of that.

 So, if we'll decide to stay with ASYNC_TX_PQ_ZERO_{P,Q}, then this 
should be probably kept unchanged, but if we'll get rid of 
ASYNC_TX_PQ_ZERO_{P,Q}, then, obviously, we'll have to use 
async_xor()s here as you suggest.


 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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


Re[2]: [PATCH 02/11][v3] async_tx: add support for asynchronous GF multiplication

2009-01-16 Thread Yuri Tikhonov

 Hello Dan,

 Thanks for review. Some comments below.

On Thursday, January 15, 2009 you wrote:

[..]

>> +/**
>> + * do_async_pq - asynchronously calculate P and/or Q
>> + */
>> +static struct dma_async_tx_descriptor *
>> +do_async_pq(struct dma_chan *chan, struct page **blocks, unsigned char 
>> *scfs,
>> +   unsigned int offset, int src_cnt, size_t len, enum async_tx_flags 
>> flags,
>> +   struct dma_async_tx_descriptor *depend_tx,
>> +   dma_async_tx_callback cb_fn, void *cb_param)
>> +{
>> +   struct dma_device *dma = chan->device;
>> +   dma_addr_t dma_dest[2], dma_src[src_cnt];
>> +   struct dma_async_tx_descriptor *tx = NULL;
>> +   dma_async_tx_callback _cb_fn;
>> +   void *_cb_param;
>> +   unsigned char *scf = NULL;
>> +   int i, src_off = 0;
>> +   unsigned short pq_src_cnt;
>> +   enum async_tx_flags async_flags;
>> +   enum dma_ctrl_flags dma_flags = 0;
>> +
>> +   /*  If we won't handle src_cnt in one shot, then the following
>> +* flag(s) will be set only on the first pass of prep_dma
>> +*/
>> +   if (flags & ASYNC_TX_PQ_ZERO_P)
>> +   dma_flags |= DMA_PREP_ZERO_P;
>> +   if (flags & ASYNC_TX_PQ_ZERO_Q)
>> +   dma_flags |= DMA_PREP_ZERO_Q;
>> +
>> +   /* DMAs use destinations as sources, so use BIDIRECTIONAL mapping */
>> +   if (blocks[src_cnt]) {
>> +   dma_dest[0] = dma_map_page(dma->dev, blocks[src_cnt],
>> +  offset, len, DMA_BIDIRECTIONAL);
>> +   dma_flags |= DMA_PREP_HAVE_P;
>> +   }
>> +   if (blocks[src_cnt+1]) {
>> +   dma_dest[1] = dma_map_page(dma->dev, blocks[src_cnt+1],
>> +  offset, len, DMA_BIDIRECTIONAL);
>> +   dma_flags |= DMA_PREP_HAVE_Q;
>> +   }
>> +
>> +   for (i = 0; i < src_cnt; i++)
>> +   dma_src[i] = dma_map_page(dma->dev, blocks[i],
>> + offset, len, DMA_TO_DEVICE);
>> +
>> +   while (src_cnt) {
>> +   async_flags = flags;
>> +   pq_src_cnt = min(src_cnt, (int)dma->max_pq);
>> +   /* if we are submitting additional pqs, leave the chain open,
>> +* clear the callback parameters, and leave the destination
>> +* buffers mapped
>> +*/
>> +   if (src_cnt > pq_src_cnt) {
>> +   async_flags &= ~ASYNC_TX_ACK;
>> +   dma_flags |= DMA_COMPL_SKIP_DEST_UNMAP;
>> +   _cb_fn = NULL;
>> +   _cb_param = NULL;
>> +   } else {
>> +   _cb_fn = cb_fn;
>> +   _cb_param = cb_param;
>> +   }
>> +   if (_cb_fn)
>> +   dma_flags |= DMA_PREP_INTERRUPT;
>> +   if (scfs)
>> +   scf = &scfs[src_off];
>> +
>> +   /* Since we have clobbered the src_list we are committed
>> +* to doing this asynchronously.  Drivers force forward
>> +* progress in case they can not provide a descriptor
>> +*/
>> +   tx = dma->device_prep_dma_pq(chan, dma_dest,
>> +&dma_src[src_off], pq_src_cnt,
>> +scf, len, dma_flags);
>> +   if (unlikely(!tx))
>> +   async_tx_quiesce(&depend_tx);
>> +
>> +   /* spin wait for the preceeding transactions to complete */
>> +   while (unlikely(!tx)) {
>> +   dma_async_issue_pending(chan);
>> +   tx = dma->device_prep_dma_pq(chan, dma_dest,
>> +   &dma_src[src_off], pq_src_cnt,
>> +   scf, len, dma_flags);
>> +   }
>> +
>> +   async_tx_submit(chan, tx, async_flags, depend_tx,
>> +   _cb_fn, _cb_param);
>> +
>> +   depend_tx = tx;
>> +   flags |= ASYNC_TX_DEP_ACK;
>> +
>> +   if (src_cnt > pq_src_cnt) {
>> +   /* drop completed sources */
>> +   src_cnt -= pq_src_cnt;
>> +   src_off += pq_src_cnt;
>> +
>> +   /* use the intermediate result as a source; we
>> +* clear DMA_PREP_ZERO, so prep_dma_pq will
>> +* include destination(s) into calculations. Thus
>> +* keep DMA_PREP_HAVE_x in dma_flags only
>> +*/
>> +   dma_flags &= (DMA_PREP_HAVE_P | DMA_PREP_HAVE_Q);

> I don't think this will work as we will be mixing Q into the new P and
> P into the new Q.  In order to support (src_cnt > device->max_pq) we
> need to explicitly tell the driver that the operation is being
> conti

Re: [PATCH] cpm2: Round the baud-rate clock divider to the nearest integer.

2009-01-16 Thread Laurent Pinchart
On Thursday 15 January 2009 19:57:44 Kumar Gala wrote:
> On Jan 15, 2009, at 11:54 AM, Scott Wood wrote:
> > On Thu, Jan 15, 2009 at 03:58:50PM +0100, Laurent Pinchart wrote:
> >> On Thursday 15 January 2009 15:42:14 Kumar Gala wrote:
> >>> On Jan 15, 2009, at 7:18 AM, Laurent Pinchart wrote:
>  2.6.29-rc1 is out and I haven't seen the patch being applied
>  anywhere. Is there any blocking issue ?
> >>>
> >>> I wasn't sure if you and Scott had come to resolution on the
> >>> rounding
> >>> issue.
> >>
> >> I think we have. Scott, can you confirm ?
> >
> > I think the patch is correct, and I need to look into why it gives me
> > problems on mpc8272ads (while solving similar issues on some other
> > boards).
>
> Ok.
>
> Laurent,
>
> Is this critical for 2.6.29 or ok if I queue for .30?

You can queue the patch for 2.6.30. Just don't forget this time ;-)

-- 
Laurent Pinchart
CSE Semaphore Belgium

Chaussee de Bruxelles, 732A
B-1410 Waterloo
Belgium

T +32 (2) 387 42 59
F +32 (2) 387 42 75
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH RFC v5] net: add PCINet driver

2009-01-16 Thread Jan-Bernd Themann
Hi!

Ira Snyder  wrote on 15.01.2009 22:40:56:

> On Thu, Jan 15, 2009 at 10:22:53PM +0100, Arnd Bergmann wrote:
> > On Thursday 15 January 2009, Ira Snyder wrote:
> > > I have another question for you Arnd.
> > > 
> > > What did you use as the host and guest drivers when you ran virtio 
over
> > > PCI? Did you use two unmodified instances of virtio_net (one on 
host,
> > > one on guest) for networking, or did you write new virtio drivers 
for
> > > those? How about for virtio_console (if you ran it at all).

In addition to what Arnd already told you: 
We used two (almost) unmodified instances of virtio_net. When we tested 
this
driver we modified the change_mtu function slightly as this function was 
not implemented
properly (for our purpose) at that time. 

> > 
> > Jan-Bernd may be able to tell you details about this, and send you the
> > driver code that his interns implemented for it.
> > This was only doing virtio_net between two machines using MMIO 
transfers,
> > i.e. the DMA engine was unused, but there was a mailbox interrupt (if 
you
> > have one of these, you won't need MSI, btw -- just write a DMA to it).
> > 
> 
> Thanks. Jan-Bernd, I'm looking forward to any input you have.
> 

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

Re[2]: [RFC PATCH 00/11][v3] md: support for asynchronous execution of RAID6 operations

2009-01-16 Thread Yuri Tikhonov

 Hello Dan,

On Wednesday, January 14, 2009 you wrote:

[..]

> Do you have a git tree where you can post this series?  That would
> make it easier for me to track/review.

 Yes.

 Please see the "raidstuff" branch in the linux-2.6-denx repository:

http://git.denx.de/?p=linux-2.6-denx.git;a=shortlog;h=refs/heads/raidstuff

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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


Re[2]: [PATCH 11/11][v2] ppc440spe-adma: ADMA driver for PPC440SP(e) systems

2009-01-16 Thread Yuri Tikhonov

 Hello David,

 Thanks a lot for review.

 The general note to be made here is that the changes to the DTS file 
made by this patch are necessary for a ppc440spe ADMA driver, which is 
a not-completed arch/powerpc port from the arch/ppc branch, and which 
uses DT (well, incorrectly) just to get interrupts. Otherwise, it's 
just a platform device driver.

 We provided this ADMA driver just as the reference of driver, which 
implements the RAID-6 related low-level stuff. ppc440spe ADMA in its 
current state is far from ready for merging. We'll elaborate on its 
cleaning up then (surely, taking into account all the comments made 
from community). But, even now, the driver works, so we publish this 
so interested people could use and test it.

 Some comments mixed in below.

On Tuesday, January 13, 2009 you wrote:

> On Tue, Jan 13, 2009 at 03:43:55AM +0300, Yuri Tikhonov wrote:
>> Adds the platform device definitions and the architecture specific support
>> routines for the ppc440spe adma driver.
>> 
>> Any board equipped with PPC440SP(e) controller may utilize this driver.
>> 
>> diff --git a/arch/powerpc/boot/dts/katmai.dts 
>> b/arch/powerpc/boot/dts/katmai.dts
>> index 077819b..f2f77c8 100644
>> --- a/arch/powerpc/boot/dts/katmai.dts
>> +++ b/arch/powerpc/boot/dts/katmai.dts
>> @@ -16,7 +16,7 @@
>>  
>>  / {
>>   #address-cells = <2>;
>> - #size-cells = <1>;
>> + #size-cells = <2>;

> You've changed the root level size-cells, but haven't updated the
> sub-nodes (such as /memory) accordingly.

 Thanks, we'll fix this in the next version of this patch.

>>   model = "amcc,katmai";
>>   compatible = "amcc,katmai";
>>   dcr-parent = <&{/cpus/c...@0}>;
>> @@ -392,6 +392,30 @@
>>   0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int 
>> C */
>>   0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int 
>> D */>;
>>   };
>> + DMA0: dma0 {

> No 'compatible' property, which seems dubious.

 OK, we'll fix.

>> + interrupt-parent = <&DMA0>;
>> + interrupts = <0 1>;
>> + #interrupt-cells = <1>;
>> + #address-cells = <0>;
>> + #size-cells = <0>;
>> + interrupt-map = <
>> + 0 &UIC0 0x14 4
>> + 1 &UIC1 0x16 4>;
>> + };
>> + DMA1: dma1 {
>> + interrupt-parent = <&DMA1>;
>> + interrupts = <0 1>;
>> + #interrupt-cells = <1>;
>> + #address-cells = <0>;
>> + #size-cells = <0>;
>> + interrupt-map = <
>> + 0 &UIC0 0x16 4
>> + 1 &UIC1 0x16 4>;

> Are these interrupt-maps correct?  The second interrupt from both dma
> controllers is routed to the same line on UIC1?

 The map is correct:

- first interrupts are 'DMAx Command Status FIFO Needs Service';
- second interrupt is 'DMA Error', both DMA engines share common error IRQ.


>> + };
>> + xor {
>> + interrupt-parent = <&UIC1>;
>> + interrupts = <0x1f 4>;

> What the hell is this thing?  No compatible property, nor even a
> meaningful name.

 This is the XOR accelerator, the dedicated DMA engine of ppc440spe 
equipped with the ability to do XOR operations in h/w. I guess, it 
could be named like DMA2.

 Regards, Yuri

 --
 Yuri Tikhonov, Senior Software Engineer
 Emcraft Systems, www.emcraft.com

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