* [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
@ 2015-01-23 5:00 Daniel Vetter
2015-01-23 10:47 ` shuang.he
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Daniel Vetter @ 2015-01-23 5:00 UTC (permalink / raw)
To: Intel Graphics Development; +Cc: Daniel Vetter, Daniel Vetter, Dave Airlie
Self-explanatory code is better code.
Cc: Dave Airlie <airlied@redhat.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
drivers/gpu/drm/i915/i915_irq.c | 8 +++++---
drivers/gpu/drm/i915/intel_dp.c | 8 +++++---
drivers/gpu/drm/i915/intel_drv.h | 6 +++---
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index aa3180cf2921..c60e9b39b38e 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -863,7 +863,7 @@ static void i915_digport_work_func(struct work_struct *work)
container_of(work, struct drm_i915_private, dig_port_work);
u32 long_port_mask, short_port_mask;
struct intel_digital_port *intel_dig_port;
- int i, ret;
+ int i;
u32 old_bits = 0;
spin_lock_irq(&dev_priv->irq_lock);
@@ -887,9 +887,11 @@ static void i915_digport_work_func(struct work_struct *work)
valid = true;
if (valid) {
+ enum irqreturn ret;
+
ret = intel_dig_port->hpd_pulse(intel_dig_port, long_hpd);
- if (ret == true) {
- /* if we get true fallback to old school hpd */
+ if (ret == IRQ_NONE) {
+ /* fall back to old school hpd */
old_bits |= (1 << intel_dig_port->base.hpd_pin);
}
}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 88d81a8b0d35..b92baa3a95c5 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4420,7 +4420,7 @@ intel_dp_hot_plug(struct intel_encoder *intel_encoder)
return;
}
-bool
+enum irqreturn
intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
{
struct intel_dp *intel_dp = &intel_dig_port->dp;
@@ -4428,7 +4428,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
struct drm_device *dev = intel_dig_port->base.base.dev;
struct drm_i915_private *dev_priv = dev->dev_private;
enum intel_display_power_domain power_domain;
- bool ret = true;
+ enum irqreturn ret = IRQ_NONE;
if (intel_dig_port->base.type != INTEL_OUTPUT_EDP)
intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT;
@@ -4487,7 +4487,9 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
drm_modeset_unlock(&dev->mode_config.connection_mutex);
}
}
- ret = false;
+
+ ret = IRQ_HANDLED;
+
goto put_power;
mst_fail:
/* if we were in MST mode, and device is not there get out of MST mode */
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 588b618ab668..fdd71e5ad820 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -646,7 +646,7 @@ struct intel_digital_port {
u32 saved_port_bits;
struct intel_dp dp;
struct intel_hdmi hdmi;
- bool (*hpd_pulse)(struct intel_digital_port *, bool);
+ enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
};
struct intel_dp_mst_encoder {
@@ -998,8 +998,8 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
bool intel_dp_compute_config(struct intel_encoder *encoder,
struct intel_crtc_config *pipe_config);
bool intel_dp_is_edp(struct drm_device *dev, enum port port);
-bool intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
- bool long_hpd);
+enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
+ bool long_hpd);
void intel_edp_backlight_on(struct intel_dp *intel_dp);
void intel_edp_backlight_off(struct intel_dp *intel_dp);
void intel_edp_panel_vdd_on(struct intel_dp *intel_dp);
--
2.1.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
2015-01-23 5:00 [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse Daniel Vetter
@ 2015-01-23 10:47 ` shuang.he
2015-01-23 13:44 ` Jani Nikula
2015-02-06 18:49 ` Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: shuang.he @ 2015-01-23 10:47 UTC (permalink / raw)
To: shuang.he, ethan.gao, intel-gfx, daniel.vetter
Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 5631
-------------------------------------Summary-------------------------------------
Platform Delta drm-intel-nightly Series Applied
PNV -1 353/353 352/353
ILK 353/353 353/353
SNB +1 399/422 400/422
IVB 486/487 486/487
BYT 296/296 296/296
HSW +1-1 507/508 507/508
BDW +1 399/402 400/402
-------------------------------------Detailed-------------------------------------
Platform Test drm-intel-nightly Series Applied
*PNV igt_gen3_render_linear_blits PASS(2, M7M23) CRASH(1, M23)
SNB igt_kms_flip_nonexisting-fb NSPT(1, M35)PASS(3, M35) PASS(1, M35)
*HSW igt_gem_pwrite_pread_snooped-pwrite-blt-cpu_mmap-performance PASS(3, M19M20M40) DMESG_WARN(1, M40)
HSW igt_gem_storedw_loop_blt DMESG_WARN(2, M19M20)PASS(2, M20M40) PASS(1, M40)
BDW igt_gem_pwrite_pread_display-pwrite-blt-gtt_mmap-performance DMESG_WARN(2, M28)PASS(2, M30M28) PASS(1, M28)
Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
2015-01-23 5:00 [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse Daniel Vetter
2015-01-23 10:47 ` shuang.he
@ 2015-01-23 13:44 ` Jani Nikula
2015-02-06 18:49 ` Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2015-01-23 13:44 UTC (permalink / raw)
To: Intel Graphics Development; +Cc: Daniel Vetter, Dave Airlie, Daniel Vetter
On Fri, 23 Jan 2015, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> Self-explanatory code is better code.
>
> Cc: Dave Airlie <airlied@redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 8 +++++---
> drivers/gpu/drm/i915/intel_dp.c | 8 +++++---
> drivers/gpu/drm/i915/intel_drv.h | 6 +++---
> 3 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index aa3180cf2921..c60e9b39b38e 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -863,7 +863,7 @@ static void i915_digport_work_func(struct work_struct *work)
> container_of(work, struct drm_i915_private, dig_port_work);
> u32 long_port_mask, short_port_mask;
> struct intel_digital_port *intel_dig_port;
> - int i, ret;
> + int i;
> u32 old_bits = 0;
>
> spin_lock_irq(&dev_priv->irq_lock);
> @@ -887,9 +887,11 @@ static void i915_digport_work_func(struct work_struct *work)
> valid = true;
>
> if (valid) {
> + enum irqreturn ret;
> +
> ret = intel_dig_port->hpd_pulse(intel_dig_port, long_hpd);
> - if (ret == true) {
> - /* if we get true fallback to old school hpd */
> + if (ret == IRQ_NONE) {
> + /* fall back to old school hpd */
> old_bits |= (1 << intel_dig_port->base.hpd_pin);
> }
> }
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 88d81a8b0d35..b92baa3a95c5 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4420,7 +4420,7 @@ intel_dp_hot_plug(struct intel_encoder *intel_encoder)
> return;
> }
>
> -bool
> +enum irqreturn
> intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> {
> struct intel_dp *intel_dp = &intel_dig_port->dp;
> @@ -4428,7 +4428,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> struct drm_device *dev = intel_dig_port->base.base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> enum intel_display_power_domain power_domain;
> - bool ret = true;
> + enum irqreturn ret = IRQ_NONE;
>
> if (intel_dig_port->base.type != INTEL_OUTPUT_EDP)
> intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT;
> @@ -4487,7 +4487,9 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> drm_modeset_unlock(&dev->mode_config.connection_mutex);
> }
> }
> - ret = false;
> +
> + ret = IRQ_HANDLED;
> +
> goto put_power;
> mst_fail:
> /* if we were in MST mode, and device is not there get out of MST mode */
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 588b618ab668..fdd71e5ad820 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -646,7 +646,7 @@ struct intel_digital_port {
> u32 saved_port_bits;
> struct intel_dp dp;
> struct intel_hdmi hdmi;
> - bool (*hpd_pulse)(struct intel_digital_port *, bool);
> + enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
> };
>
> struct intel_dp_mst_encoder {
> @@ -998,8 +998,8 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
> bool intel_dp_compute_config(struct intel_encoder *encoder,
> struct intel_crtc_config *pipe_config);
> bool intel_dp_is_edp(struct drm_device *dev, enum port port);
> -bool intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
> - bool long_hpd);
> +enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
> + bool long_hpd);
> void intel_edp_backlight_on(struct intel_dp *intel_dp);
> void intel_edp_backlight_off(struct intel_dp *intel_dp);
> void intel_edp_panel_vdd_on(struct intel_dp *intel_dp);
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
2015-01-23 5:00 [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse Daniel Vetter
2015-01-23 10:47 ` shuang.he
2015-01-23 13:44 ` Jani Nikula
@ 2015-02-06 18:49 ` Ville Syrjälä
2015-02-09 16:48 ` Daniel Vetter
2 siblings, 1 reply; 6+ messages in thread
From: Ville Syrjälä @ 2015-02-06 18:49 UTC (permalink / raw)
To: Daniel Vetter; +Cc: Daniel Vetter, Intel Graphics Development, Dave Airlie
On Fri, Jan 23, 2015 at 06:00:31AM +0100, Daniel Vetter wrote:
> Self-explanatory code is better code.
This causes the VDD off -> HPD -> VDD on -> VDD off -> HPD ... cycle to
make another appearance on my BSW. Looks like you forgot to convert one return
in intel_dp_hpd_pulse():
@@ -4499,7 +4499,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
*/
DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n",
port_name(intel_dig_port->port));
- return false;
+ return IRQ_HANDLED;
}
DRM_DEBUG_KMS("got hpd irq on port %c - %s\n",
>
> Cc: Dave Airlie <airlied@redhat.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 8 +++++---
> drivers/gpu/drm/i915/intel_dp.c | 8 +++++---
> drivers/gpu/drm/i915/intel_drv.h | 6 +++---
> 3 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index aa3180cf2921..c60e9b39b38e 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -863,7 +863,7 @@ static void i915_digport_work_func(struct work_struct *work)
> container_of(work, struct drm_i915_private, dig_port_work);
> u32 long_port_mask, short_port_mask;
> struct intel_digital_port *intel_dig_port;
> - int i, ret;
> + int i;
> u32 old_bits = 0;
>
> spin_lock_irq(&dev_priv->irq_lock);
> @@ -887,9 +887,11 @@ static void i915_digport_work_func(struct work_struct *work)
> valid = true;
>
> if (valid) {
> + enum irqreturn ret;
> +
> ret = intel_dig_port->hpd_pulse(intel_dig_port, long_hpd);
> - if (ret == true) {
> - /* if we get true fallback to old school hpd */
> + if (ret == IRQ_NONE) {
> + /* fall back to old school hpd */
> old_bits |= (1 << intel_dig_port->base.hpd_pin);
> }
> }
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 88d81a8b0d35..b92baa3a95c5 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -4420,7 +4420,7 @@ intel_dp_hot_plug(struct intel_encoder *intel_encoder)
> return;
> }
>
> -bool
> +enum irqreturn
> intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> {
> struct intel_dp *intel_dp = &intel_dig_port->dp;
> @@ -4428,7 +4428,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> struct drm_device *dev = intel_dig_port->base.base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> enum intel_display_power_domain power_domain;
> - bool ret = true;
> + enum irqreturn ret = IRQ_NONE;
>
> if (intel_dig_port->base.type != INTEL_OUTPUT_EDP)
> intel_dig_port->base.type = INTEL_OUTPUT_DISPLAYPORT;
> @@ -4487,7 +4487,9 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> drm_modeset_unlock(&dev->mode_config.connection_mutex);
> }
> }
> - ret = false;
> +
> + ret = IRQ_HANDLED;
> +
> goto put_power;
> mst_fail:
> /* if we were in MST mode, and device is not there get out of MST mode */
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 588b618ab668..fdd71e5ad820 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -646,7 +646,7 @@ struct intel_digital_port {
> u32 saved_port_bits;
> struct intel_dp dp;
> struct intel_hdmi hdmi;
> - bool (*hpd_pulse)(struct intel_digital_port *, bool);
> + enum irqreturn (*hpd_pulse)(struct intel_digital_port *, bool);
> };
>
> struct intel_dp_mst_encoder {
> @@ -998,8 +998,8 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
> bool intel_dp_compute_config(struct intel_encoder *encoder,
> struct intel_crtc_config *pipe_config);
> bool intel_dp_is_edp(struct drm_device *dev, enum port port);
> -bool intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
> - bool long_hpd);
> +enum irqreturn intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port,
> + bool long_hpd);
> void intel_edp_backlight_on(struct intel_dp *intel_dp);
> void intel_edp_backlight_off(struct intel_dp *intel_dp);
> void intel_edp_panel_vdd_on(struct intel_dp *intel_dp);
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
2015-02-06 18:49 ` Ville Syrjälä
@ 2015-02-09 16:48 ` Daniel Vetter
2015-02-09 17:06 ` Jani Nikula
0 siblings, 1 reply; 6+ messages in thread
From: Daniel Vetter @ 2015-02-09 16:48 UTC (permalink / raw)
To: Ville Syrjälä
Cc: Daniel Vetter, Intel Graphics Development, Dave Airlie, Daniel Vetter
On Fri, Feb 06, 2015 at 08:49:12PM +0200, Ville Syrjälä wrote:
> On Fri, Jan 23, 2015 at 06:00:31AM +0100, Daniel Vetter wrote:
> > Self-explanatory code is better code.
>
> This causes the VDD off -> HPD -> VDD on -> VDD off -> HPD ... cycle to
> make another appearance on my BSW. Looks like you forgot to convert one return
> in intel_dp_hpd_pulse():
>
> @@ -4499,7 +4499,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
> */
> DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n",
> port_name(intel_dig_port->port));
> - return false;
> + return IRQ_HANDLED;
> }
>
> DRM_DEBUG_KMS("got hpd irq on port %c - %s\n",
Oh dear that's rather bad. Can you please supply a full patch so that Jani
can take it up for dinf? Free Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
fwiw (which isn't much).
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse
2015-02-09 16:48 ` Daniel Vetter
@ 2015-02-09 17:06 ` Jani Nikula
0 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2015-02-09 17:06 UTC (permalink / raw)
To: Daniel Vetter, Ville Syrjälä
Cc: Daniel Vetter, Intel Graphics Development, Dave Airlie, Daniel Vetter
On Mon, 09 Feb 2015, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, Feb 06, 2015 at 08:49:12PM +0200, Ville Syrjälä wrote:
>> On Fri, Jan 23, 2015 at 06:00:31AM +0100, Daniel Vetter wrote:
>> > Self-explanatory code is better code.
>>
>> This causes the VDD off -> HPD -> VDD on -> VDD off -> HPD ... cycle to
>> make another appearance on my BSW. Looks like you forgot to convert one return
>> in intel_dp_hpd_pulse():
>>
>> @@ -4499,7 +4499,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
>> */
>> DRM_DEBUG_KMS("ignoring long hpd on eDP port %c\n",
>> port_name(intel_dig_port->port));
>> - return false;
>> + return IRQ_HANDLED;
>> }
>>
>> DRM_DEBUG_KMS("got hpd irq on port %c - %s\n",
>
> Oh dear that's rather bad. Can you please supply a full patch so that Jani
> can take it up for dinf? Free Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> fwiw (which isn't much).
*facepalm* from the "reviewer" here too.
Ville, please change that early return to a "goto out" maybe?
BR,
Jani.
> -Daniel
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-02-09 17:07 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-23 5:00 [PATCH] drm/i915: Use symbolic irqreturn for ->hpd_pulse Daniel Vetter
2015-01-23 10:47 ` shuang.he
2015-01-23 13:44 ` Jani Nikula
2015-02-06 18:49 ` Ville Syrjälä
2015-02-09 16:48 ` Daniel Vetter
2015-02-09 17:06 ` Jani Nikula
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.