diff mbox series

ARM: Implement pgprot_device()

Message ID 20190114135638.13520-1-vincent.whitchurch@axis.com (mailing list archive)
State Mainlined, archived
Commit 58ca33824ff850bee93c850830a7b180486f3371
Headers show
Series ARM: Implement pgprot_device() | expand

Commit Message

Vincent Whitchurch Jan. 14, 2019, 1:56 p.m. UTC
This is used when mmapping the PCI resource* files in sys.  Because ARM
currently lacks an implementation of pgprot_device(), it falls back to
pgprot_uncached() (Strongly Ordered), but we should be able to use
Device memory instead.

Doing this speeds up large writes to the resource files by about 40% on
one of my systems.  It also ensures that mmaps on these resources use
the same memory type as ioremap().

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
---
 arch/arm/include/asm/pgtable.h | 3 +++
 1 file changed, 3 insertions(+)

Comments

Russell King (Oracle) Jan. 15, 2019, 10:24 a.m. UTC | #1
On Mon, Jan 14, 2019 at 02:56:38PM +0100, Vincent Whitchurch wrote:
> This is used when mmapping the PCI resource* files in sys.  Because ARM
> currently lacks an implementation of pgprot_device(), it falls back to
> pgprot_uncached() (Strongly Ordered), but we should be able to use
> Device memory instead.
> 
> Doing this speeds up large writes to the resource files by about 40% on
> one of my systems.  It also ensures that mmaps on these resources use
> the same memory type as ioremap().
> 
> Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>

Please drop this into the patch system, thanks.

(Please also note that stuff here has been undergoing a progressive
major reorganisation and renovation, so I hope that still works!  Note
that the website now supports https as of last night!)
Vincent Whitchurch Jan. 15, 2019, 3:08 p.m. UTC | #2
On Tue, Jan 15, 2019 at 10:24:29AM +0000, Russell King - ARM Linux admin wrote:
> Please drop this into the patch system, thanks.
> 
> (Please also note that stuff here has been undergoing a progressive
> major reorganisation and renovation, so I hope that still works!  Note
> that the website now supports https as of last night!)

The login page in the patch system doesn't seem to work if I go to it
from the https://www.armlinux.org.uk/developer/ page.  I always get the
"Error: The server detected that the session cookie was not retained by
your browser, or returned to the server..." message.  It only works if I
go to the login page
(https://www.armlinux.org.uk/utils/login.php?url=/developer/) directly
in a new incognito browser session.

I've tried several different browsers from two different networks so it
seems unlikely that the problem is on the client side.

Attempting to log in (from the incognito session) results in:

 Could not get user id: SQLSTATE[42000]: Syntax error or access
 violation: 1064 You have an error in your SQL syntax; check the manual
 that corresponds to your MySQL server version for the right syntax to
 use near 'foo@bar.com'' and password=PASSWORD(''foo'')' at line 1
Russell King (Oracle) Jan. 15, 2019, 5:04 p.m. UTC | #3
On Tue, Jan 15, 2019 at 04:08:16PM +0100, Vincent Whitchurch wrote:
> The login page in the patch system doesn't seem to work if I go to it
> from the https://www.armlinux.org.uk/developer/ page.  I always get the
> "Error: The server detected that the session cookie was not retained by
> your browser, or returned to the server..." message.  It only works if I
> go to the login page
> (https://www.armlinux.org.uk/utils/login.php?url=/developer/) directly
> in a new incognito browser session.
> 
> I've tried several different browsers from two different networks so it
> seems unlikely that the problem is on the client side.
> 
> Attempting to log in (from the incognito session) results in:
> 
>  Could not get user id: SQLSTATE[42000]: Syntax error or access
>  violation: 1064 You have an error in your SQL syntax; check the manual
>  that corresponds to your MySQL server version for the right syntax to
>  use near 'foo@bar.com'' and password=PASSWORD(''foo'')' at line 1

Argh, soo many problems!  Okay, should be resolved, and I hope I got
all the places where <unprintable> PHP has changed. ;)  Sorry about
that.
Vincent Whitchurch Jan. 16, 2019, 10:22 a.m. UTC | #4
On Tue, Jan 15, 2019 at 05:04:15PM +0000, Russell King - ARM Linux admin wrote:
> Argh, soo many problems!  Okay, should be resolved, and I hope I got
> all the places where <unprintable> PHP has changed. ;)  Sorry about
> that.

Thanks, the website now works, but the mail server seems to always fail
to deliver email to patches@armlinux.org.uk.  I'm using the same setup
which I've successfully used to send patches to the patch system before.

 From: Mail Delivery System <Mailer-Daemon@armlinux.org.uk>
 Subject: Mail delivery failed: returning message to sender
 
 [-- Attachment #1 --]
 [-- Type: text/plain, Encoding: 7bit, Size: 0.3K --]
 
 This message was created automatically by mail delivery software.
 
 A message that you sent could not be delivered to one or more of its
 recipients. This is a permanent error. The following address(es) failed:
 
   patches@mail.armlinux.org.uk
     local delivery failed
 
 [-- Attachment #2 --]
 [-- Type: message/delivery-status, Encoding: 7bit, Size: 0.1K --]
 
 Reporting-MTA: dns; mail.armlinux.org.uk
 
 Action: failed
 Final-Recipient: rfc822;patches@mail.armlinux.org.uk
 Status: 5.0.0
Russell King (Oracle) Jan. 16, 2019, 12:23 p.m. UTC | #5
On Wed, Jan 16, 2019 at 11:22:23AM +0100, Vincent Whitchurch wrote:
> On Tue, Jan 15, 2019 at 05:04:15PM +0000, Russell King - ARM Linux admin wrote:
> > Argh, soo many problems!  Okay, should be resolved, and I hope I got
> > all the places where <unprintable> PHP has changed. ;)  Sorry about
> > that.
> 
> Thanks, the website now works, but the mail server seems to always fail
> to deliver email to patches@armlinux.org.uk.  I'm using the same setup
> which I've successfully used to send patches to the patch system before.

Thanks for persisting and sorry for the ongoing hassle.  Looks like a
typo in the SQL grant tables for the new host name, which caused the
script to error out.  That should now be fixed.
diff mbox series

Patch

diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index a757401129f9..48ce1b19069b 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -125,6 +125,9 @@  extern pgprot_t		pgprot_s2_device;
 #define pgprot_stronglyordered(prot) \
 	__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED)
 
+#define pgprot_device(prot) \
+	__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_DEV_SHARED | L_PTE_SHARED | L_PTE_DIRTY | L_PTE_XN)
+
 #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
 #define pgprot_dmacoherent(prot) \
 	__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN)