| Summary: |
hald aborts device enumeration on non-x86 NetBSD |
| Product: |
hal
|
Reporter: |
Michael Lorenz <macallan> |
| Component: |
hald | Assignee: |
David Zeuthen (not reading bugmail) <zeuthen> |
| Status: |
NEW
---
|
QA Contact: |
|
| Severity: |
blocker
|
|
|
| Priority: |
medium
|
CC: |
danny.kukawka
|
| Version: |
unspecified | |
|
| Hardware: |
All | |
|
| OS: |
NetBSD | |
|
| Whiteboard: |
|
|
i915 platform:
|
|
i915 features:
|
|
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
When a device node has no siblings hald aborts - this happens on many non-x86 architectures under NetBSD, namely macppc, sparc64 and sgimips ( x86 doesn't trigger it for some reason ) It's trivial to fix: --- hald/device_info.c.orig 2010-01-24 19:45:40.000000000 -0500 +++ hald/device_info.c @@ -1083,8 +1083,15 @@ rules_match_and_merge_device (void *fdi_ /*HAL_INFO(("no match, skip to rule (%llx)", rul e->jump_position));*/ rule = di_jump(rule); +#if 0 + /* + * XXX + * this fires when a node has a single child + * which happens on some non-x86 machines + */ if(rule == NULL) DIE(("Rule is NULL on jump")); +#endif continue; } With this hald Just Works(tm) on NetBSD/macppc: /usr/pkgsrc/sysutils/hal# lshal Dumping 71 device(s) from the Global Device List: ------------------------------------------------- udi = '/org/freedesktop/Hal/devices/computer' info.product = 'Computer' (string) info.subsystem = 'unknown' (string) info.udi = '/org/freedesktop/Hal/devices/computer' (string) netbsd.device = 'mainbus0' (string) power_management.can_hibernate = false (bool) power_management.can_suspend = true (bool) power_management.type = 'apm' (string) system.formfactor = 'desktop' (string) system.kernel.machine = 'macppc' (string) system.kernel.name = 'NetBSD' (string) system.kernel.version = '5.99.24' (string) udi = '/org/freedesktop/Hal/devices/uninorth2' info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.product = 'uninorth2' (string) info.udi = '/org/freedesktop/Hal/devices/uninorth2' (string) netbsd.device = 'uninorth2' (string) udi = '/org/freedesktop/Hal/devices/pci3' info.parent = '/org/freedesktop/Hal/devices/uninorth2' (string) info.product = 'pci3' (string) info.udi = '/org/freedesktop/Hal/devices/pci3' (string) netbsd.device = 'pci3' (string) udi = '/org/freedesktop/Hal/devices/gem0' info.parent = '/org/freedesktop/Hal/devices/pci3' (string) info.product = 'gem0' (string) info.udi = '/org/freedesktop/Hal/devices/gem0' (string) netbsd.device = 'gem0' (string) udi = '/org/freedesktop/Hal/devices/brgphy1' info.parent = '/org/freedesktop/Hal/devices/gem0' (string) info.product = 'brgphy1' (string) info.udi = '/org/freedesktop/Hal/devices/brgphy1' (string) netbsd.device = 'brgphy1' (string) ... etc.