* [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver
@ 2015-02-11 11:10 Michael Qiu
2015-02-11 12:32 ` David Marchand
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
0 siblings, 2 replies; 11+ messages in thread
From: Michael Qiu @ 2015-02-11 11:10 UTC (permalink / raw)
To: dev
max_vfs will only be created by igb_uio driver, for other
drivers like vfio or pci_uio_generic, max_vfs will miss.
But sriov_numvfs is not driver related, just get the vf numbers
from that field.
Signed-off-by: Michael Qiu <michael.qiu@intel.com>
---
lib/librte_eal/linuxapp/eal/eal_pci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 1f43688..3da4b69 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -305,7 +305,7 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus,
/* get max_vfs */
dev->max_vfs = 0;
- snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
+ snprintf(filename, sizeof(filename), "%s/sriov_numvfs", dirname);
if (!access(filename, F_OK) &&
eal_parse_sysfs_value(filename, &tmp) == 0) {
dev->max_vfs = (uint16_t)tmp;
--
1.9.3
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 11:10 [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver Michael Qiu
@ 2015-02-11 12:32 ` David Marchand
2015-02-11 12:41 ` Qiu, Michael
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
1 sibling, 1 reply; 11+ messages in thread
From: David Marchand @ 2015-02-11 12:32 UTC (permalink / raw)
To: Michael Qiu; +Cc: dev
Hello Michael,
On Wed, Feb 11, 2015 at 12:10 PM, Michael Qiu <michael.qiu@intel.com> wrote:
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> ---
> lib/librte_eal/linuxapp/eal/eal_pci.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c
> b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index 1f43688..3da4b69 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -305,7 +305,7 @@ pci_scan_one(const char *dirname, uint16_t domain,
> uint8_t bus,
>
> /* get max_vfs */
> dev->max_vfs = 0;
> - snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> + snprintf(filename, sizeof(filename), "%s/sriov_numvfs", dirname);
> if (!access(filename, F_OK) &&
> eal_parse_sysfs_value(filename, &tmp) == 0) {
> dev->max_vfs = (uint16_t)tmp;
>
>
Not too sure about this change.
Quickly looked, and as far as I can see, sriov_numvfs has been introduced
by 1789382a ("PCI: SRIOV control and status via sysfs").
Won't your change break anything that uses a kernel < 3.8 (not backported) ?
--
David Marchand
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 12:32 ` David Marchand
@ 2015-02-11 12:41 ` Qiu, Michael
0 siblings, 0 replies; 11+ messages in thread
From: Qiu, Michael @ 2015-02-11 12:41 UTC (permalink / raw)
To: David Marchand; +Cc: dev
On 2/11/2015 8:32 PM, David Marchand wrote:
> Hello Michael,
>
> On Wed, Feb 11, 2015 at 12:10 PM, Michael Qiu <michael.qiu@intel.com
> <mailto:michael.qiu@intel.com>> wrote:
>
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com
> <mailto:michael.qiu@intel.com>>
> ---
> lib/librte_eal/linuxapp/eal/eal_pci.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c
> b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index 1f43688..3da4b69 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -305,7 +305,7 @@ pci_scan_one(const char *dirname, uint16_t
> domain, uint8_t bus,
>
> /* get max_vfs */
> dev->max_vfs = 0;
> - snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> + snprintf(filename, sizeof(filename), "%s/sriov_numvfs",
> dirname);
> if (!access(filename, F_OK) &&
> eal_parse_sysfs_value(filename, &tmp) == 0) {
> dev->max_vfs = (uint16_t)tmp;
>
>
> Not too sure about this change.
> Quickly looked, and as far as I can see, sriov_numvfs has been
> introduced by 1789382a ("PCI: SRIOV control and status via sysfs").
>
> Won't your change break anything that uses a kernel < 3.8 (not
> backported) ?
OK, you are right, I will fix this in v2, actually it will break nothing
as the code already done accessing check.
But not enough, for kernel version less than 3.8 and driver is igb_uio,
it is indeed not suitable for leaving max_vfs zero.
BTW, for kernel version less than 3.8 and driver is vfio or
pci_uio_generic, how could we fill this field?
Thanks,
Michael
>
>
> --
> David Marchand
^ permalink raw reply [flat|nested] 11+ messages in thread
* [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 11:10 [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver Michael Qiu
2015-02-11 12:32 ` David Marchand
@ 2015-02-11 13:25 ` Michael Qiu
2015-02-11 13:27 ` Qiu, Michael
` (2 more replies)
1 sibling, 3 replies; 11+ messages in thread
From: Michael Qiu @ 2015-02-11 13:25 UTC (permalink / raw)
To: dev
max_vfs will only be created by igb_uio driver, for other
drivers like vfio or pci_uio_generic, max_vfs will miss.
But sriov_numvfs is not driver related, just get the vf numbers
from that field.
Signed-off-by: Michael Qiu <michael.qiu@intel.com>
---
v2 --> v1:
backport for kernel version less than 3.8
lib/librte_eal/linuxapp/eal/eal_pci.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index b5f5410..fcf5511 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -272,8 +272,16 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus,
dev->max_vfs = 0;
snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
if (!access(filename, F_OK) &&
- eal_parse_sysfs_value(filename, &tmp) == 0) {
+ eal_parse_sysfs_value(filename, &tmp) == 0)
dev->max_vfs = (uint16_t)tmp;
+ else {
+ /* for none igb_uio driver, need kernel
+ * version greater than 3.8 */
+ snprintf(filename, sizeof(filename),
+ "%s/sriov_numvfs", dirname);
+ if (!access(filename, F_OK) &&
+ eal_parse_sysfs_value(filename, &tmp) == 0)
+ dev->max_vfs = (uint16_t)tmp;
}
/* get numa node */
--
1.9.3
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
@ 2015-02-11 13:27 ` Qiu, Michael
2015-02-12 5:50 ` David Marchand
2015-02-12 16:25 ` Thomas Monjalon
2 siblings, 0 replies; 11+ messages in thread
From: Qiu, Michael @ 2015-02-11 13:27 UTC (permalink / raw)
To: dev
[+cc] David
On 2/11/2015 9:26 PM, Qiu, Michael wrote:
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> ---
> v2 --> v1:
> backport for kernel version less than 3.8
>
> lib/librte_eal/linuxapp/eal/eal_pci.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index b5f5410..fcf5511 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -272,8 +272,16 @@ pci_scan_one(const char *dirname, uint16_t domain, uint8_t bus,
> dev->max_vfs = 0;
> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> if (!access(filename, F_OK) &&
> - eal_parse_sysfs_value(filename, &tmp) == 0) {
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> dev->max_vfs = (uint16_t)tmp;
> + else {
> + /* for none igb_uio driver, need kernel
> + * version greater than 3.8 */
> + snprintf(filename, sizeof(filename),
> + "%s/sriov_numvfs", dirname);
> + if (!access(filename, F_OK) &&
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> + dev->max_vfs = (uint16_t)tmp;
> }
>
> /* get numa node */
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
2015-02-11 13:27 ` Qiu, Michael
@ 2015-02-12 5:50 ` David Marchand
2015-02-13 3:01 ` Qiu, Michael
2015-02-13 13:49 ` Thomas Monjalon
2015-02-12 16:25 ` Thomas Monjalon
2 siblings, 2 replies; 11+ messages in thread
From: David Marchand @ 2015-02-12 5:50 UTC (permalink / raw)
To: Michael Qiu; +Cc: dev
On Wed, Feb 11, 2015 at 2:25 PM, Michael Qiu <michael.qiu@intel.com> wrote:
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> ---
> v2 --> v1:
> backport for kernel version less than 3.8
>
> lib/librte_eal/linuxapp/eal/eal_pci.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c
> b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index b5f5410..fcf5511 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -272,8 +272,16 @@ pci_scan_one(const char *dirname, uint16_t domain,
> uint8_t bus,
> dev->max_vfs = 0;
> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> if (!access(filename, F_OK) &&
> - eal_parse_sysfs_value(filename, &tmp) == 0) {
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> dev->max_vfs = (uint16_t)tmp;
> + else {
> + /* for none igb_uio driver, need kernel
> + * version greater than 3.8 */
> + snprintf(filename, sizeof(filename),
> + "%s/sriov_numvfs", dirname);
> + if (!access(filename, F_OK) &&
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> + dev->max_vfs = (uint16_t)tmp;
> }
>
> /* get numa node */
>
I can see a different solution : maybe faking a sriov_numvfs parameter from
igb_uio for kernels that don't have it and doing nothing for kernels that
already provide sriov_numvfs.
But your solution is more straightforward (and we don't need to update
documentation and/or existing scripts afaik).
Acked-by: David Marchand <david.marchand@6wind.com>
--
David Marchand
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
2015-02-11 13:27 ` Qiu, Michael
2015-02-12 5:50 ` David Marchand
@ 2015-02-12 16:25 ` Thomas Monjalon
2015-02-13 2:56 ` Qiu, Michael
2 siblings, 1 reply; 11+ messages in thread
From: Thomas Monjalon @ 2015-02-12 16:25 UTC (permalink / raw)
To: Michael Qiu; +Cc: dev
2015-02-11 21:25, Michael Qiu:
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
[...]
> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> if (!access(filename, F_OK) &&
> - eal_parse_sysfs_value(filename, &tmp) == 0) {
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> dev->max_vfs = (uint16_t)tmp;
> + else {
> + /* for none igb_uio driver, need kernel
I think it's a typo. Do you mean "for non igb_uio driver"?
> + * version greater than 3.8 */
> + snprintf(filename, sizeof(filename),
> + "%s/sriov_numvfs", dirname);
> + if (!access(filename, F_OK) &&
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> + dev->max_vfs = (uint16_t)tmp;
> }
>
> /* get numa node */
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-12 16:25 ` Thomas Monjalon
@ 2015-02-13 2:56 ` Qiu, Michael
2015-02-13 9:20 ` Thomas Monjalon
0 siblings, 1 reply; 11+ messages in thread
From: Qiu, Michael @ 2015-02-13 2:56 UTC (permalink / raw)
To: Thomas Monjalon; +Cc: dev
On 2/13/2015 12:26 AM, Thomas Monjalon wrote:
> 2015-02-11 21:25, Michael Qiu:
>> max_vfs will only be created by igb_uio driver, for other
>> drivers like vfio or pci_uio_generic, max_vfs will miss.
>>
>> But sriov_numvfs is not driver related, just get the vf numbers
>> from that field.
>>
>> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> [...]
>> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
>> if (!access(filename, F_OK) &&
>> - eal_parse_sysfs_value(filename, &tmp) == 0) {
>> + eal_parse_sysfs_value(filename, &tmp) == 0)
>> dev->max_vfs = (uint16_t)tmp;
>> + else {
>> + /* for none igb_uio driver, need kernel
> I think it's a typo. Do you mean "for non igb_uio driver"?
Hi, Thomas
Yes, you are right.
Did I need to send out V3 patch for this typo?
Thanks,
Michael
>
>> + * version greater than 3.8 */
>> + snprintf(filename, sizeof(filename),
>> + "%s/sriov_numvfs", dirname);
>> + if (!access(filename, F_OK) &&
>> + eal_parse_sysfs_value(filename, &tmp) == 0)
>> + dev->max_vfs = (uint16_t)tmp;
>> }
>>
>> /* get numa node */
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-12 5:50 ` David Marchand
@ 2015-02-13 3:01 ` Qiu, Michael
2015-02-13 13:49 ` Thomas Monjalon
1 sibling, 0 replies; 11+ messages in thread
From: Qiu, Michael @ 2015-02-13 3:01 UTC (permalink / raw)
To: David Marchand; +Cc: dev
On 2/12/2015 1:50 PM, David Marchand wrote:
> On Wed, Feb 11, 2015 at 2:25 PM, Michael Qiu <michael.qiu@intel.com
> <mailto:michael.qiu@intel.com>> wrote:
>
> max_vfs will only be created by igb_uio driver, for other
> drivers like vfio or pci_uio_generic, max_vfs will miss.
>
> But sriov_numvfs is not driver related, just get the vf numbers
> from that field.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com
> <mailto:michael.qiu@intel.com>>
> ---
> v2 --> v1:
> backport for kernel version less than 3.8
>
> lib/librte_eal/linuxapp/eal/eal_pci.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c
> b/lib/librte_eal/linuxapp/eal/eal_pci.c
> index b5f5410..fcf5511 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_pci.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
> @@ -272,8 +272,16 @@ pci_scan_one(const char *dirname, uint16_t
> domain, uint8_t bus,
> dev->max_vfs = 0;
> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> if (!access(filename, F_OK) &&
> - eal_parse_sysfs_value(filename, &tmp) == 0) {
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> dev->max_vfs = (uint16_t)tmp;
> + else {
> + /* for none igb_uio driver, need kernel
> + * version greater than 3.8 */
> + snprintf(filename, sizeof(filename),
> + "%s/sriov_numvfs", dirname);
> + if (!access(filename, F_OK) &&
> + eal_parse_sysfs_value(filename, &tmp) == 0)
> + dev->max_vfs = (uint16_t)tmp;
> }
>
> /* get numa node */
>
>
> I can see a different solution : maybe faking a sriov_numvfs parameter
> from igb_uio for kernels that don't have it and doing nothing for
> kernels that already provide sriov_numvfs.
Yes, your solution is much more better, but little complex. My solution
can be a quick fix.
> But your solution is more straightforward (and we don't need to update
> documentation and/or existing scripts afaik).
>
> Acked-by: David Marchand <david.marchand@6wind.com
> <mailto:david.marchand@6wind.com>>
>
Thanks David for reviewing this patch and your good comments
Thanks,
Michale
> --
> David Marchand
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-13 2:56 ` Qiu, Michael
@ 2015-02-13 9:20 ` Thomas Monjalon
0 siblings, 0 replies; 11+ messages in thread
From: Thomas Monjalon @ 2015-02-13 9:20 UTC (permalink / raw)
To: Qiu, Michael; +Cc: dev
2015-02-13 02:56, Qiu, Michael:
> On 2/13/2015 12:26 AM, Thomas Monjalon wrote:
> > 2015-02-11 21:25, Michael Qiu:
> >> max_vfs will only be created by igb_uio driver, for other
> >> drivers like vfio or pci_uio_generic, max_vfs will miss.
> >>
> >> But sriov_numvfs is not driver related, just get the vf numbers
> >> from that field.
> >>
> >> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> > [...]
> >> snprintf(filename, sizeof(filename), "%s/max_vfs", dirname);
> >> if (!access(filename, F_OK) &&
> >> - eal_parse_sysfs_value(filename, &tmp) == 0) {
> >> + eal_parse_sysfs_value(filename, &tmp) == 0)
> >> dev->max_vfs = (uint16_t)tmp;
> >> + else {
> >> + /* for none igb_uio driver, need kernel
> > I think it's a typo. Do you mean "for non igb_uio driver"?
>
> Hi, Thomas
>
> Yes, you are right.
>
> Did I need to send out V3 patch for this typo?
No, thanks. Your agreement is enough. I'll fix it.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [dpdk-dev] [PATCH v2] eal_pci: Fix max_vfs missing for none igb_uio driver
2015-02-12 5:50 ` David Marchand
2015-02-13 3:01 ` Qiu, Michael
@ 2015-02-13 13:49 ` Thomas Monjalon
1 sibling, 0 replies; 11+ messages in thread
From: Thomas Monjalon @ 2015-02-13 13:49 UTC (permalink / raw)
To: Michael Qiu; +Cc: dev
> > max_vfs will only be created by igb_uio driver, for other
> > drivers like vfio or pci_uio_generic, max_vfs will miss.
> >
> > But sriov_numvfs is not driver related, just get the vf numbers
> > from that field.
> >
> > Signed-off-by: Michael Qiu <michael.qiu@intel.com>
>
> I can see a different solution : maybe faking a sriov_numvfs parameter from
> igb_uio for kernels that don't have it and doing nothing for kernels that
> already provide sriov_numvfs.
> But your solution is more straightforward (and we don't need to update
> documentation and/or existing scripts afaik).
>
> Acked-by: David Marchand <david.marchand@6wind.com>
Applied, thanks
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2015-02-13 13:49 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-11 11:10 [dpdk-dev] [PATCH] eal_pci: Fix max_vfs missing for none igb_uio driver Michael Qiu
2015-02-11 12:32 ` David Marchand
2015-02-11 12:41 ` Qiu, Michael
2015-02-11 13:25 ` [dpdk-dev] [PATCH v2] " Michael Qiu
2015-02-11 13:27 ` Qiu, Michael
2015-02-12 5:50 ` David Marchand
2015-02-13 3:01 ` Qiu, Michael
2015-02-13 13:49 ` Thomas Monjalon
2015-02-12 16:25 ` Thomas Monjalon
2015-02-13 2:56 ` Qiu, Michael
2015-02-13 9:20 ` Thomas Monjalon
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).