I can not remember why the original code did return 0 rather than an error, but
-ENOMEM seems indeed way more fitting.
Reviewed-by: Pierre Moreau
On 2021-04-14 — 08:58, Dan Carpenter wrote:
> If nouveau_get_backlight_name() fails then this should return -ENOMEM
> but currently it r
Hello Zhen,
There was a similar patch sent in last month, though which does not seem to
have been merged yet; see
https://lists.freedesktop.org/archives/nouveau/2021-April/038451.html.
Whether `ret` should be `-ENOSPC` or `-ENOMEM` is hard to say as
`nouveau_get_backlight_name()` could fail due t
Reviewed-by: Pierre Moreau
On 2021-05-11 — 16:28, Zhen Lei wrote:
> Fix to return a negative error code from the error handling case instead
> of 0, as done elsewhere in this function.
>
> Fixes: db1a0ae21461 ("drm/nouveau/bl: Assign different names to interfaces")
> Su
Why remove the const modifier on `nb`?
On 2021-05-11 — 16:28, Zhen Lei wrote:
> When the 'nb' value allocated from 'bl_ida' is greater than or equal to
> 100, it will not be released. In fact, we can simplify operations by
> limiting the range of idas that can be applied for.
>
> By the way, dele
Friendly ping, Ben.
I see that in `nouveau_fence_done()` there is a check on `chan` not being NULL
prior to passing it to `nouveau_fence_update()`. Would something similar be
needed here?
Pierre
On 2018-11-15 — 12:14, YueHaibing wrote:
> Fixes gcc '-Wunused-but-set-variable' warning:
>
> drivers
With the comment further below addressed, this patch is
Reviewed-by: Pierre Moreau
On 2019-12-16 — 11:48, zhengbin wrote:
> Fixes coccicheck warning:
>
> drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c:583:2-3: Unneeded semicolon
> drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h:307:2
Reviewed-by: Pierre Moreau
On 2019-12-18 — 09:28, zhengbin wrote:
> Fixes coccicheck warning:
>
> drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c:583:2-3: Unneeded semicolon
> drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h:307:2-3: Unneeded semicolon
>
> Reported-by: Hulk Robo
From: Pierre Moreau
Currently, every backlight interface created by Nouveau uses the same name,
nv_backlight. This leads to a sysfs warning as it tries to create an already
existing folder. This patch adds a incremented number to the name, but keeps
the initial name as nv_backlight, to avoid
From: Pierre Moreau
The Apple GMUX is the one managing the backlight, so there is no need for
Nouveau to register its own backlight interface.
v2: Do not split information message on two lines as it prevents from grepping
it, as pointed out by Lukas Wunner
Signed-off-by: Pierre Moreau
On 11:17 am - Nov 14 2016, Lukas Wunner wrote:
> On Sun, Nov 13, 2016 at 08:57:06PM +0100, Pierre Moreau wrote:
> > From: Pierre Moreau
> >
> > Currently, every backlight interface created by Nouveau uses the same name,
> > nv_backlight. This leads to a sysfs warni
The Apple GMUX is the one managing the backlight, so there is no need for
Nouveau to register its own backlight interface.
v2: Do not split information message on two lines as it prevents from grepping
it, as pointed out by Hans de Goede
Signed-off-by: Pierre Moreau
---
drm/nouveau
On 02:32 PM - May 01 2016, Pierre Moreau wrote:
> The Apple GMUX is the one managing the backlight, so there is no need for
> Nouveau to register its own backlight interface.
>
> v2: Do not split information message on two lines as it prevents from grepping
> it, as pointed
Hello Marcos,
I sent a serie a year ago to fix some of the ACPI handling in Nouveau and add
runtime pm support for laptops with an Apple GMUX (see [0], and especially [1]
and [2]). I was told that a more generic work for the runtime pm was in the
work, so I let the whole serie slip away. I was thi
This is especially true when variables or functions are just called dsm without
precising the v1.
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 64 +++---
drm/nouveau/nouveau_acpi.h | 4 +--
drm/nouveau/nouveau_drm.c | 4 +--
drm
This makes it clearer when reading the function name, as well as following the
names of the related ACPI function.
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 25 ++---
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/drm/nouveau
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 8 +---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 1f18018..36f4a40 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 10 --
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 36f4a40..073f7d7 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
ned-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 15 ---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 073f7d7..7aeaf7d 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
@@ -88
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 8
drm/nouveau/nouveau_vga.c | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 7aeaf7d..104d291 100644
--- a/drm/nouveau/nouveau_acpi.c
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 53 --
drm/nouveau/nouveau_acpi.h | 2 ++
drm/nouveau/nouveau_drm.c | 6 --
drm/nouveau/nouveau_vga.c | 10 +
4 files changed, 63 insertions(+), 8 deletions(-)
diff --git a
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 14 +++---
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 3d6a1ea..5d63621 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
> On 26 May 2015, at 00:39, Ilia Mirkin wrote:
>
>> On Mon, May 25, 2015 at 6:22 PM, Pierre Moreau
>> wrote:
>> Most _DSM will return an integer value of 0x8002 when given an unknown
>> UUID, revision ID or function ID. Checking locally allows us to d
> On 26 May 2015, at 07:17, Ilia Mirkin wrote:
>
> On Tue, May 26, 2015 at 1:10 AM, Pierre Moreau
> wrote:
>>> On 26 May 2015, at 00:39, Ilia Mirkin wrote:
>>>
>>>> On Mon, May 25, 2015 at 6:22 PM, Pierre Moreau
>>>> wrote:
>>
> On 26 May 2015, at 10:02, Samuel Pitoiset
> wrote:
>
>
>
> On 05/26/2015 12:22 AM, Pierre Moreau wrote:
>> Signed-off-by: Pierre Moreau
>> ---
>> drm/nouveau/nouveau_acpi.c | 10 --
>> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> On 26 May 2015, at 10:13, Samuel Pitoiset
> wrote:
>
>
>
> On 05/26/2015 12:22 AM, Pierre Moreau wrote:
>> Signed-off-by: Pierre Moreau
>> ---
>> drm/nouveau/nouveau_acpi.c | 53
>> --
>> dr
acpi_method_name);
nouveau_dsm_priv.gmux_detected = true;
ret = true;
}
Any opinions on this?
Pierre
- Mail original -
> Signed-off-by: Pierre Moreau
> ---
> drm/nouveau/nouveau_acpi.c | 14 +++---
> 1 file changed, 7 insertions(+), 7 del
This is especially true when variables or functions are just called dsm without
specifying the v1.
Changes since v1:
* Fix typo in commit explanation
* Change has_dsm to has_mux in nouveau_dsm_detect
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 72
This makes it clearer when reading the function name, as well as following the
names of related ACPI functions.
Changes since v1:
* Fix typo in commit message
* Slightly reformulate the commit message to be clearer
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 25
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 8 +---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index e18fbeb..3f01067 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
Changes since v1:
* Fix check for result being not NULL in nouveau_evaluate_optimus_dsm
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 10 --
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 01dbf1d..b837ab1 100644
--- a/drm/nouveau/nouveau_acpi.c
+++ b/drm/nouveau/nouveau_acpi.c
@@ -92,7
s since v1:
* Replace ACPI errors with standard kernel ones
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 15 ---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index b837ab1..44a7328 100644
--- a/d
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 8
drm/nouveau/nouveau_vga.c | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drm/nouveau/nouveau_acpi.c b/drm/nouveau/nouveau_acpi.c
index 44a7328..edc4b94 100644
--- a/drm/nouveau/nouveau_acpi.c
: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 57 --
drm/nouveau/nouveau_acpi.h | 4
drm/nouveau/nouveau_drm.c | 12 +-
drm/nouveau/nouveau_vga.c | 10
4 files changed, 70 insertions(+), 13 deletions(-)
diff --git a/drm/nouveau
Changes since v1:
* Re-write the whole patch to detect available _DSMs when we enable them rather
than on each loop run
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_acpi.c | 27 ++-
1 file changed, 6 insertions(+), 21 deletions(-)
diff --git a/drm/nouveau
I wasn't sure how to insert this one into the flow, if I should make it a patch
4.5 or not. I went with patch 5, so all the following patches are incremented
by 1 compared to the v1, sorry about that.
What should be the way to go?
Pierre
> On 28 May 2015, at 08:40, Pierre Morea
Hi Dave,
- Mail original -
> Changes since v1:
[...]
> diff --git a/drm/nouveau/nouveau_vga.c b/drm/nouveau/nouveau_vga.c
> index 9a6328f..7b13804 100644
> --- a/drm/nouveau/nouveau_vga.c
> +++ b/drm/nouveau/nouveau_vga.c
> @@ -36,7 +36,7 @@ nouveau_switcheroo_set_state(struct pci_dev *pd
Hi Lukas
- Mail original -
> Hi Pierre,
>
> On Thu, May 28, 2015 at 10:52:56AM +0200, Pierre Moreau wrote:
> > How is it supposed to work, by simply echo'ing ON or OFF to
> > vga_switcheroo/switch? Then I probably forgot some stuff as
> > it doesn't
The blob does not seem to write at that place for my NVAC, though it does for
my NV96, agreeing with what is done in the if/else structure below. I guess
someone forgot to remove the line when the if/else was put in place.
Signed-off-by: Pierre Moreau
---
drivers/gpu/drm/nouveau/core/engine
The specified stride was not correct, resulting in erases overlapping and part
of the zcull regions being not erased at all.
Signed-off-by: Pierre Moreau
---
drivers/gpu/drm/nouveau/core/engine/graph/nv50.c | 8
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu
create similarly named interfaces when reaching the maximum
amount of unique names, but fail instead, as pointed out by Lukas Wunner
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 74 ++---
drm/nouveau/nouveau_display.h | 10 ++
drm
message
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 6 ++
1 file changed, 6 insertions(+)
diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau/nouveau_backlight.c
index a34cd35..8b1ca4a 100644
--- a/drm/nouveau/nouveau_backlight.c
+++ b/drm/nouveau
Hello Daniel,
Just some typo comments below.
On 09:49 AM - Dec 08 2015, Daniel Vetter wrote:
> Every time I type or review docs this seems a bit different. Try to
> document the common style so we can try to unify at least new docs.
>
> Signed-off-by: Daniel Vetter
> ---
> Documentation/DocBoo
or acks unfortunately.
> Any takers?
>
> Merging this would allow fdo #61115 to be closed
> (currently assigned to intel-gfx).
>
> FWIW this series has in the meantime been tested by more folks:
>
> Tested-by: Pierre Moreau
>[MBP 5,3 2009 nvidia MCP79 + G96pre-
This fix a GPU lockup on 9400M (NVAC) when using acceleration, see #27501.
Signed-off-by: Pierre Moreau
---
drivers/gpu/drm/nouveau/core/engine/disp/nv50.c | 9 +
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c
b/drivers/gpu/drm/nouveau
noaccel option now defaults to null which has no effect, it can still equal 1,
which disables acceleration for all cards, or be a pci address and disable
acceleration for that card only
Signed-off-by: Pierre Moreau
---
drivers/gpu/drm/nouveau/nouveau_drm.c | 16 +++-
1 file changed
sible values to 32. Apparently bits 7:0 of 0x8841c
> stores some
> number of outstanding requests, so cap it to 32 if extended tag is
> unsupported.
>
> Fixes: fdo#86537
>
> v2: Restrict changes to chipsets >= 0x84
> v3:
> * Add nvkm_pci_mask to pci.h
> * Mask
userspace; the
second interface will be named nv_backlight1, and so on.
Fixes: fdo#86539
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 35 +--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau
The Apple GMUX is the one managing the backlight, so there is no need for
Nouveau to register its own backlight interface.
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 7 +++
1 file changed, 7 insertions(+)
diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau
On 11:06 AM - Apr 15 2016, Ilia Mirkin wrote:
> On Fri, Apr 15, 2016 at 10:57 AM, Pierre Moreau
> wrote:
> > Currently, every backlight interface created by Nouveau uses the same name,
> > nv_backlight. This leads to a sysfs warning as it tries to create an already
> &g
On 02:40 PM - Apr 15 2016, Nick Tenney wrote:
> On Fri, Apr 15, 2016 at 11:25 AM, Ilia Mirkin wrote:
>
> > On Fri, Apr 15, 2016 at 11:22 AM, Pierre Moreau
> > wrote:
> > > On 11:06 AM - Apr 15 2016, Ilia Mirkin wrote:
> > >> On Fri, Apr 15, 2016 a
[â¦]
>
> > + const int nb = atomic_inc_return(&bl_interfaces_nb) - 1;
>
> This kinda sucks if you reload nouveau a bunch. How about using an
> "ida". Have a look in drivers/gpu/drm/drm_crtc.c for how I use that
> one.
I had a quick look at drm_crtc.c. This seems to be exactly what I need
`nouveau_get_backlight_name()` to avoid forward declaration, as
suggested by Ilia Mirkin;
* Fix reference to bug report formatting, as reported by Nick Tenney.
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 64 ++---
drm/nouveau/nouveau_display.h | 10
The Apple GMUX is the one managing the backlight, so there is no need for
Nouveau to register its own backlight interface.
Signed-off-by: Pierre Moreau
---
drm/nouveau/nouveau_backlight.c | 7 +++
1 file changed, 7 insertions(+)
diff --git a/drm/nouveau/nouveau_backlight.c b/drm/nouveau
You are right, Tegra should probably be part of the description, even if we do
not support pre-K1 Tegras.
Acked-by: Pierre Moreau
On 2017-08-11 — 10:56, Rhys Kidd wrote:
> nouveau supports the Tegra K1 and higher after the SoC-based GPUs converged
> with the main GeForce GPU fa
On 2018-02-14 — 09:36, Ilia Mirkin wrote:
> On Wed, Feb 14, 2018 at 9:35 AM, Ilia Mirkin wrote:
> > On Wed, Feb 14, 2018 at 9:29 AM, Meelis Roos wrote:
> >>> This is 4.16-rc1+todays git on a lowly P4 with NV5, worked fine in 4.15:
> >>
> >> NV5 in another PC (secondary card in x86-64) made the sy
Reviewed-by: Pierre Moreau
On 2017-06-21 — 15:19, Hans de Goede wrote:
> Hi,
>
> On 26-05-17 09:35, Hans De Goede wrote:
> > The local #define of ACPI_VIDEO_NOTIFY_PROBE was only added temporarily
> > to avoid a dependency between the acpi and nouveau trees while merging.
Reviewed-by: Pierre Moreau
On 2017-07-17 — 11:17, Dan Carpenter wrote:
> kstrtol() and friends can return -EINVAL or -ERANGE. We have to test
> for both, otherwise the value is possibly uninitialized. Also in some
> of these files we accidentally return "count" on error inst
Hey Ard,
It seems that Ben already committed a similar patch to his tree (see [0]). I do
not know whether he is planning to have it part of a pull request of fixes for
4.15.
Best regards,
Pierre
[0]:
https://github.com/skeggsb/nouveau/commit/9068f1df2394f0e4ab2b2a28cac06b462fe0a0aa
On 2017-12-
Ping
On 2017-07-22 — 13:54, Pierre Moreau wrote:
> Reviewed-by: Pierre Moreau
>
> On 2017-06-21 — 15:19, Hans de Goede wrote:
> > Hi,
> >
> > On 26-05-17 09:35, Hans De Goede wrote:
> > > The local #define of ACPI_VIDEO_NOTIFY_PROBE was only added tem
Ping: this can still be an issue today as kstrtol() & co haven’t changed their
possible return value since the patch was written.
On 2017-07-22 — 14:13, Pierre Moreau wrote:
> Reviewed-by: Pierre Moreau
>
> On 2017-07-17 — 11:17, Dan Carpenter wrote:
> > kstrtol() and friends
, you could ask them; that work would benefit to Nouveau, and
possibly other drivers as well. However that task, I would guess, is a quite
difficult one.
Regards,
Pierre Moreau
On 08:22 AM - Feb 24 2016, Abheek Ghosh wrote:
> Thanks for reply. I would like to work on *Compilers*. I have just so
Signed-off-by: Pierre Moreau
---
drm/core/include/subdev/fb/regsnv04.h | 1 +
nvkm/include/subdev/fb/regsnv04.h | 21 +
nvkm/subdev/devinit/fbmem.h | 18 ++
nvkm/subdev/fb/ramnv04.c | 17 +
4 files changed, 25
It can help to remove any ambiguity about which options were passed to Nouveau,
especially in case the user had some options set in /etc/modprobe.d/*.conf that
he forgot about, as they won't appear in a dmesg.
Signed-off-by: Pierre Moreau
---
drm/nouveau_chan.c | 2 +-
drm/nouveau_c
Signed-off-by: Pierre Moreau
---
drm/nouveau_drm.c | 16 +++-
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/drm/nouveau_drm.c b/drm/nouveau_drm.c
index afb93bb..ffa1e4f 100644
--- a/drm/nouveau_drm.c
+++ b/drm/nouveau_drm.c
@@ -61,9 +61,10 @@ MODULE_PARM_DESC(debug
mation provided by Robert Morell
from NVidia:
- Allocate a dma page for use by the pollers;
- Re-enable pollers at bits 16 and 0;
- Set pollers address to a proper value.
Signed-off-by: Pierre Moreau
---
drm/core/subdev/fb/nvaa.h | 1 +
nvkm/subdev/fb/nv50.h | 4 +++
nvkm/subdev/fb/
Hi Ben,
My bad, I will correct that. I'll have a better look at the three patches
you attached tomorrow.
Cheers,
Pierre
On 01:42 PM - Dec 11 2014, Ben Skeggs wrote:
> On Wed, Dec 10, 2014 at 5:53 PM, Pierre Moreau
> wrote:
> > (This is a v3 of patch "drm/nouveau/f
The repo is a fork of Linus' tree, with the patches on top of it. So you just
need to build that modified version of the kernel and boot it. :-)
Pierre
> On 05 Oct 2015, at 16:15, Evan Foss wrote:
>
>> On Mon, Oct 5, 2015 at 9:23 AM, Lukas Wunner wrote:
>> Hi,
>>
>> I've also pushed this ser
some
number of outstanding requests, so cap it to 32 if extended tag is unsupported.
Fixes: fdo#86537
Signed-off-by: Pierre Moreau
---
drm/nouveau/nvkm/subdev/pci/base.c | 25 +
1 file changed, 25 insertions(+)
diff --git a/drm/nouveau/nvkm/subdev/pci/base.c
b/drm/nouveau
some
number of outstanding requests, so cap it to 32 if extended tag is unsupported.
Fixes: fdo#86537
Signed-off-by: Pierre Moreau
---
drm/nouveau/nvkm/subdev/pci/base.c | 25 +
1 file changed, 25 insertions(+)
diff --git a/drm/nouveau/nvkm/subdev/pci/base.c
b/drm/nouveau
some
number of outstanding requests, so cap it to 32 if extended tag is unsupported.
Fixes: fdo#86537
v2: Restrict changes to chipsets >= 0x84
Signed-off-by: Pierre Moreau
---
drm/nouveau/nvkm/subdev/pci/base.c | 25 +
1 file changed, 25 insertions(+)
diff --git a/
some
number of outstanding requests, so cap it to 32 if extended tag is unsupported.
Fixes: fdo#86537
v2: Restrict changes to chipsets >= 0x84
v3:
* Add nvkm_pci_mask to pci.h
* Mask bit 8 before setting it
Signed-off-by: Pierre Moreau
---
drm/nouveau/include/nvkm/subdev/pci.h | 1 +
/100c24 as suggested by Roy Spliet;
- Replace write to 100c1c of arbitrary value by the address of a scratch page
as proposed by Ilia Mirkin;
- Remove enabling of bits 16 and 0 as they don't yield in any changes.
Signed-off-by: Pierre Moreau
---
drivers/gpu/drm/nouveau/core/subdev
73 matches
Mail list logo