linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] selftests/x86: AMX-related test improvements
@ 2022-07-11 17:03 Chang S. Bae
  2022-07-11 17:03 ` [PATCH v2 1/2] selftests/x86/signal: Adjust the test to the kernel's altstack check Chang S. Bae
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Chang S. Bae @ 2022-07-11 17:03 UTC (permalink / raw)
  To: linux-kselftest, shuah, linux-kernel
  Cc: dave.hansen, tglx, bp, chang.seok.bae

Sorry for the delay in this update.

Changes from v1:
* Improve the skip message along with the changelog massage (Suah Khan).
* Simplify the feature support check (Suah Khan).

=== Cover Letter ===

A couple of test updates are included:

* With the STRICT_SIGALTSTACK_SIZE option [1,2], the kernel's altstack
  check becomes stringent. The x86 sigaltstack test is ignorant about this.
  Adjust the test now. This check was established [3] to ensure every AMX
  task's altstack is sufficient (regardless of that option) [4].

* The AMX test wrongly fails on non-AMX machines. Fix the code to skip the
  test instead.

The series is available in this repository:
  git://github.com/intel/amx-linux.git selftest

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/Kconfig#n2432
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/kernel-parameters.txt#n5676
[3] 3aac3ebea08f ("x86/signal: Implement sigaltstack size validation")
[4] 4b7ca609a33d ("x86/signal: Use fpu::__state_user_size for sigalt stack validation")

Chang S. Bae (2):
  selftests/x86/signal: Adjust the test to the kernel's altstack check
  selftests/x86/amx: Fix the test to avoid failure when AMX is
    unavailable

 tools/testing/selftests/x86/amx.c         | 31 ++++++++---------------
 tools/testing/selftests/x86/sigaltstack.c | 14 +++++++++-
 2 files changed, 23 insertions(+), 22 deletions(-)


base-commit: 32346491ddf24599decca06190ebca03ff9de7f8
-- 
2.17.1


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

* [PATCH v2 1/2] selftests/x86/signal: Adjust the test to the kernel's altstack check
  2022-07-11 17:03 [PATCH v2 0/2] selftests/x86: AMX-related test improvements Chang S. Bae
@ 2022-07-11 17:03 ` Chang S. Bae
  2022-07-11 17:03 ` [PATCH v2 2/2] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
  2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
  2 siblings, 0 replies; 7+ messages in thread
From: Chang S. Bae @ 2022-07-11 17:03 UTC (permalink / raw)
  To: linux-kselftest, shuah, linux-kernel
  Cc: dave.hansen, tglx, bp, chang.seok.bae

The test assumes an insufficient altstack is allowed. Then it raises a
signal to test the delivery failure due to an altstack overflow.

The kernel now provides the STRICT_SIGALTSTACK_SIZE option to tweak
sigaltstack()'s sanity check to prevent an insufficient altstack. ENOMEM is
returned on the check failure.

Adjust the code to skip the test when this option is on.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Changes from v1:
* Call out the config name (Shuah Khan).
* Massage the print message (Shuah Khan).
---
 tools/testing/selftests/x86/sigaltstack.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/x86/sigaltstack.c b/tools/testing/selftests/x86/sigaltstack.c
index f689af75e979..0e9842e69ca4 100644
--- a/tools/testing/selftests/x86/sigaltstack.c
+++ b/tools/testing/selftests/x86/sigaltstack.c
@@ -88,8 +88,20 @@ static void sigalrm(int sig, siginfo_t *info, void *ctx_void)
 
 static void test_sigaltstack(void *altstack, unsigned long size)
 {
-	if (setup_altstack(altstack, size))
+	if (setup_altstack(altstack, size)) {
+		/*
+		 * If the kernel rejects an insufficient altstack with
+		 * ENOMEM, then skip the test.
+		 */
+		if (errno == ENOMEM && size < at_minstack_size) {
+			printf("[SKIP]\tThe running kernel disallows an insufficient altstack with "
+			       "the STRICT_SIGALTSTACK_SIZE option. As the altstack was already "
+			       "measured, the overflow test is not needed.\n");
+			return;
+		}
+
 		err(1, "sigaltstack()");
+	}
 
 	sigalrm_expected = (size > at_minstack_size) ? true : false;
 
-- 
2.17.1


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

* [PATCH v2 2/2] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable
  2022-07-11 17:03 [PATCH v2 0/2] selftests/x86: AMX-related test improvements Chang S. Bae
  2022-07-11 17:03 ` [PATCH v2 1/2] selftests/x86/signal: Adjust the test to the kernel's altstack check Chang S. Bae
@ 2022-07-11 17:03 ` Chang S. Bae
  2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
  2 siblings, 0 replies; 7+ messages in thread
From: Chang S. Bae @ 2022-07-11 17:03 UTC (permalink / raw)
  To: linux-kselftest, shuah, linux-kernel
  Cc: dave.hansen, tglx, bp, chang.seok.bae

When a CPU does not have AMX, the test fails. But this is wrong as it
should be runnable regardless. Skip the test instead.

Also, simplify the feature check using arch_prctl() instead of CPUID. The
syscall is more trustworthy as the kernel controls the feature permission.

Reported-by: Thomas Gleixner <tglx@linutronix.de>
Fixes: 6a3e0651b4a ("selftests/x86/amx: Add test cases for AMX state management")
Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Changes from v1:
* Simplify the feature check code (Shuah Khan).
---
 tools/testing/selftests/x86/amx.c | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c
index 625e42901237..52e7dec50018 100644
--- a/tools/testing/selftests/x86/amx.c
+++ b/tools/testing/selftests/x86/amx.c
@@ -99,24 +99,6 @@ static void clearhandler(int sig)
 #define XFEATURE_MASK_XTILEDATA	(1 << XFEATURE_XTILEDATA)
 #define XFEATURE_MASK_XTILE	(XFEATURE_MASK_XTILECFG | XFEATURE_MASK_XTILEDATA)
 
-#define CPUID_LEAF1_ECX_XSAVE_MASK	(1 << 26)
-#define CPUID_LEAF1_ECX_OSXSAVE_MASK	(1 << 27)
-static inline void check_cpuid_xsave(void)
-{
-	uint32_t eax, ebx, ecx, edx;
-
-	/*
-	 * CPUID.1:ECX.XSAVE[bit 26] enumerates general
-	 * support for the XSAVE feature set, including
-	 * XGETBV.
-	 */
-	__cpuid_count(1, 0, eax, ebx, ecx, edx);
-	if (!(ecx & CPUID_LEAF1_ECX_XSAVE_MASK))
-		fatal_error("cpuid: no CPU xsave support");
-	if (!(ecx & CPUID_LEAF1_ECX_OSXSAVE_MASK))
-		fatal_error("cpuid: no OS xsave support");
-}
-
 static uint32_t xbuf_size;
 
 static struct {
@@ -348,6 +330,7 @@ enum expected_result { FAIL_EXPECTED, SUCCESS_EXPECTED };
 
 /* arch_prctl() and sigaltstack() test */
 
+#define ARCH_GET_XCOMP_SUPP	0x1021
 #define ARCH_GET_XCOMP_PERM	0x1022
 #define ARCH_REQ_XCOMP_PERM	0x1023
 
@@ -828,10 +811,16 @@ static void test_context_switch(void)
 
 int main(void)
 {
-	/* Check hardware availability at first */
-	check_cpuid_xsave();
-	check_cpuid_xtiledata();
+	unsigned long features;
+	long rc;
 
+	rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_SUPP, &features);
+	if (rc || (features & XFEATURE_MASK_XTILE) != XFEATURE_MASK_XTILE) {
+		printf("[SKIP]\tno AMX support.\n");
+		exit(KSFT_FAIL);
+	}
+
+	check_cpuid_xtiledata();
 	init_stashed_xsave();
 	sethandler(SIGILL, handle_noperm, 0);
 
-- 
2.17.1


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

* [PATCH v3 0/3] selftests/x86: AMX-related test improvements
  2022-07-11 17:03 [PATCH v2 0/2] selftests/x86: AMX-related test improvements Chang S. Bae
  2022-07-11 17:03 ` [PATCH v2 1/2] selftests/x86/signal: Adjust the test to the kernel's altstack check Chang S. Bae
  2022-07-11 17:03 ` [PATCH v2 2/2] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
@ 2023-03-30 23:35 ` Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 1/3] selftests/x86/sigaltstack: Adjust the test to the kernel's altstack check Chang S. Bae
                     ` (2 more replies)
  2 siblings, 3 replies; 7+ messages in thread
From: Chang S. Bae @ 2023-03-30 23:35 UTC (permalink / raw)
  To: linux-kselftest, linux-kernel
  Cc: shuah, tglx, dave.hansen, bp, chang.seok.bae

Dear maintainers,

Let me follow up on the last posting [5] with these two small changes:
* Clean up unused code in the AMX test.
* Fix the subsystem name in the patch1 subject.

Here is a summary of the included test code changes:

* With the STRICT_SIGALTSTACK_SIZE option [1,2], the kernel's altstack
  check becomes stringent. The x86 sigaltstack test is ignorant about
  this. Adjust the test. This check was established [3] to ensure
  every AMX task's altstack is sufficient (regardless of that option)
  [4].

* The AMX test wrongly fails on non-AMX machines. Fix the code to skip
  the test instead.

* It also has some unused code. Remove them where at this.

The series is available in this repository:
  git://github.com/intel/amx-linux.git selftest

Thanks,
Chang

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/Kconfig#n2467
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/kernel-parameters.txt#n6038
[3] 3aac3ebea08f ("x86/signal: Implement sigaltstack size validation")
[4] 4b7ca609a33d ("x86/signal: Use fpu::__state_user_size for sigalt stack validation")
[5] https://lore.kernel.org/lkml/20220711170330.27138-1-chang.seok.bae@intel.com/


Chang S. Bae (3):
  selftests/x86/sigaltstack: Adjust the test to the kernel's altstack
    check
  selftests/x86/amx: Fix the test to avoid failure when AMX is
    unavailable
  selftests/x86/amx: Remove unneeded code

 tools/testing/selftests/x86/amx.c         | 51 +++++------------------
 tools/testing/selftests/x86/sigaltstack.c | 12 +++++-
 2 files changed, 21 insertions(+), 42 deletions(-)


base-commit: 197b6b60ae7bc51dd0814953c562833143b292aa
-- 
2.17.1


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

* [PATCH v3 1/3] selftests/x86/sigaltstack: Adjust the test to the kernel's altstack check
  2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
@ 2023-03-30 23:35   ` Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 2/3] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 3/3] selftests/x86/amx: Remove unneeded code Chang S. Bae
  2 siblings, 0 replies; 7+ messages in thread
From: Chang S. Bae @ 2023-03-30 23:35 UTC (permalink / raw)
  To: linux-kselftest, linux-kernel
  Cc: shuah, tglx, dave.hansen, bp, chang.seok.bae

The test assumes an insufficient altstack is allowed. Then it raises a
signal to test the delivery failure due to an altstack overflow.

The kernel now provides the STRICT_SIGALTSTACK_SIZE option to tweak
sigaltstack()'s sanity check to prevent an insufficient altstack.
ENOMEM is returned on the check failure.

Adjust the code to skip the test when this option is on.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Changes from v2:
* Fix the subsystem name in the subject.

Changes from v1:
* Call out the config name (Shuah Khan).
* Massage the print message (Shuah Khan).
---
 tools/testing/selftests/x86/sigaltstack.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/x86/sigaltstack.c b/tools/testing/selftests/x86/sigaltstack.c
index f689af75e979..22a88b764a8e 100644
--- a/tools/testing/selftests/x86/sigaltstack.c
+++ b/tools/testing/selftests/x86/sigaltstack.c
@@ -88,8 +88,18 @@ static void sigalrm(int sig, siginfo_t *info, void *ctx_void)
 
 static void test_sigaltstack(void *altstack, unsigned long size)
 {
-	if (setup_altstack(altstack, size))
+	if (setup_altstack(altstack, size)) {
+		/*
+		 * The kernel may return ENOMEM when the altstack size
+		 * is insufficient. Skip the test in this case.
+		 */
+		if (errno == ENOMEM && size < at_minstack_size) {
+			printf("[SKIP]\tThe running kernel disallows an insufficient size.\n");
+			return;
+		}
+
 		err(1, "sigaltstack()");
+	}
 
 	sigalrm_expected = (size > at_minstack_size) ? true : false;
 
-- 
2.17.1


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

* [PATCH v3 2/3] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable
  2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 1/3] selftests/x86/sigaltstack: Adjust the test to the kernel's altstack check Chang S. Bae
@ 2023-03-30 23:35   ` Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 3/3] selftests/x86/amx: Remove unneeded code Chang S. Bae
  2 siblings, 0 replies; 7+ messages in thread
From: Chang S. Bae @ 2023-03-30 23:35 UTC (permalink / raw)
  To: linux-kselftest, linux-kernel
  Cc: shuah, tglx, dave.hansen, bp, chang.seok.bae

When a CPU does not have AMX, the test fails. But this is wrong as it
should be runnable regardless. Skip the test instead.

Also, simplify the feature check using arch_prctl() instead of CPUID. The
syscall is more trustworthy as the kernel controls the feature permission.

Reported-by: Thomas Gleixner <tglx@linutronix.de>
Fixes: 6a3e0651b4a ("selftests/x86/amx: Add test cases for AMX state management")
Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Changes from v2: None

Changes from v1:
* Simplify the feature check code (Shuah Khan).
---
 tools/testing/selftests/x86/amx.c | 31 ++++++++++---------------------
 1 file changed, 10 insertions(+), 21 deletions(-)

diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c
index d884fd69dd51..f0b1efe89ef7 100644
--- a/tools/testing/selftests/x86/amx.c
+++ b/tools/testing/selftests/x86/amx.c
@@ -101,24 +101,6 @@ static void clearhandler(int sig)
 #define XFEATURE_MASK_XTILEDATA	(1 << XFEATURE_XTILEDATA)
 #define XFEATURE_MASK_XTILE	(XFEATURE_MASK_XTILECFG | XFEATURE_MASK_XTILEDATA)
 
-#define CPUID_LEAF1_ECX_XSAVE_MASK	(1 << 26)
-#define CPUID_LEAF1_ECX_OSXSAVE_MASK	(1 << 27)
-static inline void check_cpuid_xsave(void)
-{
-	uint32_t eax, ebx, ecx, edx;
-
-	/*
-	 * CPUID.1:ECX.XSAVE[bit 26] enumerates general
-	 * support for the XSAVE feature set, including
-	 * XGETBV.
-	 */
-	__cpuid_count(1, 0, eax, ebx, ecx, edx);
-	if (!(ecx & CPUID_LEAF1_ECX_XSAVE_MASK))
-		fatal_error("cpuid: no CPU xsave support");
-	if (!(ecx & CPUID_LEAF1_ECX_OSXSAVE_MASK))
-		fatal_error("cpuid: no OS xsave support");
-}
-
 static uint32_t xbuf_size;
 
 static struct {
@@ -350,6 +332,7 @@ enum expected_result { FAIL_EXPECTED, SUCCESS_EXPECTED };
 
 /* arch_prctl() and sigaltstack() test */
 
+#define ARCH_GET_XCOMP_SUPP	0x1021
 #define ARCH_GET_XCOMP_PERM	0x1022
 #define ARCH_REQ_XCOMP_PERM	0x1023
 
@@ -928,10 +911,16 @@ static void test_ptrace(void)
 
 int main(void)
 {
-	/* Check hardware availability at first */
-	check_cpuid_xsave();
-	check_cpuid_xtiledata();
+	unsigned long features;
+	long rc;
 
+	rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_SUPP, &features);
+	if (rc || (features & XFEATURE_MASK_XTILE) != XFEATURE_MASK_XTILE) {
+		printf("[SKIP]\tno AMX support.\n");
+		exit(KSFT_FAIL);
+	}
+
+	check_cpuid_xtiledata();
 	init_stashed_xsave();
 	sethandler(SIGILL, handle_noperm, 0);
 
-- 
2.17.1


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

* [PATCH v3 3/3] selftests/x86/amx: Remove unneeded code
  2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 1/3] selftests/x86/sigaltstack: Adjust the test to the kernel's altstack check Chang S. Bae
  2023-03-30 23:35   ` [PATCH v3 2/3] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
@ 2023-03-30 23:35   ` Chang S. Bae
  2 siblings, 0 replies; 7+ messages in thread
From: Chang S. Bae @ 2023-03-30 23:35 UTC (permalink / raw)
  To: linux-kselftest, linux-kernel
  Cc: shuah, tglx, dave.hansen, bp, chang.seok.bae

Remove some unused helper code. Also, get rid of the redundant permission
request.

Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: linux-kselftest@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Changes from v2:
* Add as a new patch
---
 tools/testing/selftests/x86/amx.c | 20 --------------------
 1 file changed, 20 deletions(-)

diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c
index f0b1efe89ef7..854f7d61be89 100644
--- a/tools/testing/selftests/x86/amx.c
+++ b/tools/testing/selftests/x86/amx.c
@@ -39,16 +39,6 @@ struct xsave_buffer {
 	};
 };
 
-static inline uint64_t xgetbv(uint32_t index)
-{
-	uint32_t eax, edx;
-
-	asm volatile("xgetbv;"
-		     : "=a" (eax), "=d" (edx)
-		     : "c" (index));
-	return eax + ((uint64_t)edx << 32);
-}
-
 static inline void xsave(struct xsave_buffer *xbuf, uint64_t rfbm)
 {
 	uint32_t rfbm_lo = rfbm;
@@ -110,8 +100,6 @@ static struct {
 
 #define CPUID_LEAF_XSTATE		0xd
 #define CPUID_SUBLEAF_XSTATE_USER	0x0
-#define TILE_CPUID			0x1d
-#define TILE_PALETTE_ID			0x1
 
 static void check_cpuid_xtiledata(void)
 {
@@ -161,12 +149,6 @@ static inline void clear_xstate_header(struct xsave_buffer *buffer)
 	memset(&buffer->header, 0, sizeof(buffer->header));
 }
 
-static inline uint64_t get_xstatebv(struct xsave_buffer *buffer)
-{
-	/* XSTATE_BV is at the beginning of the header: */
-	return *(uint64_t *)&buffer->header;
-}
-
 static inline void set_xstatebv(struct xsave_buffer *buffer, uint64_t bv)
 {
 	/* XSTATE_BV is at the beginning of the header: */
@@ -769,8 +751,6 @@ static void test_context_switch(void)
 	/* Affinitize to one CPU to force context switches */
 	affinitize_cpu0();
 
-	req_xtiledata_perm();
-
 	printf("[RUN]\tCheck tiledata context switches, %d iterations, %d threads.\n",
 	       ctxtswtest_config.iterations,
 	       ctxtswtest_config.num_threads);
-- 
2.17.1


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

end of thread, other threads:[~2023-03-30 23:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-11 17:03 [PATCH v2 0/2] selftests/x86: AMX-related test improvements Chang S. Bae
2022-07-11 17:03 ` [PATCH v2 1/2] selftests/x86/signal: Adjust the test to the kernel's altstack check Chang S. Bae
2022-07-11 17:03 ` [PATCH v2 2/2] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
2023-03-30 23:35 ` [PATCH v3 0/3] selftests/x86: AMX-related test improvements Chang S. Bae
2023-03-30 23:35   ` [PATCH v3 1/3] selftests/x86/sigaltstack: Adjust the test to the kernel's altstack check Chang S. Bae
2023-03-30 23:35   ` [PATCH v3 2/3] selftests/x86/amx: Fix the test to avoid failure when AMX is unavailable Chang S. Bae
2023-03-30 23:35   ` [PATCH v3 3/3] selftests/x86/amx: Remove unneeded code Chang S. Bae

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