mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH] GPIO: Add gpio_to_desc helper
@ 2013-05-10 14:04 Alexander Shiyan
  2013-05-10 14:12 ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Shiyan @ 2013-05-10 14:04 UTC (permalink / raw)
  To: barebox

Patch adds gpio_to_desc helper for validate GPIO.
A bit optimization is performed (about -250 bytes on ARM).

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
---
 drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
 1 file changed, 51 insertions(+), 46 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 6398268..d7aa094 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
 	return gpio_request(gpio, "gpio");
 }
 
+static struct gpio_info *gpio_to_desc(unsigned gpio)
+{
+	if (!gpio_is_valid(gpio))
+		return NULL;
+
+	if (!gpio_desc[gpio].chip)
+		return NULL;
+
+	return &gpio_desc[gpio];
+}
+
 int gpio_request(unsigned gpio, const char *label)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 	int ret;
 
-	if (!gpio_is_valid(gpio))
-		return -EINVAL;
-	if (!chip)
-		return -EINVAL;
+	if (!gi)
+		return -ENODEV;
+
 	if (gi->requested)
 		return -EBUSY;
-	if (chip->ops->request) {
-		ret = chip->ops->request(chip, gpio - chip->base);
+
+	if (gi->chip->ops->request) {
+		ret = gi->chip->ops->request(gi->chip, gpio - gi->chip->base);
 		if (ret)
 			return ret;
 	}
@@ -58,17 +68,16 @@ int gpio_request(unsigned gpio, const char *label)
 
 void gpio_free(unsigned gpio)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 
-	if (!gpio_is_valid(gpio))
-		return;
-	if (!chip)
+	if (!gi)
 		return;
+
 	if (!gi->requested)
 		return;
-	if (chip->ops->free)
-		chip->ops->free(chip, gpio - chip->base);
+
+	if (gi->chip->ops->free)
+		gi->chip->ops->free(gi->chip, gpio - gi->chip->base);
 
 	gi->requested = false;
 	free(gi->label);
@@ -76,75 +85,71 @@ void gpio_free(unsigned gpio)
 
 void gpio_set_value(unsigned gpio, int value)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 
-	if (!gpio_is_valid(gpio))
-		return;
-	if (!chip)
+	if (!gi)
 		return;
+
 	if (gpio_ensure_requested(gi, gpio))
 		return;
-	if (!chip->ops->set)
-		return;
-	chip->ops->set(chip, gpio - chip->base, value);
+
+	if (gi->chip->ops->set)
+		gi->chip->ops->set(gi->chip, gpio - gi->chip->base, value);
 }
 EXPORT_SYMBOL(gpio_set_value);
 
 int gpio_get_value(unsigned gpio)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 	int ret;
 
-	if (!gpio_is_valid(gpio))
-		return -EINVAL;
-	if (!chip)
+	if (!gi)
 		return -ENODEV;
+
 	ret = gpio_ensure_requested(gi, gpio);
 	if (ret)
 		return ret;
-	if (!chip->ops->get)
+
+	if (!gi->chip->ops->get)
 		return -ENOSYS;
-	return chip->ops->get(chip, gpio - chip->base);
+	return gi->chip->ops->get(gi->chip, gpio - gi->chip->base);
 }
 EXPORT_SYMBOL(gpio_get_value);
 
 int gpio_direction_output(unsigned gpio, int value)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 	int ret;
 
-	if (!gpio_is_valid(gpio))
-		return -EINVAL;
-	if (!chip)
+	if (!gi)
 		return -ENODEV;
+
 	ret = gpio_ensure_requested(gi, gpio);
 	if (ret)
 		return ret;
-	if (!chip->ops->direction_output)
+
+	if (!gi->chip->ops->direction_output)
 		return -ENOSYS;
-	return chip->ops->direction_output(chip, gpio - chip->base, value);
+	return gi->chip->ops->direction_output(gi->chip, gpio - gi->chip->base,
+					       value);
 }
 EXPORT_SYMBOL(gpio_direction_output);
 
 int gpio_direction_input(unsigned gpio)
 {
-	struct gpio_info *gi = &gpio_desc[gpio];
-	struct gpio_chip *chip = gi->chip;
+	struct gpio_info *gi = gpio_to_desc(gpio);
 	int ret;
 
-	if (!gpio_is_valid(gpio))
-		return -EINVAL;
-	if (!chip)
+	if (!gi)
 		return -ENODEV;
+
 	ret = gpio_ensure_requested(gi, gpio);
 	if (ret)
 		return ret;
-	if (!chip->ops->direction_input)
+
+	if (!gi->chip->ops->direction_input)
 		return -ENOSYS;
-	return chip->ops->direction_input(chip, gpio - chip->base);
+	return gi->chip->ops->direction_input(gi->chip, gpio - gi->chip->base);
 }
 EXPORT_SYMBOL(gpio_direction_input);
 
@@ -224,9 +229,9 @@ static int do_gpiolib(int argc, char *argv[])
 	printf("%*crequested  label\n", 11, ' ');
 
 	for (i = 0; i < ARCH_NR_GPIOS; i++) {
-		struct gpio_info *gi = &gpio_desc[i];
+		struct gpio_info *gi = gpio_to_desc(i);
 
-		if (!gi->chip)
+		if (!gi)
 			continue;
 
 		printf("gpio %*d: %*s  %s\n", 4,
-- 
1.8.1.5


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-10 14:04 [PATCH] GPIO: Add gpio_to_desc helper Alexander Shiyan
@ 2013-05-10 14:12 ` Jean-Christophe PLAGNIOL-VILLARD
  2013-05-11 10:54   ` Re[2]: " Alexander Shiyan
  0 siblings, 1 reply; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-05-10 14:12 UTC (permalink / raw)
  To: Alexander Shiyan; +Cc: barebox

On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> Patch adds gpio_to_desc helper for validate GPIO.
> A bit optimization is performed (about -250 bytes on ARM).
> 
> Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> ---
>  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
>  1 file changed, 51 insertions(+), 46 deletions(-)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 6398268..d7aa094 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
>  	return gpio_request(gpio, "gpio");
>  }
>  
> +static struct gpio_info *gpio_to_desc(unsigned gpio)
> +{
> +	if (!gpio_is_valid(gpio))
put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> +		return NULL;
> +
> +	if (!gpio_desc[gpio].chip)
> +		return NULL;
> +
> +	return &gpio_desc[gpio];
> +}
> +

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re[2]: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-10 14:12 ` Jean-Christophe PLAGNIOL-VILLARD
@ 2013-05-11 10:54   ` Alexander Shiyan
  2013-05-11 11:31     ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Shiyan @ 2013-05-11 10:54 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

> On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > Patch adds gpio_to_desc helper for validate GPIO.
> > A bit optimization is performed (about -250 bytes on ARM).
> > 
> > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > ---
> >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> >  1 file changed, 51 insertions(+), 46 deletions(-)
> > 
> > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > index 6398268..d7aa094 100644
> > --- a/drivers/gpio/gpiolib.c
> > +++ b/drivers/gpio/gpiolib.c
> > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> >  	return gpio_request(gpio, "gpio");
> >  }
> >  
> > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > +{
> > +	if (!gpio_is_valid(gpio))
> put the WARN too as we need to known a gpio_xxx is used on a non valid gpio

Original bb code does not contain any warnings here. So if it really
necessary it can be added later.

---
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-11 10:54   ` Re[2]: " Alexander Shiyan
@ 2013-05-11 11:31     ` Jean-Christophe PLAGNIOL-VILLARD
  2013-05-11 12:05       ` Re[2]: " Alexander Shiyan
  0 siblings, 1 reply; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-05-11 11:31 UTC (permalink / raw)
  To: Alexander Shiyan; +Cc: barebox

On 14:54 Sat 11 May     , Alexander Shiyan wrote:
> > On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > > Patch adds gpio_to_desc helper for validate GPIO.
> > > A bit optimization is performed (about -250 bytes on ARM).
> > > 
> > > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > > ---
> > >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> > >  1 file changed, 51 insertions(+), 46 deletions(-)
> > > 
> > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > index 6398268..d7aa094 100644
> > > --- a/drivers/gpio/gpiolib.c
> > > +++ b/drivers/gpio/gpiolib.c
> > > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> > >  	return gpio_request(gpio, "gpio");
> > >  }
> > >  
> > > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > > +{
> > > +	if (!gpio_is_valid(gpio))
> > put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> 
> Original bb code does not contain any warnings here. So if it really
> necessary it can be added later.

put it as we keep the code inline with the kernel a key point for sync
> 
> ---

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re[2]: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-11 11:31     ` Jean-Christophe PLAGNIOL-VILLARD
@ 2013-05-11 12:05       ` Alexander Shiyan
  2013-05-11 14:38         ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Shiyan @ 2013-05-11 12:05 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

> > > On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > > > Patch adds gpio_to_desc helper for validate GPIO.
> > > > A bit optimization is performed (about -250 bytes on ARM).
> > > > 
> > > > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > > > ---
> > > >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> > > >  1 file changed, 51 insertions(+), 46 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > > index 6398268..d7aa094 100644
> > > > --- a/drivers/gpio/gpiolib.c
> > > > +++ b/drivers/gpio/gpiolib.c
> > > > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> > > >  	return gpio_request(gpio, "gpio");
> > > >  }
> > > >  
> > > > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > > > +{
> > > > +	if (!gpio_is_valid(gpio))
> > > put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> > 
> > Original bb code does not contain any warnings here. So if it really
> > necessary it can be added later.
> 
> put it as we keep the code inline with the kernel a key point for sync

And this warning avoid my second patch to remove checks when we are
call gpio_free/set/get etc... with non existent (optional) gpios.
I strongly do not want to add it.

---
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-11 12:05       ` Re[2]: " Alexander Shiyan
@ 2013-05-11 14:38         ` Jean-Christophe PLAGNIOL-VILLARD
  2013-05-11 14:46           ` Re[2]: " Alexander Shiyan
  0 siblings, 1 reply; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-05-11 14:38 UTC (permalink / raw)
  To: Alexander Shiyan; +Cc: barebox

On 16:05 Sat 11 May     , Alexander Shiyan wrote:
> > > > On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > > > > Patch adds gpio_to_desc helper for validate GPIO.
> > > > > A bit optimization is performed (about -250 bytes on ARM).
> > > > > 
> > > > > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > > > > ---
> > > > >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> > > > >  1 file changed, 51 insertions(+), 46 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > > > index 6398268..d7aa094 100644
> > > > > --- a/drivers/gpio/gpiolib.c
> > > > > +++ b/drivers/gpio/gpiolib.c
> > > > > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> > > > >  	return gpio_request(gpio, "gpio");
> > > > >  }
> > > > >  
> > > > > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > > > > +{
> > > > > +	if (!gpio_is_valid(gpio))
> > > > put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> > > 
> > > Original bb code does not contain any warnings here. So if it really
> > > necessary it can be added later.
> > 
> > put it as we keep the code inline with the kernel a key point for sync
> 
> And this warning avoid my second patch to remove checks when we are
> call gpio_free/set/get etc... with non existent (optional) gpios.

yes as this patch break the compatibility with the kernel sorry NACK on it

> I strongly do not want to add it.

if you can gpio_xxx with an invalid gpio it's wrong
and as we keep the same API as in linux we need to WARN
as you DO need to check the gpio is valid before calling the gpio lib

we keep api in sync to simplify maintainance between barebox and the kernel

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re[2]: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-11 14:38         ` Jean-Christophe PLAGNIOL-VILLARD
@ 2013-05-11 14:46           ` Alexander Shiyan
  2013-05-11 14:50             ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 8+ messages in thread
From: Alexander Shiyan @ 2013-05-11 14:46 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

> > > > > On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > > > > > Patch adds gpio_to_desc helper for validate GPIO.
> > > > > > A bit optimization is performed (about -250 bytes on ARM).
> > > > > > 
> > > > > > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > > > > > ---
> > > > > >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> > > > > >  1 file changed, 51 insertions(+), 46 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > > > > index 6398268..d7aa094 100644
> > > > > > --- a/drivers/gpio/gpiolib.c
> > > > > > +++ b/drivers/gpio/gpiolib.c
> > > > > > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> > > > > >  	return gpio_request(gpio, "gpio");
> > > > > >  }
> > > > > >  
> > > > > > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > > > > > +{
> > > > > > +	if (!gpio_is_valid(gpio))
> > > > > put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> > > > 
> > > > Original bb code does not contain any warnings here. So if it really
> > > > necessary it can be added later.
> > > 
> > > put it as we keep the code inline with the kernel a key point for sync
> > 
> > And this warning avoid my second patch to remove checks when we are
> > call gpio_free/set/get etc... with non existent (optional) gpios.
> 
> yes as this patch break the compatibility with the kernel sorry NACK on it
> 
> > I strongly do not want to add it.
> 
> if you can gpio_xxx with an invalid gpio it's wrong
> and as we keep the same API as in linux we need to WARN
> as you DO need to check the gpio is valid before calling the gpio lib
> 
> we keep api in sync to simplify maintainance between barebox and the kernel

I prefer to add one warning to gpio_request only. It can be useful for debug
and not annoy if gpio is really is optional. OK?

---
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH] GPIO: Add gpio_to_desc helper
  2013-05-11 14:46           ` Re[2]: " Alexander Shiyan
@ 2013-05-11 14:50             ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 8+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-05-11 14:50 UTC (permalink / raw)
  To: Alexander Shiyan; +Cc: barebox

On 18:46 Sat 11 May     , Alexander Shiyan wrote:
> > > > > > On 18:04 Fri 10 May     , Alexander Shiyan wrote:
> > > > > > > Patch adds gpio_to_desc helper for validate GPIO.
> > > > > > > A bit optimization is performed (about -250 bytes on ARM).
> > > > > > > 
> > > > > > > Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> > > > > > > ---
> > > > > > >  drivers/gpio/gpiolib.c | 97 ++++++++++++++++++++++++++------------------------
> > > > > > >  1 file changed, 51 insertions(+), 46 deletions(-)
> > > > > > > 
> > > > > > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> > > > > > > index 6398268..d7aa094 100644
> > > > > > > --- a/drivers/gpio/gpiolib.c
> > > > > > > +++ b/drivers/gpio/gpiolib.c
> > > > > > > @@ -32,20 +32,30 @@ static int gpio_ensure_requested(struct gpio_info *gi, int gpio)
> > > > > > >  	return gpio_request(gpio, "gpio");
> > > > > > >  }
> > > > > > >  
> > > > > > > +static struct gpio_info *gpio_to_desc(unsigned gpio)
> > > > > > > +{
> > > > > > > +	if (!gpio_is_valid(gpio))
> > > > > > put the WARN too as we need to known a gpio_xxx is used on a non valid gpio
> > > > > 
> > > > > Original bb code does not contain any warnings here. So if it really
> > > > > necessary it can be added later.
> > > > 
> > > > put it as we keep the code inline with the kernel a key point for sync
> > > 
> > > And this warning avoid my second patch to remove checks when we are
> > > call gpio_free/set/get etc... with non existent (optional) gpios.
> > 
> > yes as this patch break the compatibility with the kernel sorry NACK on it
> > 
> > > I strongly do not want to add it.
> > 
> > if you can gpio_xxx with an invalid gpio it's wrong
> > and as we keep the same API as in linux we need to WARN
> > as you DO need to check the gpio is valid before calling the gpio lib
> > 
> > we keep api in sync to simplify maintainance between barebox and the kernel
> 
> I prefer to add one warning to gpio_request only. It can be useful for debug
> and not annoy if gpio is really is optional. OK?
please follow the linux implementation

all of them

if I call the gpio_set_value I expect it to set the value

If I'm nust and call with a invalid big warning fix your code

if the code we mostly do not check the return of gpio_set & co

as they work if you have the gpio requested and always return 0 (mostlty)

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

end of thread, other threads:[~2013-05-11 14:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-10 14:04 [PATCH] GPIO: Add gpio_to_desc helper Alexander Shiyan
2013-05-10 14:12 ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-11 10:54   ` Re[2]: " Alexander Shiyan
2013-05-11 11:31     ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-11 12:05       ` Re[2]: " Alexander Shiyan
2013-05-11 14:38         ` Jean-Christophe PLAGNIOL-VILLARD
2013-05-11 14:46           ` Re[2]: " Alexander Shiyan
2013-05-11 14:50             ` Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox