linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] DSPBRIDGE: Fix module build warnings
@ 2009-03-31 16:26 Ameya Palande
  2009-04-01  7:00 ` Artem Bityutskiy
  0 siblings, 1 reply; 5+ messages in thread
From: Ameya Palande @ 2009-03-31 16:26 UTC (permalink / raw)
  To: h-kanigeri2; +Cc: linux-omap

Signed-off-by: Ameya Palande <ameya.palande@nokia.com>
---
 drivers/dsp/bridge/rmgr/drv_interface.c |    6 ----
 drivers/dsp/bridge/rmgr/node.c          |    1 -
 drivers/dsp/bridge/wmd/tiomap3430.c     |   39 ++++++++++++++++---------------
 3 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c
index 350e1b5..981354a 100755
--- a/drivers/dsp/bridge/rmgr/drv_interface.c
+++ b/drivers/dsp/bridge/rmgr/drv_interface.c
@@ -685,12 +685,6 @@ static int bridge_release(struct inode *ip, struct file *filp)
 	return status;
 }
 
-static void bridge_free(struct device *dev)
-{
-	/* nothing to Free */
-}
-
-
 /* This function provides IO interface to the bridge driver. */
 static int bridge_ioctl(struct inode *ip, struct file *filp, unsigned int code,
 		unsigned long args)
diff --git a/drivers/dsp/bridge/rmgr/node.c b/drivers/dsp/bridge/rmgr/node.c
index 51b4b12..66a6284 100644
--- a/drivers/dsp/bridge/rmgr/node.c
+++ b/drivers/dsp/bridge/rmgr/node.c
@@ -3471,7 +3471,6 @@ static DSP_STATUS GetRMSFxns(struct NODE_MGR *hNodeMgr)
 			}
 		}
 	}
-func_end:
 	return status;
 }
 
diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
index 1fca3e5..b489da1 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430.c
@@ -2034,26 +2034,27 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
 			if (pfn_valid(__phys_to_pfn(patemp))) {
 				pg = phys_to_page(patemp);
 				get_page(pg);
+				if (page_count(pg) <= 1) {
+					printk(KERN_EMERG "DSPBRIDGE:MAP  "
+						"function: COUNT 0 FOR PA "
+						"0x%x\n", patemp);
+					printk(KERN_EMERG "Bad page state"
+						"in process '%s'\n"
+						"page:%p flags:0x%0*lx "
+						"mapping:%p mapcount:%d "
+						"count:%d\n"
+						"Trying to fix it up, but "
+						"a reboot is needed\n"
+						"Backtrace:\n",
+						current->comm, pg,
+						(int)(2*sizeof(unsigned long)),
+						(unsigned long)pg->flags,
+						pg->mapping, page_mapcount(pg),
+						page_count(pg));
+					dump_stack();
+					BUG_ON(1);
+				}
 			}
-			if (page_count(pg) <= 1) {
-				printk(KERN_EMERG "DSPBRIDGE:MAP  function: "
-					"COUNT 0 FOR PA 0x%x\n", patemp);
-				printk(KERN_EMERG "Bad page state"
-					KERN_EMERG "in process '%s'\n"
-					KERN_EMERG "page:%p flags:0x%0*lx "
-					KERN_EMERG "mapping:%p mapcount:%d "
-					KERN_EMERG "count:%d\n"
-					KERN_EMERG "Trying to fix it up, but "
-					KERN_EMERG "a reboot is needed\n"
-					KERN_EMERG "Backtrace:\n",
-					current->comm, pg,
-					(int)(2*sizeof(unsigned long)),
-					(unsigned long)pg->flags, pg->mapping,
-					page_mapcount(pg), page_count(pg));
-				dump_stack();
-				BUG_ON(1);
-			}
-
 			patemp += HW_PAGE_SIZE_4KB;
 		}
 	}
-- 
1.6.2.1


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

* Re: [PATCH] DSPBRIDGE: Fix module build warnings
  2009-03-31 16:26 [PATCH] DSPBRIDGE: Fix module build warnings Ameya Palande
@ 2009-04-01  7:00 ` Artem Bityutskiy
  2009-04-01  7:04   ` Artem Bityutskiy
  0 siblings, 1 reply; 5+ messages in thread
From: Artem Bityutskiy @ 2009-04-01  7:00 UTC (permalink / raw)
  To: Ameya Palande; +Cc: h-kanigeri2, linux-omap

Ameya Palande wrote:
> diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
> index 1fca3e5..b489da1 100644
> --- a/drivers/dsp/bridge/wmd/tiomap3430.c
> +++ b/drivers/dsp/bridge/wmd/tiomap3430.c
> @@ -2034,26 +2034,27 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
>  			if (pfn_valid(__phys_to_pfn(patemp))) {
>  				pg = phys_to_page(patemp);
>  				get_page(pg);
> +				if (page_count(pg) <= 1) {
> +					printk(KERN_EMERG "DSPBRIDGE:MAP  "
> +						"function: COUNT 0 FOR PA "
> +						"0x%x\n", patemp);
> +					printk(KERN_EMERG "Bad page state"
> +						"in process '%s'\n"
> +						"page:%p flags:0x%0*lx "
> +						"mapping:%p mapcount:%d "
> +						"count:%d\n"
> +						"Trying to fix it up, but "
> +						"a reboot is needed\n"
> +						"Backtrace:\n",
> +						current->comm, pg,
> +						(int)(2*sizeof(unsigned long)),
> +						(unsigned long)pg->flags,
> +						pg->mapping, page_mapcount(pg),
> +						page_count(pg));
> +					dump_stack();
> +					BUG_ON(1);
> +				}

Is it possible to clean up this print? How much should
I drink to read this code?

Why you guys don't create dump finctions which dump
whatever you need. E.g., create a
"dump_page_state(struct page *pg)" function and call
it.

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] DSPBRIDGE: Fix module build warnings
  2009-04-01  7:00 ` Artem Bityutskiy
@ 2009-04-01  7:04   ` Artem Bityutskiy
       [not found]     ` <269694c00904010613g70a5de8eo5cac92865675ad0f@mail.gmail.com>
  0 siblings, 1 reply; 5+ messages in thread
From: Artem Bityutskiy @ 2009-04-01  7:04 UTC (permalink / raw)
  To: Ameya Palande; +Cc: h-kanigeri2, linux-omap

Artem Bityutskiy wrote:
> Ameya Palande wrote:
>> diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c 
>> b/drivers/dsp/bridge/wmd/tiomap3430.c
>> index 1fca3e5..b489da1 100644
>> --- a/drivers/dsp/bridge/wmd/tiomap3430.c
>> +++ b/drivers/dsp/bridge/wmd/tiomap3430.c
>> @@ -2034,26 +2034,27 @@ static DSP_STATUS PteSet(struct PgTableAttrs 
>> *pt, u32 pa, u32 va,
>>              if (pfn_valid(__phys_to_pfn(patemp))) {
>>                  pg = phys_to_page(patemp);
>>                  get_page(pg);
>> +                if (page_count(pg) <= 1) {
>> +                    printk(KERN_EMERG "DSPBRIDGE:MAP  "
>> +                        "function: COUNT 0 FOR PA "
>> +                        "0x%x\n", patemp);
>> +                    printk(KERN_EMERG "Bad page state"
>> +                        "in process '%s'\n"
>> +                        "page:%p flags:0x%0*lx "
>> +                        "mapping:%p mapcount:%d "
>> +                        "count:%d\n"
>> +                        "Trying to fix it up, but "
>> +                        "a reboot is needed\n"
>> +                        "Backtrace:\n",
>> +                        current->comm, pg,
>> +                        (int)(2*sizeof(unsigned long)),
Why do you need this (int) cast? Thiere is a %zd modifyer.
>> +                        (unsigned long)pg->flags,
What for do you have to cast here?


-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] DSPBRIDGE: Fix module build warnings
       [not found]     ` <269694c00904010613g70a5de8eo5cac92865675ad0f@mail.gmail.com>
@ 2009-04-01 13:14       ` Ameya Palande
  2009-04-01 13:34         ` Ameya Palande
  0 siblings, 1 reply; 5+ messages in thread
From: Ameya Palande @ 2009-04-01 13:14 UTC (permalink / raw)
  To: linux-omap

[-- Attachment #1: Type: text/plain, Size: 1969 bytes --]

On Wed, Apr 1, 2009 at 4:13 PM, Ameya Palande <2ameya@gmail.com> wrote:
>
> Hi Artem,
>
> On Wed, Apr 1, 2009 at 10:04 AM, Artem Bityutskiy <dedekind@yandex.ru> wrote:
>>
>> Artem Bityutskiy wrote:
>>>
>>> Ameya Palande wrote:
>>>>
>>>> diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
>>>> index 1fca3e5..b489da1 100644
>>>> --- a/drivers/dsp/bridge/wmd/tiomap3430.c
>>>> +++ b/drivers/dsp/bridge/wmd/tiomap3430.c
>>>> @@ -2034,26 +2034,27 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
>>>>             if (pfn_valid(__phys_to_pfn(patemp))) {
>>>>                 pg = phys_to_page(patemp);
>>>>                 get_page(pg);
>>>> +                if (page_count(pg) <= 1) {
>>>> +                    printk(KERN_EMERG "DSPBRIDGE:MAP  "
>>>> +                        "function: COUNT 0 FOR PA "
>>>> +                        "0x%x\n", patemp);
>>>> +                    printk(KERN_EMERG "Bad page state"
>>>> +                        "in process '%s'\n"
>>>> +                        "page:%p flags:0x%0*lx "
>>>> +                        "mapping:%p mapcount:%d "
>>>> +                        "count:%d\n"
>>>> +                        "Trying to fix it up, but "
>>>> +                        "a reboot is needed\n"
>>>> +                        "Backtrace:\n",
>>>> +                        current->comm, pg,
>>>> +                        (int)(2*sizeof(unsigned long)),
>>
>> Why do you need this (int) cast? Thiere is a %zd modifyer.
>>>>
>>>> +                        (unsigned long)pg->flags,
>>
>> What for do you have to cast here?
>
> I have attached a new patch which should take care of the ugly code.
>
> Cheers,
> Ameya.

Sorry about the last message. This one is in plain text.

Cheers,
Ameya.

[-- Attachment #2: 0001--DSPBRIDGE-Fix-module-build-warnings.patch --]
[-- Type: text/x-patch, Size: 3129 bytes --]

From 5b889f8c43c0d3af47cd4ed532a10beec863e370 Mon Sep 17 00:00:00 2001
From: Ameya Palande <ameya.palande@nokia.com>
Date: Wed, 1 Apr 2009 16:05:13 +0300
Subject: [PATCH] [PATCH] DSPBRIDGE: Fix module build warnings

From: Ameya Palande <ameya.palande@nokia.com>

Signed-off-by: Ameya Palande <ameya.palande@nokia.com>
---
 drivers/dsp/bridge/rmgr/drv_interface.c |    6 ------
 drivers/dsp/bridge/rmgr/node.c          |    2 +-
 drivers/dsp/bridge/wmd/tiomap3430.c     |   30 ++++++++++++------------------
 3 files changed, 13 insertions(+), 25 deletions(-)

diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c
index 350e1b5..981354a 100755
--- a/drivers/dsp/bridge/rmgr/drv_interface.c
+++ b/drivers/dsp/bridge/rmgr/drv_interface.c
@@ -685,12 +685,6 @@ static int bridge_release(struct inode *ip, struct file *filp)
 	return status;
 }
 
-static void bridge_free(struct device *dev)
-{
-	/* nothing to Free */
-}
-
-
 /* This function provides IO interface to the bridge driver. */
 static int bridge_ioctl(struct inode *ip, struct file *filp, unsigned int code,
 		unsigned long args)
diff --git a/drivers/dsp/bridge/rmgr/node.c b/drivers/dsp/bridge/rmgr/node.c
index 51b4b12..178b802 100644
--- a/drivers/dsp/bridge/rmgr/node.c
+++ b/drivers/dsp/bridge/rmgr/node.c
@@ -3471,7 +3471,7 @@ static DSP_STATUS GetRMSFxns(struct NODE_MGR *hNodeMgr)
 			}
 		}
 	}
-func_end:
+
 	return status;
 }
 
diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
index 1fca3e5..9a535d0 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430.c
@@ -2034,24 +2034,8 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
 			if (pfn_valid(__phys_to_pfn(patemp))) {
 				pg = phys_to_page(patemp);
 				get_page(pg);
-			}
-			if (page_count(pg) <= 1) {
-				printk(KERN_EMERG "DSPBRIDGE:MAP  function: "
-					"COUNT 0 FOR PA 0x%x\n", patemp);
-				printk(KERN_EMERG "Bad page state"
-					KERN_EMERG "in process '%s'\n"
-					KERN_EMERG "page:%p flags:0x%0*lx "
-					KERN_EMERG "mapping:%p mapcount:%d "
-					KERN_EMERG "count:%d\n"
-					KERN_EMERG "Trying to fix it up, but "
-					KERN_EMERG "a reboot is needed\n"
-					KERN_EMERG "Backtrace:\n",
-					current->comm, pg,
-					(int)(2*sizeof(unsigned long)),
-					(unsigned long)pg->flags, pg->mapping,
-					page_mapcount(pg), page_count(pg));
-				dump_stack();
-				BUG_ON(1);
+				if (page_count(pg) <= 1)
+					goto pg_cnt_err_out;
 			}
 
 			patemp += HW_PAGE_SIZE_4KB;
@@ -2126,6 +2110,16 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
 	}
 	DBG_Trace(DBG_ENTER, "< PteSet status %x\n", status);
 	return status;
+
+pg_cnt_err_out:
+	pr_emerg("DSPBRIDGE:MAP function: COUNT 0 FOR PA 0x%x\n", patemp);
+	pr_emerg("Bad page state in process '%s'\n page:%p flags:%lx "
+			"mapping:%p mapcount:%d count:%d\n",
+			current->comm, pg, pg->flags,
+			pg->mapping, page_mapcount(pg), page_count(pg));
+	pr_emerg("Backtrace:\n");
+	dump_stack();
+	BUG_ON(1);
 }
 
 /* Memory map kernel VA -- memory allocated with vmalloc */
-- 
1.6.2.1


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

* Re: [PATCH] DSPBRIDGE: Fix module build warnings
  2009-04-01 13:14       ` Ameya Palande
@ 2009-04-01 13:34         ` Ameya Palande
  0 siblings, 0 replies; 5+ messages in thread
From: Ameya Palande @ 2009-04-01 13:34 UTC (permalink / raw)
  To: linux-omap

[-- Attachment #1: Type: text/plain, Size: 2211 bytes --]

On Wed, Apr 1, 2009 at 4:14 PM, Ameya Palande <2ameya@gmail.com> wrote:
> On Wed, Apr 1, 2009 at 4:13 PM, Ameya Palande <2ameya@gmail.com> wrote:
>>
>> Hi Artem,
>>
>> On Wed, Apr 1, 2009 at 10:04 AM, Artem Bityutskiy <dedekind@yandex.ru> wrote:
>>>
>>> Artem Bityutskiy wrote:
>>>>
>>>> Ameya Palande wrote:
>>>>>
>>>>> diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
>>>>> index 1fca3e5..b489da1 100644
>>>>> --- a/drivers/dsp/bridge/wmd/tiomap3430.c
>>>>> +++ b/drivers/dsp/bridge/wmd/tiomap3430.c
>>>>> @@ -2034,26 +2034,27 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
>>>>>             if (pfn_valid(__phys_to_pfn(patemp))) {
>>>>>                 pg = phys_to_page(patemp);
>>>>>                 get_page(pg);
>>>>> +                if (page_count(pg) <= 1) {
>>>>> +                    printk(KERN_EMERG "DSPBRIDGE:MAP  "
>>>>> +                        "function: COUNT 0 FOR PA "
>>>>> +                        "0x%x\n", patemp);
>>>>> +                    printk(KERN_EMERG "Bad page state"
>>>>> +                        "in process '%s'\n"
>>>>> +                        "page:%p flags:0x%0*lx "
>>>>> +                        "mapping:%p mapcount:%d "
>>>>> +                        "count:%d\n"
>>>>> +                        "Trying to fix it up, but "
>>>>> +                        "a reboot is needed\n"
>>>>> +                        "Backtrace:\n",
>>>>> +                        current->comm, pg,
>>>>> +                        (int)(2*sizeof(unsigned long)),
>>>
>>> Why do you need this (int) cast? Thiere is a %zd modifyer.
>>>>>
>>>>> +                        (unsigned long)pg->flags,
>>>
>>> What for do you have to cast here?
>>
>> I have attached a new patch which should take care of the ugly code.
>>
>> Cheers,
>> Ameya.
>
> Sorry about the last message. This one is in plain text.
>
> Cheers,
> Ameya.
>

This one removes dump_stack() and BUG_ON().

Cheers,
Ameya.

[-- Attachment #2: 0001--DSPBRIDGE-Fix-module-build-warnings.patch --]
[-- Type: text/x-patch, Size: 3108 bytes --]

From a427ddb9ad83dbb0f8165f9c1bfcc0a5e2fcd3cd Mon Sep 17 00:00:00 2001
From: Ameya Palande <ameya.palande@nokia.com>
Date: Wed, 1 Apr 2009 16:05:13 +0300
Subject: [PATCH] [PATCH] DSPBRIDGE: Fix module build warnings

From: Ameya Palande <ameya.palande@nokia.com>

Signed-off-by: Ameya Palande <ameya.palande@nokia.com>
---
 drivers/dsp/bridge/rmgr/drv_interface.c |    6 ------
 drivers/dsp/bridge/rmgr/node.c          |    2 +-
 drivers/dsp/bridge/wmd/tiomap3430.c     |   29 +++++++++++------------------
 3 files changed, 12 insertions(+), 25 deletions(-)

diff --git a/drivers/dsp/bridge/rmgr/drv_interface.c b/drivers/dsp/bridge/rmgr/drv_interface.c
index 350e1b5..981354a 100755
--- a/drivers/dsp/bridge/rmgr/drv_interface.c
+++ b/drivers/dsp/bridge/rmgr/drv_interface.c
@@ -685,12 +685,6 @@ static int bridge_release(struct inode *ip, struct file *filp)
 	return status;
 }
 
-static void bridge_free(struct device *dev)
-{
-	/* nothing to Free */
-}
-
-
 /* This function provides IO interface to the bridge driver. */
 static int bridge_ioctl(struct inode *ip, struct file *filp, unsigned int code,
 		unsigned long args)
diff --git a/drivers/dsp/bridge/rmgr/node.c b/drivers/dsp/bridge/rmgr/node.c
index 51b4b12..178b802 100644
--- a/drivers/dsp/bridge/rmgr/node.c
+++ b/drivers/dsp/bridge/rmgr/node.c
@@ -3471,7 +3471,7 @@ static DSP_STATUS GetRMSFxns(struct NODE_MGR *hNodeMgr)
 			}
 		}
 	}
-func_end:
+
 	return status;
 }
 
diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c
index 1fca3e5..d94ce66 100644
--- a/drivers/dsp/bridge/wmd/tiomap3430.c
+++ b/drivers/dsp/bridge/wmd/tiomap3430.c
@@ -2034,24 +2034,8 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
 			if (pfn_valid(__phys_to_pfn(patemp))) {
 				pg = phys_to_page(patemp);
 				get_page(pg);
-			}
-			if (page_count(pg) <= 1) {
-				printk(KERN_EMERG "DSPBRIDGE:MAP  function: "
-					"COUNT 0 FOR PA 0x%x\n", patemp);
-				printk(KERN_EMERG "Bad page state"
-					KERN_EMERG "in process '%s'\n"
-					KERN_EMERG "page:%p flags:0x%0*lx "
-					KERN_EMERG "mapping:%p mapcount:%d "
-					KERN_EMERG "count:%d\n"
-					KERN_EMERG "Trying to fix it up, but "
-					KERN_EMERG "a reboot is needed\n"
-					KERN_EMERG "Backtrace:\n",
-					current->comm, pg,
-					(int)(2*sizeof(unsigned long)),
-					(unsigned long)pg->flags, pg->mapping,
-					page_mapcount(pg), page_count(pg));
-				dump_stack();
-				BUG_ON(1);
+				if (page_count(pg) <= 1)
+					goto pg_cnt_err_out;
 			}
 
 			patemp += HW_PAGE_SIZE_4KB;
@@ -2126,6 +2110,15 @@ static DSP_STATUS PteSet(struct PgTableAttrs *pt, u32 pa, u32 va,
 	}
 	DBG_Trace(DBG_ENTER, "< PteSet status %x\n", status);
 	return status;
+
+pg_cnt_err_out:
+	pr_emerg("DSPBRIDGE:MAP function: COUNT 0 FOR PA 0x%x\n", patemp);
+	pr_emerg("Bad page state in process '%s'\n page:%p flags:%lx "
+			"mapping:%p mapcount:%d count:%d\n",
+			current->comm, pg, pg->flags,
+			pg->mapping, page_mapcount(pg), page_count(pg));
+	pr_emerg("Backtrace:\n");
+	BUG();
 }
 
 /* Memory map kernel VA -- memory allocated with vmalloc */
-- 
1.6.2.1


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

end of thread, other threads:[~2009-04-01 13:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-31 16:26 [PATCH] DSPBRIDGE: Fix module build warnings Ameya Palande
2009-04-01  7:00 ` Artem Bityutskiy
2009-04-01  7:04   ` Artem Bityutskiy
     [not found]     ` <269694c00904010613g70a5de8eo5cac92865675ad0f@mail.gmail.com>
2009-04-01 13:14       ` Ameya Palande
2009-04-01 13:34         ` Ameya Palande

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