On 2019-06-02, Артур Истомин <art.is...@yandex.ru> wrote:
> I'm trying update BIOS on alix2d13 board with flashrom ver 1.0 on OpenBSD 6.5
>
> # flashrom -w alix1.bin -p internal
> flashrom v1.0 on OpenBSD 6.5 (i386)
> flashrom is free software, get the source code at https://flashrom.org
>
> Calibrating delay loop... delay loop is unreliable, trying to continue OK.
> No DMI table found.
> Found chipset "AMD CS5536".
> Enabling flash write... Error while opening /dev/amdmsr: Device not configured
> FAILED!
> Warning: unexpected second chipset match: "AMD CS5536"
> ignoring, please report lspci and board URL to flash...@flashrom.org
> with 'CHIPSET: your board name' in the subject line.
> No EEPROM/flash device found.
> Note: flashrom can never write if the flash chip isn't found automatically.
> 
> What's wrong?

Looks like this flash device can only be programmed with model-specific
registers (MSRs). On OpenBSD this is done via amdmsr(4) which requires
2 things: 1: it must be detected and attached in the kernel, and 2:
machdep.allowaperture must be set (normally on OpenBSD this device
is used for access to graphics with X).

If 1 fails you get ENXIO "Device not configured", if 2 fails you get
EPERM "Operation not permitted".

On your system the device does not attach (no amdmsr attach line in dmesg).
Looking at amdmsr_probe() in /sys/arch/i386/i386/amdmsr.c I see this

 74         /* Check for AMD Geode LX CPU */
 75         if (strcmp(cpu_vendor, "AuthenticAMD") == 0 && family == 0x5 &&
 76             model == 0x0a) {
 77                 /* Check for graphics processor presence */
 78                 gld_msr_cap = rdmsr(GLX_CPU_GLD_MSR_CAP);
 79                 if (((gld_msr_cap >> 8) & 0x0fff) == GLX_CPU_DID) {
 80                         gld_msr_cap = rdmsr(GLX_GP_GLD_MSR_CAP);
 81                         if (((gld_msr_cap >> 8) & 0x0fff) == GLX_GP_DID)
 82                                 return 1;
 83                 }
 84         }


>
> dmesg:
>
> OpenBSD 6.5 (GENERIC) #1: Wed Apr 24 22:04:27 CEST 2019
>     r...@syspatch-65-i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
> real mem  = 267931648 (255MB)
> avail mem = 247779328 (236MB)
> mpath0 at root
> scsibus0 at mpath0: 256 targets
> mainbus0 at root
> bios0 at mainbus0: date 11/05/08, BIOS32 rev. 0 @ 0xfd088
> pcibios0 at bios0: rev 2.1 @ 0xf0000/0x10000
> pcibios0: pcibios_get_intr_routing - function not supported
> pcibios0: PCI IRQ Routing information unavailable.
> pcibios0: PCI bus #0 is the last bus
> bios0: ROM list: 0xe0000/0xa800
> cpu0 at mainbus0: (uniprocessor)
> cpu0: Geode(TM) Integrated Processor by AMD PCS ("AuthenticAMD" 586-class) 
> 499 MHz, 05-0a-02

The family/model (05/0a) match but the driver is not attaching so it must be
failing the "Check for graphics processor presence" check.

If you were to remove that check, maybe it will work, or maybe it will
fail horribly and you will brick your board.

Personally I would recommend following pcengines' suggested procedure
and use their freedos image for alix.


> cpu0: FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CFLUSH,MMX,MMXX,3DNOW2,3DNOW
> mtrr: K6-family MTRR support (2 registers)
> pci0 at mainbus0 bus 0: configuration mode 1 (bios)
> pchb0 at pci0 dev 1 function 0 "AMD Geode LX" rev 0x33
> glxsb0 at pci0 dev 1 function 2 "AMD Geode LX Crypto" rev 0x00: RNG AES
> vr0 at pci0 dev 9 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 10, address 
> 00:0d:b9:2b:d9:3c
> ukphy0 at vr0 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 
> 0x004063, model 0x0034
> vr1 at pci0 dev 10 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 11, 
> address 00:0d:b9:2b:d9:3d
> ukphy1 at vr1 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 
> 0x004063, model 0x0034
> vr2 at pci0 dev 11 function 0 "VIA VT6105M RhineIII" rev 0x96: irq 15, 
> address 00:0d:b9:2b:d9:3e
> ukphy2 at vr2 phy 1: Generic IEEE 802.3u media interface, rev. 3: OUI 
> 0x004063, model 0x0034
> athn0 at pci0 dev 12 function 0 "Atheros AR9280" rev 0x01: irq 9
> athn0: AR9280 rev 2 (2T2R), ROM rev 21, address a8:54:b2:3e:02:e7
> glxpcib0 at pci0 dev 15 function 0 "AMD CS5536 ISA" rev 0x03: rev 3, 32-bit 
> 3579545Hz timer, watchdog, gpio, i2c
> gpio0 at glxpcib0: 32 pins
> iic0 at glxpcib0
> maxtmp0 at iic0 addr 0x4c: lm86
> pciide0 at pci0 dev 15 function 2 "AMD CS5536 IDE" rev 0x01: DMA, channel 0 
> wired to compatibility, channel 1 wired to compatibility
> wd0 at pciide0 channel 0 drive 0: <CF 16GB>
> wd0: 1-sector PIO, LBA, 15279MB, 31293360 sectors
> wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2
> pciide0: channel 1 ignored (disabled)
> ohci0 at pci0 dev 15 function 4 "AMD CS5536 USB" rev 0x02: irq 12, version 
> 1.0, legacy support
> ehci0 at pci0 dev 15 function 5 "AMD CS5536 USB" rev 0x02: irq 12
> usb0 at ehci0: USB revision 2.0
> uhub0 at usb0 configuration 1 interface 0 "AMD EHCI root hub" rev 2.00/1.00 
> addr 1
> isa0 at glxpcib0
> isadma0 at isa0
> com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
> com0: console
> com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
> pcppi0 at isa0 port 0x61
> spkr0 at pcppi0
> npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
> usb1 at ohci0: USB revision 1.0
> uhub1 at usb1 configuration 1 interface 0 "AMD OHCI root hub" rev 1.00/1.00 
> addr 1
> nvram: invalid checksum
> vscsi0 at root
> scsibus1 at vscsi0: 256 targets
> softraid0 at root
> scsibus2 at softraid0: 256 targets
> root on wd0a (93235fc23433e834.a) swap on wd0b dump on wd0b
> clock: unknown CMOS layout
>
>

Reply via email to