AMD errata 169
Ian J Hart
ianjhart at ntlworld.com
Fri Jun 26 19:35:19 UTC 2009
Quoting Stanislav Sedov <stas at freebsd.org>:
> Content-Type: text/plain; charset=US-ASCII
> Content-Disposition: inline
> Content-Transfer-Encoding: quoted-printable
>
> On Fri, 26 Jun 2009 12:37:27 +0100
> Ian J Hart <ianjhart at ntlworld.com> mentioned:
>
>> I know I asked this before but I figure the long post may have put
>> some people off.
>>
>> #169
>> http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/25759.pdf
>>
>> I'd like to eliminate this as a cause of my problem
>>
>> It appears I can read the value.
>>
>> #kldload cpuctl
>> #cpucontrol -m 0xc001001f /dev/cpuctl0
>> MSR 0xc001001f: 0x00400000 0x00100008
>>
>> #cpucontrol -m 0xc001001f=0x0040000000100008 /dev/cpuctl0
>>
>> Causes an nfe0 watchdog timeout and a powerdown failed, so that's
>> clearly a dumb thing to do.
>>
>> Would I be better off asking somewhere else?
>
> It looks like it is my fault in fact. Due to the bug in cpuctl
> code the value written to MSR registers always was zero. Can you,
> please, try with the following patch? Thanks!
>
> Index: sys/dev/cpuctl/cpuctl.c
> ===================================================================
> --- sys/dev/cpuctl/cpuctl.c (revision 195052)
> +++ sys/dev/cpuctl/cpuctl.c (working copy)
> @@ -222,14 +222,17 @@
> * Explicitly clear cpuid data to avoid returning stale
> * info
> */
> - data->data = 0;
> DPRINTF("[cpuctl,%d]: operating on MSR %#0x for %d cpu\n", __LINE__,
> data->msr, cpu);
> oldcpu = td->td_oncpu;
> is_bound = cpu_sched_is_bound(td);
> set_cpu(cpu, td);
> - ret = cmd == CPUCTL_RDMSR ? rdmsr_safe(data->msr, &data->data) :
> - wrmsr_safe(data->msr, data->data);
> + if (cmd == CPUCTL_RDMSR) {
> + data->data = 0;
> + ret = rdmsr_safe(data->msr, &data->data);
> + } else {
> + ret = wrmsr_safe(data->msr, data->data);
> + }
> restore_cpu(oldcpu, is_bound, td);
> return (ret);
> }
> @@ -368,7 +371,7 @@
> /*
> * Perform update.
> */
> - wrmsr_safe(MSR_K8_UCODE_UPDATE, (uintptr_t)args->data);
> + wrmsr_safe(MSR_K8_UCODE_UPDATE, (uintptr_t)ptr);
>
> /*
> * Serialize instruction flow.
>
> --
> Stanislav Sedov
> ST4096-RIPE
>
I only have cheesy KVM access. If it locks I'll have to wait until
Monday to power cycle, so I might wait until Sunday night.
OTOH I just opened a bottle of wine, so anything could happen. Cheers!
Looking at the Block diagram for the motherboard (Tyan S2895) in looks
like the PCI-X slots have their own tunnel chip and it's the
PCI-Express slots which run through the northbridge chips, so it's
looking unlikely that this is the cause of the card errors
In any case I learned something and found a bug. That's why they call
me the bugmeister. Actually that's just me. Hey, this wine is good...
Thanks again
--
ian j hart
--
ian j hart
----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
More information about the freebsd-current
mailing list