HAL

Comment 91 for bug 277589

Revision history for this message
Steve Langasek (vorlon) wrote : Re: [Bug 277589] Re: sony brighness on a geforce series older than 8 (nvclock works fine)

On Sat, Aug 01, 2009 at 09:17:54AM -0000, Alex wrote:
> * and looked through my output of the following command:
>
> defue@defue-laptop:~$ hal-find-by-property --key info.category --string laptop_panel | xargs lshal -u
> udi = '/org/freedesktop/Hal/devices/computer_backlight'
> info.addons = {'hald-addon-generic-backlight'} (string list)
> info.capabilities = {'laptop_panel'} (string list)
> info.category = 'laptop_panel' (string)
> info.parent = '/org/freedesktop/Hal/devices/computer' (string)
> info.product = 'Generic Backlight Device' (string)
> info.subsystem = 'backlight' (string)
> info.udi = '/org/freedesktop/Hal/devices/computer_backlight' (string)
> laptop_panel.access_method = 'sony-nvidia' (string)
> laptop_panel.num_levels = 18 (0x12) (int)
> linux.hotplug_type = 2 (0x2) (int)
> linux.subsystem = 'backlight' (string)

> *Obvously it maches the rule from 10-laptop-panel-mgmt-policy.fdi:

> <!-- for the generic sysfs interfaces -->
> <match key="linux.sysfs_path" exists="true">
> <append key="info.addons" type="strlist">hald-addon-generic-backlight</append>
> </match>

No, it doesn't? In the above-quoted output for the udi, there is no
'linux.sysfs_path' key.

> On my system this behaviour is due to "linux.sysfs_path" already exists.
> Here is the appropriate lshal output:

> udi = '/org/freedesktop/Hal/devices/pci_10de_1d8'
> info.linux.driver = 'nvidia' (string)
> info.parent = '/org/freedesktop/Hal/devices/pci_8086_27a1' (string)
> info.product = 'G72M [GeForce Go 7400]' (string)
> info.subsystem = 'pci' (string)
> info.udi = '/org/freedesktop/Hal/devices/pci_10de_1d8' (string)
> info.vendor = 'nVidia Corporation' (string)
> linux.hotplug_type = 2 (0x2) (int)
> linux.subsystem = 'pci' (string)
> linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0' (string)
> pci.device_class = 3 (0x3) (int)
> pci.device_protocol = 0 (0x0) (int)
> pci.device_subclass = 0 (0x0) (int)
> pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0' (string)
> pci.product = 'G72M [GeForce Go 7400]' (string)
> pci.product_id = 472 (0x1d8) (int)
> pci.subsys_product_id = 33263 (0x81ef) (int)
> pci.subsys_vendor = 'Sony Corporation' (string)
> pci.subsys_vendor_id = 4173 (0x104d) (int)
> pci.vendor = 'nVidia Corporation' (string)
> pci.vendor_id = 4318 (0x10de) (int)

This is hal output for an unrelated udi. linux.sysfs_path is a generic key
name that appears on *many* udis - the question is whether it's present on
the same udi that also matches

  <match key="info.category" string="laptop_panel">

The one above does not.

> *As you can see "linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0' (string)" is definied.
> So if you change rules matches to the opposite (see attached file) - IT WORKS!!!

It will also break backlight handling for all other users, so this isn't a
patch that we can include in the archive.

--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
<email address hidden> <email address hidden>