From: peter@hurleysoftware.com (Peter Hurley)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 10/11] tty: amba-pl011: add support for 32-bit register access
Date: Wed, 4 Nov 2015 23:46:25 -0500 [thread overview]
Message-ID: <563ADF21.8000405@hurleysoftware.com> (raw)
In-Reply-To: <20151103161939.GB8644@n2100.arm.linux.org.uk>
On 11/03/2015 11:19 AM, Russell King - ARM Linux wrote:
> On Tue, Nov 03, 2015 at 08:57:05AM -0600, Timur Tabi wrote:
>> Russell King wrote:
>>> - return readw(uap->port.membase + pl011_reg_to_offset(uap, reg));
>>> + void __iomem *addr = uap->port.membase + pl011_reg_to_offset(uap, reg);
>>> +
>>> + return uap->access_32b ? readl(addr) : readw(addr);
>>
>> Ok, ignore my previous email. I just noticed this.
>>
>> This version is fine, except that it now performs a runtime check for every
>> I/O access. Isn't that too much overhead? access_32b will always be either
>> True or False for the life of the entire SOC.
>
> It's a balance between a few more branches and killing six registers
> (r0 - r3, ip, lr) on every register access due to a function call.
> If GCC was a reasonable compiler, it could be done without incuring
> any branches, merely by using conditional instructions, but GCC on
> ARM really sucks - it wants to reload the base address, offset and
> access_32b flag on every device access despite the struct being
> marked const.
The compiler reloads are probably due to the barriers in readw()/writew();
I think the relaxed i/o accessor variants avoid the reloads.
Regards,
Peter Hurley
next prev parent reply other threads:[~2015-11-05 4:46 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-02 12:24 [PATCH DRAFT 0/2] Sketch for ZTE ZX296702 UART integration Andre Przywara
2015-11-02 12:24 ` [PATCH DRAFT 1/2] drivers: serial: PL011: refactor register access Andre Przywara
2015-11-02 13:27 ` Timur Tabi
2015-11-02 13:40 ` Andre Przywara
2015-11-02 13:44 ` Timur Tabi
2015-11-02 12:24 ` [PATCH DRAFT 2/2] drivers: serial: PL011: [DRAFT] implement register diverson for ZTE UART Andre Przywara
2015-11-03 13:46 ` Russell King - ARM Linux
2015-11-03 13:57 ` Andre Przywara
2015-11-05 9:54 ` Jun Nie
2015-11-03 14:23 ` Russell King - ARM Linux
2015-11-03 14:30 ` Andre Przywara
2015-11-03 13:43 ` [PATCH DRAFT 0/2] Sketch for ZTE ZX296702 UART integration Russell King - ARM Linux
2015-11-03 14:48 ` Russell King - ARM Linux
2015-11-03 14:50 ` [PATCH 01/11] tty: amba-pl011: add register accessor functions Russell King
2015-11-03 14:53 ` Timur Tabi
2015-11-03 15:18 ` Russell King - ARM Linux
2015-11-03 14:51 ` [PATCH 02/11] tty: amba-pl011: convert accessor functions to take uart_amba_port Russell King
2015-11-03 14:51 ` [PATCH 03/11] tty: amba-pl011: add helper to detect split LCRH register Russell King
2015-11-03 14:51 ` [PATCH 04/11] tty: amba-pl011: prepare REG_* register indexes Russell King
2015-11-03 14:51 ` [PATCH 05/11] tty: amba-pl011: add register lookup table Russell King
2015-11-06 0:00 ` Timur Tabi
2015-11-06 0:24 ` Russell King - ARM Linux
2015-11-06 0:27 ` Timur Tabi
2015-12-13 6:03 ` Greg Kroah-Hartman
2015-11-03 14:51 ` [PATCH 06/11] tty: amba-pl011: add register offset table to vendor data Russell King
2015-11-03 14:51 ` [PATCH 07/11] tty: amba-pl011: add ST register offset table Russell King
2015-11-03 14:51 ` [PATCH 08/11] tty: amba-pl011: clean up LCR register offsets Russell King
2015-11-03 14:51 ` [PATCH 09/11] tty: amba-pl011: remove ST micro registers from standard table Russell King
2015-11-03 14:51 ` [PATCH 10/11] tty: amba-pl011: add support for 32-bit register access Russell King
2015-11-03 14:57 ` Timur Tabi
2015-11-03 16:19 ` Russell King - ARM Linux
2015-11-05 4:46 ` Peter Hurley [this message]
2015-11-03 14:51 ` [PATCH 11/11] tty: amba-pl011: add support for ZTE UART (EXPERIMENTAL) Russell King
2015-11-05 8:28 ` Linus Walleij
2015-11-05 9:27 ` Russell King - ARM Linux
2015-11-05 9:54 ` Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=563ADF21.8000405@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).