lkml.org 
[lkml]   [2008]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Regression from 2.6.26: Hibernation (possibly suspend) broken on Toshiba R500 (bisected)


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.

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,.

Linus


\
 
 \ /
  Last update: 2008-12-02 04:35    [W:0.365 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site