cancel
Showing results for 
Search instead for 
Did you mean: 

Drivers & Software

c_zagarskas
Adept II

amdgpu_20.40 fails on fresh install of Ubuntu 20.04.1

  • Due to failures on previous install attempts the following was done:
    • Disconnect VEGA 56 GPU's (and peripherals such as wifi card)
    • Clear CMOS
    • Flash Motherboard BIOS - B250 Fintech-CF (updated to F4a)
    • Fresh install of Ubuntu 20.04.1 - ground up from USB
      • Test system using 'system profiler' -> System works
      • standard run of sudo apt update/upgrade, ect...
    • Fresh download and install of amdgpu_20.40-1147286_amd64
      • Standard install attempted: amdgpu-pro-install -y
      • Errors/Failure (as noted below)

 

====================== TERMINAL OUTPUT ============

SHORTENED TO ERROR RELATED

$ cd Downloads/amdgpu_20.40-1147286_amd64

$ ./amdgpu-pro-install -y
[sudo] password:


deb [ trusted=yes ] file:/var/opt/amdgpu-pro-local/ ./
Get:1 file:/var/opt/amdgpu-pro-local ./ InRelease
Get:8 http://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Fetched 324 kB in 1s (530 kB/s)
Reading package lists... Done

Need to get 0 B/136 MB of archives.
After this operation, 1,120 MB of additional disk space will be used.
Get:1 file:/var/opt/amdgpu-pro-local ./ amdgpu-dkms-firmware 1:5.6.14.224-1147286 [5,922 kB]


Get:58 file:/var/opt/amdgpu-pro-local ./ vulkan-amdgpu-pro 20.40-1147286 [6,949 kB]
Extracting templates from packages: 100%

Unpacking libxshmfence1:i386 (1.3-1) ...
Selecting previously unselected package mesa-amdgpu-va-drivers:i386.
Preparing to unpack .../21-mesa-amdgpu-va-drivers_20.1.5-1147286_i386.deb ...
Unpacking mesa-amdgpu-va-drivers:i386 (1:20.1.5-1147286) ...
Selecting previously unselected package libglapi-amdgpu-mesa:i386.
Preparing to unpack .../22-libglapi-amdgpu-mesa_20.1.5-1147286_i386.deb ...
Unpacking libglapi-amdgpu-mesa:i386 (1:20.1.5-1147286) ...
Setting up libva2:i386 (2.7.0-2) ...
Setting up libdrm2-amdgpu:i386 (1:2.4.100-1147286) ...

Setting up libxshmfence1:i386 (1.3-1) ...
Setting up mesa-amdgpu-va-drivers:i386 (1:20.1.5-1147286) ...
Selecting previously unselected package libgl1-amdgpu-mesa-dri:i386.
(Reading database ... 189214 files and directories currently installed.)
Preparing to unpack .../00-libgl1-amdgpu-mesa-dri_20.1.5-1147286_i386.deb ...
Unpacking libgl1-amdgpu-mesa-dri:i386 (1:20.1.5-1147286) ...

Loading new amdgpu-5.6.14.224-1147286 DKMS files...
Building for 5.4.0-58-generic
Building for architecture x86_64
Building initial module for 5.4.0-58-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/amdgpu-dkms.0.crash'
Error! Bad return status for module build on kernel: 5.4.0-58-generic (x86_64)
Consult /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/make.log for more information.
dpkg: error processing package amdgpu-dkms (--configure):
installed amdgpu-dkms package post-installation script subprocess returned error exit status 10
dpkg: dependency problems prevent configuration of amdgpu:
amdgpu depends on amdgpu-dkms (= 1:5.6.14.224-1147286); however:
Package amdgpu-dkms is not configured yet.

dpkg: error processing package amdgpu (--configure):
dependency problems - leaving unconfigured
Setting up libatomic1:i386 (10.2.0-5ubuntu1~20.04) ...
No apport report written because the error message indicates its a followup error from a previous failure.
Setting up xserver-xorg-amdgpu-vid
eo-amdgpu (1:19.1.0-1147286) ...
Setting up mesa-amdgpu-omx-drivers:amd64 (1:20.1.5-1147286) ...

Setting up libosmesa6-amdgpu:i386 (1:20.1.5-1147286) ...
Setting up gst-omx-amdgpu (1.0.0.1-1147286) ...
dpkg: dependency problems prevent configuration of amdgpu-pro:
amdgpu-pro depends on amdgpu (= 20.40-1147286); however:
Package amdgpu is not configured yet.

dpkg: error processing package amdgpu-pro (--configure):
dependency problems - leaving unconfigured
Setting up libdrm-radeon1:i386 (2.4.101-2) ...
No apport report written because the error message indicates its a followup error from a previous failure.
Setting up mesa-amdgpu-vdpau-drive
rs:amd64 (1:20.1.5-1147286) ...
Setting up libxext6:i386 (2:1.3.4-0ubuntu1) ...
dpkg: dependency problems prevent configuration of amdgpu-pro-lib32:
amdgpu-pro-lib32 depends on amdgpu (= 20.40-1147286) | amdgpu-hwe (= 20.40-1147286); however:
Package amdgpu is not configured yet.
Package amdgpu-hwe is not installed.
amdgpu-pro-lib32 depends on amdgpu-pro (= 20.40-1147286) | amdgpu-pro-hwe (= 20.40-1147286); however:
Package amdgpu-pro is not configured yet.
Package amdgpu-pro-hwe is not installed.

dpkg: error processing package amdgpu-pro-lib32 (--configure):
dependency problems - leaving unconfigured
Setting up libxxf86vm1:i386 (1:1.1.4-1build1) ...
No apport report written because MaxReports is reached already
Setting up libllvm10:i386 (1:10.0.0-4ubuntu1) ...

Setting up vdpau-driver-all:i386 (1.3-1ubuntu2) ...
Setting up amdgpu-lib32 (20.40-1147286) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
Errors were encountered while processing:
amdgpu-dkms
amdgpu
amdgpu-pro
amdgpu-pro-lib32
E: Sub-process /usr/bin/dpkg returned an error code (1)

################################

 

 

################################

Contents of: /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/make.log

SHORTENED TO ERROR RELATED

 

DKMS make.log for amdgpu-5.6.14.224-1147286 for kernel 5.4.0-58-generic (x86_64)
Sun 03 Jan 2021 10:15:01 PM EST
make: Entering directory '/usr/src/linux-headers-5.4.0-58-generic'
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/Makefile:20: "Local GCC version 90303 does not match kernel compiler GCC version 90300"
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/Makefile:21: "This may cause unexpected and hard-to-isolate compiler-related issues"
CC [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/main.o


CC [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_kms.o
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_fence.c:30:1: warning: ‘dma_fence_test_signaled_any’ defined but not used [-Wunused-function]
30 | dma_fence_test_signaled_any(struct dma_fence **fences, uint32_t count,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~


CC [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_pci.o
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_pci.c: In function ‘amdkcl_pci_init’:
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_pci.c:103:84: warning: passing argument 2 of ‘amdkcl_fp_setup’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
103 | _kcl_pcie_link_speed = (const unsigned char *) amdkcl_fp_setup("pcie_link_speed", _kcl_pcie_link_speed_stub);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_pci.c:4:
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdkcl/kcl_common.h:12:63: note: expected ‘void *’ but argument is of type ‘const unsigned char *’
12 | static inline void *amdkcl_fp_setup(const char *symbol, void *fp_stup)
| ~~~~~~^~~~~~~


CC [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_gem.o
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_fb.c: In function ‘amdgpufb_create’:
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_fb.c:252:14: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
252 | info->fbops = &amdgpufb_ops;
| ^
C


CC [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/ttm/ttm_bo.o
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_bios.c: In function ‘amdgpu_read_platform_bios’:
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_bios.c:200:9: error: implicit declaration of function ‘pci_platform_rom’ [-Werror=implicit-function-declaration]
200 | bios = pci_platform_rom(adev->pdev, &size);
| ^~~~~~~~~~~~~~~~
/var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_bios.c:200:7: warning: assignment to ‘uint8_t *’ {aka ‘unsigned char *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
200 | bios = pci_platform_rom(adev->pdev, &size);
| ^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:275: /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu/amdgpu_bios.o] Error 1
make[1]: *** [scripts/Makefile.build:522: /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/amd/amdgpu] Error 2
make[1]: *** Waiting for unfinished jobs....


LD [M] /var/lib/dkms/amdgpu/5.6.14.224-1147286/build/ttm/amdttm.o
make: *** [Makefile:1757: /var/lib/dkms/amdgpu/5.6.14.224-1147286/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.4.0-58-generic'

 

 

0 Likes
2 Solutions
21 Replies

Need your full system specs...

 

what's the best way to get that over to you? Just CPU, GPU, MB and OS... or something more detailed?

0 Likes

System Specifications:

CPU:
Motherboard:
Motherboard BIOS Version:
RAM:
OS:
OS Version:
GPU:
GPU Driver Version:
PSU:

System Specifications:

CPU:
Intel(R) Celeron(R) CPU G3930 @ 2.90GHz

Motherboard:
Name : B250-FinTech-CF
Vendor : Gigabyte Technology Co., Ltd.

BIOS:
Date : 12/17/2018
Vendor : American Megatrends Inc. (American Megatrends, www.ami.com)
Version : F4a

RAM: PATRIOT - 2x 4G sticks
Type: DDR4
Type Detail: Synchronous
Speed: 2133 MT/s
Manufacturer: 8502
Serial Number: 00000000
Asset Tag: 9876543210
Part Number: PSD44G240082

Configured Memory Speed: 2133 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V

MemTotal Total Memory 8040664 KiB
MemFree Free Memory 3577188 KiB
MemAvailable 6534096 KiB


Operating System
----------------
Ubuntu 20.04.1 LTS

-Version-
Kernel : Linux 5.4.0-58-generic (x86_64)
Version : #64-Ubuntu SMP Wed Dec 9 08:16:25 UTC 2020
C Library : GNU C Library / (Ubuntu GLIBC 2.31-0ubuntu9.1) 2.31
Distribution : Ubuntu 20.04.1 LTS

GPU: AMD MSI - VEGA 56 - 8GIG version
Advanced Micro Devices, Inc. [AMD/ATI] Vega 10 HDMI Audio [Radeon Vega 56/64]

product: Vega 10 XL/XT [Radeon RX Vega 56/64]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
version: c3
-- NOTE the GPU Bios switch is in the default mode - no custom bios used
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi vga_controller bus_master cap_list
configuration: latency=0

PSU:
EVGA SuperNOVA 1600 T2, 80+ TITANIUM 1600W, Fully Modular

HD:
ATA PNY CS900 120GB

 


=== NOTES ===
This machine previously had amdgpu-pro-17.40-492261 on it
Updated to the following over a year with no issues till recently
  amdgpu-pro-20.20-1098277-ubuntu-20.04
  amdgpu-pro-20.40-1147286-ubuntu-20.04

However, after the recent attempts to install
  amdgpu-pro-20.45-1164792-ubuntu-20.04
Fail

- also unable to go back to v17 to install without errors, same errors occur.

I have tested the install
+ with all PCI slots empty and GPU's pulled from the system
+ GPU filled
+ Flashed BIOS and did clean install of Ubuntu
=> problem persists

Any attempts to use GPU intensive software results in:
"ERROR: No OpenCL platforms found"

Attempts made using:
./amdgpu-pro-install -y
./amdgpu-pro-install -y --opencl=rocr,legacy --headless

0 Likes

After a few more attempts I notice the first error is kernel: 5.4.0-58-generic (x86_64)

I wonder is there is a way to downgrade the kernel...? (stack/git/googling shows folks doing that, seems unorthodox) for example 

https://community.amd.com/t5/drivers-software/can-t-install-amdgpu-drivers-on-ubuntu-20-04-1-5-4-0-5...

amdgpu-pro depends on amdgpu (= 20.40-1147286) is also interesting and leads me to believe I should perhaps try to install amdgpu from 20.40 before I try amdgpu-pro?

however, I dont see anything in the dependencies and prerequisites section of the doc/index.html file that would indicate that. 

should I be downloading the AMD Vega 56 driver first from here? 

https://www.amd.com/en/support/previous-drivers/graphics/radeon-rx-vega-series/radeon-rx-vega-series...

the error log files being "locked" seems strange to me... I've seen some folks use --no-dkms tacked on but dont see this referenced in the documentation either?

ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/amdgpu-dkms.0.crash'

0 Likes

#1 - I would not expect the 20.40 driver package to work on Ubuntu 20.04.1 since it does not include the pci_platform_rom fix. Are you able to use 20.45 instead ? You mentioned that 20.45 did not install either but for now getting 20.45 working is likely to be easier/faster than 20.40.

#2 - Sorry, I missed your question about downgrading until just now. One of our engineers wrote up the following:

Here is the procedure to downgrade the kernel on Ubuntu 20.04.1:

We can do this using apt package management tools. We also need to know the version of the kernel you want to downgrade for Ubuntu 20.04.1.
I used this page to find older kernels for this distribution in repository: https://people.canonical.com/~kernel/info/kernel-version-map.html

focal linux
Ubuntu Kernel Version Ubuntu Kernel Tag Mainline Kernel Version
5.3.0-18.19 UNKNOWN UNKNOWN
5.3.0-24.26 UNKNOWN UNKNOWN
5.4.0-9.12 Ubuntu-5.4.0-9.12 5.4.3
5.4.0-18.22 Ubuntu-5.4.0-18.22 5.4.24
5.4.0-21.25 Ubuntu-5.4.0-21.25 5.4.27
5.4.0-24.28 Ubuntu-5.4.0-24.28 5.4.30
5.4.0-25.29 Ubuntu-5.4.0-25.29 5.4.30
5.4.0-26.30 Ubuntu-5.4.0-26.30 5.4.30
5.4.0-28.32 Ubuntu-5.4.0-28.32 5.4.30
5.4.0-29.33 Ubuntu-5.4.0-29.33 5.4.30
5.4.0-31.35 Ubuntu-5.4.0-31.35 5.4.34
5.4.0-33.37 Ubuntu-5.4.0-33.37 5.4.34
5.4.0-37.41 Ubuntu-5.4.0-37.41 5.4.41
5.4.0-39.43 Ubuntu-5.4.0-39.43 5.4.41
5.4.0-40.44 Ubuntu-5.4.0-40.44 5.4.44
5.4.0-42.46 Ubuntu-5.4.0-42.46 5.4.44
5.4.0-45.49 Ubuntu-5.4.0-45.49 5.4.55
5.4.0-47.51 Ubuntu-5.4.0-47.51 5.4.55
5.4.0-48.52 Ubuntu-5.4.0-48.52 5.4.60
5.4.0-51.56 Ubuntu-5.4.0-51.56 5.4.65
5.4.0-52.57 Ubuntu-5.4.0-52.57 5.4.65
5.4.0-53.59 Ubuntu-5.4.0-53.59 5.4.65
5.4.0-54.60 Ubuntu-5.4.0-54.60 5.4.65
5.4.0-56.62 Ubuntu-5.4.0-56.62 5.4.73
5.4.0-57.63 Ubuntu-5.4.0-57.63 5.4.78

For example if we want to downgrade from the latest published kernel 5.4.0-56.62 the previous kernel release or older.

1. Boot into on the latest kernel and uninstall the driver:

uname -r
5.4.0-56-generic
amdgpu-uninstall
sudo apt autoremove

2. Find the previous kernel or older in Ubuntu repository

sudo apt search linux- |grep 5.4.0-54.60

3. Install older kernel in a system. We can use a command like the following:

sudo apt install linux-image-5.4.0-54-generic linux-headers-5.4.0-54 linux-headers-5.4.0-54-generic linux-modules-5.4.0-54-generic

4. Setup GRUB timeout, update this file /etc/default/grub with the following, and run 'update-grub' afterwards to update /boot/grub/grub.cfg:

sudo vim /etc/default/grub

#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10

sudo update-grub

5. Reboot into an older kernel. The older kernels will be shown, while we will need to select “Advanced options for Ubuntu” to find older kernel.

uname -r
5.4.0-54-generic

6. Put on hold the latest kernel. We can use a command like the following:

sudo apt-mark hold linux-image-5.4.0-56-generic linux-headers-5.4.0-56 linux-headers-5.4.0-56-generic linux-modules-5.4.0-56-generic

linux-image-5.4.0-56-generic set on hold.
linux-headers-5.4.0-56 set on hold.
linux-headers-5.4.0-56-generic set on hold.
linux-modules-5.4.0-56-generic set on hold.

7. Install the driver

8. Check DKMS status and reboot a system to the older kernel (step 5.)

dkms status
amdgpu, 5.6.20.906300-1164792, 5.4.0-54-generic, x86_64: installed

9. If/when a driver that works with the newer kernel is available remove the hold with the following command:

sudo apt-mark unhold linux-image-5.4.0-56-generic linux-headers-5.4.0-56 linux-headers-5.4.0-56-generic linux-modules-5.4.0-56-generic

Canceled hold on linux-image-5.4.0-56-generic.
Canceled hold on linux-headers-5.4.0-56.
Canceled hold on linux-headers-5.4.0-56-generic.
Canceled hold on linux-modules-5.4.0-56-generic.


@colesdav 

 any ideas here yet? this is still a problem... 

0 Likes
mountkidd
Adept II

What I see here in the original post is an amdgpu 20.40 install over a 5.4.0-58 kernel.  This kernel is expecting the amdgpu_bios.c patch but amdgpu 20.40 doesn't have it so the build fails.  amdgpu 20.45 would have worked here.

0 Likes

LOL - this is crazy.

Consider these facts:

  1. I AM currently running amdgpu_20.40 on Ubuntu 20.04.1 (a CLONED drive)
  2. But!!! If I install Ubuntu 20.04.1 fresh on a new SSD both amdgpu_20.40 and amdgpu_20.45 fail to install...
0 Likes

For a solution: I do not care which version of amdgpu_20.xx I need to install to make this work.

I have considered going down to maybe... amdgpu_20.30?

So, lets try this angle: What version of amdgpu_20.xx do I need to install on Ubuntu 20.04.1 ? and... do you have a link?

Also note - my attempts to "downgrade the kernel" did not go well. lol. (like trying to use wet toilet paper)

0 Likes


@c_zagarskas wrote:

So, lets try this angle: What version of amdgpu_20.xx do I need to install on Ubuntu 20.04.1 ? and... do you have a link?


I would not expect 20.40 to work, however 20.45 should work. We're going to do some testing but if you had a build log handy from your most recent 20.45 install that would be really useful.

Which kernel does your fresh install of 20.04.1 have ? (output of uname -a)

0 Likes

any updates? 20.45 fails on ubuntu 20.04 and 20.10

MSI b550

ryzen 5900

32g ram

amd 6000 series card

 

Underlying problem is that Canonical/Ubuntu forced HWE updates out even to 20.04.1 users rather than staying on the GA kernel until the user installed or updated to 20.04.2.

The Ubuntu site now has instructions for going back to the GA kernel that 20.04.1 was using until recently:

https://wiki.ubuntu.com/Kernel/LTSEnablementStack#Desktop

Once that is done and you are back on a 5.4-based kernel the 20.45 drivers should install fine.

18.04.5 is still a problem - the latest kernel has the same pci_platform_rom missing symbol that was pushed to 20.04.1, but the 20.45 driver which includes a fix for the missing symbol won't install on 18.04.5.

0 Likes

@bridgman    "Once that is done and you are back on a 5.4-based kernel the 20.45 drivers should install fine.

18.04.5 is still a problem - the latest kernel has the same pci_platform_rom missing symbol that was pushed to 20.04.1, but the 20.45 driver which includes a fix for the missing symbol won't install on 18.04.5."

There may be a way to install amdgpu 20.45 into 18.04.5 (w/ kernel 5.4.x)...  Temporarily change /etc/os-release to contain 20.04 in several places prior to installing 20.45 from the 20.04 bundle and restore the contents post-install. I haven't tried this myself but did find a description of this method after I had already updated my 18.04.5 hosts to 20.04.1/5.4.0-54/20.45.  Over the past 2 wks a small number of  os updates have come through and my hosts now identify as 20.04.2.

0 Likes

This remains a problem.

I have done another fresh install of Ubuntu for a new build, and once again the "new" 20.45 version fails to install

https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-20-45

Should I make a new post about this and record it? Here is how this go's down:

  • Fresh install of Ubuntu 20 LTS, download to USB and install
  • attempt to install amdgpu-pro (using any configuration, from amdgpu to amdgpu-pro --headless)
  • Install fails, DKIMS fails, ect...
  • reboot? => BRICKED
  • Have to sideload grub and uninstall amdgpu-pro from command line

Major problem here? - Can not do that REMOTELY! 

I hate to sound rude or criticize AMD devs, but I strongly feel that no one took a fresh install of Ubuntu 20LTS, ran sudo apt update - and attempted to install amdgpu-pro. This is mind blowing to me...

0 Likes

Unfortunately it's not crazy at all - Canonical seems to be making much larger changes than before without changing release numbers.

Updates to LTS releases between HWE bumps used to be pretty much security/stable only, but now we are seeing much larger changes even though all the versions are called 20.04.1.

At first glance it seems like a bit of worst-of-both-worlds - the kernels aren't new enough that we can skip DKMS and use the distro's in-box kernel, but the kernel changes are big enough to break things.

Yes we are discussing with Canonical.

iltars333
Journeyman III

What I see right here in the authentic put up is an amdgpu 20.Forty deploy over a five.Four.Zero-fifty eight kernel. This kernel is looking forward to the amdgpu_bios.C patch however amdgpu 20.40 would not have it so the construct fails. Amdgpu 20.Forty five would have worked right here.

0 Likes

We have also published a new 20.50 driver which should install cleanly on both 20.04.2 and 18.04.5.

0 Likes