lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1BAFE6F6C881BF42822005164F1491C33EAAA89B@DBDE01.ent.ti.com>
Date:	Thu, 18 Oct 2012 05:31:11 +0000
From:	"Hebbar, Gururaja" <gururaja.hebbar@...com>
To:	"Hunter, Jon" <jon-hunter@...com>
CC:	"linux-omap@...r.kernel.org" <linux-omap@...r.kernel.org>,
	"Rajashekhara, Sudhakar" <sudhakar.raj@...com>,
	Tony Lindgren <tony@...mide.com>,
	"Nori, Sekhar" <nsekhar@...com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"grant.likely@...retlab.ca" <grant.likely@...retlab.ca>,
	"linux-arm-kernel@...ts.infradead.org" 
	<linux-arm-kernel@...ts.infradead.org>
Subject: RE: discrepancy while save and restore of debounce registers

Jon,

On Thu, Oct 18, 2012 at 02:42:01, Hunter, Jon wrote:
> Hi Gururaja,
> 
> On 10/17/2012 01:13 AM, Hebbar, Gururaja wrote:
> > Hi,
> > 
> > I came across a peculiar issue while updating GPIO debounce registers on
> > OMAP platform.
> > 
> > According to mainline commit ae547354a8ed59f19b57f7e1de9c7816edfc3537
> > 
> > gpio/omap: save and restore debounce registers
> > 
> > GPIO debounce registers need to be saved and restored for proper functioning
> > of driver.
> > 
> > ...
> > @@ -1363,6 +1369,12 @@ static void omap_gpio_restore_context(struct gpio_bank *bank)
> >         __raw_writel(bank->context.fallingdetect,
> >                                 bank->base + bank->regs->fallingdetect);
> >         __raw_writel(bank->context.dataout, bank->base + bank->regs->dataout);
> > +       if (bank->dbck_enable_mask) {
> > +               __raw_writel(bank->context.debounce, bank->base +
> > +                                       bank->regs->debounce);
> > +               __raw_writel(bank->context.debounce_en,
> > +                                       bank->base + bank->regs->debounce_en);
> > +       }
> >  }
> > 
> > 
> > Due to copy/paste of this commit into my local tree, I missed the check for 
> > bank->dbck_enable_mask, and directly restored the saved value from context.
> > 
> > After this, I saw random crashes when accessing different registers (sometimes
> > its OE register and sometime its DATAOUT register). 
> > 
> > These crashes were seen across 2nd and subsequent suspend/resume.
> > 
> > My doubt/questions are
> > 1. Why should debounce registers be updated only when it's accessed previously?
> 
> If debounce is not being used by any of the gpios, then there is no need
> to restore them as there are no bits set. So this makes sense and saves
> a couple register writes.

What I want to know is that other than saving register writes, is there any
other important stuff that specifies this requirement.

> 
> > 2. What is the relation between updating debounce registers and crash seen on
> > others registers? 
> 
> This I am not sure about. I gave this a quick try on my omap3430 beagle
> board, but I did not see any side-effects from doing this. However, if
> you are always restoring the debounce context regardless of whether
> debounce is being used, then you could be writing bad values to the
> debounce registers as the context variables bank->context.debouce and
> bank->context.debouce_en may not initialised. So that is bad. However,
> that said I am still not sure how this could cause a crash.
> 
> Can you share more details on ...

Sorry for missing below details in first post.

> 1. The OMAP platform you are using?

I was trying this on TI AM335x platform (repo below). On AM335x EVM board

http://arago-project.org/git/projects/?p=linux-am33x.git;a=shortlog;
h=refs/heads/v3.2-staging

> 2. What linux distro/environment you are using?

Arago AM335x PSP release (linux 3.2 + am335x patch-set)

> 3. If there are any specific steps to reproduce this 100% of the time?

On top of this tree, try suspend/resume using "echo mem > /syspower/state"

> 
> Cheers
> Jon
> 


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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ