mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Armin Wolf <W_Armin@gmx.de>
To: Matthew Bettencourt <matthew.bettencourt@gmail.com>,
	Guenter Roeck <linux@roeck-us.net>
Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [BUG] SPD5118 Intermittent MR11 Corruption During Suspend/Resume
Date: Wed, 2 Sep 2026 19:22:48 +0200	[thread overview]
Message-ID: <a2efdc40-c73c-4892-9fea-9470c0f9823b@gmx.de> (raw)
In-Reply-To: <531be24a-bad0-40f6-8e30-3d4da565afcb@gmail.com>

Am 02.09.26 um 19:08 schrieb Matthew Bettencourt:

> Hi Armin,
>
> Are you want the acpi.log file or are you asking me to print out all 
> the .dat files?

Sharing the acpi.log file as an attachment should be fine.

Thanks,
Armin Wolf

>
> $ ls -1 | grep -iE ".dat|acpi.log"
> acpi.log
> dsdt.dat
> ssdt10.dat
> ssdt11.dat
> ssdt12.dat
> ssdt13.dat
> ssdt14.dat
> ssdt15.dat
> ssdt16.dat
> ssdt1.dat
> ssdt2.dat
> ssdt3.dat
> ssdt4.dat
> ssdt5.dat
> ssdt6.dat
> ssdt7.dat
> ssdt8.dat
> ssdt9.dat
>
> Thanks,
> Matthew
>
> On 9/2/26 11:57 AM, Armin Wolf wrote:
>> Am 02.09.26 um 16:00 schrieb Matthew Bettencourt:
>>
>>> Hello Guenter,
>>>
>>> > It would be something like
>>> >
>>> > sudo acpidump > acpi.log
>>> > acpixtract acpi.log
>>> > iasl -d *.dat
>>> >
>>> > You'll get a number of.dsl files with cryptic assembler-style
>>> > code and data. Then the digging starts ... you may find something
>>> > like "Name (SMB0, 0x0B00)" in dsdt.dsl. Then we can only hope to
>>> > figure out if ACPI actually accesses it.
>>>
>>> That wasn't as hard as I thought. I got everything decoding I guess, 
>>> I just did a grep on all the dsl files for SMB.
>>>
>>> $ grep -i -rn "SMB" *.ds
>>> dsdt.dsl:295:    Name (SMBB, 0x0B20)
>>> dsdt.dsl:296:    Name (SMBL, 0x20)
>>> dsdt.dsl:297:    Name (SMB0, 0x0B00)
>>> dsdt.dsl:298:    Name (SMBM, 0x10)
>>> dsdt.dsl:311:    Name (SSMB, 0xFED80200)
>>> dsdt.dsl:3352:                                If (SMBB)
>>> dsdt.dsl:3354: CreateWordField (CRS, 0xD2, SMB1)
>>> dsdt.dsl:3357:                                    SMB1 = SMBB /* 
>>> \SMBB */
>>> dsdt.dsl:3358:                                    SMH1 = SMBB /* 
>>> \SMBB */
>>> dsdt.dsl:3359:                                    SML1 = SMBL /* 
>>> \SMBL */
>>> dsdt.dsl:3360: CreateWordField (CRS, 0xCA, SMBZ)
>>> dsdt.dsl:3363:                                    SMBZ = SMB0 /* 
>>> \SMB0 */
>>> dsdt.dsl:3364:                                    SMH0 = SMB0 /* 
>>> \SMB0 */
>>> dsdt.dsl:3365:                                    SML0 = SMBM /* 
>>> \SMBM */
>>> ssdt4.dsl:4026:            SMB8,   8
>>> ssdt4.dsl:4032:            SMB8 |= 0x40
>>> ssdt4.dsl:4046:            Local1 = SMB8 /* \M477.SMB8 */
>>> ssdt4.dsl:4062:            SMB8,   8
>>> ssdt4.dsl:4065:        SMB8 |= 0x80
>>> ssdt4.dsl:4073:            SMB0,   8,
>>> ssdt4.dsl:4074:            SMB1,   8,
>>> ssdt4.dsl:4075:            SMB2,   8
>>> ssdt4.dsl:4085:                SMB0 = 0x1F
>>> ssdt4.dsl:4100:                Local2 = SMB0 /* \M479.SMB0 */
>>> ssdt4.dsl:4105:                SMB2 = 0x02
>>> ssdt4.dsl:4113:        If (((SMB0 & One) != Zero))
>>> ssdt4.dsl:4124:                SMB1 = 0x3F
>>> ssdt4.dsl:4139:                Local2 = SMB1 /* \M479.SMB1 */
>>> ssdt4.dsl:4144:                SMB1 = 0x02
>>> ssdt4.dsl:4152:        If (((SMB1 & One) != Zero))
>>> ssdt4.dsl:4173:        M460 ("  KER-ASL-CpmSmbusExecutor (Port%d, 
>>> isRead %d, Potcl %d, DevAddr 0x%X, Cmd 0x%X)\n", Arg0, Arg1, Arg2, 
>>> Arg3, Arg4, Zero)
>>> ssdt4.dsl:4179:            M459 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x80\n", Zero)
>>> ssdt4.dsl:4186:            M459 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x81\n", Zero)
>>> ssdt4.dsl:4201:            M459 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x82\n", Zero)
>>> ssdt4.dsl:4212:                M460 (" KER-ASL-CpmSmbusExecutor 
>>> return 0x83, Length %d\n", Local2, Zero, Zero, Zero, Zero, Zero)
>>> ssdt4.dsl:4223:            M460 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x84, Local4 %d\n", Local4, Zero, Zero, Zero, Zero, Zero)
>>> ssdt4.dsl:4230:            SMB0,   8,
>>> ssdt4.dsl:4231:            SMB1,   8,
>>> ssdt4.dsl:4232:            SMB2,   8,
>>> ssdt4.dsl:4233:            SMB3,   8,
>>> ssdt4.dsl:4234:            SMB4,   8,
>>> ssdt4.dsl:4235:            SMB5,   8,
>>> ssdt4.dsl:4236:            SMB6,   8,
>>> ssdt4.dsl:4237:            SMB7,   8,
>>> ssdt4.dsl:4238:            SMB8,   8
>>> ssdt4.dsl:4249:            Local6 = SMB2 /* \M47A.SMB2 */
>>> ssdt4.dsl:4250:            SMB2 = (Local6 & 0x7F)
>>> ssdt4.dsl:4257:                SMB2 = Local6
>>> ssdt4.dsl:4267:            M459 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x85\n", Zero)
>>> ssdt4.dsl:4275:                SMB2 = Local6
>>> ssdt4.dsl:4286:            M459 ("  KER-ASL-CpmSmbusExecutor return 
>>> 0x86\n", Zero)
>>> ssdt4.dsl:4294:            SMB0 = 0x1F
>>> ssdt4.dsl:4295:            SMB4 = ((Arg3 << One) | Arg1)
>>> ssdt4.dsl:4296:            SMB3 = Arg4
>>> ssdt4.dsl:4297:            SMB2 = (Arg2 << 0x02)
>>> ssdt4.dsl:4298:            Local1 = SMB2 /* \M47A.SMB2 */
>>> ssdt4.dsl:4303:                    SMB5 = DerefOf (Local7 [One])
>>> ssdt4.dsl:4308:                    SMB6 = DerefOf (Local7 [0x02])
>>> ssdt4.dsl:4309:                    SMB5 = DerefOf (Local7 [One])
>>> ssdt4.dsl:4315:                    SMB5 = Local2
>>> ssdt4.dsl:4319:                        SMB7 = DerefOf (Local7 [Local1])
>>> ssdt4.dsl:4327:                SMB5 = Local2
>>> ssdt4.dsl:4330:            SMB2 = ((Arg2 << 0x02) | 0x40)
>>> ssdt4.dsl:4350:                Local2 = SMB0 /* \M47A.SMB0 */
>>> ssdt4.dsl:4355:                SMB2 = 0x02
>>> ssdt4.dsl:4358:                    SMB2 = Local6
>>> ssdt4.dsl:4369:                M459 (" KER-ASL-CpmSmbusExecutor 
>>> return 0x87\n", Zero)
>>> ssdt4.dsl:4379:                SMB0 = 0x08
>>> ssdt4.dsl:4390:                        DATB = SMB5 /* \M47A.SMB5 */
>>> ssdt4.dsl:4396:                        Local0 [0x03] = SMB6 /* 
>>> \M47A.SMB6 */
>>> ssdt4.dsl:4397:                        Local0 [0x02] = SMB5 /* 
>>> \M47A.SMB5 */
>>> ssdt4.dsl:4403:                        Local2 = SMB2 /* \M47A.SMB2 */
>>> ssdt4.dsl:4404:                        Local2 = SMB5 /* \M47A.SMB5 */
>>> ssdt4.dsl:4416:                            Local0 [Local1] = SMB7 /* 
>>> \M47A.SMB7 */
>>> ssdt4.dsl:4424:        Local1 = (SMB0 & 0x1D)
>>> ssdt4.dsl:4426:        SMB0 = 0x1F
>>> ssdt4.dsl:4429:            SMB2 = Local6
>>> ssdt4.dsl:4439:        M460 ("  KER-ASL-CpmSmbusExecutor return St: 
>>> 0x%X, Len %d, Data: 0x%X, 0x%X, 0x%X, 0x%X ...\n", STAT, LEN, 
>>> DerefOf (Local0 [0x02]), DerefOf (Local0 [
>>> ssdt4.dsl:4497:            M460 ("  KER-ASL-CpmReadSmbusByte (%d, 
>>> 0x%X, 0x%X) = 0 Smbus Access Disable\n", Arg0, Arg1, Arg2, Zero, 
>>> Zero, Zero)
>>> ssdt4.dsl:4506:            SMB0,   8,
>>> ssdt4.dsl:4507:            SMB1,   8,
>>> ssdt4.dsl:4508:            SMB2,   8,
>>> ssdt4.dsl:4509:            SMB3,   8,
>>> ssdt4.dsl:4510:            SMB4,   8,
>>> ssdt4.dsl:4511:            SMB5,   8,
>>> ssdt4.dsl:4512:            SMB6,   8,
>>> ssdt4.dsl:4513:            SMB7,   8,
>>> ssdt4.dsl:4514:            SMB8,   8
>>> ssdt4.dsl:4525:            Local6 = SMB2 /* \M409.SMB2 */
>>> ssdt4.dsl:4526:            SMB2 = (Local6 & 0x7F)
>>> ssdt4.dsl:4533:            SMB8 |= 0x10
>>> ssdt4.dsl:4536:            Local1 = SMB8 /* \M409.SMB8 */
>>> ssdt4.dsl:4546:                SMB0 = 0x1F
>>> ssdt4.dsl:4549:                Local1 = SMB0 /* \M409.SMB0 */
>>> ssdt4.dsl:4554:                SMB2 = 0x02
>>> ssdt4.dsl:4567:                SMB2 = Local6
>>> ssdt4.dsl:4576:            M460 ("  KER-ASL-CpmReadSmbusByte (%d, 
>>> 0x%X, 0x%X) = 0 ERROR 1\n", Arg0, Arg1, Arg2, Zero, Zero, Zero)
>>> ssdt4.dsl:4587:                SMB1 = 0x3F
>>> ssdt4.dsl:4590:                Local1 = SMB1 /* \M409.SMB1 */
>>> ssdt4.dsl:4595:                SMB1 = 0x02
>>> ssdt4.dsl:4608:                SMB2 = Local6
>>> ssdt4.dsl:4617:            M460 ("  KER-ASL-CpmReadSmbusByte (%d, 
>>> 0x%X, 0x%X) = 0 ERROR 2\n", Arg0, Arg1, Arg2, Zero, Zero, Zero)
>>> ssdt4.dsl:4624:            SMB0 = 0x1F
>>> ssdt4.dsl:4625:            SMB4 = ((Arg1 << One) | One)
>>> ssdt4.dsl:4626:            SMB3 = Arg2
>>> ssdt4.dsl:4627:            SMB2 = 0x08
>>> ssdt4.dsl:4628:            Local1 = SMB2 /* \M409.SMB2 */
>>> ssdt4.dsl:4629:            SMB2 = 0x48
>>> ssdt4.dsl:4639:                    Local1 = SMB0 /* \M409.SMB0 */
>>> ssdt4.dsl:4644:                    SMB2 = 0x02
>>> ssdt4.dsl:4647:                        SMB2 = Local6
>>> ssdt4.dsl:4656:                    M460 (" KER-ASL-CpmReadSmbusByte 
>>> (%d, 0x%X, 0x%X) = 0 ERROR 3\n", Arg0, Arg1, Arg2, Zero, Zero, Zero)
>>> ssdt4.dsl:4662:                Local1 = SMB0 /* \M409.SMB0 */
>>> ssdt4.dsl:4672:                SMB0 = 0x08
>>> ssdt4.dsl:4679:                Local4 = SMB5 /* \M409.SMB5 */
>>> ssdt4.dsl:4683:        SMB0 = 0x1F
>>> ssdt4.dsl:4684:        SMB8 |= 0x20
>>> ssdt4.dsl:4687:            SMB2 = Local6
>>> ssdt4.dsl:4696:        M460 ("  KER-ASL-CpmReadSmbusByte (%d, 0x%X, 
>>> 0x%X) = 0x%X Success\n", Arg0, Arg1, Arg2, Local4, Zero, Zero)
>>> ssdt4.dsl:4705:            M460 ("  KER-ASL-CpmWriteSmbusByte (%d, 
>>> 0x%X, 0x%X, 0x%X) = 0 Smbus Access Disable\n", Arg0, Arg1, Arg2, 
>>> Arg3, Zero, Zero)
>>> ssdt4.dsl:4714:            SMB0,   8,
>>> ssdt4.dsl:4715:            SMB1,   8,
>>> ssdt4.dsl:4716:            SMB2,   8,
>>> ssdt4.dsl:4717:            SMB3,   8,
>>> ssdt4.dsl:4718:            SMB4,   8,
>>> ssdt4.dsl:4719:            SMB5,   8,
>>> ssdt4.dsl:4720:            SMB6,   8,
>>> ssdt4.dsl:4721:            SMB7,   8,
>>> ssdt4.dsl:4722:            SMB8,   8
>>> ssdt4.dsl:4733:            Local6 = SMB2 /* \M410.SMB2 */
>>> ssdt4.dsl:4734:            SMB2 = (Local6 & 0x7F)
>>> ssdt4.dsl:4741:            SMB8 |= 0x10
>>> ssdt4.dsl:4744:            Local1 = SMB8 /* \M410.SMB8 */
>>> ssdt4.dsl:4754:                SMB0 = 0x1F
>>> ssdt4.dsl:4757:                Local1 = SMB0 /* \M410.SMB0 */
>>> ssdt4.dsl:4762:                SMB2 = 0x02
>>> ssdt4.dsl:4775:                SMB2 = Local6
>>> ssdt4.dsl:4784:            M460 ("  KER-ASL-CpmWriteSmbusByte (%d, 
>>> 0x%X, 0x%X, 0x%X) = 0 ERROR 1\n", Arg0, Arg1, Arg2, Arg3, Zero, Zero)
>>> ssdt4.dsl:4795:                SMB1 = 0x3F
>>> ssdt4.dsl:4798:                Local1 = SMB1 /* \M410.SMB1 */
>>> ssdt4.dsl:4803:                SMB1 = 0x02
>>> ssdt4.dsl:4816:                SMB2 = Local6
>>> ssdt4.dsl:4825:            M460 ("  KER-ASL-CpmWriteSmbusByte (%d, 
>>> 0x%X, 0x%X, 0x%X) = 0 ERROR 2\n", Arg0, Arg1, Arg2, Arg3, Zero, Zero)
>>> ssdt4.dsl:4832:            SMB0 = 0x1F
>>> ssdt4.dsl:4833:            SMB4 = (Arg1 << One)
>>> ssdt4.dsl:4834:            SMB3 = Arg2
>>> ssdt4.dsl:4835:            SMB2 = 0x08
>>> ssdt4.dsl:4836:            Local1 = SMB2 /* \M410.SMB2 */
>>> ssdt4.dsl:4837:            SMB5 = Arg3
>>> ssdt4.dsl:4838:            SMB2 = 0x48
>>> ssdt4.dsl:4848:                    Local1 = SMB0 /* \M410.SMB0 */
>>> ssdt4.dsl:4853:                    SMB2 = 0x02
>>> ssdt4.dsl:4856:                        SMB2 = Local6
>>> ssdt4.dsl:4865:                    M460 (" KER-ASL-CpmWriteSmbusByte 
>>> (%d, 0x%X, 0x%X, 0x%X) = 0 ERROR 3\n", Arg0, Arg1, Arg2, Arg3, Zero, 
>>> Zero)
>>> ssdt4.dsl:4871:                Local1 = SMB0 /* \M410.SMB0 */
>>> ssdt4.dsl:4881:                SMB0 = 0x08
>>> ssdt4.dsl:4892:        SMB0 = 0x1F
>>> ssdt4.dsl:4893:        SMB8 |= 0x20
>>> ssdt4.dsl:4896:            SMB2 = Local6
>>> ssdt4.dsl:4905:        M460 ("  KER-ASL-CpmWriteSmbusByte (%d, 0x%X, 
>>> 0x%X, 0x%X) Success\n", Arg0, Arg1, Arg2, Arg3, Zero, Zero)
>>
>> Interesting, can you share the whole output of acpidump?
>>
>> Thanks,
>> Armin Wolf
>>
>>> On 9/1/26 10:19 PM, Guenter Roeck wrote:
>>>> Hi Matthew,
>>>>
>>>> On 9/1/26 19:14, Matthew Bettencourt wrote:
>>>>> Hello Guetner,
>>>>>
>>>>> I believe I implemented the print port correctly, below is the 
>>>>> dmesg and piix4_sb800_port_sel() function.
>>>>>
>>>>>  > Another idea might be to decode the ACPI data and see if there 
>>>>> is anything
>>>>>  > in there which accesses the SMBus controller.
>>>>>
>>>>> I have no problem grabbing the ACPI data or whatever is needed, 
>>>>> just might need a little bit of guidance on that front. I am OK at 
>>>>> c code with some AI help but never really delved into ACPI.
>>>>>
>>>>
>>>> It would be something like
>>>>
>>>> sudo acpidump > acpi.log
>>>> acpixtract acpi.log
>>>> iasl -d *.dat
>>>>
>>>> You'll get a number of.dsl files with cryptic assembler-style
>>>> code and data. Then the digging starts ... you may find something
>>>> like "Name (SMB0, 0x0B00)" in dsdt.dsl. Then we can only hope to
>>>> figure out if ACPI actually accesses it.
>>>>
>>>>> And one last thing I greatly appreciate all the time and effort 
>>>>> you are putting into this. I would definitely not have been able 
>>>>> to get this far without your help.
>>>>>
>>>> My pleasure.
>>>>
>>>>> --- CMD=0b
>>>>> [19462.122064] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.123074] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.123109] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.124081] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.124115] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.125067] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.125074] [  T21668] spd5118 12-0053: PRE BIT UPDATE: SUSPEND 
>>>>> MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19462.125094] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.126064] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.126072] [  T21683] spd5118 12-0051: PRE BIT UPDATE: SUSPEND 
>>>>> MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19462.126088] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.127545] [  T21668] i2c i2c-12: [PIIX4 ERROR TRACE 
>>>>> TRIGGERED] result=0
>>>>>                          STEP 1 (PRE-START)    : CNT=08, CMD=0b, 
>>>>> ADD=a7, DAT0=00, DAT1=18
>>>>>                          STEP 2 (START BIT SET): CNT=08, CMD=0b, 
>>>>> ADD=a7, DAT0=00, DAT1=18
>>>>>                          STEP 3 (POST-WAIT)    : STS=00, CNT=08, 
>>>>> CMD=01, ADD=45, DAT0=ff, DAT1=18
>>>>>                          STEP 4 (POST-CLEANUP) : CNT=08, CMD=01, 
>>>>> ADD=45, DAT0=ff, DAT1=18
>>>>
>>>> Now we'll need to know the port number here (or even better at each 
>>>> step),
>>>> so some duplication of piix4_sb800_port_sel() which only reads the 
>>>> port
>>>> number will be needed.
>>>>
>>>> Note that this may not help at all - whatever entity is modifying 
>>>> the registers
>>>> may not change the port number.
>>>>
>>>> Thanks,
>>>> Guenter
>>>>
>>>>> [19462.127556] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.127582] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.128217] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.128240] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.128894] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.128920] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.129561] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.129588] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.130227] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.130255] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.130894] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.130919] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.131560] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.131584] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.132226] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.132249] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.132882] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.132904] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.133555] [  T21683] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.133563] [  T21683] spd5118 12-0051: POST BIT UPDATE: 
>>>>> SUSPEND MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19462.133581] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.134238] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19462.134244] [  T21668] spd5118 12-0053: POST BIT UPDATE: 
>>>>> SUSPEND MR11 (0x0B) -> Cache: 0x00 | Bus: 0x08
>>>>>
>>>>> --- CMD=1a
>>>>> [19664.445821] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.446491] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.446531] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.447201] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.447235] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.447890] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.447903] [  T21712] spd5118 12-0053: PRE BIT UPDATE: SUSPEND 
>>>>> MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19664.447923] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.448574] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.448581] [  T21668] spd5118 12-0051: PRE BIT UPDATE: SUSPEND 
>>>>> MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19664.448601] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.449239] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.449264] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.449886] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.449910] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.451402] [  T21712] i2c i2c-12: [PIIX4 ERROR TRACE 
>>>>> TRIGGERED] result=0
>>>>>                              STEP 1 (PRE-START)    : CNT=08, 
>>>>> CMD=1a, ADD=a7, DAT0=00, DAT1=18
>>>>>                              STEP 2 (START BIT SET): CNT=08, 
>>>>> CMD=1a, ADD=a7, DAT0=00, DAT1=18
>>>>>                              STEP 3 (POST-WAIT)    : STS=00, 
>>>>> CNT=08, CMD=01, ADD=45, DAT0=ff, DAT1=18
>>>>>                              STEP 4 (POST-CLEANUP) : CNT=08, 
>>>>> CMD=01, ADD=45, DAT0=ff, DAT1=18
>>>>> [19664.451414] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.451438] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.452398] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.452423] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.453393] [  T21712] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.453400] [  T21712] spd5118 12-0053: POST BIT UPDATE: 
>>>>> SUSPEND MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>> [19664.453417] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.454396] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.454417] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.454883] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.454904] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.455541] [  T21668] piix4_smbus: PORT SEL -> requested=0x00 
>>>>> | hardware_was=0x00 | writing=0x07
>>>>> [19664.455549] [  T21668] spd5118 12-0051: POST BIT UPDATE: 
>>>>> SUSPEND MR11 (0x0B) -> Cache: 0x00 | Bus: 0x00
>>>>>
>>>>>
>>>>> ---
>>>>> int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg)
>>>>> {
>>>>>      u8 smba_en_lo, val, prev_port;
>>>>>
>>>>>      if (mmio_cfg->use_mmio) {
>>>>>          smba_en_lo = ioread8(mmio_cfg->addr + piix4_port_sel_sb800);
>>>>>          val = (smba_en_lo & ~piix4_port_mask_sb800) | port;
>>>>>          if (smba_en_lo != val)
>>>>>              iowrite8(val, mmio_cfg->addr + piix4_port_sel_sb800);
>>>>>
>>>>>          prev_port = smba_en_lo & piix4_port_mask_sb800;
>>>>>      } else {
>>>>>          outb_p(piix4_port_sel_sb800, SB800_PIIX4_SMB_IDX);
>>>>>          smba_en_lo = inb_p(SB800_PIIX4_SMB_IDX + 1);
>>>>>
>>>>>          val = (smba_en_lo & ~piix4_port_mask_sb800) | port;
>>>>>          if (smba_en_lo != val)
>>>>>              outb_p(val, SB800_PIIX4_SMB_IDX + 1);
>>>>>
>>>>>          prev_port = smba_en_lo & piix4_port_mask_sb800;
>>>>>      }
>>>>>
>>>>>      /* Always print port state on every function call */
>>>>>      pr_info("piix4_smbus: PORT SEL -> requested=0x%02x | 
>>>>> hardware_was=0x%02x | writing=0x%02x\n",
>>>>>              port, prev_port, val);
>>>>>
>>>>>      return prev_port;
>>>>> }
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Matthew
>>>>> On 9/1/26 8:32 PM, Guenter Roeck wrote:
>>>>>> On 9/1/26 17:57, Matthew Bettencourt wrote:
>>>>>>> Hello Guenter,
>>>>>>>
>>>>>>> These are the only boot up messages I see for SMBus/i2c/piix4
>>>>>>>
>>>>>>> [    1.848113] [    T272] i2c_dev: i2c /dev entries driver
>>>>>>> [    6.093885] [    T727] piix4_smbus 0000:00:14.0: SMBus Host 
>>>>>>> Controller at 0xb00, revision 0
>>>>>>> [    6.093888] [    T727] piix4_smbus 0000:00:14.0: Using 
>>>>>>> register 0x02 for SMBus port selection
>>>>>>
>>>>>> So bus 12 and 13 share the same controller address.
>>>>>>
>>>>>> There is one more thing we can try: Print the selected port 
>>>>>> before and after
>>>>>> the access. The code to access the port number is in 
>>>>>> piix4_sb800_port_sel().
>>>>>> If we are "lucky", we may find that the selected port changed.
>>>>>>
>>>>>> Unfortunately that isn't going to help much since we'd still have
>>>>>> to figure out where that happens.
>>>>>>
>>>>>> Another idea might be to decode the ACPI data and see if there is 
>>>>>> anything
>>>>>> in there which accesses the SMBus controller.
>>>>>>
>>>>>> Thanks,
>>>>>> Guenter
>>>>>>
>>>>>>> [    6.095020] [    T727] i2c i2c-12: Successfully instantiated 
>>>>>>> SPD at 0x51
>>>>>>> [    6.095981] [    T727] i2c i2c-12: Successfully instantiated 
>>>>>>> SPD at 0x53
>>>>>>> [    6.096039] [    T727] piix4_smbus 0000:00:14.0: Auxiliary 
>>>>>>> SMBus Host Controller at 0xb20
>>>>>>>
>>>>>>>
>>>>>>> I don't see anything on bus 13 or 14, I added 10-12 as well for 
>>>>>>> good measure.
>>>>>>> # sudo i2cdetect -y -a 14
>>>>>>>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> # sudo i2cdetect -y -a 13
>>>>>>>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> # sudo i2cdetect -y -a 12
>>>>>>>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 10: -- -- -- -- -- 15 -- -- -- -- -- -- -- -- -- --
>>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 40: -- -- -- -- -- -- -- -- -- 49 -- 4b -- -- -- --
>>>>>>> 50: -- 51 -- 53 -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 70: -- 71 -- 73 -- -- -- -- -- -- -- -- -- -- 7e --
>>>>>>> # sudo i2cdetect -y -a 11
>>>>>>>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 30: 30 -- -- -- -- -- -- 37 -- -- -- -- -- -- -- --
>>>>>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> # sudo i2cdetect -y -a 10
>>>>>>>       0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>>>>>>> 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>> 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>
>>>
>

  reply	other threads:[~2026-09-02 17:23 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-30 23:21 Matthew Bettencourt
2026-08-31 15:12 ` Guenter Roeck
2026-08-31 17:28   ` Guenter Roeck
2026-08-31 23:36     ` Matthew Bettencourt
     [not found]     ` <37132c40-aa82-4df1-b5ce-337601f3c085@gmail.com>
     [not found]       ` <3c4e9f59-5272-48cf-a4a0-eeefcba955a9@roeck-us.net>
2026-09-01  0:16         ` Matthew Bettencourt
2026-09-01  3:10           ` Guenter Roeck
2026-09-01 16:31             ` Matthew Bettencourt
2026-09-01 17:04               ` Guenter Roeck
2026-09-01 20:53                 ` Matthew Bettencourt
2026-09-01 22:36                   ` Guenter Roeck
2026-09-02  0:57                     ` Matthew Bettencourt
2026-09-02  1:32                       ` Guenter Roeck
2026-09-02  2:14                         ` Matthew Bettencourt
2026-09-02  3:19                           ` Guenter Roeck
2026-09-02 14:00                             ` Matthew Bettencourt
2026-09-02 14:52                               ` Guenter Roeck
2026-09-02 15:26                                 ` Matthew Bettencourt
2026-09-02 17:21                                   ` Guenter Roeck
2026-09-02 17:37                                     ` Matthew Bettencourt
2026-09-02 16:57                               ` Armin Wolf
2026-09-02 17:08                                 ` Matthew Bettencourt
2026-09-02 17:22                                   ` Armin Wolf [this message]
2026-09-02 17:28                                     ` Matthew Bettencourt
2026-09-02 19:19                                       ` Armin Wolf
2026-09-02 19:25                                         ` Matthew Bettencourt
2026-09-02 19:31                                           ` Armin Wolf
2026-09-02 19:40                                             ` Matthew Bettencourt
2026-09-02 19:51                                               ` Armin Wolf
2026-09-03 18:01                                                 ` Matthew Bettencourt
2026-09-03 18:16                                                   ` Guenter Roeck
2026-09-03 18:25                                                     ` Matthew Bettencourt
2026-09-03 21:05                                                       ` Guenter Roeck
2026-09-03 22:47                                                         ` Armin Wolf
2026-09-04  0:24                                                           ` Matthew Bettencourt
2026-09-04 17:58                                                             ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a2efdc40-c73c-4892-9fea-9470c0f9823b@gmx.de \
    --to=w_armin@gmx.de \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=matthew.bettencourt@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®