Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755196AbYLBPuU (ORCPT ); Tue, 2 Dec 2008 10:50:20 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751259AbYLBPuI (ORCPT ); Tue, 2 Dec 2008 10:50:08 -0500 Received: from ogre.sisk.pl ([217.79.144.158]:42343 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750799AbYLBPuG (ORCPT ); Tue, 2 Dec 2008 10:50:06 -0500 From: "Rafael J. Wysocki" To: Linus Torvalds Subject: Re: Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected) Date: Tue, 2 Dec 2008 16:49:26 +0100 User-Agent: KMail/1.9.9 Cc: Greg KH , Ingo Molnar , Jesse Barnes , Len Brown , LKML , Takashi Iwai , Andrew Morton References: <200812020320.31876.rjw@sisk.pl> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200812021649.27148.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1885 Lines: 51 On Tuesday, 2 of December 2008, Linus Torvalds wrote: > > On Tue, 2 Dec 2008, Rafael J. Wysocki wrote: > > r_size = resource_size(r); > > /* For bridges size != alignment */ > > - align = resource_alignment(r); > > + align = (i < PCI_BRIDGE_RESOURCES) ? r_size : r->start; > > Hmm. This means that something set the alignment flags incorrectly. The > resource _should_ have IORESOURCE_SIZEALIGN set for a resource with size > alignment, and IORESOURCE_STARTALIGN for one that has start alignment. > > Your patch doesn't fix anything, it just hides the bug. Well, it's just a partial revert of commit 5f17cfce5776c566d64430f543a289e5cfa4538b ("PCI: fix pbus_size_mem() resource alignment for CardBus controllers"). > It would be good to hear what resource this is, and where it got set. So > instead of that broken patch that just hides the problem, please try to > debug it with something like > > resource_size_t expected_align; > > expected_align = (i < PCI_BRIDGE_RESOURCES) ? r_size : r->start; > align = resource_alignment(r); > if (align != expected_align) { > dev_warn(&dev->dev, > "BAR %d %llx-%llx wrong alignment flags %lx %llx (%llx)\n", > i, > (unsigned long long) r->start, > (unsigned long long) r->end, > r->flags, > (unsigned long long) align, > (unsigned long long) expected_align); > /* Hacky and wrong, but trying to keep things > align = expected_align; > } > > or something like that. And then we just need to figure out which setup > routine sets the wrong alignment flag,. Yeah, I'll give it a try later today, when I get back from the Uni. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/