* [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() @ 2014-03-04 21:07 Bjorn Helgaas 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Bjorn Helgaas @ 2014-03-04 21:07 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar Cc: linux-mips, linux-ia64, x86, linux-kernel, sparclinux, linuxppc-dev, linux-arm-kernel This is just cleanup of a couple unused interfaces and (for sparc64) a supporting variable. --- Bjorn Helgaas (2): sched: Remove unused mc_capable() and smt_capable() sparc64: Remove unused sparc64_multi_core arch/arm/include/asm/topology.h | 3 --- arch/ia64/include/asm/topology.h | 1 - arch/mips/include/asm/topology.h | 4 ---- arch/powerpc/include/asm/topology.h | 1 - arch/sparc/include/asm/smp_64.h | 1 - arch/sparc/include/asm/topology_64.h | 2 -- arch/sparc/kernel/mdesc.c | 4 ---- arch/sparc/kernel/prom_64.c | 3 --- arch/sparc/kernel/smp_64.c | 2 -- arch/x86/include/asm/topology.h | 6 ------ 10 files changed, 27 deletions(-) ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] sched: Remove unused mc_capable() and smt_capable() 2014-03-04 21:07 [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Bjorn Helgaas @ 2014-03-04 21:07 ` Bjorn Helgaas 2014-03-04 21:47 ` David Miller ` (3 more replies) 2014-03-04 21:07 ` [PATCH 2/2] sparc64: Remove unused sparc64_multi_core Bjorn Helgaas 2014-03-05 11:16 ` [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Peter Zijlstra 2 siblings, 4 replies; 9+ messages in thread From: Bjorn Helgaas @ 2014-03-04 21:07 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar Cc: linux-mips, linux-ia64, x86, linux-kernel, sparclinux, linuxppc-dev, linux-arm-kernel Remove mc_capable() and smt_capable(). Neither is used. Both were added by 5c45bf279d37 ("sched: mc/smt power savings sched policy"). Uses of both were removed by 8e7fbcbc22c1 ("sched: Remove stale power aware scheduling remnants and dysfunctional knobs"). Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> --- arch/arm/include/asm/topology.h | 3 --- arch/ia64/include/asm/topology.h | 1 - arch/mips/include/asm/topology.h | 4 ---- arch/powerpc/include/asm/topology.h | 1 - arch/sparc/include/asm/topology_64.h | 2 -- arch/x86/include/asm/topology.h | 6 ------ 6 files changed, 17 deletions(-) diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h index 58b8b84adcd2..2fe85fff5cca 100644 --- a/arch/arm/include/asm/topology.h +++ b/arch/arm/include/asm/topology.h @@ -20,9 +20,6 @@ extern struct cputopo_arm cpu_topology[NR_CPUS]; #define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling) #define topology_thread_cpumask(cpu) (&cpu_topology[cpu].thread_sibling) -#define mc_capable() (cpu_topology[0].socket_id != -1) -#define smt_capable() (cpu_topology[0].thread_id != -1) - void init_cpu_topology(void); void store_cpu_topology(unsigned int cpuid); const struct cpumask *cpu_coregroup_mask(int cpu); diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h index a2496e449b75..5cb55a1e606b 100644 --- a/arch/ia64/include/asm/topology.h +++ b/arch/ia64/include/asm/topology.h @@ -77,7 +77,6 @@ void build_cpu_to_node_map(void); #define topology_core_id(cpu) (cpu_data(cpu)->core_id) #define topology_core_cpumask(cpu) (&cpu_core_map[cpu]) #define topology_thread_cpumask(cpu) (&per_cpu(cpu_sibling_map, cpu)) -#define smt_capable() (smp_num_siblings > 1) #endif extern void arch_fix_phys_package_id(int num, u32 slot); diff --git a/arch/mips/include/asm/topology.h b/arch/mips/include/asm/topology.h index 12609a17dc8b..20ea4859c822 100644 --- a/arch/mips/include/asm/topology.h +++ b/arch/mips/include/asm/topology.h @@ -10,8 +10,4 @@ #include <topology.h> -#ifdef CONFIG_SMP -#define smt_capable() (smp_num_siblings > 1) -#endif - #endif /* __ASM_TOPOLOGY_H */ diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h index d0b5fca6b077..c9202151079f 100644 --- a/arch/powerpc/include/asm/topology.h +++ b/arch/powerpc/include/asm/topology.h @@ -99,7 +99,6 @@ static inline int prrn_is_enabled(void) #ifdef CONFIG_SMP #include <asm/cputable.h> -#define smt_capable() (cpu_has_feature(CPU_FTR_SMT)) #ifdef CONFIG_PPC64 #include <asm/smp.h> diff --git a/arch/sparc/include/asm/topology_64.h b/arch/sparc/include/asm/topology_64.h index 1754390a426f..a2d10fc64faf 100644 --- a/arch/sparc/include/asm/topology_64.h +++ b/arch/sparc/include/asm/topology_64.h @@ -42,8 +42,6 @@ static inline int pcibus_to_node(struct pci_bus *pbus) #define topology_core_id(cpu) (cpu_data(cpu).core_id) #define topology_core_cpumask(cpu) (&cpu_core_map[cpu]) #define topology_thread_cpumask(cpu) (&per_cpu(cpu_sibling_map, cpu)) -#define mc_capable() (sparc64_multi_core) -#define smt_capable() (sparc64_multi_core) #endif /* CONFIG_SMP */ extern cpumask_t cpu_core_map[NR_CPUS]; diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h index d35f24e231cd..9bcc724cafdd 100644 --- a/arch/x86/include/asm/topology.h +++ b/arch/x86/include/asm/topology.h @@ -133,12 +133,6 @@ static inline void arch_fix_phys_package_id(int num, u32 slot) struct pci_bus; void x86_pci_root_bus_resources(int bus, struct list_head *resources); -#ifdef CONFIG_SMP -#define mc_capable() ((boot_cpu_data.x86_max_cores > 1) && \ - (cpumask_weight(cpu_core_mask(0)) != nr_cpu_ids)) -#define smt_capable() (smp_num_siblings > 1) -#endif - #ifdef CONFIG_NUMA extern int get_mp_bus_to_node(int busnum); extern void set_mp_bus_to_node(int busnum, int node); ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] sched: Remove unused mc_capable() and smt_capable() 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas @ 2014-03-04 21:47 ` David Miller 2014-03-04 22:12 ` Thomas Gleixner ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2014-03-04 21:47 UTC (permalink / raw) To: bhelgaas Cc: linux-mips, linux-ia64, peterz, x86, linux-kernel, mingo, sparclinux, linuxppc-dev, linux-arm-kernel From: Bjorn Helgaas <bhelgaas@google.com> Date: Tue, 04 Mar 2014 14:07:37 -0700 > Remove mc_capable() and smt_capable(). Neither is used. > > Both were added by 5c45bf279d37 ("sched: mc/smt power savings sched > policy"). Uses of both were removed by 8e7fbcbc22c1 ("sched: Remove stale > power aware scheduling remnants and dysfunctional knobs"). > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: David S. Miller <davem@davemloft.net> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] sched: Remove unused mc_capable() and smt_capable() 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas 2014-03-04 21:47 ` David Miller @ 2014-03-04 22:12 ` Thomas Gleixner 2014-03-05 4:36 ` Benjamin Herrenschmidt 2014-03-06 2:20 ` Preeti U Murthy 3 siblings, 0 replies; 9+ messages in thread From: Thomas Gleixner @ 2014-03-04 22:12 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-mips, linux-ia64, Peter Zijlstra, x86, linux-kernel, Ingo Molnar, sparclinux, linuxppc-dev, linux-arm-kernel On Tue, 4 Mar 2014, Bjorn Helgaas wrote: > Remove mc_capable() and smt_capable(). Neither is used. > > Both were added by 5c45bf279d37 ("sched: mc/smt power savings sched > policy"). Uses of both were removed by 8e7fbcbc22c1 ("sched: Remove stale > power aware scheduling remnants and dysfunctional knobs"). > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> > --- > arch/arm/include/asm/topology.h | 3 --- > arch/ia64/include/asm/topology.h | 1 - > arch/mips/include/asm/topology.h | 4 ---- > arch/powerpc/include/asm/topology.h | 1 - > arch/sparc/include/asm/topology_64.h | 2 -- > arch/x86/include/asm/topology.h | 6 ------ > 6 files changed, 17 deletions(-) Acked-by: Thomas Gleixner <tglx@linutronix.de> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] sched: Remove unused mc_capable() and smt_capable() 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas 2014-03-04 21:47 ` David Miller 2014-03-04 22:12 ` Thomas Gleixner @ 2014-03-05 4:36 ` Benjamin Herrenschmidt 2014-03-06 2:20 ` Preeti U Murthy 3 siblings, 0 replies; 9+ messages in thread From: Benjamin Herrenschmidt @ 2014-03-05 4:36 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-mips, linux-ia64, Peter Zijlstra, x86, linux-kernel, Ingo Molnar, sparclinux, linuxppc-dev, linux-arm-kernel On Tue, 2014-03-04 at 14:07 -0700, Bjorn Helgaas wrote: > Remove mc_capable() and smt_capable(). Neither is used. > > Both were added by 5c45bf279d37 ("sched: mc/smt power savings sched > policy"). Uses of both were removed by 8e7fbcbc22c1 ("sched: Remove stale > power aware scheduling remnants and dysfunctional knobs"). > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] sched: Remove unused mc_capable() and smt_capable() 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas ` (2 preceding siblings ...) 2014-03-05 4:36 ` Benjamin Herrenschmidt @ 2014-03-06 2:20 ` Preeti U Murthy 3 siblings, 0 replies; 9+ messages in thread From: Preeti U Murthy @ 2014-03-06 2:20 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-mips, linux-ia64, Peter Zijlstra, x86, linux-kernel, Ingo Molnar, sparclinux, linuxppc-dev, linux-arm-kernel On 03/05/2014 02:37 AM, Bjorn Helgaas wrote: > Remove mc_capable() and smt_capable(). Neither is used. > > Both were added by 5c45bf279d37 ("sched: mc/smt power savings sched > policy"). Uses of both were removed by 8e7fbcbc22c1 ("sched: Remove stale > power aware scheduling remnants and dysfunctional knobs"). > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> > --- > arch/arm/include/asm/topology.h | 3 --- > arch/ia64/include/asm/topology.h | 1 - > arch/mips/include/asm/topology.h | 4 ---- > arch/powerpc/include/asm/topology.h | 1 - > arch/sparc/include/asm/topology_64.h | 2 -- > arch/x86/include/asm/topology.h | 6 ------ > 6 files changed, 17 deletions(-) > > diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h > index 58b8b84adcd2..2fe85fff5cca 100644 > --- a/arch/arm/include/asm/topology.h > +++ b/arch/arm/include/asm/topology.h > @@ -20,9 +20,6 @@ extern struct cputopo_arm cpu_topology[NR_CPUS]; > #define topology_core_cpumask(cpu) (&cpu_topology[cpu].core_sibling) > #define topology_thread_cpumask(cpu) (&cpu_topology[cpu].thread_sibling) > > -#define mc_capable() (cpu_topology[0].socket_id != -1) > -#define smt_capable() (cpu_topology[0].thread_id != -1) > - > void init_cpu_topology(void); > void store_cpu_topology(unsigned int cpuid); > const struct cpumask *cpu_coregroup_mask(int cpu); > diff --git a/arch/ia64/include/asm/topology.h b/arch/ia64/include/asm/topology.h > index a2496e449b75..5cb55a1e606b 100644 > --- a/arch/ia64/include/asm/topology.h > +++ b/arch/ia64/include/asm/topology.h > @@ -77,7 +77,6 @@ void build_cpu_to_node_map(void); > #define topology_core_id(cpu) (cpu_data(cpu)->core_id) > #define topology_core_cpumask(cpu) (&cpu_core_map[cpu]) > #define topology_thread_cpumask(cpu) (&per_cpu(cpu_sibling_map, cpu)) > -#define smt_capable() (smp_num_siblings > 1) > #endif > > extern void arch_fix_phys_package_id(int num, u32 slot); > diff --git a/arch/mips/include/asm/topology.h b/arch/mips/include/asm/topology.h > index 12609a17dc8b..20ea4859c822 100644 > --- a/arch/mips/include/asm/topology.h > +++ b/arch/mips/include/asm/topology.h > @@ -10,8 +10,4 @@ > > #include <topology.h> > > -#ifdef CONFIG_SMP > -#define smt_capable() (smp_num_siblings > 1) > -#endif > - > #endif /* __ASM_TOPOLOGY_H */ > diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h > index d0b5fca6b077..c9202151079f 100644 > --- a/arch/powerpc/include/asm/topology.h > +++ b/arch/powerpc/include/asm/topology.h > @@ -99,7 +99,6 @@ static inline int prrn_is_enabled(void) > > #ifdef CONFIG_SMP > #include <asm/cputable.h> > -#define smt_capable() (cpu_has_feature(CPU_FTR_SMT)) > > #ifdef CONFIG_PPC64 > #include <asm/smp.h> > diff --git a/arch/sparc/include/asm/topology_64.h b/arch/sparc/include/asm/topology_64.h > index 1754390a426f..a2d10fc64faf 100644 > --- a/arch/sparc/include/asm/topology_64.h > +++ b/arch/sparc/include/asm/topology_64.h > @@ -42,8 +42,6 @@ static inline int pcibus_to_node(struct pci_bus *pbus) > #define topology_core_id(cpu) (cpu_data(cpu).core_id) > #define topology_core_cpumask(cpu) (&cpu_core_map[cpu]) > #define topology_thread_cpumask(cpu) (&per_cpu(cpu_sibling_map, cpu)) > -#define mc_capable() (sparc64_multi_core) > -#define smt_capable() (sparc64_multi_core) > #endif /* CONFIG_SMP */ > > extern cpumask_t cpu_core_map[NR_CPUS]; > diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h > index d35f24e231cd..9bcc724cafdd 100644 > --- a/arch/x86/include/asm/topology.h > +++ b/arch/x86/include/asm/topology.h > @@ -133,12 +133,6 @@ static inline void arch_fix_phys_package_id(int num, u32 slot) > struct pci_bus; > void x86_pci_root_bus_resources(int bus, struct list_head *resources); > > -#ifdef CONFIG_SMP > -#define mc_capable() ((boot_cpu_data.x86_max_cores > 1) && \ > - (cpumask_weight(cpu_core_mask(0)) != nr_cpu_ids)) > -#define smt_capable() (smp_num_siblings > 1) > -#endif > - > #ifdef CONFIG_NUMA > extern int get_mp_bus_to_node(int busnum); > extern void set_mp_bus_to_node(int busnum, int node); > Reviewed-by: Preeti U Murthy <preeti@linux.vnet.ibm.com> > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] sparc64: Remove unused sparc64_multi_core 2014-03-04 21:07 [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Bjorn Helgaas 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas @ 2014-03-04 21:07 ` Bjorn Helgaas 2014-03-04 21:48 ` David Miller 2014-03-05 11:16 ` [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Peter Zijlstra 2 siblings, 1 reply; 9+ messages in thread From: Bjorn Helgaas @ 2014-03-04 21:07 UTC (permalink / raw) To: Peter Zijlstra, Ingo Molnar Cc: linux-mips, linux-ia64, x86, linux-kernel, sparclinux, linuxppc-dev, linux-arm-kernel Remove sparc64_multi_core because it's not used any more. It was added by a2f9f6bbb30e ("Fix {mc,smt}_capable()"), and the last uses were removed by e637d96bf462 ("sched: Remove unused mc_capable() and smt_capable()"). Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> --- arch/sparc/include/asm/smp_64.h | 1 - arch/sparc/kernel/mdesc.c | 4 ---- arch/sparc/kernel/prom_64.c | 3 --- arch/sparc/kernel/smp_64.c | 2 -- 4 files changed, 10 deletions(-) diff --git a/arch/sparc/include/asm/smp_64.h b/arch/sparc/include/asm/smp_64.h index dd3bef4b9896..05710393959f 100644 --- a/arch/sparc/include/asm/smp_64.h +++ b/arch/sparc/include/asm/smp_64.h @@ -32,7 +32,6 @@ DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); extern cpumask_t cpu_core_map[NR_CPUS]; -extern int sparc64_multi_core; extern void arch_send_call_function_single_ipi(int cpu); extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c index b90bf23e3aab..a1a4400d4025 100644 --- a/arch/sparc/kernel/mdesc.c +++ b/arch/sparc/kernel/mdesc.c @@ -896,10 +896,6 @@ void mdesc_fill_in_cpu_data(cpumask_t *mask) mdesc_iterate_over_cpus(fill_in_one_cpu, NULL, mask); -#ifdef CONFIG_SMP - sparc64_multi_core = 1; -#endif - hp = mdesc_grab(); set_core_ids(hp); diff --git a/arch/sparc/kernel/prom_64.c b/arch/sparc/kernel/prom_64.c index 6b39125eb927..9a690d39c01b 100644 --- a/arch/sparc/kernel/prom_64.c +++ b/arch/sparc/kernel/prom_64.c @@ -555,9 +555,6 @@ static void *fill_in_one_cpu(struct device_node *dp, int cpuid, int arg) cpu_data(cpuid).core_id = portid + 1; cpu_data(cpuid).proc_id = portid; -#ifdef CONFIG_SMP - sparc64_multi_core = 1; -#endif } else { cpu_data(cpuid).dcache_size = of_getintprop_default(dp, "dcache-size", 16 * 1024); diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index b085311dcd0e..9781048161ab 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -53,8 +53,6 @@ #include "cpumap.h" -int sparc64_multi_core __read_mostly; - DEFINE_PER_CPU(cpumask_t, cpu_sibling_map) = CPU_MASK_NONE; cpumask_t cpu_core_map[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = CPU_MASK_NONE }; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] sparc64: Remove unused sparc64_multi_core 2014-03-04 21:07 ` [PATCH 2/2] sparc64: Remove unused sparc64_multi_core Bjorn Helgaas @ 2014-03-04 21:48 ` David Miller 0 siblings, 0 replies; 9+ messages in thread From: David Miller @ 2014-03-04 21:48 UTC (permalink / raw) To: bhelgaas Cc: linux-mips, linux-ia64, peterz, x86, linux-kernel, mingo, sparclinux, linuxppc-dev, linux-arm-kernel From: Bjorn Helgaas <bhelgaas@google.com> Date: Tue, 04 Mar 2014 14:07:44 -0700 > Remove sparc64_multi_core because it's not used any more. > > It was added by a2f9f6bbb30e ("Fix {mc,smt}_capable()"), and the last uses > were removed by e637d96bf462 ("sched: Remove unused mc_capable() and > smt_capable()"). > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: David S. Miller <davem@davemloft.net> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() 2014-03-04 21:07 [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Bjorn Helgaas 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas 2014-03-04 21:07 ` [PATCH 2/2] sparc64: Remove unused sparc64_multi_core Bjorn Helgaas @ 2014-03-05 11:16 ` Peter Zijlstra 2 siblings, 0 replies; 9+ messages in thread From: Peter Zijlstra @ 2014-03-05 11:16 UTC (permalink / raw) To: Bjorn Helgaas Cc: linux-mips, linux-ia64, x86, linux-kernel, Ingo Molnar, sparclinux, linuxppc-dev, linux-arm-kernel On Tue, Mar 04, 2014 at 02:07:31PM -0700, Bjorn Helgaas wrote: > This is just cleanup of a couple unused interfaces and (for sparc64) a > supporting variable. > Thanks! ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-03-06 2:24 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-04 21:07 [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Bjorn Helgaas 2014-03-04 21:07 ` [PATCH 1/2] sched: Remove " Bjorn Helgaas 2014-03-04 21:47 ` David Miller 2014-03-04 22:12 ` Thomas Gleixner 2014-03-05 4:36 ` Benjamin Herrenschmidt 2014-03-06 2:20 ` Preeti U Murthy 2014-03-04 21:07 ` [PATCH 2/2] sparc64: Remove unused sparc64_multi_core Bjorn Helgaas 2014-03-04 21:48 ` David Miller 2014-03-05 11:16 ` [PATCH 0/2] sched: Removed unused mc_capable() and smt_capable() Peter Zijlstra
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).