# [solv] can't modprobe amdgpu "Could not allocate 8192 bytes"

## maiku

I've upgraded from 4.17.19 which is the last working kernel for the amdgpu module for me to 4.20.1. Any higher kernel for me crashes when it tries to load amdgpu.

It gives this dmesg when I try to modprobe amdgpu:

```
[  192.808241] percpu: allocation failed, size=8192 align=4096 atomic=0, alloc from reserved chunk failed

[  192.808246] CPU: 3 PID: 6687 Comm: modprobe Not tainted 4.20.1-gentoo #1

[  192.808247] Hardware name: Acer Aspire A315-41/Metapod_RR, BIOS V1.01 01/19/2018

[  192.808248] Call Trace:

[  192.808257]  dump_stack+0x46/0x5b

[  192.808262]  pcpu_alloc+0x56e/0x590

[  192.808267]  load_module+0xb3d/0x1e60

[  192.808271]  __se_sys_finit_module+0xe0/0xf0

[  192.808275]  do_syscall_64+0x4a/0x100

[  192.808279]  entry_SYSCALL_64_after_hwframe+0x44/0xa9

[  192.808282] RIP: 0033:0x7fececeaffb9

[  192.808284] Code: 00 00 00 75 05 48 83 c4 18 c3 e8 42 a5 01 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 9f 4e 2c 00 f7 d8 64 89 01 48

[  192.808286] RSP: 002b:00007fffa21ad0d8 EFLAGS: 00000206 ORIG_RAX: 0000000000000139

[  192.808288] RAX: ffffffffffffffda RBX: 000055802d1aabd0 RCX: 00007fececeaffb9

[  192.808289] RDX: 0000000000000000 RSI: 000055802c2c8dec RDI: 0000000000000003

[  192.808291] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000

[  192.808292] R10: 0000000000000003 R11: 0000000000000206 R12: 000055802d1aab80

[  192.808293] R13: 000055802c2c8dec R14: 0000000000040000 R15: 000055802d1a7960

[  192.808295] drm: Could not allocate 8192 bytes percpu data
```

Not really sure where to go from here. Here's an excerpt from my kernel config about the AMDGPU settings I've selected. I could post the whole thing as necessary:

```
#

# I2C encoder or helper chips

#

# CONFIG_DRM_I2C_CH7006 is not set

# CONFIG_DRM_I2C_SIL164 is not set

# CONFIG_DRM_I2C_NXP_TDA998X is not set

# CONFIG_DRM_I2C_NXP_TDA9950 is not set

# CONFIG_DRM_RADEON is not set

CONFIG_DRM_AMDGPU=m

CONFIG_DRM_AMDGPU_SI=y

CONFIG_DRM_AMDGPU_CIK=y

# CONFIG_DRM_AMDGPU_USERPTR is not set

# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
```

How can I get this working?

----------

## tdude

Do you have DRM_AMD_DC enabled??

It's under 'Display Engine Configuration' just below the AMD GPU module options.

```
CONFIG_DRM_AMD_DC:

    Choose this option if you want to use the new display engine

    support for AMDGPU. This adds required support for Vega and Raven ASICs.
```

And also maybe check to see if you have your firmware being loaded properly?

----------

## maiku

I do indeed have it enabled:

```
#

# Display Engine Configuration

#

CONFIG_DRM_AMD_DC=y

CONFIG_DRM_AMD_DC_DCN1_0=y

CONFIG_DRM_AMD_DC_DCN1_01=y

# CONFIG_DEBUG_KERNEL_DC is not set

CONFIG_HSA_AMD=y
```

How can I check that the firmware is set to loaded? It's all there under /lib/firmware and I don't do anything different from the kernel I'm on which loads it successfully. Do I need to re-merge linux-firmware when I build the new kernel?

----------

## tdude

EDIT: can you please post your full dmesg? Maybe there's another problem earlier?

You shouldn't need to re-emerge the linux-firmware package for each kernel upgrade. 

However, what version of the linux-firmware package is installed? I recently had to upgrade to >=20181216 in order to get any newer kernels to work due to recent changes in the amdgpu code.

 *Quote:*   

> How can I check that the firmware is set to loaded?

 

```
dmesg | grep -i firmware
```

On my RX 560 it looks like:

```
[    0.703002] [drm] Found UVD firmware Version: 1.130 Family ID: 16

[    0.703674] [drm] Found VCE firmware Version: 53.26 Binary ID: 3
```

I'm running 4.19.x kernel series (haven't tried 4.20 at all) and I have amdgpu compiled into the kernel (as opposed to your having it as a module), but I have this in my kernel config:

```
CONFIG_EXTRA_FIRMWARE="amdgpu/polaris11_ce_2.bin amdgpu/polaris11_mc.bin amdgpu/polaris11_mec2.bin" (... and many other similarly named files)
```

From your initial post

```
[  192.808247] Hardware name: Acer Aspire A315-41/Metapod_RR, BIOS V1.01 01/19/2018 
```

it looks like that laptop has a 'Radeon Vega 3' GPU (integrated into the CPU), but I don't know if that would be 'amdgpu/raven_**.bin' or 'amdgpu/vega12_**.bin'

The wiki https://wiki.gentoo.org/wiki/AMDGPU has a section on integrating the firmware into the kernel via the CONFIG_EXTRA_FIRMWARE option.

Hope this helps, but I'm not sure what else the problem could be...

----------

## tdude

Also, after a bit more searching about that specific laptop (as opposed to the GPU), this guy:

https://www.cnx-software.com/2018/08/19/acer-aspire-3-a315-41g-amd-ryzen-7-2700u-laptop-ubuntu-18-04-m-2-ssd/

had to add 'pci=noacpi' to the end of his kernel's boot command in GRUB. Granted, that was Ubuntu with older kernels, but still worth a try.

----------

## maiku

pci=noacpi doesn't work! I tried that a bit ago. Just tried again.

I'm I have linux-firmware 20181218 installed. That *should* be good I guess.

What's interesting is the two dmesg outputs:

4.17.19 dmesg | grep firmware

```
[    1.097445] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2

[    3.019265] [drm] Found VCN firmware Version: 1.73 Family ID: 18

[    3.151549] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:02:00.0.bin failed with error -2

[    3.151566] ath10k_pci 0000:02:00.0: Direct firmware load for ath10k/cal-pci-0000:02:00.0.bin failed with error -2

[    3.154480] ath10k_pci 0000:02:00.0: firmware ver WLAN.TF.2.1-00021-QCARMSWP-1 api 6 features wowlan,ignore-otp crc32 42e41877
```

4.20.1 dmesg | grep firmware

```
[    1.630830] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2

[    4.315023] ath10k_pci 0000:02:00.0: firmware ver WLAN.TF.2.1-00021-QCARMSWP-1 api 6 features wowlan,ignore-otp crc32 42e41877
```

It doesn't seem to be loading the firmware.

I think I might try downgrading to the kernel you're using and if not maybe build it into the kernel.

Edit

Here's my full dmesg

https://pastebin.com/AdH04JfX

I wanted to paste it raw but it kept getting truncated.

----------

## tdude

Not sure if you want to mess with this, but you're running an old BIOS version (from your dmesg):

```
BIOS V1.01 01/19/2018 
```

On the Acer website, there looks to be a 1.11 update from 2018/12/05 - just make sure you get the right version for your specific model number (didn't know which version of the A315-41 you have).

Only other thing I can think of is to maybe get a different distro (Ubuntu or Arch derivative or whatever) with a >=4.18 kernel to boot off a thumb drive and see if it's only the newer kernels that are the problem or if you need to start messing with some other kernel config options.

Sorry I can't help more...

----------

## maiku

Thank you for your response. You are correct. My BIOS is very out of date. There are some key BIOS updates after this.

I am having a HECK of a time getting it to update, though.

The update is an EXE. So naturally I've tried the following:

Unzipping in case it was a regular zip

Renaming it to a zip in case I didn't do it right

Used this to make a freedos.img http://wiki.gentoo.org/wiki/BIOS_Update#FreeDOS_Environment

Tried to boot said image using grub2 with memdisk... blank screen

Tried the freedos.img from the systemrestorecd to boot with memdisk in grub... blank screen

Tried to load the freedos.img using memdisk via grub command line and "boot"... hangs

Tried freedos boot disk...BIOS setting doesn't allow for ANY boot mode BESIDES EFI.

I'm getting a bit bent out of shape about this by now!

----------

## maiku

Okay! I was finally able to update my BIOS to the latest version by getting a hard drive from a dead computer. Unfortunately, I'm still having the issue with the video driver! Dang.

----------

## maiku

Just another update.

1) Tried running the latest version of Ubuntu from the Ubuntu website from a USB drive. It hangs on a blank screen after I select to boot without installing Ubuntu, and eventually produces no output.

2) Tried building amdgpu into the kernel 4.20.1 instead of a module then I added all of the RAVEN firmware directly into the kernel 'cause that's what I find in dmesg. The kernel also froze on boot without any messaging as to why.

I'll have to dig further. Just haven't had the opportunity.

At least my BIOS is updated.

----------

## maiku

Forgot to mention that I filed a bug about this which is reaching a resolution:

https://bugzilla.kernel.org/show_bug.cgi?id=202511

----------

## DaggyStyle

I've encountered this error when working on my company's kernel.

how many modules do you have loaded?

----------

## maiku

Currently 38. But I compiled the video into the kernel so there would have been a few more where I got the error.

----------

## DaggyStyle

 *maiku wrote:*   

> Currently 38. But I compiled the video into the kernel so there would have been a few more where I got the error.

 

this error occurs because you have no more space in the percpu to allocate for the module, try the following:

boot latest sysrescuecd

if all works ok, get the kernel config and try it on your machine.

if not working,

get to the kernel src folder, run make defconfig

add only amdgpu as module compile and reboot.

report back if any of these options worked.

also, make sure that CONFIG_X86_VSMP isn't set in the config.

----------

## maiku

Although like it was suggested in the bug setting CONFIG_X86_VSMP=n also fixes the issue for me without having to compile everything else in. I'm not sure if I even need that flag.

----------

## DaggyStyle

 *maiku wrote:*   

> Although like it was suggested in the bug setting CONFIG_X86_VSMP=n also fixes the issue for me without having to compile everything else in. I'm not sure if I even need that flag.

 

you don't.

----------

## maiku

That settles that then.

----------

## DaggyStyle

 *maiku wrote:*   

> That settles that then.

 

incase it is solved, please append to the topic's title [solved]

----------

## maiku

Had to remove some characters, but all set.

----------

