Bug 74596
Summary: | False idle_timeouts occurs frequently | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 2.1 | Reporter: | Lars Ekman <lars.g.ekman> |
Component: | kernel | Assignee: | Larry Woodman <lwoodman> |
Status: | CLOSED WONTFIX | QA Contact: | |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 2.1 | ||
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i686 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2012-06-20 15:58:41 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Lars Ekman
2002-09-27 09:41:37 UTC
humm we haven't shipped a 2.4.17 kernel with netdump/netconsole..... 2.4.17 isn't exactly a good kernel either ;( No, we modified the patch to be able to use 2.4.17. I forgot that this was not the original kernel, but I suspected that the kernel version could have something to do with this so I included it. If you think this is a kernel fault, please set this bug report to NOTABUG and I apologize for the unnecessary bother. I think the rdtscll() translates more or less directly to an assembly instruction (rdtsc), so I still can't understand how it can run backwards regardless of kernel version. Best Regards, Lars Ekman well it depends which version of netdump you took ;) also rdtsc can't go backwards, but can be out of sync between cpus The version is netdump-0.6.7. We found the bug! I had a discussion with our HW-guru and he suggested that the global t0 variable was updated between the read of t1 and the compare. The simple solution is to store t0 in a local variable before reading t1. From netconsole.c (updated); t0temp = t0; rdtscll(t1); if (idle_timeout) { if (t0temp) { if (((t1 - t0temp) >> 20) > (unsigned long long)(mhz * idle_timeout)) { ... With this fix it seems to work fine. I have tried 5 times successfully (before it never worked). Thank you for submitting this issue for consideration in Red Hat Enterprise Linux. The release for which you requested us to review is now End of Life. Please See https://access.redhat.com/support/policy/updates/errata/ If you would like Red Hat to re-consider your feature request for an active release, please re-open the request via appropriate support channels and provide additional supporting details about the importance of this issue. |