[Bug 235944] jedec_dimm(4) does not attach to KFA2 (aka Galax) Hall of Fame DDR4 sticks
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sat Feb 23 03:25:51 UTC 2019
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235944
--- Comment #7 from Ravi Pokala <rpokala at 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 = 1, status = 0x6
That message can only come from intsmb_error():
================================================================
static int
intsmb_error(device_t dev, int status)
{
int error = 0;
if (status & PIIX4_SMBHSTSTAT_ERR)
error |= SMB_EBUSERR;
if (status & PIIX4_SMBHSTSTAT_BUSC)
error |= SMB_ECOLLI;
if (status & PIIX4_SMBHSTSTAT_FAIL)
error |= SMB_ENOACK;
if (error != 0 && bootverbose)
device_printf(dev, "error = %d, status = %#x\n", error,
status);
return (error);
}
================================================================
The PIIX4_SMBHSTSTAT* values are defined in sys/dev/intpm/intpmreg.h:
================================================================
#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)
================================================================
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:
================================================================
#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
================================================================
An "error" value of 1 is SMB_EBUSERR, which matches the PIIX4_SMBHSTSTAT =>
SMB_E mapping that intsmb_error() does.
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list