2.6.31-rc1-git3: Reported regressions 2.6.29 -> 2.6.30

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 - 3 - 4 - 5 - 6 | Next >

Re: [Bug #13319] Page allocation failures with b43 and p54usb

by David Rientjes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 30 Jun 2009, Christoph Lameter wrote:

> > diff --git a/mm/slub.c b/mm/slub.c
> > --- a/mm/slub.c
> > +++ b/mm/slub.c
> > @@ -142,6 +142,11 @@
> >   SLAB_POISON | SLAB_STORE_USER)
> >
> >  /*
> > + * The maximum amount of metadata added to a slab when debugging is enabled.
> > + */
> > +#define MAX_DEBUG_SIZE (3 * sizeof(void *) + 2 * sizeof(struct track))
> > +
> > +/*
> >   * Set of flags that will prevent slab merging
> >   */
> >  #define SLUB_NEVER_MERGE (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER | \
> > @@ -1561,6 +1566,21 @@ slab_out_of_memory(struct kmem_cache *s, gfp_t gfpflags, int nid)
> >   "default order: %d, min order: %d\n", s->name, s->objsize,
> >   s->size, oo_order(s->oo), oo_order(s->min));
> >
> > + if (s->flags & (SLAB_POISON | SLAB_RED_ZONE | SLAB_STORE_USER)) {
> > + int min_order;
> > +
> > + /*
> > + * Debugging is enabled, which may increase oo_order(s->min), so
> > + * warn the user that allocation failures may be avoided if
> > + * debugging is enabled for this cache.
> > + */
> > + min_order = get_order(s->size - MAX_DEBUG_SIZE);
> > + if (min_order < oo_order(s->min))
> > + printk(KERN_WARNING "  %s debugging increased min order "
> > +       "from %d to %d, use slab_debug=-,%s to disable.",
> > +       s->name, min_order, oo_order(s->min), s->name);
>
> It may be easier to check the order of the initial size vs. the order of
> the size with all metadata
>
> if (get_order(s->size) > get_order(s->objsize)
>

Ah, right.  Then we could simply eliminate the check on s->flags to begin
with.

This patch is supposing that `slab_debug=-,<cache>' actually disables all
debugging for <cache> which would need to be implemented first, but I
think this is a better alternative than requiring slab_debug=A for full
debugging after enabling CONFIG_SLUB_DEBUG_ON.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13319] Page allocation failures with b43 and p54usb

by Christoph Lameter-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 30 Jun 2009, David Rientjes wrote:

> This patch is supposing that `slab_debug=-,<cache>' actually disables all
> debugging for <cache> which would need to be implemented first, but I
> think this is a better alternative than requiring slab_debug=A for full
> debugging after enabling CONFIG_SLUB_DEBUG_ON.

We could add an option that disables debugging for troublesome page
size slabs


slab_debug=p

or so

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13319] Page allocation failures with b43 and p54usb

by David Rientjes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 30 Jun 2009, Christoph Lameter wrote:

> We could add an option that disables debugging for troublesome page
> size slabs
>
>
> slab_debug=p
>
> or so
>

I definitely like that more than slab_debug=A, where we're requiring an
added parameter for full debugging to be activated.

I'm curious whether there would ever be any use for disabling debugging on
specific caches for reasons other than higher minimum orders for metadata,
though, given that we already support things like slub_debug=FZ,cache,
which should only enable free debugging and redzoning even with
CONFIG_SLUB_DEBUG_ON enabled for cache.

I think the solution to this is really based on good software engineering
and test practices, though, so hopefully there'll be a consensus on which
direction to take before any time is spent in implementing and pushing it.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13319] Page allocation failures with b43 and p54usb

by Christoph Lameter-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 30 Jun 2009, David Rientjes wrote:

> I'm curious whether there would ever be any use for disabling debugging on
> specific caches for reasons other than higher minimum orders for metadata,
> though, given that we already support things like slub_debug=FZ,cache,
> which should only enable free debugging and redzoning even with
> CONFIG_SLUB_DEBUG_ON enabled for cache.

One of the reasons for disabling debugging is to speed up the kernel. Race
conditions may vanish due to the additional latency added by the debugging
code. Ideally you know which slab cache has the race and you only would
enable it on that one.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13319] Page allocation failures with b43 and p54usb

by Pekka Enberg-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi David,

On Wed, Jul 1, 2009 at 12:52 AM, David Rientjes<rientjes@...> wrote:
> I think the solution to this is really based on good software engineering
> and test practices, though, so hopefully there'll be a consensus on which
> direction to take before any time is spent in implementing and pushing it.

Lets go with the slab_out_of_memory() patch you outlined in a previous
post and implement the slub_debug=p thing Christoph suggested. I think
it's the best compromise at this point. When you guys finally see the
light, we can always change it to a reasonable default. ;)

So can you send a patch, please?

                        Pekka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Jeff Chua :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:

> I just tried, and it "seems" to work. Will try a few more cycles.

STD/STR survived quite a few cycles now. Patch seems to be doing the
right thing.

On Mon, Jun 29, 2009 at 11:51 PM, Etienne
Basset<etienne.basset@...> wrote:

> To have STR/resume work with current git, I have to :

> 1) apply Bart's patch

This is not yet in Linus's tree. And much needed to really fix the problem.

> 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b

This is already in Linus's tree.


Thanks,
Jeff.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Wu Zhangjin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:

> On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
>
> > I just tried, and it "seems" to work. Will try a few more cycles.
>
> STD/STR survived quite a few cycles now. Patch seems to be doing the
> right thing.
>
> On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> Basset<etienne.basset@...> wrote:
>
> > To have STR/resume work with current git, I have to :
>
> > 1) apply Bart's patch
>
> This is not yet in Linus's tree. And much needed to really fix the problem.
>
> > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
>

Yes, This commit must be reverted, otherwise, STD/Hibernation will not
work either. I have tested it on two different loongson-based machines:
fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)

Here is what i have traced:

        hibernate(kernel/power/hibernate.c)
        --> hibernation_snapshot
        --> dpm_resume_end
        --> dpm_resume
        --> device_resume
        --> dev->bus->resume(generic_ide_resume), dev_name(dev) = 0.0
        --> blk_execute_rq
        {
                DECLARE_COMPLETION_ONSTACK(wait);
                ...
                wait_for_completion(&wait);     // stop here
                ...
        }

and I have tried to revert this part of the above patch:

-
-               WARN_ON_ONCE(hwif->rq);
 repeat:
                prev_port = hwif->host->cur_port;
+
+               if (drive->dev_flags & IDE_DFLAG_BLOCKED)
+                       rq = hwif->rq;
+               else
+                       WARN_ON_ONCE(hwif->rq);
+

it works! need more time to test!

thanks!
Wu Zhangjin



Re: [Bug #13663] suspend to ram regression (IDE related)

by Bartlomiej Zolnierkiewicz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:

> On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> >
> > > I just tried, and it "seems" to work. Will try a few more cycles.
> >
> > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > right thing.
> >
> > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > Basset<etienne.basset@...> wrote:
> >
> > > To have STR/resume work with current git, I have to :
> >
> > > 1) apply Bart's patch
> >
> > This is not yet in Linus's tree. And much needed to really fix the problem.
> >
> > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> >
>
> Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> work either. I have tested it on two different loongson-based machines:
> fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)

Since it seems like Dave is taking his sweet time with doing the revert
I stared at the code a bit more and I think that I finally found the bug
(thanks to your debugging work for giving me the right hint!).

The patch needs to take into the account a new code introduced by the recent
block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):

@@ -555,8 +560,11 @@ repeat:
                startstop = start_request(drive, rq);
                spin_lock_irq(&hwif->lock);
 
-               if (startstop == ide_stopped)
+               if (startstop == ide_stopped) {
+                       rq = hwif->rq;
+                       hwif->rq = NULL;
                        goto repeat;
+               }
        } else
                goto plug_device;
 out:

and not zero hwif->rq if the device is blocked.

Could you try the attached patch and see if it fixes the issue?

[ Dave: while I appreciate fast handling of my patches I had strongly
  suggested giving this particular one some extra testing (because there
  were a lot of changes in between the time that it has been tested
  against other kernel subsystems).  Yet, it seems that its linux-next
  exposure was minimal at best..  :( ]

---
 drivers/ide/ide-io.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: b/drivers/ide/ide-io.c
===================================================================
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -532,7 +532,8 @@ repeat:
 
  if (startstop == ide_stopped) {
  rq = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
+ hwif->rq = NULL;
  goto repeat;
  }
  } else
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Bartlomiej Zolnierkiewicz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wednesday 01 July 2009 18:21:25 Bartlomiej Zolnierkiewicz wrote:

> On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:
> > On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> > >
> > > > I just tried, and it "seems" to work. Will try a few more cycles.
> > >
> > > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > > right thing.
> > >
> > > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > > Basset<etienne.basset@...> wrote:
> > >
> > > > To have STR/resume work with current git, I have to :
> > >
> > > > 1) apply Bart's patch
> > >
> > > This is not yet in Linus's tree. And much needed to really fix the problem.
> > >
> > > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> > >
> >
> > Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> > work either. I have tested it on two different loongson-based machines:
> > fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)
>
> Since it seems like Dave is taking his sweet time with doing the revert
> I stared at the code a bit more and I think that I finally found the bug
> (thanks to your debugging work for giving me the right hint!).
>
> The patch needs to take into the account a new code introduced by the recent
> block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):
>
> @@ -555,8 +560,11 @@ repeat:
>                 startstop = start_request(drive, rq);
>                 spin_lock_irq(&hwif->lock);
>  
> -               if (startstop == ide_stopped)
> +               if (startstop == ide_stopped) {
> +                       rq = hwif->rq;
> +                       hwif->rq = NULL;
>                         goto repeat;
> +               }
>         } else
>                 goto plug_device;
>  out:
>
> and not zero hwif->rq if the device is blocked.
>
> Could you try the attached patch and see if it fixes the issue?

Here is the more complete version, also taking into the account changes
in ide_intr() and ide_timer_expiry():

---
 drivers/ide/ide-io.c |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Index: b/drivers/ide/ide-io.c
===================================================================
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -532,7 +532,8 @@ repeat:
 
  if (startstop == ide_stopped) {
  rq = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
+ hwif->rq = NULL;
  goto repeat;
  }
  } else
@@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
  spin_lock_irq(&hwif->lock);
  enable_irq(hwif->irq);
  if (startstop == ide_stopped && hwif->polling == 0) {
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
  ide_unlock_port(hwif);
  plug_device = 1;
  }
@@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
  */
  if (startstop == ide_stopped && hwif->polling == 0) {
  BUG_ON(hwif->handler);
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
  ide_unlock_port(hwif);
  plug_device = 1;
  }


Re: [Bug #13663] suspend to ram regression (IDE related)

by Jeff Chua :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Jul 2, 2009 at 12:29 AM, Bartlomiej
Zolnierkiewicz<bzolnier@...> wrote:
> Here is the more complete version, also taking into the account changes
> in ide_intr() and ide_timer_expiry():

This works great for. Survived STR, STD. I just applied on top vanilla
latest Linus's git pull. Nothing else to revert.

Thanks,
Jeff.


> ---
>  drivers/ide/ide-io.c |   15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> Index: b/drivers/ide/ide-io.c
> ===================================================================
> --- a/drivers/ide/ide-io.c
> +++ b/drivers/ide/ide-io.c
> @@ -532,7 +532,8 @@ repeat:
>
>                if (startstop == ide_stopped) {
>                        rq = hwif->rq;
> -                       hwif->rq = NULL;
> +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
> +                               hwif->rq = NULL;
>                        goto repeat;
>                }
>        } else
> @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
>                spin_lock_irq(&hwif->lock);
>                enable_irq(hwif->irq);
>                if (startstop == ide_stopped && hwif->polling == 0) {
> -                       rq_in_flight = hwif->rq;
> -                       hwif->rq = NULL;
> +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> +                               rq_in_flight = hwif->rq;
> +                               hwif->rq = NULL;
> +                       }
>                        ide_unlock_port(hwif);
>                        plug_device = 1;
>                }
> @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
>         */
>        if (startstop == ide_stopped && hwif->polling == 0) {
>                BUG_ON(hwif->handler);
> -               rq_in_flight = hwif->rq;
> -               hwif->rq = NULL;
> +               if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> +                       rq_in_flight = hwif->rq;
> +                       hwif->rq = NULL;
> +               }
>                ide_unlock_port(hwif);
>                plug_device = 1;
>        }
>

Re: [Bug #13660] Crashes during boot on 2.6.30 / 2.6.31-rc, random programs

by Joao Correia :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

No formal patch has been sent yet, that i am aware of. I have made
some changes following suggestion by Americo Wang advise, to the
following:

(patch by Ingo)

diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h
index 699a2ac..031f4c6 100644
--- a/kernel/lockdep_internals.h
+++ b/kernel/lockdep_internals.h
@@ -65,7 +65,7 @@ enum {
  * Stack-trace: tightly packed array of stack backtrace
  * addresses. Protected by the hash_lock.
  */
-#define MAX_STACK_TRACE_ENTRIES 262144UL
+#define MAX_STACK_TRACE_ENTRIES 1048576UL

 extern struct list_head all_lock_classes;
 extern struct lock_chain lock_chains[];

and afterwards, a new bug popped up, solved by changing

include/linux/sched.h

# define MAX_LOCK_DEPTH 48UL

to

# define MAX_LOCK_DEPTH 96UL


I have now found a third limit bug, related to MAX_LOCKDEP_CHAINS,
which was hidden so far, which im trying to raise and replicate. This
is being discussed in detail in another message exchange on the lkml,
between me and Americo.

Thank you very much for your time,
Joao Correia
Centro de Informatica
Universidade da Beira Interior
Portugal



On Mon, Jun 29, 2009 at 1:31 AM, Rafael J. Wysocki<rjw@...> wrote:

> This message has been generated automatically as a part of a report
> of regressions introduced between 2.6.29 and 2.6.30.
>
> The following bug entry is on the current list of known regressions
> introduced between 2.6.29 and 2.6.30.  Please verify if it still should
> be listed and let me know (either way).
>
>
> Bug-Entry       : http://bugzilla.kernel.org/show_bug.cgi?id=13660
> Subject         : Crashes during boot on 2.6.30 / 2.6.31-rc, random programs
> Submitter       : Joao Correia <joaomiguelcorreia@...>
> Date            : 2009-06-27 16:07 (2 days old)
> References      : http://lkml.org/lkml/2009/6/27/95
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Etienne Basset :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Jeff Chua wrote:

> On Thu, Jul 2, 2009 at 12:29 AM, Bartlomiej
> Zolnierkiewicz<bzolnier@...> wrote:
>> Here is the more complete version, also taking into the account changes
>> in ide_intr() and ide_timer_expiry():
>
> This works great for. Survived STR, STD. I just applied on top vanilla
> latest Linus's git pull. Nothing else to revert.
>
> Thanks,
> Jeff.
>
>
i confirm, this  works for me too :)
thanks,
Etienne


>> ---
>>  drivers/ide/ide-io.c |   15 ++++++++++-----
>>  1 file changed, 10 insertions(+), 5 deletions(-)
>>
>> Index: b/drivers/ide/ide-io.c
>> ===================================================================
>> --- a/drivers/ide/ide-io.c
>> +++ b/drivers/ide/ide-io.c
>> @@ -532,7 +532,8 @@ repeat:
>>
>>                if (startstop == ide_stopped) {
>>                        rq = hwif->rq;
>> -                       hwif->rq = NULL;
>> +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
>> +                               hwif->rq = NULL;
>>                        goto repeat;
>>                }
>>        } else
>> @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
>>                spin_lock_irq(&hwif->lock);
>>                enable_irq(hwif->irq);
>>                if (startstop == ide_stopped && hwif->polling == 0) {
>> -                       rq_in_flight = hwif->rq;
>> -                       hwif->rq = NULL;
>> +                       if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
>> +                               rq_in_flight = hwif->rq;
>> +                               hwif->rq = NULL;
>> +                       }
>>                        ide_unlock_port(hwif);
>>                        plug_device = 1;
>>                }
>> @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
>>         */
>>        if (startstop == ide_stopped && hwif->polling == 0) {
>>                BUG_ON(hwif->handler);
>> -               rq_in_flight = hwif->rq;
>> -               hwif->rq = NULL;
>> +               if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
>> +                       rq_in_flight = hwif->rq;
>> +                       hwif->rq = NULL;
>> +               }
>>                ide_unlock_port(hwif);
>>                plug_device = 1;
>>        }
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Wu Zhangjin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, 2009-07-01 at 18:29 +0200, Bartlomiej Zolnierkiewicz wrote:

> On Wednesday 01 July 2009 18:21:25 Bartlomiej Zolnierkiewicz wrote:
> > On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:
> > > On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > > > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> > > >
> > > > > I just tried, and it "seems" to work. Will try a few more cycles.
> > > >
> > > > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > > > right thing.
> > > >
> > > > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > > > Basset<etienne.basset@...> wrote:
> > > >
> > > > > To have STR/resume work with current git, I have to :
> > > >
> > > > > 1) apply Bart's patch
> > > >
> > > > This is not yet in Linus's tree. And much needed to really fix the problem.
> > > >
> > > > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> > > >
> > >
> > > Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> > > work either. I have tested it on two different loongson-based machines:
> > > fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)
> >
> > Since it seems like Dave is taking his sweet time with doing the revert
> > I stared at the code a bit more and I think that I finally found the bug
> > (thanks to your debugging work for giving me the right hint!).
> >
> > The patch needs to take into the account a new code introduced by the recent
> > block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):
> >
> > @@ -555,8 +560,11 @@ repeat:
> >                 startstop = start_request(drive, rq);
> >                 spin_lock_irq(&hwif->lock);
> >  
> > -               if (startstop == ide_stopped)
> > +               if (startstop == ide_stopped) {
> > +                       rq = hwif->rq;
> > +                       hwif->rq = NULL;
> >                         goto repeat;
> > +               }
> >         } else
> >                 goto plug_device;
> >  out:
> >
> > and not zero hwif->rq if the device is blocked.
> >
> > Could you try the attached patch and see if it fixes the issue?
>
> Here is the more complete version, also taking into the account changes
> in ide_intr() and ide_timer_expiry():
>

Sorry, I can not apply this patch directly, which original version did
you use? I used the one in the master branch of linux-mips development
git repository.

commit 5a4f13fad1ab5bd08dea78fc55321e429d83cddf
Merge: ec9c45d e18ed14
Author: Linus Torvalds <torvalds@...>
Date:   Mon Jun 29 20:07:43 2009 -0700

    Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
   
    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
      ide: memory overrun in ide_get_identity_ioctl() on big endian
machines using ioctl HDIO_OBSOLETE_IDENTITY
      ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y
      ide-cd: handle fragmented packet commands gracefully
      ide: always kill the whole request on error
      ide: fix ide_kill_rq() for special ide-{floppy,tape} driver
requests

it this too old? should i merge another git repository?

I have tried to apply it manually, but unfortunately, also not work. any
other patch needed?

Thanks!
Wu Zhangjin

> ---
>  drivers/ide/ide-io.c |   15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> Index: b/drivers/ide/ide-io.c
> ===================================================================
> --- a/drivers/ide/ide-io.c
> +++ b/drivers/ide/ide-io.c
> @@ -532,7 +532,8 @@ repeat:
>  
>   if (startstop == ide_stopped) {
>   rq = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
> + hwif->rq = NULL;
>   goto repeat;
>   }
>   } else
> @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
>   spin_lock_irq(&hwif->lock);
>   enable_irq(hwif->irq);
>   if (startstop == ide_stopped && hwif->polling == 0) {
> - rq_in_flight = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> + rq_in_flight = hwif->rq;
> + hwif->rq = NULL;
> + }
>   ide_unlock_port(hwif);
>   plug_device = 1;
>   }
> @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
>   */
>   if (startstop == ide_stopped && hwif->polling == 0) {
>   BUG_ON(hwif->handler);
> - rq_in_flight = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> + rq_in_flight = hwif->rq;
> + hwif->rq = NULL;
> + }
>   ide_unlock_port(hwif);
>   plug_device = 1;
>   }

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Jeff Chua :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Jul 2, 2009 at 9:46 AM, Wu Zhangjin<wuzhangjin@...> wrote:
> it this too old? should i merge another git repository?
> I have tried to apply it manually, but unfortunately, also not work. any
> other patch needed?

You need to be undo those two patches below ...

> On Mon, Jun 29, 2009 at 11:51 PM, Etienne Basset<etienne.basset@...>
> To have STR/resume work with current git, I have to :
> 1) apply Bart's patch
> 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b

or try to pull from Linus's tree and try again. Latest is now ...

commit d960eea974f5e500c0dcb95a934239cc1f481cfd
Author: Randy Dunlap <randy.dunlap@...>
Date:   Mon Jun 29 14:54:11 2009 -0700

    kernel-doc: move ignoring kmemcheck



Jeff.


Re: [Bug #13663] suspend to ram regression (IDE related)

by Ralf Baechle DL5RB :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, Jul 02, 2009 at 09:46:43AM +0800, Wu Zhangjin wrote:

> Sorry, I can not apply this patch directly, which original version did
> you use? I used the one in the master branch of linux-mips development
> git repository.

The master branch of linux-mips.org has no IDE changes over Linus' tree.

  Ralf


Re: [Bug #13663] suspend to ram regression (IDE related)

by Bartlomiej Zolnierkiewicz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thursday 02 July 2009 03:46:43 Wu Zhangjin wrote:

> On Wed, 2009-07-01 at 18:29 +0200, Bartlomiej Zolnierkiewicz wrote:
> > On Wednesday 01 July 2009 18:21:25 Bartlomiej Zolnierkiewicz wrote:
> > > On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:
> > > > On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > > > > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> > > > >
> > > > > > I just tried, and it "seems" to work. Will try a few more cycles.
> > > > >
> > > > > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > > > > right thing.
> > > > >
> > > > > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > > > > Basset<etienne.basset@...> wrote:
> > > > >
> > > > > > To have STR/resume work with current git, I have to :
> > > > >
> > > > > > 1) apply Bart's patch
> > > > >
> > > > > This is not yet in Linus's tree. And much needed to really fix the problem.
> > > > >
> > > > > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> > > > >
> > > >
> > > > Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> > > > work either. I have tested it on two different loongson-based machines:
> > > > fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)
> > >
> > > Since it seems like Dave is taking his sweet time with doing the revert
> > > I stared at the code a bit more and I think that I finally found the bug
> > > (thanks to your debugging work for giving me the right hint!).
> > >
> > > The patch needs to take into the account a new code introduced by the recent
> > > block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):
> > >
> > > @@ -555,8 +560,11 @@ repeat:
> > >                 startstop = start_request(drive, rq);
> > >                 spin_lock_irq(&hwif->lock);
> > >  
> > > -               if (startstop == ide_stopped)
> > > +               if (startstop == ide_stopped) {
> > > +                       rq = hwif->rq;
> > > +                       hwif->rq = NULL;
> > >                         goto repeat;
> > > +               }
> > >         } else
> > >                 goto plug_device;
> > >  out:
> > >
> > > and not zero hwif->rq if the device is blocked.
> > >
> > > Could you try the attached patch and see if it fixes the issue?
> >
> > Here is the more complete version, also taking into the account changes
> > in ide_intr() and ide_timer_expiry():
> >
>
> Sorry, I can not apply this patch directly, which original version did
> you use? I used the one in the master branch of linux-mips development
> git repository.
>
> commit 5a4f13fad1ab5bd08dea78fc55321e429d83cddf
> Merge: ec9c45d e18ed14
> Author: Linus Torvalds <torvalds@...>
> Date:   Mon Jun 29 20:07:43 2009 -0700
>
>     Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
>    
>     * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
>       ide: memory overrun in ide_get_identity_ioctl() on big endian
> machines using ioctl HDIO_OBSOLETE_IDENTITY
>       ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y
>       ide-cd: handle fragmented packet commands gracefully
>       ide: always kill the whole request on error
>       ide: fix ide_kill_rq() for special ide-{floppy,tape} driver
> requests
>
> it this too old? should i merge another git repository?

Weird, I used linux-next but Linus' tree should also be fine
(as it matches linux-next w.r.t. ide currently).

Anyway since the patch was confirmed to fix the problem by
Jeff and Etienne here is the final version for Dave.

From: Bartlomiej Zolnierkiewicz <bzolnier@...>
Subject: [PATCH] ide: make resume work again

It turns out that commit a1317f714af7aed60ddc182d0122477cbe36ee9b
("ide: improve handling of Power Management requests") needs to take
into the account a new code added by the recent block layer changes
in commit 8f6205cd572fece673da0255d74843680f67f879 ("ide: dequeue
in-flight request") and prevent clearing of hwif->rq if the device
is blocked.

Thanks to Etienne, Wu and Jeff for help in fixing the issue.

Reported-and-tested-by: Jeff Chua <jeff.chua.linux@...>
Reported-and-tested-by: Etienne Basset <etienne.basset@...>
Reported-by: Wu Zhangjin <wuzhangjin@...>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@...>
---
Added patch description, no other changes.

 drivers/ide/ide-io.c |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Index: b/drivers/ide/ide-io.c
===================================================================
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -532,7 +532,8 @@ repeat:
 
  if (startstop == ide_stopped) {
  rq = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
+ hwif->rq = NULL;
  goto repeat;
  }
  } else
@@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
  spin_lock_irq(&hwif->lock);
  enable_irq(hwif->irq);
  if (startstop == ide_stopped && hwif->polling == 0) {
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
  ide_unlock_port(hwif);
  plug_device = 1;
  }
@@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
  */
  if (startstop == ide_stopped && hwif->polling == 0) {
  BUG_ON(hwif->handler);
- rq_in_flight = hwif->rq;
- hwif->rq = NULL;
+ if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
+ rq_in_flight = hwif->rq;
+ hwif->rq = NULL;
+ }
  ide_unlock_port(hwif);
  plug_device = 1;
  }


Re: [Bug #13319] Page allocation failures with b43 and p54usb

by David Rientjes :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wed, 1 Jul 2009, Pekka Enberg wrote:

> Lets go with the slab_out_of_memory() patch you outlined in a previous
> post and implement the slub_debug=p thing Christoph suggested. I think
> it's the best compromise at this point. When you guys finally see the
> light, we can always change it to a reasonable default. ;)
>
> So can you send a patch, please?
>

Sure, let me know if you think this is -rc material; otherwise, the bug
will have to be deferred until 2.6.32 with the temporary workaround of
disabling CONFIG_SLUB_DEBUG_ON.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Wu Zhangjin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, 2009-07-02 at 18:13 +0200, Bartlomiej Zolnierkiewicz wrote:

> On Thursday 02 July 2009 03:46:43 Wu Zhangjin wrote:
> > On Wed, 2009-07-01 at 18:29 +0200, Bartlomiej Zolnierkiewicz wrote:
> > > On Wednesday 01 July 2009 18:21:25 Bartlomiej Zolnierkiewicz wrote:
> > > > On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:
> > > > > On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > > > > > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> > > > > >
> > > > > > > I just tried, and it "seems" to work. Will try a few more cycles.
> > > > > >
> > > > > > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > > > > > right thing.
> > > > > >
> > > > > > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > > > > > Basset<etienne.basset@...> wrote:
> > > > > >
> > > > > > > To have STR/resume work with current git, I have to :
> > > > > >
> > > > > > > 1) apply Bart's patch
> > > > > >
> > > > > > This is not yet in Linus's tree. And much needed to really fix the problem.
> > > > > >
> > > > > > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> > > > > >
> > > > >
> > > > > Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> > > > > work either. I have tested it on two different loongson-based machines:
> > > > > fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)
> > > >
> > > > Since it seems like Dave is taking his sweet time with doing the revert
> > > > I stared at the code a bit more and I think that I finally found the bug
> > > > (thanks to your debugging work for giving me the right hint!).
> > > >
> > > > The patch needs to take into the account a new code introduced by the recent
> > > > block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):
> > > >
> > > > @@ -555,8 +560,11 @@ repeat:
> > > >                 startstop = start_request(drive, rq);
> > > >                 spin_lock_irq(&hwif->lock);
> > > >  
> > > > -               if (startstop == ide_stopped)
> > > > +               if (startstop == ide_stopped) {
> > > > +                       rq = hwif->rq;
> > > > +                       hwif->rq = NULL;
> > > >                         goto repeat;
> > > > +               }
> > > >         } else
> > > >                 goto plug_device;
> > > >  out:
> > > >
> > > > and not zero hwif->rq if the device is blocked.
> > > >
> > > > Could you try the attached patch and see if it fixes the issue?
> > >
> > > Here is the more complete version, also taking into the account changes
> > > in ide_intr() and ide_timer_expiry():
> > >
> >
> > Sorry, I can not apply this patch directly, which original version did
> > you use? I used the one in the master branch of linux-mips development
> > git repository.
> >
> > commit 5a4f13fad1ab5bd08dea78fc55321e429d83cddf
> > Merge: ec9c45d e18ed14
> > Author: Linus Torvalds <torvalds@...>
> > Date:   Mon Jun 29 20:07:43 2009 -0700
> >
> >     Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
> >    
> >     * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
> >       ide: memory overrun in ide_get_identity_ioctl() on big endian
> > machines using ioctl HDIO_OBSOLETE_IDENTITY
> >       ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y
> >       ide-cd: handle fragmented packet commands gracefully
> >       ide: always kill the whole request on error
> >       ide: fix ide_kill_rq() for special ide-{floppy,tape} driver
> > requests
> >
> > it this too old? should i merge another git repository?
>
> Weird, I used linux-next but Linus' tree should also be fine
> (as it matches linux-next w.r.t. ide currently).

I just cloned the linux-next git repo, and tested your patch with
STD/Hibernation, unfortunately, it also not work :-(

here is the Call Trace:

blk_delete_timer+0x0/0x20
blk_requeue_request+0x24/0xd0
ide_requeue_and_plug+0x38/0xb0
ide_intr+0x120/0x300             --->  ide_intr....
handle_IRQ_event+0x94/0x230
handle_level_irq+0x7c/0x120
mach_irq_dispatch+0xc8/0x158
ret_from_irq+0x0/0x4
cpu_idle+0x30/0x60
start_kernel+0x330/0x34c

If _NOT_ apply your patch and comment this part, it works:

diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
index d5f3c77..a45de2b 100644
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -468,12 +468,12 @@ void do_ide_request(struct request_queue *q)
                ide_hwif_t *prev_port;
 repeat:
                prev_port = hwif->host->cur_port;
-
+/*
                if (drive->dev_flags & IDE_DFLAG_BLOCKED)
                        rq = hwif->rq;
                else
                        WARN_ON_ONCE(hwif->rq);
-
+*/
                if (drive->dev_flags & IDE_DFLAG_SLEEPING &&
                    time_after(drive->sleep, jiffies)) {
                        ide_unlock_port(hwif);
 

Regards,
Wu Zhangjin

>
> Anyway since the patch was confirmed to fix the problem by
> Jeff and Etienne here is the final version for Dave.
>
> From: Bartlomiej Zolnierkiewicz <bzolnier@...>
> Subject: [PATCH] ide: make resume work again
>
> It turns out that commit a1317f714af7aed60ddc182d0122477cbe36ee9b
> ("ide: improve handling of Power Management requests") needs to take
> into the account a new code added by the recent block layer changes
> in commit 8f6205cd572fece673da0255d74843680f67f879 ("ide: dequeue
> in-flight request") and prevent clearing of hwif->rq if the device
> is blocked.
>
> Thanks to Etienne, Wu and Jeff for help in fixing the issue.
>
> Reported-and-tested-by: Jeff Chua <jeff.chua.linux@...>
> Reported-and-tested-by: Etienne Basset <etienne.basset@...>
> Reported-by: Wu Zhangjin <wuzhangjin@...>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@...>
> ---
> Added patch description, no other changes.
>
>  drivers/ide/ide-io.c |   15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
>
> Index: b/drivers/ide/ide-io.c
> ===================================================================
> --- a/drivers/ide/ide-io.c
> +++ b/drivers/ide/ide-io.c
> @@ -532,7 +532,8 @@ repeat:
>  
>   if (startstop == ide_stopped) {
>   rq = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
> + hwif->rq = NULL;
>   goto repeat;
>   }
>   } else
> @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
>   spin_lock_irq(&hwif->lock);
>   enable_irq(hwif->irq);
>   if (startstop == ide_stopped && hwif->polling == 0) {
> - rq_in_flight = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> + rq_in_flight = hwif->rq;
> + hwif->rq = NULL;
> + }
>   ide_unlock_port(hwif);
>   plug_device = 1;
>   }
> @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
>   */
>   if (startstop == ide_stopped && hwif->polling == 0) {
>   BUG_ON(hwif->handler);
> - rq_in_flight = hwif->rq;
> - hwif->rq = NULL;
> + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> + rq_in_flight = hwif->rq;
> + hwif->rq = NULL;
> + }
>   ide_unlock_port(hwif);
>   plug_device = 1;
>   }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@...
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Re: [Bug #13663] suspend to ram regression (IDE related)

by Wu Zhangjin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 2009-07-03 at 11:58 +0800, Wu Zhangjin wrote:

> On Thu, 2009-07-02 at 18:13 +0200, Bartlomiej Zolnierkiewicz wrote:
> > On Thursday 02 July 2009 03:46:43 Wu Zhangjin wrote:
> > > On Wed, 2009-07-01 at 18:29 +0200, Bartlomiej Zolnierkiewicz wrote:
> > > > On Wednesday 01 July 2009 18:21:25 Bartlomiej Zolnierkiewicz wrote:
> > > > > On Wednesday 01 July 2009 16:47:41 Wu Zhangjin wrote:
> > > > > > On Wed, 2009-07-01 at 22:31 +0800, Jeff Chua wrote:
> > > > > > > On Tue, Jun 30, 2009 at 12:21 AM, Jeff Chua<jeff.chua.linux@...> wrote:
> > > > > > >
> > > > > > > > I just tried, and it "seems" to work. Will try a few more cycles.
> > > > > > >
> > > > > > > STD/STR survived quite a few cycles now. Patch seems to be doing the
> > > > > > > right thing.
> > > > > > >
> > > > > > > On Mon, Jun 29, 2009 at 11:51 PM, Etienne
> > > > > > > Basset<etienne.basset@...> wrote:
> > > > > > >
> > > > > > > > To have STR/resume work with current git, I have to :
> > > > > > >
> > > > > > > > 1) apply Bart's patch
> > > > > > >
> > > > > > > This is not yet in Linus's tree. And much needed to really fix the problem.
> > > > > > >
> > > > > > > > 2) revert this commit : a1317f714af7aed60ddc182d0122477cbe36ee9b
> > > > > > >
> > > > > >
> > > > > > Yes, This commit must be reverted, otherwise, STD/Hibernation will not
> > > > > > work either. I have tested it on two different loongson-based machines:
> > > > > > fuloong2e box and yeeloong2f netbook.(loongson is mips compatiable)
> > > > >
> > > > > Since it seems like Dave is taking his sweet time with doing the revert
> > > > > I stared at the code a bit more and I think that I finally found the bug
> > > > > (thanks to your debugging work for giving me the right hint!).
> > > > >
> > > > > The patch needs to take into the account a new code introduced by the recent
> > > > > block layer changes (commit 8f6205cd572fece673da0255d74843680f67f879):
> > > > >
> > > > > @@ -555,8 +560,11 @@ repeat:
> > > > >                 startstop = start_request(drive, rq);
> > > > >                 spin_lock_irq(&hwif->lock);
> > > > >  
> > > > > -               if (startstop == ide_stopped)
> > > > > +               if (startstop == ide_stopped) {
> > > > > +                       rq = hwif->rq;
> > > > > +                       hwif->rq = NULL;
> > > > >                         goto repeat;
> > > > > +               }
> > > > >         } else
> > > > >                 goto plug_device;
> > > > >  out:
> > > > >
> > > > > and not zero hwif->rq if the device is blocked.
> > > > >
> > > > > Could you try the attached patch and see if it fixes the issue?
> > > >
> > > > Here is the more complete version, also taking into the account changes
> > > > in ide_intr() and ide_timer_expiry():
> > > >
> > >
> > > Sorry, I can not apply this patch directly, which original version did
> > > you use? I used the one in the master branch of linux-mips development
> > > git repository.
> > >
> > > commit 5a4f13fad1ab5bd08dea78fc55321e429d83cddf
> > > Merge: ec9c45d e18ed14
> > > Author: Linus Torvalds <torvalds@...>
> > > Date:   Mon Jun 29 20:07:43 2009 -0700
> > >
> > >     Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6
> > >    
> > >     * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:
> > >       ide: memory overrun in ide_get_identity_ioctl() on big endian
> > > machines using ioctl HDIO_OBSOLETE_IDENTITY
> > >       ide: fix resume for CONFIG_BLK_DEV_IDEACPI=y
> > >       ide-cd: handle fragmented packet commands gracefully
> > >       ide: always kill the whole request on error
> > >       ide: fix ide_kill_rq() for special ide-{floppy,tape} driver
> > > requests
> > >
> > > it this too old? should i merge another git repository?
> >
> > Weird, I used linux-next but Linus' tree should also be fine
> > (as it matches linux-next w.r.t. ide currently).
>
> I just cloned the linux-next git repo, and tested your patch with
> STD/Hibernation, unfortunately, it also not work :-(
>
> here is the Call Trace:
>
> blk_delete_timer+0x0/0x20
> blk_requeue_request+0x24/0xd0
> ide_requeue_and_plug+0x38/0xb0
> ide_intr+0x120/0x300             --->  ide_intr....
> handle_IRQ_event+0x94/0x230
> handle_level_irq+0x7c/0x120
> mach_irq_dispatch+0xc8/0x158
> ret_from_irq+0x0/0x4
> cpu_idle+0x30/0x60
> start_kernel+0x330/0x34c
>
There are two more lines after the Call Trace:

Disabling lock debugging due to kernel taint
Kernel panic - not syncing: Fatal exception in interrupt.

> If _NOT_ apply your patch and comment this part, it works:
>
> diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
> index d5f3c77..a45de2b 100644
> --- a/drivers/ide/ide-io.c
> +++ b/drivers/ide/ide-io.c
> @@ -468,12 +468,12 @@ void do_ide_request(struct request_queue *q)
>                 ide_hwif_t *prev_port;
>  repeat:
>                 prev_port = hwif->host->cur_port;
> -
> +/*
>                 if (drive->dev_flags & IDE_DFLAG_BLOCKED)
>                         rq = hwif->rq;
>                 else
>                         WARN_ON_ONCE(hwif->rq);
> -
> +*/
>                 if (drive->dev_flags & IDE_DFLAG_SLEEPING &&
>                     time_after(drive->sleep, jiffies)) {
>                         ide_unlock_port(hwif);
>  
>
> Regards,
> Wu Zhangjin
> >
> > Anyway since the patch was confirmed to fix the problem by
> > Jeff and Etienne here is the final version for Dave.
> >
> > From: Bartlomiej Zolnierkiewicz <bzolnier@...>
> > Subject: [PATCH] ide: make resume work again
> >
> > It turns out that commit a1317f714af7aed60ddc182d0122477cbe36ee9b
> > ("ide: improve handling of Power Management requests") needs to take
> > into the account a new code added by the recent block layer changes
> > in commit 8f6205cd572fece673da0255d74843680f67f879 ("ide: dequeue
> > in-flight request") and prevent clearing of hwif->rq if the device
> > is blocked.
> >
> > Thanks to Etienne, Wu and Jeff for help in fixing the issue.
> >
> > Reported-and-tested-by: Jeff Chua <jeff.chua.linux@...>
> > Reported-and-tested-by: Etienne Basset <etienne.basset@...>
> > Reported-by: Wu Zhangjin <wuzhangjin@...>
> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@...>
> > ---
> > Added patch description, no other changes.
> >
> >  drivers/ide/ide-io.c |   15 ++++++++++-----
> >  1 file changed, 10 insertions(+), 5 deletions(-)
> >
> > Index: b/drivers/ide/ide-io.c
> > ===================================================================
> > --- a/drivers/ide/ide-io.c
> > +++ b/drivers/ide/ide-io.c
> > @@ -532,7 +532,8 @@ repeat:
> >  
> >   if (startstop == ide_stopped) {
> >   rq = hwif->rq;
> > - hwif->rq = NULL;
> > + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0)
> > + hwif->rq = NULL;
> >   goto repeat;
> >   }
> >   } else
> > @@ -679,8 +680,10 @@ void ide_timer_expiry (unsigned long dat
> >   spin_lock_irq(&hwif->lock);
> >   enable_irq(hwif->irq);
> >   if (startstop == ide_stopped && hwif->polling == 0) {
> > - rq_in_flight = hwif->rq;
> > - hwif->rq = NULL;
> > + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> > + rq_in_flight = hwif->rq;
> > + hwif->rq = NULL;
> > + }
> >   ide_unlock_port(hwif);
> >   plug_device = 1;
> >   }
> > @@ -856,8 +859,10 @@ irqreturn_t ide_intr (int irq, void *dev
> >   */
> >   if (startstop == ide_stopped && hwif->polling == 0) {
> >   BUG_ON(hwif->handler);
> > - rq_in_flight = hwif->rq;
> > - hwif->rq = NULL;
> > + if ((drive->dev_flags & IDE_DFLAG_BLOCKED) == 0) {
> > + rq_in_flight = hwif->rq;
> > + hwif->rq = NULL;
> > + }
> >   ide_unlock_port(hwif);
> >   plug_device = 1;
> >   }
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> > the body of a message to majordomo@...
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html



Re: [Bug #13319] Page allocation failures with b43 and p54usb

by Pekka Enberg-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi David,

On Wed, 1 Jul 2009, Pekka Enberg wrote:
>> Lets go with the slab_out_of_memory() patch you outlined in a previous
>> post and implement the slub_debug=p thing Christoph suggested. I think
>> it's the best compromise at this point. When you guys finally see the
>> light, we can always change it to a reasonable default. ;)
>>
>> So can you send a patch, please?

On Thu, Jul 2, 2009 at 8:18 PM, David Rientjes<rientjes@...> wrote:
> Sure, let me know if you think this is -rc material; otherwise, the bug
> will have to be deferred until 2.6.32 with the temporary workaround of
> disabling CONFIG_SLUB_DEBUG_ON.

We're at -rc2 so yes, I do think we should fix 2.6.31.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
< Prev | 1 - 2 - 3 - 4 - 5 - 6 | Next >