linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] arm64: dts: marvell: Move arch timer and pmu nodes to top-level
@ 2025-02-26 21:47 Rob Herring (Arm)
  2025-02-26 21:47 ` [PATCH 2/3] arm64: dts: marvell: Drop unused CP11X_TYPE define Rob Herring (Arm)
  2025-02-26 21:47 ` [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus" Rob Herring (Arm)
  0 siblings, 2 replies; 5+ messages in thread
From: Rob Herring (Arm) @ 2025-02-26 21:47 UTC (permalink / raw)
  To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-kernel, devicetree, linux-kernel

The Arm arch timer and PMU are not memory-mapped peripherals, and
therefore should not be under a "simple-bus" node. Move them to the
top-level like other platforms.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
 arch/arm64/boot/dts/marvell/armada-ap80x.dtsi | 29 ++++++++++---------
 .../boot/dts/marvell/armada-ap810-ap0.dtsi    | 18 ++++++------
 2 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
index fdf88cd0eb02..e206d03a2867 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
@@ -48,6 +48,21 @@ tee@4400000 {
 		};
 	};
 
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupt-parent = <&gic>;
+		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+				<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+				<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+				<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+	};
+
+	pmu {
+		compatible = "arm,cortex-a72-pmu";
+		interrupt-parent = <&pic>;
+		interrupts = <17>;
+	};
+
 	AP_NAME {
 		#address-cells = <2>;
 		#size-cells = <2>;
@@ -122,20 +137,6 @@ gic_v2m3: v2m@2b0000 {
 				};
 			};
 
-			timer {
-				compatible = "arm,armv8-timer";
-				interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-					     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-					     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-					     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-			};
-
-			pmu {
-				compatible = "arm,cortex-a72-pmu";
-				interrupt-parent = <&pic>;
-				interrupts = <17>;
-			};
-
 			odmi: odmi@300000 {
 				compatible = "marvell,odmi-controller";
 				msi-controller;
diff --git a/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi b/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
index 2f9ab6b4a2c9..f5a89af154d4 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
@@ -14,6 +14,7 @@ / {
 	compatible = "marvell,armada-ap810";
 	#address-cells = <2>;
 	#size-cells = <2>;
+	interrupt-parent = <&gic>;
 
 	aliases {
 		serial0 = &uart0_ap0;
@@ -25,11 +26,18 @@ psci {
 		method = "smc";
 	};
 
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+				<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+				<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+				<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+	};
+
 	ap810-ap0 {
 		#address-cells = <2>;
 		#size-cells = <2>;
 		compatible = "simple-bus";
-		interrupt-parent = <&gic>;
 		ranges;
 
 		config-space@e8000000 {
@@ -62,14 +70,6 @@ gic_its_ap0: msi-controller@3040000 {
 				};
 			};
 
-			timer {
-				compatible = "arm,armv8-timer";
-				interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
-					     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
-					     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
-					     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
-			};
-
 			xor@400000 {
 				compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
 				reg = <0x400000 0x1000>,
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] arm64: dts: marvell: Drop unused CP11X_TYPE define
  2025-02-26 21:47 [PATCH 1/3] arm64: dts: marvell: Move arch timer and pmu nodes to top-level Rob Herring (Arm)
@ 2025-02-26 21:47 ` Rob Herring (Arm)
  2025-02-26 21:47 ` [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus" Rob Herring (Arm)
  1 sibling, 0 replies; 5+ messages in thread
From: Rob Herring (Arm) @ 2025-02-26 21:47 UTC (permalink / raw)
  To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-kernel, devicetree, linux-kernel

The CP11X_TYPE define is not used anywhere, remove it.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
 arch/arm64/boot/dts/marvell/armada-cp110.dtsi | 4 ----
 arch/arm64/boot/dts/marvell/armada-cp115.dtsi | 4 ----
 2 files changed, 8 deletions(-)

diff --git a/arch/arm64/boot/dts/marvell/armada-cp110.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110.dtsi
index 4fd33b0fa56e..e3cfd168becc 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110.dtsi
@@ -5,8 +5,4 @@
  * Device Tree file for Marvell Armada CP110.
  */
 
-#define CP11X_TYPE cp110
-
 #include "armada-cp11x.dtsi"
-
-#undef CP11X_TYPE
diff --git a/arch/arm64/boot/dts/marvell/armada-cp115.dtsi b/arch/arm64/boot/dts/marvell/armada-cp115.dtsi
index 1d0a9653e681..ec6432c8db7c 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp115.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp115.dtsi
@@ -5,8 +5,4 @@
  * Device Tree file for Marvell Armada CP115.
  */
 
-#define CP11X_TYPE cp115
-
 #include "armada-cp11x.dtsi"
-
-#undef CP11X_TYPE
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus"
  2025-02-26 21:47 [PATCH 1/3] arm64: dts: marvell: Move arch timer and pmu nodes to top-level Rob Herring (Arm)
  2025-02-26 21:47 ` [PATCH 2/3] arm64: dts: marvell: Drop unused CP11X_TYPE define Rob Herring (Arm)
@ 2025-02-26 21:47 ` Rob Herring (Arm)
  2025-04-12  0:17   ` Vladimir Oltean
  1 sibling, 1 reply; 5+ messages in thread
From: Rob Herring (Arm) @ 2025-02-26 21:47 UTC (permalink / raw)
  To: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
	Krzysztof Kozlowski, Conor Dooley
  Cc: linux-arm-kernel, devicetree, linux-kernel

The "simple-bus" binding has preferred node names such as "bus",
".*-bus", or "soc". Rename the Marvell platforms to use these names.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
---
 arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi     | 2 +-
 arch/arm64/boot/dts/marvell/armada-37xx.dtsi      | 2 +-
 arch/arm64/boot/dts/marvell/armada-ap806.dtsi     | 1 -
 arch/arm64/boot/dts/marvell/armada-ap807.dtsi     | 1 -
 arch/arm64/boot/dts/marvell/armada-ap80x.dtsi     | 4 ++--
 arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi | 4 ++--
 arch/arm64/boot/dts/marvell/armada-cp11x.dtsi     | 4 ++--
 7 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi b/arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi
index 75377c292bcb..605f5be1538c 100644
--- a/arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi
@@ -78,7 +78,7 @@ soc {
 		#size-cells = <2>;
 		ranges;
 
-		internal-regs@7f000000 {
+		bus@7f000000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 			compatible = "simple-bus";
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 9603223dd761..6ec22eaaf816 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -78,7 +78,7 @@ soc {
 		#size-cells = <2>;
 		ranges;
 
-		internal-regs@d0000000 {
+		bus@d0000000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 			compatible = "simple-bus";
diff --git a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
index 866628679ac7..e421d454daa7 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap806.dtsi
@@ -5,7 +5,6 @@
  * Device Tree file for Marvell Armada AP806.
  */
 
-#define AP_NAME		ap806
 #include "armada-ap80x.dtsi"
 
 / {
diff --git a/arch/arm64/boot/dts/marvell/armada-ap807.dtsi b/arch/arm64/boot/dts/marvell/armada-ap807.dtsi
index a3328d05fc94..7150ce83abf2 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap807.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap807.dtsi
@@ -5,7 +5,6 @@
  * Copyright (C) 2019 Marvell Technology Group Ltd.
  */
 
-#define AP_NAME		ap807
 #include "armada-ap80x.dtsi"
 
 / {
diff --git a/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
index e206d03a2867..40e146982921 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap80x.dtsi
@@ -63,14 +63,14 @@ pmu {
 		interrupts = <17>;
 	};
 
-	AP_NAME {
+	soc {
 		#address-cells = <2>;
 		#size-cells = <2>;
 		compatible = "simple-bus";
 		interrupt-parent = <&gic>;
 		ranges;
 
-		config-space@f0000000 {
+		bus@f0000000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 			compatible = "simple-bus";
diff --git a/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi b/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
index f5a89af154d4..a143d84bcf23 100644
--- a/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi
@@ -34,13 +34,13 @@ timer {
 				<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
 	};
 
-	ap810-ap0 {
+	soc {
 		#address-cells = <2>;
 		#size-cells = <2>;
 		compatible = "simple-bus";
 		ranges;
 
-		config-space@e8000000 {
+		bus@e8000000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
 			compatible = "simple-bus";
diff --git a/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi b/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
index 161beec0b6b0..a057e119492f 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp11x.dtsi
@@ -17,7 +17,7 @@ / {
 	 * The contents of the node are defined below, in order to
 	 * save one indentation level
 	 */
-	CP11X_NAME: CP11X_NAME { };
+	CP11X_NAME: CP11X_NODE_NAME(bus) { };
 
 	/*
 	 * CPs only have one sensor in the thermal IC.
@@ -51,7 +51,7 @@ &CP11X_NAME {
 	interrupt-parent = <&CP11X_LABEL(icu_nsr)>;
 	ranges;
 
-	config-space@CP11X_BASE {
+	bus@CP11X_BASE {
 		#address-cells = <1>;
 		#size-cells = <1>;
 		compatible = "simple-bus";
-- 
2.47.2



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus"
  2025-02-26 21:47 ` [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus" Rob Herring (Arm)
@ 2025-04-12  0:17   ` Vladimir Oltean
  2025-04-14 12:41     ` Marek Behún
  0 siblings, 1 reply; 5+ messages in thread
From: Vladimir Oltean @ 2025-04-12  0:17 UTC (permalink / raw)
  To: Rob Herring (Arm), Marek Behún
  Cc: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
	linux-kernel

Hello,

On Wed, Feb 26, 2025 at 03:47:49PM -0600, Rob Herring (Arm) wrote:
> The "simple-bus" binding has preferred node names such as "bus",
> ".*-bus", or "soc". Rename the Marvell platforms to use these names.
> 
> Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
> ---
>  arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi     | 2 +-
>  arch/arm64/boot/dts/marvell/armada-37xx.dtsi      | 2 +-
>  arch/arm64/boot/dts/marvell/armada-ap806.dtsi     | 1 -
>  arch/arm64/boot/dts/marvell/armada-ap807.dtsi     | 1 -
>  arch/arm64/boot/dts/marvell/armada-ap80x.dtsi     | 4 ++--
>  arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi | 4 ++--
>  arch/arm64/boot/dts/marvell/armada-cp11x.dtsi     | 4 ++--
>  7 files changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> index 9603223dd761..6ec22eaaf816 100644
> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> @@ -78,7 +78,7 @@ soc {
>  		#size-cells = <2>;
>  		ranges;
>  
> -		internal-regs@d0000000 {
> +		bus@d0000000 {
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			compatible = "simple-bus";

Thank you for your patch, which is now commit
ed9c2b28ebef3333f25cefdc2ef37ee1f05cad95.

I have an off-the-shelf Turris MOX board, which was shipped with a
U-Boot older than the commit linked below (does not contain it):
https://github.com/u-boot/u-boot/commit/bcf6971d536793eb99e12ff857cc018963d7cd46

and as such, is incapable of loading current mainline device trees,
which contain your change, because it is hardcoded to perform FDT fixups
based on paths such as:
#define ETH1_PATH	"/soc/internal-regs@d0000000/ethernet@40000"
#define MDIO_PATH	"/soc/internal-regs@d0000000/mdio@32004"
#define SFP_GPIO_PATH	"/soc/internal-regs@d0000000/spi@10600/moxtet@1/gpio@0"

which no longer exist.

Relevant portion of boot log:

## Flattened Device Tree blob at 04f00000
   Booting using the fdt blob at 0x4f00000
   Loading Device Tree to 000000003bf16000, end 000000003bf1e11e ... OK
ERROR: board-specific fdt fixup failed: FDT_ERR_NOTFOUND
 - must RESET the board to recover.

FDT creation failed! hanging...### ERROR ### Please RESET the board ###

Note that the hint about what is wrong is only visible with a serial
console which I happen to have. The board does not rely on it for normal
operation, which could pose a problem to typical users.

Just bringing this to everyone's attention. In the meantime, I'm going
off to figure out how to build and flash a new U-Boot using the steps at
https://github.com/turris-cz/mox-boot-builder.


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus"
  2025-04-12  0:17   ` Vladimir Oltean
@ 2025-04-14 12:41     ` Marek Behún
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Behún @ 2025-04-14 12:41 UTC (permalink / raw)
  To: Vladimir Oltean, Rob Herring (Arm)
  Cc: Andrew Lunn, Gregory Clement, Sebastian Hesselbarth,
	Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
	linux-kernel

I will fix the U-Boot code in upstream, and schedule U-Boot upgrade
on MOXes running Turris OS...

Marek

On Sat, Apr 12, 2025 at 03:17:03AM +0300, Vladimir Oltean wrote:
> Hello,
> 
> On Wed, Feb 26, 2025 at 03:47:49PM -0600, Rob Herring (Arm) wrote:
> > The "simple-bus" binding has preferred node names such as "bus",
> > ".*-bus", or "soc". Rename the Marvell platforms to use these names.
> > 
> > Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
> > ---
> >  arch/arm64/boot/dts/marvell/ac5-98dx25xx.dtsi     | 2 +-
> >  arch/arm64/boot/dts/marvell/armada-37xx.dtsi      | 2 +-
> >  arch/arm64/boot/dts/marvell/armada-ap806.dtsi     | 1 -
> >  arch/arm64/boot/dts/marvell/armada-ap807.dtsi     | 1 -
> >  arch/arm64/boot/dts/marvell/armada-ap80x.dtsi     | 4 ++--
> >  arch/arm64/boot/dts/marvell/armada-ap810-ap0.dtsi | 4 ++--
> >  arch/arm64/boot/dts/marvell/armada-cp11x.dtsi     | 4 ++--
> >  7 files changed, 8 insertions(+), 10 deletions(-)
> > 
> > diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> > index 9603223dd761..6ec22eaaf816 100644
> > --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> > +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> > @@ -78,7 +78,7 @@ soc {
> >  		#size-cells = <2>;
> >  		ranges;
> >  
> > -		internal-regs@d0000000 {
> > +		bus@d0000000 {
> >  			#address-cells = <1>;
> >  			#size-cells = <1>;
> >  			compatible = "simple-bus";
> 
> Thank you for your patch, which is now commit
> ed9c2b28ebef3333f25cefdc2ef37ee1f05cad95.
> 
> I have an off-the-shelf Turris MOX board, which was shipped with a
> U-Boot older than the commit linked below (does not contain it):
> https://github.com/u-boot/u-boot/commit/bcf6971d536793eb99e12ff857cc018963d7cd46
> 
> and as such, is incapable of loading current mainline device trees,
> which contain your change, because it is hardcoded to perform FDT fixups
> based on paths such as:
> #define ETH1_PATH	"/soc/internal-regs@d0000000/ethernet@40000"
> #define MDIO_PATH	"/soc/internal-regs@d0000000/mdio@32004"
> #define SFP_GPIO_PATH	"/soc/internal-regs@d0000000/spi@10600/moxtet@1/gpio@0"
> 
> which no longer exist.
> 
> Relevant portion of boot log:
> 
> ## Flattened Device Tree blob at 04f00000
>    Booting using the fdt blob at 0x4f00000
>    Loading Device Tree to 000000003bf16000, end 000000003bf1e11e ... OK
> ERROR: board-specific fdt fixup failed: FDT_ERR_NOTFOUND
>  - must RESET the board to recover.
> 
> FDT creation failed! hanging...### ERROR ### Please RESET the board ###
> 
> Note that the hint about what is wrong is only visible with a serial
> console which I happen to have. The board does not rely on it for normal
> operation, which could pose a problem to typical users.
> 
> Just bringing this to everyone's attention. In the meantime, I'm going
> off to figure out how to build and flash a new U-Boot using the steps at
> https://github.com/turris-cz/mox-boot-builder.
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-04-14 12:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-26 21:47 [PATCH 1/3] arm64: dts: marvell: Move arch timer and pmu nodes to top-level Rob Herring (Arm)
2025-02-26 21:47 ` [PATCH 2/3] arm64: dts: marvell: Drop unused CP11X_TYPE define Rob Herring (Arm)
2025-02-26 21:47 ` [PATCH 3/3] arm64: dts: marvell: Use preferred node names for "simple-bus" Rob Herring (Arm)
2025-04-12  0:17   ` Vladimir Oltean
2025-04-14 12:41     ` Marek Behún

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).