== Series Details ==
Series: Revert "drm/i915: start adding dp mst audio" (rev2)
URL : https://patchwork.freedesktop.org/series/6685/
State : success
== Summary ==
Series 6685v2 Revert "drm/i915: start adding dp mst audio"
https://patchwork.freedesktop.org/api/1.0/series/6685/revisions/2/mbox/
On 28/09/2016 18:09, Chris Wilson wrote:
On Wed, Sep 28, 2016 at 05:48:23PM +0100, Tvrtko Ursulin wrote:
From: Tvrtko Ursulin
Several things we can clean up in this function:
* Request and file passed in cannot be NULL. There is
a single caller which makes it impossible so change
t
From: Tvrtko Ursulin
Several things we can clean up in this function:
* Request and file passed in cannot be NULL. There is
a single caller which makes it impossible so change
that condition to a GEM_BUG_ON instead of a WARN
with a return code.
* Same is true for req->file_priv which
On Thu, 29 Sep 2016, Dhinakaran Pandiyan wrote:
> vgem does not do modeset, looping through non-existent CRTC's while
> registering drm_minor in
>
> 'commit 48c787899882 ("drm: Add API for capturing frame CRCs")'
>
> caused kernel oops. So, let's add CRC debugfs files
> only for those driver
On Thu, Sep 29, 2016 at 08:53:31AM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> Several things we can clean up in this function:
>
> * Request and file passed in cannot be NULL. There is
>a single caller which makes it impossible so change
>that condition to a GEM_BUG_ON inst
On 29/09/2016 09:08, Chris Wilson wrote:
On Thu, Sep 29, 2016 at 08:53:31AM +0100, Tvrtko Ursulin wrote:
From: Tvrtko Ursulin
Several things we can clean up in this function:
* Request and file passed in cannot be NULL. There is
a single caller which makes it impossible so change
t
On Wed, 2016-09-28 at 16:51 +0300, ville.syrj...@linux.intel.com wrote:
> From: Ville Syrjälä
>
> Reduce the eyesore with a local variable.
>
> Signed-off-by: Ville Syrjälä
Reviewed-by: Ander Conselvan de Oliveira
> ---
> drivers/gpu/drm/i915/intel_display.c | 14 +++---
> 1 file ch
On Wed, 2016-09-28 at 16:51 +0300, ville.syrj...@linux.intel.com wrote:
> From: Ville Syrjälä
>
> It's perfectly legal for the sink to support 12bpc only for
> some lower resolution modes, while the higher resolution modes
> can only be used with 8bpc. So let's take the sink's max TMDS clock
> in
On 29 September 2016 at 05:42, Dhinakaran Pandiyan
wrote:
> vgem does not do modeset, looping through non-existent CRTC's while
> registering drm_minor in
>
> 'commit 48c787899882 ("drm: Add API for capturing frame CRCs")'
>
> caused kernel oops. So, let's add CRC debugfs files
> only for
== Series Details ==
Series: drm/i915: Cleanup i915_gem_request_add_to_client (rev4)
URL : https://patchwork.freedesktop.org/series/12959/
State : success
== Summary ==
Series 12959v4 drm/i915: Cleanup i915_gem_request_add_to_client
https://patchwork.freedesktop.org/api/1.0/series/12959/revisi
On Thu, 29 Sep 2016, Dhinakaran Pandiyan wrote:
> This reverts 'commit 3708d5e082c3 ("drm/i915: start adding dp mst audio")'
> because it breaks MST multi-monitor setups on some platforms.
>
> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97907
>
> Signed-off-by: Dhinakaran Pandiyan
> Reporte
On Thu, 29 Sep 2016, Jani Nikula wrote:
> On Thu, 29 Sep 2016, Dhinakaran Pandiyan
> wrote:
>> This reverts 'commit 3708d5e082c3 ("drm/i915: start adding dp mst audio")'
>> because it breaks MST multi-monitor setups on some platforms.
>>
>> Bug: https://bugs.freedesktop.org/show_bug.cgi?id=97907
On Thu, Sep 29, 2016 at 10:25:09AM +0200, Tomeu Vizoso wrote:
> On 29 September 2016 at 05:42, Dhinakaran Pandiyan
> wrote:
> > vgem does not do modeset, looping through non-existent CRTC's while
> > registering drm_minor in
> >
> > 'commit 48c787899882 ("drm: Add API for capturing frame C
On Wed, Sep 28, 2016 at 11:25:00PM +0100, Chris Wilson wrote:
> Commit 43968d7b806d ("drm: Extract drm_plane.[hc]") was not the simple
> cut'n'paste we presumed, somehow it introduced a leak of the page flip
> target's framebuffer.
>
> Fixes: 43968d7b806d ("drm: Extract drm_plane.[hc]")
> Signed-o
On Tue, Sep 27, 2016 at 12:18:13PM -0400, Sean Paul wrote:
> On Tue, Sep 27, 2016 at 2:36 AM, David Herrmann wrote:
> > Hi Chris
> >
> > On Mon, Sep 26, 2016 at 10:44 PM, Chris Wilson
> > wrote:
> >> Currently we use a linear walk to lookup a handle and return a dma-buf,
> >> and vice versa. A l
Hello,
Is this the right mailing list to ask about intel-gpu-tools? I wonder if
anyone can help me port it to Wayland only, no X11.
Regards,
Cornel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo
On 29 September 2016 at 09:59, Daniel Vetter wrote:
> On Thu, Sep 29, 2016 at 10:25:09AM +0200, Tomeu Vizoso wrote:
>> On 29 September 2016 at 05:42, Dhinakaran Pandiyan
>> wrote:
>> > vgem does not do modeset, looping through non-existent CRTC's while
>> > registering drm_minor in
>> >
>> >
Other than reducing the number of EDID reads required for probing the
modes on a connector, this refactor has the importance of centralising
the logic for deciding when we need to probe for an analogue output via
DVI-I and then consistently using that information between detection and
mode computat
== Series Details ==
Series: drm/i915/crt: Keep the EDID for the whole detect cycle
URL : https://patchwork.freedesktop.org/series/13066/
State : warning
== Summary ==
Series 13066v1 drm/i915/crt: Keep the EDID for the whole detect cycle
https://patchwork.freedesktop.org/api/1.0/series/13066/r
On Thu, 29 Sep 2016, Manasi Navare wrote:
> On Tue, Sep 27, 2016 at 08:07:01PM +0300, Jani Nikula wrote:
>> On Tue, 27 Sep 2016, Manasi Navare wrote:
>> > On Mon, Sep 26, 2016 at 04:39:34PM +0300, Jani Nikula wrote:
>> >> On Fri, 16 Sep 2016, Manasi Navare wrote:
>> >> > According to the Display
On Thu, Sep 29, 2016 at 02:26:16PM +0300, Jani Nikula wrote:
> On Thu, 29 Sep 2016, Manasi Navare wrote:
> > On Tue, Sep 27, 2016 at 08:07:01PM +0300, Jani Nikula wrote:
> >> On Tue, 27 Sep 2016, Manasi Navare wrote:
> >> > On Mon, Sep 26, 2016 at 04:39:34PM +0300, Jani Nikula wrote:
> >> >> On F
On Wed, 21 Sep 2016, Manasi Navare wrote:
> To support USB type C alternate DP mode, the display driver needs to
> know the number of lanes required by the DP panel as well as number
> of lanes that can be supported by the type-C cable. Sometimes, the
> type-C cable may limit the bandwidth even if
The kernel has now a new debugfs ABI that can also allow capturing frame
CRCs for drivers other than i915.
Add alternative codepaths so the new ABI is used if the kernel is recent
enough, and fall back to the legacy ABI if not.
Signed-off-by: Tomeu Vizoso
---
lib/igt_debugfs.c | 236 ++
On Thu, 29 Sep 2016, cornel panceac wrote:
> Is this the right mailing list to ask about intel-gpu-tools? I wonder if
> anyone can help me port it to Wayland only, no X11.
Please be more specific. Most of it is on top of libdrm, or just messing
with the mmio directly, and independent of Wayland o
On to, 2016-09-29 at 11:52 +0100, Chris Wilson wrote:
> Other than reducing the number of EDID reads required for probing the
> modes on a connector, this refactor has the importance of centralising
> the logic for deciding when we need to probe for an analogue output via
> DVI-I and then consisten
Oh, the list and Petri seem to have been dropped off the distribution,
adding back. I don't have an answer on the rest. Petri?
On Thu, 29 Sep 2016, cornel panceac wrote:
> 2016-09-29 14:53 GMT+02:00 Jani Nikula :
>
>> On Thu, 29 Sep 2016, cornel panceac wrote:
>> > 2016-09-29 14:20 GMT+02:00 Ja
On Wed, 28 Sep 2016, Manasi Navare wrote:
> On Wed, Sep 28, 2016 at 10:38:37AM +0300, Jani Nikula wrote:
>> On Wed, 28 Sep 2016, Manasi Navare wrote:
>> > On Mon, Sep 26, 2016 at 04:41:27PM +0300, Jani Nikula wrote:
>> >> On Fri, 16 Sep 2016, Manasi Navare wrote:
>> >> > While configuring the pi
The kernel has now a new debugfs ABI that can also allow capturing frame
CRCs for drivers other than i915.
Add alternative codepaths so the new ABI is used if the kernel is recent
enough, and fall back to the legacy ABI if not.
Signed-off-by: Tomeu Vizoso
---
Have just dropped the additional te
On Thu, Sep 29, 2016 at 12:44:19PM +0100, Chris Wilson wrote:
> On Thu, Sep 29, 2016 at 02:26:16PM +0300, Jani Nikula wrote:
> > On Thu, 29 Sep 2016, Manasi Navare wrote:
> > > On Tue, Sep 27, 2016 at 08:07:01PM +0300, Jani Nikula wrote:
> > >> On Tue, 27 Sep 2016, Manasi Navare wrote:
> > >> > O
From: Tvrtko Ursulin
Once we know we need to take new forcewakes, that being
a slow operation, it does not make sense to inline that
code into every mmio accessor.
Move it to a separate function and save some code.
v2: Be explicit with noinline and remove stale comment.
(Chris Wilson)
Sign
From: Tvrtko Ursulin
A bunch of cleaned up patches from one of my old branches. Just an idea I had
been toying about and probably more a RFC at this point. But it amazingly
passed trybot on (almost) the first try so I got tempted to post it.
Basically main motivation was to replace linear search
From: Tvrtko Ursulin
There are current places in the code, and there will be more in the
future, which iterate the forcewake domains to find out which ones
are currently active.
To save them from doing this iteration, we can cheaply keep a mask
of active domains in dev_priv->uncore.fw_domains_ac
From: Tvrtko Ursulin
They are completely identical to gen6_write* ones.
Signed-off-by: Tvrtko Ursulin
Reviewed-by: Joonas Lahtinen
Reviewed-by: Chris Wilson
---
drivers/gpu/drm/i915/intel_uncore.c | 25 +
1 file changed, 1 insertion(+), 24 deletions(-)
diff --git a/d
From: Tvrtko Ursulin
Sorting the tables (verified at runtime to help during
development) is another prerequisite for interesting
work which will follow.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 55 -
1 file changed, 42 insertio
From: Tvrtko Ursulin
Instead of the existing linear seach, now that we have sorted
range tables, we can do a binary search on them for some
potential miniscule performance gain, but more importantly
for elegance and code size. Hopefully the perfomance gain is
sufficient to offset the function cal
From: Tvrtko Ursulin
Move finding the correct forcewake domains to take for
register access from code to a mapping table. This will
allow more interesting work in the following patches
and is easier to review if singled out early.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_un
From: Tvrtko Ursulin
Also verify the order at runtime. This was we can start using
binary search on it in a following patch.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 28 ++--
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/d
From: Tvrtko Ursulin
Remove some macros which are now obviously identical.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 30 +++---
1 file changed, 7 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_uncore.c
b/drivers/gp
From: Tvrtko Ursulin
We notice two identical copies of the shadow register table and
following from that removal can also unify CHV and Gen9 write
mmio functions and macros into a single implementation.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 69 +++-
From: Tvrtko Ursulin
It is now obvious VLV, CHV and Gen9 mmio read fcuntions are
completely identical so we can remove the three copies and
just keep the newly named generic implementation.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 54 +++--
From: Tvrtko Ursulin
Simply replace the linear search with the kernel's binary
search implementation. There is only six registers currently
in that table so this may not be that interesting. It adds a
function call so hopefully remains performance neutral for now.
Signed-off-by: Tvrtko Ursulin
From: Tvrtko Ursulin
If we store this in the uncore structure we are on a good way to
show more commonality between the per-platform implementations.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/i915_drv.h | 11 ++
drivers/gpu/drm/i915/intel_uncore.c | 74 ++--
On Thu, Sep 29, 2016 at 09:46:40AM +0300, Adrian Hunter wrote:
> On 29/09/16 09:30, Westerberg, Mika wrote:
> > On Wed, Sep 28, 2016 at 05:50:00PM -0400, Giacomo Comes wrote:
> >> On Mon, Sep 26, 2016 at 12:52:11PM +0300, Westerberg, Mika wrote:
> >>> On Mon, Sep 26, 2016 at 11:57:04AM +0300, Jani
From: Tvrtko Ursulin
If we insert blitter forcewake domain entries in the range
table we can eliminate that special case and simplify the
code in a few macros. This will enable more unification later.
Signed-off-by: Tvrtko Ursulin
---
drivers/gpu/drm/i915/intel_uncore.c | 42 ++
On Thu, 29 Sep 2016, Ville Syrjälä wrote:
> On Thu, Sep 29, 2016 at 12:44:19PM +0100, Chris Wilson wrote:
>> On Thu, Sep 29, 2016 at 02:26:16PM +0300, Jani Nikula wrote:
>> > On Thu, 29 Sep 2016, Manasi Navare wrote:
>> > > On Tue, Sep 27, 2016 at 08:07:01PM +0300, Jani Nikula wrote:
>> > >> On T
On Thu, 29 Sep 2016, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> A bunch of cleaned up patches from one of my old branches. Just an idea I had
> been toying about and probably more a RFC at this point. But it amazingly
> passed trybot on (almost) the first try so I got tempted to post it.
>
On Thu, Sep 29, 2016 at 06:48:43PM +0300, Jani Nikula wrote:
> On Thu, 29 Sep 2016, Ville Syrjälä wrote:
> > On Thu, Sep 29, 2016 at 12:44:19PM +0100, Chris Wilson wrote:
> >> On Thu, Sep 29, 2016 at 02:26:16PM +0300, Jani Nikula wrote:
> >> > On Thu, 29 Sep 2016, Manasi Navare wrote:
> >> > > On
On Thu, 29 Sep 2016, Jani Nikula wrote:
> On Wed, 21 Sep 2016, Manasi Navare wrote:
>> To support USB type C alternate DP mode, the display driver needs to
>> know the number of lanes required by the DP panel as well as number
>> of lanes that can be supported by the type-C cable. Sometimes, the
On Thu, Sep 29, 2016 at 04:35:48PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> Sorting the tables (verified at runtime to help during
> development) is another prerequisite for interesting
> work which will follow.
>
> Signed-off-by: Tvrtko Ursulin
> ---
> drivers/gpu/drm/i915/inte
On Thu, Sep 29, 2016 at 04:35:49PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> Instead of the existing linear seach, now that we have sorted
> range tables, we can do a binary search on them for some
> potential miniscule performance gain, but more importantly
> for elegance and code
On Thu, Sep 29, 2016 at 04:35:50PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> If we insert blitter forcewake domain entries in the range
> table we can eliminate that special case and simplify the
> code in a few macros. This will enable more unification later.
>
> Signed-off-by: Tv
== Series Details ==
Series: Forcewake binary search & code shrink
URL : https://patchwork.freedesktop.org/series/13080/
State : warning
== Summary ==
Series 13080v1 Forcewake binary search & code shrink
https://patchwork.freedesktop.org/api/1.0/series/13080/revisions/1/mbox/
Test kms_pipe_cr
On Thu, Sep 29, 2016 at 04:35:51PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> If we store this in the uncore structure we are on a good way to
> show more commonality between the per-platform implementations.
>
> Signed-off-by: Tvrtko Ursulin
> ---
> drivers/gpu/drm/i915/i915_drv.
On Thu, Sep 29, 2016 at 04:35:55PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> Also verify the order at runtime. This was we can start using
> binary search on it in a following patch.
>
> Signed-off-by: Tvrtko Ursulin
> ---
> drivers/gpu/drm/i915/intel_uncore.c | 28 ++
On Thu, Sep 29, 2016 at 04:35:43PM +0100, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin
>
> A bunch of cleaned up patches from one of my old branches. Just an idea I had
> been toying about and probably more a RFC at this point. But it amazingly
> passed trybot on (almost) the first try so I got t
These patches add HuC loading support. The userspace
patches that check for a fully loaded HuC firmware and use
it can be found at:
https://lists.freedesktop.org/archives/libva/2016-September/004554.html
https://lists.freedesktop.org/archives/libva/2016-September/004555.html
Peter Antoine (8):
d
From: Peter Antoine
Add debugfs entry for HuC loading status check.
v2: rebase on-top of drm-intel-nightly.
v3: rebased again.
v7: rebased.
v8: rebased.
Tested-by: Xiang Haihao
Signed-off-by: Anusha Srivatsa
Signed-off-by: Alex Dai
Signed-off-by: Peter Antoine
Reviewed-by: Dave Gordon
---
From: Peter Antoine
The HuC loading process is similar to GuC. The intel_uc_fw_fetch()
is used for both cases.
HuC loading needs to be before GuC loading. The WOPCM setting must
be done early before loading any of them.
v2: rebased on-top of drm-intel-nightly.
removed if(HAS_GUC()) before t
From: Peter Antoine
The HuC authentication is done by host2guc call. The HuC RSA keys
are sent to GuC for authentication.
v2: rebased on top of drm-intel-nightly.
changed name format and upped version 1.7.
v3: rebased on top of drm-intel-nightly.
v4: changed wait_for_automic to wait_for
v5:
From: Peter Antoine
This patch returns the GuC status to the caller. It is used so
that the userspace knows if the GuC has been loaded.
v4: rebase.
v5: rebased.
Signed-off-by: Anusha Srivatsa
Signed-off-by: Peter Antoine
---
drivers/gpu/drm/i915/i915_drv.c | 4
drivers/gpu/drm/
From: Peter Antoine
HuC firmware css header has almost exactly same definition as GuC
firmware except for the sw_version. Also, add a new member fw_type
into intel_uc_fw to indicate what kind of fw it is. So, the loader
will pull right sw_version from header.
v2: rebased on-top of drm-intel-nigh
From: Peter Antoine
This patch will allow for getparams to return the status of the HuC.
As the HuC has to be validated by the GuC this patch uses the validated
status to show when the HuC is loaded and ready for use. You cannot use
the loaded status as with the GuC as the HuC is verified after i
From: Peter Antoine
This patch adds the HuC Loading for the BXT.
Version 1.7 of the HuC firmware.
v2: rebased.
v3: rebased.
changed file name to match the install package format.
v7: rebased.
v8: rebased.
Signed-off-by: Anusha Srivatsa
Signed-off-by: Peter Antoine
Reviewed-by: David Gordo
From: Peter Antoine
Rename some of the GuC fw loading code to make them more general. We
will utilise them for HuC loading as well.
s/intel_guc_fw/intel_uc_fw/g
s/GUC_FIRMWARE/UC_FIRMWARE/g
Struct intel_guc_fw is renamed to intel_uc_fw. Prefix of tts members,
such as 'guc' or 'guc_fw'
== Series Details ==
Series: HuC Loading Patches
URL : https://patchwork.freedesktop.org/series/13094/
State : failure
== Summary ==
LD arch/x86/kernel/cpu/built-in.o
LD arch/x86/kernel/built-in.o
LD drivers/tty/vt/built-in.o
LD drivers/usb/core/usbcore.o
LD
We were previously adding all the planes owned by the CRTC even when
the ddb partitioning didn't change for them. As a consequence, a lot
of functions were being called when we were just moving the cursor
around the screen, such as skylake_update_primary_plane().
This was causing flickering on the
On Thu, 2016-09-29 at 15:39 -0300, Paulo Zanoni wrote:
> We were previously adding all the planes owned by the CRTC even when
> the ddb partitioning didn't change for them. As a consequence, a lot
> of functions were being called when we were just moving the cursor
> around the screen, such as skyl
== Series Details ==
Series: drm/i915/gen9: only add the planes actually affected by ddb changes
URL : https://patchwork.freedesktop.org/series/13095/
State : warning
== Summary ==
Series 13095v1 drm/i915/gen9: only add the planes actually affected by ddb
changes
https://patchwork.freedesktop
We were previously adding all the planes owned by the CRTC even when
the ddb partitioning didn't change for them. As a consequence, a lot
of functions were being called when we were just moving the cursor
around the screen, such as skylake_update_primary_plane().
This was causing flickering on the
== Series Details ==
Series: drm/i915/gen9: only add the planes actually affected by ddb changes
(rev2)
URL : https://patchwork.freedesktop.org/series/13095/
State : warning
== Summary ==
Series 13095v2 drm/i915/gen9: only add the planes actually affected by ddb
changes
https://patchwork.fre
Sometimes a callout to a generic bsearch() library function is
substantial overhead for a small search utility. For these situations,
macro generate a type-specific bsearch routine.
Signed-off-by: Chris Wilson
Cc: Rusty Russell
Cc: Alessio Igor Bogani
---
include/linux/bsearch.h | 18 +
== Series Details ==
Series: Forcewake binary search & code shrink (rev2)
URL : https://patchwork.freedesktop.org/series/13080/
State : failure
== Summary ==
LD fs/btrfs/built-in.o
CC arch/x86/kernel/cpu/capflags.o
LD arch/x86/kernel/cpu/built-in.o
LD arch/x86/kerne
On Thu, Sep 29, 2016 at 09:05:01AM -0700, Manasi Navare wrote:
> On Thu, Sep 29, 2016 at 06:48:43PM +0300, Jani Nikula wrote:
> > On Thu, 29 Sep 2016, Ville Syrjälä wrote:
> > > On Thu, Sep 29, 2016 at 12:44:19PM +0100, Chris Wilson wrote:
> > >> On Thu, Sep 29, 2016 at 02:26:16PM +0300, Jani Niku
On Thu, 2016-09-29 at 11:39 +0300, Jani Nikula wrote:
> On Thu, 29 Sep 2016, Jani Nikula wrote:
> > On Thu, 29 Sep 2016, Dhinakaran Pandiyan
> > wrote:
> >> This reverts 'commit 3708d5e082c3 ("drm/i915: start adding dp mst audio")'
> >> because it breaks MST multi-monitor setups on some platform
On Fri, 30 Sep 2016, "Pandiyan, Dhinakaran"
wrote:
> On Thu, 2016-09-29 at 11:39 +0300, Jani Nikula wrote:
>> On Thu, 29 Sep 2016, Jani Nikula wrote:
>> > On Thu, 29 Sep 2016, Dhinakaran Pandiyan
>> > wrote:
>> >> This reverts 'commit 3708d5e082c3 ("drm/i915: start adding dp mst audio")'
>> >>
75 matches
Mail list logo