Category Archives: kernel

NUC7PJYH: Closing out Gentoo on the Intel NUC

Well, the NUC is done and everything to working. It is definitely not a speed demon, Geekbench scores prove it with a 158 Single-Core Score and 570 Multi-Core Score.

NUC: Gnome Screen
NUC: Gnome Overview with settings window, dash to dock, and workspaces to dock.

I did try Wayland, and it worked well except for my extensions, so I settled on X11.

I have placed the system configuration on Gitlab including: kernel config, hardware info, files installed, and all that good stuff that should make installation easier. The entire Gentoo install is about 14 Gig and that includes Libreoffice and Firefox binary packages.

Model: Apricorn SATAWire (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name    Flags
 1      1049kB  3146kB  2097kB  ext2            spacer  bios_grub
 2      3146kB  108MB   105MB   fat32           boot    boot, esp
 3      108MB   9772MB  9664MB  linux-swap(v1)  swap    swap
 4      9772MB  250GB   240GB   ext4            rootfs

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       456G   14G  442G   3% /
devtmpfs        3.5G     0  3.5G   0% /dev
tmpfs           3.5G     0  3.5G   0% /dev/shm
tmpfs           1.4G  1.5M  1.4G   1% /run
tmpfs           3.5G   72K  3.5G   1% /tmp
/dev/sda2       247M   16M  231M   7% /boot
tmpfs           712M   64K  712M   1% /run/user/997
tmpfs           712M   92K  712M   1% /run/user/1000

Everything is working for me: Ethernet, Wireless, Bluetooth, Video, Sound, USB, and SDCard Reader.

00:00.0 Host bridge: Intel Corporation Gemini Lake Host Bridge (rev 03)
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Gemini Lake Host Bridge
	Flags: bus master, fast devsel, latency 0

00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 605 (rev 03) (prog-if 00 [VGA controller])
	DeviceName: Onboard - Video
	Subsystem: Intel Corporation UHD Graphics 605
	Flags: bus master, fast devsel, latency 0, IRQ 135
	Memory at a0000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 90000000 (64-bit, prefetchable) [size=256M]
	I/O ports at f000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: [40] Vendor Specific Information: Len=0c <?>
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [d0] Power Management version 2
	Capabilities: [100] Process Address Space ID (PASID)
	Capabilities: [200] Address Translation Service (ATS)
	Capabilities: [300] Page Request Interface (PRI)
	Kernel driver in use: i915
	Kernel modules: i915

00:0c.0 Network controller: Intel Corporation AC 1550i Wireless (rev 03)
	DeviceName: Onboard - Ethernet
	Subsystem: Intel Corporation AC 1550i Wireless
	Flags: bus master, fast devsel, latency 0, IRQ 44
	Memory at a1314000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [c8] Power Management version 3
	Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [40] Express Root Complex Integrated Endpoint, MSI 00
	Capabilities: [80] MSI-X: Enable+ Count=16 Masked-
	Capabilities: [100] Null
	Capabilities: [14c] Latency Tolerance Reporting
	Capabilities: [164] Vendor Specific Information: ID=0010 Rev=0 Len=014 <?>
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi

00:0e.0 Audio device: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio (rev 03) (prog-if 80)
	DeviceName: Onboard - Sound
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio
	Flags: bus master, fast devsel, latency 0, IRQ 136
	Memory at a1310000 (64-bit, non-prefetchable) [size=16K]
	Memory at a1000000 (64-bit, non-prefetchable) [size=1M]
	Capabilities: [50] Power Management version 3
	Capabilities: [80] Vendor Specific Information: Len=14 <?>
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:0f.0 Communication controller: Intel Corporation Celeron/Pentium Silver Processor Trusted Execution Engine Interface (rev 03)
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor Trusted Execution Engine Interface
	Flags: bus master, fast devsel, latency 0, IRQ 125
	Memory at a131f000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [50] Power Management version 3
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [a4] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:12.0 SATA controller: Intel Corporation Celeron/Pentium Silver Processor SATA Controller (rev 03) (prog-if 01 [AHCI 1.0])
	DeviceName: Onboard - SATA
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor SATA Controller
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 124
	Memory at a1318000 (32-bit, non-prefetchable) [size=8K]
	Memory at a131e000 (32-bit, non-prefetchable) [size=256]
	I/O ports at f090 [size=8]
	I/O ports at f080 [size=4]
	I/O ports at f060 [size=32]
	Memory at a131d000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [70] Power Management version 3
	Capabilities: [a8] SATA HBA v1.0
	Kernel driver in use: ahci

00:13.0 PCI bridge: Intel Corporation Gemini Lake PCI Express Root Port (rev f3) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 122
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: [disabled]
	Memory behind bridge: a1200000-a12fffff [size=1M]
	Prefetchable memory behind bridge: [disabled]
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Intel Corporation Gemini Lake PCI Express Root Port
	Capabilities: [a0] Power Management version 3
	Capabilities: [100] Null
	Capabilities: [140] Access Control Services
	Capabilities: [150] Null
	Capabilities: [200] L1 PM Substates
	Kernel driver in use: pcieport

00:13.2 PCI bridge: Intel Corporation Gemini Lake PCI Express Root Port (rev f3) (prog-if 00 [Normal decode])
	Flags: bus master, fast devsel, latency 0, IRQ 123
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: 0000e000-0000efff [size=4K]
	Memory behind bridge: a1100000-a11fffff [size=1M]
	Prefetchable memory behind bridge: [disabled]
	Capabilities: [40] Express Root Port (Slot+), MSI 00
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
	Capabilities: [90] Subsystem: Intel Corporation Gemini Lake PCI Express Root Port
	Capabilities: [a0] Power Management version 3
	Capabilities: [100] Null
	Capabilities: [140] Access Control Services
	Capabilities: [150] Null
	Capabilities: [200] L1 PM Substates
	Kernel driver in use: pcieport

00:15.0 USB controller: Intel Corporation Celeron/Pentium Silver Processor USB 3.0 xHCI Controller (rev 03) (prog-if 30 [XHCI])
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor USB 3.0 xHCI Controller
	Flags: bus master, medium devsel, latency 0, IRQ 126
	Memory at a1300000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: [70] Power Management version 2
	Capabilities: [80] MSI: Enable+ Count=1/8 Maskable- 64bit+
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: xhci_hcd
	Kernel modules: xhci_pci

00:1c.0 SD Host controller: Intel Corporation Celeron/Pentium Silver Processor SDA Standard Compliant SD Host Controller (rev 03) (prog-if 01)
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor SDA Standard Compliant SD Host Controller
	Flags: bus master, fast devsel, latency 0, IRQ 39
	Memory at a131c000 (64-bit, non-prefetchable) [size=4K]
	Memory at a131b000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
	Capabilities: [90] Vendor Specific Information: Len=14 <?>
	Kernel driver in use: sdhci-pci
	Kernel modules: sdhci_pci

00:1f.0 ISA bridge: Intel Corporation Celeron/Pentium Silver Processor LPC Controller (rev 03)
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor LPC Controller
	Flags: bus master, medium devsel, latency 0

00:1f.1 SMBus: Intel Corporation Celeron/Pentium Silver Processor Gaussian Mixture Model (rev 03)
	DeviceName: Onboard - Other
	Subsystem: Intel Corporation Celeron/Pentium Silver Processor Gaussian Mixture Model
	Flags: medium devsel, IRQ 20
	Memory at a131a000 (64-bit, non-prefetchable) [size=256]
	I/O ports at f040 [size=32]
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801

01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)
	Subsystem: Intel Corporation RTS5229 PCI Express Card Reader
	Flags: bus master, fast devsel, latency 0, IRQ 127
	Memory at a1200000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Device Serial Number 00-00-00-01-00-4c-e0-00
	Kernel driver in use: rtsx_pci
	Kernel modules: rtsx_pci

02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
	DeviceName: Onboard - RTK Ethernet
	Subsystem: Intel Corporation RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
	Flags: bus master, fast devsel, latency 0, IRQ 20
	I/O ports at e000 [size=256]
	Memory at a1104000 (64-bit, non-prefetchable) [size=4K]
	Memory at a1100000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [40] Power Management version 3
	Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [70] Express Endpoint, MSI 01
	Capabilities: [b0] MSI-X: Enable+ Count=4 Masked-
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
	Capabilities: [170] Latency Tolerance Reporting
	Capabilities: [178] L1 PM Substates
	Kernel driver in use: r8169
	Kernel modules: r8169

NUC7PJYH: Intel UHD Graphics 605 A problem video problem on the way to happiness

The NUC J5005 uses built in Intel UHD Graphics 605 and I have it connected to a ViewSonic VG3448 34 Inch Ultra-Wide 21:9 WQHD. In the kernel config, it is configured as an i915. Short story, the first sign of problems is when the framebuffer is initialized which is followed by the first error:

fbcon: i915drmfb (fb0) is primary device
kernel: i915 0000:00:02.0: [drm] *ERROR* Invalid VCO
kernel: Console: switching to colour frame buffer device 430x90
kernel: i915 0000:00:02.0: [drm] *ERROR* Invalid VCO

There are follow on errors and X will not start. I fought this issue for a couple days then took it to work and try with a plain monitor (small Dell or something). Surprise! It worked perfect, so now I know it is a mismatch with my monitor. WTF?

So, I started with the 5.10.9 kernel and found the “Invalid VCO” is coming from intel_dpll_mgr.c.

static bool bxt_ddi_set_dpll_hw_state(struct intel_crtc_state *crtc_state, const struct bxt_clk_div *clk_div)
{
	struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
	struct intel_dpll_hw_state *dpll_hw_state = &crtc_state->dpll_hw_state;
	int clock = crtc_state->port_clock;
	int vco = clk_div->vco;
	u32 prop_coef, int_coef, gain_ctl, targ_cnt;
	u32 lanestagger;

	memset(dpll_hw_state, 0, sizeof(*dpll_hw_state));

	if (vco >= 6200000 && vco <= 6700000) {
		prop_coef = 4;
		int_coef = 9;
		gain_ctl = 3;
		targ_cnt = 8;
	} else if ((vco > 5400000 && vco < 6200000) ||
			(vco >= 4800000 && vco < 5400000)) {
		prop_coef = 5;
		int_coef = 11;
		gain_ctl = 3;
		targ_cnt = 9;
	} else if (vco == 5400000) {
		prop_coef = 3;
		int_coef = 8;
		gain_ctl = 1;
		targ_cnt = 9;
	} else {
		drm_err(&i915->drm, "Invalid VCO\n");
		return false;
	}
...

More poking around pointed to the i915 driver not being able to handle the data by monitor reported, so time to file an issue with the i915 driver group. Thanks to Ville Syrjälä who came back with a patch yesterday:

From 83e72257aca3386decb2b9d631c82e62732afd30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
Date: Tue, 2 Feb 2021 01:16:53 +0200
Subject: [PATCH] drm/i915: Reject 446-480MHz HDMI clock on GLK
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The BXT/GLK DPLL can't generate certain frequencies. We already
reject the 233-240MHz range on both. But on GLK the DPLL max
frequency was bumped from 300MHz to 594MHz, so now we get to
also worry about the 446-480MHz range (double the original
problem range). Reject any frequency within the higher
problematic range as well.

Cc: stable@vger.kernel.org
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3000
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 66e1ac3887c6..b593a71e6517 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2218,7 +2218,11 @@ hdmi_port_clock_valid(struct intel_hdmi *hdmi,
 					  has_hdmi_sink))
 		return MODE_CLOCK_HIGH;
 
-	/* BXT DPLL can't generate 223-240 MHz */
+	/* GLK DPLL can't generate 446-480 MHz */
+	if (IS_GEMINILAKE(dev_priv) && clock > 446666 && clock < 480000)
+		return MODE_CLOCK_RANGE;
+
+	/* BXT/GLK DPLL can't generate 223-240 MHz */
 	if (IS_GEN9_LP(dev_priv) && clock > 223333 && clock < 240000)
 		return MODE_CLOCK_RANGE;
 
-- 
2.26.2

I inserted the patch into the 5.10.12 kernel code and was back in business. The down side is I’ll have to remember to keep patching until it makes it into the kernel sources proper.

New toy – ASRock J3455-ITX

Part because of a mistake and part for fun, I purchased an ASRock J3455-ITX.  I tried to boot a couple different OSs without much luck, I could not get CoreOS to boot or even a Gentoo LiveCD. Granted, it is low power and slow, so it might have been my impatience. Finally, I tried a Gentoo minimal install DVD and it booted, so in the spirit of making something easy much harder this would be yet another Gentoo build.

System make up.

The system make up by the time it was done:

  • ASRock J3455-ITX Intel Quad-Core Processor J3455 (up to 2.3GHz) Mini ITX Motherboard/CPU Combo (Newegg)
  • Silverstone 0.8mm Steel Body Tek Acrylic Front Panel for Mini-ITX Media Center/HTPC Case Cases ML05B (Amazon)
  • SilverStone Technology 300W SFX Form Factor 80 PLUS BRONZE Power Supply with +12V single rail, Active PFC (ST30SF) (Amazon)
  • Timetec Hynix IC 16GB Kit (2x8GB) DDR3L 1866MHz PC3-14900 Unbuffered Non-ECC 1.35V CL13 2Rx8 Dual Rank 204 Pin SODIMM Apple Memory RAM Module Upgrade (16GB Kit (2x8GB)) (Amazon) Returning to Amazon
  • G.SKILL 8GB (2 x 4GB) 204-Pin DDR3 SO-DIMM DDR3 1333 (PC3 10666) Laptop Memory Model F3-10666CL9D-8GBSQ (Newegg)
  • SAMSUNG 850 EVO 2.5″ 250GB SATA III 3D NAND Internal Solid State Drive (SSD) MZ-75E250B/AM (Had this from an old system)

BIOS Version J3455-ITX, BIOS P1.60 01/16/2018 – Out of the box BIOS version.

BIOS Update

Here is the catch, on the ASRock site it lists 1.40 then jumps to 1.70 as a bridge before installing 1.80. I tried the 1.70 from a fat32 USB and the board would not recognize the firmware. So screw it, I just went to 1.80 and it worked. I have to assume the 1.60 is already a bridge to 1.80.

Cooling

Probably will not put a fan in because the passive cooling seems to work well.  There are two fan connections on the board (CPU and chassis) and settings in the board configuration. Compiling webkit, which is a grind, the temps 30+ minutes into compiling webkit:

coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +131.0°F (high = +221.0°F, crit = +221.0°F)
Core 0: +131.0°F (high = +221.0°F, crit = +221.0°F)
Core 1: +131.0°F (high = +221.0°F, crit = +221.0°F)
Core 2: +129.2°F (high = +221.0°F, crit = +221.0°F)
Core 3: +129.2°F (high = +221.0°F, crit = +221.0°F)
acpitz-virtual-0
Adapter: Virtual device
temp1: +132.8°F (crit = +212.0°F)

Memory

This is a real BS point. ASRock and a number of other board manufacturers advertise 16 Gig of RAM usable. I read all over the internet this thing can run with 16 Gig. I gave it a try and everything SEEMED to work.

I gave it a shot (see above in System makeup) using 16 Gig (8×2) DDR3L 1866 RAM. Like I already said, it seemed to work, but under heavy loads I got random kernel panics (Kernel 4.18.20), usually SMP NOPTI and sometimes even more spectacular blow ups. I was thinking bad RAM module? Anyway, I pulled a module and ran 8 Gig with the result that I cannot kill it with any load. A quick check of the Intel J3455 Datasheet says only an 8 Gig MAX:

In ASRock’s Memory Support List, only DDR3 Crucial 1600 16GB CT204864BF160B is listed for this configuration. So, in conclusion it might run with 16 Gig, but not always. I do not care, I really only need 8Gig and can return the other RAM to Amazon, saving some money.

EDIT:  I have since read that the board might not be automatically powering the RAM or the RAM is not quite right. A possible fix might be to take the board out if AUTO and increasing the voltage or lowering the speed. I have not tried this …

Hardware Error

This is my real hard spot with this board:

mce: [Hardware Error]: CPU 0: Machine Check: 0 Bank 4: e600000000020408
mce: [Hardware Error]: TSC 0 ADDR fef13b80
mce: [Hardware Error]: PROCESSOR 0:506c9 TIME 1543272637 SOCKET 0 APIC 0 microcode 32

This seems to be common on all the ASRock boards and a lengthy Redhat (here) post gets to the source. The most interesting:

Tony Luck 2017-08-02 13:15:00 EDT
I wrote a trivial EFI program to dump the machine check banks and put it on a USB stick a \EFI\BOOT\BOOTX64.EFI, then booted that USB stick.

The machine check was already logged at this point.

So Linux (and grub boot loader) aren’t involved. Tracking with someone who supports BIOS on this platform now.

So, this is some kind of issue with the BIOS and during boot it picks up on the already existing error. Intel NUC Kits also had this problem, but fixed it in the BIOS. It seems to be a problem that probably will not go away, but does not cause issues.