[Request] ASUS Prime B360M-C option to disable PCIe root ports

Hey BIOS mod community,

i got a ASUS Prime B360M-C which has a ASMedia ASM1083 PCIe to PCI bridge chip connected to the PCIe root port #6.

Unfortunately this chip does not support ASPM (L0,L1) correctly, that’s why the feature was disabled in the Linux Kernel, see:
https://patchwork.kernel.org/project/linux-pci/patch/[email protected]/

I use this board as my NAS/Server with Linux and i want to lower the power consumption, but as long this chip is activated, i can’t get higher C-states.

So i request a BIOS mod which let me disable the ASM1083 or the PCIe root port #6 via the BIOS (default should be enabled).

Here is the ASUS support page for the board to download the latest BIOS:
https://www.asus.com/supportonly/prime%20b360m-c/helpdesk_download/

Thanks for the help in advance ^^

I got a little bit help from a friendly YT guy, which helped me to disable the PCIe root port #6 temporarily via SECWIN.
It’s rests itself after a CMOS reset and seems to work, but i have to check if now the ASPM issue under Linux is gone.

Edit: I found another way with the UEFI-shell and this tool:

With a little bit of work, i found the right command, here is a small guide (no guarantee, you do it on your own risk):

HowTo
Disabling PCIe root port #6, on ASUS Prime B360M-C, BIOS for version 3202 only!:
1. Create a bootable UEFI-shell USB stick with the setup_var.efi file on it
2. Launch a UEFI shell
3. Type: setup.var.efi 0xCA1 (for returning actual status)
4. Type: setup.var.efi 0xCA1 0X0 (for disabling the PCIe port #6, returns new status)
5. Reboot and check if the port is gone

hey :slight_smile:
thanks for sharing your analyze and solution. bought also a used b360 board for my home server and was confused by the package c-states, reached max. C3 but not lower than that.

I wouldn’t have figured out the root cause without you :slight_smile:

For others:
The provided UEFI shell commands are for version 0.2.0 of setup_var.efi. The config category is “setup”, which is auto-used in 0.2.0 when not providing one. In 0.3.0+ it’s a mandatory field.

Now my server goes up to C9 package c-state.