* [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail
@ 2022-05-31 13:18 Mateusz Palczewski
2022-05-31 14:52 ` Paul Menzel
2022-05-31 20:40 ` Tony Nguyen
0 siblings, 2 replies; 4+ messages in thread
From: Mateusz Palczewski @ 2022-05-31 13:18 UTC (permalink / raw)
To: intel-wired-lan
From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Disable VF's RX/TX queues, when VIRTCHNL_OP_CONFIG_VSI_QUEUES fail.
Not disabling them might lead to scenario, where PF driver leaves VF
queues enabled, when VF's VSI failed queue config.
In this scenario VF should not have RX/TX queues enabled. If PF failed
to setup VF's queues, VF will reset due to TX timeouts in VF driver.
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Suggested-by: Slawomir Laba <slawomirx.laba@intel.com>
---
drivers/net/ethernet/intel/ice/ice_virtchnl.c | 53 +++++++++----------
1 file changed, 26 insertions(+), 27 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
index 1d9b84c..4547bc1 100644
--- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c
+++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
@@ -1569,35 +1569,27 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
*/
static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
{
- enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;
struct virtchnl_vsi_queue_config_info *qci =
(struct virtchnl_vsi_queue_config_info *)msg;
struct virtchnl_queue_pair_info *qpi;
struct ice_pf *pf = vf->pf;
struct ice_vsi *vsi;
- int i, q_idx;
+ int i = -1, q_idx;
- if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
goto error_param;
- }
- if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id))
goto error_param;
- }
vsi = ice_get_vf_vsi(vf);
- if (!vsi) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ if (!vsi)
goto error_param;
- }
if (qci->num_queue_pairs > ICE_MAX_RSS_QS_PER_VF ||
qci->num_queue_pairs > min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)) {
dev_err(ice_pf_to_dev(pf), "VF-%d requesting more than supported number of queues: %d\n",
vf->vf_id, min_t(u16, vsi->alloc_txq, vsi->alloc_rxq));
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
goto error_param;
}
@@ -1610,7 +1602,6 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
!ice_vc_isvalid_ring_len(qpi->txq.ring_len) ||
!ice_vc_isvalid_ring_len(qpi->rxq.ring_len) ||
!ice_vc_isvalid_q_id(vf, qci->vsi_id, qpi->txq.queue_id)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
goto error_param;
}
@@ -1620,7 +1611,6 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
* for selected "vsi"
*/
if (q_idx >= vsi->alloc_txq || q_idx >= vsi->alloc_rxq) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
goto error_param;
}
@@ -1630,14 +1620,13 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
vsi->tx_rings[i]->count = qpi->txq.ring_len;
/* Disable any existing queue first */
- if (ice_vf_vsi_dis_single_txq(vf, vsi, q_idx)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ if (ice_vf_vsi_dis_single_txq(vf, vsi, q_idx))
goto error_param;
- }
/* Configure a queue with the requested settings */
if (ice_vsi_cfg_single_txq(vsi, vsi->tx_rings, q_idx)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ dev_warn(ice_pf_to_dev(pf), "VF-%d failed to configure TX queue %d\n",
+ vf->vf_id, i);
goto error_param;
}
}
@@ -1651,17 +1640,13 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
if (qpi->rxq.databuffer_size != 0 &&
(qpi->rxq.databuffer_size > ((16 * 1024) - 128) ||
- qpi->rxq.databuffer_size < 1024)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ qpi->rxq.databuffer_size < 1024))
goto error_param;
- }
vsi->rx_buf_len = qpi->rxq.databuffer_size;
vsi->rx_rings[i]->rx_buf_len = vsi->rx_buf_len;
if (qpi->rxq.max_pkt_size > max_frame_size ||
- qpi->rxq.max_pkt_size < 64) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ qpi->rxq.max_pkt_size < 64)
goto error_param;
- }
vsi->max_frame = qpi->rxq.max_pkt_size;
/* add space for the port VLAN since the VF driver is
@@ -1672,16 +1657,30 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
vsi->max_frame += VLAN_HLEN;
if (ice_vsi_cfg_single_rxq(vsi, q_idx)) {
- v_ret = VIRTCHNL_STATUS_ERR_PARAM;
+ dev_warn(ice_pf_to_dev(pf), "VF-%d failed to configure RX queue %d\n",
+ vf->vf_id, i);
goto error_param;
}
}
}
+ /* send the response to the VF */
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES,
+ VIRTCHNL_STATUS_SUCCESS, NULL, 0);
error_param:
+ /* disable whatever we can */
+ for (; i >= 0; i--) {
+ if (ice_vsi_ctrl_one_rx_ring(vsi, false, i, true))
+ dev_err(ice_pf_to_dev(pf), "VF-%d could not disable RX queue %d\n",
+ vf->vf_id, i);
+ if (ice_vf_vsi_dis_single_txq(vf, vsi, i))
+ dev_err(ice_pf_to_dev(pf), "VF-%d could not disable TX queue %d\n",
+ vf->vf_id, i);
+ }
+
/* send the response to the VF */
- return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES, v_ret,
- NULL, 0);
+ return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES,
+ VIRTCHNL_STATUS_ERR_PARAM, NULL, 0);
}
/**
--
2.27.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail
2022-05-31 13:18 [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail Mateusz Palczewski
@ 2022-05-31 14:52 ` Paul Menzel
2022-05-31 20:40 ` Tony Nguyen
1 sibling, 0 replies; 4+ messages in thread
From: Paul Menzel @ 2022-05-31 14:52 UTC (permalink / raw)
To: intel-wired-lan
Dear Mateusz, dear Przemyslaw,
Thank you for the patch.
Am 31.05.22 um 15:18 schrieb Mateusz Palczewski:
> From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
>
> Disable VF's RX/TX queues, when VIRTCHNL_OP_CONFIG_VSI_QUEUES fail.
> Not disabling them might lead to scenario, where PF driver leaves VF
> queues enabled, when VF's VSI failed queue config.
> In this scenario VF should not have RX/TX queues enabled. If PF failed
> to setup VF's queues, VF will reset due to TX timeouts in VF driver.
Nit: The verb is spelled with a space: to set up
> Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
> Suggested-by: Slawomir Laba <slawomirx.laba@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_virtchnl.c | 53 +++++++++----------
> 1 file changed, 26 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> index 1d9b84c..4547bc1 100644
> --- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> @@ -1569,35 +1569,27 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
> */
> static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> {
> - enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;
> struct virtchnl_vsi_queue_config_info *qci =
> (struct virtchnl_vsi_queue_config_info *)msg;
> struct virtchnl_queue_pair_info *qpi;
> struct ice_pf *pf = vf->pf;
> struct ice_vsi *vsi;
> - int i, q_idx;
> + int i = -1, q_idx;
Could you please add a comment to the commit message, why the for loop
variable is initialized to -1. Reading a bit through the diff, it looks
like `i` is not exclusively used as a loop variable. Maybe you could
also add a cleanup patch, renaming the variable, or adding another one.
>
> - if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
> goto error_param;
> - }
>
> - if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id))
> goto error_param;
> - }
>
> vsi = ice_get_vf_vsi(vf);
> - if (!vsi) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (!vsi)
> goto error_param;
> - }
>
> if (qci->num_queue_pairs > ICE_MAX_RSS_QS_PER_VF ||
> qci->num_queue_pairs > min_t(u16, vsi->alloc_txq, vsi->alloc_rxq)) {
> dev_err(ice_pf_to_dev(pf), "VF-%d requesting more than supported number of queues: %d\n",
> vf->vf_id, min_t(u16, vsi->alloc_txq, vsi->alloc_rxq));
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> goto error_param;
> }
>
> @@ -1610,7 +1602,6 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> !ice_vc_isvalid_ring_len(qpi->txq.ring_len) ||
> !ice_vc_isvalid_ring_len(qpi->rxq.ring_len) ||
> !ice_vc_isvalid_q_id(vf, qci->vsi_id, qpi->txq.queue_id)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> goto error_param;
> }
>
> @@ -1620,7 +1611,6 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> * for selected "vsi"
> */
> if (q_idx >= vsi->alloc_txq || q_idx >= vsi->alloc_rxq) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> goto error_param;
> }
>
> @@ -1630,14 +1620,13 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> vsi->tx_rings[i]->count = qpi->txq.ring_len;
>
> /* Disable any existing queue first */
> - if (ice_vf_vsi_dis_single_txq(vf, vsi, q_idx)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (ice_vf_vsi_dis_single_txq(vf, vsi, q_idx))
> goto error_param;
> - }
>
> /* Configure a queue with the requested settings */
> if (ice_vsi_cfg_single_txq(vsi, vsi->tx_rings, q_idx)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + dev_warn(ice_pf_to_dev(pf), "VF-%d failed to configure TX queue %d\n",
> + vf->vf_id, i);
> goto error_param;
> }
> }
> @@ -1651,17 +1640,13 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
>
> if (qpi->rxq.databuffer_size != 0 &&
> (qpi->rxq.databuffer_size > ((16 * 1024) - 128) ||
> - qpi->rxq.databuffer_size < 1024)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + qpi->rxq.databuffer_size < 1024))
> goto error_param;
> - }
> vsi->rx_buf_len = qpi->rxq.databuffer_size;
> vsi->rx_rings[i]->rx_buf_len = vsi->rx_buf_len;
> if (qpi->rxq.max_pkt_size > max_frame_size ||
> - qpi->rxq.max_pkt_size < 64) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + qpi->rxq.max_pkt_size < 64)
> goto error_param;
> - }
>
> vsi->max_frame = qpi->rxq.max_pkt_size;
> /* add space for the port VLAN since the VF driver is
> @@ -1672,16 +1657,30 @@ static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> vsi->max_frame += VLAN_HLEN;
>
> if (ice_vsi_cfg_single_rxq(vsi, q_idx)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + dev_warn(ice_pf_to_dev(pf), "VF-%d failed to configure RX queue %d\n",
> + vf->vf_id, i);
> goto error_param;
> }
> }
> }
>
> + /* send the response to the VF */
> + return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES,
> + VIRTCHNL_STATUS_SUCCESS, NULL, 0);
> error_param:
> + /* disable whatever we can */
> + for (; i >= 0; i--) {
With the rename, this could be then
for (i = new_variable_name; i =>0; i--) {
> + if (ice_vsi_ctrl_one_rx_ring(vsi, false, i, true))
> + dev_err(ice_pf_to_dev(pf), "VF-%d could not disable RX queue %d\n",
> + vf->vf_id, i);
> + if (ice_vf_vsi_dis_single_txq(vf, vsi, i))
> + dev_err(ice_pf_to_dev(pf), "VF-%d could not disable TX queue %d\n",
> + vf->vf_id, i);
> + }
> +
> /* send the response to the VF */
> - return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES, v_ret,
> - NULL, 0);
> + return ice_vc_send_msg_to_vf(vf, VIRTCHNL_OP_CONFIG_VSI_QUEUES,
> + VIRTCHNL_STATUS_ERR_PARAM, NULL, 0);
> }
>
> /**
Kind regards,
Paul
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail
2022-05-31 13:18 [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail Mateusz Palczewski
2022-05-31 14:52 ` Paul Menzel
@ 2022-05-31 20:40 ` Tony Nguyen
2022-06-01 12:27 ` Patynowski, PrzemyslawX
1 sibling, 1 reply; 4+ messages in thread
From: Tony Nguyen @ 2022-05-31 20:40 UTC (permalink / raw)
To: intel-wired-lan
On 5/31/2022 6:18 AM, Mateusz Palczewski wrote:
> From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
>
> Disable VF's RX/TX queues, when VIRTCHNL_OP_CONFIG_VSI_QUEUES fail.
> Not disabling them might lead to scenario, where PF driver leaves VF
> queues enabled, when VF's VSI failed queue config.
> In this scenario VF should not have RX/TX queues enabled. If PF failed
> to setup VF's queues, VF will reset due to TX timeouts in VF driver.
>
Patches for net need a Fixes tag.
> Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
> Suggested-by: Slawomir Laba <slawomirx.laba@intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_virtchnl.c | 53 +++++++++----------
> 1 file changed, 26 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> index 1d9b84c..4547bc1 100644
> --- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> @@ -1569,35 +1569,27 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
> */
> static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> {
> - enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;
This removal seems like a refactor and unrelated to the bug. Please send
this change via net-next.
Thanks,
Tony
> struct virtchnl_vsi_queue_config_info *qci =
> (struct virtchnl_vsi_queue_config_info *)msg;
> struct virtchnl_queue_pair_info *qpi;
> struct ice_pf *pf = vf->pf;
> struct ice_vsi *vsi;
> - int i, q_idx;
> + int i = -1, q_idx;
>
> - if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
> goto error_param;
> - }
>
> - if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id)) {
> - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> + if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id))
> goto error_param;
> - }
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail
2022-05-31 20:40 ` Tony Nguyen
@ 2022-06-01 12:27 ` Patynowski, PrzemyslawX
0 siblings, 0 replies; 4+ messages in thread
From: Patynowski, PrzemyslawX @ 2022-06-01 12:27 UTC (permalink / raw)
To: Nguyen, Anthony L, Palczewski, Mateusz, intel-wired-lan; +Cc: Laba, SlawomirX
> -----Original Message-----
> From: Nguyen, Anthony L <anthony.l.nguyen@intel.com>
> Sent: Tuesday, May 31, 2022 22:41
> To: Palczewski, Mateusz <mateusz.palczewski@intel.com>; intel-wired-lan@lists.osuosl.org
> Cc: Patynowski, PrzemyslawX <przemyslawx.patynowski@intel.com>; Laba, SlawomirX <slawomirx.laba@intel.com>
> Subject: Re: [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail
>
>
>
> On 5/31/2022 6:18 AM, Mateusz Palczewski wrote:
> > From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
> >
> > Disable VF's RX/TX queues, when VIRTCHNL_OP_CONFIG_VSI_QUEUES fail.
> > Not disabling them might lead to scenario, where PF driver leaves VF
> > queues enabled, when VF's VSI failed queue config.
> > In this scenario VF should not have RX/TX queues enabled. If PF failed
> > to setup VF's queues, VF will reset due to TX timeouts in VF driver.
> >
>
> Patches for net need a Fixes tag.
>
> > Signed-off-by: Przemyslaw Patynowski
> > <przemyslawx.patynowski@intel.com>
> > Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
> > Suggested-by: Slawomir Laba <slawomirx.laba@intel.com>
> > ---
> > drivers/net/ethernet/intel/ice/ice_virtchnl.c | 53 +++++++++----------
> > 1 file changed, 26 insertions(+), 27 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> > b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> > index 1d9b84c..4547bc1 100644
> > --- a/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> > +++ b/drivers/net/ethernet/intel/ice/ice_virtchnl.c
> > @@ -1569,35 +1569,27 @@ static int ice_vc_cfg_irq_map_msg(struct ice_vf *vf, u8 *msg)
> > */
> > static int ice_vc_cfg_qs_msg(struct ice_vf *vf, u8 *msg)
> > {
> > - enum virtchnl_status_code v_ret = VIRTCHNL_STATUS_SUCCESS;
We will upload this as fix then, because I believe it actually fixes same scenario as in the 2/2 patch,
but it's just harder to trigger this case.
>
> This removal seems like a refactor and unrelated to the bug. Please send this change via net-next.
>
> Thanks,
> Tony
>
> > struct virtchnl_vsi_queue_config_info *qci =
> > (struct virtchnl_vsi_queue_config_info *)msg;
> > struct virtchnl_queue_pair_info *qpi;
> > struct ice_pf *pf = vf->pf;
> > struct ice_vsi *vsi;
> > - int i, q_idx;
> > + int i = -1, q_idx;
> >
> > - if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states)) {
> > - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> > + if (!test_bit(ICE_VF_STATE_ACTIVE, vf->vf_states))
> > goto error_param;
> > - }
> >
> > - if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id)) {
> > - v_ret = VIRTCHNL_STATUS_ERR_PARAM;
> > + if (!ice_vc_isvalid_vsi_id(vf, qci->vsi_id))
> > goto error_param;
> > - }
>
>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-06-02 14:14 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-31 13:18 [Intel-wired-lan] [PATCH net v1 1/2] ice: Add error handling for queue config fail Mateusz Palczewski
2022-05-31 14:52 ` Paul Menzel
2022-05-31 20:40 ` Tony Nguyen
2022-06-01 12:27 ` Patynowski, PrzemyslawX
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.