[LinuxBIOS] EEPROM/flash device not found error

Peter Stuge peter at stuge.se
Thu Aug 16 00:22:24 CEST 2007


On Wed, Aug 15, 2007 at 04:16:39PM +0200, Ingmar Schraub wrote:
> Please have a look at the attached patch.

Thanks!


> +	unsigned char wrbuf[] = { 0x00, 0xbf, 0xf7, 0x10, 0x02, 0x80, 0xff, 0x22};
..

> +	lseek64(fd_msr, (off64_t)addr, SEEK_SET);
> +	read(fd_msr, buf, 8);
> +	close(fd_msr);

Do you know if it's neccessary to close and reopen?


> +	fd_msr = open("/dev/cpu/0/msr", O_WRONLY);
> +	lseek64(fd_msr, (off64_t)addr, SEEK_SET);
> +	write(fd_msr, wrbuf, 8);

I thought about this. I don't think we should blindly overwrite the
entire MSR. The only thing we really want to do is change the MSB of
this MSR (ROMRP, ROM Region Properties) by clearing bit 2 and setting
either bit 1 or bit 0. (0x22 on OLPC wiki sets bit 1 but bit 0 makes
more sense to me, looking at the databook. Anyway, whatever works. :)


> +	if (memcmp(buf, wrbuf, 8))
> +		return -1;

Verify is good! Maybe print a success message with the current
setting before returning too?


//Peter




More information about the coreboot mailing list