Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Feb 2019 03:25:47 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 235944] jedec_dimm(4) does not attach to KFA2 (aka Galax) Hall of Fame DDR4 sticks
Message-ID:  <bug-235944-227-y0xVuqWY0q@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-235944-227@https.bugs.freebsd.org/bugzilla/>
References:  <bug-235944-227@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D235944

--- Comment #7 from Ravi Pokala <rpokala@panasas.com> ---
The fact that the Windows util (and, for that matter, the firmware) can read
the second (256-byte) page of the SPD, means that the SPD's page-change
mechanism does in fact work. That suggests a driver issue.

Conveniently, enabling bootverbose to get the SPD dump from jedec_dimm(4),
*also* enabled error reporting for intsmb(4). That driver is implemented in=
 the
misleadingly-named sys/dev/intpm/intpm.c file; this is an SMBus controller =
on
an AMD system, not an INTel Power Management controller. <sigh>

> intsmb0: error =3D 1, status =3D 0x6

That message can only come from intsmb_error():

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
static int
intsmb_error(device_t dev, int status)
{
        int error =3D 0;

        if (status & PIIX4_SMBHSTSTAT_ERR)
                error |=3D SMB_EBUSERR;
        if (status & PIIX4_SMBHSTSTAT_BUSC)
                error |=3D SMB_ECOLLI;
        if (status & PIIX4_SMBHSTSTAT_FAIL)
                error |=3D SMB_ENOACK;

        if (error !=3D 0 && bootverbose)
                device_printf(dev, "error =3D %d, status =3D %#x\n", error,
status);

        return (error);
}
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

The PIIX4_SMBHSTSTAT* values are defined in sys/dev/intpm/intpmreg.h:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
#define PIIX4_SMBHSTSTAT_BUSY   (1<<0)
#define PIIX4_SMBHSTSTAT_INTR   (1<<1)
#define PIIX4_SMBHSTSTAT_ERR    (1<<2)
#define PIIX4_SMBHSTSTAT_BUSC   (1<<3)
#define PIIX4_SMBHSTSTAT_FAIL   (1<<4)
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

A "status" value of 0x6 is 00110b : (PIIX4_SMBHSTSTAT_ERR |
PIIX4_SMBHSTSTAT_INTR).

The SMB_E* values are defined in sys/dev/smbus/smbconf.h:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
#define SMB_ENOERR      0x0
#define SMB_EBUSERR     0x1
#define SMB_ENOTSUPP    0x2
#define SMB_ENOACK      0x4
#define SMB_ECOLLI      0x8
#define SMB_EABORT      0x10
#define SMB_ETIMEOUT    0x20
#define SMB_EBUSY       0x40
#define SMB_EINVAL      0x100
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

An "error" value of 1 is SMB_EBUSERR, which matches the PIIX4_SMBHSTSTAT =
=3D>
SMB_E mapping that intsmb_error() does.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-235944-227-y0xVuqWY0q>