Page MenuHomeFreeBSD

D14204.id39053.diff
No OneTemporary

D14204.id39053.diff

Index: sys/powerpc/pseries/platform_chrp.c
===================================================================
--- sys/powerpc/pseries/platform_chrp.c
+++ sys/powerpc/pseries/platform_chrp.c
@@ -285,12 +285,24 @@
static u_long
chrp_timebase_freq(platform_t plat, struct cpuref *cpuref)
{
- phandle_t phandle;
+ phandle_t cpus, cpunode;
int32_t ticks = -1;
+ int res;
+ char buf[8];
+
+ cpus = OF_finddevice("/cpus");
+ if (cpus <= 0)
+ panic("CPU tree not found on Open Firmware\n");
- phandle = cpuref->cr_hwref;
+ for (cpunode = OF_child(cpus); cpunode != 0; cpunode = OF_peer(cpunode)) {
+ res = OF_getprop(cpunode, "device_type", buf, sizeof(buf));
+ if (res > 0 && strcmp(buf, "cpu") == 0)
+ break;
+ }
+ if (cpunode <= 0)
+ panic("CPU node not found on Open Firmware\n");
- OF_getencprop(phandle, "timebase-frequency", &ticks, sizeof(ticks));
+ OF_getencprop(cpunode, "timebase-frequency", &ticks, sizeof(ticks));
if (ticks <= 0)
panic("Unable to determine timebase frequency!");

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 7, 8:20 AM (7 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31020588
Default Alt Text
D14204.id39053.diff (1008 B)

Event Timeline