* [PATCH 0/2] Remove one more platform_device_add_properties() call
@ 2020-11-23 15:31 Heikki Krogerus
2020-11-23 15:31 ` [PATCH 1/2] software node: Introduce device_add_software_node() Heikki Krogerus
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Heikki Krogerus @ 2020-11-23 15:31 UTC (permalink / raw)
To: Rafael J. Wysocki, Felipe Balbi
Cc: Andy Shevchenko, linux-kernel, linux-usb, linux-acpi
Hi,
I originally introduced these as part of my series where I was
proposing PM ops for software nodes [1], but since that still needs
work, I'm sending these two separately.
So basically I'm only modifying dwc3-pci.c so it registers a software
node directly at this point. That will remove one more user of
platform_device_add_properties().
[1] https://lore.kernel.org/lkml/20201029105941.63410-1-heikki.krogerus@linux.intel.com/
thanks,
Heikki Krogerus (2):
software node: Introduce device_add_software_node()
usb: dwc3: pci: Register a software node for the dwc3 platform device
drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++-----
drivers/usb/dwc3/dwc3-pci.c | 61 +++++++++++++++++++-------------
include/linux/property.h | 3 ++
3 files changed, 100 insertions(+), 33 deletions(-)
--
2.29.2
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] software node: Introduce device_add_software_node()
2020-11-23 15:31 [PATCH 0/2] Remove one more platform_device_add_properties() call Heikki Krogerus
@ 2020-11-23 15:31 ` Heikki Krogerus
2020-11-23 15:31 ` [PATCH 2/2] usb: dwc3: pci: Register a software node for the dwc3 platform device Heikki Krogerus
2020-11-23 17:06 ` [PATCH 0/2] Remove one more platform_device_add_properties() call Rafael J. Wysocki
2 siblings, 0 replies; 7+ messages in thread
From: Heikki Krogerus @ 2020-11-23 15:31 UTC (permalink / raw)
To: Rafael J. Wysocki, Felipe Balbi
Cc: Andy Shevchenko, linux-kernel, linux-usb, linux-acpi
This helper will register a software node and then assign
it to device at the same time. The function will also make
sure that the device can't have more than one software node.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++++------
include/linux/property.h | 3 ++
2 files changed, 63 insertions(+), 9 deletions(-)
diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 010828fc785bc..6742d8d63764d 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -48,6 +48,19 @@ EXPORT_SYMBOL_GPL(is_software_node);
struct swnode, fwnode) : NULL; \
})
+static inline struct swnode *dev_to_swnode(struct device *dev)
+{
+ struct fwnode_handle *fwnode = dev_fwnode(dev);
+
+ if (!fwnode)
+ return NULL;
+
+ if (!is_software_node(fwnode))
+ fwnode = fwnode->secondary;
+
+ return to_swnode(fwnode);
+}
+
static struct swnode *
software_node_to_swnode(const struct software_node *node)
{
@@ -843,22 +856,60 @@ void fwnode_remove_software_node(struct fwnode_handle *fwnode)
}
EXPORT_SYMBOL_GPL(fwnode_remove_software_node);
+/**
+ * device_add_software_node - Assign software node to a device
+ * @dev: The device the software node is meant for.
+ * @swnode: The software node.
+ *
+ * This function will register @swnode and make it the secondary firmware node
+ * pointer of @dev. If @dev has no primary node, then @swnode will become the primary
+ * node.
+ */
+int device_add_software_node(struct device *dev, const struct software_node *swnode)
+{
+ int ret;
+
+ /* Only one software node per device. */
+ if (dev_to_swnode(dev))
+ return -EBUSY;
+
+ ret = software_node_register(swnode);
+ if (ret)
+ return ret;
+
+ set_secondary_fwnode(dev, software_node_fwnode(swnode));
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(device_add_software_node);
+
+/**
+ * device_remove_software_node - Remove device's software node
+ * @dev: The device with the software node.
+ *
+ * This function will unregister the software node of @dev.
+ */
+void device_remove_software_node(struct device *dev)
+{
+ struct swnode *swnode;
+
+ swnode = dev_to_swnode(dev);
+ if (!swnode)
+ return;
+
+ kobject_put(&swnode->kobj);
+}
+EXPORT_SYMBOL_GPL(device_remove_software_node);
+
int software_node_notify(struct device *dev, unsigned long action)
{
- struct fwnode_handle *fwnode = dev_fwnode(dev);
struct swnode *swnode;
int ret;
- if (!fwnode)
- return 0;
-
- if (!is_software_node(fwnode))
- fwnode = fwnode->secondary;
- if (!is_software_node(fwnode))
+ swnode = dev_to_swnode(dev);
+ if (!swnode)
return 0;
- swnode = to_swnode(fwnode);
-
switch (action) {
case KOBJ_ADD:
ret = sysfs_create_link(&dev->kobj, &swnode->kobj,
diff --git a/include/linux/property.h b/include/linux/property.h
index 2d4542629d80b..3b6093f6bd04c 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -485,4 +485,7 @@ fwnode_create_software_node(const struct property_entry *properties,
const struct fwnode_handle *parent);
void fwnode_remove_software_node(struct fwnode_handle *fwnode);
+int device_add_software_node(struct device *dev, const struct software_node *swnode);
+void device_remove_software_node(struct device *dev);
+
#endif /* _LINUX_PROPERTY_H_ */
--
2.29.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] usb: dwc3: pci: Register a software node for the dwc3 platform device
2020-11-23 15:31 [PATCH 0/2] Remove one more platform_device_add_properties() call Heikki Krogerus
2020-11-23 15:31 ` [PATCH 1/2] software node: Introduce device_add_software_node() Heikki Krogerus
@ 2020-11-23 15:31 ` Heikki Krogerus
2020-11-23 17:06 ` [PATCH 0/2] Remove one more platform_device_add_properties() call Rafael J. Wysocki
2 siblings, 0 replies; 7+ messages in thread
From: Heikki Krogerus @ 2020-11-23 15:31 UTC (permalink / raw)
To: Rafael J. Wysocki, Felipe Balbi
Cc: Andy Shevchenko, linux-kernel, linux-usb, linux-acpi
By registering the software node directly instead of just
the properties in it, the driver can take advantage of also
the other features the software nodes have.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
drivers/usb/dwc3/dwc3-pci.c | 61 ++++++++++++++++++++++---------------
1 file changed, 37 insertions(+), 24 deletions(-)
diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
index bae6a70664c80..037bc21bffa66 100644
--- a/drivers/usb/dwc3/dwc3-pci.c
+++ b/drivers/usb/dwc3/dwc3-pci.c
@@ -142,6 +142,18 @@ static const struct property_entry dwc3_pci_amd_properties[] = {
{}
};
+static const struct software_node dwc3_pci_intel_swnode = {
+ .properties = dwc3_pci_intel_properties,
+};
+
+static const struct software_node dwc3_pci_intel_mrfld_swnode = {
+ .properties = dwc3_pci_mrfld_properties,
+};
+
+static const struct software_node dwc3_pci_amd_swnode = {
+ .properties = dwc3_pci_amd_properties,
+};
+
static int dwc3_pci_quirks(struct dwc3_pci *dwc)
{
struct pci_dev *pdev = dwc->pci;
@@ -222,7 +234,6 @@ static void dwc3_pci_resume_work(struct work_struct *work)
static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
{
- struct property_entry *p = (struct property_entry *)id->driver_data;
struct dwc3_pci *dwc;
struct resource res[2];
int ret;
@@ -265,7 +276,7 @@ static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
dwc->dwc3->dev.parent = dev;
ACPI_COMPANION_SET(&dwc->dwc3->dev, ACPI_COMPANION(dev));
- ret = platform_device_add_properties(dwc->dwc3, p);
+ ret = device_add_software_node(&dwc->dwc3->dev, (void *)id->driver_data);
if (ret < 0)
goto err;
@@ -288,6 +299,7 @@ static int dwc3_pci_probe(struct pci_dev *pci, const struct pci_device_id *id)
return 0;
err:
+ device_remove_software_node(&dwc->dwc3->dev);
platform_device_put(dwc->dwc3);
return ret;
}
@@ -304,75 +316,76 @@ static void dwc3_pci_remove(struct pci_dev *pci)
#endif
device_init_wakeup(&pci->dev, false);
pm_runtime_get(&pci->dev);
+ device_remove_software_node(&dwc->dwc3->dev);
platform_device_unregister(dwc->dwc3);
}
static const struct pci_device_id dwc3_pci_id_table[] = {
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BSW),
- (kernel_ulong_t) &dwc3_pci_intel_properties },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BYT),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_MRFLD),
- (kernel_ulong_t) &dwc3_pci_mrfld_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_mrfld_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CMLH),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_SPTH),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_BXT_M),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_APL),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_KBP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_GLK),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPH),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_CNPV),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ICLLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_EHLLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPLP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGPH),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_JSP),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ADLS),
- (kernel_ulong_t) &dwc3_pci_intel_properties, },
+ (kernel_ulong_t) &dwc3_pci_intel_swnode, },
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_NL_USB),
- (kernel_ulong_t) &dwc3_pci_amd_properties, },
+ (kernel_ulong_t) &dwc3_pci_amd_swnode, },
{ } /* Terminating Entry */
};
MODULE_DEVICE_TABLE(pci, dwc3_pci_id_table);
--
2.29.2
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Remove one more platform_device_add_properties() call
2020-11-23 15:31 [PATCH 0/2] Remove one more platform_device_add_properties() call Heikki Krogerus
2020-11-23 15:31 ` [PATCH 1/2] software node: Introduce device_add_software_node() Heikki Krogerus
2020-11-23 15:31 ` [PATCH 2/2] usb: dwc3: pci: Register a software node for the dwc3 platform device Heikki Krogerus
@ 2020-11-23 17:06 ` Rafael J. Wysocki
2020-11-23 17:36 ` Andy Shevchenko
2020-12-04 11:23 ` Heikki Krogerus
2 siblings, 2 replies; 7+ messages in thread
From: Rafael J. Wysocki @ 2020-11-23 17:06 UTC (permalink / raw)
To: Heikki Krogerus
Cc: Rafael J. Wysocki, Felipe Balbi, Andy Shevchenko,
Linux Kernel Mailing List,
open list:ULTRA-WIDEBAND (UWB) SUBSYSTEM:,
ACPI Devel Maling List
On Mon, Nov 23, 2020 at 4:32 PM Heikki Krogerus
<heikki.krogerus@linux.intel.com> wrote:
>
> Hi,
>
> I originally introduced these as part of my series where I was
> proposing PM ops for software nodes [1], but since that still needs
> work, I'm sending these two separately.
>
> So basically I'm only modifying dwc3-pci.c so it registers a software
> node directly at this point. That will remove one more user of
> platform_device_add_properties().
>
> [1] https://lore.kernel.org/lkml/20201029105941.63410-1-heikki.krogerus@linux.intel.com/
>
> thanks,
>
> Heikki Krogerus (2):
> software node: Introduce device_add_software_node()
> usb: dwc3: pci: Register a software node for the dwc3 platform device
>
> drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++-----
> drivers/usb/dwc3/dwc3-pci.c | 61 +++++++++++++++++++-------------
> include/linux/property.h | 3 ++
> 3 files changed, 100 insertions(+), 33 deletions(-)
>
> --
These look good to me.
If you want me to take them, though, I need an ACK from the dwc3 side.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Remove one more platform_device_add_properties() call
2020-11-23 17:06 ` [PATCH 0/2] Remove one more platform_device_add_properties() call Rafael J. Wysocki
@ 2020-11-23 17:36 ` Andy Shevchenko
2020-12-04 11:23 ` Heikki Krogerus
1 sibling, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2020-11-23 17:36 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: Heikki Krogerus, Rafael J. Wysocki, Felipe Balbi,
Linux Kernel Mailing List,
open list:ULTRA-WIDEBAND (UWB) SUBSYSTEM:,
ACPI Devel Maling List
On Mon, Nov 23, 2020 at 06:06:31PM +0100, Rafael J. Wysocki wrote:
> On Mon, Nov 23, 2020 at 4:32 PM Heikki Krogerus
> <heikki.krogerus@linux.intel.com> wrote:
> >
> > Hi,
> >
> > I originally introduced these as part of my series where I was
> > proposing PM ops for software nodes [1], but since that still needs
> > work, I'm sending these two separately.
> >
> > So basically I'm only modifying dwc3-pci.c so it registers a software
> > node directly at this point. That will remove one more user of
> > platform_device_add_properties().
> >
> > [1] https://lore.kernel.org/lkml/20201029105941.63410-1-heikki.krogerus@linux.intel.com/
> >
> > thanks,
> >
> > Heikki Krogerus (2):
> > software node: Introduce device_add_software_node()
> > usb: dwc3: pci: Register a software node for the dwc3 platform device
> >
> > drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++-----
> > drivers/usb/dwc3/dwc3-pci.c | 61 +++++++++++++++++++-------------
> > include/linux/property.h | 3 ++
> > 3 files changed, 100 insertions(+), 33 deletions(-)
> >
> > --
>
> These look good to me.
>
> If you want me to take them, though, I need an ACK from the dwc3 side.
Btw, I have tested this on one of the platform with DWC3 and found no
regression, so feel free to add
Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Remove one more platform_device_add_properties() call
2020-11-23 17:06 ` [PATCH 0/2] Remove one more platform_device_add_properties() call Rafael J. Wysocki
2020-11-23 17:36 ` Andy Shevchenko
@ 2020-12-04 11:23 ` Heikki Krogerus
2021-01-11 12:56 ` Heikki Krogerus
1 sibling, 1 reply; 7+ messages in thread
From: Heikki Krogerus @ 2020-12-04 11:23 UTC (permalink / raw)
To: Felipe Balbi
Cc: Rafael J. Wysocki, Andy Shevchenko, Linux Kernel Mailing List,
open list:ULTRA-WIDEBAND (UWB) SUBSYSTEM:,
ACPI Devel Maling List, Rafael J. Wysocki
Hi Felipe,
On Mon, Nov 23, 2020 at 06:06:31PM +0100, Rafael J. Wysocki wrote:
> On Mon, Nov 23, 2020 at 4:32 PM Heikki Krogerus
> <heikki.krogerus@linux.intel.com> wrote:
> >
> > Hi,
> >
> > I originally introduced these as part of my series where I was
> > proposing PM ops for software nodes [1], but since that still needs
> > work, I'm sending these two separately.
> >
> > So basically I'm only modifying dwc3-pci.c so it registers a software
> > node directly at this point. That will remove one more user of
> > platform_device_add_properties().
> >
> > [1] https://lore.kernel.org/lkml/20201029105941.63410-1-heikki.krogerus@linux.intel.com/
> >
> > thanks,
> >
> > Heikki Krogerus (2):
> > software node: Introduce device_add_software_node()
> > usb: dwc3: pci: Register a software node for the dwc3 platform device
> >
> > drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++-----
> > drivers/usb/dwc3/dwc3-pci.c | 61 +++++++++++++++++++-------------
> > include/linux/property.h | 3 ++
> > 3 files changed, 100 insertions(+), 33 deletions(-)
> >
> > --
>
> These look good to me.
>
> If you want me to take them, though, I need an ACK from the dwc3 side.
Is this OK?
thanks,
--
heikki
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Remove one more platform_device_add_properties() call
2020-12-04 11:23 ` Heikki Krogerus
@ 2021-01-11 12:56 ` Heikki Krogerus
0 siblings, 0 replies; 7+ messages in thread
From: Heikki Krogerus @ 2021-01-11 12:56 UTC (permalink / raw)
To: Felipe Balbi
Cc: Rafael J. Wysocki, Andy Shevchenko, Linux Kernel Mailing List,
open list:ULTRA-WIDEBAND (UWB) SUBSYSTEM:,
ACPI Devel Maling List, Rafael J. Wysocki
On Fri, Dec 04, 2020 at 01:23:22PM +0200, Heikki Krogerus wrote:
> Hi Felipe,
>
> On Mon, Nov 23, 2020 at 06:06:31PM +0100, Rafael J. Wysocki wrote:
> > On Mon, Nov 23, 2020 at 4:32 PM Heikki Krogerus
> > <heikki.krogerus@linux.intel.com> wrote:
> > >
> > > Hi,
> > >
> > > I originally introduced these as part of my series where I was
> > > proposing PM ops for software nodes [1], but since that still needs
> > > work, I'm sending these two separately.
> > >
> > > So basically I'm only modifying dwc3-pci.c so it registers a software
> > > node directly at this point. That will remove one more user of
> > > platform_device_add_properties().
> > >
> > > [1] https://lore.kernel.org/lkml/20201029105941.63410-1-heikki.krogerus@linux.intel.com/
> > >
> > > thanks,
> > >
> > > Heikki Krogerus (2):
> > > software node: Introduce device_add_software_node()
> > > usb: dwc3: pci: Register a software node for the dwc3 platform device
> > >
> > > drivers/base/swnode.c | 69 ++++++++++++++++++++++++++++++++-----
> > > drivers/usb/dwc3/dwc3-pci.c | 61 +++++++++++++++++++-------------
> > > include/linux/property.h | 3 ++
> > > 3 files changed, 100 insertions(+), 33 deletions(-)
> > >
> > > --
> >
> > These look good to me.
> >
> > If you want me to take them, though, I need an ACK from the dwc3 side.
>
> Is this OK?
I think this went under you radar, so I'll resend these.
Br,
--
heikki
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-01-11 12:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-23 15:31 [PATCH 0/2] Remove one more platform_device_add_properties() call Heikki Krogerus
2020-11-23 15:31 ` [PATCH 1/2] software node: Introduce device_add_software_node() Heikki Krogerus
2020-11-23 15:31 ` [PATCH 2/2] usb: dwc3: pci: Register a software node for the dwc3 platform device Heikki Krogerus
2020-11-23 17:06 ` [PATCH 0/2] Remove one more platform_device_add_properties() call Rafael J. Wysocki
2020-11-23 17:36 ` Andy Shevchenko
2020-12-04 11:23 ` Heikki Krogerus
2021-01-11 12:56 ` Heikki Krogerus
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).