Kay Sievers [Wed, 23 Mar 2011 15:40:23 +0000 (16:40 +0100)]
systemd: bind udev control socket in systemd and split udev.service
We should bind the udev socket from systemd, so we are sure
that the abstract namespace socket is always bound by a root
process and there is never a window during an update where
an untrusted process can steal our socket.
Also split the udev.service file, so that the daemon can be
updated/restarted without triggering any coldplug events.
Kay Sievers [Wed, 23 Mar 2011 00:41:25 +0000 (01:41 +0100)]
udevd: use facility == LOG_DAEMON when writing to /dev/kmsg
Syslog wants to distinguish the sorce of messages. We should
indicate that this is a userspace message (LOG_DAEMON) and not
a kernel message (LOG_KERNEL).
Martin Pitt [Fri, 18 Mar 2011 13:45:42 +0000 (14:45 +0100)]
input_id: Cover key devices which only have KEY_* > 255
We previously only tested the "key" capabilities for keys between 0 and 255 to
determine ID_INPUT_KEY. If there are none, also check for keys in the upper
block (KEY_OK/0x160 to KEY_TOUCHPAD_OFF/0x214).
David Zeuthen [Tue, 15 Mar 2011 16:05:00 +0000 (12:05 -0400)]
cdrom_id: Don't ignore profiles when there is no media available
Just because the GET CONFIGURATION MMC-2 command returns the current
profile as 0 does not mean that we can ignore the profiles describing
the capabilities of the drive - it only means that there currently is
no recognized media in the drive. Therefore, do process the returned
profiles even when cur_profile is 0.
Current wine is using /dev/sgX to access CD-ROM devices. Since
distributions switched to using ACL instead of group membership
to control device access, wine is not able to access them.
Add ACL to device nodes that already get GROUP="cdrom".
Harald Hoyer [Thu, 24 Feb 2011 15:57:05 +0000 (16:57 +0100)]
cdrom_id: cd_media_toc() extend toc size to 65536
Seems like an iDRAC reports a lot of toc entries.
"For cd_media_toc() will have to be modified to handle larger
tables right now it has an "unsigned char toc[2048]" but the toc
can be up to 65536 bytes long . I got a TOC length of 4610 bytes,
causing cd_media_toc() to fail."
Kei Tokunaga [Tue, 15 Feb 2011 09:59:24 +0000 (18:59 +0900)]
udevadm: enumerate - update prev pointer properly
When I tried to boot a system with 256 disks x 4 paths with
device-mapper, udevadm trigger (--type=devices) that was called
from start_udev ended up dumping a core due to a segmentation
fault.
In udev_enumerate_get_list_entry(), if it finds the devices that
should be delayed, it calls syspath_add(). If realloc() in
syspath_add() allocates the required memory at a different memory
address, referring prev->len afterward causes the segmentation
fault.
Martin Pitt [Tue, 15 Feb 2011 14:39:42 +0000 (15:39 +0100)]
60-persistent-input.rules: Do not create duplicate links
Commit 5e9eb156c added new symlinks for multi-interface USB input devices.
However, we do not actually need the one for interface number "00", as we
already have the symlink without the interface number.
Martin Pitt [Tue, 15 Feb 2011 12:06:18 +0000 (13:06 +0100)]
60-persistent-input.rules: Support multiple interfaces
Create /dev/input/by-id symlinks containing the USB interface number so that
each interface in a multi-interface USB input device gets its own symlink.
Matthew Garrett [Wed, 9 Feb 2011 21:32:43 +0000 (16:32 -0500)]
keymap: Remove wlan from Dell
The Dell rfkill key is handled by hardware and the dell-laptop driver catches
the i8042 event in order to update the rfkill state. Sending wlan to userspace
will just result in userspace trying to revert the change the hardware has
just made.
Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
Gerd Hoffmann [Tue, 25 Jan 2011 14:51:07 +0000 (15:51 +0100)]
extras: add rules for qemu guests
These patches enable usb autosuspend for the qemu emulated HID devices.
This reduces the cpu load for idle guests with a hid device attached
because the linux kernel will suspend the usb bus then and qemu can stop
running a 1000 Hz to emulate the (active) UHCI controller.
Martin Pitt [Sun, 16 Jan 2011 20:12:32 +0000 (21:12 +0100)]
keymap: Explain how to end the program
Pressing Escape will only actually work if keymap is currently examining the
primary keyboard. For other devices the user needs to press Control-C instead.
Martin Pitt [Sun, 16 Jan 2011 20:10:03 +0000 (21:10 +0100)]
keymap: More robust state machine
Some drivers, like thinkpad_acpi, do not send a scan code at all (for known
keys), and some send the key code first, then the scan code. Implement a better
state machine which acceps them in any order and wait until a SYN event. If the
driver does not send SYN events, keymap will also handle this and print out
that fact.
Thanks to Seth Forshee for pointing out how this really works!
Kay Sievers [Thu, 9 Dec 2010 20:10:30 +0000 (21:10 +0100)]
udevadm: info - honor --export and --export-prefix for property query
The output will always be quoted:
$ udevadm info --export --export-prefix=MY_ --query=property --name=sda
MY_UDEV_LOG='3'
MY_DEVPATH='/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda'
MY_MAJOR='259'
MY_MINOR='0'
MY_DEVNAME='sda'
MY_DEVTYPE='disk'
MY_SUBSYSTEM='block'
Martin Pitt [Mon, 22 Nov 2010 09:49:12 +0000 (10:49 +0100)]
Add ACL for media player USB devices
Originally we added an ACL for some particular mobile phone product IDs to
enable users to run e. g. the Android SDK as non-root. This was removed in 232f180 as we don't want to maintain product/vendor ID lists in udev.
However, we already know from media-player-info that devices like this are
media players. There is little reason to deny user access to those, so add back
a generic rule which adds an ACL to media player raw USB devices.
Bastien Nocera [Thu, 4 Nov 2010 23:58:56 +0000 (23:58 +0000)]
extras/keymap: Make touchpad buttons consistent
We'll need to standardise on the Touchpad related keys in udev, kernel, and
X.org. I selected F21 for XF86TouchpadToggle, F22 for XF86TouchpadOn and F23
for XF86TouchpadOff.
David Zeuthen [Thu, 4 Nov 2010 12:55:58 +0000 (08:55 -0400)]
Use ata_id, not scsi_id, on ATAPI devices
The major benefit here, is that we get the ATAPI device serial
number. With SCSI ID we didn't get this since it's not part of the
SCSI INQUIRY command. Specifically this means that we get symlinks to
empty optical drives, e.g.
which we didn't get earlier. So this is a major win.
Also make ata_id work on CD-ROM devices when using /dev/bsg nodes so
this works on both the scsi_device as well as the block device. We do
this, basically, by issuing the ATA IDENTIFY PACKET DEVICE command
instead of the ATA IDENTIFY command. We also use 16-byte pass-through
ATA passthrough instead of 12-byte passthrough to avoid clashing with
the MMC BLANK command.
David Zeuthen [Sat, 30 Oct 2010 16:30:19 +0000 (12:30 -0400)]
Run scsi_id and ata_id on the scsi_device object
In a multi-initiator setup, the HBA may very well export a SCSI device
for a device that another initiator has already logged into. But since
another initiator has already logged in, the kernel will not create a
block device.
Note that this is also the case for some RAID HBAs - for example, the
LSI 1068 series cards will export a SCSI device for a disk that is in
use by the HBAs RAID engine (no block device will be created here).
Running scsi_id and ata_id on the actual SCSI device means that we can
inquire the capabilities of the device. For example, we can check
whether ID_ATA_FEATURE_SET_SMART and ID_ATA_FEATURE_SET_SMART_ENABLED
is set and, if so, periodically poll the SMART status of the
disk. Even when other initiators has claimed the disk and if the disk
is in use by the RAID engine of the HBA.
Note that we run scsi_id and ata_id on /dev/bsg/* nodes - this is safe
to do because the scsi core guarantees that the bsg device has been
created before the actual add uevent for the scsi_device is emitted.
Since the block device is a direct child of the scsi_device we can
avoid running scsi_id and ata_id again by simply importing the
resulting ID_* properties from the parent.
needs to be reworked since we can't just use the CDROM_GET_CAPABILITY
ioctl on a /dev/bsg node (which is a character device). We do this by
just sending the SCSI INQUIRY command and checking the type (CD-ROM's
are all type 0x05 and disks are type 0x00) before we issue the ATA
IDENTIFY command through the SCSI command ATA PASS_THROUGH (12).
(Yes, it's a bit perverse how we have to tunnel our ATA commands
through a SCSI command but that's how Linux currently work.)
We still support for SG_IO version 3 (we fail back if version 4 fails
with EINVAL) because testing reveals that some drivers (such as
mpt2sas) still only support version 3 on the block nodes.