Re: [PATCH] alpha: add udelay to io port paths

2019-04-05 Thread Sinan Kaya
On 4/5/2019 2:28 PM, Maciej W. Rozycki wrote: You basically can't remove the mb() after __ioread() and before __iowrite() unless your architecture guarantees IO vs. memory ordering. I never suggested that; please check my example too. Sounds good. Sorry for the noise. I just wanted to make

Re: [PATCH] alpha: add udelay to io port paths

2019-04-05 Thread Sinan Kaya
On 4/5/2019 1:29 PM, Maciej W. Rozycki wrote: Obviously you do need that `mb' before `__ioread' in the second case, just like in the first one, because otherwise the read bus access issued by `__ioread' can be reordered ahead of the write bus access issued by the preceding `__iowrite'.

Re: [PATCH] add delay between port write and port read

2019-02-27 Thread Sinan Kaya
On 2/27/2019 12:12 PM, Mikulas Patocka wrote: It used to be like that and it worked. Then, commits cd0e00c106722eca40b38ebf11cf134c01901086 and 92d7223a74235054f2aa7227d207d9c57f84dca0 came. These commits claim that they changed the code to be consistent with the specification (now we have

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-22 Thread Sinan Kaya
On 8/22/2018 3:56 PM, Mikulas Patocka wrote: On Wed, 22 Aug 2018, Sinan Kaya wrote: On 8/22/2018 1:47 PM, Mikulas Patocka wrote: If ARM guarantees that the accesses to a given device are not reordered - then the barriers in readl and writel are superfluous. It is not. ARM only guarantees

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-22 Thread Sinan Kaya
On 8/22/2018 1:47 PM, Mikulas Patocka wrote: If ARM guarantees that the accesses to a given device are not reordered - then the barriers in readl and writel are superfluous. It is not. ARM only guarantees ordering of read/write transactions targeting a device not memory. example: write

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-22 Thread Sinan Kaya
On 8/22/2018 7:59 AM, Mikulas Patocka wrote: I did some tests on framebuffer and found out that "read+read+write+write" is faster than "read+write+read+write" - that may suggest that the reads flush the write queue. I think we are worried about correctness at this moment like a raw_read

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-20 Thread Sinan Kaya
On 8/20/2018 6:39 PM, Maciej W. Rozycki wrote: On Mon, 20 Aug 2018, Sinan Kaya wrote: That is that the caller must not assume that writes issued by `writeX' calls will be observed in order on the external bus or specifically by the device addressed. Where do you see it? Right

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-20 Thread Sinan Kaya
On 8/20/2018 5:50 PM, Maciej W. Rozycki wrote: That is that the caller must not assume that writes issued by `writeX' calls will be observed in order on the external bus or specifically by the device addressed. Where do you see it? I interpret that two writeX() need to be observed in order

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-19 Thread Sinan Kaya
On 8/19/2018 11:41 AM, Arnd Bergmann wrote: Sounds like we need a similar solution for all architectures that require mmiowb(). That depends on how expensive the barrier is on a given architecture. It's possible that doing adding the barrier every time is actually cheaper than keeping track of

Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130

2018-08-19 Thread Sinan Kaya
On 8/19/2018 11:21 AM, Arnd Bergmann wrote: This matches my understanding of mmiowb. In fact, mmiowb is a powerpc thing. All other architectures stub out. There are a few architectures that define mmiowb to something other than a nop: some ia64, some mips and sh in particular, plus also the new

Re: [PATCH] alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering #2

2018-05-01 Thread Sinan Kaya
On 4/20/2018 12:20 PM, Sinan Kaya wrote: > Hi Matt, > > On 4/17/2018 2:43 PM, Sinan Kaya wrote: >> On 4/16/2018 6:16 PM, Sinan Kaya wrote: >>> memory-barriers.txt has been updated with the following requirement. >>> >>> "When using wri

Re: [PATCH] alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering #2

2018-04-20 Thread Sinan Kaya
Hi Matt, On 4/17/2018 2:43 PM, Sinan Kaya wrote: > On 4/16/2018 6:16 PM, Sinan Kaya wrote: >> memory-barriers.txt has been updated with the following requirement. >> >> "When using writel(), a prior wmb() is not needed to guarantee that the >> cache coherent mem

Re: [PATCH] alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering

2018-04-05 Thread Sinan Kaya
On 4/2/2018 1:48 PM, Sinan Kaya wrote: > memory-barriers.txt has been updated with the following requirement. > > "When using writel(), a prior wmb() is not needed to guarantee that the > cache coherent memory writes have completed before writing to the MMIO > region.&

[PATCH] alpha: io: reorder barriers to guarantee writeX() and iowriteX() ordering

2018-04-02 Thread Sinan Kaya
satisfying this requirement as the barrier is after the register write. Move mb() in writeX() and iowriteX() functions to guarantee that HW observes memory changes before performing register operations. Signed-off-by: Sinan Kaya <ok...@codeaurora.org> Reported-by: Arnd Bergmann <a...@

Broken DMA vs MMIO ordering

2018-03-29 Thread Sinan Kaya
(addr); mb(); return ret; } extern inline void writel(u32 b, volatile void __iomem *addr) { __raw_writel(b, addr); mb(); } There is a barrier in writel /after/ the access but not before." Can somebody familiar with alpha evaluate this? Sinan -- Sinan Kay

Re: [PATCH V4 01/26] alpha/PCI: deprecate pci_get_bus_and_slot()

2018-01-03 Thread Sinan Kaya
On 12/19/2017 12:37 AM, Sinan Kaya wrote: > pci_get_bus_and_slot() is restrictive such that it assumes domain=0 as > where a PCI device is present. This restricts the device drivers to be > reused for other domain numbers. > > Use pci_get_domain_bus_and_slot() with a domain numbe

[PATCH 01/30] alpha/PCI: deprecate pci_get_bus_and_slot()

2017-11-21 Thread Sinan Kaya
the actual domain number from the device. Signed-off-by: Sinan Kaya <ok...@codeaurora.org> --- arch/alpha/kernel/pci.c | 2 +- arch/alpha/kernel/sys_nautilus.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c