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]
Date:   Sat, 25 Apr 2020 12:37:01 +0200
From:   "H. Nikolaus Schaller" <hns@...delico.com>
To:     Andreas Kemnade <andreas@...nade.info>,
        Tony Lindgren <tony@...mide.com>
Cc:     Evgeniy Polyakov <zbr@...emap.net>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        linux-omap <linux-omap@...r.kernel.org>,
        Adam Ford <aford173@...il.com>,
        "Andrew F . Davis" <afd@...com>, Vignesh R <vigneshr@...com>
Subject: Re: [PATCHv3] w1: omap-hdq: Simplify driver with PM runtime autosuspend


> Am 25.04.2020 um 12:29 schrieb H. Nikolaus Schaller <hns@...delico.com>:
> 
> H
> The things start to get "fixed" when the hdq_isr
> jumps to 6 indicating
> 
> OMAP_HDQ_INT_STATUS_RXCOMPLETE | OMAP_HDQ_INT_STATUS_TXCOMPLETE
> 
> So I am getting more inclined to believe that it is
> not a power management issue but some piggybacked
> change to how interrupts are handled.
> Especially hdq_reset_irqstatus.
> 
> So I will add a printk to hdq_reset_irqstatus
> to see what value it had before being reset.

I now did check the log during boot and there is the
reverse situation. Initially it works but suddenly
hdq_isr becomes 6 and then trouble starts.

So the key problem is that both, the RX and the TX
interrupts may be set and then, the code resets
everything to 0 and looses either one.

I wonder if that is an issue by two processes reading
hdq in parallel.

Another question is how independent command-writes + result-reads
are properly serialized and locked so that they don't overlap?

Maybe this is handled outside of the omap_hdq code.

So what could be a fix?

BR,
Nikolaus
 
[   17.026916] omap_hdq 480b2000.1w: omap_hdq_probe
[   17.057739] omap_hdq 480b2000.1w: omap_hdq_probe 1
[   17.062866] omap_hdq 480b2000.1w: omap_hdq_runtime_resume
[   17.221374] omap_hdq 480b2000.1w: OMAP HDQ Hardware Rev 0.5. Driver in Interrupt mode
[   17.350860] omap_hdq 480b2000.1w: omap_hdq_probe 2
[   17.372863] omap_hdq 480b2000.1w: omap_hdq_probe 3
[   17.468444] omap_hdq 480b2000.1w: hdq_isr: 1
[   17.473876] omap_hdq 480b2000.1w: Presence bit not set
[   17.505249] omap_hdq 480b2000.1w: omap_hdq_probe 4
[   17.576690] omap_hdq 480b2000.1w: omap_hdq_probe done
[   17.697998] omap_hdq 480b2000.1w: hdq_write_byte
[   17.704986] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.734954] omap_hdq 480b2000.1w: hdq_read_byte
[   17.747528] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.752044] omap_hdq 480b2000.1w: hdq_write_byte
[   17.759033] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.774414] omap_hdq 480b2000.1w: hdq_read_byte
[   17.798767] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.803314] omap_hdq 480b2000.1w: hdq_write_byte
[   17.821807] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.826385] omap_hdq 480b2000.1w: hdq_read_byte
[   17.837646] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.842224] omap_hdq 480b2000.1w: hdq_write_byte
[   17.849212] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.861877] omap_hdq 480b2000.1w: hdq_read_byte
[   17.887573] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.892150] omap_hdq 480b2000.1w: hdq_write_byte
[   17.899139] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.903686] omap_hdq 480b2000.1w: hdq_read_byte
[   17.926177] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.945434] omap_hdq 480b2000.1w: hdq_write_byte
[   17.953979] omap_hdq 480b2000.1w: hdq_isr: 4
[   17.959503] omap_hdq 480b2000.1w: hdq_read_byte
[   17.964294] omap_hdq 480b2000.1w: hdq_isr: 2
[   17.984436] omap_hdq 480b2000.1w: hdq_write_byte
[   18.017578] omap_hdq 480b2000.1w: hdq_isr: 6
[   18.022521] omap_hdq 480b2000.1w: hdq_read_byte
[   18.027282] omap_hdq 480b2000.1w: hdq_isr: 0
[   18.287597] omap_hdq 480b2000.1w: timeout waiting for RXCOMPLETE, 0
[   18.294250] omap_hdq 480b2000.1w: hdq_write_byte
[   18.313720] omap_hdq 480b2000.1w: hdq_isr: 0
[   18.537536] omap_hdq 480b2000.1w: TX wait elapsed
[   18.542510] omap_hdq 480b2000.1w: TX failure:Ctrl status 0
[   18.577697] omap_hdq 480b2000.1w: hdq_read_byte
[   18.582489] omap_hdq 480b2000.1w: hdq_isr: 0
[   18.787597] omap_hdq 480b2000.1w: timeout waiting for RXCOMPLETE, 0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ