Skip to contentSkip to conversation

m68knommu: Coldfire QSPI platform support

PATCH Jate Sujjavanich 3 participants 3 messages Sep 29, 2010 – Dec 30, 2010 9 messages not in the archive SPI

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): 4CA17F2D.7000407-XXXsiaCtIV5Wk0Htik3J/[email protected]

#7 lore raw

Here's a patch for your review.

After grabbing a msg from the msgq, the mcfqspi_work function calls list_del_init on the mcfqspi->msgq which unintentionally deletes the rest of the list before it can be processed. If qspi call was made using spi_sync, this can result in a process hang.

Signed-off by Jate Sujjavanich<[email protected]>
-----------

drivers/spi/coldfire_qspi.c +1 -2
index 59be3ef..0aa00af 100644
@@ -316,7 +316,7 @@ static void mcfqspi_work(struct work_struct *work)
                 msg = container_of(mcfqspi->msgq.next, struct spi_message,
                                    queue);
-               list_del_init(&mcfqspi->msgq);
+               list_del_init(&msg->queue);
                 spin_unlock_irqrestore(&mcfqspi->lock, flags);
                 spi = msg->spi;
 
-----Original Message-----

From: Greg Ungerer [mailto:gerg-XXXsiaCtIV5Wk0Htik3J/[email protected]]
Sent: Tuesday, September 28, 2010 1:38 AM
To: Jate Sujjavanich
Cc: 'Steven King'; [email protected]
Subject: Re: [uClinux-dev] [PATCH] m68knommu: Coldfire QSPI platform support

Hi Jate,

Quoted 4 lines · Jate Sujjavanich

I tried out the&msg->queue, and it's running fine. It's better than my fix because it's more clear than "mcfqspi->msgq.next".

<SNIP>

Seeing as this is spi related you should send this to the spi list as well (or at least to Grant Likley as well).

Regards
Greg

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev

A message that is not in the archive (sent off-list or not yet received): 6C2434209962DC46B88345CA85C334A2A434E65AF7-sZuHJe4yGqVM6S7uvVHM8UB+6BGkLq7r@public.gmane.org

#9 lore raw
Quoted 15 lines · On Wednesday 29 September 2010 06:44:32 Jate Sujjavanich wrote:

Here's a patch for your review.

After grabbing a msg from the msgq, the mcfqspi_work function calls list_del_init on the mcfqspi->msgq which unintentionally deletes the rest of the list before it can be processed. If qspi call was made using spi_sync, this can result in a process hang.

Signed-off by Jate Sujjavanich<[email protected]>
-----------

drivers/spi/coldfire_qspi.c +0 -0
index 59be3ef..0aa00af 100644

drivers/spi/coldfire_qspi.c static void mcfqspi_work(struct work_struct *work) · line 321

Quoted 7 lines
drivers/spi/coldfire_qspi.c +1 -1
@@ -316,7 +316,7 @@ static void mcfqspi_work(struct work_struct *work)
                 msg = container_of(mcfqspi->msgq.next, struct spi_message,
                                    queue);
-               list_del_init(&mcfqspi->msgq);
+               list_del_init(&msg->queue);
                 spin_unlock_irqrestore(&mcfqspi->lock, flags);
                 spi = msg->spi;
 

A belated ack.

Grant, can we still get this into .37?

------------------------------------------------------------------------------
Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL, new data types, scalar functions, improved concurrency, built-in packages, OCI, SQL*Plus, data movement tools, best practices and more.
http://p.sf.net/sfu/oracle-sfdev2dev

A message that is not in the archive (sent off-list or not yet received): 201012100846.36080.sfking-xS0NTnu2YfYAvxtiuMwx3w@public.gmane.org

#11 lore raw
Quoted 27 lines · Steven King
Quoted 15 lines · On Wednesday 29 September 2010 06:44:32 Jate Sujjavanich wrote:

Here's a patch for your review.

After grabbing a msg from the msgq, the mcfqspi_work function calls list_del_init on the mcfqspi->msgq which unintentionally deletes the rest of the list before it can be processed. If qspi call was made using spi_sync, this can result in a process hang.

Signed-off by Jate Sujjavanich<[email protected]>
-----------

drivers/spi/coldfire_qspi.c +0 -0
index 59be3ef..0aa00af 100644

drivers/spi/coldfire_qspi.c static void mcfqspi_work(struct work_struct *work) · line 321

Quoted 7 lines
drivers/spi/coldfire_qspi.c +1 -1
@@ -316,7 +316,7 @@ static void mcfqspi_work(struct work_struct *work)
                 msg = container_of(mcfqspi->msgq.next, struct spi_message,
                                    queue);
-               list_del_init(&mcfqspi->msgq);
+               list_del_init(&msg->queue);
                 spin_unlock_irqrestore(&mcfqspi->lock, flags);
                 spi = msg->spi;
 

A belated ack.

Quoted 1 line

Grant, can we still get this into .37?

Applied manually (patch was mailer-damaged). I'll see if Linux will still pick it up for .37.

thanks.
g.

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl