diffstat of debian/ for systemd_232-25+deb9u9 systemd_232-25+deb9u9astra.ce1 changelog | 8 patches/rbt-accelerometer.patch | 616 ++++++++++++++++++++++++++++++++++ patches/rbt-logind-multisession.patch | 141 +++++++ patches/series | 2 rules | 2 5 files changed, 768 insertions(+), 1 deletion(-) diff -Nru systemd-232/debian/changelog systemd-232/debian/changelog --- systemd-232/debian/changelog 2019-02-17 08:22:58.000000000 +0000 +++ systemd-232/debian/changelog 2019-03-28 13:30:38.000000000 +0000 @@ -1,3 +1,11 @@ +systemd (232-25+deb9u9astra.ce1) unstable; urgency=medium + + * apply rbt-logind-multisession.patch + * apply rbt-accelerometer.patch + * enable with-kill-user-processes + + -- Egor Lebedev Thu, 28 Mar 2019 16:30:42 +0300 + systemd (232-25+deb9u9) stretch-security; urgency=high * Non-maintainer upload by the Security Team. diff -Nru systemd-232/debian/patches/rbt-accelerometer.patch systemd-232/debian/patches/rbt-accelerometer.patch --- systemd-232/debian/patches/rbt-accelerometer.patch 1970-01-01 00:00:00.000000000 +0000 +++ systemd-232/debian/patches/rbt-accelerometer.patch 2019-03-28 13:28:55.000000000 +0000 @@ -0,0 +1,616 @@ +>From 1f886b50f6cf17af12bf74049fb4e8031a33f40d Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 6 Dec 2016 17:16:43 +0100 +Subject: [PATCH 1/3] udev: Add rules for accelerometer orientation quirks + +This commit adds a rules file to extract the properties from hwdb +to set on i2c IIO devices. This is used to set the ACCEL_MOUNT_MATRIX +property on IIO devices, to be consumed by iio-sensor-proxy or +equivalent daemon. + +The hwdb file contains documentation on how to write quirks. Note +however that mount information is usually exported in: +- the device-tree for ARM devices +- the ACPI DSDT for Intel-compatible devices +but currently not extracted by the kernel. + +Also note that some devices have the framebuffer rotation that changes +between the bootloader and the main system, which might mean that the +accelerometer is then wrongly oriented. This is a missing feature in the +i915 kernel driver: https://bugs.freedesktop.org/show_bug.cgi?id=94894 +which needs to be fixed, and won't require quirks. +--- + Makefile.am | 2 ++ + hwdb/60-sensor.hwdb | 45 +++++++++++++++++++++++++++++++++++++++++++++ + rules/60-sensor.rules | 10 ++++++++++ + 3 files changed, 57 insertions(+) + create mode 100644 hwdb/60-sensor.hwdb + create mode 100644 rules/60-sensor.rules + +Index: systemd-232/Makefile.am +=================================================================== +--- systemd-232.orig/Makefile.am ++++ systemd-232/Makefile.am +@@ -3707,6 +3707,7 @@ dist_udevrules_DATA += \ + rules/60-persistent-input.rules \ + rules/60-persistent-alsa.rules \ + rules/60-persistent-storage.rules \ ++ rules/60-sensor.rules \ + rules/60-serial.rules \ + rules/64-btrfs.rules \ + rules/70-mouse.rules \ +@@ -3876,6 +3877,7 @@ dist_udevhwdb_DATA = \ + hwdb/20-net-ifname.hwdb \ + hwdb/60-evdev.hwdb \ + hwdb/60-keyboard.hwdb \ ++ hwdb/60-sensor.hwdb \ + hwdb/70-mouse.hwdb \ + hwdb/70-pointingstick.hwdb \ + hwdb/70-touchpad.hwdb +Index: systemd-232/hwdb/60-sensor.hwdb +=================================================================== +--- /dev/null ++++ systemd-232/hwdb/60-sensor.hwdb +@@ -0,0 +1,488 @@ ++# This file is part of systemd. ++# ++# The lookup keys are composed in: ++# 60-sensor.rules ++# ++# Note: The format of the "sensor:" prefix match key is a ++# contract between the rules file and the hardware data, it might ++# change in later revisions to support more or better matches, it ++# is not necessarily expected to be a stable ABI. ++# ++# Match string formats: ++# sensor:modalias::dmi: ++# ++# The device modalias can be seen in the `modalias` file ++# of the sensor parent, for example: ++# cat /sys/`udevadm info -q path -n /dev/iio:device0`/../modalias ++# ++# The full DMI string of the running machine can be read from ++# /sys/class/dmi/id/modalias ++# That requires a kernel built with CONFIG_DMIID set, which is common. ++# The full DMI string is not needed here and the meaning of individual parts ++# can be seen in the source of the DMIID kernel module ++# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/dmi-id.c ++# ++# To add local entries, create a new file ++# /etc/udev/hwdb.d/61-sensor-local.hwdb ++# and add your rules there. To load the new rules execute (as root): ++# systemd-hwdb update ++# udevadm trigger -v -p DEVNAME=/dev/iio:deviceXXX ++# where /dev/iio:deviceXXX is the device in question. ++# ++# If your changes are generally applicable, preferably send them as a pull ++# request to ++# https://github.com/systemd/systemd ++# or create a bug report on https://github.com/systemd/systemd/issues and ++# include your new rules, a description of the device, and the output of ++# udevadm info --export-db ++# ++# For hwdb format and systemd behavior: ++# https://www.freedesktop.org/software/systemd/man/hwdb.html ++# ++# Allowed properties are: ++# ACCEL_MOUNT_MATRIX= ++# ++# where is a mount-matrix in the format specified in the IIO ++# subsystem[1]. The default, when unset, is equivalent to: ++# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1 ++# eg. the identity matrix. ++# ++# [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1 ++# ++# Note for devices where the display (LCD panel) is mounted non upright ++# in the device's casing, e.g. mounted upside-down or 90 degree rotated, ++# the ACCEL_MOUNT_MATRIX should be such that the x and y axis matches the ++# x and y axis of the display, not those of the casing, so that desktop ++# environments using the accelerometer data for rotation will e.g. ++# automatically flip their output for an upside-down display when the device ++# is held upright. ++# ++# Sort by brand, model ++ ++######################################### ++# Acer ++######################################### ++sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-011* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svn*Acer*:*pn*AspireSW5-012* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:BMA250E*:dmi:*:svnAcer:pnIconiaW1-810:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:KIOX0009*:dmi:*:svnAcer:pnOneS1003:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++######################################### ++# Archos ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnARCHOS:pnARCHOS80Cesium:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# AsusTek ++######################################### ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100CHI* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT300CHI* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnT100TA* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pnT200TA* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:*pnTP201SA* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svnASUSTeK*:pn*E205SA* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LA* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:INVN6500*:dmi:*svn*ASUSTeK*:*pn*TP300LD* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:KXJ2109*:dmi:*:svnASUSTeK*:pnME176C* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LJ* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP500LB* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LD* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:BOSC0200*:dmi:*svn*ASUSTeK*:*pn*TP412UA* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Axxo ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnStandard:pnWCBT1011:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# Chuwi ++######################################### ++ ++# Chuwi Vi8 (CWI506) ++sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrCHUWI.D86JLBNR*:svnInsyde:pni86:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Chuwi Vi8 Plus (CWI519) ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnD2D3_Vi8A1:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Chuwi Vi10 (CWI505) ++sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrG1D_S165*:svnilife:pnS165:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# Chuwi Hi8 Pro (CWI513) ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnX1D3_C806N:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Chuwi Hi10 Pro ++sensor:modalias:acpi:BOSC0200*:dmi:*:svn*CHUWIINNOVATIONANDTECHNOLOGY*:pnHi10protablet:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Chuwi Hi12 ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnHampoo:pnP02BD6_HI-122LP:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Chuwi Hi13 ++sensor:modalias:acpi:KIOX000A*:dmi:svnChuwi*:pnHi13 ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Chuwi HiBook ++# Chuwi HiBook does not have its product name filled, so we ++# match the entire dmi-alias, assuming that the use of a BOSC0200 + ++# bios-version + bios-date combo is unique ++sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/07/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnHampoo:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring: ++sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvr5.11:bd05/28/2016:svnDefaultstring:pnDefaultstring:pvrDefaultstring:rvnHampoo:rnCherryTrailCR:rvrDefaultstring:cvnDefaultstring:ct3:cvrDefaultstring: ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Chuwi CoreBook ++# Chuwi CoreBook does not have its product name filled, so we ++# match the entire dmi-alias ++sensor:modalias:acpi:BOSC0200*:dmi:bvnAmericanMegatrendsInc.:bvrY13D_KB133.103:bd06/01/2018:svnHampoo:pnDefaultstring:pvrV100:rvnHampoo:rnY13D_KB133:rvrV100:cvnDefaultstring:ct9:cvrDefaultstring: ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# Connect ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnConnect:pnTablet9:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Cube ++######################################### ++ ++# Cube iWork8 Air ++sensor:modalias:acpi:KIOX000A*:dmi:*:svncube:pni1-TF:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Cube i7 Stylus ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni7Stylus:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++# Cube i7 Book (i16) ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni16:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++# Cube i7 Stylus I8L Model ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnCube:pni8-L:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++# Cube iWork 10 Flagship ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnCube:pnI15-TC:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++######################################### ++# Cytrix (Mytrix) ++######################################### ++sensor:modalias:acpi:*KIOX000A*:dmi:*svn*CytrixTechnology:*pn*Complex11t* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# DEXP ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*svn*DEXP*:*pn*DEXPOEM* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# DIGMA ++######################################### ++ ++# Digma CITI E203 ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnDigma:pnCITIE203ES2010EW:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Endless ++######################################### ++sensor:modalias:acpi:ACCE0001*:dmi:*svnEndless*:*pnELT-NL3* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 0, 0, -1; -1, 0, 0 ++ ++######################################### ++# Eve Technology ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnEVE*:pnEveV:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# GP-electronic ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrBYT70A.YNCHENG.WIN.007:*:svnInsyde:pnT701:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# HP ++######################################### ++ ++# Laptops using the lis3lv02d device should have a first quirk applied ++# to them in the drivers/platform/x86/hp_accel.c in the kernel. The ++# quirk from "can play neverball" to "matches Windows 8 orientation" ++# is then applied below. ++sensor:modalias:platform:lis3lv02d:dmi:*svn*Hewlett-Packard*:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 0, -1; 0, 1, 0 ++ ++sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream7Tablet:* ++sensor:modalias:acpi:SMO8500*:dmi:*:svnHewlett-Packard:pnHPStream8Tablet:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# HP Pavillion X2 10-n000nd ++sensor:modalias:i2c:bmc150_accel:dmi:*:svnHewlett-Packard:pnHPPavilionx2Detachable:*:rn815D:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# I.T.Works ++######################################### ++ ++# The I.T.Works TW891 2-in-1's DMI has the product-name field set, but not ++# the sys-vendor field. This makes the DMI data a bit generic, so we match ++# the whole dmi modalias, except for the BIOS version/date ++sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:*:svnTobefilledbyO.E.M.:pnTW891:pvrTobefilledbyO.E.M.:rvnTobefilledbyO.E.M.:rnTW891:rvr1.0:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.: ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# I.T.Works TW701 7" windows tablet, same hw as Trekstor ST70416-6 ++sensor:modalias:acpi:BMA250*:dmi:*:bvritWORKS.G.WI71C.JGBMRB*:*:svnInsyde:pni71c:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# iOTA 360 ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:*svn*iOTA*:*pn*IOTA2210* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Jumper ++######################################### ++ ++# EZpad mini 3 ++sensor:modalias:acpi:BOSC0200*:dmi:bvnINSYDECorp.:bvrjumperx.T87.KFBNEE* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# EZpad 6 Pro ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnJumper:pnEZpad:*:rvr.A006:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++######################################### ++# Kazam ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:bvnINSYDECorp.:bvrVISION.I22K*:svnKAZAM:pnVISION:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Lamina ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*svnLamina*:*pnT701BR.SE* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:KIOX000A*:dmi:*svnLAMINA:pnT-1016BNORD* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Lenovo ++######################################### ++sensor:modalias:acpi:NCPE0388*:dmi:*:rnLenovoYOGA510-14IKB:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:BOSC0200:BOSC0200:dmi:*ThinkPadYoga11e3rdGen* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Miix3-1030 ++sensor:modalias:acpi:BMA250E*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-1030:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Miix3-830 ++sensor:modalias:acpi:SMO8500*:dmi:bvnLENOVO:*:pvrLenovoMIIX3-830:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++# IdeaPad D330 ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnLENOVO:pn81H3:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; -1, 0, 0; 0, 0, 1 ++ ++# IdeaPad Miix 310 note this only is for BIOS version (bvr) 1HCN4?WW and 1HCN2?WW, which has ++# a portrait LCD panel, versions with bvr 1HCN3?WW have a landscape panel ++sensor:modalias:acpi:KIOX000A*:dmi:bvnLENOVO:bvr1HCN4?WW:*:svnLENOVO:pn80SG:* ++sensor:modalias:acpi:KIOX000A*:dmi:bvnLENOVO:bvr1HCN2?WW:*:svnLENOVO:pn80SG:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# IdeaPad Miix 320, different batches use a different sensor ++sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80XF:* ++sensor:modalias:acpi:SMO8840*:dmi:*:svnLENOVO:pn80XF:pvrLenovoMIIX320* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# IdeaPad Miix 510, multiple expressions match different internal names ++# pn80U1 matches IdeaPad Miix510-12ISK ++sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80XE:* ++sensor:modalias:acpi:*BOSC0200*:dmi:*:svnLENOVO*:pn80U1:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# LINX ++######################################### ++ ++# Linx 1010B ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnLINX*:pnLINX1010B:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, -1 ++ ++# Linx 12X64 ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnLINX*:pnLINX12X64:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# MSI ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnMicro-StarInternationalCo.,Ltd.:pnS100:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Nuvision (TMax) ++######################################### ++ ++# Nuvision/TMAX 8" Windows signature edition. TM800W560L ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTMAX:pnTM800W560L:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Nuvision Solo 10 Draw. TM101W610L ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTMAX:pnTM101W610L:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Onda ++######################################### ++sensor:modalias:acpi:BOSC0200*:dmi:*:svnONDA:pnV80PLUS:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.D89*:svnInsyde:pnONDATablet:* ++sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.D86*:svnONDA:pnV820wDualOS:* ++sensor:modalias:acpi:BMA250E*:dmi:bvnINSYDECorp.:bvrONDA.W89*:svnInsyde:pnONDATablet:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++# Onda v975w, generic DMI strings, match entire dmi modalias inc. bios-date ++sensor:modalias:acpi:SMO8500*:dmi:bvnAmericanMegatrendsInc.:bvr5.6.5:bd07/25/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.: ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Peaq ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnPEAQ:pnPEAQPMMC1010MD99187:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# Pipo ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnPIPO:pnW2S:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Pipo W4 ++sensor:modalias:acpi:SMO8500*:dmi:*:bvrV8L_WIN32_CHIPHD_*_DX:*:rvnAMICorporation:rnAptioCRB:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Ployer ++######################################### ++sensor:modalias:acpi:BMA250E*:dmi:*:svnShenzhenPLOYER*:pnMOMO7W:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Point of View ++######################################### ++ ++# The Point of View TAB-P800W does not have its product name filled, so we ++# match the entire dmi-alias, assuming that the use of a BMA250E + ++# bios-version + bios-date combo is unique ++sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr3BAIR1013:bd08/22/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.: ++sensor:modalias:acpi:BMA250E*:dmi:bvnAmericanMegatrendsInc.:bvr3BAIR1014:bd10/24/2014:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnAptioCRB:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.: ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# Point of View TAB-P1005W-232 (v2.0) ++sensor:modalias:acpi:KIOX000A*:dmi:*:rvnPOV:rnI102A:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Point of View TAB-P1006W-232-3G (v1.0) ++sensor:modalias:i2c:bmc150_accel:dmi:bvnINSYDECorp.:*:svnInsyde:pnBayTrail:*:rvn105B:rn0E57:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++######################################### ++# Prowise ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnProwise:pnPT301:* ++ ACCEL_MOUNT_MATRIX=-1, 0, 0; 0, 1, 0; 0, 0, 1 ++ ++######################################### ++# Teclast ++######################################### ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX80Pro:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++#Teclast X80 PLUS (H5C5) ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnDefaultstring:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTECLAST:pnX98PlusII:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++# Teclast X98 Plus I (A5C6), generic DMI strings, match entire dmi modalias inc. bios-date ++sensor:modalias:acpi:KIOX000A*:dmi:bvnAmericanMegatrendsInc.:bvr5.011:bd11/03/2015:svnTobefilledbyO.E.M.:pnTobefilledbyO.E.M.:pvrTobefilledbyO.E.M.:rvnAMICorporation:rnCherryTrailCR:rvrTobefilledbyO.E.M.:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.: ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++# Teclast F5 ++sensor:modalias:acpi:KIOX010A*:dmi:*:svnTECLAST:pnF5:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Trekstor ++######################################### ++sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnInsyde:pnST70416-6:* ++sensor:modalias:acpi:BMA250*:dmi:*:bvrTREK.G.WI71C.JGBMRBA*:*:svnTrekStor:pnSurfTabwintron7.0ST70416-6:* ++ ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1 ++ ++sensor:modalias:acpi:KIOX000A*:dmi:*:svnTREKSTOR:pnPrimetabT13B:* ++ ACCEL_MOUNT_MATRIX=1, 0, 0; 0, -1, 0; 0, 0, 1 ++ ++######################################### ++# Umax ++######################################### ++sensor:modalias:acpi:SMO8500*:dmi:*:svnUMAX:pnVisionBook10WiPlus:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 ++ ++######################################### ++# Winbook ++######################################### ++sensor:modalias:acpi:BMA250*:dmi:*svn*WinBook*:*pn*TW100* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 0 ++ ++######################################### ++# Yours ++######################################### ++sensor:modalias:acpi:BMA250E*:dmi:*:svnYOURS:pnY8W81:* ++ ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 +Index: systemd-232/rules/60-sensor.rules +=================================================================== +--- /dev/null ++++ systemd-232/rules/60-sensor.rules +@@ -0,0 +1,10 @@ ++# do not edit this file, it will be overwritten on update ++ ++ACTION=="remove", GOTO="sensor_end" ++ ++# device matching the sensor's name and the machine's DMI data for IIO devices ++SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c", \ ++ IMPORT{builtin}="hwdb 'sensor:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ ++ GOTO="sensor_end" ++ ++LABEL="sensor_end" +Index: systemd-232/hwdb/parse_hwdb.py +=================================================================== +--- systemd-232.orig/hwdb/parse_hwdb.py ++++ systemd-232/hwdb/parse_hwdb.py +@@ -60,12 +60,14 @@ EMPTYLINE = LineEnd() + COMMENTLINE = pythonStyleComment + EOL + INTEGER = Word(nums) + REAL = Combine((INTEGER + Optional('.' + Optional(INTEGER))) ^ ('.' + INTEGER)) ++SIGNED_REAL = Combine(Optional(Word('-+')) + REAL) + UDEV_TAG = Word(string.ascii_uppercase, alphanums + '_') + + TYPES = {'mouse': ('usb', 'bluetooth', 'ps2', '*'), + 'evdev': ('name', 'atkbd', 'input'), + 'touchpad': ('i8042', 'rmi', 'bluetooth', 'usb'), + 'keyboard': ('name', ), ++ 'sensor': ('modalias', ), + } + + @lru_cache() +@@ -76,7 +78,7 @@ def hwdb_grammar(): + for category, conn in TYPES.items()) + matchline = Combine(prefix + Word(printables + ' ' + '®')) + EOL + propertyline = (White(' ', exact=1).suppress() + +- Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.! ') - Optional(pythonStyleComment)) + ++ Combine(UDEV_TAG - '=' - Word(alphanums + '_=:@*.!-;, "') - Optional(pythonStyleComment)) + + EOL) + propertycomment = White(' ', exact=1) + pythonStyleComment + EOL + +@@ -93,8 +95,11 @@ def hwdb_grammar(): + def property_grammar(): + ParserElement.setDefaultWhitespaceChars(' ') + +- setting = Optional('*')('DEFAULT') + INTEGER('DPI') + Suppress('@') + INTEGER('HZ') +- props = (('MOUSE_DPI', Group(OneOrMore(setting('SETTINGS*')))), ++ dpi_setting = (Optional('*')('DEFAULT') + INTEGER('DPI') + Suppress('@') + INTEGER('HZ'))('SETTINGS*') ++ mount_matrix_row = SIGNED_REAL + ',' + SIGNED_REAL + ',' + SIGNED_REAL ++ mount_matrix = (mount_matrix_row + ';' + mount_matrix_row + ';' + mount_matrix_row)('MOUNT_MATRIX') ++ ++ props = (('MOUSE_DPI', Group(OneOrMore(dpi_setting))), + ('MOUSE_WHEEL_CLICK_ANGLE', INTEGER), + ('MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL', INTEGER), + ('MOUSE_WHEEL_CLICK_COUNT', INTEGER), +@@ -103,6 +108,7 @@ def property_grammar(): + ('POINTINGSTICK_SENSITIVITY', INTEGER), + ('POINTINGSTICK_CONST_ACCEL', REAL), + ('ID_INPUT_TOUCHPAD_INTEGRATION', Or(('internal', 'external'))), ++ ('ACCEL_MOUNT_MATRIX', mount_matrix), + ) + fixed_props = [Literal(name)('NAME') - Suppress('=') - val('VALUE') + for name, val in props] +@@ -115,7 +121,7 @@ def property_grammar(): + Word(nums + ':')('VALUE') + ] + +- grammar = Or(fixed_props + kbd_props + abs_props) ++ grammar = Or(fixed_props + kbd_props + abs_props) + EOL + + return grammar + diff -Nru systemd-232/debian/patches/rbt-logind-multisession.patch systemd-232/debian/patches/rbt-logind-multisession.patch --- systemd-232/debian/patches/rbt-logind-multisession.patch 1970-01-01 00:00:00.000000000 +0000 +++ systemd-232/debian/patches/rbt-logind-multisession.patch 2019-03-28 13:24:57.000000000 +0000 @@ -0,0 +1,141 @@ +Index: systemd-232/src/login/logind-seat.c +=================================================================== +--- systemd-232.orig/src/login/logind-seat.c ++++ systemd-232/src/login/logind-seat.c +@@ -230,8 +230,20 @@ int seat_apply_acls(Seat *s, Session *ol + return r; + } + ++static Session * seat_get_greeter_session(Seat *s,unsigned int vtnr) //alex ++{ ++ Session *i, *x_active = NULL; ++ LIST_FOREACH(sessions_by_seat, i, s->sessions) ++ if (i->vtnr == vtnr && i->class==SESSION_GREETER) ++ { ++ x_active = i; ++ break; ++ } ++ return x_active; ++} ++ + int seat_set_active(Seat *s, Session *session) { +- Session *old_active; ++ Session *old_active, *x_active = NULL; + + assert(s); + assert(!session || session->seat == s); +@@ -243,11 +255,24 @@ int seat_set_active(Seat *s, Session *se + s->active = session; + + if (old_active) { +- session_device_pause_all(old_active); ++ if (session && old_active->vtnr == session->vtnr) //alex ++ x_active = seat_get_greeter_session(s,session->vtnr); ++ else x_active = seat_get_greeter_session(s,old_active->vtnr); ++ ++ log_debug("sess=%s(%s) x_active=%s(%s) old_active=%s(%s)\n", ++ session?session->id:"none", session?(session->stopping?"stopping":"not stopping"):"unkn", ++ x_active?x_active->id:"none", x_active?(x_active->stopping?"stopping":"not stopping"):"unkn", ++ old_active?old_active->id:"none", old_active?(old_active->stopping?"stopping":"not stopping"):"unkn" ++ ); ++ ++ if (x_active && session /*&& x_active!=session*/ && session->vtnr==x_active->vtnr) ++ log_debug("Don't pause devices when switch active session from greeter to user on the same vt=%d\n",x_active->vtnr); ++ else ++ session_device_pause_all(x_active?x_active:old_active); + session_send_changed(old_active, "Active", NULL); + } + +- seat_apply_acls(s, old_active); ++ seat_apply_acls(s, x_active?x_active:old_active); + + if (session && session->started) { + session_send_changed(session, "Active", NULL); +@@ -333,8 +358,9 @@ int seat_switch_to_previous(Seat *s) { + } + + int seat_active_vt_changed(Seat *s, unsigned int vtnr) { +- Session *i, *new_active = NULL; ++ Session *i, *new_active = NULL, *x_active = NULL; + int r; ++ int x_set = 0; + + assert(s); + assert(vtnr >= 1); +@@ -344,24 +370,42 @@ int seat_active_vt_changed(Seat *s, unsi + + log_debug("VT changed to %u", vtnr); + ++ x_active = seat_get_greeter_session(s,vtnr); //alex ++ + /* we might have earlier closing sessions on the same VT, so try to + * find a running one first */ + LIST_FOREACH(sessions_by_seat, i, s->sessions) +- if (i->vtnr == vtnr && !i->stopping) { +- new_active = i; +- break; ++ if (i->vtnr == vtnr && !i->stopping && i!=x_active) { ++ if (i->class==SESSION_GREETER) /*x_active = i*/ ; //second X, but may be previous still unfinished ++ else new_active = i; ++ break; + } + +- if (!new_active) { ++ if (0/*!new_active*/) { + /* no running one? then we can't decide which one is the + * active one, let the first one win */ + LIST_FOREACH(sessions_by_seat, i, s->sessions) +- if (i->vtnr == vtnr) { +- new_active = i; +- break; ++ if (i->vtnr == vtnr && i!=x_active) { ++ if (i->class==SESSION_GREETER) /*x_active = i*/ ; //second X, but may be previous still unfinished ++ else new_active = i; ++ break; + } + } + ++ log_debug("new_active==%s(%s) x_active=%s(%s)\n", ++ new_active?new_active->id:"none", new_active?(new_active->stopping?"stopping":"not stopping"):"unkn", ++ x_active?x_active->id:"none", x_active?(x_active->stopping?"stopping":"not stopping"):"unkn"); ++ ++ if (x_active && /*new_active &&*/ x_active!=new_active) { //alex ++ r = seat_set_active(s, x_active); ++ x_set = 1; ++ } ++ ++ if (x_set!=0) ++ { ++ if (new_active) seat_set_active(s, new_active); ++ } ++ else + r = seat_set_active(s, new_active); + manager_spawn_autovt(s->manager, vtnr); + +Index: systemd-232/src/login/logind-session.c +=================================================================== +--- systemd-232.orig/src/login/logind-session.c ++++ systemd-232/src/login/logind-session.c +@@ -871,8 +871,8 @@ static int session_dispatch_fifo(sd_even + assert(s->fifo_fd == fd); + + /* EOF on the FIFO means the session died abnormally. */ +- + session_remove_fifo(s); ++ if (s->class!=SESSION_GREETER) //alex + session_stop(s, false); + + return 1; +Index: systemd-232/src/login/logind-session-device.c +=================================================================== +--- systemd-232.orig/src/login/logind-session-device.c ++++ systemd-232/src/login/logind-session-device.c +@@ -374,7 +374,7 @@ int session_device_new(Session *s, dev_t + * to the caller. If the session is not active, this _might_ immediately + * revoke access and thus invalidate the fd. But this is still needed + * to pass a valid fd back. */ +- sd->active = session_is_active(s); ++ sd->active = session_is_active(s) || s->class==SESSION_GREETER; //alex to get hotplug devices + r = session_device_open(sd, sd->active); + if (r < 0) { + /* EINVAL _may_ mean a master is active; retry inactive */ diff -Nru systemd-232/debian/patches/series systemd-232/debian/patches/series --- systemd-232/debian/patches/series 2019-02-17 08:22:58.000000000 +0000 +++ systemd-232/debian/patches/series 2019-03-28 13:25:24.000000000 +0000 @@ -117,3 +117,5 @@ debian/Revert-core-enable-TasksMax-for-all-services-by-default-a.patch debian/Let-graphical-session-pre.target-be-manually-started.patch debian/Add-env-variable-for-machine-ID-path.patch +rbt-logind-multisession.patch +rbt-accelerometer.patch diff -Nru systemd-232/debian/rules systemd-232/debian/rules --- systemd-232/debian/rules 2019-02-17 08:22:58.000000000 +0000 +++ systemd-232/debian/rules 2019-03-28 13:30:42.000000000 +0000 @@ -116,7 +116,7 @@ --with-telinit=/lib/sysvinit/telinit \ --with-dbuspolicydir=/etc/dbus-1/system.d/ \ --with-support-url=$(SUPPORT_URL) \ - --without-kill-user-processes \ + --with-kill-user-processes \ --with-pamconfdir=no \ --enable-split-usr \ --disable-qrencode \