All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: Hector Martin 'marcan' <marcan@marcan.st>
Cc: soc@kernel.org, linux-arm-kernel@lists.infradead.org,
	robh+dt@kernel.org, Arnd Bergmann <arnd@kernel.org>,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	Olof Johansson <olof@lixom.net>
Subject: Re: [PATCH 05/18] tty: serial: samsung_tty: add support for Apple UARTs
Date: Mon, 08 Feb 2021 10:34:07 +0000	[thread overview]
Message-ID: <73116feaa00de9173d1f2c35ce16e08f@kernel.org> (raw)
In-Reply-To: <e842f37d-d788-2d34-05e4-86ef94aed8f5@marcan.st>

On 2021-02-07 09:12, Hector Martin 'marcan' wrote:
> On 06/02/2021 22.15, Marc Zyngier wrote:

[...]

>>> -	spin_lock_irqsave(&port->lock, flags);
>>> +	/* Only lock if called from IRQ context */
>>> +	if (irq != NO_IRQ)
>>> +		spin_lock_irqsave(&port->lock, flags);
>> 
>> Isn't that actually dangerous? What prevents the interrupt from firing
>> right in the middle of this sequence and create havoc when called from
>> enable_tx_pio()? I fail to see what you gain with sidestepping the
>> locking.
> 
> The callpath here is:
> 
> uart_start -> __uart_start -> (uart_ops.start_tx)
> s3c24xx_serial_start_tx -> s3c24xx_serial_start_tx_pio ->
> enable_tx_pio -> s3c24xx_serial_tx_chars
> 
> And uart_start takes the uart_port lock. None of the serial functions
> take the lock because the serial core already does, but obviously the
> IRQ handler needs to, *if* it's called as an IRQ handler only.

Right, that's the part I missed, thanks for pointing this out.
It'd probably be cleaner to move the whole s3c24xx_serial_tx_chars()
into a helper and keep the locking in the interrupt handler proper.

[...]

>>> diff --git a/include/uapi/linux/serial_core.h 
>>> b/include/uapi/linux/serial_core.h
>>> index 62c22045fe65..59d102b674db 100644
>>> --- a/include/uapi/linux/serial_core.h
>>> +++ b/include/uapi/linux/serial_core.h
>>> @@ -277,4 +277,7 @@
>>>   /* Freescale LINFlexD UART */
>>>   #define PORT_LINFLEXUART	122
>>>   +/* Apple Silicon (M1/T8103) UART (Samsung variant) */
>>> +#define PORT_APPLE	123
>>> +
>> 
>> Do you actually need a new port type here? Looking at the driver
>> itself, it is mainly used to work out the IRQ model. Maybe introducing
>> a new irq_type field in the port structure would be better than
>> exposing this to userspace (which should see something that is exactly
>> the same as a S3C UART).
> 
> Well... every S3C variant already has its own port type here.
> 
> #define PORT_S3C2410    55
> #define PORT_S3C2440    61
> #define PORT_S3C2400    67
> #define PORT_S3C2412    73
> #define PORT_S3C6400    84
> 
> If we don't introduce a new one, which one should we pretend to be? :)

Pick one! :D

> I agree that it might make sense to merge all of these into one,
> though; I don't know what the original reason for splitting them out
> is. But now that they're part of the userspace API, this might not be
> a good idea. Though, unsurprisingly, some googling suggests there are
> zero users of these defines in userspace.

I don't think we can do that, but I don't think we should keep adding
to this unless there is a very good reason. Greg would know, I expect.

Thanks,

          M.
-- 
Jazz is not dead. It just smells funny...

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: Hector Martin 'marcan' <marcan@marcan.st>
Cc: Arnd Bergmann <arnd@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	soc@kernel.org, robh+dt@kernel.org,
	Olof Johansson <olof@lixom.net>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 05/18] tty: serial: samsung_tty: add support for Apple UARTs
Date: Mon, 08 Feb 2021 10:34:07 +0000	[thread overview]
Message-ID: <73116feaa00de9173d1f2c35ce16e08f@kernel.org> (raw)
Message-ID: <20210208103407.I7uCH_V2YuVWjBtIf1J2xiTT0RBj2ciQUYDb5i3zJlE@z> (raw)
In-Reply-To: <e842f37d-d788-2d34-05e4-86ef94aed8f5@marcan.st>

On 2021-02-07 09:12, Hector Martin 'marcan' wrote:
> On 06/02/2021 22.15, Marc Zyngier wrote:

[...]

>>> -	spin_lock_irqsave(&port->lock, flags);
>>> +	/* Only lock if called from IRQ context */
>>> +	if (irq != NO_IRQ)
>>> +		spin_lock_irqsave(&port->lock, flags);
>> 
>> Isn't that actually dangerous? What prevents the interrupt from firing
>> right in the middle of this sequence and create havoc when called from
>> enable_tx_pio()? I fail to see what you gain with sidestepping the
>> locking.
> 
> The callpath here is:
> 
> uart_start -> __uart_start -> (uart_ops.start_tx)
> s3c24xx_serial_start_tx -> s3c24xx_serial_start_tx_pio ->
> enable_tx_pio -> s3c24xx_serial_tx_chars
> 
> And uart_start takes the uart_port lock. None of the serial functions
> take the lock because the serial core already does, but obviously the
> IRQ handler needs to, *if* it's called as an IRQ handler only.

Right, that's the part I missed, thanks for pointing this out.
It'd probably be cleaner to move the whole s3c24xx_serial_tx_chars()
into a helper and keep the locking in the interrupt handler proper.

[...]

>>> diff --git a/include/uapi/linux/serial_core.h 
>>> b/include/uapi/linux/serial_core.h
>>> index 62c22045fe65..59d102b674db 100644
>>> --- a/include/uapi/linux/serial_core.h
>>> +++ b/include/uapi/linux/serial_core.h
>>> @@ -277,4 +277,7 @@
>>>   /* Freescale LINFlexD UART */
>>>   #define PORT_LINFLEXUART	122
>>>   +/* Apple Silicon (M1/T8103) UART (Samsung variant) */
>>> +#define PORT_APPLE	123
>>> +
>> 
>> Do you actually need a new port type here? Looking at the driver
>> itself, it is mainly used to work out the IRQ model. Maybe introducing
>> a new irq_type field in the port structure would be better than
>> exposing this to userspace (which should see something that is exactly
>> the same as a S3C UART).
> 
> Well... every S3C variant already has its own port type here.
> 
> #define PORT_S3C2410    55
> #define PORT_S3C2440    61
> #define PORT_S3C2400    67
> #define PORT_S3C2412    73
> #define PORT_S3C6400    84
> 
> If we don't introduce a new one, which one should we pretend to be? :)

Pick one! :D

> I agree that it might make sense to merge all of these into one,
> though; I don't know what the original reason for splitting them out
> is. But now that they're part of the userspace API, this might not be
> a good idea. Though, unsurprisingly, some googling suggests there are
> zero users of these defines in userspace.

I don't think we can do that, but I don't think we should keep adding
to this unless there is a very good reason. Greg would know, I expect.

Thanks,

          M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-02-08 10:34 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-04 20:39 [PATCH 00/18] Apple M1 SoC platform bring-up Hector Martin
2021-02-04 20:39 ` Hector Martin
2021-02-04 20:39 ` [PATCH 01/18] dt-bindings: vendor-prefixes: add AAPL prefix Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-08 10:27   ` Krzysztof Kozlowski
2021-02-08 10:27     ` Krzysztof Kozlowski
2021-02-08 17:32     ` Rob Herring
2021-02-08 17:32       ` Rob Herring
2021-02-08 18:12       ` Krzysztof Kozlowski
2021-02-08 18:12         ` Krzysztof Kozlowski
2021-02-08 19:59         ` Arnd Bergmann
2021-02-08 19:59           ` Arnd Bergmann
2021-02-08 23:17         ` Hector Martin
2021-02-08 23:17           ` Hector Martin
2021-02-04 20:39 ` [PATCH 02/18] dt-bindings: arm: cpus: Add AAPL, firestorm & icestorm compatibles Hector Martin
2021-02-04 20:39   ` [PATCH 02/18] dt-bindings: arm: cpus: Add AAPL,firestorm " Hector Martin
2021-02-04 20:39 ` [PATCH 03/18] dt-bindings: arm: AAPL: Add bindings for Apple ARM platforms Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 20:39 ` [PATCH 04/18] arm64: Kconfig: Introduce CONFIG_ARCH_APPLE Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-06 13:17   ` Marc Zyngier
2021-02-06 13:17     ` Marc Zyngier
2021-02-07  8:05     ` Hector Martin 'marcan'
2021-02-07  8:05       ` Hector Martin 'marcan'
2021-02-04 20:39 ` [PATCH 05/18] tty: serial: samsung_tty: add support for Apple UARTs Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 23:55   ` kernel test robot
2021-02-04 23:55     ` kernel test robot
2021-02-04 23:55     ` kernel test robot
2021-02-05  9:44     ` Hector Martin 'marcan'
2021-02-05  9:44       ` Hector Martin 'marcan'
2021-02-05  2:19   ` kernel test robot
2021-02-05  2:19     ` kernel test robot
2021-02-05  2:19     ` kernel test robot
2021-02-06 13:15   ` Marc Zyngier
2021-02-06 13:15     ` Marc Zyngier
2021-02-07  9:12     ` Hector Martin 'marcan'
2021-02-07  9:12       ` Hector Martin 'marcan'
2021-02-07  9:26       ` Hector Martin 'marcan'
2021-02-07  9:26         ` Hector Martin 'marcan'
2021-02-08  9:36         ` Krzysztof Kozlowski
2021-02-08  9:36           ` Krzysztof Kozlowski
2021-02-08 16:14           ` Hector Martin
2021-02-08 16:14             ` Hector Martin
2021-02-08 10:34       ` Marc Zyngier [this message]
2021-02-08 10:34         ` Marc Zyngier
2021-02-08 16:18         ` Hector Martin
2021-02-08 16:18           ` Hector Martin
2021-02-08 16:46           ` Greg Kroah-Hartman
2021-02-08 16:46             ` Greg Kroah-Hartman
2021-02-08 23:22             ` Hector Martin
2021-02-08 23:22               ` Hector Martin
2021-02-08 10:54   ` Krzysztof Kozlowski
2021-02-08 10:54     ` Krzysztof Kozlowski
2021-02-08 16:10     ` Hector Martin
2021-02-08 16:10       ` Hector Martin
2021-02-08 18:37       ` Krzysztof Kozlowski
2021-02-08 18:37         ` Krzysztof Kozlowski
2021-02-08 23:23         ` Hector Martin
2021-02-08 23:23           ` Hector Martin
2021-02-04 20:39 ` [PATCH 06/18] dt-bindings: serial: samsung: Add AAPL, s5l-uart compatible Hector Martin
2021-02-04 20:39   ` [PATCH 06/18] dt-bindings: serial: samsung: Add AAPL,s5l-uart compatible Hector Martin
2021-02-04 20:39 ` [PATCH 07/18] tty: serial: samsung_tty: enable for ARCH_APPLE Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 21:16   ` Arnd Bergmann
2021-02-04 21:16     ` Arnd Bergmann
2021-02-04 21:27     ` Hector Martin 'marcan'
2021-02-04 21:27       ` Hector Martin 'marcan'
2021-02-04 20:39 ` [PATCH 08/18] arm64: cpufeature: Add a feature for FIQ support Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-06 13:58   ` Marc Zyngier
2021-02-06 13:58     ` Marc Zyngier
2021-02-07  8:28     ` Hector Martin 'marcan'
2021-02-07  8:28       ` Hector Martin 'marcan'
2021-02-08 11:29       ` Marc Zyngier
2021-02-08 11:29         ` Marc Zyngier
2021-02-08 15:51         ` Hector Martin
2021-02-08 15:51           ` Hector Martin
2021-02-04 20:39 ` [PATCH 09/18] arm64: cputype: Add CPU types for the Apple M1 big/little cores Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 20:39 ` [PATCH 10/18] arm64: Introduce FIQ support Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-06 15:37   ` Marc Zyngier
2021-02-06 15:37     ` Marc Zyngier
2021-02-06 16:22     ` Arnd Bergmann
2021-02-06 16:22       ` Arnd Bergmann
2021-02-07  8:36       ` Hector Martin 'marcan'
2021-02-07  8:36         ` Hector Martin 'marcan'
2021-02-07 12:25         ` Arnd Bergmann
2021-02-07 12:25           ` Arnd Bergmann
2021-02-07 15:38           ` Hector Martin 'marcan'
2021-02-07 15:38             ` Hector Martin 'marcan'
2021-02-07 18:49             ` Arnd Bergmann
2021-02-07 18:49               ` Arnd Bergmann
2021-02-08 23:34               ` Hector Martin
2021-02-08 23:34                 ` Hector Martin
2021-02-07  8:47     ` Hector Martin 'marcan'
2021-02-07  8:47       ` Hector Martin 'marcan'
2021-02-08 11:30       ` Marc Zyngier
2021-02-08 11:30         ` Marc Zyngier
2021-02-04 20:39 ` [PATCH 11/18] arm64: Kconfig: Require FIQ support for ARCH_APPLE Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-06 15:46   ` Marc Zyngier
2021-02-06 15:46     ` Marc Zyngier
2021-02-07  9:23     ` Hector Martin 'marcan'
2021-02-07  9:23       ` Hector Martin 'marcan'
2021-02-08 12:05       ` Marc Zyngier
2021-02-08 12:05         ` Marc Zyngier
2021-02-08 15:48         ` Hector Martin
2021-02-08 15:48           ` Hector Martin
2021-02-04 20:39 ` [PATCH 12/18] arm64: setup: Use nGnRnE IO mappings for fixmap on Apple platforms Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 22:25   ` Arnd Bergmann
2021-02-04 22:25     ` Arnd Bergmann
2021-02-04 20:39 ` [PATCH 13/18] arm64: ioremap: use nGnRnE mappings on platforms that require it Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 22:21   ` Arnd Bergmann
2021-02-04 22:21     ` Arnd Bergmann
2021-02-08 22:57   ` Arnd Bergmann
2021-02-08 22:57     ` Arnd Bergmann
2021-02-08 23:20     ` Mark Kettenis
2021-02-08 23:20       ` Mark Kettenis
2021-02-09  0:25       ` Hector Martin
2021-02-09  0:25         ` Hector Martin
2021-02-09  9:15         ` Arnd Bergmann
2021-02-09  9:15           ` Arnd Bergmann
2021-02-09  9:58           ` Mark Kettenis
2021-02-09  9:58             ` Mark Kettenis
2021-02-09 11:22           ` Hector Martin
2021-02-09 11:22             ` Hector Martin
2021-02-09  9:35       ` Arnd Bergmann
2021-02-09  9:35         ` Arnd Bergmann
2021-02-10 12:24     ` Hector Martin
2021-02-10 12:24       ` Hector Martin
2021-02-10 13:40       ` Mark Kettenis
2021-02-10 13:40         ` Mark Kettenis
2021-02-04 20:39 ` [PATCH 14/18] dt-bindings: interrupt-controller: Add DT bindings for apple-aic Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-09 23:07   ` Rob Herring
2021-02-09 23:07     ` Rob Herring
2021-02-04 20:39 ` [PATCH 15/18] irqchip/apple-aic: Add support for the Apple Interrupt Controller Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 21:37   ` Arnd Bergmann
2021-02-04 21:37     ` Arnd Bergmann
2021-02-04 22:04     ` Hector Martin 'marcan'
2021-02-04 22:04       ` Hector Martin 'marcan'
2021-02-04 23:04       ` Arnd Bergmann
2021-02-04 23:04         ` Arnd Bergmann
2021-02-05  7:41         ` Hector Martin 'marcan'
2021-02-05  7:41           ` Hector Martin 'marcan'
2021-02-05 10:33           ` Arnd Bergmann
2021-02-05 10:33             ` Arnd Bergmann
2021-02-05  2:27   ` kernel test robot
2021-02-05  2:27     ` kernel test robot
2021-02-05  2:27     ` kernel test robot
2021-02-05  9:45     ` Hector Martin 'marcan'
2021-02-05  9:45       ` Hector Martin 'marcan'
2021-02-08  9:25   ` Marc Zyngier
2021-02-08  9:25     ` Marc Zyngier
2021-02-08 10:29     ` Arnd Bergmann
2021-02-08 10:29       ` Arnd Bergmann
2021-02-08 11:13       ` Hector Martin 'marcan'
2021-02-08 11:13         ` Hector Martin 'marcan'
2021-02-08 11:21         ` Arnd Bergmann
2021-02-08 11:21           ` Arnd Bergmann
2021-02-08 11:36       ` Marc Zyngier
2021-02-08 11:36         ` Marc Zyngier
2021-02-08 12:17         ` Arnd Bergmann
2021-02-08 12:17           ` Arnd Bergmann
2021-02-08 15:31         ` Hector Martin
2021-02-08 15:31           ` Hector Martin
2021-02-09  6:20     ` Hector Martin
2021-02-09  6:20       ` Hector Martin
2021-02-04 20:39 ` [PATCH 16/18] irqchip/apple-aic: Add SMP / IPI support Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 20:39 ` [PATCH 17/18] dt-bindings: display: add AAPL,simple-framebuffer Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 20:39 ` [PATCH 18/18] arm64: apple: Add initial Mac Mini 2020 (M1) devicetree Hector Martin
2021-02-04 20:39   ` Hector Martin
2021-02-04 21:29   ` Arnd Bergmann
2021-02-04 21:29     ` Arnd Bergmann
2021-02-04 21:44     ` Hector Martin 'marcan'
2021-02-04 21:44       ` Hector Martin 'marcan'
2021-02-04 23:08       ` Arnd Bergmann
2021-02-04 23:08         ` Arnd Bergmann
2021-02-05  7:11         ` Hector Martin 'marcan'
2021-02-05  7:11           ` Hector Martin 'marcan'
2021-02-05 12:43           ` Arnd Bergmann
2021-02-05 12:43             ` Arnd Bergmann
2021-02-08 11:04   ` Krzysztof Kozlowski
2021-02-08 11:04     ` Krzysztof Kozlowski
2021-02-08 11:56     ` Hector Martin 'marcan'
2021-02-08 11:56       ` Hector Martin 'marcan'
2021-02-08 12:13       ` Krzysztof Kozlowski
2021-02-08 12:13         ` Krzysztof Kozlowski
2021-02-08 12:40         ` Arnd Bergmann
2021-02-08 12:40           ` Arnd Bergmann
2021-02-08 14:12           ` Hector Martin
2021-02-08 14:12             ` Hector Martin
2021-02-08 17:58             ` Rob Herring
2021-02-08 17:58               ` Rob Herring
2021-02-09  0:32               ` Hector Martin
2021-02-09  0:32                 ` Hector Martin
2021-02-08 19:14       ` Rob Herring
2021-02-08 19:14         ` Rob Herring
2021-02-09  0:49         ` Hector Martin
2021-02-09  0:49           ` Hector Martin
2021-02-09  2:05           ` Rob Herring
2021-02-09  2:05             ` Rob Herring
2021-02-10 10:19       ` Tony Lindgren
2021-02-10 10:19         ` Tony Lindgren
2021-02-10 11:07         ` Hector Martin
2021-02-10 11:07           ` Hector Martin
2021-02-10 11:34           ` Tony Lindgren
2021-02-10 11:34             ` Tony Lindgren
2021-02-10 11:43             ` Hector Martin
2021-02-10 11:43               ` Hector Martin
2021-02-10 12:24               ` Daniel Palmer
2021-02-10 12:24                 ` Daniel Palmer
2021-02-10 12:54                 ` Tony Lindgren
2021-02-10 12:54                   ` Tony Lindgren
2021-02-10 12:56                 ` Hector Martin
2021-02-10 12:56                   ` Hector Martin
2021-02-10 12:55             ` Krzysztof Kozlowski
2021-02-10 12:55               ` Krzysztof Kozlowski
2021-02-10 13:19               ` Tony Lindgren
2021-02-10 13:19                 ` Tony Lindgren
2021-02-10 13:25                 ` Krzysztof Kozlowski
2021-02-10 13:25                   ` Krzysztof Kozlowski
2021-02-08 12:27   ` Marc Zyngier
2021-02-08 12:27     ` Marc Zyngier
2021-02-08 14:53     ` Hector Martin
2021-02-08 14:53       ` Hector Martin
2021-02-08 15:36       ` Marc Zyngier
2021-02-08 15:36         ` Marc Zyngier
2021-02-04 22:43 ` [PATCH 00/18] Apple M1 SoC platform bring-up Arnd Bergmann
2021-02-04 22:43   ` Arnd Bergmann
2021-02-05 11:35 ` Hector Martin 'marcan'
2021-02-05 11:35   ` Hector Martin 'marcan'

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=73116feaa00de9173d1f2c35ce16e08f@kernel.org \
    --to=maz@kernel.org \
    --cc=arnd@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcan@marcan.st \
    --cc=olof@lixom.net \
    --cc=robh+dt@kernel.org \
    --cc=soc@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.