Jump to content

[80% Solved] Iris Xe iGPU on Tiger Lake successfully loaded ICLLP Frambuffer and VRAM also recognizes 1536MB! + However, some issues.


shl628
258 posts in this topic

Recommended Posts

Posted (edited)

1. Regarding the problem of booting stopping when using NBlue

 

@sergANt The screen where the booting has stopped is the same as mine.
When I boot with NBlue applied, booting stops at the part where KextLog and AuxiliaryKernelExtensions.kc are loaded.

Also, I don't think Lilu is causing the boot freeze issue.

 

AuxiliaryKernelExtensions.kc contains iGPU Kext Drivers, and when loaded, Initialization of the graphics driver begins.
In the process, logic to check the currently set CD Clock Frequency is built into the ICL Kext Drivers.
If the CD Clock Frequency is set to less than 648 MHz, an Unsupported CD Clock Frequency kernel panic will occur.

The important thing here is that Unsupported CD Clock Frequency kernel panic is not visible in the screen log.
It just stops booting.

 

Even if I force the CD Clock Frequency to be higher than 648 MHz in BIOS settings using RU.efi, I still need WEG's -igfxcdc boot arg.
So, when I check the log by applying -wegdbg boot arg, I clearly used RU.efi to force the CD Clock Frequency in the BIOS settings to be higher than 648 MHz,

but looking at the log of WEG's CDC patch module, the current log will be displayed showing that the CD Clock is set to 172.8 MHz.

[   19.927145]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: Called with controller at 0xffffff90600c8000.
[   19.927148]: WhateverGreen      igfx: @ CDC: ProbeCDClockFrequency() DInfo: The current core display clock frequency is 172.8 MHz.
[   19.927150]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The currrent core display clock frequency is not supported.
[   19.927152]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Reference frequency is 38.4 MHz.
[   19.927154]: WhateverGreen      igfx: @ CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock frequency will be set to 652.8 MHz.
[   19.927156]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock PLL frequency will be set to 1305600000 Hz.
[   19.928386]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock PLL has been disabled.
[   19.930839]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock has been reprogrammed and PLL has been re-enabled.
[   19.930849]: WhateverGreen      igfx: @ CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock frequency is 652.8 MHz now.
[   19.930853]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The core display clock has been switched to a supported frequency.
[   19.930857]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: Will invoke the original function.
[   19.930861]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The original function returns 0x4dd1e000.

I'm not sure why either... 🥹
Probably, I think it varies from laptop to laptop, with some laptop models setting the CD Clock Frequency to a high default value in the BIOS settings, while others have it set to a low default setting.

 


2. About DevirtualiseMmio Quirk

 

In the past, I was able to boot even if I turned off the DevirtualiseMmio option.
However, if I use RU.efi and set the DVMT Pre-Allocated Memory in BIOS settings to 96MB, 128MB, or 160MB or more than 64MB, macOS does not boot.
macOS does not output an error log, does not cause a kernel panic, and suddenly reboots in the early boot process.
And, when I changed the DVMT Pre-Allocated Memory to 64MB, there was no rebooting problem and it booted.
If I change it to 96MB or more, it suddenly reboots during the early booting process.

 

So, I turned on DevirtualiseMmio in the Booter - Quirks option, and it booted without a reboot problem even if I changed the DVMT Pre-Allocated Memory to 96MB or more.
Perhaps, I think, changing the DVMT Pre-Allocated Memory setting causes some changes to the Memory Map (MMIO).
Of course, this may vary depending on the laptop manufacturer, model, and firmware.

 

For reference, if DVMT Pre-Allocated Memory is set to 64MB on actual Ice Lake laptops, QE/CI graphics acceleration will be enabled, but mouse cursor glitches will occur.
There are cases where the mouse cursor glitch problem was solved by changing the DVMT Pre-Allocated Memory from 64MB to 128MB, 160MB, etc.

 

And, when I changed the DVMT Pre Allocated Memory from 64MB to 160 MB, the "[IGFB][ERROR][DISPLAY] Insufficient stolen memory" log disappeared.

Edited by shl628
Link to comment
Share on other sites

27 minutes ago, shl628 said:

1. Regarding the problem of booting stopping when using NBlue

 

@sergANt The screen where the booting has stopped is the same as mine.
When I boot with NBlue applied, booting stops at the part where KextLog and AuxiliaryKernelExtensions.kc are loaded.

Also, I don't think Lilu is causing the boot freeze issue.

 

AuxiliaryKernelExtensions.kc contains iGPU Kext Drivers, and when loaded, Initialization of the graphics driver begins.
In the process, logic to check the currently set CD Clock Frequency is built into the ICL Kext Drivers.
If the CD Clock Frequency is set to less than 648 MHz, an Unsupported CD Clock Frequency kernel panic will occur.

The important thing here is that Unsupported CD Clock Frequency kernel panic is not visible in the screen log.
It just stops booting.

 

Even if I force the CD Clock Frequency to be higher than 648 MHz in BIOS settings using RU.efi, I still need WEG's -igfxcdc boot arg.
So, when I check the log by applying -wegdbg boot arg, I clearly used RU.efi to force the CD Clock Frequency in the BIOS settings to be higher than 648 MHz,

but looking at the log of WEG's CDC patch module, the current A log will be displayed showing that the CD Clock is set to 172.8 MHz.

[   19.927145]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: Called with controller at 0xffffff90600c8000.
[   19.927148]: WhateverGreen      igfx: @ CDC: ProbeCDClockFrequency() DInfo: The current core display clock frequency is 172.8 MHz.
[   19.927150]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The currrent core display clock frequency is not supported.
[   19.927152]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Reference frequency is 38.4 MHz.
[   19.927154]: WhateverGreen      igfx: @ CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock frequency will be set to 652.8 MHz.
[   19.927156]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock PLL frequency will be set to 1305600000 Hz.
[   19.928386]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock PLL has been disabled.
[   19.930839]: WhateverGreen      igfx: @ (DBG) CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock has been reprogrammed and PLL has been re-enabled.
[   19.930849]: WhateverGreen      igfx: @ CDC: sanitizeCDClockFrequency() DInfo: Core Display Clock frequency is 652.8 MHz now.
[   19.930853]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The core display clock has been switched to a supported frequency.
[   19.930857]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: Will invoke the original function.
[   19.930861]: WhateverGreen      igfx: @ (DBG) CDC: ProbeCDClockFrequency() DInfo: The original function returns 0x4dd1e000.

I'm not sure why either... 🥹
Probably, I think it varies from laptop to laptop, with some laptop models setting the CD Clock Frequency to a high default value in the BIOS settings, while others have it set to a low default setting.

 


2. About DevirtualiseMmio Quirk

 

In the past, I was able to boot even if I turned off the DevirtualiseMmio option.
However, if I use RU.efi and set the DVMT Pre-Allocated Memory in BIOS settings to 96MB, 128MB, or 160MB or more than 64MB, macOS does not boot.
macOS does not output an error log, does not cause a kernel panic, and suddenly reboots in the early boot process.
And, when I changed the DVMT Pre-Allocated Memory to 64MB, there was no rebooting problem and it booted.
If I change it to 96MB or more, it suddenly reboots during the early booting process.

 

So, I turned on DevirtualiseMmio in the Booter - Quirks option, and it booted without a reboot problem even if I changed the DVMT Pre-Allocated Memory to 96MB or more.
Perhaps, I think, changing the DVMT Pre-Allocated Memory setting causes some changes to the Memory Map (MMIO).
Of course, this may vary depending on the laptop manufacturer, model, and firmware.

 

For reference, if DVMT Pre-Allocated Memory is set to 64MB on actual Ice Lake laptops, QE/CI graphics acceleration will be enabled, but mouse cursor glitches will occur.
There are cases where the mouse cursor glitch problem was solved by changing the DVMT Pre-Allocated Memory from 64MB to 128MB, 160MB, etc.

 

And, when I changed the DVMT Pre Allocated Memory from 64MB to 160 MB, the "[IGFB][ERROR][DISPLAY] Insufficient stolen memory" log disappeared.

i horribly can only go up to 64mb dvmt pre-allocated memory on my laptop and i've never used RU.efi and don't know ANYTHING about using it nor uefi editing whatsoever, so expecting to follow a guide or youtube tutorial on it, not gonna work. Unless someone was to go on a discord call OR facetime call to help walk me through it, im not gonna be able to do so tbh. 

Link to comment
Share on other sites

Posted (edited)

i patched the nblue default ig-platform settings and got rid of some of those cd clocks and memory bugs. but i guess won't work for all laptops

workaround is try another device-id and ig-platform using opencore device settings

best idea is try whatevergreen with some settings for cd clock, etc

then i can add some of those patches as default to nblue

 

whatevegreen patches assume ice lake values but linux handles all displays.

void intel_init_cdclk_hooks(struct drm_i915_private *dev_priv)
{
	if (DISPLAY_VER(dev_priv) >= 20) {
		dev_priv->display.funcs.cdclk = &mtl_cdclk_funcs;
		dev_priv->display.cdclk.table = lnl_cdclk_table;
	} else if (DISPLAY_VER(dev_priv) >= 14) {
		dev_priv->display.funcs.cdclk = &mtl_cdclk_funcs;
		dev_priv->display.cdclk.table = mtl_cdclk_table;
	} else if (IS_DG2(dev_priv)) {
		dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
		dev_priv->display.cdclk.table = dg2_cdclk_table;
	} else if (IS_ALDERLAKE_P(dev_priv)) {
		/* Wa_22011320316:adl-p[a0] */
		if (IS_ALDERLAKE_P(dev_priv) && IS_DISPLAY_STEP(dev_priv, STEP_A0, STEP_B0)) {
			dev_priv->display.cdclk.table = adlp_a_step_cdclk_table;
			dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
		} else if (IS_RAPTORLAKE_U(dev_priv)) {
			dev_priv->display.cdclk.table = rplu_cdclk_table;
			dev_priv->display.funcs.cdclk = &rplu_cdclk_funcs;
		} else {
			dev_priv->display.cdclk.table = adlp_cdclk_table;
			dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
		}
	} else if (IS_ROCKETLAKE(dev_priv)) {
		dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
		dev_priv->display.cdclk.table = rkl_cdclk_table;
	} else if (DISPLAY_VER(dev_priv) >= 12) {
		dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
		dev_priv->display.cdclk.table = icl_cdclk_table;
	} else if (IS_JASPERLAKE(dev_priv) || IS_ELKHARTLAKE(dev_priv)) {
		dev_priv->display.funcs.cdclk = &ehl_cdclk_funcs;
		dev_priv->display.cdclk.table = icl_cdclk_table;
	} else if (DISPLAY_VER(dev_priv) >= 11) {
		dev_priv->display.funcs.cdclk = &icl_cdclk_funcs;
		dev_priv->display.cdclk.table = icl_cdclk_table;
	} else if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) {
		dev_priv->display.funcs.cdclk = &bxt_cdclk_funcs;
		if (IS_GEMINILAKE(dev_priv))
			dev_priv->display.cdclk.table = glk_cdclk_table;
		else
			dev_priv->display.cdclk.table = bxt_cdclk_table;
	} else if (DISPLAY_VER(dev_priv) == 9) {
		dev_priv->display.funcs.cdclk = &skl_cdclk_funcs;
	} else if (IS_BROADWELL(dev_priv)) {
		dev_priv->display.funcs.cdclk = &bdw_cdclk_funcs;
	} else if (IS_HASWELL(dev_priv)) {
		dev_priv->display.funcs.cdclk = &hsw_cdclk_funcs;
	} else if (IS_CHERRYVIEW(dev_priv)) {
		dev_priv->display.funcs.cdclk = &chv_cdclk_funcs;
	} else if (IS_VALLEYVIEW(dev_priv)) {
		dev_priv->display.funcs.cdclk = &vlv_cdclk_funcs;
	} else if (IS_SANDYBRIDGE(dev_priv) || IS_IVYBRIDGE(dev_priv)) {
		dev_priv->display.funcs.cdclk = &fixed_400mhz_cdclk_funcs;
	} else if (IS_IRONLAKE(dev_priv)) {
		dev_priv->display.funcs.cdclk = &ilk_cdclk_funcs;
	} else if (IS_GM45(dev_priv)) {
		dev_priv->display.funcs.cdclk = &gm45_cdclk_funcs;
	} else if (IS_G45(dev_priv)) {
		dev_priv->display.funcs.cdclk = &g33_cdclk_funcs;
	} else if (IS_I965GM(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i965gm_cdclk_funcs;
	} else if (IS_I965G(dev_priv)) {
		dev_priv->display.funcs.cdclk = &fixed_400mhz_cdclk_funcs;
	} else if (IS_PINEVIEW(dev_priv)) {
		dev_priv->display.funcs.cdclk = &pnv_cdclk_funcs;
	} else if (IS_G33(dev_priv)) {
		dev_priv->display.funcs.cdclk = &g33_cdclk_funcs;
	} else if (IS_I945GM(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i945gm_cdclk_funcs;
	} else if (IS_I945G(dev_priv)) {
		dev_priv->display.funcs.cdclk = &fixed_400mhz_cdclk_funcs;
	} else if (IS_I915GM(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i915gm_cdclk_funcs;
	} else if (IS_I915G(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i915g_cdclk_funcs;
	} else if (IS_I865G(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i865g_cdclk_funcs;
	} else if (IS_I85X(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i85x_cdclk_funcs;
	} else if (IS_I845G(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i845g_cdclk_funcs;
	} else if (IS_I830(dev_priv)) {
		dev_priv->display.funcs.cdclk = &i830_cdclk_funcs;
	}

	if (drm_WARN(&dev_priv->drm, !dev_priv->display.funcs.cdclk,
		     "Unknown platform. Assuming i830\n"))
		dev_priv->display.funcs.cdclk = &i830_cdclk_funcs;
}

this means for some displays it just wont work

 

maybe i just change whatevergreen code so i does this for gen11

static void bxt_get_cdclk(struct drm_i915_private *dev_priv,
			  struct intel_cdclk_config *cdclk_config)
{
	u32 squash_ctl = 0;
	u32 divider;
	int div;

	bxt_de_pll_readout(dev_priv, cdclk_config);

	if (DISPLAY_VER(dev_priv) >= 12)
		cdclk_config->bypass = cdclk_config->ref / 2;
	else if (DISPLAY_VER(dev_priv) >= 11)
		cdclk_config->bypass = 50000;
	else
		cdclk_config->bypass = cdclk_config->ref;

	if (cdclk_config->vco == 0) {
		cdclk_config->cdclk = cdclk_config->bypass;
		goto out;
	}

	divider = intel_de_read(dev_priv, CDCLK_CTL) & BXT_CDCLK_CD2X_DIV_SEL_MASK;

	switch (divider) {
	case BXT_CDCLK_CD2X_DIV_SEL_1:
		div = 2;
		break;
	case BXT_CDCLK_CD2X_DIV_SEL_1_5:
		div = 3;
		break;
	case BXT_CDCLK_CD2X_DIV_SEL_2:
		div = 4;
		break;
	case BXT_CDCLK_CD2X_DIV_SEL_4:
		div = 8;
		break;
	default:
		MISSING_CASE(divider);
		return;
	}

	if (HAS_CDCLK_SQUASH(dev_priv))
		squash_ctl = intel_de_read(dev_priv, CDCLK_SQUASH_CTL);

	if (squash_ctl & CDCLK_SQUASH_ENABLE) {
		u16 waveform;
		int size;

		size = REG_FIELD_GET(CDCLK_SQUASH_WINDOW_SIZE_MASK, squash_ctl) + 1;
		waveform = REG_FIELD_GET(CDCLK_SQUASH_WAVEFORM_MASK, squash_ctl) >> (16 - size);

		cdclk_config->cdclk = DIV_ROUND_CLOSEST(hweight16(waveform) *
							cdclk_config->vco, size * div);
	} else {
		cdclk_config->cdclk = DIV_ROUND_CLOSEST(cdclk_config->vco, div);
	}

 out:
	/*
	 * Can't read this out :( Let's assume it's
	 * at least what the CDCLK frequency requires.
	 */
	cdclk_config->voltage_level =
		intel_cdclk_calc_voltage_level(dev_priv, cdclk_config->cdclk);
}

 

Edited by jalavoui
Link to comment
Share on other sites

Just now, jalavoui said:

i patched the nblue default ig-platform settings and got rid of some of those cd clocks and memory bugs. but i guess won't work for all laptops

workaround is try another device-id and ig-platform using opencore device settings

best idea is try whatevergreen with some settings for cd clock, etc

 

right, well, i've checked the whatevergreen faq up and down, none of the device-id and ig-platform settings get it to load properly, literally none. Idk what to try at this point, nor cd clock, nothing. idk what to do.

Link to comment
Share on other sites

Are you using windows to setup the installer USB for Ventura, that's not the recommended way, in order to ensure file and folder integrity when setting up the USB, It might be better to use the ventura vm floating around out there, then you will be able to use hackintool etc to setup your USB.

If you are using windows and the cvad tool to download the ventura recovery, it had issues with 13.6.5 for some people after they attempt to use the hfs recovery file. And support was dropped for that tool as well.

Once you are able to boot with the installer fully and it goes all the way to the install gui, you can then back up any important files, then copy those onto the same install USB, also make sure wifi is seen and working in the installer, so that when you use hackintool after it is installed it will be fine, it is also a good idea to get a copy of Firefox beforehand as without metal acceleration you will find using safari difficult, entire pages won't show so you won't even be able to click on the correct screens

Link to comment
Share on other sites

Posted (edited)
15 hours ago, shl628 said:

AuxiliaryKernelExtensions.kc contains iGPU Kext Drivers, and when loaded, Initialization of the graphics driver begins.
In the process, logic to check the currently set CD Clock Frequency is built into the ICL Kext Drivers.
If the CD Clock Frequency is set to less than 648 MHz, an Unsupported CD Clock Frequency kernel panic will occur.

The important thing here is that Unsupported CD Clock Frequency kernel panic is not visible in the screen log.
It just stops booting.

 

Hi shl628.

It looks like that. 
Today, using the latest NootedBlue, the boot hang with an error related to the CD Clock Frequency. In my BIOS parameters, it is set to 652.8 MHz.

 

  jalavoui, with latest NootedBlue.kext  the boot hang even if i remove my iGPU id from kext config.

 

 

image.thumb.jpeg.91d88f46fb5fabb76ad95b4e41aee901.jpeg

 

photo_2024-05-11_18-52-05.thumb.jpg.954b21c8b866fff51165deb04b9e2c93.jpg

 

 

15 hours ago, benmacfreak said:

i horribly can only go up to 64mb dvmt pre-allocated memory on my laptop and i've never used RU.efi and don't know ANYTHING about using it nor uefi editing whatsoever, so expecting to follow a guide or youtube tutorial on it, not gonna work. Unless someone was to go on a discord call OR facetime call to help walk me through it, im not gonna be able to do so tbh. 

 

Maybe you don`t need  to use RU.efi.

Try to search in your BIOS indicated params and set it same.

 

If you couldn't find this parameters try to activate all bios settings.

For MSI laptops, you need to enter BIOS and press a combination right CTRL + right SHIFT + left ALT + F2 to access to all settings.

Perhaps Asus laptops have something similar.

 

If you still need to edit the BIOS, there's a guide. This a procedure guide. If you use it, need search and edit other variables.  AT YOUR OWN RISK!

 

Edited by sergANt
Link to comment
Share on other sites

The KP is saying that it is related to applesmc, there are some calls that applesmc makes based on the smbios value being used, read the thread from the beginning to get a better understanding, have you tried macbookair9,1 or macbookpro14,1? Using fakesmc could also be an option, however I never got it to work.

Your bios settings are showing other values that could be modified, one of your dvmt values should be set to max, there are a few others

Link to comment
Share on other sites

Posted (edited)

added cd clock similiar patch

test also with whatevergreen patch (not the same)

i think this code only works for icl family displays

 

why? cause of this code

void __thiscall
AppleIntelFramebufferController::setCDClockFrequency
          (AppleIntelFramebufferController *this,ulonglong param_1)

{
  byte bVar1;
  uint uVar2;
  long lVar3;
  int iVar4;
  
  _DAT_0010b828 = _DAT_0010b828 + 1;
  hwWriteMailbox(this,7,3,false);
  if ((long)param_1 < 0x42603000) {
    if (param_1 == 0x249f0000) {
      _DAT_0010b838 = _DAT_0010b838 + 1;
    }
    else {
      if (param_1 != 624000000) {
        if (param_1 != 0x41cdb400) {
LAB_00083ef8:
          _DAT_0010b868 = _DAT_0010b868 + 1;
          _kprintf("[IGFB][ERROR][%-10s] Invalid CD clock frequency %llu\n","DISPLAY",param_1);
          goto LAB_00083f17;
        }
        _DAT_0010b850 = _DAT_0010b850 + 1;
        goto LAB_00083ee8;
      }
      _DAT_0010b840 = _DAT_0010b840 + 1;
    }
    lVar3 = 0;
  }
  else {
    if (param_1 != 0x42603000) {
      if (param_1 == 0x4d3f6400) {
        _DAT_0010b860 = _DAT_0010b860 + 1;
      }
      else {
        if (param_1 != 0x4dd1e000) goto LAB_00083ef8;
        _DAT_0010b858 = _DAT_0010b858 + 1;
      }
LAB_00083f17:
      lVar3 = 2;
      goto LAB_00083f1c;
    }
    _DAT_0010b848 = _DAT_0010b848 + 1;
LAB_00083ee8:
    lVar3 = 1;
  }
LAB_00083f1c:
  _DAT_0010b830 = _DAT_0010b830 + 1;
  bVar1 = (&fPllRatioCdClkPair)
          [lVar3 * 0xc +
           (ulong)*(uint *)&(this->m_AppleIntelFramebufferController).field_0xe90 * 0x24];
  WriteRegister32(this,0x46070,(uint)bVar1);
  WriteRegister32(this,0x46070,bVar1 | 0x80000000);
  iVar4 = 200;
  do {
    _DAT_0010b870 = _DAT_0010b870 + 1;
    uVar2 = ReadRegister32(this,0x46070);
    if ((uVar2 >> 0x1e & 1) != 0) {
      _DAT_0010b878 = _DAT_0010b878 + 1;
      _DAT_0010b890 = _DAT_0010b890 + 1;
      __os_log_internal(0,PTR___os_log_default_000eb0b0,0,
                        "[IGFB][LOG  ][%-10s] CD Clock PLL is locked\n","DISPLAY");
      uVar2 = ReadRegister32(this,0x46000);
      WriteRegister32(this,0x46000,
                      (*(uint *)(&UNK_000b0904 +
                                lVar3 * 0xc +
                                (ulong)*(uint *)&(this->m_AppleIntelFramebufferController).
                                                 field_0xe90 * 0x24) & 0x7ff) + (uVar2 & 0xff07f800)
                      + 0x380000);
      *(ulonglong *)&(this->m_AppleIntelFramebufferController).field_0xe80 = param_1;
      uVar2 = calculateVoltageLevel();
      hwWriteMailbox(this,7,uVar2,false);
      return;
    }
    _IODelay(1);
    iVar4 = iVar4 + -1;
  } while (iVar4 != 0);
  _DAT_0010b880 = _DAT_0010b880 + 1;
  _DAT_0010b888 = _DAT_0010b888 + 1;
                    /* WARNING: Subroutine does not return */
  _panic("\"[IGFB][PANIC][%-9s] \" \"CD clock PLL lock failed\\n\" @%s:%d","DISPLAY",
         "AppleIntelClocks.cpp",0x55);
}

this means that for unsupported displays more patches will be needed

 

 

 

btw i also got a hang with no panic

it was caused by a bad function definition inside nblue that caused lilu (or nblue) to hang

it was here

{"__ZN31AppleIntelFramebufferController14ReadRegister32Em",orapReadRegister32,    this->owrapReadRegister32},

should be

{"__ZN31AppleIntelFramebufferController14ReadRegister32Em",wrapReadRegister32,    this->owrapReadRegister32},

i think i have more of this bugs in nblue to catch

 

there's a patch for ppl who have 4k display laptops

if you have one of those don't tell me

 

Edited by jalavoui
  • Like 1
Link to comment
Share on other sites

1 hour ago, jalavoui said:

added cd clock similiar patch

test also with whatevergreen patch (not the same)

i think this code only works for icl family displays

 

why? cause of this code

void __thiscall
AppleIntelFramebufferController::setCDClockFrequency
          (AppleIntelFramebufferController *this,ulonglong param_1)

{
  byte bVar1;
  uint uVar2;
  long lVar3;
  int iVar4;
  
  _DAT_0010b828 = _DAT_0010b828 + 1;
  hwWriteMailbox(this,7,3,false);
  if ((long)param_1 < 0x42603000) {
    if (param_1 == 0x249f0000) {
      _DAT_0010b838 = _DAT_0010b838 + 1;
    }
    else {
      if (param_1 != 624000000) {
        if (param_1 != 0x41cdb400) {
LAB_00083ef8:
          _DAT_0010b868 = _DAT_0010b868 + 1;
          _kprintf("[IGFB][ERROR][%-10s] Invalid CD clock frequency %llu\n","DISPLAY",param_1);
          goto LAB_00083f17;
        }
        _DAT_0010b850 = _DAT_0010b850 + 1;
        goto LAB_00083ee8;
      }
      _DAT_0010b840 = _DAT_0010b840 + 1;
    }
    lVar3 = 0;
  }
  else {
    if (param_1 != 0x42603000) {
      if (param_1 == 0x4d3f6400) {
        _DAT_0010b860 = _DAT_0010b860 + 1;
      }
      else {
        if (param_1 != 0x4dd1e000) goto LAB_00083ef8;
        _DAT_0010b858 = _DAT_0010b858 + 1;
      }
LAB_00083f17:
      lVar3 = 2;
      goto LAB_00083f1c;
    }
    _DAT_0010b848 = _DAT_0010b848 + 1;
LAB_00083ee8:
    lVar3 = 1;
  }
LAB_00083f1c:
  _DAT_0010b830 = _DAT_0010b830 + 1;
  bVar1 = (&fPllRatioCdClkPair)
          [lVar3 * 0xc +
           (ulong)*(uint *)&(this->m_AppleIntelFramebufferController).field_0xe90 * 0x24];
  WriteRegister32(this,0x46070,(uint)bVar1);
  WriteRegister32(this,0x46070,bVar1 | 0x80000000);
  iVar4 = 200;
  do {
    _DAT_0010b870 = _DAT_0010b870 + 1;
    uVar2 = ReadRegister32(this,0x46070);
    if ((uVar2 >> 0x1e & 1) != 0) {
      _DAT_0010b878 = _DAT_0010b878 + 1;
      _DAT_0010b890 = _DAT_0010b890 + 1;
      __os_log_internal(0,PTR___os_log_default_000eb0b0,0,
                        "[IGFB][LOG  ][%-10s] CD Clock PLL is locked\n","DISPLAY");
      uVar2 = ReadRegister32(this,0x46000);
      WriteRegister32(this,0x46000,
                      (*(uint *)(&UNK_000b0904 +
                                lVar3 * 0xc +
                                (ulong)*(uint *)&(this->m_AppleIntelFramebufferController).
                                                 field_0xe90 * 0x24) & 0x7ff) + (uVar2 & 0xff07f800)
                      + 0x380000);
      *(ulonglong *)&(this->m_AppleIntelFramebufferController).field_0xe80 = param_1;
      uVar2 = calculateVoltageLevel();
      hwWriteMailbox(this,7,uVar2,false);
      return;
    }
    _IODelay(1);
    iVar4 = iVar4 + -1;
  } while (iVar4 != 0);
  _DAT_0010b880 = _DAT_0010b880 + 1;
  _DAT_0010b888 = _DAT_0010b888 + 1;
                    /* WARNING: Subroutine does not return */
  _panic("\"[IGFB][PANIC][%-9s] \" \"CD clock PLL lock failed\\n\" @%s:%d","DISPLAY",
         "AppleIntelClocks.cpp",0x55);
}

this means that for unsupported displays more patches will be needed

 

  NootedBlue.kext.zip 30.28 kB · 3 downloads NootedBlue-master.zip 369.82 kB · 0 downloads

 

btw i also got a hang with no panic

it was caused by a bad function definition inside nblue that caused lilu (or nblue) to hang

it was here

{"__ZN31AppleIntelFramebufferController14ReadRegister32Em",orapReadRegister32,    this->owrapReadRegister32},

should be

{"__ZN31AppleIntelFramebufferController14ReadRegister32Em",wrapReadRegister32,    this->owrapReadRegister32},

i think i have more of this bugs in nblue to catch

 

there's a patch for ppl who have 4k display laptops

if you have one of those don't tell me

 

i just tried it on my laptop, booted into 13.6.5, that's all i know rn

Link to comment
Share on other sites

Posted (edited)

cool now that you can boot try wahtevergreen with some device properties or  nblue with no device props

 

there's also a way to disable PEG1 with device properties (this helps a lot as the gpu just vanish from ioreg)

add boolean variable disable-gpu=yes

 

info.plist with no edid injection migth work for you

like this

image.png.d0a22891956b0749404b7a8b38c7bfd7.png

and maybe boot with

-v keepsyms=1 debug=0x100  agdpmod=pikera

 

you have a VoodooGPIOTigerLakeH device hmmm

try i2c kext posted above

no keyboard ?

i dont see tpad device. is xosi patch working ?

 

only if system is unstable change csr-config and security

 

wifi+bluettoth are possible to setup with right kexts

 

that's all i can see for now

 

to get a lot after boot open terminal paste

log show --style syslog --predicate 'processID == 0' --last 1h --info --debug  > x.log

you get a file x.log on home folder

 

i fixed some acpi errors

here's my latest 

EFI.zip

 

for those with displays that attach to framebuffer 0 try swap connector to frame 1

that avoids lcd+power code that prevents display to work

todo so 1st check logs. if the display attaches to frame 0 then better swap connectors

i have it in nblue reversed order but same logic

Edited by jalavoui
  • Like 1
Link to comment
Share on other sites

2 minutes ago, jalavoui said:

cool now that you can boot try wahtevergreen with some device properties or  nblue with no device props

i did with nblue and none, i get a hang, and i wasnt sure what device properties to add with whatevergreen. the ones from skl628's config didnt yield any better nor did any of the ones from the whatevergreen faq on github.

Link to comment
Share on other sites

Posted (edited)
4 hours ago, jalavoui said:

cool now that you can boot try wahtevergreen with some device properties or  nblue with no device props

 

there's also a way to disable PEG1 with device properties (this helps a lot as the gpu just vanish from ioreg)

add boolean variable disable-gpu=yes

 

info.plist with no edid injection migth work for you

like this

image.png.d0a22891956b0749404b7a8b38c7bfd7.png

and maybe boot with

-v keepsyms=1 debug=0x100  agdpmod=pikera

 

you have a VoodooGPIOTigerLakeH device hmmm

try i2c kext posted above

no keyboard ?

i dont see tpad device. is xosi patch working ?

 

only if system is unstable change csr-config and security

 

wifi+bluettoth are possible to setup with right kexts

 

that's all i can see for now

 

to get a lot after boot open terminal paste

log show --style syslog --predicate 'processID == 0' --last 1h --info --debug  > x.log

you get a file x.log on home folder

 

i fixed some acpi errors

here's my latest 

EFI.zip 18.55 kB · 3 downloads

 

for those with displays that attach to framebuffer 0 try swap connector to frame 1

that avoids lcd+power code that prevents display to work

todo so 1st check logs. if the display attaches to frame 0 then better swap connectors

i have it in nblue reversed order but same logic

i just tried those device properties, no luck, but i did get past either -v OR the apple logo and it's at a blank screen that's it with nblue.

Edited by benmacfreak
nblue
Link to comment
Share on other sites

Posted (edited)
11 hours ago, jalavoui said:

cool now that you can boot try wahtevergreen with some device properties or  nblue with no device props

 

there's also a way to disable PEG1 with device properties (this helps a lot as the gpu just vanish from ioreg)

add boolean variable disable-gpu=yes

 

info.plist with no edid injection migth work for you

like this

image.png.d0a22891956b0749404b7a8b38c7bfd7.png

and maybe boot with

-v keepsyms=1 debug=0x100  agdpmod=pikera

 

you have a VoodooGPIOTigerLakeH device hmmm

try i2c kext posted above

no keyboard ?

i dont see tpad device. is xosi patch working ?

 

only if system is unstable change csr-config and security

 

wifi+bluettoth are possible to setup with right kexts

 

that's all i can see for now

 

to get a lot after boot open terminal pasteXPS 9520 Macbook Air ioreg.zip

log show --style syslog --predicate 'processID == 0' --last 1h --info --debug  > x.log

you get a file x.log on home folder

 

i fixed some acpi errors

here's my latest 

EFI.zip 18.55 kB · 7 downloads

 

for those with displays that attach to framebuffer 0 try swap connector to frame 1

that avoids lcd+power code that prevents display to work

todo so 1st check logs. if the display attaches to frame 0 then better swap connectors

i have it in nblue reversed order but same logic

 

Doesnt boot for my alderlake (0x46a6) unfortunately. With or without injecting platform-id and device-id, the boot process freezes up just before secondary boot, but there's clearly a KP somewhere as I can't ssh/vnc into the machine after that.

 

It boots with the modified (and the unmodified) whatevergreen, but with only 8MB VRAM.

 

XPS 9520 Macbook Air ioreg.zip

 

image.png.e27b2b2f73ac72d28f0ca471674a37c4.png

 

 

To make the trackpad work I had to insert 0x51e98086&amp;0xFFFCFFFF into IOPCIMatch class, that makes it work in polling mode, but I need to insert a TPDXX device at some point to recognise the GPIO pin. I'll get round to that when I fix acceleration on the iGPU :)

Edited by jkbuha
additional files
Link to comment
Share on other sites

i get the exact same with my iGPU and my trackpad doesn't work at all even if i add my deviceID.

  • Like 1
Link to comment
Share on other sites

On 3/22/2024 at 2:07 PM, Mastachief said:

By using the modified whatever green from shl628,

 

the below settings below allow booting to a black screen. you can remote to the machine, the session has the framebuffer working, those images that you see posted near the beginning of this thread are proof.

 

important note, if you change the framebuffer-con1 to framebuffer-con0 in the Device properties while using the below config, you get a KP, however if you change it to con2, con3, there is no change in ioreg, it always attaches to appledisplay on framebuffer@1 the specific property however should be applebacklightdisplay on frambebuffer@0 which doesnt happen.

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
		<dict>
			<key>AAPL,GfxYTile</key>
			<data>01000000</data>
			<key>AAPL,ig-platform-id</key>
			<data>0100718A</data>
			<key>device-id</key>
			<data>718A0000</data>
			<key>dpcd-max-link-rate</key>
			<data>0A000000</data>
			<key>enable-backlight-registers-fix</key>
			<data>01000000</data>
			<key>enable-cdclk-frequency-fix</key>
			<data>01000000</data>
			<key>enable-dbuf-early-optimizer</key>
			<data>01000000</data>
			<key>enable-dpcd-max-link-rate-fix</key>
			<data>01000000</data>
			<key>enable-dvmt-calc-fix</key>
			<data>01000000</data>
			<key>force-online</key>
			<data>01000000</data>
			<key>framebuffer-con1-alldata</key>
			<data>020000000000000000000000000000000200000018010000</data>
			<key>framebuffer-con1-enable</key>
			<data>01000000</data>
			<key>framebuffer-fbmem</key>
			<data>00009000</data>
			<key>framebuffer-mobile</key>
			<data>01000000</data>
			<key>framebuffer-patch-enable</key>
			<data>01000000</data>
			<key>framebuffer-stolenmem</key>
			<data>00003001</data>
			<key>framebuffer-unifiedmem</key>
			<data>00000080</data>
			<key>igfxfw</key>
			<data>02000000</data>
			</dict>

 

image.png.961d465866136559a0b68cd81fae57e2.png

 

 

image.png.3746024e5fcf601f4b1e2557b08a18d7.png

 

image.thumb.png.1e34e0c0e0c91154be85a900d9eadb4c.png

 

 

 

 

Just to clarify - this device-properties configuration does not have the same result on an AlderLake machine, at least mine anyway (0x46a6). Injecting these properties but with any device-id results in an (off-screen) KP, most likely because the iGPU tries to load the framebuffer. Whereas with these properties but not injecting any device-id, the second boot happens, without the framebuffer loading (VRAM 8MB). With/without the old SSDT-PNLF has the same effect.

Link to comment
Share on other sites

Posted (edited)

for those unsuported displays only way to find out is check nblue/whatevergreen/kernel logs

the icl logs start with this line

 kernel[0]: (AppleIntelICLLPGraphicsFramebuffer) PlatformID found: 8a5c0002 (or other id if using device/ig-platform injection)

 

 

so options are:

1 ) system hangs and no panic log  (no chance)

2) panic and log file in  /Library/Logs/DiagnosticReports

3) nblue/whatevergreen produce AppleIntelICLLPGraphicsFramebuffer logs (get them after a reboot with nblue/whatevergreen disabled if system hangs)

 

open terminal paste

log show --style syslog --predicate 'processID == 0' --last 1h --info --debug  > x.log

then filter for AppleIntelICLLPGraphicsFramebuffer

 

Capturadeecra2024-05-14as01_14_08.thumb.png.23f587a4bea6fd99c2ac69255289ca2f.png

 

this is how the driver started to work - we check for bugs and patch them but ofc we need logs todo it

 

 

 

panic log files are stored in /Library/Logs/DiagnosticReports

don't post panic screenshots they help very little

panic file as functions and address calls that we use to patch bugs

Edited by jalavoui
Link to comment
Share on other sites

1 hour ago, jalavoui said:

for those unsuported displays only way to find out is check nblue/whatevergreen/kernel logs

the icl logs start with this line

 kernel[0]: (AppleIntelICLLPGraphicsFramebuffer) PlatformID found: 8a5c0002 (or other id if using device/ig-platform injection)

 

 

so options are:

1 ) system hangs and no panic log in /library/logs (no chance)

2) panic and log file in  /library/logs

3) nblue/whatevergreen produce AppleIntelICLLPGraphicsFramebuffer logs (get them after a reboot with nblue/whatevergreen disabled if system hangs)

 

this is how the driver started to work - we check for bugs and patch them but ofc we need logs todo it

i did get to a blank screen but couldnt ssh/vnc in from another computer as it panics shortly after i hit the blank/black screen. I had this same issue when nootedred was in development.

Link to comment
Share on other sites

3 hours ago, jalavoui said:

for those unsuported displays only way to find out is check nblue/whatevergreen/kernel logs

the icl logs start with this line

 kernel[0]: (AppleIntelICLLPGraphicsFramebuffer) PlatformID found: 8a5c0002 (or other id if using device/ig-platform injection)

 

 

so options are:

1 ) system hangs and no panic log  (no chance)

2) panic and log file in  /Library/Logs/DiagnosticReports

3) nblue/whatevergreen produce AppleIntelICLLPGraphicsFramebuffer logs (get them after a reboot with nblue/whatevergreen disabled if system hangs)

 

open terminal paste

log show --style syslog --predicate 'processID == 0' --last 1h --info --debug  > x.log

then filter for AppleIntelICLLPGraphicsFramebuffer

 

Capturadeecra2024-05-14as01_14_08.thumb.png.23f587a4bea6fd99c2ac69255289ca2f.png

 

this is how the driver started to work - we check for bugs and patch them but ofc we need logs todo it

 

NootedBlue.kext.zip 30.25 kB · 0 downloads NootedBlue-master.zip 370.8 kB · 0 downloads

 

panic log files are stored in /Library/Logs/DiagnosticReports

don't post panic screenshots they help very little

panic file as functions and address calls that we use to patch bugs

ok ill aim to get a log off this kext if it doesn't work..

Link to comment
Share on other sites

Posted (edited)

you mean the AppleIntelICLLPGraphicsFramebuffer logs ? i think you can only do it if we manage to figure why your system doesn't like nblue/whateverred

btw did u managed to get tpda show in ioregistry ?

maybe u forgot to apply xosi rename patch?

the device needs tobe alive in ioreg so it can load a kext

 

try to fix this 1st cause i think yu have some bad configs messing things

try open dsdt.aml in macial and compile maybe u have bugs

 

i wasted some time on this + the SSDT-XOSI.aml till it finally worked

image.thumb.png.c9f469d1a04645a3c8816f77599c7d8d.png

if it fails it breaks many things

 

if you manage to fix it show the new ioreg

btw how do we remove serial number from ioreg ? i forgot

Edited by jalavoui
Link to comment
Share on other sites

Posted (edited)
8 minutes ago, jalavoui said:

you mean the AppleIntelICLLPGraphicsFramebuffer logs ? i think you can only do it if we manage to figure why your system doesn't like nblue/whateverred

right im just not sure how we do that. I'm gonna attempt to boot with my wifi and bluetooth off and/or trackpad kexts, and just ethernet, audio, and nblue/whatevergreen. and yeah ill try compiling my dsdt.

Edited by benmacfreak
Link to comment
Share on other sites

Posted (edited)
13 minutes ago, jalavoui said:

you mean the AppleIntelICLLPGraphicsFramebuffer logs ? i think you can only do it if we manage to figure why your system doesn't like nblue/whateverred

btw did u managed to get tpda show in ioregistry ?

maybe u forgot to apply xosi rename patch?

the device needs tobe alive in ioreg so it can load a kext

 

try to fix this 1st cause i think yu have some bad configs messing things

try open dsdt.aml in macial and compile maybe u have bugs

 

i wasted some time on this + the SSDT-XOSI.aml till it finally worked

image.thumb.png.c9f469d1a04645a3c8816f77599c7d8d.png

if it fails it breaks many things

 

if you manage to fix it show the new ioreg

oh i realized im using copied .aml files, i didnt run ssdttime on my laptop, oops, and i just made a copy of my config.plist and cleared them out by hitting delete and took a screenshot without it and uploaded my config when i did it. then put it back

Edited by benmacfreak
Link to comment
Share on other sites

×
×
  • Create New...