<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 8/19/09 3:36 AM, Idwer Vollering wrote:
<blockquote
cite="mid:fdea27e40908181836s25789c60i84e4d8e053f34cce@mail.gmail.com"
type="cite">2009/8/17 Carl-Daniel Hailfinger <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:c-d.hailfinger.devel.2006@gmx.net">c-d.hailfinger.devel.2006@gmx.net</a>></span><br>
<div class="gmail_quote">
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">On 13.08.2009 00:43, Carl-Daniel Hailfinger wrote:<br>
> On 13.08.2009 00:19, Carl-Daniel Hailfinger wrote:<br>
><br>
>> On 12.08.2009 20:44, Stefan Reinauer wrote:<br>
>><br>
>><br>
>>> This needs /dev/cpu0 from ports/sysutils<br>
>>><br>
>>><br>
</div>
<div class="im">>> Stefan, since the original patch is from
you, you may want to add<br>
>> your Signoff here as well.<br>
>><br>
<br>
</div>
Compiles on FreeBSD and Linux and is the least invasive solution I could<br>
come up with.<br>
<br>
This is 0.9.1 material.<br>
</blockquote>
</div>
</blockquote>
<br>
Signed-off-by: Stefan Reinauer <a class="moz-txt-link-rfc2396E" href="mailto:stepan@coresystems.de"><stepan@coresystems.de></a><br>
<blockquote
cite="mid:fdea27e40908181836s25789c60i84e4d8e053f34cce@mail.gmail.com"
type="cite">
<div class="gmail_quote">
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">Signed-off-by: Carl-Daniel Hailfinger <<a
moz-do-not-send="true" href="mailto:c-d.hailfinger.devel.2006@gmx.net">c-d.hailfinger.devel.2006@gmx.net</a>></div>
</blockquote>
<div><br>
Having sysutils/devcpu installed doesn't look necessary to me (patch
compiles/flashrom ELF runs without errors).<br>
No, I don't own GeodeLX hardware.<br>
<br>
Acked-by: <span class="gI">Idwer Vollering <<a
moz-do-not-send="true" href="mailto:vidwer@gmail.com">vidwer@gmail.com</a>></span><br>
<br>
</div>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
<br>
</div>
<div class="im">Index: flashrom-rdmsr_freebsd/flash.h<br>
===================================================================<br>
</div>
--- flashrom-rdmsr_freebsd/flash.h (Revision 685)<br>
<div class="im">+++ flashrom-rdmsr_freebsd/flash.h
(Arbeitskopie)<br>
</div>
@@ -309,11 +309,21 @@<br>
void physunmap(void *virt_addr, size_t len);<br>
int setup_cpu_msr(int cpu);<br>
<div class="im"> void cleanup_cpu_msr(void);<br>
-#ifndef __DARWIN__<br>
</div>
+#if !defined(__DARWIN__) && !defined(__FreeBSD__) &&
!defined(__DragonFly__)<br>
<div class="im"> typedef struct { uint32_t hi, lo; } msr_t;<br>
msr_t rdmsr(int addr);<br>
int wrmsr(int addr, msr_t msr);<br>
</div>
#endif<br>
<div class="im">+#if defined(__FreeBSD__) || defined(__DragonFly__)<br>
</div>
+/* FreeBSD already has conflicting definitions for wrmsr/rdmsr. */<br>
+#undef rdmsr<br>
+#undef wrmsr<br>
+#define rdmsr freebsd_rdmsr<br>
+#define wrmsr freebsd_wrmsr<br>
+typedef struct { uint32_t hi, lo; } msr_t;<br>
+msr_t freebsd_rdmsr(int addr);<br>
+int freebsd_wrmsr(int addr, msr_t msr);<br>
+#endif<br>
<br>
/* internal.c */<br>
struct pci_dev *pci_dev_find_filter(struct pci_filter filter);<br>
<div class="im">Index: flashrom-rdmsr_freebsd/physmap.c<br>
===================================================================<br>
</div>
--- flashrom-rdmsr_freebsd/physmap.c (Revision 685)<br>
<div class="im">+++ flashrom-rdmsr_freebsd/physmap.c
(Arbeitskopie)<br>
</div>
<div class="im">@@ -215,6 +215,91 @@<br>
fd_msr = -1;<br>
}<br>
#else<br>
+#if defined(__FreeBSD__) || defined(__DragonFly__)<br>
+#include <sys/ioctl.h><br>
+<br>
+typedef struct {<br>
+ int msr;<br>
+ uint64_t data;<br>
+} cpu_msr_args_t;<br>
+#define CPU_RDMSR _IOWR('c', 1, cpu_msr_args_t)<br>
+#define CPU_WRMSR _IOWR('c', 2, cpu_msr_args_t)<br>
+<br>
+static int fd_msr = -1;<br>
+<br>
</div>
+msr_t rdmsr(int addr)<br>
<div class="im">+{<br>
+ cpu_msr_args_t args;<br>
+<br>
+ msr_t msr = { 0xffffffff, 0xffffffff };<br>
+<br>
+ args.msr = addr;<br>
+<br>
+ if (ioctl(fd_msr, CPU_RDMSR, &args) < 0) {<br>
+ perror("CPU_RDMSR");<br>
+ close(fd_msr);<br>
+ exit(1);<br>
+ }<br>
+<br>
</div>
+ msr.lo = args.data & 0xffffffff;<br>
+ msr.hi = args.data >> 32;<br>
+<br>
+ return msr;<br>
+}<br>
+<br>
<div class="im">+int wrmsr(int addr, msr_t msr)<br>
</div>
<div>
<div class="h5">+{<br>
+ cpu_msr_args_t args;<br>
+<br>
+ args.msr = addr;<br>
+ args.data = (((uint64_t)msr.hi) << 32) | msr.lo;<br>
+<br>
+ if (ioctl(fd_msr, CPU_WRMSR, &args) < 0) {<br>
+ perror("CPU_WRMSR");<br>
+ close(fd_msr);<br>
+ exit(1);<br>
+ }<br>
+<br>
+ return 0;<br>
+}<br>
+<br>
+int setup_cpu_msr(int cpu)<br>
+{<br>
+ char msrfilename[64];<br>
+ memset(msrfilename, 0, 64);<br>
+ sprintf(msrfilename, "/dev/cpu%d", cpu);<br>
+<br>
+ if (fd_msr != -1) {<br>
+ printf("MSR was already initialized\n");<br>
+ return -1;<br>
+ }<br>
+<br>
+ fd_msr = open(msrfilename, O_RDWR);<br>
+<br>
+ if (fd_msr < 0) {<br>
+ perror("Error while opening /dev/cpu0");<br>
+ printf("Did you install ports/sysutils/devcpu?\n");<br>
+ return -1;<br>
+ }<br>
+<br>
+ return 0;<br>
+}<br>
+<br>
+void cleanup_cpu_msr(void)<br>
+{<br>
+ if (fd_msr == -1) {<br>
+ printf("No MSR initialized.\n");<br>
+ return;<br>
+ }<br>
+<br>
+ close(fd_msr);<br>
+<br>
+ /* Clear MSR file descriptor */<br>
+ fd_msr = -1;<br>
+}<br>
+<br>
+#else<br>
+<br>
#ifdef __DARWIN__<br>
int setup_cpu_msr(int cpu)<br>
{<br>
</div>
</div>
<div class="im">@@ -251,4 +336,5 @@<br>
}<br>
#endif<br>
#endif<br>
+#endif<br>
<br>
<br>
<br>
</div>
<div>
<div class="h5">--<br>
<a moz-do-not-send="true" href="http://www.hailfinger.org/"
target="_blank">http://www.hailfinger.org/</a><br>
<br>
<br>
_______________________________________________<br>
flashrom mailing list<br>
<a moz-do-not-send="true" href="mailto:flashrom@flashrom.org">flashrom@flashrom.org</a><br>
<a moz-do-not-send="true"
href="http://www.flashrom.org/mailman/listinfo/flashrom"
target="_blank">http://www.flashrom.org/mailman/listinfo/flashrom</a><br>
</div>
</div>
</blockquote>
</div>
<br>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: <a class="moz-txt-link-abbreviated" href="mailto:info@coresystems.de">info@coresystems.de</a> • <a class="moz-txt-link-freetext" href="http://www.coresystems.de/">http://www.coresystems.de/</a>
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
</pre>
</body>
</html>